From 65ecf94a31cdf4d7458b7d030a54e3f9de6baf24 Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Thu, 12 Mar 2026 14:46:43 +0100 Subject: [PATCH 1/7] feat: generate TS/JS api for serverless functions Signed-off-by: David Dal Busco --- package-lock.json | 748 +++--------------- package.json | 4 +- .../functions/build/build.api.services.ts | 97 +++ .../functions/build/build.did.services.ts | 43 +- .../build/build.javascript.services.ts | 30 +- .../functions/build/build.rust.services.ts | 10 +- src/utils/build.utils.ts | 4 + 7 files changed, 243 insertions(+), 693 deletions(-) create mode 100644 src/services/functions/build/build.api.services.ts diff --git a/package-lock.json b/package-lock.json index 8e850bfd..64599d36 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,11 +14,11 @@ "@icp-sdk/core": "^5.0.0", "@junobuild/admin": "^4.1.0-next-2026-03-12", "@junobuild/cdn": "^2.3.0-next-2026-03-12", - "@junobuild/cli-tools": "^0.10.2-next-2026-03-12", + "@junobuild/cli-tools": "file:../juno-js/packages/cli-tools", "@junobuild/config": "^2.11.0-next-2026-03-12", "@junobuild/config-loader": "^0.4.8-next-2026-03-12", "@junobuild/core": "^5.2.0-next-2026-03-12", - "@junobuild/functions-tools": "^0.4.0-next-2026-03-12", + "@junobuild/functions-tools": "file:../juno-js/packages/functions-tools", "@junobuild/ic-client": "^8.0.0-next-2026-03-12", "@junobuild/storage": "^2.3.0-next-2026-03-12", "@junobuild/utils": "^0.2.6-next-2026-03-12", @@ -72,6 +72,48 @@ "semver": "7.*" } }, + "../juno-js/packages/cli-tools": { + "name": "@junobuild/cli-tools", + "version": "0.10.2", + "license": "MIT", + "dependencies": { + "file-type": "^21.1.1", + "listr2": "^9.0.5", + "mime-types": "^3.0.2", + "minimatch": "^10.1.2" + }, + "devDependencies": { + "@types/mime-types": "^3.0.1", + "@types/minimatch": "^6.0.0" + }, + "peerDependencies": { + "@dfinity/utils": "^4.1", + "@junobuild/cdn": "^2.3", + "@junobuild/config": "^2.7", + "@junobuild/functions-tools": "^0.4", + "@junobuild/storage": "^2.3", + "esbuild": "^0.27.0", + "ora": "^9" + } + }, + "../juno-js/packages/functions-tools": { + "name": "@junobuild/functions-tools", + "version": "0.4.0", + "license": "MIT", + "peerDependencies": { + "@babel/core": "7.28.4", + "@babel/parser": "7.28.4", + "@babel/plugin-transform-modules-commonjs": "7.27.1", + "@babel/preset-typescript": "7.27.1", + "@babel/traverse": "7.28.4", + "@babel/types": "7.28.4", + "@dfinity/utils": "^4.1", + "@junobuild/functions": "^0.5.6", + "@junobuild/utils": "*", + "@junobuild/zod": "^0.0.2", + "zod": "^4.3" + } + }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", @@ -876,16 +918,6 @@ "node": ">=6.9.0" } }, - "node_modules/@borewit/text-codec": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.1.tgz", - "integrity": "sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/@dfinity/cbor": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/@dfinity/cbor/-/cbor-0.2.2.tgz", @@ -918,6 +950,7 @@ "cpu": [ "ppc64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -934,6 +967,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -950,6 +984,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -966,6 +1001,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -982,6 +1018,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -998,6 +1035,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1014,6 +1052,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1030,6 +1069,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1046,6 +1086,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1062,6 +1103,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1078,6 +1120,7 @@ "cpu": [ "ia32" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1094,6 +1137,7 @@ "cpu": [ "loong64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1110,6 +1154,7 @@ "cpu": [ "mips64el" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1126,6 +1171,7 @@ "cpu": [ "ppc64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1142,6 +1188,7 @@ "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1158,6 +1205,7 @@ "cpu": [ "s390x" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1174,6 +1222,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1190,6 +1239,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1206,6 +1256,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1222,6 +1273,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1238,6 +1290,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1254,6 +1307,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1270,6 +1324,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1286,6 +1341,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1302,6 +1358,7 @@ "cpu": [ "ia32" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1318,6 +1375,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1762,25 +1820,8 @@ } }, "node_modules/@junobuild/cli-tools": { - "version": "0.10.2-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/cli-tools/-/cli-tools-0.10.2-next-2026-03-12.tgz", - "integrity": "sha512-qFxnf5Sny32YHsKSLAYyhcE8QXfdrppUIUg8pymkrRFvx3PpdItJ6GfzXHY2xzEcb+64bineDasYcyFTt0MyWQ==", - "license": "MIT", - "dependencies": { - "file-type": "^21.1.1", - "listr2": "^9.0.5", - "mime-types": "^3.0.2", - "minimatch": "^10.1.2" - }, - "peerDependencies": { - "@dfinity/utils": "*", - "@junobuild/cdn": "*", - "@junobuild/config": "*", - "@junobuild/functions-tools": "*", - "@junobuild/storage": "*", - "esbuild": "*", - "ora": "*" - } + "resolved": "../juno-js/packages/cli-tools", + "link": true }, "node_modules/@junobuild/config": { "version": "2.11.0-next-2026-03-12", @@ -1884,6 +1925,7 @@ "version": "0.5.6-next-2026-03-12", "resolved": "https://registry.npmjs.org/@junobuild/functions/-/functions-0.5.6-next-2026-03-12.tgz", "integrity": "sha512-55in5ImdI+/av4UqPTSetpY7+d5NRTUyBMvBotFW9I6GXK1xGa8Mv1J3Z/GoVacbjrxCdPEp88IrmRyvB4RC6A==", + "dev": true, "license": "MIT", "peerDependencies": { "@dfinity/utils": "*", @@ -1893,23 +1935,8 @@ } }, "node_modules/@junobuild/functions-tools": { - "version": "0.4.0-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/functions-tools/-/functions-tools-0.4.0-next-2026-03-12.tgz", - "integrity": "sha512-VPpjs3OKKqTDaE+PRuiPchminJ5bweJp6gsWywRJHTVMuKpOnovEOs+GcfWEoIvOnZH+6GFfodEsUNhvsvL7Dw==", - "license": "MIT", - "peerDependencies": { - "@babel/core": "*", - "@babel/parser": "*", - "@babel/plugin-transform-modules-commonjs": "*", - "@babel/preset-typescript": "*", - "@babel/traverse": "*", - "@babel/types": "*", - "@dfinity/utils": "*", - "@junobuild/functions": "*", - "@junobuild/utils": "*", - "@junobuild/zod": "*", - "zod": "*" - } + "resolved": "../juno-js/packages/functions-tools", + "link": true }, "node_modules/@junobuild/ic-client": { "version": "8.0.0-next-2026-03-12", @@ -2043,29 +2070,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@tokenizer/inflate": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", - "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.3", - "token-types": "^6.1.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", - "license": "MIT" - }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -2883,38 +2887,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-truncate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz", - "integrity": "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==", - "license": "MIT", - "dependencies": { - "slice-ansi": "^8.0.0", - "string-width": "^8.2.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz", - "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==", - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.5.0", - "strip-ansi": "^7.1.2" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2933,12 +2905,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "license": "MIT" - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -3207,12 +3173,6 @@ "license": "ISC", "peer": true }, - "node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "license": "MIT" - }, "node_modules/enhanced-resolve": { "version": "5.18.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", @@ -3403,6 +3363,7 @@ "version": "0.27.2", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", + "dev": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -3983,12 +3944,6 @@ "node": ">=0.10.0" } }, - "node_modules/eventemitter3": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", - "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", - "license": "MIT" - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -4043,24 +3998,6 @@ "node": ">=16.0.0" } }, - "node_modules/file-type": { - "version": "21.3.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.0.tgz", - "integrity": "sha512-8kPJMIGz1Yt/aPEwOsrR97ZyZaD1Iqm8PClb1nYFclUCkBi0Ma5IsYNQzvSFS9ib51lWyIw5mIT9rWzI/xjpzA==", - "license": "MIT", - "dependencies": { - "@tokenizer/inflate": "^0.4.1", - "strtok3": "^10.3.4", - "token-types": "^6.1.1", - "uint8array-extras": "^1.4.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -4431,26 +4368,6 @@ "license": "Apache-2.0", "peer": true }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -4677,21 +4594,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-fullwidth-code-point": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", - "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.3.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-generator-function": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", @@ -5095,23 +4997,6 @@ "node": ">= 0.8.0" } }, - "node_modules/listr2": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz", - "integrity": "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==", - "license": "MIT", - "dependencies": { - "cli-truncate": "^5.0.0", - "colorette": "^2.0.20", - "eventemitter3": "^5.0.1", - "log-update": "^6.1.0", - "rfdc": "^1.4.1", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=20.0.0" - } - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -5149,53 +5034,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", - "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", - "license": "MIT", - "dependencies": { - "ansi-escapes": "^7.0.0", - "cli-cursor": "^5.0.0", - "slice-ansi": "^7.1.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", - "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -5228,31 +5066,6 @@ "node": ">=10.0.0" } }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/mimic-function": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", @@ -5265,42 +5078,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimatch/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/minimatch/node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", @@ -5879,12 +5656,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "license": "MIT" - }, "node_modules/run-applescript": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", @@ -6129,34 +5900,6 @@ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" }, - "node_modules/slice-ansi": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz", - "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.3", - "is-fullwidth-code-point": "^5.1.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/stdin-discarder": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", @@ -6296,22 +6039,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strtok3": { - "version": "10.3.4", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz", - "integrity": "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==", - "license": "MIT", - "dependencies": { - "@tokenizer/token": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/stubborn-fs": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/stubborn-fs/-/stubborn-fs-1.2.5.tgz", @@ -6425,24 +6152,6 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/token-types": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.2.tgz", - "integrity": "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==", - "license": "MIT", - "dependencies": { - "@borewit/text-codec": "^0.2.1", - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/ts-api-utils": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", @@ -6803,52 +6512,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wrap-ansi": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", - "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/wsl-utils": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.0.tgz", @@ -7466,11 +7129,6 @@ "@babel/helper-validator-identifier": "^7.27.1" } }, - "@borewit/text-codec": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.1.tgz", - "integrity": "sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==" - }, "@dfinity/cbor": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/@dfinity/cbor/-/cbor-0.2.2.tgz", @@ -7492,156 +7150,182 @@ "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", + "dev": true, "optional": true }, "@esbuild/android-arm": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", + "dev": true, "optional": true }, "@esbuild/android-arm64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", + "dev": true, "optional": true }, "@esbuild/android-x64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", + "dev": true, "optional": true }, "@esbuild/darwin-arm64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", + "dev": true, "optional": true }, "@esbuild/darwin-x64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", + "dev": true, "optional": true }, "@esbuild/freebsd-arm64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", + "dev": true, "optional": true }, "@esbuild/freebsd-x64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", + "dev": true, "optional": true }, "@esbuild/linux-arm": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", + "dev": true, "optional": true }, "@esbuild/linux-arm64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", + "dev": true, "optional": true }, "@esbuild/linux-ia32": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", + "dev": true, "optional": true }, "@esbuild/linux-loong64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", + "dev": true, "optional": true }, "@esbuild/linux-mips64el": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", + "dev": true, "optional": true }, "@esbuild/linux-ppc64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", + "dev": true, "optional": true }, "@esbuild/linux-riscv64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", + "dev": true, "optional": true }, "@esbuild/linux-s390x": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", + "dev": true, "optional": true }, "@esbuild/linux-x64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", + "dev": true, "optional": true }, "@esbuild/netbsd-arm64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", + "dev": true, "optional": true }, "@esbuild/netbsd-x64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", + "dev": true, "optional": true }, "@esbuild/openbsd-arm64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", + "dev": true, "optional": true }, "@esbuild/openbsd-x64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", + "dev": true, "optional": true }, "@esbuild/openharmony-arm64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", + "dev": true, "optional": true }, "@esbuild/sunos-x64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", + "dev": true, "optional": true }, "@esbuild/win32-arm64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", + "dev": true, "optional": true }, "@esbuild/win32-ia32": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", + "dev": true, "optional": true }, "@esbuild/win32-x64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", + "dev": true, "optional": true }, "@eslint-community/eslint-plugin-eslint-comments": { @@ -7935,10 +7619,10 @@ "requires": {} }, "@junobuild/cli-tools": { - "version": "0.10.2-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/cli-tools/-/cli-tools-0.10.2-next-2026-03-12.tgz", - "integrity": "sha512-qFxnf5Sny32YHsKSLAYyhcE8QXfdrppUIUg8pymkrRFvx3PpdItJ6GfzXHY2xzEcb+64bineDasYcyFTt0MyWQ==", + "version": "file:../juno-js/packages/cli-tools", "requires": { + "@types/mime-types": "^3.0.1", + "@types/minimatch": "^6.0.0", "file-type": "^21.1.1", "listr2": "^9.0.5", "mime-types": "^3.0.2", @@ -8005,12 +7689,11 @@ "version": "0.5.6-next-2026-03-12", "resolved": "https://registry.npmjs.org/@junobuild/functions/-/functions-0.5.6-next-2026-03-12.tgz", "integrity": "sha512-55in5ImdI+/av4UqPTSetpY7+d5NRTUyBMvBotFW9I6GXK1xGa8Mv1J3Z/GoVacbjrxCdPEp88IrmRyvB4RC6A==", + "dev": true, "requires": {} }, "@junobuild/functions-tools": { - "version": "0.4.0-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/functions-tools/-/functions-tools-0.4.0-next-2026-03-12.tgz", - "integrity": "sha512-VPpjs3OKKqTDaE+PRuiPchminJ5bweJp6gsWywRJHTVMuKpOnovEOs+GcfWEoIvOnZH+6GFfodEsUNhvsvL7Dw==", + "version": "file:../juno-js/packages/functions-tools", "requires": {} }, "@junobuild/ic-client": { @@ -8091,20 +7774,6 @@ "@scure/base": "~1.2.5" } }, - "@tokenizer/inflate": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", - "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", - "requires": { - "debug": "^4.4.3", - "token-types": "^6.1.1" - } - }, - "@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, "@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -8591,26 +8260,6 @@ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.3.0.tgz", "integrity": "sha512-/+40ljC3ONVnYIttjMWrlL51nItDAbBrq2upN8BPyvGU/2n5Oxw3tbNwORCaNuNqLJnxGqOfjUuhsv7l5Q4IsQ==" }, - "cli-truncate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz", - "integrity": "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==", - "requires": { - "slice-ansi": "^8.0.0", - "string-width": "^8.2.0" - }, - "dependencies": { - "string-width": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz", - "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==", - "requires": { - "get-east-asian-width": "^1.5.0", - "strip-ansi": "^7.1.2" - } - } - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -8626,11 +8275,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -8800,11 +8444,6 @@ "integrity": "sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==", "peer": true }, - "emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==" - }, "enhanced-resolve": { "version": "5.18.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", @@ -8944,6 +8583,7 @@ "version": "0.27.2", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", + "dev": true, "requires": { "@esbuild/aix-ppc64": "0.27.2", "@esbuild/android-arm": "0.27.2", @@ -9335,11 +8975,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "eventemitter3": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", - "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==" - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -9378,17 +9013,6 @@ "flat-cache": "^4.0.0" } }, - "file-type": { - "version": "21.3.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.0.tgz", - "integrity": "sha512-8kPJMIGz1Yt/aPEwOsrR97ZyZaD1Iqm8PClb1nYFclUCkBi0Ma5IsYNQzvSFS9ib51lWyIw5mIT9rWzI/xjpzA==", - "requires": { - "@tokenizer/inflate": "^0.4.1", - "strtok3": "^10.3.4", - "token-types": "^6.1.1", - "uint8array-extras": "^1.4.0" - } - }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -9619,11 +9243,6 @@ "integrity": "sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==", "peer": true }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, "ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -9756,14 +9375,6 @@ "call-bound": "^1.0.3" } }, - "is-fullwidth-code-point": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", - "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", - "requires": { - "get-east-asian-width": "^1.3.1" - } - }, "is-generator-function": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", @@ -10008,19 +9619,6 @@ "type-check": "~0.4.0" } }, - "listr2": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz", - "integrity": "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==", - "requires": { - "cli-truncate": "^5.0.0", - "colorette": "^2.0.20", - "eventemitter3": "^5.0.1", - "log-update": "^6.1.0", - "rfdc": "^1.4.1", - "wrap-ansi": "^9.0.0" - } - }, "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -10045,34 +9643,6 @@ "yoctocolors": "^2.1.1" } }, - "log-update": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", - "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", - "requires": { - "ansi-escapes": "^7.0.0", - "cli-cursor": "^5.0.0", - "slice-ansi": "^7.1.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==" - }, - "slice-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", - "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", - "requires": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" - } - } - } - }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -10093,47 +9663,11 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" }, - "mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==" - }, - "mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", - "requires": { - "mime-db": "^1.54.0" - } - }, "mimic-function": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==" }, - "minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", - "requires": { - "brace-expansion": "^5.0.2" - }, - "dependencies": { - "balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==" - }, - "brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", - "requires": { - "balanced-match": "^4.0.2" - } - } - } - }, "minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", @@ -10492,11 +10026,6 @@ "signal-exit": "^4.1.0" } }, - "rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" - }, "run-applescript": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", @@ -10651,22 +10180,6 @@ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" }, - "slice-ansi": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz", - "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==", - "requires": { - "ansi-styles": "^6.2.3", - "is-fullwidth-code-point": "^5.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==" - } - } - }, "stdin-discarder": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", @@ -10749,14 +10262,6 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, - "strtok3": { - "version": "10.3.4", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz", - "integrity": "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==", - "requires": { - "@tokenizer/token": "^0.3.0" - } - }, "stubborn-fs": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/stubborn-fs/-/stubborn-fs-1.2.5.tgz", @@ -10823,16 +10328,6 @@ "picomatch": "^4.0.3" } }, - "token-types": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.2.tgz", - "integrity": "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==", - "requires": { - "@borewit/text-codec": "^0.2.1", - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - } - }, "ts-api-utils": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", @@ -11059,33 +10554,6 @@ "has-tostringtag": "^1.0.2" } }, - "wrap-ansi": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", - "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", - "requires": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==" - }, - "string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "requires": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - } - } - } - }, "wsl-utils": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.0.tgz", diff --git a/package.json b/package.json index b1719c03..0c25b494 100644 --- a/package.json +++ b/package.json @@ -34,11 +34,11 @@ "@icp-sdk/core": "^5.0.0", "@junobuild/admin": "^4.1.0-next-2026-03-12", "@junobuild/cdn": "^2.3.0-next-2026-03-12", - "@junobuild/cli-tools": "^0.10.2-next-2026-03-12", + "@junobuild/cli-tools": "file:../juno-js/packages/cli-tools", "@junobuild/config": "^2.11.0-next-2026-03-12", "@junobuild/config-loader": "^0.4.8-next-2026-03-12", "@junobuild/core": "^5.2.0-next-2026-03-12", - "@junobuild/functions-tools": "^0.4.0-next-2026-03-12", + "@junobuild/functions-tools": "file:../juno-js/packages/functions-tools", "@junobuild/ic-client": "^8.0.0-next-2026-03-12", "@junobuild/storage": "^2.3.0-next-2026-03-12", "@junobuild/utils": "^0.2.6-next-2026-03-12", diff --git a/src/services/functions/build/build.api.services.ts b/src/services/functions/build/build.api.services.ts new file mode 100644 index 00000000..8399c110 --- /dev/null +++ b/src/services/functions/build/build.api.services.ts @@ -0,0 +1,97 @@ +import {isNullish} from '@dfinity/utils'; +import type {GenerateResultData} from '@junobuild/cli-tools'; +import { + generateIdlApi as generateIdlApiLib, + generateZodApi as generateZodApiLib, + type TransformerOptions +} from '@junobuild/functions-tools'; +import {existsSync} from 'node:fs'; +import {mkdir} from 'node:fs/promises'; +import {detectJunoConfigType} from '../../../configs/juno.config'; +import {DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH} from '../../../constants/dev.constants'; +import type {BuildLang} from '../../../types/build'; +import {satellitedIdl} from '../../../utils/build.utils'; +import {readPackageJson} from '../../../utils/pkg.utils'; + +export const generateIdlApi = async () => { + const inputFile = satellitedIdl('ts'); + + if (!existsSync(inputFile)) { + return; + } + + const detectedConfig = detectJunoConfigType(); + const lang = detectedConfig?.configType === 'ts' ? 'ts' : 'mjs'; + + const generateFn: GenerateFn = async (params) => { await generateIdlApiLib({inputFile, ...params}); }; + + await generateApi({generateFn, lang}); +}; + +export const generateZodApi = async ({ + generatedData, + lang +}: { + generatedData: GenerateResultData; + lang: Omit; +}) => { + const {generate} = generatedData; + + if (isNullish(generate)) { + return; + } + + const {updates, queries} = generate; + const functions = [...queries, ...updates]; + + const generateFn: GenerateFn = async (params) => + { await generateZodApiLib({ + ...params, + functions + }); }; + + await generateApi({generateFn, lang}); +}; + +type GenerateFn = (params: { + outputFile: string; + transformerOptions: TransformerOptions; +}) => Promise; + +const generateApi = async ({ + generateFn, + lang +}: { + generateFn: GenerateFn; + lang: Omit; +}) => { + const readCoreLib = async (): Promise<'core' | 'core-standalone'> => { + try { + const {dependencies} = await readPackageJson(); + return Object.keys(dependencies ?? {}).includes('@junobuild/core-standalone') + ? 'core-standalone' + : 'core'; + } catch (_err: unknown) { + // This should not block the developer therefore we fallback to core which is the common way of using the library + return 'core'; + } + }; + + const coreLib = await readCoreLib(); + + // In TypeScript, unlike for Rust, the declarations folder might not exist yet when the functions + // are parsed for the first time + await mkdir(DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH, {recursive: true}); + + const outputLanguage = lang === 'mjs' ? 'js' : 'ts'; + + const outputFile = `${DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH}/satellite.api.${outputLanguage}`; + + await generateFn({ + outputFile, + transformerOptions: { + outputLanguage, + coreLib + } + }); +}; diff --git a/src/services/functions/build/build.did.services.ts b/src/services/functions/build/build.did.services.ts index 6b3150b4..b37ffe5b 100644 --- a/src/services/functions/build/build.did.services.ts +++ b/src/services/functions/build/build.did.services.ts @@ -1,22 +1,17 @@ import {isNullish} from '@dfinity/utils'; import {spawn} from '@junobuild/cli-tools'; -import {generateApi as generateApiLib} from '@junobuild/functions-tools'; import {existsSync} from 'node:fs'; import {readFile, rename, rm} from 'node:fs/promises'; import {join} from 'node:path'; -import {detectJunoConfigType} from '../../../configs/juno.config'; import { EXTENSION_DID_FILE_NAME, SATELLITE_CUSTOM_DID_FILE } from '../../../constants/build.constants'; import {DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH} from '../../../constants/dev.constants'; import {checkLocalIcpBindgen} from '../../../utils/build.bindgen.utils'; -import {readPackageJson} from '../../../utils/pkg.utils'; +import {satellitedIdl} from '../../../utils/build.utils'; import {detectPackageManager} from '../../../utils/pm.utils'; -const satellitedIdl = (type: 'js' | 'ts'): string => - `${DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH}/satellite.${type === 'ts' ? 'did.d.ts' : 'factory.did.js'}`; - export const generateDid = async () => { // No satellite_extension.did and therefore no services to generate to JS and TS. if (!existsSync(SATELLITE_CUSTOM_DID_FILE)) { @@ -72,39 +67,3 @@ const executeIcpBindgen = async () => { silentOut: true }); }; - -export const generateApi = async () => { - const inputFile = satellitedIdl('ts'); - - if (!existsSync(inputFile)) { - return; - } - - const detectedConfig = detectJunoConfigType(); - const outputLanguage = detectedConfig?.configType === 'ts' ? 'ts' : 'js'; - - const outputFile = `${DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH}/satellite.api.${outputLanguage}`; - - const readCoreLib = async (): Promise<'core' | 'core-standalone'> => { - try { - const {dependencies} = await readPackageJson(); - return Object.keys(dependencies ?? {}).includes('@junobuild/core-standalone') - ? 'core-standalone' - : 'core'; - } catch (_err: unknown) { - // This should not block the developer therefore we fallback to core which is the common way of using the library - return 'core'; - } - }; - - const coreLib = await readCoreLib(); - - await generateApiLib({ - inputFile, - outputFile, - transformerOptions: { - outputLanguage, - coreLib - } - }); -}; diff --git a/src/services/functions/build/build.javascript.services.ts b/src/services/functions/build/build.javascript.services.ts index 456f4cd1..aee21383 100644 --- a/src/services/functions/build/build.javascript.services.ts +++ b/src/services/functions/build/build.javascript.services.ts @@ -17,25 +17,41 @@ import type {BuildArgs, BuildLang, BuildMetadata} from '../../../types/build'; import {installEsbuild} from '../../../utils/esbuild.utils'; import {formatTime} from '../../../utils/format.utils'; import {readEmulatorConfigAndCreateDeployTargetDir} from '../../emulator/_fs.services'; +import {generateZodApi} from './build.api.services'; import {prepareJavaScriptBuildMetadata} from './build.metadata.services'; export const buildTypeScript = async ({ paths, exitOnError }: Pick = {}) => { - await build({lang: 'ts', paths, exitOnError}); + const result = await build({lang: 'ts', paths, exitOnError}); + + if (result.status === 'error') { + return; + } + + await generateZodApi({generatedData: result.result, lang: 'ts'}); }; export const buildJavaScript = async ({ paths, exitOnError }: Pick = {}) => { - await build({lang: 'mjs', paths, exitOnError}); + const result = await build({lang: 'mjs', paths, exitOnError}); + + if (result.status === 'error') { + return; + } + + await generateZodApi({generatedData: result.result, lang: 'mjs'}); }; type BuildArgsTsJs = {lang: Omit} & Pick; -const build = async ({exitOnError, ...params}: BuildArgsTsJs) => { +const build = async ({ + exitOnError, + ...params +}: BuildArgsTsJs): Promise<{status: 'success'; result: GenerateResultData} | {status: 'error'}> => { await installEsbuild(); await readEmulatorConfigAndCreateDeployTargetDir(); @@ -46,10 +62,14 @@ const build = async ({exitOnError, ...params}: BuildArgsTsJs) => { const buildResult = await generate({params, metadata}); printResults({metadata, generateResult: buildResult}); + + return {status: 'success', result: buildResult}; } catch (_error: unknown) { if (exitOnError !== false) { process.exit(1); } + + return {status: 'error'}; } }; @@ -113,10 +133,10 @@ const printResults = ({ console.log(`→ ${yellow(outputPath)} (${formatBytes(bytes)})`); if (nonNullish(generate)) { - const {totalQueries, totalUpdates, outputPath} = generate; + const {queries, updates, outputPath} = generate; console.log( - `${green('⬡')} ${totalQueries} queries and ${totalUpdates} updates generated to ${yellow(outputPath)}` + `${green('⬡')} ${queries.length} queries and ${updates.length} updates generated to ${yellow(outputPath)}` ); } }; diff --git a/src/services/functions/build/build.rust.services.ts b/src/services/functions/build/build.rust.services.ts index 10be8971..6e8ea0df 100644 --- a/src/services/functions/build/build.rust.services.ts +++ b/src/services/functions/build/build.rust.services.ts @@ -27,7 +27,8 @@ import {readSatelliteDid} from '../../../utils/did.utils'; import {checkRustVersion} from '../../../utils/env.utils'; import {formatTime} from '../../../utils/format.utils'; import {readEmulatorConfigAndCreateDeployTargetDir} from '../../emulator/_fs.services'; -import {generateApi, generateDid} from './build.did.services'; +import {generateIdlApi} from './build.api.services'; +import {generateDid} from './build.did.services'; import {prepareJunoPkgForSatellite, prepareJunoPkgForSputnik} from './build.metadata.services'; import {dispatchEmulatorTouchSatellite} from './touch.services'; @@ -137,10 +138,11 @@ export const buildRust = async ({ await did({cargoOutputWasm}); + await generateDid(); + if (target !== 'wasm32-wasip1') { - // TODO: support binding files for serverless functions in JS/TS - await generateDid(); - await generateApi(); + // TS/JS Api are generated after build and not based on the extracted did files + await generateIdlApi(); } spinner.text = 'Binding metadata...'; diff --git a/src/utils/build.utils.ts b/src/utils/build.utils.ts index 86edc17b..80b7a350 100644 --- a/src/utils/build.utils.ts +++ b/src/utils/build.utils.ts @@ -1,5 +1,6 @@ import {notEmptyString} from '@dfinity/utils'; import {hasArgs, nextArg} from '@junobuild/cli-tools'; +import {DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH} from '../constants/dev.constants'; import type {BuildArgs} from '../types/build'; export const buildArgs = (args?: string[]): BuildArgs => { @@ -39,3 +40,6 @@ const buildLang = (args?: string[]): Pick => { return {}; } }; + +export const satellitedIdl = (type: 'js' | 'ts'): string => + `${DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH}/satellite.${type === 'ts' ? 'did.d.ts' : 'factory.did.js'}`; From 360d032d56f5b6a9d19591be3769f626157d072f Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Thu, 12 Mar 2026 16:29:35 +0100 Subject: [PATCH 2/7] feat: generate did Signed-off-by: David Dal Busco --- .../functions/build/build.did.services.ts | 28 +++++++++++++++-- .../build/build.javascript.services.ts | 31 ++++++++++++------- .../functions/build/build.rust.services.ts | 7 ++--- 3 files changed, 48 insertions(+), 18 deletions(-) diff --git a/src/services/functions/build/build.did.services.ts b/src/services/functions/build/build.did.services.ts index b37ffe5b..76fc7634 100644 --- a/src/services/functions/build/build.did.services.ts +++ b/src/services/functions/build/build.did.services.ts @@ -1,18 +1,40 @@ import {isNullish} from '@dfinity/utils'; -import {spawn} from '@junobuild/cli-tools'; +import {type GenerateResultData, spawn} from '@junobuild/cli-tools'; +import {generateDid as generateDidLib} from '@junobuild/functions-tools'; import {existsSync} from 'node:fs'; import {readFile, rename, rm} from 'node:fs/promises'; import {join} from 'node:path'; import { EXTENSION_DID_FILE_NAME, - SATELLITE_CUSTOM_DID_FILE + SATELLITE_CUSTOM_DID_FILE, + SATELLITE_DID_FILE } from '../../../constants/build.constants'; import {DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH} from '../../../constants/dev.constants'; import {checkLocalIcpBindgen} from '../../../utils/build.bindgen.utils'; import {satellitedIdl} from '../../../utils/build.utils'; import {detectPackageManager} from '../../../utils/pm.utils'; -export const generateDid = async () => { +export const generateRustDid = async () => { + await generateDid(); +}; + +export const generateJsTsDid = async ({generatedData}: {generatedData: GenerateResultData}) => { + const {generate} = generatedData; + + if (isNullish(generate)) { + await rm(SATELLITE_CUSTOM_DID_FILE, {force: true}); + await rm(SATELLITE_DID_FILE, {force: true}); + return; + } + + const {updates, queries} = generate; + + await generateDidLib({updates, queries, outputFile: SATELLITE_CUSTOM_DID_FILE}); + + await generateDid(); +}; + +const generateDid = async () => { // No satellite_extension.did and therefore no services to generate to JS and TS. if (!existsSync(SATELLITE_CUSTOM_DID_FILE)) { return; diff --git a/src/services/functions/build/build.javascript.services.ts b/src/services/functions/build/build.javascript.services.ts index aee21383..cde5ce32 100644 --- a/src/services/functions/build/build.javascript.services.ts +++ b/src/services/functions/build/build.javascript.services.ts @@ -14,39 +14,42 @@ import { INDEX_TS } from '../../../constants/dev.constants'; import type {BuildArgs, BuildLang, BuildMetadata} from '../../../types/build'; +import {checkIcpBindgen} from '../../../utils/build.bindgen.utils'; import {installEsbuild} from '../../../utils/esbuild.utils'; import {formatTime} from '../../../utils/format.utils'; import {readEmulatorConfigAndCreateDeployTargetDir} from '../../emulator/_fs.services'; import {generateZodApi} from './build.api.services'; +import {generateJsTsDid} from './build.did.services'; import {prepareJavaScriptBuildMetadata} from './build.metadata.services'; export const buildTypeScript = async ({ paths, exitOnError }: Pick = {}) => { - const result = await build({lang: 'ts', paths, exitOnError}); - - if (result.status === 'error') { - return; - } - - await generateZodApi({generatedData: result.result, lang: 'ts'}); + await generateAndBuild({lang: 'ts', paths, exitOnError}); }; export const buildJavaScript = async ({ paths, exitOnError }: Pick = {}) => { - const result = await build({lang: 'mjs', paths, exitOnError}); + await generateAndBuild({lang: 'mjs', paths, exitOnError}); +}; + +type BuildArgsTsJs = {lang: Omit} & Pick; + +const generateAndBuild = async ({lang, ...rest}: BuildArgsTsJs) => { + const result = await build({lang, ...rest}); if (result.status === 'error') { return; } - await generateZodApi({generatedData: result.result, lang: 'mjs'}); -}; + const {result: generatedData} = result; -type BuildArgsTsJs = {lang: Omit} & Pick; + await generateJsTsDid({generatedData}); + await generateZodApi({generatedData, lang}); +}; const build = async ({ exitOnError, @@ -54,6 +57,12 @@ const build = async ({ }: BuildArgsTsJs): Promise<{status: 'success'; result: GenerateResultData} | {status: 'error'}> => { await installEsbuild(); + const {valid: validBindgen} = await checkIcpBindgen(); + + if (!validBindgen) { + return {status: 'error'}; + } + await readEmulatorConfigAndCreateDeployTargetDir(); try { diff --git a/src/services/functions/build/build.rust.services.ts b/src/services/functions/build/build.rust.services.ts index 6e8ea0df..7a04c931 100644 --- a/src/services/functions/build/build.rust.services.ts +++ b/src/services/functions/build/build.rust.services.ts @@ -28,7 +28,7 @@ import {checkRustVersion} from '../../../utils/env.utils'; import {formatTime} from '../../../utils/format.utils'; import {readEmulatorConfigAndCreateDeployTargetDir} from '../../emulator/_fs.services'; import {generateIdlApi} from './build.api.services'; -import {generateDid} from './build.did.services'; +import {generateRustDid} from './build.did.services'; import {prepareJunoPkgForSatellite, prepareJunoPkgForSputnik} from './build.metadata.services'; import {dispatchEmulatorTouchSatellite} from './touch.services'; @@ -138,10 +138,9 @@ export const buildRust = async ({ await did({cargoOutputWasm}); - await generateDid(); - if (target !== 'wasm32-wasip1') { - // TS/JS Api are generated after build and not based on the extracted did files + // TS/JS Did and Api are generated after build and not based on the extracted did files + await generateRustDid(); await generateIdlApi(); } From 0502044ef217e64abe210597919ca1328a612a1e Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Thu, 12 Mar 2026 16:37:37 +0100 Subject: [PATCH 3/7] chore: fmt Signed-off-by: David Dal Busco --- src/services/functions/build/build.api.services.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/services/functions/build/build.api.services.ts b/src/services/functions/build/build.api.services.ts index 8399c110..f82239e6 100644 --- a/src/services/functions/build/build.api.services.ts +++ b/src/services/functions/build/build.api.services.ts @@ -23,7 +23,9 @@ export const generateIdlApi = async () => { const detectedConfig = detectJunoConfigType(); const lang = detectedConfig?.configType === 'ts' ? 'ts' : 'mjs'; - const generateFn: GenerateFn = async (params) => { await generateIdlApiLib({inputFile, ...params}); }; + const generateFn: GenerateFn = async (params) => { + await generateIdlApiLib({inputFile, ...params}); + }; await generateApi({generateFn, lang}); }; @@ -44,11 +46,12 @@ export const generateZodApi = async ({ const {updates, queries} = generate; const functions = [...queries, ...updates]; - const generateFn: GenerateFn = async (params) => - { await generateZodApiLib({ + const generateFn: GenerateFn = async (params) => { + await generateZodApiLib({ ...params, functions - }); }; + }); + }; await generateApi({generateFn, lang}); }; From 604eaccf74fcfbf033506e07460e26d08609ef8a Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Thu, 12 Mar 2026 16:52:50 +0100 Subject: [PATCH 4/7] feat: cleanup and spinner Signed-off-by: David Dal Busco --- .../functions/build/build.api.services.ts | 20 +++++++++++++++---- .../build/build.javascript.services.ts | 20 ++++++++++++++++--- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/services/functions/build/build.api.services.ts b/src/services/functions/build/build.api.services.ts index f82239e6..a438a5fb 100644 --- a/src/services/functions/build/build.api.services.ts +++ b/src/services/functions/build/build.api.services.ts @@ -6,12 +6,13 @@ import { type TransformerOptions } from '@junobuild/functions-tools'; import {existsSync} from 'node:fs'; -import {mkdir} from 'node:fs/promises'; +import {mkdir, rm} from 'node:fs/promises'; import {detectJunoConfigType} from '../../../configs/juno.config'; import {DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH} from '../../../constants/dev.constants'; import type {BuildLang} from '../../../types/build'; import {satellitedIdl} from '../../../utils/build.utils'; import {readPackageJson} from '../../../utils/pkg.utils'; +import {SATELLITE_DID_FILE} from '../../../constants/build.constants'; export const generateIdlApi = async () => { const inputFile = satellitedIdl('ts'); @@ -40,6 +41,8 @@ export const generateZodApi = async ({ const {generate} = generatedData; if (isNullish(generate)) { + const {outputFile} = buildOutput({lang}); + await rm(outputFile, {force: true}); return; } @@ -86,9 +89,7 @@ const generateApi = async ({ // are parsed for the first time await mkdir(DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH, {recursive: true}); - const outputLanguage = lang === 'mjs' ? 'js' : 'ts'; - - const outputFile = `${DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH}/satellite.api.${outputLanguage}`; + const {outputFile, outputLanguage} = buildOutput({lang}); await generateFn({ outputFile, @@ -98,3 +99,14 @@ const generateApi = async ({ } }); }; + +const buildOutput = ({ + lang +}: { + lang: Omit; +}): Pick & {outputFile: string} => { + const outputLanguage = lang === 'mjs' ? 'js' : 'ts'; + const outputFile = `${DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH}/satellite.api.${outputLanguage}`; + + return {outputFile, outputLanguage}; +}; diff --git a/src/services/functions/build/build.javascript.services.ts b/src/services/functions/build/build.javascript.services.ts index cde5ce32..edd2e6e3 100644 --- a/src/services/functions/build/build.javascript.services.ts +++ b/src/services/functions/build/build.javascript.services.ts @@ -1,4 +1,4 @@ -import {nonNullish, notEmptyString} from '@dfinity/utils'; +import {isNullish, nonNullish, notEmptyString} from '@dfinity/utils'; import { buildAndGenerateFunctions, formatBytes, @@ -6,6 +6,7 @@ import { } from '@junobuild/cli-tools'; import {green, red, yellow} from 'kleur'; import {join} from 'node:path'; +import ora from 'ora'; import { DEPLOY_SPUTNIK_FUNCTIONS_PATH, DEPLOY_SPUTNIK_SCRIPT_PATH, @@ -47,8 +48,21 @@ const generateAndBuild = async ({lang, ...rest}: BuildArgsTsJs) => { const {result: generatedData} = result; - await generateJsTsDid({generatedData}); - await generateZodApi({generatedData, lang}); + const spinner = ora('Generating API...').start(); + + try { + await generateJsTsDid({generatedData}); + await generateZodApi({generatedData, lang}); + + if (isNullish(generatedData.generate)) { + spinner.stop(); + return; + } + + spinner.succeed('API generated'); + } catch { + spinner.fail('Error generating API'); + } }; const build = async ({ From b239c914d3b60e0c10560ca32dafc77838b2e472 Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Thu, 12 Mar 2026 17:00:11 +0100 Subject: [PATCH 5/7] feat: generate did Signed-off-by: David Dal Busco --- .../functions/build/build.api.services.ts | 1 - .../functions/build/build.did.services.ts | 78 +++---------------- .../functions/build/build.idl.services.ts | 69 ++++++++++++++++ .../build/build.javascript.services.ts | 3 + .../functions/build/build.rust.services.ts | 4 +- 5 files changed, 84 insertions(+), 71 deletions(-) create mode 100644 src/services/functions/build/build.idl.services.ts diff --git a/src/services/functions/build/build.api.services.ts b/src/services/functions/build/build.api.services.ts index a438a5fb..23867de8 100644 --- a/src/services/functions/build/build.api.services.ts +++ b/src/services/functions/build/build.api.services.ts @@ -12,7 +12,6 @@ import {DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH} from '../../../constants/ import type {BuildLang} from '../../../types/build'; import {satellitedIdl} from '../../../utils/build.utils'; import {readPackageJson} from '../../../utils/pkg.utils'; -import {SATELLITE_DID_FILE} from '../../../constants/build.constants'; export const generateIdlApi = async () => { const inputFile = satellitedIdl('ts'); diff --git a/src/services/functions/build/build.did.services.ts b/src/services/functions/build/build.did.services.ts index 76fc7634..79840155 100644 --- a/src/services/functions/build/build.did.services.ts +++ b/src/services/functions/build/build.did.services.ts @@ -1,22 +1,14 @@ import {isNullish} from '@dfinity/utils'; -import {type GenerateResultData, spawn} from '@junobuild/cli-tools'; +import {type GenerateResultData} from '@junobuild/cli-tools'; import {generateDid as generateDidLib} from '@junobuild/functions-tools'; -import {existsSync} from 'node:fs'; -import {readFile, rename, rm} from 'node:fs/promises'; -import {join} from 'node:path'; +import {rm, writeFile} from 'node:fs/promises'; import { + AUTO_GENERATED, EXTENSION_DID_FILE_NAME, SATELLITE_CUSTOM_DID_FILE, SATELLITE_DID_FILE } from '../../../constants/build.constants'; -import {DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH} from '../../../constants/dev.constants'; -import {checkLocalIcpBindgen} from '../../../utils/build.bindgen.utils'; -import {satellitedIdl} from '../../../utils/build.utils'; -import {detectPackageManager} from '../../../utils/pm.utils'; - -export const generateRustDid = async () => { - await generateDid(); -}; +import {readSatelliteDid} from '../../../utils/did.utils'; export const generateJsTsDid = async ({generatedData}: {generatedData: GenerateResultData}) => { const {generate} = generatedData; @@ -31,61 +23,11 @@ export const generateJsTsDid = async ({generatedData}: {generatedData: GenerateR await generateDidLib({updates, queries, outputFile: SATELLITE_CUSTOM_DID_FILE}); - await generateDid(); -}; - -const generateDid = async () => { - // No satellite_extension.did and therefore no services to generate to JS and TS. - if (!existsSync(SATELLITE_CUSTOM_DID_FILE)) { - return; - } - - // We check if the developer has added any API endpoints. If none, we do not need to generate the bindings for JS and TS. - const extensionDid = await readFile(SATELLITE_CUSTOM_DID_FILE, 'utf-8'); - const noAdditionalExtensionDid = 'service : { build_version : () -> (text) query }'; - - if (extensionDid.trim() === noAdditionalExtensionDid) { - return; - } - - await executeIcpBindgen(); - - // icp-bindgen generates the files in a `declarations` subfolder - // using a different suffix for JavaScript as the one we used to use. - // That's why we have to post-process the results. - const generatedFolder = join(DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH, 'declarations'); - - await rename(join(generatedFolder, `${EXTENSION_DID_FILE_NAME}.d.ts`), satellitedIdl('ts')); - await rename(join(generatedFolder, `${EXTENSION_DID_FILE_NAME}.js`), satellitedIdl('js')); - - await rm(generatedFolder, {recursive: true, force: true}); -}; - -const executeIcpBindgen = async () => { - const pm = detectPackageManager(); - - // The assertion on checkIcpBindgen() which requires the installation of icp-bindgen - // is performed earlier to reaching this point. Therefore, we can optimistically - // assume that if no tool is available locally, it should be available globally. - const {valid: localValid} = await checkLocalIcpBindgen({pm}); - const withGlobalCmd = localValid !== true; - - const localCommand = pm === 'npm' || isNullish(pm) ? 'npx' : pm; + const templateDid = await readSatelliteDid(); - // --actor-disabled: skip generating actor files, since we handle those ourselves - // --force: overwrite files. Required; otherwise, icp-bindgen would delete files at preprocess, - // which causes issues when multiple .did files are located in the same folder. - await spawn({ - command: withGlobalCmd ? 'icp-bindgen' : localCommand, - args: [ - ...(withGlobalCmd ? [] : ['icp-bindgen']), - '--did-file', - SATELLITE_CUSTOM_DID_FILE, - '--out-dir', - DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH, - '--actor-disabled', - '--force' - ], - silentOut: true - }); + await writeFile( + SATELLITE_DID_FILE, + `${AUTO_GENERATED}\n\nimport service "${EXTENSION_DID_FILE_NAME}";\n\n${templateDid}`, + 'utf-8' + ); }; diff --git a/src/services/functions/build/build.idl.services.ts b/src/services/functions/build/build.idl.services.ts new file mode 100644 index 00000000..ddb6fe49 --- /dev/null +++ b/src/services/functions/build/build.idl.services.ts @@ -0,0 +1,69 @@ +import {isNullish} from '@dfinity/utils'; +import {spawn} from '@junobuild/cli-tools'; +import {existsSync} from 'node:fs'; +import {readFile, rename, rm} from 'node:fs/promises'; +import {join} from 'node:path'; +import { + EXTENSION_DID_FILE_NAME, + SATELLITE_CUSTOM_DID_FILE +} from '../../../constants/build.constants'; +import {DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH} from '../../../constants/dev.constants'; +import {checkLocalIcpBindgen} from '../../../utils/build.bindgen.utils'; +import {satellitedIdl} from '../../../utils/build.utils'; +import {detectPackageManager} from '../../../utils/pm.utils'; + +export const generateIdl = async () => { + // No satellite_extension.did and therefore no services to generate to JS and TS. + if (!existsSync(SATELLITE_CUSTOM_DID_FILE)) { + return; + } + + // We check if the developer has added any API endpoints. If none, we do not need to generate the bindings for JS and TS. + const extensionDid = await readFile(SATELLITE_CUSTOM_DID_FILE, 'utf-8'); + const noAdditionalExtensionDid = 'service : { build_version : () -> (text) query }'; + + if (extensionDid.trim() === noAdditionalExtensionDid) { + return; + } + + await executeIcpBindgen(); + + // icp-bindgen generates the files in a `declarations` subfolder + // using a different suffix for JavaScript as the one we used to use. + // That's why we have to post-process the results. + const generatedFolder = join(DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH, 'declarations'); + + await rename(join(generatedFolder, `${EXTENSION_DID_FILE_NAME}.d.ts`), satellitedIdl('ts')); + await rename(join(generatedFolder, `${EXTENSION_DID_FILE_NAME}.js`), satellitedIdl('js')); + + await rm(generatedFolder, {recursive: true, force: true}); +}; + +const executeIcpBindgen = async () => { + const pm = detectPackageManager(); + + // The assertion on checkIcpBindgen() which requires the installation of icp-bindgen + // is performed earlier to reaching this point. Therefore, we can optimistically + // assume that if no tool is available locally, it should be available globally. + const {valid: localValid} = await checkLocalIcpBindgen({pm}); + const withGlobalCmd = localValid !== true; + + const localCommand = pm === 'npm' || isNullish(pm) ? 'npx' : pm; + + // --actor-disabled: skip generating actor files, since we handle those ourselves + // --force: overwrite files. Required; otherwise, icp-bindgen would delete files at preprocess, + // which causes issues when multiple .did files are located in the same folder. + await spawn({ + command: withGlobalCmd ? 'icp-bindgen' : localCommand, + args: [ + ...(withGlobalCmd ? [] : ['icp-bindgen']), + '--did-file', + SATELLITE_CUSTOM_DID_FILE, + '--out-dir', + DEVELOPER_PROJECT_SATELLITE_DECLARATIONS_PATH, + '--actor-disabled', + '--force' + ], + silentOut: true + }); +}; diff --git a/src/services/functions/build/build.javascript.services.ts b/src/services/functions/build/build.javascript.services.ts index edd2e6e3..d7998c04 100644 --- a/src/services/functions/build/build.javascript.services.ts +++ b/src/services/functions/build/build.javascript.services.ts @@ -21,6 +21,7 @@ import {formatTime} from '../../../utils/format.utils'; import {readEmulatorConfigAndCreateDeployTargetDir} from '../../emulator/_fs.services'; import {generateZodApi} from './build.api.services'; import {generateJsTsDid} from './build.did.services'; +import {generateIdl} from './build.idl.services'; import {prepareJavaScriptBuildMetadata} from './build.metadata.services'; export const buildTypeScript = async ({ @@ -52,6 +53,8 @@ const generateAndBuild = async ({lang, ...rest}: BuildArgsTsJs) => { try { await generateJsTsDid({generatedData}); + + await generateIdl(); await generateZodApi({generatedData, lang}); if (isNullish(generatedData.generate)) { diff --git a/src/services/functions/build/build.rust.services.ts b/src/services/functions/build/build.rust.services.ts index 7a04c931..b1303902 100644 --- a/src/services/functions/build/build.rust.services.ts +++ b/src/services/functions/build/build.rust.services.ts @@ -28,9 +28,9 @@ import {checkRustVersion} from '../../../utils/env.utils'; import {formatTime} from '../../../utils/format.utils'; import {readEmulatorConfigAndCreateDeployTargetDir} from '../../emulator/_fs.services'; import {generateIdlApi} from './build.api.services'; -import {generateRustDid} from './build.did.services'; import {prepareJunoPkgForSatellite, prepareJunoPkgForSputnik} from './build.metadata.services'; import {dispatchEmulatorTouchSatellite} from './touch.services'; +import {generateIdl} from './build.idl.services'; export const buildRust = async ({ paths, @@ -140,7 +140,7 @@ export const buildRust = async ({ if (target !== 'wasm32-wasip1') { // TS/JS Did and Api are generated after build and not based on the extracted did files - await generateRustDid(); + await generateIdl(); await generateIdlApi(); } From 67b6ce7a2fa7971380548e44e2570067a4abd4a5 Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Thu, 12 Mar 2026 17:00:51 +0100 Subject: [PATCH 6/7] chore: fmt Signed-off-by: David Dal Busco --- src/services/functions/build/build.rust.services.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/functions/build/build.rust.services.ts b/src/services/functions/build/build.rust.services.ts index b1303902..ef12a192 100644 --- a/src/services/functions/build/build.rust.services.ts +++ b/src/services/functions/build/build.rust.services.ts @@ -28,9 +28,9 @@ import {checkRustVersion} from '../../../utils/env.utils'; import {formatTime} from '../../../utils/format.utils'; import {readEmulatorConfigAndCreateDeployTargetDir} from '../../emulator/_fs.services'; import {generateIdlApi} from './build.api.services'; +import {generateIdl} from './build.idl.services'; import {prepareJunoPkgForSatellite, prepareJunoPkgForSputnik} from './build.metadata.services'; import {dispatchEmulatorTouchSatellite} from './touch.services'; -import {generateIdl} from './build.idl.services'; export const buildRust = async ({ paths, From 792d3115fcb2168a11618380ce2de80c910a2284 Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Thu, 12 Mar 2026 17:26:18 +0100 Subject: [PATCH 7/7] feat: use next Signed-off-by: David Dal Busco --- package-lock.json | 903 ++++++++++++++++++++++++++++++++++++---------- package.json | 24 +- 2 files changed, 722 insertions(+), 205 deletions(-) diff --git a/package-lock.json b/package-lock.json index 64599d36..faa1e267 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,17 +12,17 @@ "@dfinity/utils": "^4.1.0", "@icp-sdk/canisters": "^3.3.0", "@icp-sdk/core": "^5.0.0", - "@junobuild/admin": "^4.1.0-next-2026-03-12", - "@junobuild/cdn": "^2.3.0-next-2026-03-12", - "@junobuild/cli-tools": "file:../juno-js/packages/cli-tools", - "@junobuild/config": "^2.11.0-next-2026-03-12", - "@junobuild/config-loader": "^0.4.8-next-2026-03-12", - "@junobuild/core": "^5.2.0-next-2026-03-12", - "@junobuild/functions-tools": "file:../juno-js/packages/functions-tools", - "@junobuild/ic-client": "^8.0.0-next-2026-03-12", - "@junobuild/storage": "^2.3.0-next-2026-03-12", - "@junobuild/utils": "^0.2.6-next-2026-03-12", - "@junobuild/zod": "^0.0.2-next-2026-03-12", + "@junobuild/admin": "^4.1.0-next-2026-03-12.2", + "@junobuild/cdn": "^2.3.0-next-2026-03-12.2", + "@junobuild/cli-tools": "^0.10.2-next-2026-03-12.2", + "@junobuild/config": "^2.11.0-next-2026-03-12.2", + "@junobuild/config-loader": "^0.4.8-next-2026-03-12.2", + "@junobuild/core": "^5.2.0-next-2026-03-12.2", + "@junobuild/functions-tools": "^0.4.0-next-2026-03-12.2", + "@junobuild/ic-client": "^8.0.0-next-2026-03-12.2", + "@junobuild/storage": "^2.3.0-next-2026-03-12.2", + "@junobuild/utils": "^0.2.6-next-2026-03-12.2", + "@junobuild/zod": "^0.0.2-next-2026-03-12.2", "chokidar": "^4.0.3", "conf": "^14.0.0", "open": "^11.0.0", @@ -39,7 +39,7 @@ "@eslint/eslintrc": "^3.3.3", "@eslint/js": "^9.39.2", "@junobuild/emulator-playwright": "^0.0.5", - "@junobuild/functions": "^0.5.6-next-2026-03-12", + "@junobuild/functions": "^0.5.6-next-2026-03-12.2", "@playwright/test": "^1.58.1", "@types/node": "24.10.9", "@types/prompts": "^2.4.9", @@ -57,63 +57,6 @@ "node": ">=20" } }, - "../juno-js/packages/admin": { - "name": "@junobuild/admin", - "version": "0.0.58", - "extraneous": true, - "license": "MIT", - "peerDependencies": { - "@dfinity/agent": "^2.1.3", - "@dfinity/ic-management": "^6.0.0-next-2024-11-26", - "@dfinity/identity": "^2.1.3", - "@dfinity/principal": "^2.1.3", - "@junobuild/config": "*", - "@junobuild/utils": "*", - "semver": "7.*" - } - }, - "../juno-js/packages/cli-tools": { - "name": "@junobuild/cli-tools", - "version": "0.10.2", - "license": "MIT", - "dependencies": { - "file-type": "^21.1.1", - "listr2": "^9.0.5", - "mime-types": "^3.0.2", - "minimatch": "^10.1.2" - }, - "devDependencies": { - "@types/mime-types": "^3.0.1", - "@types/minimatch": "^6.0.0" - }, - "peerDependencies": { - "@dfinity/utils": "^4.1", - "@junobuild/cdn": "^2.3", - "@junobuild/config": "^2.7", - "@junobuild/functions-tools": "^0.4", - "@junobuild/storage": "^2.3", - "esbuild": "^0.27.0", - "ora": "^9" - } - }, - "../juno-js/packages/functions-tools": { - "name": "@junobuild/functions-tools", - "version": "0.4.0", - "license": "MIT", - "peerDependencies": { - "@babel/core": "7.28.4", - "@babel/parser": "7.28.4", - "@babel/plugin-transform-modules-commonjs": "7.27.1", - "@babel/preset-typescript": "7.27.1", - "@babel/traverse": "7.28.4", - "@babel/types": "7.28.4", - "@dfinity/utils": "^4.1", - "@junobuild/functions": "^0.5.6", - "@junobuild/utils": "*", - "@junobuild/zod": "^0.0.2", - "zod": "^4.3" - } - }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", @@ -918,6 +861,16 @@ "node": ">=6.9.0" } }, + "node_modules/@borewit/text-codec": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.2.tgz", + "integrity": "sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/@dfinity/cbor": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/@dfinity/cbor/-/cbor-0.2.2.tgz", @@ -950,7 +903,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -967,7 +919,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -984,7 +935,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1001,7 +951,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1018,7 +967,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1035,7 +983,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1052,7 +999,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1069,7 +1015,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1086,7 +1031,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1103,7 +1047,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1120,7 +1063,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1137,7 +1079,6 @@ "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1154,7 +1095,6 @@ "cpu": [ "mips64el" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1171,7 +1111,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1188,7 +1127,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1205,7 +1143,6 @@ "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1222,7 +1159,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1239,7 +1175,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1256,7 +1191,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1273,7 +1207,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1290,7 +1223,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1307,7 +1239,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1324,7 +1255,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1341,7 +1271,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1358,7 +1287,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1375,7 +1303,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1790,9 +1717,9 @@ } }, "node_modules/@junobuild/admin": { - "version": "4.1.0-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/admin/-/admin-4.1.0-next-2026-03-12.tgz", - "integrity": "sha512-3SJOfk0v4CNeiaNE3HwWkXMs+skT5Y/f34GIROY8LqzH8GaegO8b5QF9ATtgseOUwa4J5wUSAaHB01YBBTzO1A==", + "version": "4.1.0-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/admin/-/admin-4.1.0-next-2026-03-12.2.tgz", + "integrity": "sha512-A6rQJFG48a8Bip7ooabjgYX7TG1jCWxEQRWUqikDi20H/VASd1cIQRk37iilaY5Ab1H7jmPLTMOekWl7uDWn0g==", "license": "MIT", "peerDependencies": { "@dfinity/utils": "*", @@ -1805,9 +1732,9 @@ } }, "node_modules/@junobuild/cdn": { - "version": "2.3.0-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/cdn/-/cdn-2.3.0-next-2026-03-12.tgz", - "integrity": "sha512-i0qFlXKdP4QoebBggQKlFaDN+OdsIKR7z+JVZ9sGMs+0BkZD7/zBva4b13yawa9iSNIg5rpnhfQtaQBs1NzC2g==", + "version": "2.3.0-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/cdn/-/cdn-2.3.0-next-2026-03-12.2.tgz", + "integrity": "sha512-wMKcq7FFAzJztnGKpF+Didwj9BsmD7mToeqE0s/zg4uWc6CrGK8mk8vVXEMnTHy1BSuMbssDaMO6lYbT28prsA==", "license": "MIT", "peerDependencies": { "@dfinity/utils": "*", @@ -1820,13 +1747,30 @@ } }, "node_modules/@junobuild/cli-tools": { - "resolved": "../juno-js/packages/cli-tools", - "link": true + "version": "0.10.2-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/cli-tools/-/cli-tools-0.10.2-next-2026-03-12.2.tgz", + "integrity": "sha512-ZTugmm2vszW0d/FoiMgTqSrBa+J3ErErJpNGDL9AbaWE0KQVqnI+WOf/WSdu+M1bepyc2Me/HN0nvUaD07RBfg==", + "license": "MIT", + "dependencies": { + "file-type": "^21.1.1", + "listr2": "^9.0.5", + "mime-types": "^3.0.2", + "minimatch": "^10.1.2" + }, + "peerDependencies": { + "@dfinity/utils": "*", + "@junobuild/cdn": "*", + "@junobuild/config": "*", + "@junobuild/functions-tools": "*", + "@junobuild/storage": "*", + "esbuild": "*", + "ora": "*" + } }, "node_modules/@junobuild/config": { - "version": "2.11.0-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/config/-/config-2.11.0-next-2026-03-12.tgz", - "integrity": "sha512-0CSo6NELDokRBnAqYw/NOPrQJ+jeUfXo6kGBZ/RqSEXJl4FFQUCDPAHPDco2QnTahZg3VkhVAoSklwe0qJH1pQ==", + "version": "2.11.0-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/config/-/config-2.11.0-next-2026-03-12.2.tgz", + "integrity": "sha512-ijLlEgkK2nbMSrj1vY6Evr5MgxnktpKG20cnHbimKZSdNwLzCDancxHRjwMzXhVpkwOT19biHdz7CsgxJWT63Q==", "license": "MIT", "peerDependencies": { "@junobuild/zod": "*", @@ -1834,9 +1778,9 @@ } }, "node_modules/@junobuild/config-loader": { - "version": "0.4.8-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/config-loader/-/config-loader-0.4.8-next-2026-03-12.tgz", - "integrity": "sha512-6FWR7ZX2B1vbJ1axkr4cET9XnnkIxLo8ye6+hCAQMVUC0htvVWy0fG/KvhVBcvrw/4txCKDmi7GgNXlWFbjOVw==", + "version": "0.4.8-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/config-loader/-/config-loader-0.4.8-next-2026-03-12.2.tgz", + "integrity": "sha512-SL9faM1GZcs66fLZk4/rvxG0UBO3xjhmbGt6qOQbWAO/iIxcQsOO1+1MLN+240Sl8QinXeP20lLpGGTbhIDVrA==", "license": "MIT", "peerDependencies": { "@babel/core": "*", @@ -1846,9 +1790,9 @@ } }, "node_modules/@junobuild/core": { - "version": "5.2.0-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/core/-/core-5.2.0-next-2026-03-12.tgz", - "integrity": "sha512-W5++FvIdstAs7ILmEhNPUMhJQdrNhP11PwlR9zf+hfKUCYf3c0q/durR9SiVHeoh4lIEsEXNu0sRhaLqg7BPcQ==", + "version": "5.2.0-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/core/-/core-5.2.0-next-2026-03-12.2.tgz", + "integrity": "sha512-alEOcnR+36YI1AcublzvVushSYpSmsQYqCwOXUZMV+SBDTwuZr9DKwa4pXxVY4M8ovRelX5n5TwuJDJ2hQ+VJA==", "license": "MIT", "dependencies": { "@junobuild/auth": "^4", @@ -1922,10 +1866,9 @@ "license": "MIT" }, "node_modules/@junobuild/functions": { - "version": "0.5.6-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/functions/-/functions-0.5.6-next-2026-03-12.tgz", - "integrity": "sha512-55in5ImdI+/av4UqPTSetpY7+d5NRTUyBMvBotFW9I6GXK1xGa8Mv1J3Z/GoVacbjrxCdPEp88IrmRyvB4RC6A==", - "dev": true, + "version": "0.5.6-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/functions/-/functions-0.5.6-next-2026-03-12.2.tgz", + "integrity": "sha512-5eTV1D3SvsbEGU047xb7g+mq8p1q4PBJyuPTLDxRBD+YBsRLjdbrnllHS3aj//4VcDkSraamuwPLkRg+oNTpfw==", "license": "MIT", "peerDependencies": { "@dfinity/utils": "*", @@ -1935,13 +1878,28 @@ } }, "node_modules/@junobuild/functions-tools": { - "resolved": "../juno-js/packages/functions-tools", - "link": true + "version": "0.4.0-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/functions-tools/-/functions-tools-0.4.0-next-2026-03-12.2.tgz", + "integrity": "sha512-RKCl/4SKCQhIhWGQQuczAEf6wWPvf2iA8/bkLxkQhbAuySYChmZK3bxnjRikWGbQUKwrEHuKphTuciUO72oeeg==", + "license": "MIT", + "peerDependencies": { + "@babel/core": "*", + "@babel/parser": "*", + "@babel/plugin-transform-modules-commonjs": "*", + "@babel/preset-typescript": "*", + "@babel/traverse": "*", + "@babel/types": "*", + "@dfinity/utils": "*", + "@junobuild/functions": "*", + "@junobuild/utils": "*", + "@junobuild/zod": "*", + "zod": "*" + } }, "node_modules/@junobuild/ic-client": { - "version": "8.0.0-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/ic-client/-/ic-client-8.0.0-next-2026-03-12.tgz", - "integrity": "sha512-d/8+Tjbb/dg8YVE4qDSYD/+JRhHMat5J9jZ+d6J1tu9Xm9YJMW6IgabBzVDzxFinC4TYjSm3EeSQsObOt4gMIQ==", + "version": "8.0.0-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/ic-client/-/ic-client-8.0.0-next-2026-03-12.2.tgz", + "integrity": "sha512-RP01qe/8viKsCIUGRH29RhP8P5yrcPL+qG/AtkU5bpJGxz63gT1Thk2nlqai7sVyhAs2rrme6HY0QTzA3Ol+5g==", "license": "MIT", "peerDependencies": { "@dfinity/utils": "*", @@ -1950,9 +1908,9 @@ } }, "node_modules/@junobuild/storage": { - "version": "2.3.0-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/storage/-/storage-2.3.0-next-2026-03-12.tgz", - "integrity": "sha512-Ri4VEO1QN2jygCkwPvSAlO4mTSghrmUfoEgrns9mcbwXnpps0iGOdgiBv/5XBnosVViSH3TDtk8v0qZFlCqxbw==", + "version": "2.3.0-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/storage/-/storage-2.3.0-next-2026-03-12.2.tgz", + "integrity": "sha512-g2mucX9/umt5aYbYZTHXq5jAyiuE761z1SF+52S53MFf+OOV9Vda4joNbOtn7k3Cz1ZpcbBIoUhVx4TR7sORiA==", "license": "MIT", "peerDependencies": { "@dfinity/utils": "*", @@ -1962,18 +1920,18 @@ } }, "node_modules/@junobuild/utils": { - "version": "0.2.6-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/utils/-/utils-0.2.6-next-2026-03-12.tgz", - "integrity": "sha512-7MhPh2EgB1in50LdulJISL0Z9iTFdHSJXnoPWyrOwQl9/2nVFvEtnTXGhU56tl6HucgCv8S4bQwyLMOqMnQB/Q==", + "version": "0.2.6-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/utils/-/utils-0.2.6-next-2026-03-12.2.tgz", + "integrity": "sha512-tr6ubx/JePzvwDI06LMGbJvLvRXl2Wd8GmGykKaNlcbFemr+GbEOB7yfwFTCAZ1WYoE1X9meIYmZ7KPwt7/VQA==", "license": "MIT", "peerDependencies": { "@dfinity/utils": "*" } }, "node_modules/@junobuild/zod": { - "version": "0.0.2-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/zod/-/zod-0.0.2-next-2026-03-12.tgz", - "integrity": "sha512-Or1usOkARbmUszve51k8DSV6cxZPGG5m6lQ0gdUY0JZLFUeh8o/bFJ8Gfqav6Nyb7sX9khA6Ii64VFo3DWpsFQ==", + "version": "0.0.2-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/zod/-/zod-0.0.2-next-2026-03-12.2.tgz", + "integrity": "sha512-m1GI05tOO5mKI+bcm90GLsWhy+D5mh/19zqtk9MqC+nLki0uiKgbJbEQt0rOw4S5WswV9Ij2cAyeeHDuyCUI2Q==", "license": "MIT", "dependencies": { "@dfinity/zod-schemas": "^3.1" @@ -2070,6 +2028,29 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@tokenizer/inflate": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", + "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "token-types": "^6.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -2887,6 +2868,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-truncate": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz", + "integrity": "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==", + "license": "MIT", + "dependencies": { + "slice-ansi": "^8.0.0", + "string-width": "^8.2.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz", + "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==", + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2905,6 +2918,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -3173,6 +3192,12 @@ "license": "ISC", "peer": true }, + "node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, "node_modules/enhanced-resolve": { "version": "5.18.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", @@ -3363,7 +3388,6 @@ "version": "0.27.2", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", - "dev": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -3944,6 +3968,12 @@ "node": ">=0.10.0" } }, + "node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3998,6 +4028,24 @@ "node": ">=16.0.0" } }, + "node_modules/file-type": { + "version": "21.3.1", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.1.tgz", + "integrity": "sha512-SrzXX46I/zsRDjTb82eucsGg0ODq2NpGDp4HcsFKApPy8P8vACjpJRDoGGMfEzhFC0ry61ajd7f72J3603anBA==", + "license": "MIT", + "dependencies": { + "@tokenizer/inflate": "^0.4.1", + "strtok3": "^10.3.4", + "token-types": "^6.1.1", + "uint8array-extras": "^1.4.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -4368,6 +4416,26 @@ "license": "Apache-2.0", "peer": true }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -4594,6 +4662,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-fullwidth-code-point": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.3.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-generator-function": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", @@ -4997,6 +5080,23 @@ "node": ">= 0.8.0" } }, + "node_modules/listr2": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz", + "integrity": "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==", + "license": "MIT", + "dependencies": { + "cli-truncate": "^5.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -5034,6 +5134,53 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -5066,6 +5213,31 @@ "node": ">=10.0.0" } }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/mimic-function": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", @@ -5078,6 +5250,42 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimatch/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/minimatch/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", @@ -5656,6 +5864,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "license": "MIT" + }, "node_modules/run-applescript": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", @@ -5900,6 +6114,34 @@ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" }, + "node_modules/slice-ansi": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz", + "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.3", + "is-fullwidth-code-point": "^5.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/stdin-discarder": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", @@ -6039,6 +6281,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strtok3": { + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz", + "integrity": "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==", + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/stubborn-fs": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/stubborn-fs/-/stubborn-fs-1.2.5.tgz", @@ -6152,6 +6410,24 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/token-types": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.2.tgz", + "integrity": "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==", + "license": "MIT", + "dependencies": { + "@borewit/text-codec": "^0.2.1", + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/ts-api-utils": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", @@ -6512,6 +6788,52 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/wsl-utils": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.0.tgz", @@ -7129,6 +7451,11 @@ "@babel/helper-validator-identifier": "^7.27.1" } }, + "@borewit/text-codec": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.2.tgz", + "integrity": "sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==" + }, "@dfinity/cbor": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/@dfinity/cbor/-/cbor-0.2.2.tgz", @@ -7150,182 +7477,156 @@ "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", - "dev": true, "optional": true }, "@esbuild/android-arm": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", - "dev": true, "optional": true }, "@esbuild/android-arm64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", - "dev": true, "optional": true }, "@esbuild/android-x64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", - "dev": true, "optional": true }, "@esbuild/darwin-arm64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", - "dev": true, "optional": true }, "@esbuild/darwin-x64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", - "dev": true, "optional": true }, "@esbuild/freebsd-arm64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", - "dev": true, "optional": true }, "@esbuild/freebsd-x64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", - "dev": true, "optional": true }, "@esbuild/linux-arm": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", - "dev": true, "optional": true }, "@esbuild/linux-arm64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", - "dev": true, "optional": true }, "@esbuild/linux-ia32": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", - "dev": true, "optional": true }, "@esbuild/linux-loong64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", - "dev": true, "optional": true }, "@esbuild/linux-mips64el": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", - "dev": true, "optional": true }, "@esbuild/linux-ppc64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", - "dev": true, "optional": true }, "@esbuild/linux-riscv64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", - "dev": true, "optional": true }, "@esbuild/linux-s390x": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", - "dev": true, "optional": true }, "@esbuild/linux-x64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", - "dev": true, "optional": true }, "@esbuild/netbsd-arm64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", - "dev": true, "optional": true }, "@esbuild/netbsd-x64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", - "dev": true, "optional": true }, "@esbuild/openbsd-arm64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", - "dev": true, "optional": true }, "@esbuild/openbsd-x64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", - "dev": true, "optional": true }, "@esbuild/openharmony-arm64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", - "dev": true, "optional": true }, "@esbuild/sunos-x64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", - "dev": true, "optional": true }, "@esbuild/win32-arm64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", - "dev": true, "optional": true }, "@esbuild/win32-ia32": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", - "dev": true, "optional": true }, "@esbuild/win32-x64": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", - "dev": true, "optional": true }, "@eslint-community/eslint-plugin-eslint-comments": { @@ -7607,22 +7908,22 @@ } }, "@junobuild/admin": { - "version": "4.1.0-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/admin/-/admin-4.1.0-next-2026-03-12.tgz", - "integrity": "sha512-3SJOfk0v4CNeiaNE3HwWkXMs+skT5Y/f34GIROY8LqzH8GaegO8b5QF9ATtgseOUwa4J5wUSAaHB01YBBTzO1A==", + "version": "4.1.0-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/admin/-/admin-4.1.0-next-2026-03-12.2.tgz", + "integrity": "sha512-A6rQJFG48a8Bip7ooabjgYX7TG1jCWxEQRWUqikDi20H/VASd1cIQRk37iilaY5Ab1H7jmPLTMOekWl7uDWn0g==", "requires": {} }, "@junobuild/cdn": { - "version": "2.3.0-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/cdn/-/cdn-2.3.0-next-2026-03-12.tgz", - "integrity": "sha512-i0qFlXKdP4QoebBggQKlFaDN+OdsIKR7z+JVZ9sGMs+0BkZD7/zBva4b13yawa9iSNIg5rpnhfQtaQBs1NzC2g==", + "version": "2.3.0-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/cdn/-/cdn-2.3.0-next-2026-03-12.2.tgz", + "integrity": "sha512-wMKcq7FFAzJztnGKpF+Didwj9BsmD7mToeqE0s/zg4uWc6CrGK8mk8vVXEMnTHy1BSuMbssDaMO6lYbT28prsA==", "requires": {} }, "@junobuild/cli-tools": { - "version": "file:../juno-js/packages/cli-tools", + "version": "0.10.2-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/cli-tools/-/cli-tools-0.10.2-next-2026-03-12.2.tgz", + "integrity": "sha512-ZTugmm2vszW0d/FoiMgTqSrBa+J3ErErJpNGDL9AbaWE0KQVqnI+WOf/WSdu+M1bepyc2Me/HN0nvUaD07RBfg==", "requires": { - "@types/mime-types": "^3.0.1", - "@types/minimatch": "^6.0.0", "file-type": "^21.1.1", "listr2": "^9.0.5", "mime-types": "^3.0.2", @@ -7630,21 +7931,21 @@ } }, "@junobuild/config": { - "version": "2.11.0-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/config/-/config-2.11.0-next-2026-03-12.tgz", - "integrity": "sha512-0CSo6NELDokRBnAqYw/NOPrQJ+jeUfXo6kGBZ/RqSEXJl4FFQUCDPAHPDco2QnTahZg3VkhVAoSklwe0qJH1pQ==", + "version": "2.11.0-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/config/-/config-2.11.0-next-2026-03-12.2.tgz", + "integrity": "sha512-ijLlEgkK2nbMSrj1vY6Evr5MgxnktpKG20cnHbimKZSdNwLzCDancxHRjwMzXhVpkwOT19biHdz7CsgxJWT63Q==", "requires": {} }, "@junobuild/config-loader": { - "version": "0.4.8-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/config-loader/-/config-loader-0.4.8-next-2026-03-12.tgz", - "integrity": "sha512-6FWR7ZX2B1vbJ1axkr4cET9XnnkIxLo8ye6+hCAQMVUC0htvVWy0fG/KvhVBcvrw/4txCKDmi7GgNXlWFbjOVw==", + "version": "0.4.8-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/config-loader/-/config-loader-0.4.8-next-2026-03-12.2.tgz", + "integrity": "sha512-SL9faM1GZcs66fLZk4/rvxG0UBO3xjhmbGt6qOQbWAO/iIxcQsOO1+1MLN+240Sl8QinXeP20lLpGGTbhIDVrA==", "requires": {} }, "@junobuild/core": { - "version": "5.2.0-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/core/-/core-5.2.0-next-2026-03-12.tgz", - "integrity": "sha512-W5++FvIdstAs7ILmEhNPUMhJQdrNhP11PwlR9zf+hfKUCYf3c0q/durR9SiVHeoh4lIEsEXNu0sRhaLqg7BPcQ==", + "version": "5.2.0-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/core/-/core-5.2.0-next-2026-03-12.2.tgz", + "integrity": "sha512-alEOcnR+36YI1AcublzvVushSYpSmsQYqCwOXUZMV+SBDTwuZr9DKwa4pXxVY4M8ovRelX5n5TwuJDJ2hQ+VJA==", "requires": { "@junobuild/auth": "^4", "@junobuild/errors": "*", @@ -7686,38 +7987,39 @@ "integrity": "sha512-uyfpITxVCDfxcALXi1CVxrwSK8yoVPZW8pgzf5fD1c2Vp1k7B0AIs/s4usW8SLR1CVvjOzf9m/jtVeFe6kuOtQ==" }, "@junobuild/functions": { - "version": "0.5.6-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/functions/-/functions-0.5.6-next-2026-03-12.tgz", - "integrity": "sha512-55in5ImdI+/av4UqPTSetpY7+d5NRTUyBMvBotFW9I6GXK1xGa8Mv1J3Z/GoVacbjrxCdPEp88IrmRyvB4RC6A==", - "dev": true, + "version": "0.5.6-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/functions/-/functions-0.5.6-next-2026-03-12.2.tgz", + "integrity": "sha512-5eTV1D3SvsbEGU047xb7g+mq8p1q4PBJyuPTLDxRBD+YBsRLjdbrnllHS3aj//4VcDkSraamuwPLkRg+oNTpfw==", "requires": {} }, "@junobuild/functions-tools": { - "version": "file:../juno-js/packages/functions-tools", + "version": "0.4.0-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/functions-tools/-/functions-tools-0.4.0-next-2026-03-12.2.tgz", + "integrity": "sha512-RKCl/4SKCQhIhWGQQuczAEf6wWPvf2iA8/bkLxkQhbAuySYChmZK3bxnjRikWGbQUKwrEHuKphTuciUO72oeeg==", "requires": {} }, "@junobuild/ic-client": { - "version": "8.0.0-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/ic-client/-/ic-client-8.0.0-next-2026-03-12.tgz", - "integrity": "sha512-d/8+Tjbb/dg8YVE4qDSYD/+JRhHMat5J9jZ+d6J1tu9Xm9YJMW6IgabBzVDzxFinC4TYjSm3EeSQsObOt4gMIQ==", + "version": "8.0.0-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/ic-client/-/ic-client-8.0.0-next-2026-03-12.2.tgz", + "integrity": "sha512-RP01qe/8viKsCIUGRH29RhP8P5yrcPL+qG/AtkU5bpJGxz63gT1Thk2nlqai7sVyhAs2rrme6HY0QTzA3Ol+5g==", "requires": {} }, "@junobuild/storage": { - "version": "2.3.0-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/storage/-/storage-2.3.0-next-2026-03-12.tgz", - "integrity": "sha512-Ri4VEO1QN2jygCkwPvSAlO4mTSghrmUfoEgrns9mcbwXnpps0iGOdgiBv/5XBnosVViSH3TDtk8v0qZFlCqxbw==", + "version": "2.3.0-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/storage/-/storage-2.3.0-next-2026-03-12.2.tgz", + "integrity": "sha512-g2mucX9/umt5aYbYZTHXq5jAyiuE761z1SF+52S53MFf+OOV9Vda4joNbOtn7k3Cz1ZpcbBIoUhVx4TR7sORiA==", "requires": {} }, "@junobuild/utils": { - "version": "0.2.6-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/utils/-/utils-0.2.6-next-2026-03-12.tgz", - "integrity": "sha512-7MhPh2EgB1in50LdulJISL0Z9iTFdHSJXnoPWyrOwQl9/2nVFvEtnTXGhU56tl6HucgCv8S4bQwyLMOqMnQB/Q==", + "version": "0.2.6-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/utils/-/utils-0.2.6-next-2026-03-12.2.tgz", + "integrity": "sha512-tr6ubx/JePzvwDI06LMGbJvLvRXl2Wd8GmGykKaNlcbFemr+GbEOB7yfwFTCAZ1WYoE1X9meIYmZ7KPwt7/VQA==", "requires": {} }, "@junobuild/zod": { - "version": "0.0.2-next-2026-03-12", - "resolved": "https://registry.npmjs.org/@junobuild/zod/-/zod-0.0.2-next-2026-03-12.tgz", - "integrity": "sha512-Or1usOkARbmUszve51k8DSV6cxZPGG5m6lQ0gdUY0JZLFUeh8o/bFJ8Gfqav6Nyb7sX9khA6Ii64VFo3DWpsFQ==", + "version": "0.0.2-next-2026-03-12.2", + "resolved": "https://registry.npmjs.org/@junobuild/zod/-/zod-0.0.2-next-2026-03-12.2.tgz", + "integrity": "sha512-m1GI05tOO5mKI+bcm90GLsWhy+D5mh/19zqtk9MqC+nLki0uiKgbJbEQt0rOw4S5WswV9Ij2cAyeeHDuyCUI2Q==", "requires": { "@dfinity/zod-schemas": "^3.1" } @@ -7774,6 +8076,20 @@ "@scure/base": "~1.2.5" } }, + "@tokenizer/inflate": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", + "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", + "requires": { + "debug": "^4.4.3", + "token-types": "^6.1.1" + } + }, + "@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" + }, "@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -8260,6 +8576,26 @@ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.3.0.tgz", "integrity": "sha512-/+40ljC3ONVnYIttjMWrlL51nItDAbBrq2upN8BPyvGU/2n5Oxw3tbNwORCaNuNqLJnxGqOfjUuhsv7l5Q4IsQ==" }, + "cli-truncate": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz", + "integrity": "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==", + "requires": { + "slice-ansi": "^8.0.0", + "string-width": "^8.2.0" + }, + "dependencies": { + "string-width": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz", + "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==", + "requires": { + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" + } + } + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -8275,6 +8611,11 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -8444,6 +8785,11 @@ "integrity": "sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==", "peer": true }, + "emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==" + }, "enhanced-resolve": { "version": "5.18.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", @@ -8583,7 +8929,6 @@ "version": "0.27.2", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", - "dev": true, "requires": { "@esbuild/aix-ppc64": "0.27.2", "@esbuild/android-arm": "0.27.2", @@ -8975,6 +9320,11 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==" + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -9013,6 +9363,17 @@ "flat-cache": "^4.0.0" } }, + "file-type": { + "version": "21.3.1", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.1.tgz", + "integrity": "sha512-SrzXX46I/zsRDjTb82eucsGg0ODq2NpGDp4HcsFKApPy8P8vACjpJRDoGGMfEzhFC0ry61ajd7f72J3603anBA==", + "requires": { + "@tokenizer/inflate": "^0.4.1", + "strtok3": "^10.3.4", + "token-types": "^6.1.1", + "uint8array-extras": "^1.4.0" + } + }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -9243,6 +9604,11 @@ "integrity": "sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==", "peer": true }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, "ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -9375,6 +9741,14 @@ "call-bound": "^1.0.3" } }, + "is-fullwidth-code-point": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", + "requires": { + "get-east-asian-width": "^1.3.1" + } + }, "is-generator-function": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", @@ -9619,6 +9993,19 @@ "type-check": "~0.4.0" } }, + "listr2": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz", + "integrity": "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==", + "requires": { + "cli-truncate": "^5.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + } + }, "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -9643,6 +10030,34 @@ "yoctocolors": "^2.1.1" } }, + "log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "requires": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==" + }, + "slice-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "requires": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + } + } + } + }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -9663,11 +10078,47 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" }, + "mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==" + }, + "mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "requires": { + "mime-db": "^1.54.0" + } + }, "mimic-function": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==" }, + "minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "requires": { + "brace-expansion": "^5.0.2" + }, + "dependencies": { + "balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==" + }, + "brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "requires": { + "balanced-match": "^4.0.2" + } + } + } + }, "minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", @@ -10026,6 +10477,11 @@ "signal-exit": "^4.1.0" } }, + "rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" + }, "run-applescript": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", @@ -10180,6 +10636,22 @@ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" }, + "slice-ansi": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz", + "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==", + "requires": { + "ansi-styles": "^6.2.3", + "is-fullwidth-code-point": "^5.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==" + } + } + }, "stdin-discarder": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", @@ -10262,6 +10734,14 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, + "strtok3": { + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz", + "integrity": "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==", + "requires": { + "@tokenizer/token": "^0.3.0" + } + }, "stubborn-fs": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/stubborn-fs/-/stubborn-fs-1.2.5.tgz", @@ -10328,6 +10808,16 @@ "picomatch": "^4.0.3" } }, + "token-types": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.2.tgz", + "integrity": "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==", + "requires": { + "@borewit/text-codec": "^0.2.1", + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + } + }, "ts-api-utils": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", @@ -10554,6 +11044,33 @@ "has-tostringtag": "^1.0.2" } }, + "wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "requires": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==" + }, + "string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "requires": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + } + } + } + }, "wsl-utils": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.0.tgz", diff --git a/package.json b/package.json index 0c25b494..9ea55f37 100644 --- a/package.json +++ b/package.json @@ -32,17 +32,17 @@ "@dfinity/utils": "^4.1.0", "@icp-sdk/canisters": "^3.3.0", "@icp-sdk/core": "^5.0.0", - "@junobuild/admin": "^4.1.0-next-2026-03-12", - "@junobuild/cdn": "^2.3.0-next-2026-03-12", - "@junobuild/cli-tools": "file:../juno-js/packages/cli-tools", - "@junobuild/config": "^2.11.0-next-2026-03-12", - "@junobuild/config-loader": "^0.4.8-next-2026-03-12", - "@junobuild/core": "^5.2.0-next-2026-03-12", - "@junobuild/functions-tools": "file:../juno-js/packages/functions-tools", - "@junobuild/ic-client": "^8.0.0-next-2026-03-12", - "@junobuild/storage": "^2.3.0-next-2026-03-12", - "@junobuild/utils": "^0.2.6-next-2026-03-12", - "@junobuild/zod": "^0.0.2-next-2026-03-12", + "@junobuild/admin": "^4.1.0-next-2026-03-12.2", + "@junobuild/cdn": "^2.3.0-next-2026-03-12.2", + "@junobuild/cli-tools": "^0.10.2-next-2026-03-12.2", + "@junobuild/config": "^2.11.0-next-2026-03-12.2", + "@junobuild/config-loader": "^0.4.8-next-2026-03-12.2", + "@junobuild/core": "^5.2.0-next-2026-03-12.2", + "@junobuild/functions-tools": "^0.4.0-next-2026-03-12.2", + "@junobuild/ic-client": "^8.0.0-next-2026-03-12.2", + "@junobuild/storage": "^2.3.0-next-2026-03-12.2", + "@junobuild/utils": "^0.2.6-next-2026-03-12.2", + "@junobuild/zod": "^0.0.2-next-2026-03-12.2", "chokidar": "^4.0.3", "conf": "^14.0.0", "open": "^11.0.0", @@ -56,7 +56,7 @@ "@eslint/eslintrc": "^3.3.3", "@eslint/js": "^9.39.2", "@junobuild/emulator-playwright": "^0.0.5", - "@junobuild/functions": "^0.5.6-next-2026-03-12", + "@junobuild/functions": "^0.5.6-next-2026-03-12.2", "@playwright/test": "^1.58.1", "@types/node": "24.10.9", "@types/prompts": "^2.4.9",