From 5b97c50580791c215f526c7b22e77a0bf01a8530 Mon Sep 17 00:00:00 2001 From: twwu123 Date: Thu, 18 Jun 2026 14:06:44 +0900 Subject: [PATCH 1/7] add scalus emulator as a separate package --- .github/workflows/publish.yml | 15 + package-lock.json | 535 +++++++------ packages/mesh-scalus-emulator/README.md | 5 + packages/mesh-scalus-emulator/jest.config.ts | 20 + packages/mesh-scalus-emulator/package.json | 52 ++ packages/mesh-scalus-emulator/src/index.ts | 373 +++++++++ .../mesh-scalus-emulator/test/index.test.ts | 727 ++++++++++++++++++ packages/mesh-scalus-emulator/tsconfig.json | 5 + packages/mesh-transaction/package.json | 1 + 9 files changed, 1491 insertions(+), 242 deletions(-) create mode 100644 packages/mesh-scalus-emulator/README.md create mode 100644 packages/mesh-scalus-emulator/jest.config.ts create mode 100644 packages/mesh-scalus-emulator/package.json create mode 100644 packages/mesh-scalus-emulator/src/index.ts create mode 100644 packages/mesh-scalus-emulator/test/index.test.ts create mode 100644 packages/mesh-scalus-emulator/tsconfig.json diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 4b65b17cd..94637bbb2 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -214,6 +214,21 @@ jobs: env: NODE_AUTH_TOKEN: ${{secrets.npm_token}} + publish-meshsdk-scalus-emulator: + needs: [build, check-version] + if: needs.check-version.outputs.version-updated == 'true' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 20 + registry-url: https://registry.npmjs.org/ + - run: npm install && npm run build + - run: cd packages/mesh-scalus-emulator && npm publish --access public + env: + NODE_AUTH_TOKEN: ${{secrets.npm_token}} + publish-meshsdk-transaction: needs: [build, check-version] if: needs.check-version.outputs.version-updated == 'true' diff --git a/package-lock.json b/package-lock.json index 4de637b02..80fa5a622 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2429,6 +2429,10 @@ "integrity": "sha512-dobDMIUDUVhtxoX3ceGlaykKQGkph4HOE9hjkLsmwVgYf24fIik6YrZzVFrZSNCTvI2WN7hjEknehIrEJo1CMQ==", "license": "Apache-2.0" }, + "node_modules/@meshsdk/scalus-emulator": { + "resolved": "packages/mesh-scalus-emulator", + "link": true + }, "node_modules/@meshsdk/transaction": { "resolved": "packages/mesh-transaction", "link": true @@ -2527,14 +2531,14 @@ } }, "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", - "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.5.tgz", + "integrity": "sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==", "dev": true, "license": "MIT", "optional": true, "dependencies": { - "@tybys/wasm-util": "^0.10.1" + "@tybys/wasm-util": "^0.10.2" }, "funding": { "type": "github", @@ -2832,9 +2836,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.4.tgz", - "integrity": "sha512-F5QXMSiFebS9hKZj02XhWLLnRpJ3B3AROP0tWbFBSj+6kCbg5m9j5JoHKd4mmSVy5mS/IMQloYgYxCuJC0fxEQ==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.61.1.tgz", + "integrity": "sha512-JnBB8MdXj45cajvTuO5FmPlvFVJRQgvrz1uSEl3NwqFnReAPGwb8EanbGi4z2nRaqLzjJSv5/JmycoTKlRZxHA==", "cpu": [ "arm" ], @@ -2846,9 +2850,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.4.tgz", - "integrity": "sha512-GxxTKApUpzRhof7poWvCJHRF51C67u1R7D6DiluBE8wKU1u5GWE8t+v81JvJYtbawoBFX1hLv5Ei4eVjkWokaw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.61.1.tgz", + "integrity": "sha512-Jx2g7iSjw4AOT0HDPHM9RV3GNjRXwybWtSFZiZAYUTjUwjVrYIwq3kBf+LnhqJlzXFAqTAh2F7IGI+O568exPw==", "cpu": [ "arm64" ], @@ -2860,9 +2864,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.4.tgz", - "integrity": "sha512-tua0TaJxMOB1R0V0RS1jFZ/RpURFDJIOR2A6jWwQeawuFyS4gBW+rntLRaQd0EQ4bd6Vp44Z2rXW+YYDBsj6IA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.61.1.tgz", + "integrity": "sha512-0F1L/Z3Eqv8mT2n3dCpeO8GcTvHvVqkP5/t6DMsn0KzhYVcg+s7Ncl5DS8qjKYEeio6Az0Gt6nyBORay5qIlCA==", "cpu": [ "arm64" ], @@ -2874,9 +2878,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.4.tgz", - "integrity": "sha512-CSKq7MsP+5PFIcydhAiR1K0UhEI1A2jWXVKHPCBZ151yOutENwvnPocgVHkivu2kviURtCEB6zUQw0vs8RrhMg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.61.1.tgz", + "integrity": "sha512-qLttcH871ujY4YcVfUSShhOw+CsoTatYz8gRbHO7Bb92QH059/P0y5do1KMs41fY0BpD2x4AJH/gID0zFiqVKQ==", "cpu": [ "x64" ], @@ -2888,9 +2892,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.4.tgz", - "integrity": "sha512-+O8OkVdyvXMtJEciu2wS/pzm1IxntEEQx3z5TAVy4l32G0etZn+RsA48ARRrFm6Ri8fvqPQfgrvNxSjKAbnd3g==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.61.1.tgz", + "integrity": "sha512-fUI4RapGE0Oh3mb8mgfvC1O2nU1RpDZUKnDQm3xB1Ipg7C2wTs5Kstz7G2uWK99a8S2yTMq8/P4uycwNa0nJyw==", "cpu": [ "arm64" ], @@ -2902,9 +2906,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.4.tgz", - "integrity": "sha512-Iw3oMskH3AfNuhU0MSN7vNbdi4me/NiYo2azqPz/Le16zHSa+3RRmliCMWWQmh4lcndccU40xcJuTYJZxNo/lw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.61.1.tgz", + "integrity": "sha512-H5YrdvJaDtI/U9/emrD4b++xkvp3y/JvOe4rizHbxvkyMfRS/CiRYdji+Pl8D0brEaNFWUh1drQxgAGIl6Xudw==", "cpu": [ "x64" ], @@ -2916,9 +2920,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.4.tgz", - "integrity": "sha512-EIPRXTVQpHyF8WOo219AD2yEltPehLTcTMz2fn6JsatLYSzQf00hj3rulF+yauOlF9/FtM2WpkT/hJh/KJFGhA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.61.1.tgz", + "integrity": "sha512-Q8CBCCQtDFrYtXoeUXSrnFXKOnyUhx6bz+SkL6A0E7V8kAiCJ5pamq1WtbfpVGhR5TSpXY6ak3avmDc5fHTyJA==", "cpu": [ "arm" ], @@ -2930,9 +2934,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.4.tgz", - "integrity": "sha512-J3Yh9PzzF1Ovah2At+lHiGQdsYgArxBbXv/zHfSyaiFQEqvNv7DcW98pCrmdjCZBrqBiKrKKe2V+aaSGWuBe/w==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.61.1.tgz", + "integrity": "sha512-nwnhk1581l0FBVellGcVCAT0Oi06onEA3WB53sf01VO3I0UPBkMH9sXONYME2K0ovXcNayJfNtHfm6mpJElatQ==", "cpu": [ "arm" ], @@ -2944,9 +2948,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.4.tgz", - "integrity": "sha512-BFDEZMYfUvLn37ONE1yMBojPxnMlTFsdyNoqncT0qFq1mAfllL+ATMMJd8TeuVMiX84s1KbcxcZbXInmcO2mRg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.61.1.tgz", + "integrity": "sha512-x5Xr49hwt3hdW75UOZm3395YwwzPyauktslv29KpWL/T+vVAzoT3azLcTWv0eMciBNrx+DYjH4paehHoLpPvpg==", "cpu": [ "arm64" ], @@ -2958,9 +2962,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.4.tgz", - "integrity": "sha512-pc9EYOSlOgdQ2uPl1o9PF6/kLSgaUosia7gOuS8mB69IxJvlclko1MECXysjs5ryez1/5zjYqx3+xYU0TU6R1A==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.61.1.tgz", + "integrity": "sha512-unMS3H73DpaoPyyEVPjGKleM/s0mkmsauTENpw4INQY8y4+IuLNjkueQ5QCtC0D3N38Y38yhAU8OoZ20S2Tm6w==", "cpu": [ "arm64" ], @@ -2972,9 +2976,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.4.tgz", - "integrity": "sha512-NxnomyxYerDh5n4iLrNa+sH+Z+U4BMEE46V2PgQ/hoB909i8gV1M5wPojWg9fk1jWpO3IQnOs20K4wyZuFLEFQ==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.61.1.tgz", + "integrity": "sha512-zNZzGRnAhwjFEYmvphJRV5XaQGjs62cCmeYYHUT//NbvEnHauw+I85nGG+SiVg5ld4GX8D1IbKIX+ozITQnhMQ==", "cpu": [ "loong64" ], @@ -2986,9 +2990,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.4.tgz", - "integrity": "sha512-nbJnQ8a3z1mtmrwImCYhc6BGpThAyYVRQxw9uKSKG4wR6aAYno9sVjJ0zaZcW9BPJX1GbrDPf+SvdWjgTuDmnw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.61.1.tgz", + "integrity": "sha512-LdpWGL8X209B2SIvWjqlc8VZgM6PKfontSerGepuldQmHYrAOtnMCXeJkxXGbC+PPZVOuu5czJo7fNV6aeW8rQ==", "cpu": [ "loong64" ], @@ -3000,9 +3004,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.4.tgz", - "integrity": "sha512-2EU6acNrQLd8tYvo/LXW535wupT3m6fo7HKo6lr7ktQoItxTyOL1ZCR/GfGCuXl2vR+zmfI6eRXkSemafv+iVg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.61.1.tgz", + "integrity": "sha512-EC5kTtNaNGOmbMGqar8dvJy6y/hg99GAwjfBz++pxZhQATXGcRjd6c5en5wcbru0vkRmiMGsQKdMJOOf6sza4g==", "cpu": [ "ppc64" ], @@ -3014,9 +3018,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.4.tgz", - "integrity": "sha512-WeBtoMuaMxiiIrO2IYP3xs6GMWkJP2C0EoT8beTLkUPmzV1i/UcOSVw1d5r9KBODtHKilG5yFxsGRnBbK3wJ4A==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.61.1.tgz", + "integrity": "sha512-8hiwp6D4acEcNK78I4rP0/XtS1sknWIAMJBPdR4l6zUtyTm5KiTDr5bXmWt4foY7nAN7AThDHgkLIEZOWKbzWw==", "cpu": [ "ppc64" ], @@ -3028,9 +3032,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.4.tgz", - "integrity": "sha512-FJHFfqpKUI3A10WrWKiFbBZ7yVbGT4q4B5o1qKFFojqpaYoh9LrQgqWCmmcxQzVSXYtyB5bzkXrYzlHTs21MYA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.61.1.tgz", + "integrity": "sha512-10dh/h/BqA7DuMPWSxkR8uks18FRwnwOEqr5zOTEl+NOwP/OMzKX8OFR/Of9xxDA7D5qef1Nzar5WDD2kCCr1g==", "cpu": [ "riscv64" ], @@ -3042,9 +3046,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.4.tgz", - "integrity": "sha512-mcEl6CUT5IAUmQf1m9FYSmVqCJlpQ8r8eyftFUHG8i9OhY7BkBXSUdnLH5DOf0wCOjcP9v/QO93zpmF1SptCCw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.61.1.tgz", + "integrity": "sha512-YKJ5lg35DP17gcAOggnihe+APw9HLyj1Xn7gsmGumBJAUDa6NGXNixJzmkWLhcK9TOuuyQjdamzvJefkO7qHZQ==", "cpu": [ "riscv64" ], @@ -3056,9 +3060,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.4.tgz", - "integrity": "sha512-ynt3JxVd2w2buzoKDWIyiV1pJW93xlQic1THVLXilz429oijRpSHivZAgp65KBu+cMcgf1eVVjdnTLvPxgCuoQ==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.61.1.tgz", + "integrity": "sha512-Mlil5G2Jj6a7B3LWGctg+XPL9vdXYuzCtNXfxOQ0nPjc2m6ueUktocPGH9bnAM0bNRKb/bAWTujUU7IJQdQA+g==", "cpu": [ "s390x" ], @@ -3070,9 +3074,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.4.tgz", - "integrity": "sha512-Boiz5+MsaROEWDf+GGEwF8VMHGhlUoQMtIPjOgA5fv4osupqTVnJteQNKJwUcnUog2G55jYXH7KZFFiJe0TEzQ==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.61.1.tgz", + "integrity": "sha512-bVWIOIk6pV01p4CdUbPP7CJ/434z+OooYjDuFcR+44N35YvKUC66G8MGnvcWx5mWKW3g61J+t74l3Kj15Kwn2Q==", "cpu": [ "x64" ], @@ -3084,9 +3088,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.4.tgz", - "integrity": "sha512-+qfSY27qIrFfI/Hom04KYFw3GKZSGU4lXus51wsb5EuySfFlWRwjkKWoE9emgRw/ukoT4Udsj4W/+xxG8VbPKg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.61.1.tgz", + "integrity": "sha512-qy5pBvZbqNFheBz61R1rzsezjm0J7O2oNGoWtGoY89SZYLUfxAJTBAqDChqAIdB4rCiIbi9nF7yZ83GnNiLwSw==", "cpu": [ "x64" ], @@ -3098,9 +3102,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.4.tgz", - "integrity": "sha512-VpTfOPHgVXEBeeR8hZ2O0F3aSso+JDWqTWmTmzcQKted54IAdUVbxE+j/MVxUsKa8L20HJhv3vUezVPoquqWjA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.61.1.tgz", + "integrity": "sha512-E83TXjI4zm0+5f2qO+UOudaCYIhYwpJ5jq6YCZNIZ+6CbfhKrkAGezeiASBL9ElxAxFsRS9ZhESv8mfnj6TKeg==", "cpu": [ "x64" ], @@ -3112,9 +3116,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.4.tgz", - "integrity": "sha512-IPOsh5aRYuLv/nkU51X10Bf75Bsf6+gZdx1X+QP5QM6lIJFHHqbHLG0uJn/hWthzo13UAc2umiUorqZy3axoZg==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.61.1.tgz", + "integrity": "sha512-fbWnKqVkjrJN38vNe3ahkbk6iejS/3b0Nt7EEtPpE6RBacZcGXNKbzfHN3GUUlXOPghUg0j6XUGrtjX9z1sIvA==", "cpu": [ "arm64" ], @@ -3126,9 +3130,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.4.tgz", - "integrity": "sha512-4QzE9E81OohJ/HKzHhsqU+zcYYojVOXlFMs1DdyMT6qXl/niOH7AVElmmEdUNHHS/oRkc++d5k6Vy85zFs0DEw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.61.1.tgz", + "integrity": "sha512-ArMl38iVAbk0New1ogihQNY6iphLi4ZaRsa037gUzv5yeKPY8TD3Dmy4x2RNC1VztU/uqm+G+/RwFrSka3Oy2g==", "cpu": [ "arm64" ], @@ -3140,9 +3144,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.4.tgz", - "integrity": "sha512-zTPgT1YuHHcd+Tmx7h8aml0FWFVelV5N54oHow9SLj+GfoDy/huQ+UV396N/C7KpMDMiPspRktzM1/0r1usYEA==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.61.1.tgz", + "integrity": "sha512-0mYtjHS9ucAbcATycCNK9IGBk/cCe/ma7EmSLGZdsxnOA8cjRIyU04wDpVAD9NiOfLUR9KTxdiO53uOkherqjQ==", "cpu": [ "ia32" ], @@ -3154,9 +3158,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.4.tgz", - "integrity": "sha512-DRS4G7mi9lJxqEDezIkKCaUIKCrLUUDCUaCsTPCi/rtqaC6D/jjwslMQyiDU50Ka0JKpeXeRBFBAXwArY52vBw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.61.1.tgz", + "integrity": "sha512-gK1iCEPfpoSG9wfBihXxvBMi8ZfcWffYkEsC/Eih+iFENTaewvNcrEQ69lIOWYO5pePHKLHHO7nq5AILGO/HQQ==", "cpu": [ "x64" ], @@ -3168,9 +3172,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.4.tgz", - "integrity": "sha512-QVTUovf40zgTqlFVrKA1uXMVvU2QWEFWfAH8Wdc48IxLvrJMQVMBRjuQyUpzZCDkakImib9eVazbWlC6ksWtJw==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.61.1.tgz", + "integrity": "sha512-X+zaP2x+j4RXGfbp/seSoRHWnPxzApilDszisZxbYH5C/jTxFhCtDNdPGZb9lJyYPs24wGxruPF7Y+sIXt9Gzw==", "cpu": [ "x64" ], @@ -3389,9 +3393,9 @@ "license": "MIT" }, "node_modules/@turbo/darwin-64": { - "version": "2.9.16", - "resolved": "https://registry.npmjs.org/@turbo/darwin-64/-/darwin-64-2.9.16.tgz", - "integrity": "sha512-jLjApWTSNd7JZ5JaLYfelW1ytnGQOvB7ivl+2RD1xQvJTbi8I9gBjzcga7tDZVPyaxpl10YTfJt3BrYXR18KDw==", + "version": "2.9.18", + "resolved": "https://registry.npmjs.org/@turbo/darwin-64/-/darwin-64-2.9.18.tgz", + "integrity": "sha512-9f27peFu16ur8c0v9nUFUEyBnbKuuFsUTjHFWfmwGfzySBXbHwzU44QhZon6Mznz0cHsIr3984NQj/bVrnGSRw==", "cpu": [ "x64" ], @@ -3403,9 +3407,9 @@ ] }, "node_modules/@turbo/darwin-arm64": { - "version": "2.9.16", - "resolved": "https://registry.npmjs.org/@turbo/darwin-arm64/-/darwin-arm64-2.9.16.tgz", - "integrity": "sha512-YPgrn+5HIGzrx0O2a631SV4MBQUe4W/DafMFUuBVgaU32PW9/OTT0ehviF0QSxTXuRJlHvW2eUTemddF5/spmw==", + "version": "2.9.18", + "resolved": "https://registry.npmjs.org/@turbo/darwin-arm64/-/darwin-arm64-2.9.18.tgz", + "integrity": "sha512-9A6TMRq/Ib+QnbhLlgkhOm+624wO4pzSQ/yQviQfWHOlFvaYxdnIAYmu2H6TS6y7kSVL0DvzNe04NbESTOzFVQ==", "cpu": [ "arm64" ], @@ -3417,9 +3421,9 @@ ] }, "node_modules/@turbo/linux-64": { - "version": "2.9.16", - "resolved": "https://registry.npmjs.org/@turbo/linux-64/-/linux-64-2.9.16.tgz", - "integrity": "sha512-vAEf1H6l26lTpl9FJ/peQo1NUB8RC0sbEJJz5mPcUhHA2bPDup2x3CZPgo/bH8S4cUcBLm4FN3UHd5iUO2RAew==", + "version": "2.9.18", + "resolved": "https://registry.npmjs.org/@turbo/linux-64/-/linux-64-2.9.18.tgz", + "integrity": "sha512-zCdIDtz69AnbYh913elJRRoF3QY5aa2HNnf+4rAkc7bQ+tWujiDkCNV7stazOUPggaDvhKIf2Z87qHftTeXSkw==", "cpu": [ "x64" ], @@ -3431,9 +3435,9 @@ ] }, "node_modules/@turbo/linux-arm64": { - "version": "2.9.16", - "resolved": "https://registry.npmjs.org/@turbo/linux-arm64/-/linux-arm64-2.9.16.tgz", - "integrity": "sha512-xDBLR2PZg4BrQOchfG6svgpv5FCNJ2TOtT2psLdEJcdKo1BH+pnPs9Xj6pvUjgfkHbuvBOfeE4R6tvxMoQKDHQ==", + "version": "2.9.18", + "resolved": "https://registry.npmjs.org/@turbo/linux-arm64/-/linux-arm64-2.9.18.tgz", + "integrity": "sha512-Va1kXI04naMgYwqv/5Dfa36dTDx8015U7oaQAjrXa45ua9OoFjSV4OmvkML4EmXvUclQHCiBRbY8bvd0jV7eAg==", "cpu": [ "arm64" ], @@ -3445,9 +3449,9 @@ ] }, "node_modules/@turbo/windows-64": { - "version": "2.9.16", - "resolved": "https://registry.npmjs.org/@turbo/windows-64/-/windows-64-2.9.16.tgz", - "integrity": "sha512-NBAJnaUiGdgkSzQwUIdOvkCkcpTSu58G/sBGa0mvBtzfvFOOgrQwepKOOQ8cp6sWM6OcKDNFj2p1dsZA1OWjPg==", + "version": "2.9.18", + "resolved": "https://registry.npmjs.org/@turbo/windows-64/-/windows-64-2.9.18.tgz", + "integrity": "sha512-m0kDhZANxSNz9ck1ybogFscHabriAsp4eDFNrN/1H5WrgTF7b3VlcPZnhuO3v2+E2KnCbeAc+UUT10BZZHdDKw==", "cpu": [ "x64" ], @@ -3459,9 +3463,9 @@ ] }, "node_modules/@turbo/windows-arm64": { - "version": "2.9.16", - "resolved": "https://registry.npmjs.org/@turbo/windows-arm64/-/windows-arm64-2.9.16.tgz", - "integrity": "sha512-Y7SJppD0Z8wjO3Ec0ZGd9KQ4Yv0BMnA8CIowj5Vp+OEVsosXDG2weK6/t1RRLfJmc2Ozrnd6y4DOgQys+mn3WQ==", + "version": "2.9.18", + "resolved": "https://registry.npmjs.org/@turbo/windows-arm64/-/windows-arm64-2.9.18.tgz", + "integrity": "sha512-nUdR8WqoomUys9iIQmG45TMiizJ+5BV8egSeLLZba/AWblyp3fVBcIH1kSE58OtK4g2YzbMJEth6Ttv9w5rqMA==", "cpu": [ "arm64" ], @@ -3721,9 +3725,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.1.tgz", - "integrity": "sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==", + "version": "25.9.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.3.tgz", + "integrity": "sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg==", "license": "MIT", "dependencies": { "undici-types": ">=7.24.0 <7.24.7" @@ -4452,9 +4456,9 @@ "license": "Apache-2.0 OR MIT" }, "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz", + "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==", "dev": true, "license": "MIT", "bin": { @@ -4855,9 +4859,9 @@ } }, "node_modules/axe-core": { - "version": "4.11.4", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.4.tgz", - "integrity": "sha512-KunSNx+TVpkAw/6ULfhnx+HWRecjqZGTOyquAoWHYLRSdK1tB5Ihce1ZW+UY3fj33bYAFWPu7W/GRSmmrCGuxA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.12.1.tgz", + "integrity": "sha512-s7iGf5GaVMxEG0ENN9x+xTr7GFZCb1ZP/1uATUpCEK2X78nDB3RwbtFCo9pGAf9ru+VwoQ464DkaLEeRM08wJA==", "dev": true, "license": "MPL-2.0", "engines": { @@ -4865,9 +4869,9 @@ } }, "node_modules/axios": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.1.tgz", - "integrity": "sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.17.0.tgz", + "integrity": "sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.16.0", @@ -5066,9 +5070,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.33", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.33.tgz", - "integrity": "sha512-bA6+tcSLpz2tIEdDXZPpPTIuxBcC4+w6SieaYyfigIa4h8GlFxbA17v22Vx3JUtuZQj9SgOsnbK+aTBzyDyEuw==", + "version": "2.10.36", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.36.tgz", + "integrity": "sha512-lVq/Df7LXlO79MVaaUHztSwWiG9oXoWHlgvNS51v8Dpd4+G4/VIy6qYePTw31nAVls33nUtnfezYeLkYAak9dg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5537,9 +5541,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001793", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", - "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==", + "version": "1.0.30001799", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz", + "integrity": "sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==", "dev": true, "funding": [ { @@ -6383,9 +6387,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.364", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.364.tgz", - "integrity": "sha512-G/dYE3+AYhyHwzTwg8UbnXf7zqMERYh7l2jJ3QujhFsH8agSYwtnGAR2aZ7f0AakIKJXd5En/Hre4igIUrdlYw==", + "version": "1.5.372", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.372.tgz", + "integrity": "sha512-M3yhbAlilnwqC8D21t28UCDGHyitShTmmLRU/H+b74P6Ski16Nb9HONYEaVpMj/pwC7BEo5B95FpjODLCWbtfA==", "dev": true, "license": "ISC" }, @@ -6541,9 +6545,9 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.3.2.tgz", - "integrity": "sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.3.3.tgz", + "integrity": "sha512-0PuBxFi+4uPanB97iDxCLWuHeYud2FALrw5HFZGtAF38UpJDbDC8frwp2cnDyae692CQ0dou60UwWfhgsa4U/g==", "dev": true, "license": "MIT", "dependencies": { @@ -7924,20 +7928,20 @@ } }, "node_modules/fix-dts-default-cjs-exports/node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", "dev": true, "license": "MIT" }, "node_modules/fix-dts-default-cjs-exports/node_modules/rollup": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.4.tgz", - "integrity": "sha512-WHeFSbZYsPu3+bLoNRUuAO+wavNlocOPf3wSHTP7hcFKVnJeWsYlCDbr3mTS14FCizf9ccIxXA8sGL8zKeQN3g==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.61.1.tgz", + "integrity": "sha512-I4KW6iuRpuu2uHBLraZ1wNZe0DP7lnRha+VJ9tNaYVaVgKhW0aI3h4RYnoRPeql0flHm/Co55b7snEDcOfOJrA==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.8" + "@types/estree": "1.0.9" }, "bin": { "rollup": "dist/bin/rollup" @@ -7947,31 +7951,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.60.4", - "@rollup/rollup-android-arm64": "4.60.4", - "@rollup/rollup-darwin-arm64": "4.60.4", - "@rollup/rollup-darwin-x64": "4.60.4", - "@rollup/rollup-freebsd-arm64": "4.60.4", - "@rollup/rollup-freebsd-x64": "4.60.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.60.4", - "@rollup/rollup-linux-arm-musleabihf": "4.60.4", - "@rollup/rollup-linux-arm64-gnu": "4.60.4", - "@rollup/rollup-linux-arm64-musl": "4.60.4", - "@rollup/rollup-linux-loong64-gnu": "4.60.4", - "@rollup/rollup-linux-loong64-musl": "4.60.4", - "@rollup/rollup-linux-ppc64-gnu": "4.60.4", - "@rollup/rollup-linux-ppc64-musl": "4.60.4", - "@rollup/rollup-linux-riscv64-gnu": "4.60.4", - "@rollup/rollup-linux-riscv64-musl": "4.60.4", - "@rollup/rollup-linux-s390x-gnu": "4.60.4", - "@rollup/rollup-linux-x64-gnu": "4.60.4", - "@rollup/rollup-linux-x64-musl": "4.60.4", - "@rollup/rollup-openbsd-x64": "4.60.4", - "@rollup/rollup-openharmony-arm64": "4.60.4", - "@rollup/rollup-win32-arm64-msvc": "4.60.4", - "@rollup/rollup-win32-ia32-msvc": "4.60.4", - "@rollup/rollup-win32-x64-gnu": "4.60.4", - "@rollup/rollup-win32-x64-msvc": "4.60.4", + "@rollup/rollup-android-arm-eabi": "4.61.1", + "@rollup/rollup-android-arm64": "4.61.1", + "@rollup/rollup-darwin-arm64": "4.61.1", + "@rollup/rollup-darwin-x64": "4.61.1", + "@rollup/rollup-freebsd-arm64": "4.61.1", + "@rollup/rollup-freebsd-x64": "4.61.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.61.1", + "@rollup/rollup-linux-arm-musleabihf": "4.61.1", + "@rollup/rollup-linux-arm64-gnu": "4.61.1", + "@rollup/rollup-linux-arm64-musl": "4.61.1", + "@rollup/rollup-linux-loong64-gnu": "4.61.1", + "@rollup/rollup-linux-loong64-musl": "4.61.1", + "@rollup/rollup-linux-ppc64-gnu": "4.61.1", + "@rollup/rollup-linux-ppc64-musl": "4.61.1", + "@rollup/rollup-linux-riscv64-gnu": "4.61.1", + "@rollup/rollup-linux-riscv64-musl": "4.61.1", + "@rollup/rollup-linux-s390x-gnu": "4.61.1", + "@rollup/rollup-linux-x64-gnu": "4.61.1", + "@rollup/rollup-linux-x64-musl": "4.61.1", + "@rollup/rollup-openbsd-x64": "4.61.1", + "@rollup/rollup-openharmony-arm64": "4.61.1", + "@rollup/rollup-win32-arm64-msvc": "4.61.1", + "@rollup/rollup-win32-ia32-msvc": "4.61.1", + "@rollup/rollup-win32-x64-gnu": "4.61.1", + "@rollup/rollup-win32-x64-msvc": "4.61.1", "fsevents": "~2.3.2" } }, @@ -8114,18 +8118,21 @@ } }, "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.2.0.tgz", + "integrity": "sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" + "has-property-descriptors": "^1.0.2", + "hasown": "^2.0.4", + "is-callable": "^1.2.7", + "is-document.all": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -9200,6 +9207,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-document.all": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-document.all/-/is-document.all-1.0.0.tgz", + "integrity": "sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -10330,10 +10353,20 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz", + "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -11270,9 +11303,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.46", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.46.tgz", - "integrity": "sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==", + "version": "2.0.47", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.47.tgz", + "integrity": "sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==", "dev": true, "license": "MIT", "engines": { @@ -12093,9 +12126,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz", + "integrity": "sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==", "dev": true, "license": "MIT", "dependencies": { @@ -12124,9 +12157,9 @@ } }, "node_modules/prettier": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", - "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.4.tgz", + "integrity": "sha512-N2MylSdi48+5N/6S5j+maeHbUSIzzZ5uOcX5Hm4QpV8Dkb1HFjfAKTKX6yNPJQD9AhcT3ifHNB66tWTTJDi11Q==", "dev": true, "license": "MIT", "bin": { @@ -12314,9 +12347,9 @@ "license": "MIT" }, "node_modules/property-information": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", - "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz", + "integrity": "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==", "dev": true, "license": "MIT", "funding": { @@ -12962,9 +12995,9 @@ "license": "Apache-2.0" }, "node_modules/semver": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", - "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz", + "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==", "dev": true, "license": "ISC", "bin": { @@ -13098,15 +13131,15 @@ } }, "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" }, @@ -13497,19 +13530,20 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.11.tgz", + "integrity": "sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", "define-data-property": "^1.1.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" + "es-abstract": "^1.24.2", + "es-object-atoms": "^1.1.2", + "has-property-descriptors": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -13519,16 +13553,16 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.10.tgz", + "integrity": "sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "es-object-atoms": "^1.1.2" }, "engines": { "node": ">= 0.4" @@ -14247,9 +14281,9 @@ } }, "node_modules/tsup/node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", "dev": true, "license": "MIT" }, @@ -14284,13 +14318,13 @@ } }, "node_modules/tsup/node_modules/rollup": { - "version": "4.60.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.4.tgz", - "integrity": "sha512-WHeFSbZYsPu3+bLoNRUuAO+wavNlocOPf3wSHTP7hcFKVnJeWsYlCDbr3mTS14FCizf9ccIxXA8sGL8zKeQN3g==", + "version": "4.61.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.61.1.tgz", + "integrity": "sha512-I4KW6iuRpuu2uHBLraZ1wNZe0DP7lnRha+VJ9tNaYVaVgKhW0aI3h4RYnoRPeql0flHm/Co55b7snEDcOfOJrA==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.8" + "@types/estree": "1.0.9" }, "bin": { "rollup": "dist/bin/rollup" @@ -14300,31 +14334,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.60.4", - "@rollup/rollup-android-arm64": "4.60.4", - "@rollup/rollup-darwin-arm64": "4.60.4", - "@rollup/rollup-darwin-x64": "4.60.4", - "@rollup/rollup-freebsd-arm64": "4.60.4", - "@rollup/rollup-freebsd-x64": "4.60.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.60.4", - "@rollup/rollup-linux-arm-musleabihf": "4.60.4", - "@rollup/rollup-linux-arm64-gnu": "4.60.4", - "@rollup/rollup-linux-arm64-musl": "4.60.4", - "@rollup/rollup-linux-loong64-gnu": "4.60.4", - "@rollup/rollup-linux-loong64-musl": "4.60.4", - "@rollup/rollup-linux-ppc64-gnu": "4.60.4", - "@rollup/rollup-linux-ppc64-musl": "4.60.4", - "@rollup/rollup-linux-riscv64-gnu": "4.60.4", - "@rollup/rollup-linux-riscv64-musl": "4.60.4", - "@rollup/rollup-linux-s390x-gnu": "4.60.4", - "@rollup/rollup-linux-x64-gnu": "4.60.4", - "@rollup/rollup-linux-x64-musl": "4.60.4", - "@rollup/rollup-openbsd-x64": "4.60.4", - "@rollup/rollup-openharmony-arm64": "4.60.4", - "@rollup/rollup-win32-arm64-msvc": "4.60.4", - "@rollup/rollup-win32-ia32-msvc": "4.60.4", - "@rollup/rollup-win32-x64-gnu": "4.60.4", - "@rollup/rollup-win32-x64-msvc": "4.60.4", + "@rollup/rollup-android-arm-eabi": "4.61.1", + "@rollup/rollup-android-arm64": "4.61.1", + "@rollup/rollup-darwin-arm64": "4.61.1", + "@rollup/rollup-darwin-x64": "4.61.1", + "@rollup/rollup-freebsd-arm64": "4.61.1", + "@rollup/rollup-freebsd-x64": "4.61.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.61.1", + "@rollup/rollup-linux-arm-musleabihf": "4.61.1", + "@rollup/rollup-linux-arm64-gnu": "4.61.1", + "@rollup/rollup-linux-arm64-musl": "4.61.1", + "@rollup/rollup-linux-loong64-gnu": "4.61.1", + "@rollup/rollup-linux-loong64-musl": "4.61.1", + "@rollup/rollup-linux-ppc64-gnu": "4.61.1", + "@rollup/rollup-linux-ppc64-musl": "4.61.1", + "@rollup/rollup-linux-riscv64-gnu": "4.61.1", + "@rollup/rollup-linux-riscv64-musl": "4.61.1", + "@rollup/rollup-linux-s390x-gnu": "4.61.1", + "@rollup/rollup-linux-x64-gnu": "4.61.1", + "@rollup/rollup-linux-x64-musl": "4.61.1", + "@rollup/rollup-openbsd-x64": "4.61.1", + "@rollup/rollup-openharmony-arm64": "4.61.1", + "@rollup/rollup-win32-arm64-msvc": "4.61.1", + "@rollup/rollup-win32-ia32-msvc": "4.61.1", + "@rollup/rollup-win32-x64-gnu": "4.61.1", + "@rollup/rollup-win32-x64-msvc": "4.61.1", "fsevents": "~2.3.2" } }, @@ -14362,21 +14396,21 @@ "license": "0BSD" }, "node_modules/turbo": { - "version": "2.9.16", - "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.9.16.tgz", - "integrity": "sha512-NqgRQy6j6dPYcdSdv0q1g9QsZg7SWg87RERM8otw/1AtKU2yTFVClOM7cbwKzOonZr/Ek1blTBucw64L9H0Bwg==", + "version": "2.9.18", + "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.9.18.tgz", + "integrity": "sha512-bwabv6PupzeavybzEoArBAkwq5fnzwf8OFnRtpHwnviFWuwJPFxtyH+aVp36TmIqK3aYYgtTJ3J0m2ysxxSzQg==", "dev": true, "license": "MIT", "bin": { "turbo": "bin/turbo" }, "optionalDependencies": { - "@turbo/darwin-64": "2.9.16", - "@turbo/darwin-arm64": "2.9.16", - "@turbo/linux-64": "2.9.16", - "@turbo/linux-arm64": "2.9.16", - "@turbo/windows-64": "2.9.16", - "@turbo/windows-arm64": "2.9.16" + "@turbo/darwin-64": "2.9.18", + "@turbo/darwin-arm64": "2.9.18", + "@turbo/linux-64": "2.9.18", + "@turbo/linux-arm64": "2.9.18", + "@turbo/windows-64": "2.9.18", + "@turbo/windows-arm64": "2.9.18" } }, "node_modules/type-check": { @@ -15028,9 +15062,9 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.21", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.21.tgz", - "integrity": "sha512-zbRA8cVm6io/d5W8uIe2hblzN76/Wm3v/yiythQvr+dpBWeqhPSWIDNj4zOyHi4zKbMK6DN34Xsr9jPHJERAEw==", + "version": "1.1.22", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.22.tgz", + "integrity": "sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==", "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", @@ -15412,6 +15446,22 @@ "typescript": "^5.3.3" } }, + "packages/mesh-scalus-emulator": { + "name": "@meshsdk/scalus-emulator", + "version": "1.9.0", + "license": "Apache-2.0", + "dependencies": { + "@meshsdk/common": "1.9.0", + "@meshsdk/core-cst": "1.9.0", + "scalus": "^0.17.0" + }, + "devDependencies": { + "@meshsdk/configs": "*", + "eslint": "^8.57.0", + "tsup": "^8.0.2", + "typescript": "^5.3.3" + } + }, "packages/mesh-transaction": { "name": "@meshsdk/transaction", "version": "1.9.0", @@ -15422,6 +15472,7 @@ "@cardano-sdk/util": "0.17.1", "@meshsdk/common": "1.9.0", "@meshsdk/core-cst": "1.9.0", + "@meshsdk/scalus-emulator": "1.9.0", "json-bigint": "^1.0.0" }, "devDependencies": { diff --git a/packages/mesh-scalus-emulator/README.md b/packages/mesh-scalus-emulator/README.md new file mode 100644 index 000000000..a232ad9f2 --- /dev/null +++ b/packages/mesh-scalus-emulator/README.md @@ -0,0 +1,5 @@ +# mesh-scalus-emulator + +Scalus emulator utilities for Mesh SDK. + +[meshjs.dev](https://meshjs.dev/) diff --git a/packages/mesh-scalus-emulator/jest.config.ts b/packages/mesh-scalus-emulator/jest.config.ts new file mode 100644 index 000000000..e8877e345 --- /dev/null +++ b/packages/mesh-scalus-emulator/jest.config.ts @@ -0,0 +1,20 @@ +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-scalus-emulator/package.json b/packages/mesh-scalus-emulator/package.json new file mode 100644 index 000000000..786dec18e --- /dev/null +++ b/packages/mesh-scalus-emulator/package.json @@ -0,0 +1,52 @@ +{ + "name": "@meshsdk/scalus-emulator", + "version": "1.9.0", + "description": "Scalus emulator utilities for Mesh SDK", + "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": { + "scalus": "^0.17.0", + "@meshsdk/core-cst": "1.9.0", + "@meshsdk/common": "1.9.0" + }, + "devDependencies": { + "@meshsdk/configs": "*", + "eslint": "^8.57.0", + "tsup": "^8.0.2", + "typescript": "^5.3.3" + }, + "prettier": "@meshsdk/configs/prettier", + "publishConfig": { + "access": "public" + }, + "license": "Apache-2.0", + "keywords": [ + "cardano", + "ada", + "web3", + "blockchain", + "sdk" + ] +} diff --git a/packages/mesh-scalus-emulator/src/index.ts b/packages/mesh-scalus-emulator/src/index.ts new file mode 100644 index 000000000..281e40f99 --- /dev/null +++ b/packages/mesh-scalus-emulator/src/index.ts @@ -0,0 +1,373 @@ +// Use `import type` for scalus types, `require()` at runtime since scalus is CJS +import type { Scalus, SlotConfig, SubmitResult } from "scalus"; +import { bech32 } from "@scure/base"; +import cbor from "cbor"; +import { Emulator } from "scalus"; + +import type { + AccountInfo, + Action, + Asset, + AssetMetadata, + BlockInfo, + GovernanceProposalInfo, + IEvaluator, + IFetcher, + IFetcherOptions, + ISubmitter, + Protocol, + TransactionInfo, + UTxO, +} from "@meshsdk/common"; +import { + DEFAULT_PROTOCOL_PARAMETERS, + DEFAULT_V1_COST_MODEL_LIST, + DEFAULT_V2_COST_MODEL_LIST, + DEFAULT_V3_COST_MODEL_LIST, +} from "@meshsdk/common"; +import { utxosToCborMap } from "@meshsdk/core-cst"; + +// Scalus is CJS so we use dynamic import at construction time +let ScalusLib: typeof import("scalus") | undefined; + +/** + * Scalus Emulator provider for MeshJS. + * Implements IFetcher + ISubmitter + IEvaluator backed by a local Scalus Cardano emulator. + * + * Usage: + * ```ts + * import { ScalusEmulator } from "@meshsdk/provider"; + * import { Emulator, SlotConfig } from "scalus"; + * + * const emulator = Emulator.withAddresses([aliceAddr], SlotConfig.preview); + * const provider = new ScalusEmulator(emulator, SlotConfig.preview); + * const txBuilder = new MeshTxBuilder({ fetcher: provider, submitter: provider, evaluator: provider }); + * ``` + */ +export class ScalusEmulator implements IFetcher, ISubmitter, IEvaluator { + public emulator: Emulator; + private slotConfig: SlotConfig; + private protocolParams: Protocol; + private costModels: number[][]; + + constructor( + initialUtxos: UTxO[], + slotConfig: SlotConfig, + options?: { + protocolParams?: Protocol; + costModels?: { + PlutusV1?: number[]; + PlutusV2?: number[]; + PlutusV3?: number[]; + }; + }, + ) { + this.emulator = new Emulator( + Buffer.from(utxosToCborMap(initialUtxos), "hex"), + slotConfig, + ); + + this.slotConfig = slotConfig; + this.protocolParams = + options?.protocolParams ?? DEFAULT_PROTOCOL_PARAMETERS; + this.costModels = [ + options?.costModels?.PlutusV1 ?? DEFAULT_V1_COST_MODEL_LIST, + options?.costModels?.PlutusV2 ?? DEFAULT_V2_COST_MODEL_LIST, + options?.costModels?.PlutusV3 ?? DEFAULT_V3_COST_MODEL_LIST, + ]; + + // Eagerly load the scalus module + if (!ScalusLib) { + // eslint-disable-next-line @typescript-eslint/no-require-imports + ScalusLib = require("scalus") as typeof import("scalus"); + } + } + + // --------------------------------------------------------------------------- + // IFetcher + // --------------------------------------------------------------------------- + + async fetchAddressUTxOs(address: string, asset?: string): Promise { + const entries = this.emulator.getUtxosForAddress(address); + const utxos = entries.map((e) => decodeUtxoEntry(e, address)); + if (asset) { + return utxos.filter((u) => u.output.amount.some((a) => a.unit === asset)); + } + return utxos; + } + + async fetchUTxOs(hash: string, index?: number): Promise { + const allEntries = this.emulator.getAllUtxos(); + const utxos: UTxO[] = []; + for (const entry of allEntries) { + const utxo = decodeUtxoEntry(entry); + if (utxo.input.txHash === hash) { + if (index === undefined || utxo.input.outputIndex === index) { + utxos.push(utxo); + } + } + } + return utxos; + } + + async fetchProtocolParameters(_epoch: number): Promise { + return this.protocolParams; + } + + async fetchCostModels(_epoch: number): Promise { + return this.costModels; + } + + // --- Unsupported IFetcher methods (emulator doesn't track this data) --- + + async fetchAccountInfo(_address: string): Promise { + throw new Error("fetchAccountInfo not supported by ScalusEmulator"); + } + + async fetchAddressTxs( + _address: string, + _options?: IFetcherOptions, + ): Promise { + throw new Error("fetchAddressTxs not supported by ScalusEmulator"); + } + + async fetchAssetAddresses( + _asset: string, + ): Promise<{ address: string; quantity: string }[]> { + throw new Error("fetchAssetAddresses not supported by ScalusEmulator"); + } + + async fetchAssetMetadata(_asset: string): Promise { + throw new Error("fetchAssetMetadata not supported by ScalusEmulator"); + } + + async fetchBlockInfo(_hash: string): Promise { + throw new Error("fetchBlockInfo not supported by ScalusEmulator"); + } + + async fetchCollectionAssets( + _policyId: string, + _cursor?: number | string, + ): Promise<{ assets: Asset[]; next?: string | number | null }> { + throw new Error("fetchCollectionAssets not supported by ScalusEmulator"); + } + + async fetchTxInfo(_hash: string): Promise { + throw new Error("fetchTxInfo not supported by ScalusEmulator"); + } + + async fetchGovernanceProposal( + _txHash: string, + _certIndex: number, + ): Promise { + throw new Error("fetchGovernanceProposal not supported by ScalusEmulator"); + } + + async get(_url: string): Promise { + throw new Error("get not supported by ScalusEmulator"); + } + + // --------------------------------------------------------------------------- + // ISubmitter + // --------------------------------------------------------------------------- + + async submitTx(tx: string): Promise { + const txBytes = hexToBytes(tx); + const result: SubmitResult = this.emulator.submitTx(txBytes); + if (!result.isSuccess) { + const logs = result.logs?.join("\n") ?? ""; + throw new Error( + `Transaction rejected: ${result.error}${logs ? `\nLogs:\n${logs}` : ""}`, + ); + } + return result.txHash!; + } + + // --------------------------------------------------------------------------- + // IEvaluator + // --------------------------------------------------------------------------- + + async evaluateTx( + tx: string, + additionalUtxos?: UTxO[], + ): Promise[]> { + const txBytes = hexToBytes(tx); + + const utxoMapBytes = this.emulator.getAllUtxos(); + let utxos: UTxO[] = utxoMapBytes.map((e) => decodeUtxoEntry(e)); + if (additionalUtxos) { + utxos = utxos.concat(additionalUtxos); + } + const utxoMapCbor = Buffer.from(utxosToCborMap(utxos), "hex"); + const scalusSlotConfig = new ScalusLib!.SlotConfig( + this.slotConfig.slotToTime(0), + 0, + 1000, + ); + let redeemers: Scalus.Redeemer[]; + try { + redeemers = ScalusLib!.Scalus.evalPlutusScripts( + txBytes, + utxoMapCbor, + scalusSlotConfig, + this.costModels, + ); + } catch (error) { + throw error; + } + + const tagMap: Record = { + Spend: "SPEND", + Mint: "MINT", + Cert: "CERT", + Reward: "REWARD", + Voting: "VOTE", + Proposing: "PROPOSE", + }; + + return redeemers.map( + (r): Omit => ({ + tag: tagMap[r.tag] || "SPEND", + index: r.index, + budget: { + mem: Number(r.budget.memory), + steps: Number(r.budget.steps), + }, + }), + ); + } +} + +// --------------------------------------------------------------------------- +// CBOR Decoding Helpers +// --------------------------------------------------------------------------- + +function hexToBytes(hex: string): Uint8Array { + const bytes = new Uint8Array(hex.length / 2); + for (let i = 0; i < hex.length; i += 2) { + bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16); + } + return bytes; +} + +function bytesToHex(bytes: Uint8Array | Buffer): string { + return Buffer.from(bytes).toString("hex"); +} + +/** + * Convert raw Cardano address bytes to bech32 string. + * Header byte determines address type and network. + */ +function addressBytesToBech32(addrBytes: Uint8Array): string { + const header = addrBytes[0]!; + const networkId = header & 0x0f; + const prefix = + networkId === 1 + ? "addr" // mainnet + : "addr_test"; // testnet + + // bech32 encode the full address bytes (header + payload) + const words = bech32.toWords(addrBytes); + return bech32.encode(prefix, words, 1023); +} + +/** + * Decode a Cardano CBOR value field into Asset[]. + * Value is either: uint (lovelace only) or [uint, multiasset_map] + */ +function decodeValue(value: unknown): Asset[] { + if (typeof value === "number" || typeof value === "bigint") { + return [{ unit: "lovelace", quantity: String(value) }]; + } + if (Array.isArray(value)) { + const [lovelace, multiAsset] = value; + const assets: Asset[] = [{ unit: "lovelace", quantity: String(lovelace) }]; + if (multiAsset instanceof Map) { + for (const [policyId, assetMap] of multiAsset) { + const policyHex = bytesToHex(policyId as Uint8Array); + if (assetMap instanceof Map) { + for (const [assetName, quantity] of assetMap) { + const nameHex = bytesToHex(assetName as Uint8Array); + assets.push({ + unit: policyHex + nameHex, + quantity: String(quantity), + }); + } + } + } + } + return assets; + } + return [{ unit: "lovelace", quantity: "0" }]; +} + +/** + * Decode a single CBOR-encoded UTxO entry (Map with one key-value pair) + * from the Scalus emulator into a MeshJS UTxO. + * + * @param cborBytes - CBOR encoded Map[TransactionInput, TransactionOutput] + * @param knownAddress - If provided, skip address decoding (optimization for fetchAddressUTxOs) + */ +function decodeUtxoEntry(cborBytes: Uint8Array, knownAddress?: string): UTxO { + const decoded = cbor.decode(cborBytes) as Map; + const entry = Array.from(decoded.entries())[0]!; + const [txIn, txOut] = entry; + + // Decode TransactionInput: [hash_bytes, index] + const txInArr = txIn as [Uint8Array, number]; + const txHash = bytesToHex(txInArr[0]); + const outputIndex = txInArr[1]; + + // Decode TransactionOutput (Babbage era uses Map format) + let address: string; + let amount: Asset[]; + let dataHash: string | undefined; + let plutusData: string | undefined; + let scriptRef: string | undefined; + + if (txOut instanceof Map) { + // Babbage-era map format: {0: address, 1: value, ?2: datumOption, ?3: scriptRef} + const addrBytes = txOut.get(0) as Uint8Array; + address = knownAddress ?? addressBytesToBech32(addrBytes); + amount = decodeValue(txOut.get(1)); + + const datumOption = txOut.get(2); + if (datumOption != null && Array.isArray(datumOption)) { + const [tag, datum] = datumOption; + if (tag === 0) { + // DatumHash + dataHash = bytesToHex(datum as Uint8Array); + } else if (tag === 1) { + // Inline datum — encode back to CBOR hex + plutusData = bytesToHex(cbor.encode(datum)); + } + } + + const scriptRefVal = txOut.get(3); + if (scriptRefVal != null) { + // ScriptRef is CBOR-tagged, encode back to hex + scriptRef = bytesToHex(cbor.encode(scriptRefVal)); + } + } else if (Array.isArray(txOut)) { + // Shelley-era array format: [address, value, ?datumHash] + const addrBytes = txOut[0] as Uint8Array; + address = knownAddress ?? addressBytesToBech32(addrBytes); + amount = decodeValue(txOut[1]); + if (txOut[2]) { + dataHash = bytesToHex(txOut[2] as Uint8Array); + } + } else { + throw new Error("Unexpected TransactionOutput format"); + } + + return { + input: { txHash, outputIndex }, + output: { + address: address!, + amount, + dataHash, + plutusData, + scriptRef, + }, + }; +} diff --git a/packages/mesh-scalus-emulator/test/index.test.ts b/packages/mesh-scalus-emulator/test/index.test.ts new file mode 100644 index 000000000..e41eebb86 --- /dev/null +++ b/packages/mesh-scalus-emulator/test/index.test.ts @@ -0,0 +1,727 @@ +import { SlotConfig } from "scalus"; + +import { + applyCborEncoding, + MeshTxBuilder, + NativeScript, + resolveNativeScriptHash, + resolveNativeScriptHex, + resolvePaymentKeyHash, + resolveScriptHash, + UTxO, +} from "@meshsdk/core"; +import { AppWallet } from "@meshsdk/wallet"; + +import { ScalusEmulator } from "../src"; + +const TEST_MNEMONIC = [ + "solution", + "solution", + "solution", + "solution", + "solution", + "solution", + "solution", + "solution", + "solution", + "solution", + "solution", + "solution", + "solution", + "solution", + "solution", + "solution", + "solution", + "solution", + "solution", + "solution", + "solution", + "solution", + "solution", + "solution", +]; + +const alwaysSucceedCbor = applyCborEncoding( + "58340101002332259800a518a4d153300249011856616c696461746f722072657475726e65642066616c736500136564004ae715cd01", +); + +async function createTestSetup(lovelacePerAddress = 10_000_000_000n) { + const slotConfig = SlotConfig.preview; + const wallet = new AppWallet({ + networkId: 0, + key: { type: "mnemonic", words: TEST_MNEMONIC }, + }); + await wallet.init(); + const address = wallet.getPaymentAddress(); + + const currentSlot = slotConfig.timeToSlot(Date.now()); + + const provider = new ScalusEmulator( + [ + { + input: { + txHash: + "0000000000000000000000000000000000000000000000000000000000000000", + outputIndex: 0, + }, + output: { + address, + amount: [ + { unit: "lovelace", quantity: lovelacePerAddress.toString() }, + ], + }, + }, + ], + slotConfig, + ); + + provider.emulator.setSlot(currentSlot); + + const newTxBuilder = () => + new MeshTxBuilder({ + fetcher: provider, + submitter: provider, + evaluator: provider, + }); + + return { + wallet, + address, + provider, + emulator: provider.emulator, + slotConfig, + newTxBuilder, + }; +} + +describe("ScalusEmulator", () => { + describe("Basic payment lifecycle", () => { + it("should build, sign, submit and confirm a simple payment", async () => { + const { wallet, address, provider, newTxBuilder } = + await createTestSetup(); + + const utxos = await provider.fetchAddressUTxOs(address); + expect(utxos.length).toBeGreaterThan(0); + + const txHex = await newTxBuilder() + .txOut(address, [{ unit: "lovelace", quantity: "5000000" }]) + .changeAddress(address) + .selectUtxosFrom(utxos) + .complete(); + + const signedTx = await wallet.signTx(txHex); + const txHash = await provider.submitTx(signedTx); + expect(txHash).toBeDefined(); + expect(txHash.length).toBe(64); + }); + + it("should reflect UTxO changes after submission", async () => { + const { wallet, address, provider, newTxBuilder } = + await createTestSetup(); + + const utxosBefore = await provider.fetchAddressUTxOs(address); + const totalBefore = utxosBefore.reduce( + (sum, u) => + sum + + BigInt(u.output.amount.find((a) => a.unit === "lovelace")!.quantity), + 0n, + ); + + const txHex = await newTxBuilder() + .txOut(address, [{ unit: "lovelace", quantity: "3000000" }]) + .changeAddress(address) + .selectUtxosFrom(utxosBefore) + .complete(); + + const signedTx = await wallet.signTx(txHex); + await provider.submitTx(signedTx); + + const utxosAfter = await provider.fetchAddressUTxOs(address); + const totalAfter = utxosAfter.reduce( + (sum, u) => + sum + + BigInt(u.output.amount.find((a) => a.unit === "lovelace")!.quantity), + 0n, + ); + + expect(utxosAfter.length).toBeGreaterThan(0); + // Total should decrease by fees + expect(totalAfter).toBeLessThan(totalBefore); + expect(totalAfter).toBeGreaterThan(totalBefore - 1_000_000n); + }); + + it("should chain multiple transactions", async () => { + const { wallet, address, provider, newTxBuilder } = + await createTestSetup(); + + const utxos1 = await provider.fetchAddressUTxOs(address); + const txHex1 = await newTxBuilder() + .txOut(address, [{ unit: "lovelace", quantity: "2000000" }]) + .changeAddress(address) + .selectUtxosFrom(utxos1) + .complete(); + const signed1 = await wallet.signTx(txHex1); + const hash1 = await provider.submitTx(signed1); + + const utxos2 = await provider.fetchAddressUTxOs(address); + const txHex2 = await newTxBuilder() + .txOut(address, [{ unit: "lovelace", quantity: "2000000" }]) + .changeAddress(address) + .selectUtxosFrom(utxos2) + .complete(); + const signed2 = await wallet.signTx(txHex2); + const hash2 = await provider.submitTx(signed2); + + expect(hash1).not.toBe(hash2); + + const utxos3 = await provider.fetchAddressUTxOs(address); + expect(utxos3.length).toBeGreaterThan(0); + // Original UTxOs should be consumed + const utxo1Hashes = new Set(utxos1.map((u) => u.input.txHash)); + const utxo3Hashes = new Set(utxos3.map((u) => u.input.txHash)); + for (const h of utxo1Hashes) { + expect(utxo3Hashes.has(h)).toBe(false); + } + }); + }); + + describe("Native script minting", () => { + it("should mint tokens with a native script and verify UTxOs", async () => { + const { wallet, address, provider, newTxBuilder } = + await createTestSetup(); + + const keyHash = resolvePaymentKeyHash(address); + const nativeScript: NativeScript = { type: "sig", keyHash }; + const scriptCbor = resolveNativeScriptHex(nativeScript); + const policyId = resolveNativeScriptHash(nativeScript); + const tokenNameHex = Buffer.from("TestToken").toString("hex"); + const unit = policyId + tokenNameHex; + + const utxos = await provider.fetchAddressUTxOs(address); + + const txHex = await newTxBuilder() + .mint("1000", policyId, tokenNameHex) + .mintingScript(scriptCbor) + .txOut(address, [ + { unit: "lovelace", quantity: "2000000" }, + { unit, quantity: "1000" }, + ]) + .changeAddress(address) + .selectUtxosFrom(utxos) + .complete(); + + const signedTx = await wallet.signTx(txHex); + const txHash = await provider.submitTx(signedTx); + expect(txHash.length).toBe(64); + + const utxosAfter = await provider.fetchAddressUTxOs(address); + const tokenUtxo = utxosAfter.find((u) => + u.output.amount.some((a) => a.unit === unit), + ); + expect(tokenUtxo).toBeDefined(); + expect( + tokenUtxo!.output.amount.find((a) => a.unit === unit)!.quantity, + ).toBe("1000"); + }); + + it("should mint and then burn tokens", async () => { + const { wallet, address, provider, newTxBuilder } = + await createTestSetup(); + + const keyHash = resolvePaymentKeyHash(address); + const nativeScript: NativeScript = { type: "sig", keyHash }; + const scriptCbor = resolveNativeScriptHex(nativeScript); + const policyId = resolveNativeScriptHash(nativeScript); + const tokenNameHex = Buffer.from("BurnToken").toString("hex"); + const unit = policyId + tokenNameHex; + + // Step 1: Mint + const utxos = await provider.fetchAddressUTxOs(address); + const mintTxHex = await newTxBuilder() + .mint("1000", policyId, tokenNameHex) + .mintingScript(scriptCbor) + .txOut(address, [ + { unit: "lovelace", quantity: "2000000" }, + { unit, quantity: "1000" }, + ]) + .changeAddress(address) + .selectUtxosFrom(utxos) + .complete(); + + const signedMint = await wallet.signTx(mintTxHex); + await provider.submitTx(signedMint); + + // Step 2: Burn half + const utxosAfterMint = await provider.fetchAddressUTxOs(address); + const tokenUtxo = utxosAfterMint.find((u) => + u.output.amount.some((a) => a.unit === unit), + ); + expect(tokenUtxo).toBeDefined(); + + const burnTxHex = await newTxBuilder() + .mint("-500", policyId, tokenNameHex) + .mintingScript(scriptCbor) + .txIn( + tokenUtxo!.input.txHash, + tokenUtxo!.input.outputIndex, + tokenUtxo!.output.amount, + tokenUtxo!.output.address, + ) + .txOut(address, [ + { unit: "lovelace", quantity: "2000000" }, + { unit, quantity: "500" }, + ]) + .changeAddress(address) + .selectUtxosFrom( + utxosAfterMint.filter( + (u) => + u.input.txHash !== tokenUtxo!.input.txHash || + u.input.outputIndex !== tokenUtxo!.input.outputIndex, + ), + ) + .complete(); + + const signedBurn = await wallet.signTx(burnTxHex); + await provider.submitTx(signedBurn); + + // Step 3: Verify remaining + const utxosFinal = await provider.fetchAddressUTxOs(address); + let totalTokens = 0n; + for (const u of utxosFinal) { + const tokenAsset = u.output.amount.find((a) => a.unit === unit); + if (tokenAsset) totalTokens += BigInt(tokenAsset.quantity); + } + expect(totalTokens).toBe(500n); + }); + }); + + describe("Plutus script evaluation", () => { + it("should evaluate and submit a plutus minting transaction", async () => { + const { wallet, address, provider, newTxBuilder } = + await createTestSetup(); + + const policyId = resolveScriptHash(alwaysSucceedCbor, "V3"); + const tokenNameHex = Buffer.from("PlutusToken").toString("hex"); + const unit = policyId + tokenNameHex; + + const utxos = await provider.fetchAddressUTxOs(address); + + const txHex = await newTxBuilder() + .mintPlutusScriptV3() + .mint("100", policyId, tokenNameHex) + .mintRedeemerValue("") + .mintingScript(alwaysSucceedCbor) + .txInCollateral( + utxos[0]!.input.txHash, + utxos[0]!.input.outputIndex, + utxos[0]!.output.amount, + utxos[0]!.output.address, + ) + .txOut(address, [ + { unit: "lovelace", quantity: "2000000" }, + { unit, quantity: "100" }, + ]) + .changeAddress(address) + .selectUtxosFrom(utxos) + .complete(); + + const signedTx = await wallet.signTx(txHex); + const txHash = await provider.submitTx(signedTx); + expect(txHash.length).toBe(64); + + const utxosAfter = await provider.fetchAddressUTxOs(address); + const tokenUtxo = utxosAfter.find((u) => + u.output.amount.some((a) => a.unit === unit), + ); + expect(tokenUtxo).toBeDefined(); + expect( + tokenUtxo!.output.amount.find((a) => a.unit === unit)!.quantity, + ).toBe("100"); + }); + + it("should evaluate a plutus spending transaction", async () => { + const { wallet, address, provider, newTxBuilder, emulator } = + await createTestSetup(); + + const policyId = resolveScriptHash(alwaysSucceedCbor, "V3"); + const tokenNameHex = Buffer.from("SpendTest").toString("hex"); + const unit = policyId + tokenNameHex; + + const utxos = await provider.fetchAddressUTxOs(address); + + // Step 1: Mint tokens using plutus script + const mintTxHex = await newTxBuilder() + .mintPlutusScriptV3() + .mint("50", policyId, tokenNameHex) + .mintRedeemerValue("") + .mintingScript(alwaysSucceedCbor) + .txInCollateral( + utxos[0]!.input.txHash, + utxos[0]!.input.outputIndex, + utxos[0]!.output.amount, + utxos[0]!.output.address, + ) + .txOut(address, [ + { unit: "lovelace", quantity: "2000000" }, + { unit, quantity: "50" }, + ]) + .changeAddress(address) + .selectUtxosFrom(utxos) + .complete(); + const signedMint = await wallet.signTx(mintTxHex); + const mintHash = await provider.submitTx(signedMint); + expect(mintHash.length).toBe(64); + + // Step 2: Verify the minted tokens via fetchUTxOs + const mintedUtxos = await provider.fetchUTxOs(mintHash); + expect(mintedUtxos.length).toBeGreaterThan(0); + const tokenOutput = mintedUtxos.find((u) => + u.output.amount.some((a) => a.unit === unit), + ); + expect(tokenOutput).toBeDefined(); + }); + }); + + describe("Validity intervals", () => { + it("should build and submit a transaction with TTL", async () => { + const { wallet, address, provider, newTxBuilder, slotConfig } = + await createTestSetup(); + + const currentSlot = slotConfig.timeToSlot(Date.now()); + const ttlSlot = currentSlot + 300; + + const utxos = await provider.fetchAddressUTxOs(address); + + const txHex = await newTxBuilder() + .txOut(address, [{ unit: "lovelace", quantity: "2000000" }]) + .invalidHereafter(ttlSlot) + .changeAddress(address) + .selectUtxosFrom(utxos) + .complete(); + + const signedTx = await wallet.signTx(txHex); + const txHash = await provider.submitTx(signedTx); + expect(txHash.length).toBe(64); + }); + + it("should build and submit with both validity bounds", async () => { + const { wallet, address, provider, newTxBuilder, slotConfig } = + await createTestSetup(); + + const currentSlot = slotConfig.timeToSlot(Date.now()); + const validFrom = currentSlot - 10; + const validTo = currentSlot + 300; + + const utxos = await provider.fetchAddressUTxOs(address); + + const txHex = await newTxBuilder() + .txOut(address, [{ unit: "lovelace", quantity: "2000000" }]) + .invalidBefore(validFrom) + .invalidHereafter(validTo) + .changeAddress(address) + .selectUtxosFrom(utxos) + .complete(); + + const signedTx = await wallet.signTx(txHex); + const txHash = await provider.submitTx(signedTx); + expect(txHash.length).toBe(64); + }); + + it("should reject an expired transaction", async () => { + const { wallet, address, provider, newTxBuilder, slotConfig } = + await createTestSetup(); + + const currentSlot = slotConfig.timeToSlot(Date.now()); + const expiredSlot = currentSlot - 100; + + const utxos = await provider.fetchAddressUTxOs(address); + + const txHex = await newTxBuilder() + .txOut(address, [{ unit: "lovelace", quantity: "2000000" }]) + .invalidHereafter(expiredSlot) + .changeAddress(address) + .selectUtxosFrom(utxos) + .complete(); + + const signedTx = await wallet.signTx(txHex); + await expect(provider.submitTx(signedTx)).rejects.toThrow(); + }); + + it("should reject a transaction before validity start", async () => { + const { wallet, address, provider, newTxBuilder, slotConfig } = + await createTestSetup(); + + const currentSlot = slotConfig.timeToSlot(Date.now()); + const futureStart = currentSlot + 300; + const futureTtl = currentSlot + 600; + + const utxos = await provider.fetchAddressUTxOs(address); + + const txHex = await newTxBuilder() + .txOut(address, [{ unit: "lovelace", quantity: "2000000" }]) + .invalidBefore(futureStart) + .invalidHereafter(futureTtl) + .changeAddress(address) + .selectUtxosFrom(utxos) + .complete(); + + const signedTx = await wallet.signTx(txHex); + await expect(provider.submitTx(signedTx)).rejects.toThrow(); + }); + }); + + describe("Transaction composition", () => { + it("should build a transaction with multiple outputs", async () => { + const { wallet, address, provider, newTxBuilder } = + await createTestSetup(); + + const utxos = await provider.fetchAddressUTxOs(address); + + const txHex = await newTxBuilder() + .txOut(address, [{ unit: "lovelace", quantity: "2000000" }]) + .txOut(address, [{ unit: "lovelace", quantity: "3000000" }]) + .txOut(address, [{ unit: "lovelace", quantity: "4000000" }]) + .changeAddress(address) + .selectUtxosFrom(utxos) + .complete(); + + const signedTx = await wallet.signTx(txHex); + const txHash = await provider.submitTx(signedTx); + expect(txHash.length).toBe(64); + + const utxosAfter = await provider.fetchAddressUTxOs(address); + const amounts = utxosAfter.map((u) => + BigInt(u.output.amount.find((a) => a.unit === "lovelace")!.quantity), + ); + expect(amounts.filter((a) => a === 2_000_000n).length).toBeGreaterThan(0); + expect(amounts.filter((a) => a === 3_000_000n).length).toBeGreaterThan(0); + expect(amounts.filter((a) => a === 4_000_000n).length).toBeGreaterThan(0); + }); + + it("should combine minting and payment in a single transaction", async () => { + const { wallet, address, provider, newTxBuilder } = + await createTestSetup(); + + const keyHash = resolvePaymentKeyHash(address); + const nativeScript: NativeScript = { type: "sig", keyHash }; + const scriptCbor = resolveNativeScriptHex(nativeScript); + const policyId = resolveNativeScriptHash(nativeScript); + const tokenNameHex = Buffer.from("ComboToken").toString("hex"); + const unit = policyId + tokenNameHex; + + const utxos = await provider.fetchAddressUTxOs(address); + + const txHex = await newTxBuilder() + .mint("777", policyId, tokenNameHex) + .mintingScript(scriptCbor) + .txOut(address, [ + { unit: "lovelace", quantity: "5000000" }, + { unit, quantity: "777" }, + ]) + .txOut(address, [{ unit: "lovelace", quantity: "3000000" }]) + .changeAddress(address) + .selectUtxosFrom(utxos) + .complete(); + + const signedTx = await wallet.signTx(txHex); + const txHash = await provider.submitTx(signedTx); + expect(txHash.length).toBe(64); + + const utxosAfter = await provider.fetchAddressUTxOs(address); + const tokenUtxo = utxosAfter.find((u) => + u.output.amount.some((a) => a.unit === unit), + ); + expect(tokenUtxo).toBeDefined(); + expect( + tokenUtxo!.output.amount.find((a) => a.unit === unit)!.quantity, + ).toBe("777"); + }); + + it("should build a transaction with metadata", async () => { + const { wallet, address, provider, newTxBuilder } = + await createTestSetup(); + + const utxos = await provider.fetchAddressUTxOs(address); + + const txHex = await newTxBuilder() + .txOut(address, [{ unit: "lovelace", quantity: "2000000" }]) + .metadataValue(674, "Hello from ScalusEmulator test") + .changeAddress(address) + .selectUtxosFrom(utxos) + .complete(); + + const signedTx = await wallet.signTx(txHex); + const txHash = await provider.submitTx(signedTx); + expect(txHash.length).toBe(64); + }); + }); + + describe("Error handling", () => { + it("should reject a transaction with insufficient funds", async () => { + const { wallet, address, provider, newTxBuilder } = + await createTestSetup(5_000_000n); + + const utxos = await provider.fetchAddressUTxOs(address); + + await expect( + newTxBuilder() + .txOut(address, [{ unit: "lovelace", quantity: "100000000000" }]) + .changeAddress(address) + .selectUtxosFrom(utxos) + .complete(), + ).rejects.toThrow(); + }); + + it("should reject submitting an unsigned transaction", async () => { + const { address, provider, newTxBuilder } = await createTestSetup(); + + const utxos = await provider.fetchAddressUTxOs(address); + + const txHex = await newTxBuilder() + .txOut(address, [{ unit: "lovelace", quantity: "2000000" }]) + .changeAddress(address) + .selectUtxosFrom(utxos) + .complete(); + + await expect(provider.submitTx(txHex)).rejects.toThrow(); + }); + + it("should throw on unsupported fetcher methods", async () => { + const { provider } = await createTestSetup(); + + await expect(provider.fetchAccountInfo("addr_test1...")).rejects.toThrow( + "not supported", + ); + await expect(provider.fetchBlockInfo("abc")).rejects.toThrow( + "not supported", + ); + await expect(provider.fetchTxInfo("abc")).rejects.toThrow( + "not supported", + ); + }); + }); + + describe("UTxO querying", () => { + it("should fetch UTxOs by transaction hash after submission", async () => { + const { wallet, address, provider, newTxBuilder } = + await createTestSetup(); + + const utxos = await provider.fetchAddressUTxOs(address); + + const txHex = await newTxBuilder() + .txOut(address, [{ unit: "lovelace", quantity: "7000000" }]) + .changeAddress(address) + .selectUtxosFrom(utxos) + .complete(); + + const signedTx = await wallet.signTx(txHex); + const txHash = await provider.submitTx(signedTx); + + const txUtxos = await provider.fetchUTxOs(txHash); + expect(txUtxos.length).toBeGreaterThan(0); + expect(txUtxos.every((u) => u.input.txHash === txHash)).toBe(true); + + const has7Ada = txUtxos.some((u) => + u.output.amount.some( + (a) => a.unit === "lovelace" && a.quantity === "7000000", + ), + ); + expect(has7Ada).toBe(true); + }); + + it("should filter UTxOs by asset unit", async () => { + const { wallet, address, provider, newTxBuilder } = + await createTestSetup(); + + const keyHash = resolvePaymentKeyHash(address); + const nativeScript: NativeScript = { type: "sig", keyHash }; + const scriptCbor = resolveNativeScriptHex(nativeScript); + const policyId = resolveNativeScriptHash(nativeScript); + const tokenNameHex = Buffer.from("FilterToken").toString("hex"); + const unit = policyId + tokenNameHex; + + const utxos = await provider.fetchAddressUTxOs(address); + + const txHex = await newTxBuilder() + .mint("200", policyId, tokenNameHex) + .mintingScript(scriptCbor) + .txOut(address, [ + { unit: "lovelace", quantity: "2000000" }, + { unit, quantity: "200" }, + ]) + .changeAddress(address) + .selectUtxosFrom(utxos) + .complete(); + + const signedTx = await wallet.signTx(txHex); + await provider.submitTx(signedTx); + + const allUtxos = await provider.fetchAddressUTxOs(address); + const filteredUtxos = await provider.fetchAddressUTxOs(address, unit); + + expect(filteredUtxos.length).toBeLessThan(allUtxos.length); + expect(filteredUtxos.length).toBe(1); + expect( + filteredUtxos[0]!.output.amount.find((a) => a.unit === unit)!.quantity, + ).toBe("200"); + }); + + it("should allow inputting additional UTxOs for script evaluation", async () => { + const { address, provider, emulator } = await createTestSetup(); + + const policyId = resolveScriptHash(alwaysSucceedCbor, "V3"); + const tokenNameHex = Buffer.from("SpendTest").toString("hex"); + const unit = policyId + tokenNameHex; + + const utxos = await provider.fetchAddressUTxOs(address); + const testUtxo: UTxO = { + input: { + txHash: + "ffe00432c78714fbd9c1784a6b574b0b11bd7c9dedb305aa7f55593505607539", + outputIndex: 0, + }, + output: { + address, + amount: [{ unit: "lovelace", quantity: "2000000" }], + }, + }; + // Step 1: Mint tokens using plutus script + const mintTxHex = await new MeshTxBuilder({ + fetcher: provider, + }) + .txIn( + testUtxo.input.txHash, + testUtxo.input.outputIndex, + testUtxo.output.amount, + testUtxo.output.address, + 0, + ) + .mintPlutusScriptV3() + .mint("50", policyId, tokenNameHex) + .mintRedeemerValue("") + .mintingScript(alwaysSucceedCbor) + .txInCollateral( + utxos[0]!.input.txHash, + utxos[0]!.input.outputIndex, + utxos[0]!.output.amount, + utxos[0]!.output.address, + ) + .setFee("2000000") + .txOut(address, [ + { unit: "lovelace", quantity: "2000000" }, + { unit, quantity: "50" }, + ]) + .changeAddress(address) + .selectUtxosFrom(utxos) + .complete(); + const evaluateResult = await provider.evaluateTx(mintTxHex, [testUtxo]); + expect(evaluateResult).toEqual([ + { + tag: "MINT", + index: 0, + budget: { mem: 2001, steps: 380149 }, + }, + ]); + }); + }); +}); diff --git a/packages/mesh-scalus-emulator/tsconfig.json b/packages/mesh-scalus-emulator/tsconfig.json new file mode 100644 index 000000000..a4826e086 --- /dev/null +++ b/packages/mesh-scalus-emulator/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "@meshsdk/configs/typescript/base.json", + "include": ["jest.config.ts", "src/**/*", "test/**/*"], + "exclude": ["dist", "node_modules"] +} diff --git a/packages/mesh-transaction/package.json b/packages/mesh-transaction/package.json index 53beec8c7..e9c9db58b 100644 --- a/packages/mesh-transaction/package.json +++ b/packages/mesh-transaction/package.json @@ -37,6 +37,7 @@ "dependencies": { "@meshsdk/common": "1.9.0", "@meshsdk/core-cst": "1.9.0", + "@meshsdk/scalus-emulator": "1.9.0", "@cardano-sdk/core": "0.46.12", "@cardano-sdk/util": "0.17.1", "@cardano-sdk/input-selection": "0.14.28", From e925bfe918cc8b3ca0c3f7923de98b2b9841f2a7 Mon Sep 17 00:00:00 2001 From: twwu123 Date: Thu, 18 Jun 2026 20:25:24 +0900 Subject: [PATCH 2/7] clean up log --- packages/mesh-transaction/src/mesh-tx-builder/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/mesh-transaction/src/mesh-tx-builder/index.ts b/packages/mesh-transaction/src/mesh-tx-builder/index.ts index 718c09bbd..b8c1df9b1 100644 --- a/packages/mesh-transaction/src/mesh-tx-builder/index.ts +++ b/packages/mesh-transaction/src/mesh-tx-builder/index.ts @@ -131,7 +131,6 @@ export class MeshTxBuilder extends MeshTxBuilderCore { ]; if (this.fetcher) { try { - console.log("fetching cost models from fetcher..."); const costModels = await this.fetcher.fetchCostModels(); if (Array.isArray(costModels) && costModels.length > 0) { this.meshTxBuilderBody.network = costModels; From 5dc1ecc0f7f662177ddf1653b33ce75d0c01b719 Mon Sep 17 00:00:00 2001 From: twwu123 Date: Thu, 18 Jun 2026 20:48:39 +0900 Subject: [PATCH 3/7] set slot to current time by default and update tests --- packages/mesh-scalus-emulator/src/index.ts | 17 +++++++++++------ .../mesh-scalus-emulator/test/index.test.ts | 16 ++++++---------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/packages/mesh-scalus-emulator/src/index.ts b/packages/mesh-scalus-emulator/src/index.ts index 281e40f99..1364790e2 100644 --- a/packages/mesh-scalus-emulator/src/index.ts +++ b/packages/mesh-scalus-emulator/src/index.ts @@ -1,8 +1,7 @@ // Use `import type` for scalus types, `require()` at runtime since scalus is CJS -import type { Scalus, SlotConfig, SubmitResult } from "scalus"; import { bech32 } from "@scure/base"; import cbor from "cbor"; -import { Emulator } from "scalus"; +import { Emulator, Scalus, SlotConfig, SubmitResult } from "scalus"; import type { AccountInfo, @@ -15,6 +14,7 @@ import type { IFetcher, IFetcherOptions, ISubmitter, + SlotConfig as MeshSlotConfig, Protocol, TransactionInfo, UTxO, @@ -52,7 +52,7 @@ export class ScalusEmulator implements IFetcher, ISubmitter, IEvaluator { constructor( initialUtxos: UTxO[], - slotConfig: SlotConfig, + slotConfig: MeshSlotConfig, options?: { protocolParams?: Protocol; costModels?: { @@ -62,12 +62,17 @@ export class ScalusEmulator implements IFetcher, ISubmitter, IEvaluator { }; }, ) { + const scalusSlotConfig = new SlotConfig( + slotConfig.zeroTime, + slotConfig.zeroSlot, + slotConfig.slotLength, + ); this.emulator = new Emulator( Buffer.from(utxosToCborMap(initialUtxos), "hex"), - slotConfig, + scalusSlotConfig, ); - - this.slotConfig = slotConfig; + this.slotConfig = scalusSlotConfig; + this.emulator.setSlot(scalusSlotConfig.timeToSlot(Date.now())); this.protocolParams = options?.protocolParams ?? DEFAULT_PROTOCOL_PARAMETERS; this.costModels = [ diff --git a/packages/mesh-scalus-emulator/test/index.test.ts b/packages/mesh-scalus-emulator/test/index.test.ts index e41eebb86..0620a5748 100644 --- a/packages/mesh-scalus-emulator/test/index.test.ts +++ b/packages/mesh-scalus-emulator/test/index.test.ts @@ -8,9 +8,10 @@ import { resolveNativeScriptHex, resolvePaymentKeyHash, resolveScriptHash, + SLOT_CONFIG_NETWORK, UTxO, } from "@meshsdk/core"; -import { AppWallet } from "@meshsdk/wallet"; +import { MeshWallet } from "@meshsdk/wallet"; import { ScalusEmulator } from "../src"; @@ -46,15 +47,12 @@ const alwaysSucceedCbor = applyCborEncoding( ); async function createTestSetup(lovelacePerAddress = 10_000_000_000n) { - const slotConfig = SlotConfig.preview; - const wallet = new AppWallet({ + const wallet = new MeshWallet({ networkId: 0, key: { type: "mnemonic", words: TEST_MNEMONIC }, }); await wallet.init(); - const address = wallet.getPaymentAddress(); - - const currentSlot = slotConfig.timeToSlot(Date.now()); + const address = (await wallet.getChangeAddress())!; const provider = new ScalusEmulator( [ @@ -72,11 +70,9 @@ async function createTestSetup(lovelacePerAddress = 10_000_000_000n) { }, }, ], - slotConfig, + SLOT_CONFIG_NETWORK["preview"], ); - provider.emulator.setSlot(currentSlot); - const newTxBuilder = () => new MeshTxBuilder({ fetcher: provider, @@ -89,7 +85,7 @@ async function createTestSetup(lovelacePerAddress = 10_000_000_000n) { address, provider, emulator: provider.emulator, - slotConfig, + slotConfig: SlotConfig.preview, newTxBuilder, }; } From 8e122847e1b7b53f19c533a98361f514f1503250 Mon Sep 17 00:00:00 2001 From: twwu123 Date: Thu, 18 Jun 2026 20:51:49 +0900 Subject: [PATCH 4/7] remove setting slot by default and add endpoint instead --- packages/mesh-scalus-emulator/src/index.ts | 5 ++++- packages/mesh-scalus-emulator/test/index.test.ts | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/mesh-scalus-emulator/src/index.ts b/packages/mesh-scalus-emulator/src/index.ts index 1364790e2..8556d6e75 100644 --- a/packages/mesh-scalus-emulator/src/index.ts +++ b/packages/mesh-scalus-emulator/src/index.ts @@ -72,7 +72,6 @@ export class ScalusEmulator implements IFetcher, ISubmitter, IEvaluator { scalusSlotConfig, ); this.slotConfig = scalusSlotConfig; - this.emulator.setSlot(scalusSlotConfig.timeToSlot(Date.now())); this.protocolParams = options?.protocolParams ?? DEFAULT_PROTOCOL_PARAMETERS; this.costModels = [ @@ -172,6 +171,10 @@ export class ScalusEmulator implements IFetcher, ISubmitter, IEvaluator { throw new Error("get not supported by ScalusEmulator"); } + async setSlot(slot: number): Promise { + this.emulator.setSlot(slot); + } + // --------------------------------------------------------------------------- // ISubmitter // --------------------------------------------------------------------------- diff --git a/packages/mesh-scalus-emulator/test/index.test.ts b/packages/mesh-scalus-emulator/test/index.test.ts index 0620a5748..65e024390 100644 --- a/packages/mesh-scalus-emulator/test/index.test.ts +++ b/packages/mesh-scalus-emulator/test/index.test.ts @@ -72,6 +72,8 @@ async function createTestSetup(lovelacePerAddress = 10_000_000_000n) { ], SLOT_CONFIG_NETWORK["preview"], ); + const slotConfig = SlotConfig.preview; + await provider.setSlot(slotConfig.timeToSlot(Date.now())); const newTxBuilder = () => new MeshTxBuilder({ @@ -85,7 +87,7 @@ async function createTestSetup(lovelacePerAddress = 10_000_000_000n) { address, provider, emulator: provider.emulator, - slotConfig: SlotConfig.preview, + slotConfig, newTxBuilder, }; } From 8575b53be2ebaee5b6e433018fb0280a65008c87 Mon Sep 17 00:00:00 2001 From: twwu123 Date: Fri, 19 Jun 2026 11:17:45 +0900 Subject: [PATCH 5/7] use mesh slot configs for tests --- packages/mesh-scalus-emulator/test/index.test.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/mesh-scalus-emulator/test/index.test.ts b/packages/mesh-scalus-emulator/test/index.test.ts index 65e024390..e4d795ee4 100644 --- a/packages/mesh-scalus-emulator/test/index.test.ts +++ b/packages/mesh-scalus-emulator/test/index.test.ts @@ -9,6 +9,7 @@ import { resolvePaymentKeyHash, resolveScriptHash, SLOT_CONFIG_NETWORK, + unixTimeToEnclosingSlot, UTxO, } from "@meshsdk/core"; import { MeshWallet } from "@meshsdk/wallet"; @@ -72,8 +73,9 @@ async function createTestSetup(lovelacePerAddress = 10_000_000_000n) { ], SLOT_CONFIG_NETWORK["preview"], ); - const slotConfig = SlotConfig.preview; - await provider.setSlot(slotConfig.timeToSlot(Date.now())); + await provider.setSlot( + unixTimeToEnclosingSlot(Date.now(), SLOT_CONFIG_NETWORK["preview"]), + ); const newTxBuilder = () => new MeshTxBuilder({ @@ -87,7 +89,7 @@ async function createTestSetup(lovelacePerAddress = 10_000_000_000n) { address, provider, emulator: provider.emulator, - slotConfig, + slotConfig: SLOT_CONFIG_NETWORK["preview"], newTxBuilder, }; } @@ -385,7 +387,7 @@ describe("ScalusEmulator", () => { const { wallet, address, provider, newTxBuilder, slotConfig } = await createTestSetup(); - const currentSlot = slotConfig.timeToSlot(Date.now()); + const currentSlot = unixTimeToEnclosingSlot(Date.now(), slotConfig); const ttlSlot = currentSlot + 300; const utxos = await provider.fetchAddressUTxOs(address); @@ -406,7 +408,7 @@ describe("ScalusEmulator", () => { const { wallet, address, provider, newTxBuilder, slotConfig } = await createTestSetup(); - const currentSlot = slotConfig.timeToSlot(Date.now()); + const currentSlot = unixTimeToEnclosingSlot(Date.now(), slotConfig); const validFrom = currentSlot - 10; const validTo = currentSlot + 300; @@ -429,7 +431,7 @@ describe("ScalusEmulator", () => { const { wallet, address, provider, newTxBuilder, slotConfig } = await createTestSetup(); - const currentSlot = slotConfig.timeToSlot(Date.now()); + const currentSlot = unixTimeToEnclosingSlot(Date.now(), slotConfig); const expiredSlot = currentSlot - 100; const utxos = await provider.fetchAddressUTxOs(address); @@ -449,7 +451,7 @@ describe("ScalusEmulator", () => { const { wallet, address, provider, newTxBuilder, slotConfig } = await createTestSetup(); - const currentSlot = slotConfig.timeToSlot(Date.now()); + const currentSlot = unixTimeToEnclosingSlot(Date.now(), slotConfig); const futureStart = currentSlot + 300; const futureTtl = currentSlot + 600; From 2427dfb907e22d0dbc3225ddb4b43dcc44568ad3 Mon Sep 17 00:00:00 2001 From: twwu123 Date: Fri, 19 Jun 2026 17:03:12 +0900 Subject: [PATCH 6/7] 1.9.1 --- package-lock.json | 378 +++++++++++---------- packages/mesh-common/package.json | 2 +- packages/mesh-contract/package.json | 6 +- packages/mesh-core-csl/package.json | 4 +- packages/mesh-core-cst/package.json | 4 +- packages/mesh-core/package.json | 10 +- packages/mesh-scalus-emulator/package.json | 6 +- packages/mesh-transaction/package.json | 6 +- packages/mesh-wallet/package.json | 8 +- scripts/bump-version.sh | 8 +- scripts/mesh-cli/package.json | 2 +- 11 files changed, 232 insertions(+), 202 deletions(-) diff --git a/package-lock.json b/package-lock.json index 80fa5a622..103679bb9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2290,9 +2290,9 @@ "license": "MIT" }, "node_modules/@libp2p/interface": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-3.2.3.tgz", - "integrity": "sha512-OKZFrY+x8IYl4Fr/YWjh4s6+uks5zQBIAdg2cl+zaRUpPORfk1ELI4r+eB+fUlXR9mHDsQylSSzmAqi0drDfiA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-3.2.4.tgz", + "integrity": "sha512-o/ZMbsplniVQhz0AW1CinZcfZPEfr7ttu4w7aivrFAs6xDpnJYmN3FTeEgTt93EHs+AEOcIT76V3KMFDZmIEcQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "@multiformats/dns": "^1.0.6", @@ -2300,7 +2300,7 @@ "main-event": "^1.0.1", "multiformats": "^14.0.0", "progress-events": "^1.1.0", - "uint8arraylist": "^2.4.8" + "uint8arraylist": "^3.0.2" } }, "node_modules/@libp2p/interface/node_modules/@multiformats/multiaddr": { @@ -2331,15 +2331,6 @@ "uint8arrays": "^6.1.0" } }, - "node_modules/@libp2p/interface/node_modules/uint8-varint/node_modules/uint8arraylist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/uint8arraylist/-/uint8arraylist-3.0.2.tgz", - "integrity": "sha512-LDVoq9BQaGJzGDUovEnoX6rpKCvnY/Jbtws4ikwnBzjRbq5qBAFpBZevUEbSmMM87aO0Sp+wOZy2ZXf5yODmXQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "uint8arrays": "^6.0.0" - } - }, "node_modules/@libp2p/interface/node_modules/uint8arrays": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-6.1.1.tgz", @@ -2836,9 +2827,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.61.1.tgz", - "integrity": "sha512-JnBB8MdXj45cajvTuO5FmPlvFVJRQgvrz1uSEl3NwqFnReAPGwb8EanbGi4z2nRaqLzjJSv5/JmycoTKlRZxHA==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.0.tgz", + "integrity": "sha512-IPIQ55ythEHkfEd9jMEi32OQ7SxURsGA43JI22lj01OLZNt2NUbJX8YUHxkVWyQ6daHPNn0truF5nSj3DQp6YQ==", "cpu": [ "arm" ], @@ -2850,9 +2841,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.61.1.tgz", - "integrity": "sha512-Jx2g7iSjw4AOT0HDPHM9RV3GNjRXwybWtSFZiZAYUTjUwjVrYIwq3kBf+LnhqJlzXFAqTAh2F7IGI+O568exPw==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.0.tgz", + "integrity": "sha512-M6s9cr10MibETyo8JsOkq+Lo1+lU6hcvb1MApnUql5qte/5hMEgzlN8/ReIKNfRV8rrqX50W1BX9zoUhC192RA==", "cpu": [ "arm64" ], @@ -2864,9 +2855,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.61.1.tgz", - "integrity": "sha512-0F1L/Z3Eqv8mT2n3dCpeO8GcTvHvVqkP5/t6DMsn0KzhYVcg+s7Ncl5DS8qjKYEeio6Az0Gt6nyBORay5qIlCA==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.0.tgz", + "integrity": "sha512-BqCoMoIbn0keKys+dEAdBa70EtOwV1bEsQCUgU9FdiZmmMge/Zk7LlkYGqbrdHR+Frnt0E1FOanly+rlwvvQzw==", "cpu": [ "arm64" ], @@ -2878,9 +2869,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.61.1.tgz", - "integrity": "sha512-qLttcH871ujY4YcVfUSShhOw+CsoTatYz8gRbHO7Bb92QH059/P0y5do1KMs41fY0BpD2x4AJH/gID0zFiqVKQ==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.0.tgz", + "integrity": "sha512-SIMzST3VFNXDAbeIWDWiFCNM5qncUBDWaEV7NfE7oZbDt2mgfW4MvbKdbYiGOLoM32gbTv608UMd0XktEYSD7w==", "cpu": [ "x64" ], @@ -2892,9 +2883,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.61.1.tgz", - "integrity": "sha512-fUI4RapGE0Oh3mb8mgfvC1O2nU1RpDZUKnDQm3xB1Ipg7C2wTs5Kstz7G2uWK99a8S2yTMq8/P4uycwNa0nJyw==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.0.tgz", + "integrity": "sha512-ezjfSQMP7ArdUsbBwbQIfwAlhE84I2iVnzQNCFSveqV42q+BmKlzVpf7mxv5EchLcoWU4y6/heFzVg1F+hodUQ==", "cpu": [ "arm64" ], @@ -2906,9 +2897,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.61.1.tgz", - "integrity": "sha512-H5YrdvJaDtI/U9/emrD4b++xkvp3y/JvOe4rizHbxvkyMfRS/CiRYdji+Pl8D0brEaNFWUh1drQxgAGIl6Xudw==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.0.tgz", + "integrity": "sha512-9+qTWGW9AZRhnUgwtTwzNwcPlL87ngkeN0LA+q1bADvmY9aNvWaF2TFW8BZgnQPYxpDI7+rMVLivcd4V737TAQ==", "cpu": [ "x64" ], @@ -2920,9 +2911,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.61.1.tgz", - "integrity": "sha512-Q8CBCCQtDFrYtXoeUXSrnFXKOnyUhx6bz+SkL6A0E7V8kAiCJ5pamq1WtbfpVGhR5TSpXY6ak3avmDc5fHTyJA==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.0.tgz", + "integrity": "sha512-T1dMEQhXA/jkJ/jyMIw9IovK8bSUq7A8kLIlvZTb/6YIVsp2zLavr4F3oyllHWo7eIVJRyE5n3tUjQJEbE1IuQ==", "cpu": [ "arm" ], @@ -2934,9 +2925,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.61.1.tgz", - "integrity": "sha512-nwnhk1581l0FBVellGcVCAT0Oi06onEA3WB53sf01VO3I0UPBkMH9sXONYME2K0ovXcNayJfNtHfm6mpJElatQ==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.0.tgz", + "integrity": "sha512-2as0LgT7qQpyceQq6VUJYnumUMUrgGQCWIiDIN9DE0/tglsk6o66uCB4f3djRawAltvfCNLyZZrsqbPA6inCsA==", "cpu": [ "arm" ], @@ -2948,9 +2939,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.61.1.tgz", - "integrity": "sha512-x5Xr49hwt3hdW75UOZm3395YwwzPyauktslv29KpWL/T+vVAzoT3azLcTWv0eMciBNrx+DYjH4paehHoLpPvpg==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.0.tgz", + "integrity": "sha512-bVURMg+6eNN9C/yc0aVjooZcwTTtYF4YW3xta5pP0//r3o1V8gXEHXWCndj47w/HhwsFroZrFhR+6uQP5T0n0g==", "cpu": [ "arm64" ], @@ -2962,9 +2953,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.61.1.tgz", - "integrity": "sha512-unMS3H73DpaoPyyEVPjGKleM/s0mkmsauTENpw4INQY8y4+IuLNjkueQ5QCtC0D3N38Y38yhAU8OoZ20S2Tm6w==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.0.tgz", + "integrity": "sha512-Ful8pM/2yYI83PViWdFdpZhdI8HJ5qsXANe5atypbHDf+KIBBDsZsbyy8hbXnULVvW9NsTh5DHwbcBftyLTfiw==", "cpu": [ "arm64" ], @@ -2976,9 +2967,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.61.1.tgz", - "integrity": "sha512-zNZzGRnAhwjFEYmvphJRV5XaQGjs62cCmeYYHUT//NbvEnHauw+I85nGG+SiVg5ld4GX8D1IbKIX+ozITQnhMQ==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.0.tgz", + "integrity": "sha512-9Gp/DgrkzfUBmNPVTyPTvay+4xEP7M/clXpj3efXBcm6uTIVIgDg4rqUpqKXvLEuFRVuEpSAOkhgNeecvaZ4Cg==", "cpu": [ "loong64" ], @@ -2990,9 +2981,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.61.1.tgz", - "integrity": "sha512-LdpWGL8X209B2SIvWjqlc8VZgM6PKfontSerGepuldQmHYrAOtnMCXeJkxXGbC+PPZVOuu5czJo7fNV6aeW8rQ==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.0.tgz", + "integrity": "sha512-m9tsJz54LUXkSYM8+8PG81B9IKK5r+2T0clMq4QrS16xFosufU7firBDAZEsDheDs7wTlP7h3++S7lMsU955HA==", "cpu": [ "loong64" ], @@ -3004,9 +2995,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.61.1.tgz", - "integrity": "sha512-EC5kTtNaNGOmbMGqar8dvJy6y/hg99GAwjfBz++pxZhQATXGcRjd6c5en5wcbru0vkRmiMGsQKdMJOOf6sza4g==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.0.tgz", + "integrity": "sha512-3UvJ5PNVU16aJf6M3tFI24pWzAl2/ynfbyRN3ICyQajK1lSkrnVYNnLz3v04J32qKa0FczJc22zeToc0lr2A3w==", "cpu": [ "ppc64" ], @@ -3018,9 +3009,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.61.1.tgz", - "integrity": "sha512-8hiwp6D4acEcNK78I4rP0/XtS1sknWIAMJBPdR4l6zUtyTm5KiTDr5bXmWt4foY7nAN7AThDHgkLIEZOWKbzWw==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.0.tgz", + "integrity": "sha512-vRWUAbYLGHBZS6Q8Msb2sfnf1fvJf+47t8l/TwOerM2qArzy+IeNMTHrYLHXh95h8MoatPHI5hhSZNs+mGXKPg==", "cpu": [ "ppc64" ], @@ -3032,9 +3023,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.61.1.tgz", - "integrity": "sha512-10dh/h/BqA7DuMPWSxkR8uks18FRwnwOEqr5zOTEl+NOwP/OMzKX8OFR/Of9xxDA7D5qef1Nzar5WDD2kCCr1g==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.0.tgz", + "integrity": "sha512-c00T5SYENHAt86cfW47URaP3Us5vLC/4QO7GYud1G5VNRffCwwCuBspwqYrriuJB+5m0WFzClCn9wed0FBjKvg==", "cpu": [ "riscv64" ], @@ -3046,9 +3037,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.61.1.tgz", - "integrity": "sha512-YKJ5lg35DP17gcAOggnihe+APw9HLyj1Xn7gsmGumBJAUDa6NGXNixJzmkWLhcK9TOuuyQjdamzvJefkO7qHZQ==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.0.tgz", + "integrity": "sha512-krrCDilhXOwFkSkO3Wm9I/f9H0L92XHHwy2fwxjukxIbh0dem8gZqOW5Y8BsHrpJv5qwlRBV+Wl4ZFyRWhUpwg==", "cpu": [ "riscv64" ], @@ -3060,9 +3051,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.61.1.tgz", - "integrity": "sha512-Mlil5G2Jj6a7B3LWGctg+XPL9vdXYuzCtNXfxOQ0nPjc2m6ueUktocPGH9bnAM0bNRKb/bAWTujUU7IJQdQA+g==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.0.tgz", + "integrity": "sha512-7pfYFSTc4/rUC/FtAI0Qp6QthDBCIi6/AuP1xYqFk5vanI6KnL5dWKP60OM/05LOsbwTmIcvr6eXC4CJuJ75IA==", "cpu": [ "s390x" ], @@ -3074,9 +3065,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.61.1.tgz", - "integrity": "sha512-bVWIOIk6pV01p4CdUbPP7CJ/434z+OooYjDuFcR+44N35YvKUC66G8MGnvcWx5mWKW3g61J+t74l3Kj15Kwn2Q==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.0.tgz", + "integrity": "sha512-7SDIalKeIpG0Ifogbbdn58HmSotYMlf23K3dCJEmiVd9Fg36Vmni82iPQec27N3wY4Bvbxftkxz6vSx9OcouTg==", "cpu": [ "x64" ], @@ -3088,9 +3079,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.61.1.tgz", - "integrity": "sha512-qy5pBvZbqNFheBz61R1rzsezjm0J7O2oNGoWtGoY89SZYLUfxAJTBAqDChqAIdB4rCiIbi9nF7yZ83GnNiLwSw==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.0.tgz", + "integrity": "sha512-eRZevouTH2i1HeAVLqJuLnt256krQkGY0TN6WsTmsIhuzbh457HuWDMakKwmi0Cjadux983CoSr8Lim2QhUIFw==", "cpu": [ "x64" ], @@ -3102,9 +3093,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.61.1.tgz", - "integrity": "sha512-E83TXjI4zm0+5f2qO+UOudaCYIhYwpJ5jq6YCZNIZ+6CbfhKrkAGezeiASBL9ElxAxFsRS9ZhESv8mfnj6TKeg==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.0.tgz", + "integrity": "sha512-3oVS7FLGa4U1qcvao9ylGxrjXZyUQqR8UwxEcnUEyPX53O/C/mKDZegNXTdHCP+h3e6ta/f1EN38Yif1mmZHYg==", "cpu": [ "x64" ], @@ -3116,9 +3107,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.61.1.tgz", - "integrity": "sha512-fbWnKqVkjrJN38vNe3ahkbk6iejS/3b0Nt7EEtPpE6RBacZcGXNKbzfHN3GUUlXOPghUg0j6XUGrtjX9z1sIvA==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.0.tgz", + "integrity": "sha512-yTB9TgfWj5wHe5QgktAgXTLLot1gvEjl1NiPPAUiCs4oPrIWFl5V4nC3GrkNdj9LaAU4s94nVrGbGOCqUpyWsg==", "cpu": [ "arm64" ], @@ -3130,9 +3121,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.61.1.tgz", - "integrity": "sha512-ArMl38iVAbk0New1ogihQNY6iphLi4ZaRsa037gUzv5yeKPY8TD3Dmy4x2RNC1VztU/uqm+G+/RwFrSka3Oy2g==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.0.tgz", + "integrity": "sha512-5LOhoaesY3doG1c+ac/2JtgREpKoJr5bUHH8tKY0V8di7+uSV6BwLs2PlR0/yzefGOkR+wE7ZolZphHCsyG5Rw==", "cpu": [ "arm64" ], @@ -3144,9 +3135,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.61.1.tgz", - "integrity": "sha512-0mYtjHS9ucAbcATycCNK9IGBk/cCe/ma7EmSLGZdsxnOA8cjRIyU04wDpVAD9NiOfLUR9KTxdiO53uOkherqjQ==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.0.tgz", + "integrity": "sha512-yYkWHhmbhRTWTnWos5HC4GcPQfjlzzCNbM9e/+GXrLuaBXYA3qSDR9f0Vgufd5S8yX81U8jPKp7ZnAjZFMtRnw==", "cpu": [ "ia32" ], @@ -3158,9 +3149,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.61.1.tgz", - "integrity": "sha512-gK1iCEPfpoSG9wfBihXxvBMi8ZfcWffYkEsC/Eih+iFENTaewvNcrEQ69lIOWYO5pePHKLHHO7nq5AILGO/HQQ==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.0.tgz", + "integrity": "sha512-SoTb6lPg25xZlA2ibwQ++ahCCnH+FP0qmEuafMJ4gznZKOlXioKEAeJLgCrqjM98ACziXM9V1amFjICVL4IFoA==", "cpu": [ "x64" ], @@ -3172,9 +3163,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.61.1.tgz", - "integrity": "sha512-X+zaP2x+j4RXGfbp/seSoRHWnPxzApilDszisZxbYH5C/jTxFhCtDNdPGZb9lJyYPs24wGxruPF7Y+sIXt9Gzw==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.0.tgz", + "integrity": "sha512-5L+T1fMX4RIEBoZzT0+sQ0PhTS36NULFmMXtl1TZo44TMAROIMHbZufSOjVWt/Y622BtxgxtaNOokbTDvfsrZA==", "cpu": [ "x64" ], @@ -3596,16 +3587,16 @@ } }, "node_modules/@types/got/node_modules/form-data": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.5.tgz", - "integrity": "sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.6.tgz", + "integrity": "sha512-Ogz/E85h9tlfJzpI6TuFpGcHZFhLrb9Gw8wq9v40CxSCPnv7ahKr6Xgtkn0KYCDQJ8DNn5VoMO8EXr9V5PadyA==", "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", + "hasown": "^2.0.4", "mime-types": "^2.1.35", "safe-buffer": "^5.2.1" }, @@ -4869,9 +4860,9 @@ } }, "node_modules/axios": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.17.0.tgz", - "integrity": "sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.18.0.tgz", + "integrity": "sha512-E32NzpYKp++W7XRe52rHiXV2ehxmh3wbdgO7MHeFM+vqxLBYHzt0ElkiImtOBxtOmyp0yoC8C6uESVV84Y2/hw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.16.0", @@ -5070,9 +5061,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.36", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.36.tgz", - "integrity": "sha512-lVq/Df7LXlO79MVaaUHztSwWiG9oXoWHlgvNS51v8Dpd4+G4/VIy6qYePTw31nAVls33nUtnfezYeLkYAak9dg==", + "version": "2.10.38", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.38.tgz", + "integrity": "sha512-31/02mVB4yuQU6adKk5SlY6m+mxDwUq5KZkyYgnLrrKl7TEm1+3PyDtDBz2kOv/wxZz41GHsvV1A/u6RmiyBvw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -6387,9 +6378,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.372", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.372.tgz", - "integrity": "sha512-M3yhbAlilnwqC8D21t28UCDGHyitShTmmLRU/H+b74P6Ski16Nb9HONYEaVpMj/pwC7BEo5B95FpjODLCWbtfA==", + "version": "1.5.375", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.375.tgz", + "integrity": "sha512-ZWP5eB4BVPW/ZYo9252hQZHZ5XavtsTgpbhcmMmRwymavC5AsLWQWBPaKMeNd2LW0KGby5HPXvj7+sr4ta5j/Q==", "dev": true, "license": "ISC" }, @@ -6526,6 +6517,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-abstract-get": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-abstract-get/-/es-abstract-get-1.0.0.tgz", + "integrity": "sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.2", + "is-callable": "^1.2.7", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -6613,15 +6623,17 @@ } }, "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.1.tgz", + "integrity": "sha512-CxN9N56HYfd2m/acc/NOFrZQsN9kU4eh+2kk6A707Kz1krH8tKmfrs5RnftB8WNX80T0NS7vSQsDOlg23diR2g==", "dev": true, "license": "MIT", "dependencies": { + "es-abstract-get": "^1.0.0", + "es-errors": "^1.3.0", "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" + "is-date-object": "^1.1.0", + "is-symbol": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -7935,9 +7947,9 @@ "license": "MIT" }, "node_modules/fix-dts-default-cjs-exports/node_modules/rollup": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.61.1.tgz", - "integrity": "sha512-I4KW6iuRpuu2uHBLraZ1wNZe0DP7lnRha+VJ9tNaYVaVgKhW0aI3h4RYnoRPeql0flHm/Co55b7snEDcOfOJrA==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.0.tgz", + "integrity": "sha512-nc72Wgq62I7rtDV4izT5/aaS0zxy3kttkinf9586ApknY3jZO9NYsmtc24fUckA0X7Q2v+ML4a15pdUlV5V/jA==", "dev": true, "license": "MIT", "dependencies": { @@ -7951,31 +7963,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.61.1", - "@rollup/rollup-android-arm64": "4.61.1", - "@rollup/rollup-darwin-arm64": "4.61.1", - "@rollup/rollup-darwin-x64": "4.61.1", - "@rollup/rollup-freebsd-arm64": "4.61.1", - "@rollup/rollup-freebsd-x64": "4.61.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.61.1", - "@rollup/rollup-linux-arm-musleabihf": "4.61.1", - "@rollup/rollup-linux-arm64-gnu": "4.61.1", - "@rollup/rollup-linux-arm64-musl": "4.61.1", - "@rollup/rollup-linux-loong64-gnu": "4.61.1", - "@rollup/rollup-linux-loong64-musl": "4.61.1", - "@rollup/rollup-linux-ppc64-gnu": "4.61.1", - "@rollup/rollup-linux-ppc64-musl": "4.61.1", - "@rollup/rollup-linux-riscv64-gnu": "4.61.1", - "@rollup/rollup-linux-riscv64-musl": "4.61.1", - "@rollup/rollup-linux-s390x-gnu": "4.61.1", - "@rollup/rollup-linux-x64-gnu": "4.61.1", - "@rollup/rollup-linux-x64-musl": "4.61.1", - "@rollup/rollup-openbsd-x64": "4.61.1", - "@rollup/rollup-openharmony-arm64": "4.61.1", - "@rollup/rollup-win32-arm64-msvc": "4.61.1", - "@rollup/rollup-win32-ia32-msvc": "4.61.1", - "@rollup/rollup-win32-x64-gnu": "4.61.1", - "@rollup/rollup-win32-x64-msvc": "4.61.1", + "@rollup/rollup-android-arm-eabi": "4.62.0", + "@rollup/rollup-android-arm64": "4.62.0", + "@rollup/rollup-darwin-arm64": "4.62.0", + "@rollup/rollup-darwin-x64": "4.62.0", + "@rollup/rollup-freebsd-arm64": "4.62.0", + "@rollup/rollup-freebsd-x64": "4.62.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.62.0", + "@rollup/rollup-linux-arm-musleabihf": "4.62.0", + "@rollup/rollup-linux-arm64-gnu": "4.62.0", + "@rollup/rollup-linux-arm64-musl": "4.62.0", + "@rollup/rollup-linux-loong64-gnu": "4.62.0", + "@rollup/rollup-linux-loong64-musl": "4.62.0", + "@rollup/rollup-linux-ppc64-gnu": "4.62.0", + "@rollup/rollup-linux-ppc64-musl": "4.62.0", + "@rollup/rollup-linux-riscv64-gnu": "4.62.0", + "@rollup/rollup-linux-riscv64-musl": "4.62.0", + "@rollup/rollup-linux-s390x-gnu": "4.62.0", + "@rollup/rollup-linux-x64-gnu": "4.62.0", + "@rollup/rollup-linux-x64-musl": "4.62.0", + "@rollup/rollup-openbsd-x64": "4.62.0", + "@rollup/rollup-openharmony-arm64": "4.62.0", + "@rollup/rollup-win32-arm64-msvc": "4.62.0", + "@rollup/rollup-win32-ia32-msvc": "4.62.0", + "@rollup/rollup-win32-x64-gnu": "4.62.0", + "@rollup/rollup-win32-x64-msvc": "4.62.0", "fsevents": "~2.3.2" } }, @@ -8037,16 +8049,16 @@ } }, "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", + "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" + "hasown": "^2.0.4", + "mime-types": "^2.1.35" }, "engines": { "node": ">= 6" @@ -11303,9 +11315,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.47", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.47.tgz", - "integrity": "sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==", + "version": "2.0.48", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.48.tgz", + "integrity": "sha512-1uz8041X6LoI6ZSdZacM9lVY28vuzDlSKitnpbSNK0RfKoIJkX29NBPVEFXhnuSuEOA9Ww0xnPJ+ILWbGAv8DA==", "dev": true, "license": "MIT", "engines": { @@ -14318,9 +14330,9 @@ } }, "node_modules/tsup/node_modules/rollup": { - "version": "4.61.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.61.1.tgz", - "integrity": "sha512-I4KW6iuRpuu2uHBLraZ1wNZe0DP7lnRha+VJ9tNaYVaVgKhW0aI3h4RYnoRPeql0flHm/Co55b7snEDcOfOJrA==", + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.0.tgz", + "integrity": "sha512-nc72Wgq62I7rtDV4izT5/aaS0zxy3kttkinf9586ApknY3jZO9NYsmtc24fUckA0X7Q2v+ML4a15pdUlV5V/jA==", "dev": true, "license": "MIT", "dependencies": { @@ -14334,31 +14346,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.61.1", - "@rollup/rollup-android-arm64": "4.61.1", - "@rollup/rollup-darwin-arm64": "4.61.1", - "@rollup/rollup-darwin-x64": "4.61.1", - "@rollup/rollup-freebsd-arm64": "4.61.1", - "@rollup/rollup-freebsd-x64": "4.61.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.61.1", - "@rollup/rollup-linux-arm-musleabihf": "4.61.1", - "@rollup/rollup-linux-arm64-gnu": "4.61.1", - "@rollup/rollup-linux-arm64-musl": "4.61.1", - "@rollup/rollup-linux-loong64-gnu": "4.61.1", - "@rollup/rollup-linux-loong64-musl": "4.61.1", - "@rollup/rollup-linux-ppc64-gnu": "4.61.1", - "@rollup/rollup-linux-ppc64-musl": "4.61.1", - "@rollup/rollup-linux-riscv64-gnu": "4.61.1", - "@rollup/rollup-linux-riscv64-musl": "4.61.1", - "@rollup/rollup-linux-s390x-gnu": "4.61.1", - "@rollup/rollup-linux-x64-gnu": "4.61.1", - "@rollup/rollup-linux-x64-musl": "4.61.1", - "@rollup/rollup-openbsd-x64": "4.61.1", - "@rollup/rollup-openharmony-arm64": "4.61.1", - "@rollup/rollup-win32-arm64-msvc": "4.61.1", - "@rollup/rollup-win32-ia32-msvc": "4.61.1", - "@rollup/rollup-win32-x64-gnu": "4.61.1", - "@rollup/rollup-win32-x64-msvc": "4.61.1", + "@rollup/rollup-android-arm-eabi": "4.62.0", + "@rollup/rollup-android-arm64": "4.62.0", + "@rollup/rollup-darwin-arm64": "4.62.0", + "@rollup/rollup-darwin-x64": "4.62.0", + "@rollup/rollup-freebsd-arm64": "4.62.0", + "@rollup/rollup-freebsd-x64": "4.62.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.62.0", + "@rollup/rollup-linux-arm-musleabihf": "4.62.0", + "@rollup/rollup-linux-arm64-gnu": "4.62.0", + "@rollup/rollup-linux-arm64-musl": "4.62.0", + "@rollup/rollup-linux-loong64-gnu": "4.62.0", + "@rollup/rollup-linux-loong64-musl": "4.62.0", + "@rollup/rollup-linux-ppc64-gnu": "4.62.0", + "@rollup/rollup-linux-ppc64-musl": "4.62.0", + "@rollup/rollup-linux-riscv64-gnu": "4.62.0", + "@rollup/rollup-linux-riscv64-musl": "4.62.0", + "@rollup/rollup-linux-s390x-gnu": "4.62.0", + "@rollup/rollup-linux-x64-gnu": "4.62.0", + "@rollup/rollup-linux-x64-musl": "4.62.0", + "@rollup/rollup-openbsd-x64": "4.62.0", + "@rollup/rollup-openharmony-arm64": "4.62.0", + "@rollup/rollup-win32-arm64-msvc": "4.62.0", + "@rollup/rollup-win32-ia32-msvc": "4.62.0", + "@rollup/rollup-win32-x64-gnu": "4.62.0", + "@rollup/rollup-win32-x64-msvc": "4.62.0", "fsevents": "~2.3.2" } }, @@ -14606,7 +14618,7 @@ "uint8arrays": "^5.0.0" } }, - "node_modules/uint8arraylist": { + "node_modules/uint8-varint/node_modules/uint8arraylist": { "version": "2.4.9", "resolved": "https://registry.npmjs.org/uint8arraylist/-/uint8arraylist-2.4.9.tgz", "integrity": "sha512-KxWjyEFzchzik3aoQlK66oaoxIReoMo5bQRm1fcjBUZvE8xv/tyR3CTKhjh6K/faV8VaF6hd5pjr45CzbwuwkA==", @@ -14615,6 +14627,30 @@ "uint8arrays": "^5.0.1" } }, + "node_modules/uint8arraylist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/uint8arraylist/-/uint8arraylist-3.0.2.tgz", + "integrity": "sha512-LDVoq9BQaGJzGDUovEnoX6rpKCvnY/Jbtws4ikwnBzjRbq5qBAFpBZevUEbSmMM87aO0Sp+wOZy2ZXf5yODmXQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "uint8arrays": "^6.0.0" + } + }, + "node_modules/uint8arraylist/node_modules/multiformats": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-14.0.0.tgz", + "integrity": "sha512-iWK1RrAS58p2NDfeZFuSUSv3ZPewTIhsGbh/5NgeGGJwJmRljLxGtjRR3nkn+loG3zl+IrfR/W1590QnrSK+Gg==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/uint8arraylist/node_modules/uint8arrays": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-6.1.1.tgz", + "integrity": "sha512-iz7JN0XCSZYA111lhFG2Ui9EhFvTNekqSRHw3lvMHq+dzwWy1OQftxFQREEh4rffU0oSoXdQHsk2TiHKVm4fsA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^14.0.0" + } + }, "node_modules/uint8arrays": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.1.tgz", diff --git a/packages/mesh-common/package.json b/packages/mesh-common/package.json index 47b40503b..65e3e55f2 100644 --- a/packages/mesh-common/package.json +++ b/packages/mesh-common/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/common", - "version": "1.9.0", + "version": "1.9.1", "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 671a76499..e67b1b6ed 100644 --- a/packages/mesh-contract/package.json +++ b/packages/mesh-contract/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/contract", - "version": "1.9.0", + "version": "1.9.1", "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", - "@meshsdk/core": "1.9.0" + "@meshsdk/common": "1.9.1", + "@meshsdk/core": "1.9.1" }, "prettier": "@meshsdk/configs/prettier", "publishConfig": { diff --git a/packages/mesh-core-csl/package.json b/packages/mesh-core-csl/package.json index 9d2ac7941..9c98a097f 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", + "version": "1.9.1", "description": "Types and utilities functions between Mesh and cardano-serialization-lib", "main": "./dist/index.cjs", "module": "./dist/index.js", @@ -38,7 +38,7 @@ "typescript": "^5.3.3" }, "dependencies": { - "@meshsdk/common": "1.9.0", + "@meshsdk/common": "1.9.1", "@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 57c3102cd..7c509852b 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", + "version": "1.9.1", "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", + "@meshsdk/common": "1.9.1", "@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 d0fa28779..64eeb5b5a 100644 --- a/packages/mesh-core/package.json +++ b/packages/mesh-core/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/core", - "version": "1.9.0", + "version": "1.9.1", "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", - "@meshsdk/core-cst": "1.9.0", + "@meshsdk/common": "1.9.1", + "@meshsdk/core-cst": "1.9.1", "@meshsdk/provider": "1.9.0-beta.101", - "@meshsdk/transaction": "1.9.0", - "@meshsdk/wallet": "1.9.0", + "@meshsdk/transaction": "1.9.1", + "@meshsdk/wallet": "1.9.1", "scalus": "^0.17.0" }, "prettier": "@meshsdk/configs/prettier", diff --git a/packages/mesh-scalus-emulator/package.json b/packages/mesh-scalus-emulator/package.json index 786dec18e..c9a251024 100644 --- a/packages/mesh-scalus-emulator/package.json +++ b/packages/mesh-scalus-emulator/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/scalus-emulator", - "version": "1.9.0", + "version": "1.9.1", "description": "Scalus emulator utilities for Mesh SDK", "main": "./dist/index.cjs", "browser": "./dist/index.js", @@ -28,8 +28,8 @@ }, "dependencies": { "scalus": "^0.17.0", - "@meshsdk/core-cst": "1.9.0", - "@meshsdk/common": "1.9.0" + "@meshsdk/core-cst": "1.9.1", + "@meshsdk/common": "1.9.1" }, "devDependencies": { "@meshsdk/configs": "*", diff --git a/packages/mesh-transaction/package.json b/packages/mesh-transaction/package.json index e9c9db58b..9e236b995 100644 --- a/packages/mesh-transaction/package.json +++ b/packages/mesh-transaction/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/transaction", - "version": "1.9.0", + "version": "1.9.1", "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", - "@meshsdk/core-cst": "1.9.0", + "@meshsdk/common": "1.9.1", + "@meshsdk/core-cst": "1.9.1", "@meshsdk/scalus-emulator": "1.9.0", "@cardano-sdk/core": "0.46.12", "@cardano-sdk/util": "0.17.1", diff --git a/packages/mesh-wallet/package.json b/packages/mesh-wallet/package.json index 0b30d82f0..8225a259c 100644 --- a/packages/mesh-wallet/package.json +++ b/packages/mesh-wallet/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/wallet", - "version": "1.9.0", + "version": "1.9.1", "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", - "@meshsdk/core-cst": "1.9.0", - "@meshsdk/transaction": "1.9.0", + "@meshsdk/common": "1.9.1", + "@meshsdk/core-cst": "1.9.1", + "@meshsdk/transaction": "1.9.1", "@simplewebauthn/browser": "^13.0.0" }, "prettier": "@meshsdk/configs/prettier", diff --git a/scripts/bump-version.sh b/scripts/bump-version.sh index 43410d52d..23a3d2d2b 100644 --- a/scripts/bump-version.sh +++ b/scripts/bump-version.sh @@ -10,20 +10,14 @@ VERSION=$1 # List of package.json files to update FILES=( - "packages/bitcoin/package.json" - "packages/mesh-hydra/package.json" "packages/mesh-common/package.json" "packages/mesh-contract/package.json" "packages/mesh-core/package.json" "packages/mesh-core-csl/package.json" "packages/mesh-core-cst/package.json" - "packages/mesh-provider/package.json" - "packages/mesh-react/package.json" - "packages/mesh-svelte/package.json" "packages/mesh-transaction/package.json" "packages/mesh-wallet/package.json" - "packages/midnight-setup/package.json" - "packages/midnight-contracts-wizard/package.json" + "packages/mesh-scalus-emulator/package.json" "scripts/mesh-cli/package.json" ) diff --git a/scripts/mesh-cli/package.json b/scripts/mesh-cli/package.json index 6eb6abbc3..d21ca0d14 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", + "version": "1.9.1", "license": "Apache-2.0", "type": "module", "main": "./dist/index.cjs", From 09ebf5bba82c8971d10784863970a6502e82a752 Mon Sep 17 00:00:00 2001 From: twwu123 Date: Fri, 19 Jun 2026 17:13:51 +0900 Subject: [PATCH 7/7] remove scalus emulator from transaction --- package-lock.json | 81 +++++++++++++------------- packages/mesh-transaction/package.json | 1 - 2 files changed, 40 insertions(+), 42 deletions(-) diff --git a/package-lock.json b/package-lock.json index 103679bb9..a920ece92 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3716,12 +3716,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.9.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.3.tgz", - "integrity": "sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg==", + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.0.0.tgz", + "integrity": "sha512-vf2YFi1iY9lHGwNJMs01biZFbKJkrZR1T6/MlzjhJLPdntOHLhTrDSnSVcdtvjihi4VQNlrFRIxLsDBlQpAipA==", "license": "MIT", "dependencies": { - "undici-types": ">=7.24.0 <7.24.7" + "undici-types": "~8.3.0" } }, "node_modules/@types/normalize-package-data": { @@ -6378,9 +6378,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.375", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.375.tgz", - "integrity": "sha512-ZWP5eB4BVPW/ZYo9252hQZHZ5XavtsTgpbhcmMmRwymavC5AsLWQWBPaKMeNd2LW0KGby5HPXvj7+sr4ta5j/Q==", + "version": "1.5.376", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.376.tgz", + "integrity": "sha512-cUVA7/RvbFTEuw/i3obUwDTRIXojaxkResf+ibByPFxjc6XK3VNtcQXV0NSbAlJ0FMjcJGgftVVB4Qo184EXvA==", "dev": true, "license": "ISC" }, @@ -11211,9 +11211,9 @@ "license": "ISC" }, "node_modules/nanoid": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", - "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.13.tgz", + "integrity": "sha512-sPdqC6ByMVVGvF1ynvvMo0/o+oD1VX7DaHhijt1bFgjvBkHBib4t49GoNDhf2NDta4oeUNlaGbSt5K7qjZ955Q==", "funding": [ { "type": "github", @@ -14692,9 +14692,9 @@ } }, "node_modules/undici-types": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", - "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz", + "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==", "license": "MIT" }, "node_modules/unist-util-is": { @@ -15272,9 +15272,9 @@ } }, "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "version": "17.7.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", + "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==", "dev": true, "license": "MIT", "dependencies": { @@ -15378,7 +15378,7 @@ }, "packages/mesh-common": { "name": "@meshsdk/common", - "version": "1.9.0", + "version": "1.9.1", "license": "Apache-2.0", "dependencies": { "bech32": "^2.0.0", @@ -15396,11 +15396,11 @@ }, "packages/mesh-contract": { "name": "@meshsdk/contract", - "version": "1.9.0", + "version": "1.9.1", "license": "Apache-2.0", "dependencies": { - "@meshsdk/common": "1.9.0", - "@meshsdk/core": "1.9.0" + "@meshsdk/common": "1.9.1", + "@meshsdk/core": "1.9.1" }, "devDependencies": { "@meshsdk/configs": "*", @@ -15411,14 +15411,14 @@ }, "packages/mesh-core": { "name": "@meshsdk/core", - "version": "1.9.0", + "version": "1.9.1", "license": "Apache-2.0", "dependencies": { - "@meshsdk/common": "1.9.0", - "@meshsdk/core-cst": "1.9.0", + "@meshsdk/common": "1.9.1", + "@meshsdk/core-cst": "1.9.1", "@meshsdk/provider": "1.9.0-beta.101", - "@meshsdk/transaction": "1.9.0", - "@meshsdk/wallet": "1.9.0", + "@meshsdk/transaction": "1.9.1", + "@meshsdk/wallet": "1.9.1", "scalus": "^0.17.0" }, "devDependencies": { @@ -15430,10 +15430,10 @@ }, "packages/mesh-core-csl": { "name": "@meshsdk/core-csl", - "version": "1.9.0", + "version": "1.9.1", "license": "Apache-2.0", "dependencies": { - "@meshsdk/common": "1.9.0", + "@meshsdk/common": "1.9.1", "@sidan-lab/whisky-js-browser": "^1.0.11", "@sidan-lab/whisky-js-nodejs": "^1.0.11", "@types/base32-encoding": "^1.0.2", @@ -15453,7 +15453,7 @@ }, "packages/mesh-core-cst": { "name": "@meshsdk/core-cst", - "version": "1.9.0", + "version": "1.9.1", "license": "Apache-2.0", "dependencies": { "@cardano-sdk/core": "0.46.12", @@ -15464,7 +15464,7 @@ "@harmoniclabs/pair": "^1.0.0", "@harmoniclabs/plutus-data": "1.2.6", "@harmoniclabs/uplc": "1.4.1", - "@meshsdk/common": "1.9.0", + "@meshsdk/common": "1.9.1", "@types/base32-encoding": "^1.0.2", "base32-encoding": "^1.0.0", "bech32": "^2.0.0", @@ -15484,11 +15484,11 @@ }, "packages/mesh-scalus-emulator": { "name": "@meshsdk/scalus-emulator", - "version": "1.9.0", + "version": "1.9.1", "license": "Apache-2.0", "dependencies": { - "@meshsdk/common": "1.9.0", - "@meshsdk/core-cst": "1.9.0", + "@meshsdk/common": "1.9.1", + "@meshsdk/core-cst": "1.9.1", "scalus": "^0.17.0" }, "devDependencies": { @@ -15500,15 +15500,14 @@ }, "packages/mesh-transaction": { "name": "@meshsdk/transaction", - "version": "1.9.0", + "version": "1.9.1", "license": "Apache-2.0", "dependencies": { "@cardano-sdk/core": "0.46.12", "@cardano-sdk/input-selection": "0.14.28", "@cardano-sdk/util": "0.17.1", - "@meshsdk/common": "1.9.0", - "@meshsdk/core-cst": "1.9.0", - "@meshsdk/scalus-emulator": "1.9.0", + "@meshsdk/common": "1.9.1", + "@meshsdk/core-cst": "1.9.1", "json-bigint": "^1.0.0" }, "devDependencies": { @@ -15521,12 +15520,12 @@ }, "packages/mesh-wallet": { "name": "@meshsdk/wallet", - "version": "1.9.0", + "version": "1.9.1", "license": "Apache-2.0", "dependencies": { - "@meshsdk/common": "1.9.0", - "@meshsdk/core-cst": "1.9.0", - "@meshsdk/transaction": "1.9.0", + "@meshsdk/common": "1.9.1", + "@meshsdk/core-cst": "1.9.1", + "@meshsdk/transaction": "1.9.1", "@simplewebauthn/browser": "^13.0.0" }, "devDependencies": { @@ -15539,7 +15538,7 @@ }, "scripts/mesh-cli": { "name": "meshjs", - "version": "1.9.0", + "version": "1.9.1", "license": "Apache-2.0", "dependencies": { "@sidan-lab/cardano-bar": "^0.0.7", diff --git a/packages/mesh-transaction/package.json b/packages/mesh-transaction/package.json index 9e236b995..7e4828531 100644 --- a/packages/mesh-transaction/package.json +++ b/packages/mesh-transaction/package.json @@ -37,7 +37,6 @@ "dependencies": { "@meshsdk/common": "1.9.1", "@meshsdk/core-cst": "1.9.1", - "@meshsdk/scalus-emulator": "1.9.0", "@cardano-sdk/core": "0.46.12", "@cardano-sdk/util": "0.17.1", "@cardano-sdk/input-selection": "0.14.28",