diff --git a/Cargo.lock b/Cargo.lock index 8dce531..2c21f15 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1345,7 +1345,7 @@ dependencies = [ [[package]] name = "ic-oss" -version = "0.8.1" +version = "0.8.2" dependencies = [ "bytes", "candid", @@ -1362,7 +1362,7 @@ dependencies = [ [[package]] name = "ic-oss-can" -version = "0.8.1" +version = "0.8.2" dependencies = [ "candid", "ciborium", @@ -1375,7 +1375,7 @@ dependencies = [ [[package]] name = "ic-oss-cli" -version = "0.8.1" +version = "0.8.2" dependencies = [ "anyhow", "candid", @@ -1396,7 +1396,7 @@ dependencies = [ [[package]] name = "ic-oss-types" -version = "0.8.1" +version = "0.8.2" dependencies = [ "base64 0.21.7", "candid", @@ -1470,7 +1470,7 @@ checksum = "8de254dd67bbd58073e23dc1c8553ba12fa1dc610a19de94ad2bbcd0460c067f" [[package]] name = "ic_oss_bucket" -version = "0.8.1" +version = "0.8.2" dependencies = [ "base64 0.21.7", "candid", @@ -1490,7 +1490,7 @@ dependencies = [ [[package]] name = "ic_oss_cluster" -version = "0.8.1" +version = "0.8.2" dependencies = [ "candid", "ciborium", diff --git a/Cargo.toml b/Cargo.toml index e9cce23..0a8e53c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ strip = true opt-level = 's' [workspace.package] -version = "0.8.1" +version = "0.8.2" edition = "2021" repository = "https://github.com/ldclabs/ic-oss" keywords = ["file", "storage", "oss", "s3", "icp"] diff --git a/package-lock.json b/package-lock.json index 6ccfe0b..7243f75 100644 --- a/package-lock.json +++ b/package-lock.json @@ -827,6 +827,55 @@ "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/core": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.6.0.tgz", + "integrity": "sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", @@ -885,6 +934,53 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz", + "integrity": "sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz", + "integrity": "sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.5.tgz", + "integrity": "sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.0", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -947,6 +1043,20 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -1212,9 +1322,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.0.tgz", - "integrity": "sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", + "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", "cpu": [ "arm" ], @@ -1226,9 +1336,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.0.tgz", - "integrity": "sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz", + "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", "cpu": [ "arm64" ], @@ -1240,9 +1350,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.0.tgz", - "integrity": "sha512-zOnKWLgDld/svhKO5PD9ozmL6roy5OQ5T4ThvdYZLpiOhEGY+dp2NwUmxK0Ld91LrbjrvtNAE0ERBwjqhZTRAA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz", + "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", "cpu": [ "arm64" ], @@ -1254,9 +1364,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.0.tgz", - "integrity": "sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz", + "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", "cpu": [ "x64" ], @@ -1268,9 +1378,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.0.tgz", - "integrity": "sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz", + "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", "cpu": [ "arm" ], @@ -1282,9 +1392,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.0.tgz", - "integrity": "sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz", + "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", "cpu": [ "arm" ], @@ -1296,9 +1406,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.0.tgz", - "integrity": "sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz", + "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", "cpu": [ "arm64" ], @@ -1310,9 +1420,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.0.tgz", - "integrity": "sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz", + "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", "cpu": [ "arm64" ], @@ -1324,9 +1434,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.0.tgz", - "integrity": "sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz", + "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", "cpu": [ "ppc64" ], @@ -1338,9 +1448,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.0.tgz", - "integrity": "sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz", + "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", "cpu": [ "riscv64" ], @@ -1352,9 +1462,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.0.tgz", - "integrity": "sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz", + "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", "cpu": [ "s390x" ], @@ -1366,9 +1476,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.0.tgz", - "integrity": "sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz", + "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", "cpu": [ "x64" ], @@ -1380,9 +1490,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.0.tgz", - "integrity": "sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz", + "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", "cpu": [ "x64" ], @@ -1394,9 +1504,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.0.tgz", - "integrity": "sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz", + "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", "cpu": [ "arm64" ], @@ -1408,9 +1518,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.0.tgz", - "integrity": "sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz", + "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", "cpu": [ "ia32" ], @@ -1422,9 +1532,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.0.tgz", - "integrity": "sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", + "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", "cpu": [ "x64" ], @@ -1435,6 +1545,13 @@ "win32" ] }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, "node_modules/@sveltejs/adapter-static": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.4.tgz", @@ -1576,9 +1693,9 @@ } }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true, "license": "MIT" }, @@ -1814,14 +1931,14 @@ "license": "ISC" }, "node_modules/@vitest/expect": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz", - "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.2.tgz", + "integrity": "sha512-FEgtlN8mIUSEAAnlvn7mP8vzaWhEaAEvhSXCqrsijM7K6QqjB11qoRZYEd4AKSCDz8p0/+yH5LzhZ47qt+EyPg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "2.0.5", - "@vitest/utils": "2.0.5", + "@vitest/spy": "2.1.2", + "@vitest/utils": "2.1.2", "chai": "^5.1.1", "tinyrainbow": "^1.2.0" }, @@ -1829,10 +1946,38 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/@vitest/mocker": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.2.tgz", + "integrity": "sha512-ExElkCGMS13JAJy+812fw1aCv2QO/LBK6CyO4WOPAzLTmve50gydOlWhgdBJPx2ztbADUq3JVI0C5U+bShaeEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "^2.1.0-beta.1", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.11" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/spy": "2.1.2", + "msw": "^2.3.5", + "vite": "^5.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, "node_modules/@vitest/pretty-format": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz", - "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.2.tgz", + "integrity": "sha512-FIoglbHrSUlOJPDGIrh2bjX1sNars5HbxlcsFKCtKzu4+5lpsRhOCVcuzp0fEhAGHkPZRIXVNzPcpSlkoZ3LuA==", "dev": true, "license": "MIT", "dependencies": { @@ -1843,13 +1988,13 @@ } }, "node_modules/@vitest/runner": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.5.tgz", - "integrity": "sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.2.tgz", + "integrity": "sha512-UCsPtvluHO3u7jdoONGjOSil+uON5SSvU9buQh3lP7GgUXHp78guN1wRmZDX4wGK6J10f9NUtP6pO+SFquoMlw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "2.0.5", + "@vitest/utils": "2.1.2", "pathe": "^1.1.2" }, "funding": { @@ -1857,14 +2002,14 @@ } }, "node_modules/@vitest/snapshot": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.5.tgz", - "integrity": "sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.2.tgz", + "integrity": "sha512-xtAeNsZ++aRIYIUsek7VHzry/9AcxeULlegBvsdLncLmNCR6tR8SRjn8BbDP4naxtccvzTqZ+L1ltZlRCfBZFA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.0.5", - "magic-string": "^0.30.10", + "@vitest/pretty-format": "2.1.2", + "magic-string": "^0.30.11", "pathe": "^1.1.2" }, "funding": { @@ -1872,9 +2017,9 @@ } }, "node_modules/@vitest/spy": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz", - "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.2.tgz", + "integrity": "sha512-GSUi5zoy+abNRJwmFhBDC0yRuVUn8WMlQscvnbbXdKLXX9dE59YbfwXxuJ/mth6eeqIzofU8BB5XDo/Ns/qK2A==", "dev": true, "license": "MIT", "dependencies": { @@ -1885,14 +2030,13 @@ } }, "node_modules/@vitest/utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz", - "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.2.tgz", + "integrity": "sha512-zMO2KdYy6mx56btx9JvAqAZ6EyS3g49krMPPrgOp1yxGZiA93HumGk+bZ5jIZtOg5/VBYl5eBmGRQHqq4FG6uQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.0.5", - "estree-walker": "^3.0.3", + "@vitest/pretty-format": "2.1.2", "loupe": "^3.1.1", "tinyrainbow": "^1.2.0" }, @@ -3597,9 +3741,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", "dev": true, "license": "MIT", "dependencies": { @@ -3625,35 +3769,37 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, "license": "MIT", "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", "array.prototype.flat": "^1.3.2", "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "node_modules/eslint-plugin-import/node_modules/brace-expansion": { @@ -3964,30 +4110,6 @@ "node": ">=0.10.0" } }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -4240,16 +4362,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -4283,19 +4395,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-symbol-description": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", @@ -4627,16 +4726,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=16.17.0" - } - }, "node_modules/ic_oss_frontend": { "resolved": "src/ic_oss_frontend", "link": true @@ -5025,19 +5114,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -5341,14 +5417,11 @@ "license": "MIT" }, "node_modules/loupe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz", - "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", + "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.1" - } + "license": "MIT" }, "node_modules/lru-cache": { "version": "10.4.3", @@ -5405,13 +5478,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -5451,19 +5517,6 @@ "node": ">=16" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -5615,35 +5668,6 @@ "node": ">=0.10.0" } }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -5781,22 +5805,6 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -5980,9 +5988,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", "dev": true, "license": "ISC" }, @@ -6030,9 +6038,9 @@ } }, "node_modules/postcss": { - "version": "8.4.41", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", - "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "dev": true, "funding": [ { @@ -6051,8 +6059,8 @@ "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -6967,13 +6975,13 @@ } }, "node_modules/rollup": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.0.tgz", - "integrity": "sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz", + "integrity": "sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.5" + "@types/estree": "1.0.6" }, "bin": { "rollup": "dist/bin/rollup" @@ -6983,22 +6991,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.21.0", - "@rollup/rollup-android-arm64": "4.21.0", - "@rollup/rollup-darwin-arm64": "4.21.0", - "@rollup/rollup-darwin-x64": "4.21.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.21.0", - "@rollup/rollup-linux-arm-musleabihf": "4.21.0", - "@rollup/rollup-linux-arm64-gnu": "4.21.0", - "@rollup/rollup-linux-arm64-musl": "4.21.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.21.0", - "@rollup/rollup-linux-riscv64-gnu": "4.21.0", - "@rollup/rollup-linux-s390x-gnu": "4.21.0", - "@rollup/rollup-linux-x64-gnu": "4.21.0", - "@rollup/rollup-linux-x64-musl": "4.21.0", - "@rollup/rollup-win32-arm64-msvc": "4.21.0", - "@rollup/rollup-win32-ia32-msvc": "4.21.0", - "@rollup/rollup-win32-x64-msvc": "4.21.0", + "@rollup/rollup-android-arm-eabi": "4.24.0", + "@rollup/rollup-android-arm64": "4.24.0", + "@rollup/rollup-darwin-arm64": "4.24.0", + "@rollup/rollup-darwin-x64": "4.24.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.24.0", + "@rollup/rollup-linux-arm-musleabihf": "4.24.0", + "@rollup/rollup-linux-arm64-gnu": "4.24.0", + "@rollup/rollup-linux-arm64-musl": "4.24.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.24.0", + "@rollup/rollup-linux-riscv64-gnu": "4.24.0", + "@rollup/rollup-linux-s390x-gnu": "4.24.0", + "@rollup/rollup-linux-x64-gnu": "4.24.0", + "@rollup/rollup-linux-x64-musl": "4.24.0", + "@rollup/rollup-win32-arm64-msvc": "4.24.0", + "@rollup/rollup-win32-ia32-msvc": "4.24.0", + "@rollup/rollup-win32-x64-msvc": "4.24.0", "fsevents": "~2.3.2" } }, @@ -7365,9 +7373,9 @@ } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -7517,19 +7525,6 @@ "node": ">=4" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -8289,6 +8284,13 @@ "dev": true, "license": "MIT" }, + "node_modules/tinyexec": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.0.tgz", + "integrity": "sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==", + "dev": true, + "license": "MIT" + }, "node_modules/tinypool": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.1.tgz", @@ -8310,9 +8312,9 @@ } }, "node_modules/tinyspy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.0.tgz", - "integrity": "sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", "dev": true, "license": "MIT", "engines": { @@ -8536,9 +8538,9 @@ } }, "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -8631,14 +8633,14 @@ "license": "MIT" }, "node_modules/vite": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.2.tgz", - "integrity": "sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==", + "version": "5.4.8", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz", + "integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==", "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.21.3", - "postcss": "^8.4.41", + "postcss": "^8.4.43", "rollup": "^4.20.0" }, "bin": { @@ -8691,16 +8693,15 @@ } }, "node_modules/vite-node": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.5.tgz", - "integrity": "sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.2.tgz", + "integrity": "sha512-HPcGNN5g/7I2OtPjLqgOtCRu/qhVvBxTUD3qzitmL0SrG1cWFzxzhMDWussxSbrRYWqnKf8P2jiNhPMSN+ymsQ==", "dev": true, "license": "MIT", "dependencies": { "cac": "^6.7.14", - "debug": "^4.3.5", + "debug": "^4.3.6", "pathe": "^1.1.2", - "tinyrainbow": "^1.2.0", "vite": "^5.0.0" }, "bin": { @@ -8739,30 +8740,30 @@ } }, "node_modules/vitest": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.5.tgz", - "integrity": "sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.2.tgz", + "integrity": "sha512-veNjLizOMkRrJ6xxb+pvxN6/QAWg95mzcRjtmkepXdN87FNfxAss9RKe2far/G9cQpipfgP2taqg0KiWsquj8A==", "dev": true, "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.3.0", - "@vitest/expect": "2.0.5", - "@vitest/pretty-format": "^2.0.5", - "@vitest/runner": "2.0.5", - "@vitest/snapshot": "2.0.5", - "@vitest/spy": "2.0.5", - "@vitest/utils": "2.0.5", + "@vitest/expect": "2.1.2", + "@vitest/mocker": "2.1.2", + "@vitest/pretty-format": "^2.1.2", + "@vitest/runner": "2.1.2", + "@vitest/snapshot": "2.1.2", + "@vitest/spy": "2.1.2", + "@vitest/utils": "2.1.2", "chai": "^5.1.1", - "debug": "^4.3.5", - "execa": "^8.0.1", - "magic-string": "^0.30.10", + "debug": "^4.3.6", + "magic-string": "^0.30.11", "pathe": "^1.1.2", "std-env": "^3.7.0", - "tinybench": "^2.8.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.0", "tinypool": "^1.0.0", "tinyrainbow": "^1.2.0", "vite": "^5.0.0", - "vite-node": "2.0.5", + "vite-node": "2.1.2", "why-is-node-running": "^2.3.0" }, "bin": { @@ -8777,8 +8778,8 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "2.0.5", - "@vitest/ui": "2.0.5", + "@vitest/browser": "2.1.2", + "@vitest/ui": "2.1.2", "happy-dom": "*", "jsdom": "*" }, @@ -9104,34 +9105,34 @@ "version": "0.7.0", "license": "MIT", "dependencies": { - "@dfinity/agent": "^2.0.0", - "@dfinity/candid": "^2.0.0", - "@dfinity/principal": "^2.0.0", - "@dfinity/utils": "^2.4.0", - "@noble/hashes": "^1.4.0", + "@dfinity/agent": "^2.1.2", + "@dfinity/candid": "^2.1.2", + "@dfinity/principal": "^2.1.2", + "@dfinity/utils": "^2.5.1", + "@noble/hashes": "^1.5.0", "mime": "^4.0.4" }, "devDependencies": { - "@types/eslint": "^9.6.0", - "@types/node": "22.5.0", - "@typescript-eslint/eslint-plugin": "^8.2.0", - "@typescript-eslint/parser": "^8.2.0", - "eslint": "^9.9.1", + "@types/eslint": "^9.6.1", + "@types/node": "22.7.4", + "@typescript-eslint/eslint-plugin": "^8.8.0", + "@typescript-eslint/parser": "^8.8.0", + "eslint": "^9.12.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-import": "^2.29.1", + "eslint-plugin-import": "^2.31.0", "eslint-plugin-prettier": "^5.2.1", "prettier": "^3.3.3", - "typescript": "^5.5.4", - "vitest": "^2.0.5" + "typescript": "^5.6.2", + "vitest": "^2.1.2" }, "engines": { "node": ">=18.16.0" } }, "src/ic_oss_ts/node_modules/@dfinity/agent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@dfinity/agent/-/agent-2.0.0.tgz", - "integrity": "sha512-Cc2VDAMfxCNIQoaEeKPf0rbS/Y21HAF+eEFj6GfijNnUxS42i4zwUF2PUvEJZqaB2FQwA9SC7MDyuwL8BR2oJA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@dfinity/agent/-/agent-2.1.2.tgz", + "integrity": "sha512-UAXf6uXovhBlSp245RWlA21zcCavy+vVUvKVQUpesk1gLJpJlvsCE6hYOwTeFZAP+bjmPi0Tl7cx8DT2KM4eDQ==", "license": "Apache-2.0", "dependencies": { "@noble/curves": "^1.4.0", @@ -9142,28 +9143,39 @@ "simple-cbor": "^0.4.1" }, "peerDependencies": { - "@dfinity/candid": "^2.0.0", - "@dfinity/principal": "^2.0.0" + "@dfinity/candid": "^2.1.2", + "@dfinity/principal": "^2.1.2" } }, "src/ic_oss_ts/node_modules/@dfinity/candid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@dfinity/candid/-/candid-2.0.0.tgz", - "integrity": "sha512-poxIEnzErcKBM5yroabQ3VqQpiYZnqYZdLJWFuIQZzioGdP1mlnVLHx7IbgHN4HBlqVXYPFmEzMU02FnyYUA1Q==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@dfinity/candid/-/candid-2.1.2.tgz", + "integrity": "sha512-do69J9iahW2tlmbPdbmc8MDhi5cfIQyTcAlYqaSOOAyg+Kp8beCnW7mletXVfx30dyVlpkyCrYOXhbpQuSCKtw==", "license": "Apache-2.0", "peerDependencies": { - "@dfinity/principal": "^2.0.0" + "@dfinity/principal": "^2.1.2" } }, "src/ic_oss_ts/node_modules/@dfinity/principal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@dfinity/principal/-/principal-2.0.0.tgz", - "integrity": "sha512-cqJ5kOrPpxco+wvJC4TFBhdr4lkw9mnwKGAYunesyqdzSYi8lnFB4dShNqlHFWdwoxNAw6OZkt/B+0nLa+7Yqw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@dfinity/principal/-/principal-2.1.2.tgz", + "integrity": "sha512-L3Y0nDjquqNFseM2Gx5fI4GOUKjjezFr9/6ZjSwAFeDeb4Ubqld4ZKL3FEzv4QKNbfZgCx19b7UXi+OdmLhi4w==", "license": "Apache-2.0", "dependencies": { "@noble/hashes": "^1.3.1" } }, + "src/ic_oss_ts/node_modules/@dfinity/utils": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@dfinity/utils/-/utils-2.5.1.tgz", + "integrity": "sha512-ypu63xSX/7f79rVVe/T/2eiEwwi2+XvPNEuHz+isj8zf4jvEoG8DDDBZF9hedDgYC5uxuBDm1UJqHGYUcaCmRg==", + "license": "Apache-2.0", + "peerDependencies": { + "@dfinity/agent": "^2.1.2", + "@dfinity/candid": "^2.1.2", + "@dfinity/principal": "^2.1.2" + } + }, "src/ic_oss_ts/node_modules/@eslint/eslintrc": { "version": "3.1.0", "dev": true, @@ -9198,15 +9210,31 @@ } }, "src/ic_oss_ts/node_modules/@eslint/js": { - "version": "9.9.1", + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.12.0.tgz", + "integrity": "sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==", "dev": true, "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "src/ic_oss_ts/node_modules/@noble/hashes": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz", + "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "src/ic_oss_ts/node_modules/@types/eslint": { - "version": "9.6.0", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, "license": "MIT", "dependencies": { @@ -9215,7 +9243,9 @@ } }, "src/ic_oss_ts/node_modules/@types/node": { - "version": "22.5.0", + "version": "22.7.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.4.tgz", + "integrity": "sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==", "dev": true, "license": "MIT", "dependencies": { @@ -9223,15 +9253,17 @@ } }, "src/ic_oss_ts/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.2.0", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.0.tgz", + "integrity": "sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.2.0", - "@typescript-eslint/type-utils": "8.2.0", - "@typescript-eslint/utils": "8.2.0", - "@typescript-eslint/visitor-keys": "8.2.0", + "@typescript-eslint/scope-manager": "8.8.0", + "@typescript-eslint/type-utils": "8.8.0", + "@typescript-eslint/utils": "8.8.0", + "@typescript-eslint/visitor-keys": "8.8.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -9255,14 +9287,16 @@ } }, "src/ic_oss_ts/node_modules/@typescript-eslint/parser": { - "version": "8.2.0", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.8.0.tgz", + "integrity": "sha512-uEFUsgR+tl8GmzmLjRqz+VrDv4eoaMqMXW7ruXfgThaAShO9JTciKpEsB+TvnfFfbg5IpujgMXVV36gOJRLtZg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "8.2.0", - "@typescript-eslint/types": "8.2.0", - "@typescript-eslint/typescript-estree": "8.2.0", - "@typescript-eslint/visitor-keys": "8.2.0", + "@typescript-eslint/scope-manager": "8.8.0", + "@typescript-eslint/types": "8.8.0", + "@typescript-eslint/typescript-estree": "8.8.0", + "@typescript-eslint/visitor-keys": "8.8.0", "debug": "^4.3.4" }, "engines": { @@ -9282,12 +9316,14 @@ } }, "src/ic_oss_ts/node_modules/@typescript-eslint/scope-manager": { - "version": "8.2.0", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.0.tgz", + "integrity": "sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.2.0", - "@typescript-eslint/visitor-keys": "8.2.0" + "@typescript-eslint/types": "8.8.0", + "@typescript-eslint/visitor-keys": "8.8.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9298,12 +9334,14 @@ } }, "src/ic_oss_ts/node_modules/@typescript-eslint/type-utils": { - "version": "8.2.0", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.0.tgz", + "integrity": "sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.2.0", - "@typescript-eslint/utils": "8.2.0", + "@typescript-eslint/typescript-estree": "8.8.0", + "@typescript-eslint/utils": "8.8.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -9321,7 +9359,9 @@ } }, "src/ic_oss_ts/node_modules/@typescript-eslint/types": { - "version": "8.2.0", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.0.tgz", + "integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==", "dev": true, "license": "MIT", "engines": { @@ -9333,14 +9373,16 @@ } }, "src/ic_oss_ts/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.2.0", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.0.tgz", + "integrity": "sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.2.0", - "@typescript-eslint/visitor-keys": "8.2.0", + "@typescript-eslint/types": "8.8.0", + "@typescript-eslint/visitor-keys": "8.8.0", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", @@ -9360,14 +9402,16 @@ } }, "src/ic_oss_ts/node_modules/@typescript-eslint/utils": { - "version": "8.2.0", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.0.tgz", + "integrity": "sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.2.0", - "@typescript-eslint/types": "8.2.0", - "@typescript-eslint/typescript-estree": "8.2.0" + "@typescript-eslint/scope-manager": "8.8.0", + "@typescript-eslint/types": "8.8.0", + "@typescript-eslint/typescript-estree": "8.8.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9381,11 +9425,13 @@ } }, "src/ic_oss_ts/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.2.0", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.0.tgz", + "integrity": "sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.2.0", + "@typescript-eslint/types": "8.8.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -9406,26 +9452,32 @@ } }, "src/ic_oss_ts/node_modules/eslint": { - "version": "9.9.1", + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.12.0.tgz", + "integrity": "sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", "@eslint/config-array": "^0.18.0", + "@eslint/core": "^0.6.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.9.1", + "@eslint/js": "9.12.0", + "@eslint/plugin-kit": "^0.2.0", + "@humanfs/node": "^0.16.5", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.3.0", - "@nodelib/fs.walk": "^1.2.8", + "@humanwhocodes/retry": "^0.3.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.0.2", - "eslint-visitor-keys": "^4.0.0", - "espree": "^10.1.0", + "eslint-scope": "^8.1.0", + "eslint-visitor-keys": "^4.1.0", + "espree": "^10.2.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -9435,14 +9487,11 @@ "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", "text-table": "^0.2.0" }, "bin": { @@ -9464,7 +9513,9 @@ } }, "src/ic_oss_ts/node_modules/eslint-scope": { - "version": "8.0.2", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", + "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -9479,7 +9530,9 @@ } }, "src/ic_oss_ts/node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "4.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", + "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", "dev": true, "license": "Apache-2.0", "engines": { @@ -9501,13 +9554,15 @@ } }, "src/ic_oss_ts/node_modules/espree": { - "version": "10.1.0", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", + "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.12.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.0.0" + "eslint-visitor-keys": "^4.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9517,7 +9572,9 @@ } }, "src/ic_oss_ts/node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", + "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", "dev": true, "license": "Apache-2.0", "engines": { diff --git a/src/declarations/ic_oss_bucket/ic_oss_bucket.did b/src/declarations/ic_oss_bucket/ic_oss_bucket.did index 403adb9..d9378aa 100644 --- a/src/declarations/ic_oss_bucket/ic_oss_bucket.did +++ b/src/declarations/ic_oss_bucket/ic_oss_bucket.did @@ -36,7 +36,6 @@ type CreateFileInput = record { custom : opt vec record { text; MetadataValue }; hash : opt blob; name : text; - crc32 : opt nat32; size : opt nat64; content_type : text; parent : nat32; @@ -129,7 +128,6 @@ type UpdateFileChunkInput = record { id : nat32; chunk_index : nat32; content : blob; - crc32 : opt nat32; }; type UpdateFileChunkOutput = record { updated_at : nat64; filled : nat64 }; type UpdateFileInput = record { @@ -138,6 +136,7 @@ type UpdateFileInput = record { custom : opt vec record { text; MetadataValue }; hash : opt blob; name : opt text; + size : opt nat64; content_type : opt text; }; type UpdateFileOutput = record { updated_at : nat64 }; diff --git a/src/declarations/ic_oss_bucket/ic_oss_bucket.did.d.ts b/src/declarations/ic_oss_bucket/ic_oss_bucket.did.d.ts index 2781de5..490a586 100644 --- a/src/declarations/ic_oss_bucket/ic_oss_bucket.did.d.ts +++ b/src/declarations/ic_oss_bucket/ic_oss_bucket.did.d.ts @@ -43,7 +43,6 @@ export interface CreateFileInput { 'custom' : [] | [Array<[string, MetadataValue]>], 'hash' : [] | [Uint8Array | number[]], 'name' : string, - 'crc32' : [] | [number], 'size' : [] | [bigint], 'content_type' : string, 'parent' : number, @@ -155,7 +154,6 @@ export interface UpdateFileChunkInput { 'id' : number, 'chunk_index' : number, 'content' : Uint8Array | number[], - 'crc32' : [] | [number], } export interface UpdateFileChunkOutput { 'updated_at' : bigint, @@ -167,6 +165,7 @@ export interface UpdateFileInput { 'custom' : [] | [Array<[string, MetadataValue]>], 'hash' : [] | [Uint8Array | number[]], 'name' : [] | [string], + 'size' : [] | [bigint], 'content_type' : [] | [string], } export interface UpdateFileOutput { 'updated_at' : bigint } diff --git a/src/declarations/ic_oss_bucket/ic_oss_bucket.did.js b/src/declarations/ic_oss_bucket/ic_oss_bucket.did.js index 970bcce..b79e00e 100644 --- a/src/declarations/ic_oss_bucket/ic_oss_bucket.did.js +++ b/src/declarations/ic_oss_bucket/ic_oss_bucket.did.js @@ -47,7 +47,6 @@ export const idlFactory = ({ IDL }) => { 'custom' : IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue))), 'hash' : IDL.Opt(IDL.Vec(IDL.Nat8)), 'name' : IDL.Text, - 'crc32' : IDL.Opt(IDL.Nat32), 'size' : IDL.Opt(IDL.Nat64), 'content_type' : IDL.Text, 'parent' : IDL.Nat32, @@ -173,7 +172,6 @@ export const idlFactory = ({ IDL }) => { 'id' : IDL.Nat32, 'chunk_index' : IDL.Nat32, 'content' : IDL.Vec(IDL.Nat8), - 'crc32' : IDL.Opt(IDL.Nat32), }); const UpdateFileChunkOutput = IDL.Record({ 'updated_at' : IDL.Nat64, @@ -189,6 +187,7 @@ export const idlFactory = ({ IDL }) => { 'custom' : IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue))), 'hash' : IDL.Opt(IDL.Vec(IDL.Nat8)), 'name' : IDL.Opt(IDL.Text), + 'size' : IDL.Opt(IDL.Nat64), 'content_type' : IDL.Opt(IDL.Text), }); const UpdateFolderInput = IDL.Record({ diff --git a/src/ic_oss/src/bucket.rs b/src/ic_oss/src/bucket.rs index 41096d8..30b1558 100644 --- a/src/ic_oss/src/bucket.rs +++ b/src/ic_oss/src/bucket.rs @@ -1,7 +1,7 @@ use bytes::{Bytes, BytesMut}; use candid::{CandidType, Principal}; use ic_agent::Agent; -use ic_oss_types::{bucket::*, crc32, file::*, folder::*, format_error}; +use ic_oss_types::{bucket::*, file::*, folder::*, format_error}; use serde::{Deserialize, Serialize}; use serde_bytes::{ByteArray, ByteBuf}; use sha3::{Digest, Sha3_256}; @@ -316,7 +316,6 @@ impl Client { file.hash = Some(hash.into()); } file.content = Some(ByteBuf::from(content.to_vec())); - file.crc32 = Some(crc32(&content)); file.status = if self.set_readonly { Some(1) } else { None }; let res = self.create_file(file).await?; @@ -422,7 +421,6 @@ impl Client { let agent = self.agent.clone(); tokio::spawn(async move { let res = async { - let checksum = crc32(&chunk); let out: Result = update_call( &agent, &bucket, @@ -432,7 +430,6 @@ impl Client { id, chunk_index, content: ByteBuf::from(chunk.to_vec()), - crc32: Some(checksum), }, &access_token, ), diff --git a/src/ic_oss_bucket/ic_oss_bucket.did b/src/ic_oss_bucket/ic_oss_bucket.did index 81a090b..d9378aa 100644 --- a/src/ic_oss_bucket/ic_oss_bucket.did +++ b/src/ic_oss_bucket/ic_oss_bucket.did @@ -36,7 +36,6 @@ type CreateFileInput = record { custom : opt vec record { text; MetadataValue }; hash : opt blob; name : text; - crc32 : opt nat32; size : opt nat64; content_type : text; parent : nat32; @@ -129,7 +128,6 @@ type UpdateFileChunkInput = record { id : nat32; chunk_index : nat32; content : blob; - crc32 : opt nat32; }; type UpdateFileChunkOutput = record { updated_at : nat64; filled : nat64 }; type UpdateFileInput = record { diff --git a/src/ic_oss_bucket/src/api_update.rs b/src/ic_oss_bucket/src/api_update.rs index e391928..6cc9820 100644 --- a/src/ic_oss_bucket/src/api_update.rs +++ b/src/ic_oss_bucket/src/api_update.rs @@ -1,4 +1,4 @@ -use ic_oss_types::{crc32, file::*, folder::*, to_cbor_bytes}; +use ic_oss_types::{file::*, folder::*, to_cbor_bytes}; use serde_bytes::ByteBuf; use std::collections::BTreeSet; @@ -58,11 +58,6 @@ fn create_file( })?; if let Some(content) = input.content { - if let Some(checksum) = input.crc32 { - if crc32(&content) != checksum { - Err("crc32 checksum mismatch".to_string())?; - } - } if size > 0 && content.len() != size as usize { Err("content size mismatch".to_string())?; } @@ -135,13 +130,20 @@ fn update_file_info( }; let id = input.id; - store::fs::update_file(input, now_ms, |file| { + let res = store::fs::update_file(input, now_ms, |file| { match permission::check_file_update(&ctx.ps, &canister, id, file.parent) { true => Ok(()), false => Err("permission denied".to_string()), } - })?; - Ok(UpdateFileOutput { updated_at: now_ms }) + }); + + match res { + Ok(_) => Ok(UpdateFileOutput { updated_at: now_ms }), + Err(err) => { + // trap and rollback state + ic_cdk::trap(&format!("update file info failed: {}", err)); + } + } } #[ic_cdk::update] @@ -149,12 +151,6 @@ fn update_file_chunk( input: UpdateFileChunkInput, access_token: Option, ) -> Result { - if let Some(checksum) = input.crc32 { - if crc32(&input.content) != checksum { - Err("crc32 checksum mismatch".to_string())?; - } - } - let now_ms = ic_cdk::api::time() / MILLISECONDS; let canister = ic_cdk::id(); let ctx = match store::state::with(|s| { diff --git a/src/ic_oss_bucket/src/store.rs b/src/ic_oss_bucket/src/store.rs index 0686547..234fe3c 100644 --- a/src/ic_oss_bucket/src/store.rs +++ b/src/ic_oss_bucket/src/store.rs @@ -1437,6 +1437,7 @@ mod test { let f1 = fs::add_file(FileMetadata { name: "f1.bin".to_string(), hash: Some(ByteArray::from([1u8; 32])), + size: 0, ..Default::default() }) .unwrap(); @@ -1450,6 +1451,18 @@ mod test { let _ = fs::update_chunk(f1, 0, 999, [0u8; 32].to_vec(), |_| Ok(())).unwrap(); let _ = fs::update_chunk(f1, 1, 1000, [0u8; 32].to_vec(), |_| Ok(())).unwrap(); + let res = fs::get_full_chunks(f1); + assert!(res.is_err()); + fs::update_file( + UpdateFileInput { + id: f1, + size: Some(64), + ..Default::default() + }, + 1000, + |_| Ok(()), + ) + .unwrap(); let f1_data = fs::get_full_chunks(f1).unwrap(); assert_eq!(f1_data, [0u8; 64]); @@ -1469,12 +1482,24 @@ mod test { let f2 = fs::add_file(FileMetadata { name: "f2.bin".to_string(), hash: Some(ByteArray::from([2u8; 32])), + size: 48, ..Default::default() }) .unwrap(); assert_eq!(f2, 1); fs::update_chunk(f2, 0, 999, [0u8; 16].to_vec(), |_| Ok(())).unwrap(); fs::update_chunk(f2, 1, 1000, [1u8; 16].to_vec(), |_| Ok(())).unwrap(); + + fs::update_file( + UpdateFileInput { + id: f1, + size: Some(96), + ..Default::default() + }, + 1000, + |_| Ok(()), + ) + .unwrap(); fs::update_chunk(f1, 3, 1000, [1u8; 16].to_vec(), |_| Ok(())).unwrap(); fs::update_chunk(f2, 2, 1000, [2u8; 16].to_vec(), |_| Ok(())).unwrap(); fs::update_chunk(f1, 2, 1000, [2u8; 16].to_vec(), |_| Ok(())).unwrap(); diff --git a/src/ic_oss_can/src/store.rs b/src/ic_oss_can/src/store.rs index f889049..120a8a1 100644 --- a/src/ic_oss_can/src/store.rs +++ b/src/ic_oss_can/src/store.rs @@ -252,7 +252,7 @@ macro_rules! ic_oss_fs { } pub mod api { - use ic_oss_types::{crc32, file::*}; + use ic_oss_types::file::*; use serde_bytes::ByteBuf; use super::fs; @@ -302,11 +302,6 @@ macro_rules! ic_oss_fs { })?; if let Some(content) = input.content { - if let Some(checksum) = input.crc32 { - if crc32(&content) != checksum { - Err("crc32 checksum mismatch".to_string())?; - } - } if size > 0 && content.len() != size as usize { Err("content size mismatch".to_string())?; } @@ -363,11 +358,6 @@ macro_rules! ic_oss_fs { input: UpdateFileChunkInput, _access_token: Option, ) -> Result { - if let Some(checksum) = input.crc32 { - if crc32(&input.content) != checksum { - Err("crc32 checksum mismatch".to_string())?; - } - } let caller = ic_cdk::api::caller(); if !fs::is_manager(&caller) { Err("permission denied".to_string())?; diff --git a/src/ic_oss_ts/LICENSE b/src/ic_oss_ts/LICENSE new file mode 100644 index 0000000..5630aee --- /dev/null +++ b/src/ic_oss_ts/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 LDC Labs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/ic_oss_ts/candid/ic_oss_bucket/ic_oss_bucket.did b/src/ic_oss_ts/candid/ic_oss_bucket/ic_oss_bucket.did index c1d9a48..d9378aa 100644 --- a/src/ic_oss_ts/candid/ic_oss_bucket/ic_oss_bucket.did +++ b/src/ic_oss_ts/candid/ic_oss_bucket/ic_oss_bucket.did @@ -36,7 +36,6 @@ type CreateFileInput = record { custom : opt vec record { text; MetadataValue }; hash : opt blob; name : text; - crc32 : opt nat32; size : opt nat64; content_type : text; parent : nat32; @@ -104,6 +103,7 @@ type Result_10 = variant { Ok : vec FileInfo; Err : text }; type Result_11 = variant { Ok : vec FolderInfo; Err : text }; type Result_12 = variant { Ok : UpdateFileOutput; Err : text }; type Result_13 = variant { Ok : UpdateFileChunkOutput; Err : text }; +type Result_14 = variant { Ok : text; Err : text }; type Result_2 = variant { Ok : CreateFileOutput; Err : text }; type Result_3 = variant { Ok : bool; Err : text }; type Result_4 = variant { Ok : BucketInfo; Err : text }; @@ -128,7 +128,6 @@ type UpdateFileChunkInput = record { id : nat32; chunk_index : nat32; content : blob; - crc32 : opt nat32; }; type UpdateFileChunkOutput = record { updated_at : nat64; filled : nat64 }; type UpdateFileInput = record { @@ -137,6 +136,7 @@ type UpdateFileInput = record { custom : opt vec record { text; MetadataValue }; hash : opt blob; name : opt text; + size : opt nat64; content_type : opt text; }; type UpdateFileOutput = record { updated_at : nat64 }; @@ -177,6 +177,9 @@ service : (opt CanisterArgs) -> { update_file_chunk : (UpdateFileChunkInput, opt blob) -> (Result_13); update_file_info : (UpdateFileInput, opt blob) -> (Result_12); update_folder_info : (UpdateFolderInput, opt blob) -> (Result_12); + validate2_admin_set_auditors : (vec principal) -> (Result_14); + validate2_admin_set_managers : (vec principal) -> (Result_14); + validate2_admin_update_bucket : (UpdateBucketInput) -> (Result_14); validate_admin_set_auditors : (vec principal) -> (Result); validate_admin_set_managers : (vec principal) -> (Result); validate_admin_update_bucket : (UpdateBucketInput) -> (Result); diff --git a/src/ic_oss_ts/candid/ic_oss_bucket/ic_oss_bucket.did.d.ts b/src/ic_oss_ts/candid/ic_oss_bucket/ic_oss_bucket.did.d.ts index e6245d6..490a586 100644 --- a/src/ic_oss_ts/candid/ic_oss_bucket/ic_oss_bucket.did.d.ts +++ b/src/ic_oss_ts/candid/ic_oss_bucket/ic_oss_bucket.did.d.ts @@ -43,7 +43,6 @@ export interface CreateFileInput { 'custom' : [] | [Array<[string, MetadataValue]>], 'hash' : [] | [Uint8Array | number[]], 'name' : string, - 'crc32' : [] | [number], 'size' : [] | [bigint], 'content_type' : string, 'parent' : number, @@ -121,6 +120,8 @@ export type Result_12 = { 'Ok' : UpdateFileOutput } | { 'Err' : string }; export type Result_13 = { 'Ok' : UpdateFileChunkOutput } | { 'Err' : string }; +export type Result_14 = { 'Ok' : string } | + { 'Err' : string }; export type Result_2 = { 'Ok' : CreateFileOutput } | { 'Err' : string }; export type Result_3 = { 'Ok' : boolean } | @@ -153,7 +154,6 @@ export interface UpdateFileChunkInput { 'id' : number, 'chunk_index' : number, 'content' : Uint8Array | number[], - 'crc32' : [] | [number], } export interface UpdateFileChunkOutput { 'updated_at' : bigint, @@ -165,6 +165,7 @@ export interface UpdateFileInput { 'custom' : [] | [Array<[string, MetadataValue]>], 'hash' : [] | [Uint8Array | number[]], 'name' : [] | [string], + 'size' : [] | [bigint], 'content_type' : [] | [string], } export interface UpdateFileOutput { 'updated_at' : bigint } @@ -256,6 +257,9 @@ export interface _SERVICE { [UpdateFolderInput, [] | [Uint8Array | number[]]], Result_12 >, + 'validate2_admin_set_auditors' : ActorMethod<[Array], Result_14>, + 'validate2_admin_set_managers' : ActorMethod<[Array], Result_14>, + 'validate2_admin_update_bucket' : ActorMethod<[UpdateBucketInput], Result_14>, 'validate_admin_set_auditors' : ActorMethod<[Array], Result>, 'validate_admin_set_managers' : ActorMethod<[Array], Result>, 'validate_admin_update_bucket' : ActorMethod<[UpdateBucketInput], Result>, diff --git a/src/ic_oss_ts/candid/ic_oss_bucket/ic_oss_bucket.did.js b/src/ic_oss_ts/candid/ic_oss_bucket/ic_oss_bucket.did.js index 58c8451..b79e00e 100644 --- a/src/ic_oss_ts/candid/ic_oss_bucket/ic_oss_bucket.did.js +++ b/src/ic_oss_ts/candid/ic_oss_bucket/ic_oss_bucket.did.js @@ -47,7 +47,6 @@ export const idlFactory = ({ IDL }) => { 'custom' : IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue))), 'hash' : IDL.Opt(IDL.Vec(IDL.Nat8)), 'name' : IDL.Text, - 'crc32' : IDL.Opt(IDL.Nat32), 'size' : IDL.Opt(IDL.Nat64), 'content_type' : IDL.Text, 'parent' : IDL.Nat32, @@ -173,7 +172,6 @@ export const idlFactory = ({ IDL }) => { 'id' : IDL.Nat32, 'chunk_index' : IDL.Nat32, 'content' : IDL.Vec(IDL.Nat8), - 'crc32' : IDL.Opt(IDL.Nat32), }); const UpdateFileChunkOutput = IDL.Record({ 'updated_at' : IDL.Nat64, @@ -189,6 +187,7 @@ export const idlFactory = ({ IDL }) => { 'custom' : IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue))), 'hash' : IDL.Opt(IDL.Vec(IDL.Nat8)), 'name' : IDL.Opt(IDL.Text), + 'size' : IDL.Opt(IDL.Nat64), 'content_type' : IDL.Opt(IDL.Text), }); const UpdateFolderInput = IDL.Record({ @@ -196,6 +195,7 @@ export const idlFactory = ({ IDL }) => { 'status' : IDL.Opt(IDL.Int8), 'name' : IDL.Opt(IDL.Text), }); + const Result_14 = IDL.Variant({ 'Ok' : IDL.Text, 'Err' : IDL.Text }); return IDL.Service({ 'admin_set_auditors' : IDL.Func([IDL.Vec(IDL.Principal)], [Result], []), 'admin_set_managers' : IDL.Func([IDL.Vec(IDL.Principal)], [Result], []), @@ -307,6 +307,21 @@ export const idlFactory = ({ IDL }) => { [Result_12], [], ), + 'validate2_admin_set_auditors' : IDL.Func( + [IDL.Vec(IDL.Principal)], + [Result_14], + [], + ), + 'validate2_admin_set_managers' : IDL.Func( + [IDL.Vec(IDL.Principal)], + [Result_14], + [], + ), + 'validate2_admin_update_bucket' : IDL.Func( + [UpdateBucketInput], + [Result_14], + [], + ), 'validate_admin_set_auditors' : IDL.Func( [IDL.Vec(IDL.Principal)], [Result], diff --git a/src/ic_oss_ts/candid/ic_oss_cluster/ic_oss_cluster.did b/src/ic_oss_ts/candid/ic_oss_cluster/ic_oss_cluster.did index 99dde1a..7e9e01d 100644 --- a/src/ic_oss_ts/candid/ic_oss_cluster/ic_oss_cluster.did +++ b/src/ic_oss_ts/candid/ic_oss_cluster/ic_oss_cluster.did @@ -37,6 +37,7 @@ type Result_5 = variant { Ok : WasmInfo; Err : text }; type Result_6 = variant { Ok : vec principal; Err : text }; type Result_7 = variant { Ok : ClusterInfo; Err : text }; type Result_8 = variant { Ok : vec record { principal; text }; Err : text }; +type Result_9 = variant { Ok : text; Err : text }; type Token = record { subject : principal; audience : principal; @@ -72,6 +73,13 @@ service : (opt ChainArgs) -> { get_cluster_info : () -> (Result_7) query; get_deployed_buckets : () -> (Result_4) query; get_subject_policies : (principal) -> (Result_8) query; + validate2_admin_add_wasm : (AddWasmInput, opt blob) -> (Result_9); + validate2_admin_batch_call_buckets : (vec principal, text, opt blob) -> ( + Result_9, + ); + validate2_admin_deploy_bucket : (DeployWasmInput, opt blob) -> (Result_9); + validate2_admin_set_managers : (vec principal) -> (Result_9); + validate2_admin_upgrade_all_buckets : (opt blob) -> (Result_9); validate_admin_add_wasm : (AddWasmInput, opt blob) -> (Result_1); validate_admin_batch_call_buckets : (vec principal, text, opt blob) -> ( Result_2, diff --git a/src/ic_oss_ts/candid/ic_oss_cluster/ic_oss_cluster.did.d.ts b/src/ic_oss_ts/candid/ic_oss_cluster/ic_oss_cluster.did.d.ts index 202651f..e8dea43 100644 --- a/src/ic_oss_ts/candid/ic_oss_cluster/ic_oss_cluster.did.d.ts +++ b/src/ic_oss_ts/candid/ic_oss_cluster/ic_oss_cluster.did.d.ts @@ -57,6 +57,8 @@ export type Result_7 = { 'Ok' : ClusterInfo } | { 'Err' : string }; export type Result_8 = { 'Ok' : Array<[Principal, string]> } | { 'Err' : string }; +export type Result_9 = { 'Ok' : string } | + { 'Err' : string }; export interface Token { 'subject' : Principal, 'audience' : Principal, @@ -107,6 +109,23 @@ export interface _SERVICE { 'get_cluster_info' : ActorMethod<[], Result_7>, 'get_deployed_buckets' : ActorMethod<[], Result_4>, 'get_subject_policies' : ActorMethod<[Principal], Result_8>, + 'validate2_admin_add_wasm' : ActorMethod< + [AddWasmInput, [] | [Uint8Array | number[]]], + Result_9 + >, + 'validate2_admin_batch_call_buckets' : ActorMethod< + [Array, string, [] | [Uint8Array | number[]]], + Result_9 + >, + 'validate2_admin_deploy_bucket' : ActorMethod< + [DeployWasmInput, [] | [Uint8Array | number[]]], + Result_9 + >, + 'validate2_admin_set_managers' : ActorMethod<[Array], Result_9>, + 'validate2_admin_upgrade_all_buckets' : ActorMethod< + [[] | [Uint8Array | number[]]], + Result_9 + >, 'validate_admin_add_wasm' : ActorMethod< [AddWasmInput, [] | [Uint8Array | number[]]], Result_1 diff --git a/src/ic_oss_ts/candid/ic_oss_cluster/ic_oss_cluster.did.js b/src/ic_oss_ts/candid/ic_oss_cluster/ic_oss_cluster.did.js index 63e631a..fa8f229 100644 --- a/src/ic_oss_ts/candid/ic_oss_cluster/ic_oss_cluster.did.js +++ b/src/ic_oss_ts/candid/ic_oss_cluster/ic_oss_cluster.did.js @@ -74,6 +74,7 @@ export const idlFactory = ({ IDL }) => { 'Ok' : IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Text)), 'Err' : IDL.Text, }); + const Result_9 = IDL.Variant({ 'Ok' : IDL.Text, 'Err' : IDL.Text }); return IDL.Service({ 'access_token' : IDL.Func([IDL.Principal], [Result], []), 'admin_add_wasm' : IDL.Func( @@ -111,6 +112,31 @@ export const idlFactory = ({ IDL }) => { 'get_cluster_info' : IDL.Func([], [Result_7], ['query']), 'get_deployed_buckets' : IDL.Func([], [Result_4], ['query']), 'get_subject_policies' : IDL.Func([IDL.Principal], [Result_8], ['query']), + 'validate2_admin_add_wasm' : IDL.Func( + [AddWasmInput, IDL.Opt(IDL.Vec(IDL.Nat8))], + [Result_9], + [], + ), + 'validate2_admin_batch_call_buckets' : IDL.Func( + [IDL.Vec(IDL.Principal), IDL.Text, IDL.Opt(IDL.Vec(IDL.Nat8))], + [Result_9], + [], + ), + 'validate2_admin_deploy_bucket' : IDL.Func( + [DeployWasmInput, IDL.Opt(IDL.Vec(IDL.Nat8))], + [Result_9], + [], + ), + 'validate2_admin_set_managers' : IDL.Func( + [IDL.Vec(IDL.Principal)], + [Result_9], + [], + ), + 'validate2_admin_upgrade_all_buckets' : IDL.Func( + [IDL.Opt(IDL.Vec(IDL.Nat8))], + [Result_9], + [], + ), 'validate_admin_add_wasm' : IDL.Func( [AddWasmInput, IDL.Opt(IDL.Vec(IDL.Nat8))], [Result_1], diff --git a/src/ic_oss_ts/package.json b/src/ic_oss_ts/package.json index 855ddcf..adfdd49 100644 --- a/src/ic_oss_ts/package.json +++ b/src/ic_oss_ts/package.json @@ -1,6 +1,6 @@ { "name": "@ldclabs/ic_oss_ts", - "version": "0.7.0", + "version": "0.8.0", "type": "module", "description": "The Typescript version of the client SDK for the ic-oss cluster.", "license": "MIT", @@ -20,46 +20,38 @@ "files": [ "candid", "dist", - "src", "package.json", "LICENSE", "README.md" ], - "main": "dist/index.js", - "typings": "dist/index.d.ts", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "browser": "./dist/index.js", - "default": "./dist/index.js" - } - }, + "main": "./dist/index.js", + "typings": "./dist/index.d.ts", "scripts": { - "prebuild": "dfx generate && rm -rf candid && mv '../declarations' './candid'", + "prebuild": "dfx generate && rm -rf candid && cp -r '../declarations' './candid'", "build": "rm -rf dist && tsc -p tsconfig.json", "format": "prettier --write \"src/**/*.{json,js,jsx,ts,tsx,css,scss}\"", "test": "vitest run", "ncu": "npx npm-check-updates -u" }, "dependencies": { - "@dfinity/agent": "^2.0.0", - "@dfinity/candid": "^2.0.0", - "@dfinity/principal": "^2.0.0", - "@dfinity/utils": "^2.4.0", - "@noble/hashes": "^1.4.0", + "@dfinity/agent": "^2.1.2", + "@dfinity/candid": "^2.1.2", + "@dfinity/principal": "^2.1.2", + "@dfinity/utils": "^2.5.1", + "@noble/hashes": "^1.5.0", "mime": "^4.0.4" }, "devDependencies": { - "@types/node": "22.5.0", - "@types/eslint": "^9.6.0", - "@typescript-eslint/eslint-plugin": "^8.2.0", - "@typescript-eslint/parser": "^8.2.0", - "typescript": "^5.5.4", - "eslint": "^9.9.1", + "@types/node": "22.7.4", + "@types/eslint": "^9.6.1", + "@typescript-eslint/eslint-plugin": "^8.8.0", + "@typescript-eslint/parser": "^8.8.0", + "typescript": "^5.6.2", + "eslint": "^9.12.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-import": "^2.29.1", + "eslint-plugin-import": "^2.31.0", "eslint-plugin-prettier": "^5.2.1", "prettier": "^3.3.3", - "vitest": "^2.0.5" + "vitest": "^2.1.2" } } \ No newline at end of file diff --git a/src/ic_oss_ts/src/crc32.ts b/src/ic_oss_ts/src/crc32.ts deleted file mode 100644 index b0d3e71..0000000 --- a/src/ic_oss_ts/src/crc32.ts +++ /dev/null @@ -1,59 +0,0 @@ -// This file is translated to JavaScript from -// https://lxp32.github.io/docs/a-simple-example-crc32-calculation/ -const lookUpTable: Uint32Array = new Uint32Array([ - 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, - 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, - 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, - 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, - 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, - 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, - 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, - 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, - 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, - 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, - 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, - 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, - 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, - 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, - 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, - 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, - 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, - 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, - 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, - 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, - 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, - 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, - 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, - 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, - 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, - 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, - 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, - 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, - 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, - 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, - 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, - 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, - 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, - 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, - 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, - 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, - 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, - 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, - 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, - 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, - 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, - 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, - 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d -]) - -export function crc32(bytes: Uint8Array): number { - let crc = -1 - - for (let i = 0; i < bytes.byteLength; i++) { - const byte = bytes[i] - const t = (byte ^ crc) & 0xff - crc = lookUpTable[t] ^ (crc >>> 8) - } - - return (crc ^ -1) >>> 0 -} diff --git a/src/ic_oss_ts/src/index.ts b/src/ic_oss_ts/src/index.ts index d2f9ad1..cc72284 100644 --- a/src/ic_oss_ts/src/index.ts +++ b/src/ic_oss_ts/src/index.ts @@ -20,7 +20,6 @@ export type { } from '../candid/ic_oss_cluster/ic_oss_cluster.did.js' export * from './bucket.canister.js' export * from './cluster.canister.js' -export * from './crc32.js' export * from './queue.js' export * from './stream.js' export * from './types.js' diff --git a/src/ic_oss_ts/src/uploader.ts b/src/ic_oss_ts/src/uploader.ts index 95861bf..3a5c4c5 100644 --- a/src/ic_oss_ts/src/uploader.ts +++ b/src/ic_oss_ts/src/uploader.ts @@ -1,6 +1,5 @@ import { sha3_256 } from '@noble/hashes/sha3' import { BucketCanister } from './bucket.canister.js' -import { crc32 } from './crc32.js' import { ConcurrencyQueue } from './queue.js' import { toFixedChunkSizeReadable, @@ -42,7 +41,6 @@ export class Uploader { custom: [], hash: [hash], name: file.name, - crc32: [crc32(content)], size: [BigInt(size)], content_type: file.contentType, parent: file.parent || 0, @@ -69,7 +67,6 @@ export class Uploader { custom: [], hash: [], name: file.name, - crc32: [], size: size > 0 ? [BigInt(size)] : [], content_type: file.contentType, parent: file.parent || 0, @@ -133,8 +130,7 @@ export class Uploader { const res = await this.#cli.updateFileChunk({ id, chunk_index: index, - content: chunk, - crc32: [crc32(chunk)] + content: chunk }) rt.filled += chunk.byteLength @@ -155,6 +151,7 @@ export class Uploader { hash: [hash || hasher.digest()], custom: [], name: [], + size: [], content_type: [] }) } catch (err) { diff --git a/src/ic_oss_ts/tsconfig-cjs.json b/src/ic_oss_ts/tsconfig-cjs.json new file mode 100644 index 0000000..4bede2f --- /dev/null +++ b/src/ic_oss_ts/tsconfig-cjs.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "target": "es2018", + "module": "CommonJS", + "outDir": "./dist/cjs", + "moduleResolution": "node" + } +} diff --git a/src/ic_oss_ts/tsconfig.json b/src/ic_oss_ts/tsconfig.json index 276c998..ab1d118 100644 --- a/src/ic_oss_ts/tsconfig.json +++ b/src/ic_oss_ts/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "target": "ESNext", - "outDir": "./dist", + "outDir": "./dist/esm", "useDefineForClassFields": true, "lib": ["DOM", "DOM.Iterable", "ESNext", "ESNext.AsyncIterable"], "allowJs": false, diff --git a/src/ic_oss_types/src/file.rs b/src/ic_oss_types/src/file.rs index 0d5857c..8d9ebdd 100644 --- a/src/ic_oss_types/src/file.rs +++ b/src/ic_oss_types/src/file.rs @@ -40,7 +40,6 @@ pub struct CreateFileInput { pub hash: Option>, // recommend sha3 256 pub dek: Option, pub custom: Option, - pub crc32: Option, } pub fn valid_file_name(name: &str) -> bool { @@ -142,7 +141,6 @@ pub struct UpdateFileChunkInput { pub id: u32, pub chunk_index: u32, pub content: ByteBuf, // should be in (0, 1024 * 256] - pub crc32: Option, } #[derive(CandidType, Clone, Debug, Default, Deserialize, Serialize)]