From 04213a35152cc020e20d0fe292938928287affc0 Mon Sep 17 00:00:00 2001 From: Jakub Dzikowski Date: Fri, 2 Jan 2026 12:35:46 +0100 Subject: [PATCH 1/8] Chore: Set Fablo 2.4.3 and Fabric 3.1.0 Signed-off-by: Jakub Dzikowski --- .github/workflows/test-on-push.yml | 2 +- chain-cli/network/fablo-config-default.json | 4 ++-- chain-cli/network/fablo-config-dev-mode.json | 2 +- chain-cli/package.json | 2 +- licenses/licenses.csv | 2 +- package-lock.json | 9 +++++---- 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test-on-push.yml b/.github/workflows/test-on-push.yml index 21573be4a5..dafd9f14bb 100644 --- a/.github/workflows/test-on-push.yml +++ b/.github/workflows/test-on-push.yml @@ -42,7 +42,7 @@ jobs: - name: Prefetch Fabric Docker layers run: | cd chain-cli/network - curl -Lf https://github.com/hyperledger-labs/fablo/releases/download/2.0.0/fablo.sh -o ./fablo && chmod +x ./fablo + curl -Lf https://github.com/hyperledger-labs/fablo/releases/download/2.4.3/fablo.sh -o ./fablo && chmod +x ./fablo ./fablo generate fablo-config-default.json docker compose -f fablo-target/fabric-docker/docker-compose.yaml pull diff --git a/chain-cli/network/fablo-config-default.json b/chain-cli/network/fablo-config-default.json index fdb9065bb3..6ead1c5326 100644 --- a/chain-cli/network/fablo-config-default.json +++ b/chain-cli/network/fablo-config-default.json @@ -1,7 +1,7 @@ { - "$schema": "https://github.com/hyperledger-labs/fablo/releases/download/2.0.0/schema.json", + "$schema": "https://github.com/hyperledger-labs/fablo/releases/download/2.4.3/schema.json", "global": { - "fabricVersion": "2.5.10", + "fabricVersion": "3.1.0", "tls": true, "monitoring": { "loglevel": "info" diff --git a/chain-cli/network/fablo-config-dev-mode.json b/chain-cli/network/fablo-config-dev-mode.json index 9bc088e6d1..1df887b4d3 100644 --- a/chain-cli/network/fablo-config-dev-mode.json +++ b/chain-cli/network/fablo-config-dev-mode.json @@ -1,5 +1,5 @@ { - "$schema": "https://github.com/hyperledger-labs/fablo/releases/download/2.0.0/schema.json", + "$schema": "https://github.com/hyperledger-labs/fablo/releases/download/2.4.3/schema.json", "global": { "fabricVersion": "2.5.10", "tls": false, diff --git a/chain-cli/package.json b/chain-cli/package.json index 72bd71fbb9..96e60b2bc4 100644 --- a/chain-cli/package.json +++ b/chain-cli/package.json @@ -20,7 +20,7 @@ "@oclif/plugin-help": "^3", "axios": "^1.6.0", "dotenv": "16.3.1", - "fablo": "2.0.0", + "fablo": "2.4.3", "nanoid": "^3.3.6", "tslib": "^2.6.2" }, diff --git a/licenses/licenses.csv b/licenses/licenses.csv index 16cfe07cf8..a80e4b1d41 100644 --- a/licenses/licenses.csv +++ b/licenses/licenses.csv @@ -714,7 +714,7 @@ "expect@29.7.0","expect","29.7.0","https://github.com/jestjs/jest","This package exports the `expect` function used in [Jest](https://jestjs.io/). You can find its documentation [on Jest's website](https://jestjs.io/docs/expect).","MIT" "expect@30.0.5","expect","30.0.5","https://github.com/jestjs/jest","This package exports the `expect` function used in [Jest](https://jestjs.io/). You can find its documentation [on Jest's website](https://jestjs.io/docs/expect).","MIT" "eyes@0.1.8","eyes","0.1.8","","a customizable value inspector","MIT" -"fablo@2.0.0","fablo","2.0.0","https://github.com/fablo-io/fablo-js","JS/TS bindings for Fablo (https://github.com/hyperledger-labs/fablo)","Apache-2.0" +"fablo@2.4.3","fablo","2.4.3","https://github.com/fablo-io/fablo-js","JS/TS bindings for Fablo (https://github.com/hyperledger-labs/fablo)","Apache-2.0" "fabric-ca-client@2.2.20","fabric-ca-client","2.2.20","https://github.com/hyperledger/fabric-sdk-node","SDK for writing node.js applications to interact with Hyperledger Fabric. This package encapsulates the APIs to interact with the Fabric CA to manage user certificates lifecycle such as register, enroll, renew and revoke.","Apache-2.0" "fabric-common@2.2.20","fabric-common","2.2.20","https://github.com/hyperledger/fabric-sdk-node","This package encapsulates the common code used by the `fabric-ca-client`, `fabric-network` packages.","Apache-2.0" "fabric-contract-api@2.5.6","fabric-contract-api","2.5.6","https://github.com/hyperledger/fabric-chaincode-node","A node.js implementation of Hyperledger Fabric chaincode shim, to allow endorsing peers and user-provided chaincodes to communicate with each other","Apache-2.0" diff --git a/package-lock.json b/package-lock.json index 5f5f067168..492e4aa424 100644 --- a/package-lock.json +++ b/package-lock.json @@ -93,7 +93,7 @@ "@oclif/plugin-help": "^3", "axios": "^1.6.0", "dotenv": "16.3.1", - "fablo": "2.0.0", + "fablo": "2.4.3", "nanoid": "^3.3.6", "tslib": "^2.6.2" }, @@ -12110,9 +12110,10 @@ } }, "node_modules/fablo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fablo/-/fablo-2.0.0.tgz", - "integrity": "sha512-VedT2BGY8OEAW9ESkf0TjC4Dp8pDcpflqLhtXHmJ1RWcGJwA62em86RKmY2ea+uBMnOY3zlXVJ3ei3BWCrfYHw==" + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/fablo/-/fablo-2.4.3.tgz", + "integrity": "sha512-8t80rZ8kc66dYn6oCAk6kUItXM56CUFKW/QTQSltFUbhV5sMXYqoMUWujKW5pgJNgjDVuy/mxlaiwksRzoKU9A==", + "license": "Apache-2.0" }, "node_modules/fabric-ca-client": { "version": "2.2.20", From 40d489ca55c2935bf1dc44749be854aec672645c Mon Sep 17 00:00:00 2001 From: Jakub Dzikowski Date: Fri, 2 Jan 2026 12:38:36 +0100 Subject: [PATCH 2/8] Prefetch ops-api image Signed-off-by: Jakub Dzikowski --- chain-cli/network/ops-api/ops-api.sh | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/chain-cli/network/ops-api/ops-api.sh b/chain-cli/network/ops-api/ops-api.sh index 577b55923c..c98181120c 100755 --- a/chain-cli/network/ops-api/ops-api.sh +++ b/chain-cli/network/ops-api/ops-api.sh @@ -42,6 +42,31 @@ checkApiConfigFile() { fi } +prefetchOpsApiImage() { + local image="ghcr.io/galachain/operation-api:1.0.0" + + # Check if image already exists locally + if docker image inspect "$image" >/dev/null 2>&1; then + echo "Docker image $image already exists locally" + return 0 + fi + + echo "Pulling Docker image $image..." + + # Detect architecture and pull appropriate version + local arch=$(uname -m) + if [ "$arch" = "arm64" ] || [ "$arch" = "aarch64" ]; then + # On ARM architecture, pull Intel/AMD64 version for compatibility + echo "Detected ARM architecture, pulling Intel/AMD64 version for compatibility" + docker pull --platform linux/amd64 "$image" + else + # On other architectures, pull native version + docker pull "$image" + fi + + echo "Docker image $image pulled successfully" +} + verifyOpsInstance() { local port=$1 local org=$2 @@ -82,6 +107,7 @@ verifyOpsInstance() { if [ "$command" = "up" ]; then checkApiConfigFile + prefetchOpsApiImage echo "Starting ops-api instances..." (cd "$current_dir" && docker compose --env-file ../fablo-target/fabric-docker/.env up -d) From ad1424ab02f1ebed8ea781cfb2aae6d4b40aac8a Mon Sep 17 00:00:00 2001 From: Jakub Dzikowski Date: Fri, 2 Jan 2026 18:18:32 +0100 Subject: [PATCH 3/8] Remove consortiums from config Signed-off-by: Jakub Dzikowski --- chain-cli/network/configtx-policies.yml | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/chain-cli/network/configtx-policies.yml b/chain-cli/network/configtx-policies.yml index 4c83ec9161..309caca4e5 100644 --- a/chain-cli/network/configtx-policies.yml +++ b/chain-cli/network/configtx-policies.yml @@ -187,15 +187,6 @@ Profiles: - <<: *PartnerOrg1 - <<: *UsersOrg1 - # Consortium(s) is a legacy required by Fablo, can be skipped for flow without system channel - Consortium: SampleConsortium - Consortiums: - SampleConsortium: - Organizations: - - <<: *CuratorOrg - - <<: *PartnerOrg1 - - <<: *UsersOrg1 - PartnerChannel: &PartnerChannelDefaults <<: *ChannelDefaults Orderer: @@ -219,12 +210,3 @@ Profiles: - <<: *CuratorOrg - <<: *PartnerOrg1 - <<: *UsersOrg1 - - # Consortium(s) is a legacy required by Fablo, can be skipped for flow without system channel - Consortium: SampleConsortium - Consortiums: - SampleConsortium: - Organizations: - - <<: *CuratorOrg - - <<: *PartnerOrg1 - - <<: *UsersOrg1 From 78eef91a3f19b1bf98638e0ec1496128e386a002 Mon Sep 17 00:00:00 2001 From: Jakub Dzikowski Date: Wed, 21 Jan 2026 14:09:23 +0100 Subject: [PATCH 4/8] Use CCaaS dev mode Signed-off-by: Jakub Dzikowski --- .../chaincode-template/package-lock.json | 442 ++++++++++-------- chain-cli/chaincode-template/package.json | 1 + chain-cli/network/fablo-config-dev-mode.json | 7 +- chain-cli/network/fablo-post-generate.sh | 9 - chain-cli/src/commands/network-prune/index.ts | 2 +- chain-cli/src/commands/network-up/index.ts | 90 ++-- 6 files changed, 319 insertions(+), 232 deletions(-) diff --git a/chain-cli/chaincode-template/package-lock.json b/chain-cli/chaincode-template/package-lock.json index cfdf161d70..21ac14a39d 100644 --- a/chain-cli/chaincode-template/package-lock.json +++ b/chain-cli/chaincode-template/package-lock.json @@ -21,7 +21,7 @@ "@gala-chain/test": "3.0.0-beta", "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@types/jest": "^29.5.12", - "@types/node": "18.11.9", + "@types/node": "^24.0.0", "@typescript-eslint/eslint-plugin": "^5.47.1", "@typescript-eslint/parser": "^5.47.1", "eslint": "^8.30.0", @@ -75,6 +75,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", "dev": true, + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.23.5", @@ -1985,9 +1986,14 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" + "version": "24.10.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.9.tgz", + "integrity": "sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==", + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~7.16.0" + } }, "node_modules/@types/semver": { "version": "7.5.5", @@ -2066,6 +2072,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -2226,6 +2233,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -2474,10 +2482,17 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/base-x": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", + "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==", + "license": "MIT" + }, "node_modules/bignumber.js": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "peer": true, "engines": { "node": "*" } @@ -2533,6 +2548,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001587", "electron-to-chromium": "^1.4.668", @@ -2558,6 +2574,15 @@ "node": ">= 6" } }, + "node_modules/bs58": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", + "license": "MIT", + "dependencies": { + "base-x": "^5.0.0" + } + }, "node_modules/bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", @@ -2579,7 +2604,6 @@ "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "optional": true, - "peer": true, "dependencies": { "function-bind": "^1.1.2", "get-intrinsic": "^1.2.1", @@ -2595,7 +2619,6 @@ "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", "dev": true, "optional": true, - "peer": true, "engines": { "node": "*" } @@ -2718,13 +2741,15 @@ "node_modules/class-transformer": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", - "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==", + "peer": true }, "node_modules/class-validator": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.2.tgz", "integrity": "sha512-3kMVRF2io8N8pY1IFIXlho9r8IPUUIfHe2hYVtiebvAzU2XeQFXTv+XI4WX+TnXmtwXMDcjngcpkiPM0O9PvLw==", "license": "MIT", + "peer": true, "dependencies": { "@types/validator": "^13.11.8", "libphonenumber-js": "^1.11.1", @@ -2736,6 +2761,7 @@ "resolved": "https://registry.npmjs.org/class-validator-jsonschema/-/class-validator-jsonschema-5.0.2.tgz", "integrity": "sha512-b+oHktogJLWf/IRWEoVizrT/0TkYBHKxSLHbE4lq5DEJAEhq6z6nBJbw4hwh9akEeX3v08Hw8d5TBEv7VcZ8TQ==", "license": "MIT", + "peer": true, "dependencies": { "lodash.groupby": "^4.6.0", "lodash.merge": "^4.6.2", @@ -2905,7 +2931,6 @@ "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", "dev": true, "optional": true, - "peer": true, "engines": { "node": ">=0.1.90" } @@ -2999,7 +3024,6 @@ "integrity": "sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==", "dev": true, "optional": true, - "peer": true, "engines": { "node": ">=0.4.0" } @@ -3068,7 +3092,6 @@ "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "optional": true, - "peer": true, "dependencies": { "get-intrinsic": "^1.2.1", "gopd": "^1.0.1", @@ -3241,6 +3264,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -3296,6 +3320,7 @@ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, + "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -4071,16 +4096,16 @@ "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", "dev": true, "optional": true, - "peer": true, "engines": { "node": "> 0.1.90" } }, "node_modules/fablo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fablo/-/fablo-2.0.0.tgz", - "integrity": "sha512-VedT2BGY8OEAW9ESkf0TjC4Dp8pDcpflqLhtXHmJ1RWcGJwA62em86RKmY2ea+uBMnOY3zlXVJ3ei3BWCrfYHw==", - "dev": true + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/fablo/-/fablo-2.4.3.tgz", + "integrity": "sha512-8t80rZ8kc66dYn6oCAk6kUItXM56CUFKW/QTQSltFUbhV5sMXYqoMUWujKW5pgJNgjDVuy/mxlaiwksRzoKU9A==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/fabric-ca-client": { "version": "2.2.20", @@ -4088,7 +4113,6 @@ "integrity": "sha512-uaVpjPU+Yar2n4sNPJZpRC/jPgeLhw7nbzGl+aInkleg8Zkor4eBfQKpNQQxEORqgqWS5hAHNYu2x0iPEHBmLw==", "dev": true, "optional": true, - "peer": true, "dependencies": { "fabric-common": "2.2.20", "jsrsasign": "^10.5.25", @@ -4105,7 +4129,6 @@ "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "optional": true, - "peer": true, "dependencies": { "lodash": "^4.17.14" } @@ -4116,7 +4139,6 @@ "integrity": "sha512-vLB4BqzCKDnnZH9PHGoS2ycawueX4HLqENXQitvFHczhgW2vFpSOn31LZtVr1KU8YTw7DS4tM+cqyovxo8taVg==", "dev": true, "optional": true, - "peer": true, "dependencies": { "async": "^2.6.4", "colors": "1.0.x", @@ -4135,7 +4157,6 @@ "integrity": "sha512-d7oPqXrEIHlN0yhno1iTSX1aRD0ews5Oq1kdjrUF5TWjV/lQ8ojFNxLb0gDICBlM5C4gYtFNfFt6rD4uvpmbuw==", "dev": true, "optional": true, - "peer": true, "dependencies": { "callsite": "^1.0.0", "elliptic": "^6.5.4", @@ -4162,7 +4183,6 @@ "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "optional": true, - "peer": true, "dependencies": { "lodash": "^4.17.14" } @@ -4173,7 +4193,6 @@ "integrity": "sha512-vLB4BqzCKDnnZH9PHGoS2ycawueX4HLqENXQitvFHczhgW2vFpSOn31LZtVr1KU8YTw7DS4tM+cqyovxo8taVg==", "dev": true, "optional": true, - "peer": true, "dependencies": { "async": "^2.6.4", "colors": "1.0.x", @@ -4207,23 +4226,6 @@ "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz", "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" }, - "node_modules/fabric-network": { - "version": "2.2.20", - "resolved": "https://registry.npmjs.org/fabric-network/-/fabric-network-2.2.20.tgz", - "integrity": "sha512-Hdecb9UBuY/M2FZI4I7mYNRejYrULqA/VBiFIX3zLaQ7z7HVSfZOjFb9o+YepygBES1NSn/e+hSDfAFcziPSQQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "fabric-common": "2.2.20", - "fabric-protos": "2.2.20", - "long": "^5.2.3", - "nano": "^10.1.2" - }, - "engines": { - "node": ">=14" - } - }, "node_modules/fabric-protos": { "version": "2.2.20", "resolved": "https://registry.npmjs.org/fabric-protos/-/fabric-protos-2.2.20.tgz", @@ -4593,7 +4595,6 @@ "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "optional": true, - "peer": true, "dependencies": { "function-bind": "^1.1.2", "has-proto": "^1.0.1", @@ -4702,7 +4703,6 @@ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "optional": true, - "peer": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -4737,7 +4737,6 @@ "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "optional": true, - "peer": true, "dependencies": { "get-intrinsic": "^1.2.2" }, @@ -4751,7 +4750,6 @@ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dev": true, "optional": true, - "peer": true, "engines": { "node": ">= 0.4" }, @@ -4765,7 +4763,6 @@ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, "optional": true, - "peer": true, "engines": { "node": ">= 0.4" }, @@ -4923,7 +4920,6 @@ "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true, "optional": true, - "peer": true, "engines": { "node": ">=10" } @@ -5084,8 +5080,7 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "dev": true, - "optional": true, - "peer": true + "optional": true }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", @@ -5212,6 +5207,7 @@ "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, + "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -5810,6 +5806,7 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/json-stringify-deterministic/-/json-stringify-deterministic-1.0.12.tgz", "integrity": "sha512-q3PN0lbUdv0pmurkBNdJH3pfFvOTL/Zp0lquqpvcjfKzt6Y0j49EPHAmVHCAS4Ceq/Y+PejWTzyiVpoY71+D6g==", + "peer": true, "engines": { "node": ">= 4" } @@ -5850,7 +5847,6 @@ "integrity": "sha512-QWLUikj1SBJGuyGK8tjKSx3K7Y69KYJnrs/pQ1KZ6wvZIkHkWjZ1PJDpuvc1/28c1uP0KW9qn1eI1LzHQqDOwQ==", "dev": true, "optional": true, - "peer": true, "funding": { "url": "https://github.com/kjur/jsrsasign#donations" } @@ -6056,7 +6052,8 @@ "node_modules/long": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "peer": true }, "node_modules/make-dir": { "version": "4.0.0", @@ -6205,24 +6202,7 @@ "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", "dev": true, - "optional": true, - "peer": true - }, - "node_modules/nano": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/nano/-/nano-10.1.3.tgz", - "integrity": "sha512-q/hKQJJH3FhkkuJ3ojbgDph2StlSXFBPNkpZBZlsvZDbuYfxKJ4VtunEeilthcZtuIplIk1zVX5o2RgKTUTO+Q==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "axios": "^1.6.2", - "node-abort-controller": "^3.0.1", - "qs": "^6.11.0" - }, - "engines": { - "node": ">=14" - } + "optional": true }, "node_modules/nanoid": { "version": "3.3.7", @@ -6268,7 +6248,6 @@ "integrity": "sha512-p2cfF+B3XXacQdswUYWZ0w6Vld0832A/tuqjLBu3H1sfUcby4N2oVbGhyuCkZv+t3iY3aiFEj7gZGqax9Q2c1w==", "dev": true, "optional": true, - "peer": true, "dependencies": { "async": "^3.0.0", "ini": "^2.0.0", @@ -6285,7 +6264,6 @@ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "optional": true, - "peer": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -6298,7 +6276,6 @@ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "optional": true, - "peer": true, "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -6318,7 +6295,6 @@ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, "optional": true, - "peer": true, "engines": { "node": ">=10" } @@ -6329,13 +6305,22 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "node_modules/node-abort-controller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", - "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", - "dev": true, - "optional": true, - "peer": true + "node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "license": "MIT" + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } }, "node_modules/node-int64": { "version": "0.4.0", @@ -6376,7 +6361,6 @@ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "optional": true, - "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6668,7 +6652,6 @@ "dev": true, "hasInstallScript": true, "optional": true, - "peer": true, "dependencies": { "nan": "^2.15.0" }, @@ -6755,6 +6738,7 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -6827,7 +6811,6 @@ "integrity": "sha512-sdZv9X6V2mnVSNibIHk44hI2jf6z9bhsm2OUU+hsU1JgdFuwsZVUcIGPreQ9wlu5wWlAGXzbyEbCUU+U8TQSHQ==", "dev": true, "optional": true, - "peer": true, "engines": { "node": ">= 0.10.0" } @@ -6904,7 +6887,6 @@ "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dev": true, "optional": true, - "peer": true, "dependencies": { "side-channel": "^1.0.4" }, @@ -7162,13 +7144,27 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "node_modules/secp256k1": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-5.0.1.tgz", + "integrity": "sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "elliptic": "^6.5.7", + "node-addon-api": "^5.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/secure-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", "integrity": "sha512-nZi59hW3Sl5P3+wOO89eHBAAGwmCPd2aE1+dLZV5MO+ItQctIvAqihzaAXIQhvtH4KJPxM080HsnqltR2y8cWg==", "dev": true, - "optional": true, - "peer": true + "optional": true }, "node_modules/semver": { "version": "7.6.3", @@ -7188,7 +7184,6 @@ "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", "dev": true, "optional": true, - "peer": true, "dependencies": { "define-data-property": "^1.1.1", "get-intrinsic": "^1.2.1", @@ -7226,7 +7221,6 @@ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "optional": true, - "peer": true, "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -7267,7 +7261,6 @@ "integrity": "sha512-LzIjEQ0S0DpIgnxMEayM1rq9aGwGRG4OnZhCdjx7glTaJtf4zRfpg87ImfjSJjoW9vKpagd82McDOwbRT5kQKQ==", "dev": true, "optional": true, - "peer": true, "engines": { "node": "*" } @@ -7736,6 +7729,7 @@ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, + "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -7853,6 +7847,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -7861,6 +7856,12 @@ "node": ">=14.17" } }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -7914,7 +7915,6 @@ "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", "dev": true, "optional": true, - "peer": true, "dependencies": { "punycode": "^1.4.1", "qs": "^6.11.2" @@ -7925,8 +7925,7 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true, - "optional": true, - "peer": true + "optional": true }, "node_modules/util": { "version": "0.10.4", @@ -8176,7 +8175,6 @@ "integrity": "sha512-huWiiCS4TxKc4SfgmTwW1K7JmXPPAmuXWYy4j9qjQo4+27Kni8mGhAAi1cloRWmBe2EqcLgt3IGqQoRL/MtPgg==", "dev": true, "optional": true, - "peer": true, "engines": { "node": ">=10" } @@ -8226,6 +8224,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", "dev": true, + "peer": true, "requires": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.23.5", @@ -8765,6 +8764,83 @@ "tweetnacl": "^1.0.1" } }, + "@gala-chain/api": { + "version": "file:gala-chain-api-3.0.0-beta.tgz", + "integrity": "sha512-mzFC3iLqF2ezY2Kxz8UP7miR+xVpkT8nkRLm3oovH26voB0Ivl++Js5n8l0vPrrxLz+7ZFL55TDzf+KQOjUdDw==", + "requires": { + "bignumber.js": "^9.0.2", + "bn.js": "5.2.1", + "bs58": "^6.0.0", + "class-transformer": "0.5.1", + "class-validator": "0.14.2", + "class-validator-jsonschema": "5.0.2", + "elliptic": "^6.6.1", + "js-sha3": "^0.9.3", + "json-stringify-deterministic": "1.0.12", + "openapi3-ts": "^3.2.0", + "reflect-metadata": "^0.1.13", + "secp256k1": "^5.0.1", + "tslib": "^2.6.2" + }, + "dependencies": { + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + } + } + }, + "@gala-chain/chaincode": { + "version": "file:gala-chain-chaincode-3.0.0-beta.tgz", + "integrity": "sha512-xFh8P3rGPbOsin2UZoAjFZgIJxRd4ou9rxa6j+79vH+aXmc4PELhAzyUjgcFUG/2WGaszZDLoiTW7EDGyAFI3A==", + "requires": { + "@gala-chain/api": "3.0.0-beta", + "@grpc/grpc-js": "1.10.10", + "fabric-contract-api": "2.5.6", + "fabric-protos": "2.2.20", + "fabric-shim": "2.5.6", + "nanoid": "^3.3.6", + "winston": "^3.8.2" + } + }, + "@gala-chain/cli": { + "version": "file:gala-chain-cli-3.0.0-beta.tgz", + "integrity": "sha512-7UcSZk2C5NUyCeibEP1qFOnVVlqCKFtjDmvCT8vY4uRo/uO6ee4g0b5rLwpORVeQEzl8/F2lNNFax8I67NegIQ==", + "dev": true, + "requires": { + "@gala-chain/api": "3.0.0-beta", + "@noble/secp256k1": "^1.7.1", + "@oclif/core": "^3", + "@oclif/plugin-help": "^3", + "axios": "^1.6.0", + "dotenv": "16.3.1", + "fablo": "2.4.3", + "nanoid": "^3.3.6", + "tslib": "^2.6.2" + } + }, + "@gala-chain/client": { + "version": "file:gala-chain-client-3.0.0-beta.tgz", + "integrity": "sha512-Sa6XBHOkiJisx3i9BEvyJ9pB3qIRaRldics1uX5qsw+OspIoQ5/HkfFh0sM+beB/+iSgyspU8Sam+hHEo5IFqQ==", + "dev": true, + "requires": { + "@gala-chain/api": "3.0.0-beta", + "axios": "^1.6.0", + "jsonschema": "^1.4.1", + "tslib": "^2.6.2" + } + }, + "@gala-chain/test": { + "version": "file:gala-chain-test-3.0.0-beta.tgz", + "integrity": "sha512-mOURxtbwLSFlgvNl7gNQADGBga2vuRFutg1rGAzjhLMgOPUhr1eb8G+73IWEpFdEOHyO08C0DgP1iaeNn5fcnA==", + "dev": true, + "requires": { + "@gala-chain/client": "3.0.0-beta", + "@jest/globals": "29.7.0", + "nanoid": "^3.3.6", + "tslib": "^2.6.2" + } + }, "@grpc/grpc-js": { "version": "1.10.10", "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.10.tgz", @@ -9743,9 +9819,13 @@ "dev": true }, "@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" + "version": "24.10.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.9.tgz", + "integrity": "sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==", + "peer": true, + "requires": { + "undici-types": "~7.16.0" + } }, "@types/semver": { "version": "7.5.5", @@ -9807,6 +9887,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, + "peer": true, "requires": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -9893,7 +9974,8 @@ "version": "8.12.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dev": true + "dev": true, + "peer": true }, "acorn-jsx": { "version": "5.3.2", @@ -10082,10 +10164,16 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "base-x": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", + "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==" + }, "bignumber.js": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", - "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==" + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "peer": true }, "bn.js": { "version": "4.12.0", @@ -10121,6 +10209,7 @@ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, + "peer": true, "requires": { "caniuse-lite": "^1.0.30001587", "electron-to-chromium": "^1.4.668", @@ -10137,6 +10226,14 @@ "fast-json-stable-stringify": "2.x" } }, + "bs58": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", + "requires": { + "base-x": "^5.0.0" + } + }, "bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", @@ -10158,7 +10255,6 @@ "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "optional": true, - "peer": true, "requires": { "function-bind": "^1.1.2", "get-intrinsic": "^1.2.1", @@ -10170,8 +10266,7 @@ "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", "dev": true, - "optional": true, - "peer": true + "optional": true }, "callsites": { "version": "3.1.0", @@ -10249,12 +10344,14 @@ "class-transformer": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", - "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==", + "peer": true }, "class-validator": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.2.tgz", "integrity": "sha512-3kMVRF2io8N8pY1IFIXlho9r8IPUUIfHe2hYVtiebvAzU2XeQFXTv+XI4WX+TnXmtwXMDcjngcpkiPM0O9PvLw==", + "peer": true, "requires": { "@types/validator": "^13.11.8", "libphonenumber-js": "^1.11.1", @@ -10265,6 +10362,7 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/class-validator-jsonschema/-/class-validator-jsonschema-5.0.2.tgz", "integrity": "sha512-b+oHktogJLWf/IRWEoVizrT/0TkYBHKxSLHbE4lq5DEJAEhq6z6nBJbw4hwh9akEeX3v08Hw8d5TBEv7VcZ8TQ==", + "peer": true, "requires": { "lodash.groupby": "^4.6.0", "lodash.merge": "^4.6.2", @@ -10398,8 +10496,7 @@ "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", "dev": true, - "optional": true, - "peer": true + "optional": true }, "colorspace": { "version": "1.1.4", @@ -10474,8 +10571,7 @@ "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", "integrity": "sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==", "dev": true, - "optional": true, - "peer": true + "optional": true }, "debug": { "version": "4.3.4", @@ -10520,7 +10616,6 @@ "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "optional": true, - "peer": true, "requires": { "get-intrinsic": "^1.2.1", "gopd": "^1.0.1", @@ -10644,6 +10739,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, + "peer": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -10738,6 +10834,7 @@ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, + "peer": true, "requires": {} }, "eslint-plugin-prettier": { @@ -11251,13 +11348,12 @@ "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", "dev": true, - "optional": true, - "peer": true + "optional": true }, "fablo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fablo/-/fablo-2.0.0.tgz", - "integrity": "sha512-VedT2BGY8OEAW9ESkf0TjC4Dp8pDcpflqLhtXHmJ1RWcGJwA62em86RKmY2ea+uBMnOY3zlXVJ3ei3BWCrfYHw==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/fablo/-/fablo-2.4.3.tgz", + "integrity": "sha512-8t80rZ8kc66dYn6oCAk6kUItXM56CUFKW/QTQSltFUbhV5sMXYqoMUWujKW5pgJNgjDVuy/mxlaiwksRzoKU9A==", "dev": true }, "fabric-ca-client": { @@ -11266,7 +11362,6 @@ "integrity": "sha512-uaVpjPU+Yar2n4sNPJZpRC/jPgeLhw7nbzGl+aInkleg8Zkor4eBfQKpNQQxEORqgqWS5hAHNYu2x0iPEHBmLw==", "dev": true, "optional": true, - "peer": true, "requires": { "fabric-common": "2.2.20", "jsrsasign": "^10.5.25", @@ -11280,7 +11375,6 @@ "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "optional": true, - "peer": true, "requires": { "lodash": "^4.17.14" } @@ -11291,7 +11385,6 @@ "integrity": "sha512-vLB4BqzCKDnnZH9PHGoS2ycawueX4HLqENXQitvFHczhgW2vFpSOn31LZtVr1KU8YTw7DS4tM+cqyovxo8taVg==", "dev": true, "optional": true, - "peer": true, "requires": { "async": "^2.6.4", "colors": "1.0.x", @@ -11309,7 +11402,6 @@ "integrity": "sha512-d7oPqXrEIHlN0yhno1iTSX1aRD0ews5Oq1kdjrUF5TWjV/lQ8ojFNxLb0gDICBlM5C4gYtFNfFt6rD4uvpmbuw==", "dev": true, "optional": true, - "peer": true, "requires": { "callsite": "^1.0.0", "elliptic": "^6.5.4", @@ -11331,7 +11423,6 @@ "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "optional": true, - "peer": true, "requires": { "lodash": "^4.17.14" } @@ -11342,7 +11433,6 @@ "integrity": "sha512-vLB4BqzCKDnnZH9PHGoS2ycawueX4HLqENXQitvFHczhgW2vFpSOn31LZtVr1KU8YTw7DS4tM+cqyovxo8taVg==", "dev": true, "optional": true, - "peer": true, "requires": { "async": "^2.6.4", "colors": "1.0.x", @@ -11374,20 +11464,6 @@ } } }, - "fabric-network": { - "version": "2.2.20", - "resolved": "https://registry.npmjs.org/fabric-network/-/fabric-network-2.2.20.tgz", - "integrity": "sha512-Hdecb9UBuY/M2FZI4I7mYNRejYrULqA/VBiFIX3zLaQ7z7HVSfZOjFb9o+YepygBES1NSn/e+hSDfAFcziPSQQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "fabric-common": "2.2.20", - "fabric-protos": "2.2.20", - "long": "^5.2.3", - "nano": "^10.1.2" - } - }, "fabric-protos": { "version": "2.2.20", "resolved": "https://registry.npmjs.org/fabric-protos/-/fabric-protos-2.2.20.tgz", @@ -11682,7 +11758,6 @@ "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "optional": true, - "peer": true, "requires": { "function-bind": "^1.1.2", "has-proto": "^1.0.1", @@ -11761,7 +11836,6 @@ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "optional": true, - "peer": true, "requires": { "get-intrinsic": "^1.1.3" } @@ -11790,7 +11864,6 @@ "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "optional": true, - "peer": true, "requires": { "get-intrinsic": "^1.2.2" } @@ -11800,16 +11873,14 @@ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dev": true, - "optional": true, - "peer": true + "optional": true }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, - "optional": true, - "peer": true + "optional": true }, "hash.js": { "version": "1.1.7", @@ -11924,8 +11995,7 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true, - "optional": true, - "peer": true + "optional": true }, "inquirer": { "version": "7.3.3", @@ -12038,8 +12108,7 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "dev": true, - "optional": true, - "peer": true + "optional": true }, "istanbul-lib-coverage": { "version": "3.2.0", @@ -12142,6 +12211,7 @@ "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, + "peer": true, "requires": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -12605,7 +12675,8 @@ "json-stringify-deterministic": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/json-stringify-deterministic/-/json-stringify-deterministic-1.0.12.tgz", - "integrity": "sha512-q3PN0lbUdv0pmurkBNdJH3pfFvOTL/Zp0lquqpvcjfKzt6Y0j49EPHAmVHCAS4Ceq/Y+PejWTzyiVpoY71+D6g==" + "integrity": "sha512-q3PN0lbUdv0pmurkBNdJH3pfFvOTL/Zp0lquqpvcjfKzt6Y0j49EPHAmVHCAS4Ceq/Y+PejWTzyiVpoY71+D6g==", + "peer": true }, "json5": { "version": "2.2.3", @@ -12633,8 +12704,7 @@ "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.9.0.tgz", "integrity": "sha512-QWLUikj1SBJGuyGK8tjKSx3K7Y69KYJnrs/pQ1KZ6wvZIkHkWjZ1PJDpuvc1/28c1uP0KW9qn1eI1LzHQqDOwQ==", "dev": true, - "optional": true, - "peer": true + "optional": true }, "keyv": { "version": "4.5.4", @@ -12802,7 +12872,8 @@ "long": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "peer": true }, "make-dir": { "version": "4.0.0", @@ -12921,21 +12992,7 @@ "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", "dev": true, - "optional": true, - "peer": true - }, - "nano": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/nano/-/nano-10.1.3.tgz", - "integrity": "sha512-q/hKQJJH3FhkkuJ3ojbgDph2StlSXFBPNkpZBZlsvZDbuYfxKJ4VtunEeilthcZtuIplIk1zVX5o2RgKTUTO+Q==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "axios": "^1.6.2", - "node-abort-controller": "^3.0.1", - "qs": "^6.11.0" - } + "optional": true }, "nanoid": { "version": "3.3.7", @@ -12966,7 +13023,6 @@ "integrity": "sha512-p2cfF+B3XXacQdswUYWZ0w6Vld0832A/tuqjLBu3H1sfUcby4N2oVbGhyuCkZv+t3iY3aiFEj7gZGqax9Q2c1w==", "dev": true, "optional": true, - "peer": true, "requires": { "async": "^3.0.0", "ini": "^2.0.0", @@ -12980,7 +13036,6 @@ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "optional": true, - "peer": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -12993,7 +13048,6 @@ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "optional": true, - "peer": true, "requires": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -13009,8 +13063,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "optional": true, - "peer": true + "optional": true } } }, @@ -13020,13 +13073,15 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "node-abort-controller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", - "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", - "dev": true, - "optional": true, - "peer": true + "node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" + }, + "node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==" }, "node-int64": { "version": "0.4.0", @@ -13060,8 +13115,7 @@ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, - "optional": true, - "peer": true + "optional": true }, "object-treeify": { "version": "1.1.33", @@ -13279,7 +13333,6 @@ "integrity": "sha512-eo7fTeQwYGzX1pFmRaf4ji/WcDW2XKpwqylOwzutsjNWECv6G9PzDHj3Yj5dX9EW/fydMnJG8xvWj/btnQT9TA==", "dev": true, "optional": true, - "peer": true, "requires": { "nan": "^2.15.0" } @@ -13342,7 +13395,8 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", - "dev": true + "dev": true, + "peer": true }, "prettier-linter-helpers": { "version": "1.0.0", @@ -13389,8 +13443,7 @@ "resolved": "https://registry.npmjs.org/promise-settle/-/promise-settle-0.3.0.tgz", "integrity": "sha512-sdZv9X6V2mnVSNibIHk44hI2jf6z9bhsm2OUU+hsU1JgdFuwsZVUcIGPreQ9wlu5wWlAGXzbyEbCUU+U8TQSHQ==", "dev": true, - "optional": true, - "peer": true + "optional": true }, "prompts": { "version": "2.4.2", @@ -13444,7 +13497,6 @@ "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dev": true, "optional": true, - "peer": true, "requires": { "side-channel": "^1.0.4" } @@ -13609,13 +13661,22 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "secp256k1": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-5.0.1.tgz", + "integrity": "sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA==", + "requires": { + "elliptic": "^6.5.7", + "node-addon-api": "^5.0.0", + "node-gyp-build": "^4.2.0" + } + }, "secure-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", "integrity": "sha512-nZi59hW3Sl5P3+wOO89eHBAAGwmCPd2aE1+dLZV5MO+ItQctIvAqihzaAXIQhvtH4KJPxM080HsnqltR2y8cWg==", "dev": true, - "optional": true, - "peer": true + "optional": true }, "semver": { "version": "7.6.3", @@ -13629,7 +13690,6 @@ "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", "dev": true, "optional": true, - "peer": true, "requires": { "define-data-property": "^1.1.1", "get-intrinsic": "^1.2.1", @@ -13658,7 +13718,6 @@ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "optional": true, - "peer": true, "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -13697,8 +13756,7 @@ "resolved": "https://registry.npmjs.org/sjcl/-/sjcl-1.0.8.tgz", "integrity": "sha512-LzIjEQ0S0DpIgnxMEayM1rq9aGwGRG4OnZhCdjx7glTaJtf4zRfpg87ImfjSJjoW9vKpagd82McDOwbRT5kQKQ==", "dev": true, - "optional": true, - "peer": true + "optional": true }, "slash": { "version": "3.0.0", @@ -14040,6 +14098,7 @@ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, + "peer": true, "requires": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -14116,7 +14175,13 @@ "version": "5.3.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", - "dev": true + "dev": true, + "peer": true + }, + "undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==" }, "universalify": { "version": "0.1.2", @@ -14148,7 +14213,6 @@ "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", "dev": true, "optional": true, - "peer": true, "requires": { "punycode": "^1.4.1", "qs": "^6.11.2" @@ -14159,8 +14223,7 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true, - "optional": true, - "peer": true + "optional": true } } }, @@ -14365,8 +14428,7 @@ "resolved": "https://registry.npmjs.org/yn/-/yn-4.0.0.tgz", "integrity": "sha512-huWiiCS4TxKc4SfgmTwW1K7JmXPPAmuXWYy4j9qjQo4+27Kni8mGhAAi1cloRWmBe2EqcLgt3IGqQoRL/MtPgg==", "dev": true, - "optional": true, - "peer": true + "optional": true }, "yocto-queue": { "version": "0.1.0", diff --git a/chain-cli/chaincode-template/package.json b/chain-cli/chaincode-template/package.json index 288c4e2f62..66ac358c3e 100644 --- a/chain-cli/chaincode-template/package.json +++ b/chain-cli/chaincode-template/package.json @@ -6,6 +6,7 @@ "types": "lib/src/index.d.ts", "scripts": { "start": "node lib/src/cli.js start", + "start:ccaas:watch": "echo aaaaa && fabric-chaincode-node server --chaincode-address 0.0.0.0:7052 --chaincode-id \"$CHAINCODE_ID\"", "clean": "tsc -b --clean", "build": "tsc -p tsconfig.json", "build:watch": "tsc -p tsconfig.json -w", diff --git a/chain-cli/network/fablo-config-dev-mode.json b/chain-cli/network/fablo-config-dev-mode.json index 1df887b4d3..6ead1c5326 100644 --- a/chain-cli/network/fablo-config-dev-mode.json +++ b/chain-cli/network/fablo-config-dev-mode.json @@ -1,9 +1,8 @@ { "$schema": "https://github.com/hyperledger-labs/fablo/releases/download/2.4.3/schema.json", "global": { - "fabricVersion": "2.5.10", - "tls": false, - "peerDevMode": true, + "fabricVersion": "3.1.0", + "tls": true, "monitoring": { "loglevel": "info" } @@ -18,7 +17,7 @@ "orderers": [ { "groupName": "group1", - "type": "solo", + "type": "raft", "instances": 1 } ] diff --git a/chain-cli/network/fablo-post-generate.sh b/chain-cli/network/fablo-post-generate.sh index cd41e7817c..937cd05823 100755 --- a/chain-cli/network/fablo-post-generate.sh +++ b/chain-cli/network/fablo-post-generate.sh @@ -89,15 +89,6 @@ done # # -echo "Verifying chaincode directories..." -for dir in $(cat "$fablo_config" | jq -r '.chaincodes[] | .directory'); do - echo " - Checking if $dir exists..." - if [ ! -d "$dir" ]; then - echo " ERROR: Chaincode directory does not exist: $dir" - exit 1 - fi -done - echo "Adding BROWSER_API_CHANNEL_NAMES to .env" echo "BROWSER_API_CHANNEL_NAMES=$(cat "$fablo_config" | jq -r '.channels | map(.name) | join(",")')" >> "$target_env" diff --git a/chain-cli/src/commands/network-prune/index.ts b/chain-cli/src/commands/network-prune/index.ts index 087c321c7f..c5d6959046 100644 --- a/chain-cli/src/commands/network-prune/index.ts +++ b/chain-cli/src/commands/network-prune/index.ts @@ -51,7 +51,7 @@ export default class NetworkPrune extends BaseCommand { } } -function downNetworkServices(fabloRoot: string): void { +export function downNetworkServices(fabloRoot: string): void { try { // Down ops-api execSyncStdio(`cd "${fabloRoot}/ops-api" && ./ops-api.sh down`); diff --git a/chain-cli/src/commands/network-up/index.ts b/chain-cli/src/commands/network-up/index.ts index 1c97b53b1e..ec28e09d99 100644 --- a/chain-cli/src/commands/network-up/index.ts +++ b/chain-cli/src/commands/network-up/index.ts @@ -24,6 +24,7 @@ import { getCPPs } from "../../connection-profile"; import { defaultFabloRoot } from "../../consts"; import { execSyncStdio } from "../../exec-sync"; import { saveApiConfig } from "../../galachain-utils"; +import { downNetworkServices } from "../network-prune"; const defaultChaincodeDir = "."; @@ -129,7 +130,7 @@ export default class NetworkUp extends BaseCommand { await Fablo.directory(fabloRoot) .then(() => saveConnectionProfiles(fabloRoot, flags.watch, flags.channel ?? [], localhostName)) - .config(fabloConfig, (cfg) => updatedFabloConfig(cfg, fabloRoot, singleArgs)) + .config(fabloConfig, (cfg) => updatedFabloConfig(cfg, fabloRoot, flags.watch, singleArgs)) .then(() => updateConfigTxWithChannelProfile(fabloRoot, singleArgs)) .then(() => copyEnvFile( @@ -138,15 +139,18 @@ export default class NetworkUp extends BaseCommand { singleArgs.map((a) => a.chaincodeDir) ) ) - .execute("up"); - - startNetworkServices(fabloRoot, flags, apiConfigPath); - - printTestAdminCredentials(fabloRoot); - - if (flags.watch) { - startChaincodeInWatchMode(fabloRoot, singleArgs); - } + .execute("up") + .then(async () => { + await startNetworkServices(fabloRoot, flags, apiConfigPath); + await printTestAdminCredentials(fabloRoot); + if (flags.watch) { + await streamChaincodeLogsAndExit(fabloRoot, singleArgs); + } + }) + .catch((error) => { + console.error("Failed to start network:", error); + Fablo.directory(fabloRoot).execute("prune"); + }); } } @@ -156,16 +160,20 @@ interface NetworkServicesFlags { "no-chain-browser": boolean; } -function startNetworkServices(fabloRoot: string, flags: NetworkServicesFlags, apiConfigPath: string): void { +async function startNetworkServices( + fabloRoot: string, + flags: NetworkServicesFlags, + apiConfigPath: string +): Promise { try { // Start browser-api only if not disabled by flags if (!flags["no-chain-browser"]) { - startBrowserApi(fabloRoot); + await startBrowserApi(fabloRoot); } // Start ops-api only in non-watch mode, and if not disabled by flags if (!flags.watch && !flags["no-rest-api"]) { - startOpsApi(fabloRoot, apiConfigPath); + await startOpsApi(fabloRoot, apiConfigPath); } } catch (error) { console.error("Failed to start network services:", error); @@ -173,7 +181,7 @@ function startNetworkServices(fabloRoot: string, flags: NetworkServicesFlags, ap } } -function startBrowserApi(fabloRoot: string): void { +async function startBrowserApi(fabloRoot: string): Promise { try { const commands = [ `cd "${fabloRoot}/browser-api"`, @@ -188,7 +196,7 @@ function startBrowserApi(fabloRoot: string): void { } } -function startOpsApi(fabloRoot: string, apiConfigPath: string): void { +async function startOpsApi(fabloRoot: string, apiConfigPath: string): Promise { try { const commands = [`cd "${fabloRoot}/ops-api"`, `./ops-api.sh up "${fabloRoot}" "${apiConfigPath}"`]; @@ -199,7 +207,7 @@ function startOpsApi(fabloRoot: string, apiConfigPath: string): void { } } -function printTestAdminCredentials(fabloRoot: string): void { +async function printTestAdminCredentials(fabloRoot: string): Promise { const commands = [ `cd "${fabloRoot}"`, `echo "Dev admin private key which you can use for signing transactions:"`, @@ -208,10 +216,23 @@ function printTestAdminCredentials(fabloRoot: string): void { execSyncStdio(commands.join(" && ")); } -function startChaincodeInWatchMode(fabloRoot: string, args: SingleArg[]): void { - const chaincodeName = args[0].chaincodeName; - const commands = [`cd "${fabloRoot}"`, `./chaincode-dev-start.sh "watch" "${chaincodeName}"`]; - execSyncStdio(commands.join(" && ")); +function streamChaincodeLogsAndExit(fabloRoot: string, args: SingleArg[]): Promise { + if (args.length === 0) { + throw new Error("Error: No chaincode found in watch mode."); + } + + const containerName = `ccaas_peer0.curator.local_${args[0].channel}_${args[0].chaincodeName}_0.0.1`; + execSyncStdio(`docker logs -f ${containerName}`); + + return Fablo.directory(fabloRoot) + .then(async () => { + // Print message in yellow + console.log("\x1b[33m\n\nChaincode process stopped, pruning network...\n\n\x1b[0m"); + // Wait 2 seconds to let the user see the message + await new Promise((resolve) => setTimeout(resolve, 2000)); + }) + .then(() => downNetworkServices(fabloRoot)) + .execute("prune"); } function copyEnvFile(fabloRoot: string, envConfigPath: string | undefined, chaincodeDirs: string[]): void { @@ -245,14 +266,16 @@ export function createConfigtxProfiles(args: SingleArg[]): string { export function updatedFabloConfig( initialCfg: FabloConfig, fabloRoot: string, + isWatchMode: boolean, args: SingleArg[] ): FabloConfig { - return args.reduce((cfg, arg) => updatedFabloConfigWithEntry(cfg, fabloRoot, arg), initialCfg); + return args.reduce((cfg, arg) => updatedFabloConfigWithEntry(cfg, fabloRoot, isWatchMode, arg), initialCfg); } function updatedFabloConfigWithEntry( initialCfg: FabloConfig, fabloRoot: string, + isWatchMode: boolean, arg: SingleArg ): FabloConfig { const updated = JSON.parse(JSON.stringify(initialCfg)); // deep copy @@ -279,13 +302,24 @@ function updatedFabloConfigWithEntry( const absoluteChaincodeDir = path.resolve(arg.chaincodeDir ?? "./"); const relativeChaincodeDir = path.relative(fabloRoot, absoluteChaincodeDir); - updated.chaincodes.push({ - name: arg.chaincodeName, - version: "0.0.1", - lang: "node", - channel: arg.channel, - directory: relativeChaincodeDir - }); + const newChaincode = isWatchMode + ? { + channel: arg.channel, + name: arg.chaincodeName, + version: "0.0.1", + lang: "ccaas", + image: "hyperledger/fabric-nodeenv:2.5", + chaincodeMountPath: `$CHAINCODES_BASE_DIR/${relativeChaincodeDir}`, + chaincodeStartCommand: "echo starting && npm run start:ccaas:watch" + } + : { + channel: arg.channel, + name: arg.chaincodeName, + version: "0.0.1", + lang: "node", + directory: relativeChaincodeDir + }; + updated.chaincodes.push(newChaincode); return updated; } From 0b986efe0edc984aa6dc3a85727878e12c7f9bbc Mon Sep 17 00:00:00 2001 From: Jakub Dzikowski Date: Wed, 21 Jan 2026 16:46:24 +0100 Subject: [PATCH 5/8] Fix connection profiles Signed-off-by: Jakub Dzikowski --- chain-cli/src/commands/network-up/index.ts | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/chain-cli/src/commands/network-up/index.ts b/chain-cli/src/commands/network-up/index.ts index ec28e09d99..8a42f8b071 100644 --- a/chain-cli/src/commands/network-up/index.ts +++ b/chain-cli/src/commands/network-up/index.ts @@ -478,15 +478,8 @@ function saveConnectionProfiles( const cryptoConfigRoot = path.resolve(fabloRoot, "fablo-target/fabric-config/crypto-config"); // Generate connection profiles for all services - const cppsLocal = getCPPs(cryptoConfigRoot, channelNames, localhostName, !isWatchMode, true, !isWatchMode); - const cppsDocker = getCPPs( - "/crypto-config", - channelNames, - localhostName, - !isWatchMode, - false, - !isWatchMode - ); + const cppsLocal = getCPPs(cryptoConfigRoot, channelNames, localhostName, true, true, true); + const cppsDocker = getCPPs(cryptoConfigRoot, channelNames, localhostName, true, false, true); // Save connection profiles for ops-api and e2e tests const cppLocalDir = path.resolve(fabloRoot, "connection-profiles"); From 9c50f4fb8a625156cb502ecff9d23eee16072984 Mon Sep 17 00:00:00 2001 From: Jakub Dzikowski Date: Mon, 26 Jan 2026 12:19:44 +0100 Subject: [PATCH 6/8] Set Fablo 2.5.0 Signed-off-by: Jakub Dzikowski --- .../chaincode-template/package-lock.json | 16 +-- chain-cli/network/fablo-config-default.json | 2 +- chain-cli/network/fablo-config-dev-mode.json | 2 +- chain-cli/package.json | 2 +- licenses/licenses.csv | 2 +- package-lock.json | 104 +++++++++++------- 6 files changed, 77 insertions(+), 51 deletions(-) diff --git a/chain-cli/chaincode-template/package-lock.json b/chain-cli/chaincode-template/package-lock.json index 21ac14a39d..19bd111916 100644 --- a/chain-cli/chaincode-template/package-lock.json +++ b/chain-cli/chaincode-template/package-lock.json @@ -4101,9 +4101,9 @@ } }, "node_modules/fablo": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/fablo/-/fablo-2.4.3.tgz", - "integrity": "sha512-8t80rZ8kc66dYn6oCAk6kUItXM56CUFKW/QTQSltFUbhV5sMXYqoMUWujKW5pgJNgjDVuy/mxlaiwksRzoKU9A==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/fablo/-/fablo-2.5.0.tgz", + "integrity": "sha512-ZG2v6AupryShKgB2pKEP85E+xiEAh1gNt2JujwZIocw4tlPYOWCvMhpgi8qz4L/tPuLcafs/F+aaMmYSJvKsng==", "dev": true, "license": "Apache-2.0" }, @@ -8814,7 +8814,7 @@ "@oclif/plugin-help": "^3", "axios": "^1.6.0", "dotenv": "16.3.1", - "fablo": "2.4.3", + "fablo": "2.5.0", "nanoid": "^3.3.6", "tslib": "^2.6.2" } @@ -11350,10 +11350,10 @@ "dev": true, "optional": true }, - "fablo": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/fablo/-/fablo-2.4.3.tgz", - "integrity": "sha512-8t80rZ8kc66dYn6oCAk6kUItXM56CUFKW/QTQSltFUbhV5sMXYqoMUWujKW5pgJNgjDVuy/mxlaiwksRzoKU9A==", + "node_modules/fablo": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/fablo/-/fablo-2.5.0.tgz", + "integrity": "sha512-ZG2v6AupryShKgB2pKEP85E+xiEAh1gNt2JujwZIocw4tlPYOWCvMhpgi8qz4L/tPuLcafs/F+aaMmYSJvKsng==", "dev": true }, "fabric-ca-client": { diff --git a/chain-cli/network/fablo-config-default.json b/chain-cli/network/fablo-config-default.json index 6ead1c5326..716d4e4bdc 100644 --- a/chain-cli/network/fablo-config-default.json +++ b/chain-cli/network/fablo-config-default.json @@ -1,5 +1,5 @@ { - "$schema": "https://github.com/hyperledger-labs/fablo/releases/download/2.4.3/schema.json", + "$schema": "https://github.com/hyperledger-labs/fablo/releases/download/2.5.0/schema.json", "global": { "fabricVersion": "3.1.0", "tls": true, diff --git a/chain-cli/network/fablo-config-dev-mode.json b/chain-cli/network/fablo-config-dev-mode.json index 6ead1c5326..716d4e4bdc 100644 --- a/chain-cli/network/fablo-config-dev-mode.json +++ b/chain-cli/network/fablo-config-dev-mode.json @@ -1,5 +1,5 @@ { - "$schema": "https://github.com/hyperledger-labs/fablo/releases/download/2.4.3/schema.json", + "$schema": "https://github.com/hyperledger-labs/fablo/releases/download/2.5.0/schema.json", "global": { "fabricVersion": "3.1.0", "tls": true, diff --git a/chain-cli/package.json b/chain-cli/package.json index 661c70ad56..c8933f102e 100644 --- a/chain-cli/package.json +++ b/chain-cli/package.json @@ -20,7 +20,7 @@ "@oclif/plugin-help": "^3", "axios": "^1.6.0", "dotenv": "16.3.1", - "fablo": "2.4.3", + "fablo": "2.5.0", "nanoid": "^3.3.6", "tslib": "^2.6.2" }, diff --git a/licenses/licenses.csv b/licenses/licenses.csv index 02a9c72f64..4c71a34a48 100644 --- a/licenses/licenses.csv +++ b/licenses/licenses.csv @@ -700,7 +700,7 @@ "expect@29.7.0","expect","29.7.0","https://github.com/jestjs/jest","This package exports the `expect` function used in [Jest](https://jestjs.io/). You can find its documentation [on Jest's website](https://jestjs.io/docs/expect).","MIT" "expect@30.2.0","expect","30.2.0","https://github.com/jestjs/jest","This package exports the `expect` function used in [Jest](https://jestjs.io/). You can find its documentation [on Jest's website](https://jestjs.io/docs/expect).","MIT" "eyes@0.1.8","eyes","0.1.8","","a customizable value inspector","MIT" -"fablo@2.4.3","fablo","2.4.3","https://github.com/fablo-io/fablo-js","JS/TS bindings for Fablo (https://github.com/hyperledger-labs/fablo)","Apache-2.0" +"fablo@2.5.0","fablo","2.5.0","https://github.com/fablo-io/fablo-js","JS/TS bindings for Fablo (https://github.com/hyperledger-labs/fablo)","Apache-2.0" "fabric-ca-client@2.2.20","fabric-ca-client","2.2.20","https://github.com/hyperledger/fabric-sdk-node","SDK for writing node.js applications to interact with Hyperledger Fabric. This package encapsulates the APIs to interact with the Fabric CA to manage user certificates lifecycle such as register, enroll, renew and revoke.","Apache-2.0" "fabric-common@2.2.20","fabric-common","2.2.20","https://github.com/hyperledger/fabric-sdk-node","This package encapsulates the common code used by the `fabric-ca-client`, `fabric-network` packages.","Apache-2.0" "fabric-contract-api@2.5.6","fabric-contract-api","2.5.6","https://github.com/hyperledger/fabric-chaincode-node","A node.js implementation of Hyperledger Fabric chaincode shim, to allow endorsing peers and user-provided chaincodes to communicate with each other","Apache-2.0" diff --git a/package-lock.json b/package-lock.json index 6e8df427c6..c92667c416 100644 --- a/package-lock.json +++ b/package-lock.json @@ -94,7 +94,7 @@ "@oclif/plugin-help": "^3", "axios": "^1.6.0", "dotenv": "16.3.1", - "fablo": "2.4.3", + "fablo": "2.5.0", "nanoid": "^3.3.6", "tslib": "^2.6.2" }, @@ -1225,7 +1225,6 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.3.tgz", "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==", "license": "MIT", - "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", @@ -1813,6 +1812,7 @@ "version": "7.24.7", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", @@ -1827,6 +1827,7 @@ "version": "3.2.1", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -1838,6 +1839,7 @@ "version": "2.4.2", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -1851,6 +1853,7 @@ "version": "1.9.3", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "color-name": "1.1.3" } @@ -1858,12 +1861,14 @@ "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.8.0" } @@ -1872,6 +1877,7 @@ "version": "3.0.0", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=4" } @@ -1880,6 +1886,7 @@ "version": "5.5.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -3319,6 +3326,7 @@ "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", @@ -3334,6 +3342,7 @@ "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@eslint/core": "^0.17.0" }, @@ -3347,6 +3356,7 @@ "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@types/json-schema": "^7.0.15" }, @@ -3415,6 +3425,7 @@ "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", "dev": true, "license": "Apache-2.0", + "peer": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -3425,6 +3436,7 @@ "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@eslint/core": "^0.17.0", "levn": "^0.4.1" @@ -3508,6 +3520,7 @@ "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=18.18.0" } @@ -3518,6 +3531,7 @@ "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.3.0" @@ -3532,6 +3546,7 @@ "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true, "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=18.18" }, @@ -3576,6 +3591,7 @@ "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=18.18" }, @@ -4451,6 +4467,7 @@ "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -4475,6 +4492,7 @@ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -4488,6 +4506,7 @@ "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -4715,6 +4734,7 @@ "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -4745,6 +4765,7 @@ "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", @@ -4763,6 +4784,7 @@ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "engines": { "node": ">=4.0" } @@ -4773,6 +4795,7 @@ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "flat-cache": "^4.0.0" }, @@ -4786,6 +4809,7 @@ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -4803,6 +4827,7 @@ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" @@ -4830,6 +4855,7 @@ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -4846,6 +4872,7 @@ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -7600,7 +7627,6 @@ "version": "1.9.2", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@swc-node/core": "^1.13.1", "@swc-node/sourcemap-support": "^0.5.0", @@ -7641,7 +7667,6 @@ "dev": true, "hasInstallScript": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@swc/counter": "^0.1.3", "@swc/types": "^0.1.8" @@ -7851,7 +7876,6 @@ "version": "0.5.11", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "tslib": "^2.4.0" } @@ -7860,7 +7884,6 @@ "version": "0.1.12", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@swc/counter": "^0.1.3" } @@ -8020,7 +8043,8 @@ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/graceful-fs": { "version": "4.1.8", @@ -8100,7 +8124,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.9.tgz", "integrity": "sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==", "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -8305,7 +8328,6 @@ "version": "6.13.2", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "6.13.2", "@typescript-eslint/types": "6.13.2", @@ -8841,7 +8863,6 @@ "version": "0.0.7", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "argparse": "^2.0.1" }, @@ -8870,7 +8891,6 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -9371,7 +9391,6 @@ "node_modules/bignumber.js": { "version": "9.1.2", "license": "MIT", - "peer": true, "engines": { "node": "*" } @@ -9450,7 +9469,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001733", "electron-to-chromium": "^1.5.199", @@ -9809,15 +9827,13 @@ }, "node_modules/class-transformer": { "version": "0.5.1", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/class-validator": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.2.tgz", "integrity": "sha512-3kMVRF2io8N8pY1IFIXlho9r8IPUUIfHe2hYVtiebvAzU2XeQFXTv+XI4WX+TnXmtwXMDcjngcpkiPM0O9PvLw==", "license": "MIT", - "peer": true, "dependencies": { "@types/validator": "^13.11.8", "libphonenumber-js": "^1.11.1", @@ -10911,7 +10927,6 @@ "version": "8.55.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -10995,6 +11010,7 @@ "version": "7.12.11", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/highlight": "^7.10.4" } @@ -11003,6 +11019,7 @@ "version": "0.4.3", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", @@ -11022,6 +11039,7 @@ "version": "4.0.6", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 4" } @@ -11030,6 +11048,7 @@ "version": "0.5.0", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.0", "debug": "^4.1.1", @@ -11042,7 +11061,8 @@ "node_modules/eslint-config-oclif-typescript/node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "dev": true, - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "peer": true }, "node_modules/eslint-config-oclif-typescript/node_modules/@typescript-eslint/eslint-plugin": { "version": "4.33.0", @@ -11079,7 +11099,6 @@ "version": "4.33.0", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "4.33.0", "@typescript-eslint/types": "4.33.0", @@ -11176,6 +11195,7 @@ "version": "7.4.1", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -11278,6 +11298,7 @@ "version": "2.1.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -11292,6 +11313,7 @@ "version": "1.3.0", "dev": true, "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=4" } @@ -11308,6 +11330,7 @@ "version": "4.0.6", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 4" } @@ -11316,6 +11339,7 @@ "version": "7.3.1", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", @@ -11329,6 +11353,7 @@ "version": "1.3.0", "dev": true, "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=4" } @@ -11337,6 +11362,7 @@ "version": "5.1.2", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -11348,6 +11374,7 @@ "version": "13.24.0", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -11364,6 +11391,7 @@ "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -11375,12 +11403,14 @@ "node_modules/eslint-config-oclif-typescript/node_modules/json-schema-traverse": { "version": "1.0.0", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/eslint-config-oclif-typescript/node_modules/table": { "version": "6.8.2", "dev": true, "license": "BSD-3-Clause", + "peer": true, "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -11396,6 +11426,7 @@ "version": "8.17.1", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -11411,6 +11442,7 @@ "version": "0.20.2", "dev": true, "license": "(MIT OR CC0-1.0)", + "peer": true, "engines": { "node": ">=10" }, @@ -11424,7 +11456,6 @@ "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", - "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -11976,9 +12007,9 @@ } }, "node_modules/fablo": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/fablo/-/fablo-2.4.3.tgz", - "integrity": "sha512-8t80rZ8kc66dYn6oCAk6kUItXM56CUFKW/QTQSltFUbhV5sMXYqoMUWujKW5pgJNgjDVuy/mxlaiwksRzoKU9A==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/fablo/-/fablo-2.5.0.tgz", + "integrity": "sha512-ZG2v6AupryShKgB2pKEP85E+xiEAh1gNt2JujwZIocw4tlPYOWCvMhpgi8qz4L/tPuLcafs/F+aaMmYSJvKsng==", "license": "Apache-2.0" }, "node_modules/fabric-ca-client": { @@ -12092,7 +12123,6 @@ "node_modules/fabric-contract-api": { "version": "2.5.6", "license": "Apache-2.0", - "peer": true, "dependencies": { "class-transformer": "^0.4.0", "fabric-shim-api": "2.5.6", @@ -12139,7 +12169,6 @@ "node_modules/fabric-shim": { "version": "2.5.6", "license": "Apache-2.0", - "peer": true, "dependencies": { "@fidm/x509": "^1.2.1", "@grpc/grpc-js": "~1.10.9", @@ -12240,7 +12269,8 @@ "node_modules/fast-uri": { "version": "3.0.1", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/fast-xml-parser": { "version": "5.2.5", @@ -13722,7 +13752,6 @@ "version": "29.7.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -14378,7 +14407,6 @@ "node_modules/json-stringify-deterministic": { "version": "1.0.12", "license": "MIT", - "peer": true, "engines": { "node": ">= 4" } @@ -14668,7 +14696,8 @@ "node_modules/lodash.truncate": { "version": "4.4.2", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/log-symbols": { "version": "4.1.0", @@ -14704,8 +14733,7 @@ }, "node_modules/long": { "version": "5.2.3", - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/lower-case": { "version": "2.0.2", @@ -16318,7 +16346,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.1", @@ -16409,7 +16436,6 @@ "version": "3.1.1", "dev": true, "license": "MIT", - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -16492,6 +16518,7 @@ "version": "2.0.3", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.4.0" } @@ -16948,6 +16975,7 @@ "version": "2.0.2", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -17984,7 +18012,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -18154,7 +18181,6 @@ "version": "10.9.2", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -18352,7 +18378,6 @@ "version": "5.3.3", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -18546,7 +18571,8 @@ "node_modules/v8-compile-cache": { "version": "2.3.0", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", From 0c720b03ba9ed86ff96412debde0232c4b716c3e Mon Sep 17 00:00:00 2001 From: Jakub Dzikowski Date: Mon, 26 Jan 2026 12:27:24 +0100 Subject: [PATCH 7/8] Fix Fablo version in actions Signed-off-by: Jakub Dzikowski --- .github/workflows/test-on-push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-on-push.yml b/.github/workflows/test-on-push.yml index 0f5331c78f..f2bd40e3dc 100644 --- a/.github/workflows/test-on-push.yml +++ b/.github/workflows/test-on-push.yml @@ -42,7 +42,7 @@ jobs: - name: Prefetch Fabric Docker layers run: | cd chain-cli/network - curl -Lf https://github.com/hyperledger-labs/fablo/releases/download/2.4.3/fablo.sh -o ./fablo && chmod +x ./fablo + curl -Lf https://github.com/hyperledger-labs/fablo/releases/download/2.5.0/fablo.sh -o ./fablo && chmod +x ./fablo ./fablo generate fablo-config-default.json docker compose -f fablo-target/fabric-docker/docker-compose.yaml pull From 39c7f280b991e2cb9f4053ed7f0d097663db4090 Mon Sep 17 00:00:00 2001 From: Jakub Dzikowski Date: Tue, 27 Jan 2026 18:53:05 +0100 Subject: [PATCH 8/8] Handle Fablo issue with overwriting the CCaaS connection tgz Signed-off-by: Jakub Dzikowski --- chain-cli/network/fablo-post-generate.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/chain-cli/network/fablo-post-generate.sh b/chain-cli/network/fablo-post-generate.sh index 937cd05823..1ea2a1a8a2 100755 --- a/chain-cli/network/fablo-post-generate.sh +++ b/chain-cli/network/fablo-post-generate.sh @@ -98,4 +98,9 @@ echo "ADMIN_PUBLIC_KEY=$(cat ./dev-admin-key/dev-admin.pub.hex.txt)" >> "$target # replace all "docker-compose" calls with "docker compose" # see: https://stackoverflow.com/questions/77641240 perl -i -pe 's/docker-compose/docker compose/g' "./fablo-target/fabric-docker/commands-generated.sh" -perl -i -pe 's/docker-compose/docker compose/g' "./fablo-target/fabric-docker/snapshot-scripts.sh" \ No newline at end of file +perl -i -pe 's/docker-compose/docker compose/g' "./fablo-target/fabric-docker/snapshot-scripts.sh" + +# workaround for https://github.com/hyperledger-labs/fablo/issues/653 +# it modifies the chaincode connection archive name to include the peer address +# and not overwrite the original file +perl -i -pe 's/\$CHAINCODE_LABEL\.tar\.gz/\$\{CHAINCODE_LABEL\}_\$\{PEER_ADDRESS%:*\}.tar.gz/g' "./fablo-target/fabric-docker/scripts/chaincode-functions.sh" \ No newline at end of file