From 0daae14bf84353a81df4b0ee25e1e4f56d547aa8 Mon Sep 17 00:00:00 2001 From: Anatoly Laskaris Date: Mon, 26 Sep 2022 16:47:52 +0300 Subject: [PATCH] ci: Add periodic healtchecks (#21) * Use env variable to set where to run tests * Bump aqua version * Add periodic healtcheck * Report to slack on failure * Retry tests 3 times --- .github/workflows/healthcheck.yml | 23 ++ .github/workflows/tests.yml | 35 +- package-lock.json | 345 ++++++++++++++------ package.json | 3 +- src/__test__/examples.spec.ts | 2 + src/__test__/run.spec.ts | 2 + src/config.ts | 116 +++++-- .github/e2e/config.ts => src/local-nodes.ts | 22 +- tsconfig.json | 2 +- 9 files changed, 403 insertions(+), 147 deletions(-) create mode 100644 .github/workflows/healthcheck.yml rename .github/e2e/config.ts => src/local-nodes.ts (66%) diff --git a/.github/workflows/healthcheck.yml b/.github/workflows/healthcheck.yml new file mode 100644 index 0000000..0ef7625 --- /dev/null +++ b/.github/workflows/healthcheck.yml @@ -0,0 +1,23 @@ +name: Periodic healthcheck + +on: + schedule: + - cron: '0 * * * *' + +concurrency: + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + +jobs: + health: + + strategy: + matrix: + env: + - krasnodar + - testnet + - stage + + uses: ./.github/workflows/tests.yml + with: + fluence-env: ${{ matrix.env }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f0ee61d..02ce664 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -3,6 +3,10 @@ name: Run tests with workflow_call on: workflow_call: inputs: + fluence-env: + description: "Fluence enviroment to run tests agains" + type: string + default: "local" rust-peer-image: description: "rust-peer image tag" type: string @@ -17,6 +21,7 @@ on: env: FORCE_COLOR: true RUST_PEER_IMAGE: "${{ inputs.rust-peer-image }}" + FLUENCE_ENV: "${{ inputs.fluence-env }}" jobs: aqua-playground: @@ -40,7 +45,8 @@ jobs: secrets: | kv/docker-registry/basicauth/ci username | DOCKER_USERNAME ; kv/docker-registry/basicauth/ci password | DOCKER_PASSWORD ; - kv/npm-registry/basicauth/ci token | NODE_AUTH_TOKEN + kv/npm-registry/basicauth/ci token | NODE_AUTH_TOKEN; + kv/slack/node-alerts webhook | INCOMING_WEBHOOK_URL - name: Login to DockerHub uses: docker/login-action@v2 @@ -68,9 +74,6 @@ jobs: compose-file: ".github/e2e/docker-compose.yml" down-flags: "--volumes" - - name: Prepare config - run: cat .github/e2e/config.ts > src/config.ts - - name: Setup node with self-hosted registry uses: actions/setup-node@v3 with: @@ -95,3 +98,27 @@ jobs: - run: npm run compile-aqua -- -c "UNIQUE_CONST = 1" -c "ANOTHER_CONST = \"ab\"" - run: npm run build - run: npm run test + + - name: Report failure to slack + if: inputs.fluence-env != 'local' && failure() + uses: tokorom/action-slack-incoming-webhook@v1.1.4 + with: + text: aqua-playground healthcheck failed + attachments: | + [ + { + "color": "bad", + "author_name": "${{ github.actor }}", + "author_icon": "${{ github.event.sender.avatar_url }}", + "fields": [ + { + "title": "Fluence environment", + "value": "${{ inputs.fluence-env }}" + }, + { + "title": "GitHub Actions URL", + "value": "${{ github.event.repository.url }}/actions/runs/${{ github.run_id }}" + }, + ] + } + ] diff --git a/package-lock.json b/package-lock.json index f04dd38..ac3e64f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,10 +18,11 @@ "fldist": "dist/index.js" }, "devDependencies": { - "@fluencelabs/aqua": "0.7.4-336", + "@fluencelabs/aqua": "0.7.5-339", "@fluencelabs/aqua-dht": "0.2.5", "@fluencelabs/aqua-lib": "0.4.3", "@types/jest": "^27.0.2", + "@types/node": "^18.7.21", "jest": "^27.2.4", "js-base64": "^3.7.2", "ts-jest": "^27.0.5", @@ -579,13 +580,14 @@ "license": "MIT" }, "node_modules/@fluencelabs/aqua": { - "version": "0.7.4-336", + "version": "0.7.5-339", + "resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.7.5-339.tgz", + "integrity": "sha512-X4e3FK7gJfCpPxD3vnl2IKnG3rC8a9c/9ETARHAItoUoLgceSAaequpaSB1bP1pinwjAPEINE7BFlQKkndDPUA==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@fluencelabs/aqua-ipfs": "0.5.2", - "@fluencelabs/aqua-lib": "0.5.1", - "@fluencelabs/fluence": "0.23.1", + "@fluencelabs/aqua-ipfs": "0.5.5", + "@fluencelabs/aqua-lib": "0.5.2", + "@fluencelabs/fluence": "0.23.4", "@fluencelabs/fluence-network-environment": "1.0.13", "ipfs-http-client": "50.1.2" }, @@ -644,17 +646,19 @@ "license": "MIT" }, "node_modules/@fluencelabs/aqua-ipfs": { - "version": "0.5.2", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@fluencelabs/aqua-ipfs/-/aqua-ipfs-0.5.5.tgz", + "integrity": "sha512-TBSClVs2r3FhgxVFSDPXzJNP0/EqHbIaVSY9U6LTzBDUdZDItu8Yt+Rsjj4LX5X4kOwo94ADkYG0UG8nKC1L5A==", "dev": true, - "license": "MIT", "dependencies": { - "@fluencelabs/aqua-lib": "^0.1.14" + "@fluencelabs/aqua-lib": "^0.5.2" } }, "node_modules/@fluencelabs/aqua-ipfs/node_modules/@fluencelabs/aqua-lib": { - "version": "0.1.14", - "dev": true, - "license": "MIT" + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@fluencelabs/aqua-lib/-/aqua-lib-0.5.2.tgz", + "integrity": "sha512-fmoFFE8myhLH9d+YR0+0ZPL2YIQyR6M1woAGu5d1xXI02Sjzn4id6dE4PpxHb8cSBPRie8AwsKobHCNqGxI8oA==", + "dev": true }, "node_modules/@fluencelabs/aqua-lib": { "version": "0.4.3", @@ -663,8 +667,9 @@ }, "node_modules/@fluencelabs/aqua/node_modules/@chainsafe/libp2p-noise": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-4.1.2.tgz", + "integrity": "sha512-UvZLWvIS7bAz6M8XfsnC/NhT1c/lg8NNsME1hTvo21kRwyxNFpB8gEhId03Cb5B23oIaHhMySAHBcpuMiSxQ2w==", "dev": true, - "license": "MIT", "dependencies": { "@stablelib/chacha20poly1305": "^1.0.1", "@stablelib/hkdf": "^1.0.1", @@ -683,18 +688,20 @@ } }, "node_modules/@fluencelabs/aqua/node_modules/@fluencelabs/aqua-lib": { - "version": "0.5.1", - "dev": true, - "license": "MIT" + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@fluencelabs/aqua-lib/-/aqua-lib-0.5.2.tgz", + "integrity": "sha512-fmoFFE8myhLH9d+YR0+0ZPL2YIQyR6M1woAGu5d1xXI02Sjzn4id6dE4PpxHb8cSBPRie8AwsKobHCNqGxI8oA==", + "dev": true }, "node_modules/@fluencelabs/aqua/node_modules/@fluencelabs/fluence": { - "version": "0.23.1", + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.23.4.tgz", + "integrity": "sha512-Ze67mD4ihDrQEN81UQe4gKmkiTBZgvKY87tBgIkuUsBqS8n7XF9tai/5LGgpV5qi3P4vnyh2VPmYURac/QS6YQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@chainsafe/libp2p-noise": "^4.1.1", - "@fluencelabs/avm": "0.24.2", - "@fluencelabs/marine-js": "0.2.5", + "@fluencelabs/avm": "0.25.0", + "@fluencelabs/marine-js": "0.3.5", "async": "3.2.3", "browser-or-node": "^2.0.0", "bs58": "5.0.0", @@ -702,6 +709,7 @@ "cids": "1.1.9", "it-length-prefixed": "5.0.3", "it-pipe": "1.1.0", + "js-base64": "^3.7.2", "libp2p": "0.36.2", "libp2p-crypto": "0.21.2", "libp2p-mplex": "0.10.7", @@ -721,8 +729,9 @@ }, "node_modules/@fluencelabs/aqua/node_modules/@fluencelabs/fluence/node_modules/libp2p-crypto": { "version": "0.21.2", + "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.21.2.tgz", + "integrity": "sha512-EXFrhSpiHtJ+/L8xXDvQNK5VjUMG51u878jzZcaT5XhuN/zFg6PWJFnl/qB2Y2j7eMWnvCRP7Kp+ua2H36cG4g==", "dev": true, - "license": "MIT", "dependencies": { "@noble/ed25519": "^1.5.1", "@noble/secp256k1": "^1.3.0", @@ -739,8 +748,9 @@ }, "node_modules/@fluencelabs/aqua/node_modules/@fluencelabs/fluence/node_modules/peer-id": { "version": "0.16.0", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.16.0.tgz", + "integrity": "sha512-EmL7FurFUduU9m1PS9cfJ5TAuCvxKQ7DKpfx3Yj6IKWyBRtosriFuOag/l3ni/dtPgPLwiA4R9IvpL7hsDLJuQ==", "dev": true, - "license": "MIT", "dependencies": { "class-is": "^1.1.0", "libp2p-crypto": "^0.21.0", @@ -754,23 +764,27 @@ }, "node_modules/@fluencelabs/aqua/node_modules/any-signal": { "version": "3.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-3.0.1.tgz", + "integrity": "sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg==", + "dev": true }, "node_modules/@fluencelabs/aqua/node_modules/async": { "version": "3.2.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "dev": true }, "node_modules/@fluencelabs/aqua/node_modules/base-x": { "version": "4.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", + "dev": true }, "node_modules/@fluencelabs/aqua/node_modules/bl": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.0.0.tgz", + "integrity": "sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ==", "dev": true, - "license": "MIT", "dependencies": { "buffer": "^6.0.3", "inherits": "^2.0.4", @@ -779,14 +793,17 @@ }, "node_modules/@fluencelabs/aqua/node_modules/bs58": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", "dev": true, - "license": "MIT", "dependencies": { "base-x": "^4.0.0" } }, "node_modules/@fluencelabs/aqua/node_modules/buffer": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, "funding": [ { @@ -802,7 +819,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -810,8 +826,10 @@ }, "node_modules/@fluencelabs/aqua/node_modules/cids": { "version": "1.1.9", + "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", + "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", + "deprecated": "This module has been superseded by the multiformats module", "dev": true, - "license": "MIT", "dependencies": { "multibase": "^4.0.1", "multicodec": "^3.0.1", @@ -825,16 +843,18 @@ }, "node_modules/@fluencelabs/aqua/node_modules/es6-promisify": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz", + "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/@fluencelabs/aqua/node_modules/interface-datastore": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-6.1.1.tgz", + "integrity": "sha512-AmCS+9CT34pp2u0QQVXjKztkuq3y5T+BIciuiHDDtDZucZD8VudosnSdUyXJV6IsRkN5jc4RFDhCk1O6Q3Gxjg==", "dev": true, - "license": "MIT", "dependencies": { "interface-store": "^2.0.2", "nanoid": "^3.0.2", @@ -843,13 +863,15 @@ }, "node_modules/@fluencelabs/aqua/node_modules/interface-store": { "version": "2.0.2", - "dev": true, - "license": "(Apache-2.0 OR MIT)" + "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-2.0.2.tgz", + "integrity": "sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg==", + "dev": true }, "node_modules/@fluencelabs/aqua/node_modules/ipfs-utils": { "version": "9.0.7", + "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.7.tgz", + "integrity": "sha512-Umvb0Zydy2zZiTmQBGLfLISr8vOmXX8cxEIP+N8zGHrtRShG/j32yl1xd/BtS+Hbg0FIbVm3opwvxB2gmta0YA==", "dev": true, - "license": "MIT", "dependencies": { "any-signal": "^3.0.0", "buffer": "^6.0.1", @@ -869,8 +891,9 @@ }, "node_modules/@fluencelabs/aqua/node_modules/it-glob": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-1.0.2.tgz", + "integrity": "sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q==", "dev": true, - "license": "ISC", "dependencies": { "@types/minimatch": "^3.0.4", "minimatch": "^3.0.4" @@ -878,8 +901,9 @@ }, "node_modules/@fluencelabs/aqua/node_modules/it-length-prefixed": { "version": "5.0.3", + "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-5.0.3.tgz", + "integrity": "sha512-b+jDHLcnOnPDQN79ronmzF5jeBjdJsy0ce2O6i6X4J5tnaO8Fd146ZA/tMbzaLlKnTpXa0eKtofpYhumXGENeg==", "dev": true, - "license": "MIT", "dependencies": { "bl": "^5.0.0", "buffer": "^6.0.3", @@ -888,13 +912,15 @@ }, "node_modules/@fluencelabs/aqua/node_modules/it-length-prefixed/node_modules/varint": { "version": "6.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "dev": true }, "node_modules/@fluencelabs/aqua/node_modules/libp2p": { "version": "0.36.2", + "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-0.36.2.tgz", + "integrity": "sha512-UpNYBMQVivMu56zoibdGitopv39uBBAybIBOEGWmFy/I2NnTVGUutLPrxo47AuN2kntYgo/TNJfW+PpswUgSaw==", "dev": true, - "license": "MIT", "dependencies": { "@vascosantos/moving-average": "^1.1.0", "abortable-iterator": "^3.0.0", @@ -957,8 +983,9 @@ }, "node_modules/@fluencelabs/aqua/node_modules/libp2p-interfaces": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/libp2p-interfaces/-/libp2p-interfaces-4.0.6.tgz", + "integrity": "sha512-3KjzNEIWhi+VoOamLvgKKUE/xqwxSw/JYqsBnfMhAWVRvRtosROtVT03wci2XbuuowCYw+/hEX1xKJIR1w5n0A==", "dev": true, - "license": "MIT", "dependencies": { "abortable-iterator": "^3.0.0", "debug": "^4.3.1", @@ -977,8 +1004,9 @@ }, "node_modules/@fluencelabs/aqua/node_modules/libp2p-interfaces/node_modules/libp2p-crypto": { "version": "0.21.2", + "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.21.2.tgz", + "integrity": "sha512-EXFrhSpiHtJ+/L8xXDvQNK5VjUMG51u878jzZcaT5XhuN/zFg6PWJFnl/qB2Y2j7eMWnvCRP7Kp+ua2H36cG4g==", "dev": true, - "license": "MIT", "dependencies": { "@noble/ed25519": "^1.5.1", "@noble/secp256k1": "^1.3.0", @@ -995,8 +1023,9 @@ }, "node_modules/@fluencelabs/aqua/node_modules/libp2p-interfaces/node_modules/peer-id": { "version": "0.16.0", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.16.0.tgz", + "integrity": "sha512-EmL7FurFUduU9m1PS9cfJ5TAuCvxKQ7DKpfx3Yj6IKWyBRtosriFuOag/l3ni/dtPgPLwiA4R9IvpL7hsDLJuQ==", "dev": true, - "license": "MIT", "dependencies": { "class-is": "^1.1.0", "libp2p-crypto": "^0.21.0", @@ -1010,8 +1039,9 @@ }, "node_modules/@fluencelabs/aqua/node_modules/libp2p-mplex": { "version": "0.10.7", + "resolved": "https://registry.npmjs.org/libp2p-mplex/-/libp2p-mplex-0.10.7.tgz", + "integrity": "sha512-21VV0DZWuOsHgitWy1GZD1M/kki3a/hVoAJ5QC48p01JNSK5W8gxRiZtq7cCGJ/xNpbQxvMlMtS5eq8CFRlysg==", "dev": true, - "license": "MIT", "dependencies": { "abortable-iterator": "^3.0.2", "bl": "^5.0.0", @@ -1024,13 +1054,15 @@ }, "node_modules/@fluencelabs/aqua/node_modules/libp2p-mplex/node_modules/varint": { "version": "6.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "dev": true }, "node_modules/@fluencelabs/aqua/node_modules/libp2p-websockets": { "version": "0.16.2", + "resolved": "https://registry.npmjs.org/libp2p-websockets/-/libp2p-websockets-0.16.2.tgz", + "integrity": "sha512-QGfo8jX1Ks16yi8C67CCyMW7k9cfCYiQ0lzKVJBud0fV3ymbMO2L8gzU6iXUUZTHILo8ka26zKhwQ4lmUMI+nA==", "dev": true, - "license": "MIT", "dependencies": { "abortable-iterator": "^3.0.0", "class-is": "^1.1.0", @@ -1048,8 +1080,9 @@ }, "node_modules/@fluencelabs/aqua/node_modules/libp2p/node_modules/libp2p-crypto": { "version": "0.21.2", + "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.21.2.tgz", + "integrity": "sha512-EXFrhSpiHtJ+/L8xXDvQNK5VjUMG51u878jzZcaT5XhuN/zFg6PWJFnl/qB2Y2j7eMWnvCRP7Kp+ua2H36cG4g==", "dev": true, - "license": "MIT", "dependencies": { "@noble/ed25519": "^1.5.1", "@noble/secp256k1": "^1.3.0", @@ -1066,8 +1099,9 @@ }, "node_modules/@fluencelabs/aqua/node_modules/libp2p/node_modules/peer-id": { "version": "0.16.0", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.16.0.tgz", + "integrity": "sha512-EmL7FurFUduU9m1PS9cfJ5TAuCvxKQ7DKpfx3Yj6IKWyBRtosriFuOag/l3ni/dtPgPLwiA4R9IvpL7hsDLJuQ==", "dev": true, - "license": "MIT", "dependencies": { "class-is": "^1.1.0", "libp2p-crypto": "^0.21.0", @@ -1081,13 +1115,15 @@ }, "node_modules/@fluencelabs/aqua/node_modules/libp2p/node_modules/varint": { "version": "6.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "dev": true }, "node_modules/@fluencelabs/aqua/node_modules/loglevel": { "version": "1.8.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", + "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6.0" }, @@ -1098,8 +1134,9 @@ }, "node_modules/@fluencelabs/aqua/node_modules/multiaddr": { "version": "10.0.1", + "resolved": "https://registry.npmjs.org/multiaddr/-/multiaddr-10.0.1.tgz", + "integrity": "sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg==", "dev": true, - "license": "MIT", "dependencies": { "dns-over-http-resolver": "^1.2.3", "err-code": "^3.0.1", @@ -1111,13 +1148,16 @@ }, "node_modules/@fluencelabs/aqua/node_modules/multiaddr/node_modules/varint": { "version": "6.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "dev": true }, "node_modules/@fluencelabs/aqua/node_modules/multibase": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", + "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", + "deprecated": "This module has been superseded by the multiformats module", "dev": true, - "license": "MIT", "dependencies": { "@multiformats/base-x": "^4.0.1" }, @@ -1128,8 +1168,10 @@ }, "node_modules/@fluencelabs/aqua/node_modules/multicodec": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", + "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", + "deprecated": "This module has been superseded by the multiformats module", "dev": true, - "license": "MIT", "dependencies": { "uint8arrays": "^3.0.0", "varint": "^6.0.0" @@ -1137,13 +1179,15 @@ }, "node_modules/@fluencelabs/aqua/node_modules/multicodec/node_modules/varint": { "version": "6.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "dev": true }, "node_modules/@fluencelabs/aqua/node_modules/multihashes": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", + "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", "dev": true, - "license": "MIT", "dependencies": { "multibase": "^4.0.1", "uint8arrays": "^3.0.0", @@ -1156,8 +1200,9 @@ }, "node_modules/@fluencelabs/aqua/node_modules/multistream-select": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/multistream-select/-/multistream-select-3.0.2.tgz", + "integrity": "sha512-ICGA8DAviZj6Xo1NkaRV3J38M+tFDoWiGtO1ksluyMnskAsdGjAzocg806OzpQPivNGWWboX3CrFT2Tk4UdYXA==", "dev": true, - "license": "MIT", "dependencies": { "abortable-iterator": "^3.0.0", "bl": "^5.0.0", @@ -1175,6 +1220,8 @@ "node_modules/@fluencelabs/aqua/node_modules/node-fetch": { "name": "@achingbrain/node-fetch", "version": "2.6.7", + "resolved": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-iTASGs+HTFK5E4ZqcMsHmeJ4zodyq8L38lZV33jwqcBJYoUt3HjN4+ot+O9/0b+ke8ddE7UgOtVuZN/OkV19/g==", "dev": true, "license": "MIT", "engines": { @@ -1183,45 +1230,51 @@ }, "node_modules/@fluencelabs/aqua/node_modules/node-forge": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, - "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } }, "node_modules/@fluencelabs/aqua/node_modules/retimer": { "version": "3.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/retimer/-/retimer-3.0.0.tgz", + "integrity": "sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==", + "dev": true }, "node_modules/@fluencelabs/aqua/node_modules/timeout-abort-controller": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz", + "integrity": "sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA==", "dev": true, - "license": "MIT", "dependencies": { "retimer": "^3.0.0" } }, "node_modules/@fluencelabs/aqua/node_modules/uint8arrays": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.0.tgz", + "integrity": "sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==", "dev": true, - "license": "MIT", "dependencies": { "multiformats": "^9.4.2" } }, "node_modules/@fluencelabs/aqua/node_modules/uuid": { "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/@fluencelabs/avm": { - "version": "0.24.2", - "dev": true, - "license": "Apache 2.0" + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@fluencelabs/avm/-/avm-0.25.0.tgz", + "integrity": "sha512-l5UX1fTXO8Xh1rsMrWVxsGLz49FX3gJu5M03acMtv7DIQzfr1so7298bFKN2iTx1BGVrqFLlr9aGcDjd8E3Ilw==", + "dev": true }, "node_modules/@fluencelabs/connection": { "version": "0.2.0", @@ -1988,9 +2041,10 @@ } }, "node_modules/@fluencelabs/marine-js": { - "version": "0.2.5", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@fluencelabs/marine-js/-/marine-js-0.3.5.tgz", + "integrity": "sha512-juE/3FZiTMHPynQ7/mIUFwWFNxZTALalaftgiFcz6OqALeX1NZi4I/PDlFzgX0FHFgNulvKa17/Xr/AO1fFiBg==", "dev": true, - "license": "Apache 2.0", "dependencies": { "@wasmer/wasi": "^0.12.0", "@wasmer/wasmfs": "^0.12.0", @@ -2002,6 +2056,8 @@ }, "node_modules/@fluencelabs/marine-js/node_modules/buffer": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, "funding": [ { @@ -2017,7 +2073,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -2559,8 +2614,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "16.7.1", - "license": "MIT" + "version": "18.7.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.21.tgz", + "integrity": "sha512-rLFzK5bhM0YPyCoTC8bolBjMk7bwnZ8qeZUBslBfjZQou2ssJdWslx9CZ8DGM+Dx7QXQiiTVZ/6QO6kwtHkZCA==" }, "node_modules/@types/prettier": { "version": "2.4.1", @@ -4804,6 +4860,8 @@ "node_modules/ipfs-utils/node_modules/node-fetch": { "name": "@achingbrain/node-fetch", "version": "2.6.7", + "resolved": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-iTASGs+HTFK5E4ZqcMsHmeJ4zodyq8L38lZV33jwqcBJYoUt3HjN4+ot+O9/0b+ke8ddE7UgOtVuZN/OkV19/g==", "license": "MIT", "engines": { "node": "4.x || >=6.0.0" @@ -9339,18 +9397,22 @@ } }, "@fluencelabs/aqua": { - "version": "0.7.4-336", + "version": "0.7.5-339", + "resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.7.5-339.tgz", + "integrity": "sha512-X4e3FK7gJfCpPxD3vnl2IKnG3rC8a9c/9ETARHAItoUoLgceSAaequpaSB1bP1pinwjAPEINE7BFlQKkndDPUA==", "dev": true, "requires": { - "@fluencelabs/aqua-ipfs": "0.5.2", - "@fluencelabs/aqua-lib": "0.5.1", - "@fluencelabs/fluence": "0.23.1", + "@fluencelabs/aqua-ipfs": "0.5.5", + "@fluencelabs/aqua-lib": "0.5.2", + "@fluencelabs/fluence": "0.23.4", "@fluencelabs/fluence-network-environment": "1.0.13", "ipfs-http-client": "50.1.2" }, "dependencies": { "@chainsafe/libp2p-noise": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-4.1.2.tgz", + "integrity": "sha512-UvZLWvIS7bAz6M8XfsnC/NhT1c/lg8NNsME1hTvo21kRwyxNFpB8gEhId03Cb5B23oIaHhMySAHBcpuMiSxQ2w==", "dev": true, "requires": { "@stablelib/chacha20poly1305": "^1.0.1", @@ -9370,16 +9432,20 @@ } }, "@fluencelabs/aqua-lib": { - "version": "0.5.1", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@fluencelabs/aqua-lib/-/aqua-lib-0.5.2.tgz", + "integrity": "sha512-fmoFFE8myhLH9d+YR0+0ZPL2YIQyR6M1woAGu5d1xXI02Sjzn4id6dE4PpxHb8cSBPRie8AwsKobHCNqGxI8oA==", "dev": true }, "@fluencelabs/fluence": { - "version": "0.23.1", + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.23.4.tgz", + "integrity": "sha512-Ze67mD4ihDrQEN81UQe4gKmkiTBZgvKY87tBgIkuUsBqS8n7XF9tai/5LGgpV5qi3P4vnyh2VPmYURac/QS6YQ==", "dev": true, "requires": { "@chainsafe/libp2p-noise": "^4.1.1", - "@fluencelabs/avm": "0.24.2", - "@fluencelabs/marine-js": "0.2.5", + "@fluencelabs/avm": "0.25.0", + "@fluencelabs/marine-js": "0.3.5", "async": "3.2.3", "browser-or-node": "^2.0.0", "bs58": "5.0.0", @@ -9387,6 +9453,7 @@ "cids": "1.1.9", "it-length-prefixed": "5.0.3", "it-pipe": "1.1.0", + "js-base64": "^3.7.2", "libp2p": "0.36.2", "libp2p-crypto": "0.21.2", "libp2p-mplex": "0.10.7", @@ -9403,6 +9470,8 @@ "dependencies": { "libp2p-crypto": { "version": "0.21.2", + "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.21.2.tgz", + "integrity": "sha512-EXFrhSpiHtJ+/L8xXDvQNK5VjUMG51u878jzZcaT5XhuN/zFg6PWJFnl/qB2Y2j7eMWnvCRP7Kp+ua2H36cG4g==", "dev": true, "requires": { "@noble/ed25519": "^1.5.1", @@ -9417,6 +9486,8 @@ }, "peer-id": { "version": "0.16.0", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.16.0.tgz", + "integrity": "sha512-EmL7FurFUduU9m1PS9cfJ5TAuCvxKQ7DKpfx3Yj6IKWyBRtosriFuOag/l3ni/dtPgPLwiA4R9IvpL7hsDLJuQ==", "dev": true, "requires": { "class-is": "^1.1.0", @@ -9430,18 +9501,26 @@ }, "any-signal": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-3.0.1.tgz", + "integrity": "sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg==", "dev": true }, "async": { "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", "dev": true }, "base-x": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==", "dev": true }, "bl": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.0.0.tgz", + "integrity": "sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ==", "dev": true, "requires": { "buffer": "^6.0.3", @@ -9451,6 +9530,8 @@ }, "bs58": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", "dev": true, "requires": { "base-x": "^4.0.0" @@ -9458,6 +9539,8 @@ }, "buffer": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, "requires": { "base64-js": "^1.3.1", @@ -9466,6 +9549,8 @@ }, "cids": { "version": "1.1.9", + "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", + "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", "dev": true, "requires": { "multibase": "^4.0.1", @@ -9476,10 +9561,14 @@ }, "es6-promisify": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz", + "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==", "dev": true }, "interface-datastore": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-6.1.1.tgz", + "integrity": "sha512-AmCS+9CT34pp2u0QQVXjKztkuq3y5T+BIciuiHDDtDZucZD8VudosnSdUyXJV6IsRkN5jc4RFDhCk1O6Q3Gxjg==", "dev": true, "requires": { "interface-store": "^2.0.2", @@ -9489,10 +9578,14 @@ }, "interface-store": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-2.0.2.tgz", + "integrity": "sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg==", "dev": true }, "ipfs-utils": { "version": "9.0.7", + "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.7.tgz", + "integrity": "sha512-Umvb0Zydy2zZiTmQBGLfLISr8vOmXX8cxEIP+N8zGHrtRShG/j32yl1xd/BtS+Hbg0FIbVm3opwvxB2gmta0YA==", "dev": true, "requires": { "any-signal": "^3.0.0", @@ -9513,6 +9606,8 @@ }, "it-glob": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-1.0.2.tgz", + "integrity": "sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q==", "dev": true, "requires": { "@types/minimatch": "^3.0.4", @@ -9521,6 +9616,8 @@ }, "it-length-prefixed": { "version": "5.0.3", + "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-5.0.3.tgz", + "integrity": "sha512-b+jDHLcnOnPDQN79ronmzF5jeBjdJsy0ce2O6i6X4J5tnaO8Fd146ZA/tMbzaLlKnTpXa0eKtofpYhumXGENeg==", "dev": true, "requires": { "bl": "^5.0.0", @@ -9530,12 +9627,16 @@ "dependencies": { "varint": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", "dev": true } } }, "libp2p": { "version": "0.36.2", + "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-0.36.2.tgz", + "integrity": "sha512-UpNYBMQVivMu56zoibdGitopv39uBBAybIBOEGWmFy/I2NnTVGUutLPrxo47AuN2kntYgo/TNJfW+PpswUgSaw==", "dev": true, "requires": { "@vascosantos/moving-average": "^1.1.0", @@ -9596,6 +9697,8 @@ "dependencies": { "libp2p-crypto": { "version": "0.21.2", + "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.21.2.tgz", + "integrity": "sha512-EXFrhSpiHtJ+/L8xXDvQNK5VjUMG51u878jzZcaT5XhuN/zFg6PWJFnl/qB2Y2j7eMWnvCRP7Kp+ua2H36cG4g==", "dev": true, "requires": { "@noble/ed25519": "^1.5.1", @@ -9610,6 +9713,8 @@ }, "peer-id": { "version": "0.16.0", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.16.0.tgz", + "integrity": "sha512-EmL7FurFUduU9m1PS9cfJ5TAuCvxKQ7DKpfx3Yj6IKWyBRtosriFuOag/l3ni/dtPgPLwiA4R9IvpL7hsDLJuQ==", "dev": true, "requires": { "class-is": "^1.1.0", @@ -9621,12 +9726,16 @@ }, "varint": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", "dev": true } } }, "libp2p-interfaces": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/libp2p-interfaces/-/libp2p-interfaces-4.0.6.tgz", + "integrity": "sha512-3KjzNEIWhi+VoOamLvgKKUE/xqwxSw/JYqsBnfMhAWVRvRtosROtVT03wci2XbuuowCYw+/hEX1xKJIR1w5n0A==", "dev": true, "requires": { "abortable-iterator": "^3.0.0", @@ -9646,6 +9755,8 @@ "dependencies": { "libp2p-crypto": { "version": "0.21.2", + "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.21.2.tgz", + "integrity": "sha512-EXFrhSpiHtJ+/L8xXDvQNK5VjUMG51u878jzZcaT5XhuN/zFg6PWJFnl/qB2Y2j7eMWnvCRP7Kp+ua2H36cG4g==", "dev": true, "requires": { "@noble/ed25519": "^1.5.1", @@ -9660,6 +9771,8 @@ }, "peer-id": { "version": "0.16.0", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.16.0.tgz", + "integrity": "sha512-EmL7FurFUduU9m1PS9cfJ5TAuCvxKQ7DKpfx3Yj6IKWyBRtosriFuOag/l3ni/dtPgPLwiA4R9IvpL7hsDLJuQ==", "dev": true, "requires": { "class-is": "^1.1.0", @@ -9673,6 +9786,8 @@ }, "libp2p-mplex": { "version": "0.10.7", + "resolved": "https://registry.npmjs.org/libp2p-mplex/-/libp2p-mplex-0.10.7.tgz", + "integrity": "sha512-21VV0DZWuOsHgitWy1GZD1M/kki3a/hVoAJ5QC48p01JNSK5W8gxRiZtq7cCGJ/xNpbQxvMlMtS5eq8CFRlysg==", "dev": true, "requires": { "abortable-iterator": "^3.0.2", @@ -9686,12 +9801,16 @@ "dependencies": { "varint": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", "dev": true } } }, "libp2p-websockets": { "version": "0.16.2", + "resolved": "https://registry.npmjs.org/libp2p-websockets/-/libp2p-websockets-0.16.2.tgz", + "integrity": "sha512-QGfo8jX1Ks16yi8C67CCyMW7k9cfCYiQ0lzKVJBud0fV3ymbMO2L8gzU6iXUUZTHILo8ka26zKhwQ4lmUMI+nA==", "dev": true, "requires": { "abortable-iterator": "^3.0.0", @@ -9710,10 +9829,14 @@ }, "loglevel": { "version": "1.8.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", + "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", "dev": true }, "multiaddr": { "version": "10.0.1", + "resolved": "https://registry.npmjs.org/multiaddr/-/multiaddr-10.0.1.tgz", + "integrity": "sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg==", "dev": true, "requires": { "dns-over-http-resolver": "^1.2.3", @@ -9726,12 +9849,16 @@ "dependencies": { "varint": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", "dev": true } } }, "multibase": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", + "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", "dev": true, "requires": { "@multiformats/base-x": "^4.0.1" @@ -9739,6 +9866,8 @@ }, "multicodec": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", + "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", "dev": true, "requires": { "uint8arrays": "^3.0.0", @@ -9747,12 +9876,16 @@ "dependencies": { "varint": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", "dev": true } } }, "multihashes": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", + "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", "dev": true, "requires": { "multibase": "^4.0.1", @@ -9762,6 +9895,8 @@ }, "multistream-select": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/multistream-select/-/multistream-select-3.0.2.tgz", + "integrity": "sha512-ICGA8DAviZj6Xo1NkaRV3J38M+tFDoWiGtO1ksluyMnskAsdGjAzocg806OzpQPivNGWWboX3CrFT2Tk4UdYXA==", "dev": true, "requires": { "abortable-iterator": "^3.0.0", @@ -9778,19 +9913,26 @@ } }, "node-fetch": { - "version": "npm:@achingbrain/node-fetch@2.6.7", + "version": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-iTASGs+HTFK5E4ZqcMsHmeJ4zodyq8L38lZV33jwqcBJYoUt3HjN4+ot+O9/0b+ke8ddE7UgOtVuZN/OkV19/g==", "dev": true }, "node-forge": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true }, "retimer": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/retimer/-/retimer-3.0.0.tgz", + "integrity": "sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==", "dev": true }, "timeout-abort-controller": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz", + "integrity": "sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA==", "dev": true, "requires": { "retimer": "^3.0.0" @@ -9798,6 +9940,8 @@ }, "uint8arrays": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.0.tgz", + "integrity": "sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==", "dev": true, "requires": { "multiformats": "^9.4.2" @@ -9805,6 +9949,8 @@ }, "uuid": { "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true } } @@ -9858,14 +10004,18 @@ } }, "@fluencelabs/aqua-ipfs": { - "version": "0.5.2", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@fluencelabs/aqua-ipfs/-/aqua-ipfs-0.5.5.tgz", + "integrity": "sha512-TBSClVs2r3FhgxVFSDPXzJNP0/EqHbIaVSY9U6LTzBDUdZDItu8Yt+Rsjj4LX5X4kOwo94ADkYG0UG8nKC1L5A==", "dev": true, "requires": { - "@fluencelabs/aqua-lib": "^0.1.14" + "@fluencelabs/aqua-lib": "^0.5.2" }, "dependencies": { "@fluencelabs/aqua-lib": { - "version": "0.1.14", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@fluencelabs/aqua-lib/-/aqua-lib-0.5.2.tgz", + "integrity": "sha512-fmoFFE8myhLH9d+YR0+0ZPL2YIQyR6M1woAGu5d1xXI02Sjzn4id6dE4PpxHb8cSBPRie8AwsKobHCNqGxI8oA==", "dev": true } } @@ -9875,7 +10025,9 @@ "dev": true }, "@fluencelabs/avm": { - "version": "0.24.2", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@fluencelabs/avm/-/avm-0.25.0.tgz", + "integrity": "sha512-l5UX1fTXO8Xh1rsMrWVxsGLz49FX3gJu5M03acMtv7DIQzfr1so7298bFKN2iTx1BGVrqFLlr9aGcDjd8E3Ilw==", "dev": true }, "@fluencelabs/connection": { @@ -10522,7 +10674,9 @@ } }, "@fluencelabs/marine-js": { - "version": "0.2.5", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@fluencelabs/marine-js/-/marine-js-0.3.5.tgz", + "integrity": "sha512-juE/3FZiTMHPynQ7/mIUFwWFNxZTALalaftgiFcz6OqALeX1NZi4I/PDlFzgX0FHFgNulvKa17/Xr/AO1fFiBg==", "dev": true, "requires": { "@wasmer/wasi": "^0.12.0", @@ -10535,6 +10689,8 @@ "dependencies": { "buffer": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, "requires": { "base64-js": "^1.3.1", @@ -10947,7 +11103,9 @@ "version": "3.0.5" }, "@types/node": { - "version": "16.7.1" + "version": "18.7.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.21.tgz", + "integrity": "sha512-rLFzK5bhM0YPyCoTC8bolBjMk7bwnZ8qeZUBslBfjZQou2ssJdWslx9CZ8DGM+Dx7QXQiiTVZ/6QO6kwtHkZCA==" }, "@types/prettier": { "version": "2.4.1" @@ -12485,7 +12643,8 @@ } }, "node-fetch": { - "version": "npm:@achingbrain/node-fetch@2.6.7" + "version": "https://registry.npmjs.org/@achingbrain/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-iTASGs+HTFK5E4ZqcMsHmeJ4zodyq8L38lZV33jwqcBJYoUt3HjN4+ot+O9/0b+ke8ddE7UgOtVuZN/OkV19/g==" } } }, diff --git a/package.json b/package.json index d1a72d4..89d7c62 100644 --- a/package.json +++ b/package.json @@ -29,10 +29,11 @@ "do": "aqua dist deploy --addr /dns4/kras-04.fluence.dev/tcp/19001/wss/p2p/12D3KooWFEwNWcHqi9rtsmDhsYcDbRUCDXH84RC4FW6UfsFWaoHi --config-path deploy.json --service tsOracle" }, "devDependencies": { - "@fluencelabs/aqua": "0.7.4-336", + "@fluencelabs/aqua": "0.7.5-339", "@fluencelabs/aqua-dht": "0.2.5", "@fluencelabs/aqua-lib": "0.4.3", "@types/jest": "^27.0.2", + "@types/node": "^18.7.21", "jest": "^27.2.4", "js-base64": "^3.7.2", "ts-jest": "^27.0.5", diff --git a/src/__test__/examples.spec.ts b/src/__test__/examples.spec.ts index 4291c5d..8d47173 100644 --- a/src/__test__/examples.spec.ts +++ b/src/__test__/examples.spec.ts @@ -1,3 +1,5 @@ +jest.retryTimes(3) + import { Fluence, FluencePeer, KeyPair, setLogLevel } from '@fluencelabs/fluence'; import { EphemeralNetwork, defaultConfig } from '@fluencelabs/fluence/dist/internal/ephemeral'; import { registerPrintln } from '../compiled/examples/println'; diff --git a/src/__test__/run.spec.ts b/src/__test__/run.spec.ts index 3b8797b..4050b4c 100644 --- a/src/__test__/run.spec.ts +++ b/src/__test__/run.spec.ts @@ -1,3 +1,5 @@ +jest.retryTimes(3) + import { krasnodar, stage, testNet } from '@fluencelabs/fluence-network-environment'; const util = require('util'); diff --git a/src/config.ts b/src/config.ts index 0d5152f..4a3a8c1 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,41 +1,103 @@ -import { krasnodar, stage, testNet } from '@fluencelabs/fluence-network-environment'; -import { defaultConfig } from '@fluencelabs/fluence/dist/internal/ephemeral'; +import { + krasnodar, + stage, + testNet, +} from "@fluencelabs/fluence-network-environment"; +import { local } from "./local-nodes"; +import { defaultConfig } from "@fluencelabs/fluence/dist/internal/ephemeral"; + +declare global { + namespace NodeJS { + interface ProcessEnv { + FLUENCE_ENV?: string; + } + } +} + +function setConfig(env) { + switch (env) { + case "krasnodar": + return { config: krasnodarConfig, isEphemeral: false }; + case "testnet": + return { config: testNetConfig, isEphemeral: false }; + case "ephemeral": + return { config: ephemeralConfig, isEphemeral: true }; + case "local": + return { config: localConfig, isEphemeral: false }; + default: + return { config: stageConfig, isEphemeral: false }; + } +} export const krasnodarConfig = { - relays: krasnodar, - externalAddressesRelay1: ['/ip4/164.90.171.139/tcp/7770', '/ip4/164.90.171.139/tcp/9990/ws'], - externalAddressesRelay2: ['/ip4/164.90.164.229/tcp/7001', '/ip4/164.90.164.229/tcp/9001/ws'], - tryCatchError: - "Local service error, ret_code is 1, error message is '\"Service with id 'unex' not found (function getStr)\"'", + relays: krasnodar, + externalAddressesRelay1: [ + "/ip4/164.90.171.139/tcp/7770", + "/ip4/164.90.171.139/tcp/9990/ws", + ], + externalAddressesRelay2: [ + "/ip4/164.90.164.229/tcp/7001", + "/ip4/164.90.164.229/tcp/9001/ws", + ], + tryCatchError: + "Local service error, ret_code is 1, error message is '\"Service with id 'unex' not found (function getStr)\"'", }; export const stageConfig = { - relays: stage, - externalAddressesRelay1: ['/ip4/134.209.186.43/tcp/7001', '/ip4/134.209.186.43/tcp/9001/ws'], - externalAddressesRelay2: ['/ip4/134.209.186.43/tcp/7770', '/ip4/134.209.186.43/tcp/9990/ws'], - tryCatchError: - "Local service error, ret_code is 1, error message is '\"Service with id 'unex' not found (function getStr)\"'", + relays: stage, + externalAddressesRelay1: [ + "/ip4/134.209.186.43/tcp/7001", + "/ip4/134.209.186.43/tcp/9001/ws", + ], + externalAddressesRelay2: [ + "/ip4/134.209.186.43/tcp/7770", + "/ip4/134.209.186.43/tcp/9990/ws", + ], + tryCatchError: + "Local service error, ret_code is 1, error message is '\"Service with id 'unex' not found (function getStr)\"'", }; export const testNetConfig = { - relays: testNet, - externalAddressesRelay1: ['/ip4/165.227.164.206/tcp/7001', '/ip4/165.227.164.206/tcp/9001/ws'], - externalAddressesRelay2: ['/ip4/142.93.169.49/tcp/7001', '/ip4/142.93.169.49/tcp/9001/ws'], - tryCatchError: - "Local service error, ret_code is 1, error message is '\"Service with id 'unex' not found (function getStr)\"'", + relays: testNet, + externalAddressesRelay1: [ + "/ip4/165.227.164.206/tcp/7001", + "/ip4/165.227.164.206/tcp/9001/ws", + ], + externalAddressesRelay2: [ + "/ip4/142.93.169.49/tcp/7001", + "/ip4/142.93.169.49/tcp/9001/ws", + ], + tryCatchError: + "Local service error, ret_code is 1, error message is '\"Service with id 'unex' not found (function getStr)\"'", }; export const ephemeralConfig = { - relays: defaultConfig.peers.map((x) => ({ - peerId: x.peerId, - multiaddr: 'dontcare', - })), - externalAddressesRelay1: [], - externalAddressesRelay2: [], - tryCatchError: - "Local service error, ret_code is 1, error message is '\"Service with id 'unex' not found (function getStr)\"'", + relays: defaultConfig.peers.map((x) => ({ + peerId: x.peerId, + multiaddr: "dontcare", + })), + externalAddressesRelay1: [], + externalAddressesRelay2: [], + tryCatchError: + "Local service error, ret_code is 1, error message is '\"Service with id 'unex' not found (function getStr)\"'", }; -export const isEphemeral = false; +export const localConfig = { + relays: local, + externalAddressesRelay1: [ + "/ip4/10.50.10.10/tcp/7771", + "/ip4/10.50.10.10/tcp/9991/ws", + "/dns4/fluence-1/tcp/7771", + "/dns4/fluence-1/tcp/9991/ws", + ], + externalAddressesRelay2: [ + "/ip4/10.50.10.60/tcp/7776", + "/ip4/10.50.10.60/tcp/9996/ws", + "/dns4/fluence-6/tcp/7776", + "/dns4/fluence-6/tcp/9996/ws", + ], + tryCatchError: + "Local service error, ret_code is 1, error message is '\"Service with id 'unex' not found (function getStr)\"'", +}; -export const config = isEphemeral ? ephemeralConfig : stageConfig; +export const { config, isEphemeral } = setConfig(process.env.FLUENCE_ENV); diff --git a/.github/e2e/config.ts b/src/local-nodes.ts similarity index 66% rename from .github/e2e/config.ts rename to src/local-nodes.ts index 31a279c..525c8a4 100644 --- a/.github/e2e/config.ts +++ b/src/local-nodes.ts @@ -1,5 +1,5 @@ export type Node = { peerId: string; multiaddr: string }; -export const ci: Node[] = [ +export const local: Node[] = [ { multiaddr: '/ip4/127.0.0.1/tcp/9991/ws/p2p/12D3KooWBM3SdXWqGaawQDGQ6JprtwswEg3FWGvGhmgmMez1vRbR', peerId: '12D3KooWBM3SdXWqGaawQDGQ6JprtwswEg3FWGvGhmgmMez1vRbR' @@ -25,23 +25,3 @@ export const ci: Node[] = [ peerId: '12D3KooWPisGn7JhooWhggndz25WM7vQ2JmA121EV8jUDQ5xMovJ' } ]; - -export const config = { - relays: ci, - externalAddressesRelay1: [ - "/ip4/10.50.10.10/tcp/7771", - "/ip4/10.50.10.10/tcp/9991/ws", - "/dns4/fluence-1/tcp/7771", - "/dns4/fluence-1/tcp/9991/ws" - ], - externalAddressesRelay2: [ - "/ip4/10.50.10.60/tcp/7776", - "/ip4/10.50.10.60/tcp/9996/ws", - "/dns4/fluence-6/tcp/7776", - "/dns4/fluence-6/tcp/9996/ws" - ], - tryCatchError: - "Local service error, ret_code is 1, error message is '\"Service with id 'unex' not found (function getStr)\"'", -}; - -export const isEphemeral = false; diff --git a/tsconfig.json b/tsconfig.json index 18ba328..1444684 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -24,4 +24,4 @@ "src/__test__" ], "include": ["src/**/*"] -} \ No newline at end of file +}