diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d31f024..dac25ce 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,7 +10,17 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Set up Docker Compose + run: | + sudo apt-get update + sudo apt-get install -y docker-compose + - name: Build and upload to IPFS run: | npm install diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a8b69ec..ca7a937 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,8 +9,19 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Set up Docker Compose + run: | + sudo apt-get update + sudo apt-get install -y docker-compose + - name: Build and publish to package repository + id: publish run: | npm install npx @dappnode/dappnodesdk publish patch \ @@ -21,6 +32,22 @@ jobs: echo "DNP (DAppNode Package) built and uploaded" >> $GITHUB_STEP_SUMMARY grep "ipfs" build.log >> $GITHUB_STEP_SUMMARY + ipfs_hash=$(grep -oP 'Release hash : \K/ipfs/\w+' build.log) + echo "ipfs_hash=$ipfs_hash" >> $GITHUB_OUTPUT env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} DEVELOPER_ADDRESS: "0x7305356ad936A06c4ea5DF45AD5E5C3ff9Db818E" + + - name: Send message to Zulip + uses: zulip/github-actions-zulip/send-message@v1 + with: + api-key: ${{ secrets.ZULIP_API_KEY }} + email: ${{ secrets.ZULIP_EMAIL }} + organization-url: "https://hopr.zulipchat.com" + type: "stream" + to: "Releases" + topic: "main" + content: | + A new hoprd dAppNode package (dufour) version is available. + - IPFS Hash: ${{ steps.publish.outputs.ipfs_hash }} + Access to your dAppNode and check for the updates \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 2f79c09..602675c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,9 @@ FROM europe-west3-docker.pkg.dev/hoprassociation/docker-images/hoprd:${UPSTREAM_ # not used at the moment, but might be useful in the future ENV DAPPNODE=true -ADD hoprd.cfg.yaml /app/hoprd.cfg.yaml +ADD hoprd.cfg.yaml /app/hoprd/conf/hoprd.cfg.yaml +ADD entrypoint.sh /bin/entrypoint.sh -ENTRYPOINT ["/bin/hoprd", "--configurationFilePath", "/app/hoprd.cfg.yaml"] +RUN chmod +rx /bin/entrypoint.sh + +ENTRYPOINT ["/bin/entrypoint.sh"] diff --git a/dappnode_package.json b/dappnode_package.json index b973ba9..58088e2 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "hopr.public.dappnode.eth", "version": "1.0.19", - "upstreamVersion": "saint-louis", + "upstreamVersion": "singapore", "description": "The HOPR protocol ensures everyone has control of their privacy, data, and identity. By running a HOPR Node, you can obtain HOPR tokens by relaying data and connect to the HOPR Network.", "type": "service", "architectures": [ @@ -20,8 +20,8 @@ ], "links": { "homepage": "https://hoprnet.org/", - "ui": "http://admin.hopr.public.dappnode/?apiEndpoint=http://hopr.public.dappnode:3001", - "api": "http://hopr.public.dappnode:3001/swagger-ui/index.html", + "ui": "http://admin.hopr.public.dappnode:4677/?apiEndpoint=http://hopr.public.dappnode:3001", + "api": "http://hopr.public.dappnode:3001/scalar", "docs": "https://docs.hoprnet.org" }, "repository": { @@ -53,6 +53,12 @@ "port": 9091, "serviceName": "node" }, + { + "name": "GnosisVPN Session port", + "description": "Port used for Gnosis VPN", + "port": 1422, + "serviceName": "node" + }, { "name": "HOPR p2p (alt 1)", "description": "HOPR P2P port (alternative 1)", @@ -105,16 +111,12 @@ "license": "GLP-3.0", "backup": [ { - "name": "db", - "path": "/app/hoprd-db/db" - }, - { - "name": "identity", - "path": "/app/hoprd-db/.hopr-identity" + "name": "data", + "path": "/app/hoprd/data" }, { "name": "config", - "path": "/app/hoprd.cfg.yaml" + "path": "/app/hoprd/conf" } ], "globalEnvs": [ diff --git a/docker-compose.yml b/docker-compose.yml index 12c874b..f202efd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,14 +1,16 @@ -version: "3.5" +version: "3.6" services: node: - # Do not set image name here, it will be set automatically by the sdk. - # image: "node.hopr.public.dappnode.eth:1.0.21" + # Do not set image field here, it will be set automatically by the sdk. build: context: . args: + # see https://console.cloud.google.com/artifacts/docker/hoprassociation/europe-west3/docker-images/hoprd?inv=1&invt=AbqEGg&project=hoprassociation&pli=1 UPSTREAM_VERSION: >- - 2.1.3@sha256:c655d605dcb60858b03681e254510dd827b92a51f1312fa4dbb18b5bc5ef9d89 + 2.2.3@sha256:cad18ea69128bc9ae3c43fd776d172978c767eb51a2a001a9d410bb924c7bd51 ports: + - "1422:1422/udp" + - "1422:1422/tcp" - "3001:3001/tcp" - "9091:9091/tcp" - "9091:9091/udp" @@ -28,21 +30,27 @@ services: - "9098:9098/udp" - "9099:9099/tcp" - "9099:9099/udp" + - "10000-10100:10000-10100/tcp" + - "10000-10100:10000-10100/udp" volumes: - - "db:/app/hoprd-db" + - "data:/app/hoprd/data" + - "conf:/app/hoprd/conf" security_opt: - "seccomp:unconfined" environment: RUST_LOG: info - HOPRD_CONFIGURATION_FILE_PATH: /app/hoprd.cfg.yaml + HOPRD_CONFIGURATION_FILE_PATH: /app/hoprd/conf/hoprd.cfg.yaml HOPRD_HOST: "127.0.0.1:9091" HOPRD_SAFE_ADDRESS: 0x HOPRD_MODULE_ADDRESS: 0x - HOPRD_HEARTBEAT_THRESHOLD: 60 - HOPRD_HEARTBEAT_INTERVAL: 20 - HOPRD_HEARTBEAT_VARIANCE: 1 HOPRD_PASSWORD: "" HOPRD_PROVIDER: "" + HOPRD_SESSION_PORT_RANGE: "10000:10100" + HOPRD_MAX_BLOCK_RANGE: 100 + HOPRD_MAX_RPC_REQUESTS_PER_SEC: 10 + HOPRD_NAT: "true" + ADDITIONAL_CMDLINE_ARGS: "" + ADDITIONAL_ENVIRONMENT_VARS: "" restart: unless-stopped deploy: resources: @@ -51,14 +59,17 @@ services: admin: # The actual image name will be set automatically by the sdk. # This tag only serves to pull the correct image during build. + build: + context: ./hopr-admin image: >- - europe-west3-docker.pkg.dev/hoprassociation/docker-images/hopr-admin:2.1.2 + europe-west3-docker.pkg.dev/hoprassociation/docker-images/hopr-admin:2.2.0 ports: - - "3000:80" + - "3000:4677" restart: unless-stopped deploy: resources: limits: memory: 256M volumes: - db: {} + data: {} + conf: {} diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000..3c9a90e --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +env ${ADDITIONAL_ENVIRONMENT_VARS} /bin/docker-entrypoint.sh ${ADDITIONAL_CMDLINE_ARGS} diff --git a/hopr-admin/Dockerfile b/hopr-admin/Dockerfile new file mode 100644 index 0000000..d3a347a --- /dev/null +++ b/hopr-admin/Dockerfile @@ -0,0 +1,3 @@ +FROM europe-west3-docker.pkg.dev/hoprassociation/docker-images/hopr-admin:2.1.14 + +ENTRYPOINT ["nginx", "-g", "daemon off;"] diff --git a/hoprd.cfg.yaml b/hoprd.cfg.yaml index f38f86c..5ce1592 100644 --- a/hoprd.cfg.yaml +++ b/hoprd.cfg.yaml @@ -1,8 +1,7 @@ --- - hopr: db: - data: /app/hoprd-db/db + data: /app/hoprd/data initialize: true force_initialize: false strategy: @@ -10,53 +9,36 @@ hopr: allow_recursive: true strategies: - !Aggregating - aggregation_threshold: 100 + aggregation_threshold: 250 unrealized_balance_ratio: 0.9 aggregate_on_channel_close: true - !AutoRedeeming redeem_only_aggregated: true - on_close_redeem_single_tickets_value_min: "90000000000000000 HOPR" - minimum_redeem_ticket_value: "30000000000000000000 HOPR" + minimum_redeem_ticket_value: "2500000000000000000 HOPR" - !ClosureFinalizer - max_closure_overdue: 3600 - network_options: - min_delay: 1 - max_delay: 300 - quality_bad_threshold: 0.2 - quality_offline_threshold: 0.5 - quality_step: 0.1 - quality_avg_window_size: 25 - ignore_timeframe: 600 - backoff_exponent: 1.5 - backoff_min: 2.0 - backoff_max: 300.0 + max_closure_overdue: 300 protocol: - ack: - timeout: 15 heartbeat: timeout: 15 - msg: - timeout: 15 ticket_aggregation: timeout: 15 chain: announce: true - check_unrealized_balance: true network: dufour + keep_logs: true + fast_sync: true safe_module: - safe_transaction_service_provider: https://safe-transaction.prod.hoprtech.net/ + safe_transaction_service_provider: https://safe-transaction.prod.hoprnet.link/ transport: announce_local_addresses: false prefer_local_addresses: false identity: - file: /app/hoprd-db/.hopr-identity + file: /app/hoprd/conf/hopr.id api: enable: true host: address: !IPv4 0.0.0.0 port: 3001 -inbox: - capacity: 512 - max_age: 900 - excluded_tags: - - 0 +session_ip_forwarding: + target_allow_list: [] + diff --git a/justfile b/justfile new file mode 100644 index 0000000..ca5f078 --- /dev/null +++ b/justfile @@ -0,0 +1,3 @@ +# build the dappnode package +build: + npx @dappnode/dappnodesdk build diff --git a/package-lock.json b/package-lock.json index 417f3f1..d7e4b58 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "hopr-dappnode", "devDependencies": { - "@dappnode/dappnodesdk": "^0.3.22" + "@dappnode/dappnodesdk": "^0.3.38" } }, "node_modules/@adraffy/ens-normalize": { @@ -37,15 +37,15 @@ } }, "node_modules/@dappnode/dappnodesdk": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/@dappnode/dappnodesdk/-/dappnodesdk-0.3.22.tgz", - "integrity": "sha512-boeM5hvl/7ySb6+O5zZYTsY5duKIm1HY3QrtvDIfnOUOHg/h3082CeO1eix9cqSWTyBknBUNuIgq+NwyWs2ncw==", + "version": "0.3.38", + "resolved": "https://registry.npmjs.org/@dappnode/dappnodesdk/-/dappnodesdk-0.3.38.tgz", + "integrity": "sha512-S0JiqblEyLJ0Idp4lEyezUKN0DWUbdKoN1MFcZaN2zf1ZRctcihPyUAarns3B0arOg5XiRpqutA+TzEKLvMvJg==", "dev": true, "dependencies": { - "@dappnode/schemas": "^0.1.20", + "@dappnode/schemas": "^0.1.23", "@dappnode/toolkit": "^0.1.21", - "@dappnode/types": "^0.1.39", - "@octokit/rest": "^18.0.12", + "@dappnode/types": "^0.1.40", + "@octokit/rest": "^20.1.1", "async-retry": "^1.2.3", "chalk": "^2.4.2", "cli-progress": "^3.8.2", @@ -76,16 +76,16 @@ "dappnodesdk": "dist/dappnodesdk.js" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@dappnode/schemas": { - "version": "0.1.20", - "resolved": "https://registry.npmjs.org/@dappnode/schemas/-/schemas-0.1.20.tgz", - "integrity": "sha512-B44wqcumy84XFaqcP/mu6oySVRZ+Vrdsg3va5zJwdbvmhpHoAnqgvW/DVpP9ofxToOYkyn5iL8fPEO9IrNllPg==", + "version": "0.1.23", + "resolved": "https://registry.npmjs.org/@dappnode/schemas/-/schemas-0.1.23.tgz", + "integrity": "sha512-EOxo3gQzfl+uPDO4geC4211LyNEmzEtObPk3wOgq/cp/2+JftZdiMIUn3sOehs9QU/Z4iwsPr8tVlDELXV09/Q==", "dev": true, "dependencies": { - "@dappnode/types": "^0.1.38", + "@dappnode/types": "^0.1.40", "ajv": "^8.12.0", "semver": "^7.5.0" } @@ -141,9 +141,9 @@ "dev": true }, "node_modules/@dappnode/toolkit/node_modules/ethers": { - "version": "6.12.1", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.12.1.tgz", - "integrity": "sha512-j6wcVoZf06nqEcBbDWkKg8Fp895SS96dSnTCjiXT+8vt2o02raTn4Lo9ERUuIVU5bAjoPYeA+7ytQFexFmLuVw==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.2.tgz", + "integrity": "sha512-9VkriTTed+/27BGuY1s0hf441kqwHJ1wtN2edksEtiRvXx+soxRX3iSXTfFqq2+YwrOqbDoTHjIhQnjJRlzKmg==", "dev": true, "funding": [ { @@ -162,16 +162,37 @@ "@types/node": "18.15.13", "aes-js": "4.0.0-beta.5", "tslib": "2.4.0", - "ws": "8.5.0" + "ws": "8.17.1" }, "engines": { "node": ">=14.0.0" } }, + "node_modules/@dappnode/toolkit/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/@dappnode/types": { - "version": "0.1.39", - "resolved": "https://registry.npmjs.org/@dappnode/types/-/types-0.1.39.tgz", - "integrity": "sha512-HekCz9O24km0FfAr3yzIq9j8TqCshY3+UD3+ee0SKwj/Iq5QYV0I4gH4EL2U8w7Mwgu2T8tJUzmTbG1c05giEw==", + "version": "0.1.40", + "resolved": "https://registry.npmjs.org/@dappnode/types/-/types-0.1.40.tgz", + "integrity": "sha512-gq0PswPB4y09SLpK+MYJti841/jcFTjqoVT+rcrwvOsSEFk6KUyCLxLahFKUJ9Z5w5iBiSLeJ1kmNQk/PRvT9Q==", "dev": true }, "node_modules/@fastify/busboy": { @@ -193,9 +214,9 @@ } }, "node_modules/@ipld/car": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@ipld/car/-/car-5.3.0.tgz", - "integrity": "sha512-OB8LVvJeVAFFGluNIkZeDZ/aGeoekFKsuIvNT9I5sJIb5WekQuW5+lekjQ7Z7mZ7DBKuke/kI4jBT1j0/akU1w==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/@ipld/car/-/car-5.3.2.tgz", + "integrity": "sha512-Bb4XrCFlnsCb9tTzZ1I8zo9O61D9qm7HfvuYrQ9gzdE8YhjyVIjrjmHmnoSWV/uCmyc2/bcqiDPIg+9WljXNzg==", "dev": true, "dependencies": { "@ipld/dag-cbor": "^9.0.7", @@ -209,15 +230,15 @@ } }, "node_modules/@ipld/car/node_modules/multiformats": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.0.tgz", - "integrity": "sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.2.2.tgz", + "integrity": "sha512-RWI+nyf0q64vyOxL8LbKtjJMki0sogRL/8axvklNtiTM0iFCVtHwME9w6+0P1/v4dQvsIg8A45oT3ka1t/M/+A==", "dev": true }, "node_modules/@ipld/dag-cbor": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-9.2.0.tgz", - "integrity": "sha512-N14oMy0q4gM6OuZkIpisKe0JBSjf1Jb39VI+7jMLiWX9124u1Z3Fdj/Tag1NA0cVxxqWDh0CqsjcVfOKtelPDA==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-9.2.1.tgz", + "integrity": "sha512-nyY48yE7r3dnJVlxrdaimrbloh4RokQaNRdI//btfTkcTEZbpmSrbYcBQ4VKTf8ZxXAOUJy4VsRpkJo+y9RTnA==", "dev": true, "dependencies": { "cborg": "^4.0.0", @@ -229,15 +250,15 @@ } }, "node_modules/@ipld/dag-cbor/node_modules/multiformats": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.0.tgz", - "integrity": "sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.2.2.tgz", + "integrity": "sha512-RWI+nyf0q64vyOxL8LbKtjJMki0sogRL/8axvklNtiTM0iFCVtHwME9w6+0P1/v4dQvsIg8A45oT3ka1t/M/+A==", "dev": true }, "node_modules/@ipld/dag-json": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/@ipld/dag-json/-/dag-json-10.2.0.tgz", - "integrity": "sha512-O9YLUrl3d3WbVz7v1WkajFkyfOLEe2Fep+wor4fgVe0ywxzrivrj437NiPcVyB+2EDdFn/Q7tCHFf8YVhDf8ZA==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@ipld/dag-json/-/dag-json-10.2.2.tgz", + "integrity": "sha512-NnU8HdHKwAoGyrW3S09NMa8aZw0tImLRyR64hoafpLpDpAbA9g1+fb24JsdlugbL4sXUQVwDVA+qK4Ud8V83lA==", "dev": true, "dependencies": { "cborg": "^4.0.0", @@ -249,15 +270,15 @@ } }, "node_modules/@ipld/dag-json/node_modules/multiformats": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.0.tgz", - "integrity": "sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.2.2.tgz", + "integrity": "sha512-RWI+nyf0q64vyOxL8LbKtjJMki0sogRL/8axvklNtiTM0iFCVtHwME9w6+0P1/v4dQvsIg8A45oT3ka1t/M/+A==", "dev": true }, "node_modules/@ipld/dag-pb": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-4.1.0.tgz", - "integrity": "sha512-LJU451Drqs5zjFm7jI4Hs3kHlilOqkjcSfPiQgVsZnWaYb2C7YdfhnclrVn/X+ucKejlU9BL3+gXFCZUXkMuCg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-4.1.2.tgz", + "integrity": "sha512-BSztO4l3C+ya9HjCaQot26Y4AVsqIKtnn6+23ubc1usucnf6yoTBme18oCCdM6gKBMxuPqju5ye3lh9WEJsdeQ==", "dev": true, "dependencies": { "multiformats": "^13.1.0" @@ -268,9 +289,9 @@ } }, "node_modules/@ipld/dag-pb/node_modules/multiformats": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.0.tgz", - "integrity": "sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.2.2.tgz", + "integrity": "sha512-RWI+nyf0q64vyOxL8LbKtjJMki0sogRL/8axvklNtiTM0iFCVtHwME9w6+0P1/v4dQvsIg8A45oT3ka1t/M/+A==", "dev": true }, "node_modules/@leichtgewicht/ip-codec": { @@ -320,12 +341,12 @@ } }, "node_modules/@libp2p/interface": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.3.1.tgz", - "integrity": "sha512-KJoYP6biAgIHUU3pxaixaaYCvIHZshzXetxfoNigadAZ3hCGuwpdFhk7IABEaI3RgadOOYUwW3MXPbL+cxnXVQ==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.6.3.tgz", + "integrity": "sha512-Tm8W5Q2FsjcSdeA5BvP/GTUq/lp3SjeW6GPmWbbIasBJdv67UGHahu8YDFTME90IxTijnikkfGNkOPsd/4UuvA==", "dev": true, "dependencies": { - "@multiformats/multiaddr": "^12.2.1", + "@multiformats/multiaddr": "^12.2.3", "it-pushable": "^3.2.3", "it-stream-types": "^2.0.1", "multiformats": "^13.1.0", @@ -429,9 +450,9 @@ } }, "node_modules/@libp2p/interface/node_modules/multiformats": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.0.tgz", - "integrity": "sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.2.2.tgz", + "integrity": "sha512-RWI+nyf0q64vyOxL8LbKtjJMki0sogRL/8axvklNtiTM0iFCVtHwME9w6+0P1/v4dQvsIg8A45oT3ka1t/M/+A==", "dev": true }, "node_modules/@libp2p/interfaces": { @@ -521,9 +542,9 @@ } }, "node_modules/@multiformats/multiaddr": { - "version": "12.2.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.2.1.tgz", - "integrity": "sha512-UwjoArBbv64FlaetV4DDwh+PUMfzXUBltxQwdh+uTYnGFzVa8ZfJsn1vt1RJlJ6+Xtrm3RMekF/B+K338i2L5Q==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", "dev": true, "dependencies": { "@chainsafe/is-ip": "^2.0.1", @@ -545,9 +566,9 @@ } }, "node_modules/@multiformats/multiaddr/node_modules/multiformats": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.0.tgz", - "integrity": "sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.2.2.tgz", + "integrity": "sha512-RWI+nyf0q64vyOxL8LbKtjJMki0sogRL/8axvklNtiTM0iFCVtHwME9w6+0P1/v4dQvsIg8A45oT3ka1t/M/+A==", "dev": true }, "node_modules/@multiformats/murmur3": { @@ -565,9 +586,9 @@ } }, "node_modules/@multiformats/murmur3/node_modules/multiformats": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.0.tgz", - "integrity": "sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.2.2.tgz", + "integrity": "sha512-RWI+nyf0q64vyOxL8LbKtjJMki0sogRL/8axvklNtiTM0iFCVtHwME9w6+0P1/v4dQvsIg8A45oT3ka1t/M/+A==", "dev": true }, "node_modules/@noble/curves": { @@ -631,135 +652,158 @@ ] }, "node_modules/@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", "dev": true, - "dependencies": { - "@octokit/types": "^6.0.3" + "engines": { + "node": ">= 18" } }, "node_modules/@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", + "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", "dev": true, "dependencies": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.1.0", + "@octokit/request": "^8.3.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.0.0", "before-after-hook": "^2.2.0", "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" } }, "node_modules/@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.5.tgz", + "integrity": "sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==", "dev": true, "dependencies": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", + "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" } }, "node_modules/@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", + "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", "dev": true, "dependencies": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", + "@octokit/request": "^8.3.0", + "@octokit/types": "^13.0.0", "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" } }, "node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", + "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", "dev": true }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "2.21.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", - "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.1.tgz", + "integrity": "sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==", "dev": true, "dependencies": { - "@octokit/types": "^6.40.0" + "@octokit/types": "^13.5.0" + }, + "engines": { + "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=2" + "@octokit/core": "5" } }, "node_modules/@octokit/plugin-request-log": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz", + "integrity": "sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==", "dev": true, + "engines": { + "node": ">= 18" + }, "peerDependencies": { - "@octokit/core": ">=3" + "@octokit/core": "5" } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "5.16.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", - "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.2.2.tgz", + "integrity": "sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==", "dev": true, "dependencies": { - "@octokit/types": "^6.39.0", - "deprecation": "^2.3.1" + "@octokit/types": "^13.5.0" + }, + "engines": { + "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=3" + "@octokit/core": "^5" } }, "node_modules/@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", + "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", "dev": true, "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", + "@octokit/endpoint": "^9.0.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" } }, "node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", + "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", "dev": true, "dependencies": { - "@octokit/types": "^6.0.3", + "@octokit/types": "^13.1.0", "deprecation": "^2.0.0", "once": "^1.4.0" + }, + "engines": { + "node": ">= 18" } }, "node_modules/@octokit/rest": { - "version": "18.12.0", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", - "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.1.tgz", + "integrity": "sha512-MB4AYDsM5jhIHro/dq4ix1iWTLGToIGk6cWF5L6vanFaMble5jTX/UBQyiv05HsWnwUtY8JrfHy2LWfKwihqMw==", "dev": true, "dependencies": { - "@octokit/core": "^3.5.1", - "@octokit/plugin-paginate-rest": "^2.16.8", - "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^5.12.0" + "@octokit/core": "^5.0.2", + "@octokit/plugin-paginate-rest": "11.3.1", + "@octokit/plugin-request-log": "^4.0.0", + "@octokit/plugin-rest-endpoint-methods": "13.2.2" + }, + "engines": { + "node": ">= 18" } }, "node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz", + "integrity": "sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==", "dev": true, "dependencies": { - "@octokit/openapi-types": "^12.11.0" + "@octokit/openapi-types": "^22.2.0" } }, "node_modules/@protobufjs/aspromise": { @@ -913,12 +957,12 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.12.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", - "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz", + "integrity": "sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==", "dev": true, "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.13.0" } }, "node_modules/@types/responselike": { @@ -937,15 +981,15 @@ "dev": true }, "node_modules/ajv": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", - "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -1046,9 +1090,9 @@ } }, "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.1.tgz", + "integrity": "sha512-u5w79Rd7SU4JaIlA/zFqG+gOiuq25q5VLyZ8E+ijJeILuTxVzZgp2CaGw/UTw6pXYN9XMO9yiqj/nEHmhTG5CA==", "dev": true }, "node_modules/balanced-match": { @@ -1128,9 +1172,9 @@ } }, "node_modules/blob-to-it": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/blob-to-it/-/blob-to-it-2.0.6.tgz", - "integrity": "sha512-xveo/z3QNilIJgCZAjzvx2uWWVHE4JzOy7eMp45zkuBsmwZMgjfhn2h/+BsZPaByVFa3u1W/OBUleNiqgMtVpQ==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/blob-to-it/-/blob-to-it-2.0.7.tgz", + "integrity": "sha512-mFAR/GKDDqFOkSBB7shXfsUZwU5DgK453++I8/SImNacfJsdKlx/oHTO0T4ZYHz8A2dnSONE+CX8L29VlWGKiQ==", "dev": true, "dependencies": { "browser-readablestream-to-it": "^2.0.0" @@ -1230,9 +1274,9 @@ "dev": true }, "node_modules/cborg": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.2.0.tgz", - "integrity": "sha512-q6cFW5m3KxfP/9xGI3yGLaC1l5DP6DWM9IvjiJojnIwohL5CQDl02EXViPV852mOfQo+7PJGPN01MI87vFGzyA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.2.3.tgz", + "integrity": "sha512-XBFbEJ6WMfn9L7woc2t+EzOxF8vGqddoopKBbrhIvZBt2WIUgSlT8xLmM6Aq1xv8eWt4yOSjwxWjYeuHU3CpJA==", "dev": true, "bin": { "cborg": "lib/bin.js" @@ -1561,9 +1605,9 @@ "dev": true }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -1882,6 +1926,22 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ] + }, "node_modules/figlet": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.7.0.tgz", @@ -1984,6 +2044,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -2030,9 +2091,9 @@ } }, "node_modules/graphql": { - "version": "16.8.1", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", - "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" @@ -2223,6 +2284,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "dependencies": { "once": "^1.3.0", @@ -2303,35 +2365,35 @@ } }, "node_modules/interface-blockstore": { - "version": "5.2.10", - "resolved": "https://registry.npmjs.org/interface-blockstore/-/interface-blockstore-5.2.10.tgz", - "integrity": "sha512-9K48hTvBCGsKVD3pF4ILgDcf+W2P/gq0oxLcsHGB6E6W6nDutYkzR+7k7bCs9REHrBEfKzcVDEKieiuNM9WRZg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/interface-blockstore/-/interface-blockstore-5.3.0.tgz", + "integrity": "sha512-MsOE2H9duZdpxXk7KVOQLaQnX4LfqHegshKxSr4b/YD44t13koT5Lg4lphZ0FwB5uvtvqQPm7LNcS0T/5Z2YUQ==", "dev": true, "dependencies": { - "interface-store": "^5.0.0", + "interface-store": "6.0.0", "multiformats": "^13.0.1" } }, "node_modules/interface-blockstore/node_modules/multiformats": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.0.tgz", - "integrity": "sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.2.2.tgz", + "integrity": "sha512-RWI+nyf0q64vyOxL8LbKtjJMki0sogRL/8axvklNtiTM0iFCVtHwME9w6+0P1/v4dQvsIg8A45oT3ka1t/M/+A==", "dev": true }, "node_modules/interface-datastore": { - "version": "8.2.11", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.2.11.tgz", - "integrity": "sha512-9E0iXehfp/j0UbZ2mvlYB4K9pP7uQBCppfuy8WHs1EHF6wLQrM9+zwyX+8Qt6HnH4GKZRyXX/CNXm6oD4+QYgA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.3.0.tgz", + "integrity": "sha512-RM/rTSmRcnoCwGZIHrPm+nlGYVoT4R0lcFvNnDyhdFT4R6BuHHhfFP47UldVEjs98SfxLuMhaNMsyjI918saHw==", "dev": true, "dependencies": { - "interface-store": "^5.0.0", + "interface-store": "6.0.0", "uint8arrays": "^5.0.2" } }, "node_modules/interface-store": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-5.1.8.tgz", - "integrity": "sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-6.0.0.tgz", + "integrity": "sha512-HkjsDPsjA7SKkCr+TH1elUQApAAM3X3JPwrz3vFzaf614wI+ZD6GVvwKGZCHYcbSRqeZP/uzVPqezzeISeo5kA==", "dev": true }, "node_modules/ipfs-core-types": { @@ -2376,9 +2438,9 @@ } }, "node_modules/ipfs-core-types/node_modules/@types/node": { - "version": "18.19.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", - "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", + "version": "18.19.44", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz", + "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -2442,6 +2504,12 @@ "npm": ">=7.0.0" } }, + "node_modules/ipfs-core-types/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/ipfs-core-utils": { "version": "0.18.1", "resolved": "https://registry.npmjs.org/ipfs-core-utils/-/ipfs-core-utils-0.18.1.tgz", @@ -2583,9 +2651,9 @@ } }, "node_modules/ipfs-unixfs-exporter/node_modules/multiformats": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.0.tgz", - "integrity": "sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.2.2.tgz", + "integrity": "sha512-RWI+nyf0q64vyOxL8LbKtjJMki0sogRL/8axvklNtiTM0iFCVtHwME9w6+0P1/v4dQvsIg8A45oT3ka1t/M/+A==", "dev": true }, "node_modules/ipfs-utils": { @@ -2679,9 +2747,9 @@ } }, "node_modules/is-ipfs/node_modules/multiformats": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.0.tgz", - "integrity": "sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.2.2.tgz", + "integrity": "sha512-RWI+nyf0q64vyOxL8LbKtjJMki0sogRL/8axvklNtiTM0iFCVtHwME9w6+0P1/v4dQvsIg8A45oT3ka1t/M/+A==", "dev": true }, "node_modules/is-observable": { @@ -2705,15 +2773,6 @@ "node": ">=8" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-promise": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", @@ -2761,9 +2820,9 @@ } }, "node_modules/it-filter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-3.1.0.tgz", - "integrity": "sha512-FiYuzdsUhmMZJTJQ8YLdgX3ArjQmAtCG1lyrtZd+92/2eC6YO9UoybdrwVj/yyZkuXAPykrSipLuZ+KSKpt29A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-3.1.1.tgz", + "integrity": "sha512-TOXmVuaSkxlLp2hXKoMTra0WMZMKVFxE3vSsbIA+PbADNCBAHhjJ/lM31vBOUTddHMO34Ku++vU8T9PLlBxQtg==", "dev": true, "dependencies": { "it-peekable": "^3.0.0" @@ -2796,9 +2855,9 @@ "dev": true }, "node_modules/it-map": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/it-map/-/it-map-3.1.0.tgz", - "integrity": "sha512-B7zNmHYRE0qes8oTiNYU7jXEF5WvKZNAUosskCks1JT9Z4DNwRClrQyd+C/hgITG8ewDbVZMGx9VXAx3KMY2kA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/it-map/-/it-map-3.1.1.tgz", + "integrity": "sha512-9bCSwKD1yN1wCOgJ9UOl+46NQtdatosPWzxxUk2NdTLwRPXLh+L7iwCC9QKsbgM60RQxT/nH8bKMqm3H/o8IHQ==", "dev": true, "dependencies": { "it-peekable": "^3.0.0" @@ -2814,18 +2873,18 @@ } }, "node_modules/it-parallel": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/it-parallel/-/it-parallel-3.0.7.tgz", - "integrity": "sha512-aIIc2t8knfER/mQu4uEHaAYZrnj/2Tdp+Vj6BA94Gi7xghx1kblvpyrLkCYO9K+eDyPS1cE3Vfhh9a20MEmzXA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/it-parallel/-/it-parallel-3.0.8.tgz", + "integrity": "sha512-URLhs6eG4Hdr4OdvgBBPDzOjBeSSmI+Kqex2rv/aAyYClME26RYHirLVhZsZP5M+ZP6M34iRlXk8Wlqtezuqpg==", "dev": true, "dependencies": { "p-defer": "^4.0.1" } }, "node_modules/it-peekable": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/it-peekable/-/it-peekable-3.0.4.tgz", - "integrity": "sha512-Bb4xyMX5xAveFyh9ySbCrHMCpIF0+fIbl+0ZkcxP94JVofLe5j/mSBK0gjrrISsSVURVyey8X4L/IqrekOxjiA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/it-peekable/-/it-peekable-3.0.5.tgz", + "integrity": "sha512-JWQOGMt6rKiPcY30zUVMR4g6YxkpueTwHVE7CMs/aGqCf4OydM6w+7ZM3PvmO1e0TocjuR4aL8xyZWR46cTqCQ==", "dev": true }, "node_modules/it-pipe": { @@ -3366,9 +3425,9 @@ "dev": true }, "node_modules/nan": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", - "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", "dev": true, "optional": true }, @@ -3647,19 +3706,15 @@ } }, "node_modules/progress-events": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/progress-events/-/progress-events-1.0.0.tgz", - "integrity": "sha512-zIB6QDrSbPfRg+33FZalluFIowkbV5Xh1xSuetjG+rlC5he6u2dc6VQJ0TbMdlN3R1RHdpOqxEFMKTnQ+itUwA==", - "dev": true, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/progress-events/-/progress-events-1.0.1.tgz", + "integrity": "sha512-MOzLIwhpt64KIVN64h1MwdKWiyKFNc/S6BoYKPIVUHFg0/eIEyBulhWCgn678v/4c0ri3FdGuzXymNCv02MUIw==", + "dev": true }, "node_modules/protobufjs": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", - "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.2.tgz", + "integrity": "sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -3681,9 +3736,9 @@ } }, "node_modules/protons-runtime": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.4.0.tgz", - "integrity": "sha512-XfA++W/WlQOSyjUyuF5lgYBfXZUEMP01Oh1C2dSwZAlF2e/ZrMRPfWonXj6BGM+o8Xciv7w0tsRMKYwYEuQvaw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.5.0.tgz", + "integrity": "sha512-EsALjF9QsrEk6gbCx3lmfHxVN0ah7nG3cY7GySD4xf4g8cr7g543zB88Foh897Sr1RQJ9yDCUsoT1i1H/cVUFA==", "dev": true, "dependencies": { "uint8-varint": "^2.0.2", @@ -3883,6 +3938,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -3948,9 +4004,9 @@ "dev": true }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -4291,9 +4347,9 @@ } }, "node_modules/uint8arrays/node_modules/multiformats": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.0.tgz", - "integrity": "sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.2.2.tgz", + "integrity": "sha512-RWI+nyf0q64vyOxL8LbKtjJMki0sogRL/8axvklNtiTM0iFCVtHwME9w6+0P1/v4dQvsIg8A45oT3ka1t/M/+A==", "dev": true }, "node_modules/undici": { @@ -4309,9 +4365,9 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", + "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==", "dev": true }, "node_modules/universal-user-agent": { @@ -4474,9 +4530,9 @@ } }, "node_modules/yaml": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", - "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", + "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", "dev": true, "bin": { "yaml": "bin.mjs" diff --git a/package.json b/package.json index 6bb067a..dc5c504 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,6 @@ "repository": "https://github.com/dappnode/DAppNodePackage-Hopr", "private": true, "devDependencies": { - "@dappnode/dappnodesdk": "^0.3.22" + "@dappnode/dappnodesdk": "^0.3.38" } } diff --git a/setup-wizard.yml b/setup-wizard.yml index 77e2220..bc90c4d 100644 --- a/setup-wizard.yml +++ b/setup-wizard.yml @@ -35,12 +35,32 @@ fields: title: RPC Provider URL required: false description: |- - URL to the custom RPC provider this HOPR node should use. + URL to the custom RPC provider this HOPR node should use. Supports simple query strings. If your DAppnode is running a Gnosis Chain RPC endpoint, it is **strongly recommended** to use it here. *Example:* `http://nethermind-xdai.dappnode:8545` secret: false - pattern: "^http[s]{0,1}://[a-z0-9.-]{3,}(:[0-9]{2,5})?(/[a-z0-9.-/_]+)?$" + # Regular expression for matching URLs with simple query strings + # + # Components: + # - ^http[s]{0,1}:// : Matches HTTP or HTTPS protocol + # Examples: http://, https:// + # + # - [a-z0-9.-]{3,} : Matches domain name (min 3 chars) + # Allows: lowercase letters, numbers, dots, hyphens + # Examples: example.com, sub.example.com, my-domain.com + # + # - (:[0-9]{2,5})? : Optional port number (10-99999) + # Examples: :80, :8080, :44300 + # + # - (/[a-z0-9.-/_]*)? : Optional URL path + # Allows: slashes, lowercase letters, numbers, dots, hyphens, underscores + # Examples: /path, /path/to/resource, /api/v1/endpoint + # + # - (\?[a-z0-9._=&-]*)? : Optional query string + # Allows: lowercase letters, numbers, dots, underscores, equals signs, ampersands, hyphens + # Examples: ?param=value, ?id=123&type=test, ?user.name=john_doe + pattern: ^http[s]{0,1}:\/\/[a-z0-9.-]{3,}(:[0-9]{2,5})?(\/[a-z0-9.-/_]*)?(\?[a-z0-9._=&-]*)?$ patternErrorMessage: Must be a valid url starting with `http://` or `https://` # - id: IDENTITY @@ -77,7 +97,7 @@ fields: *Example:* `0x010203040506070809aabbccddeeff00112233` secret: false - pattern: "^0x[a-fA-F0-9]{40}$" + pattern: ^0x[a-fA-F0-9]{40}$ patternErrorMessage: Must be a valid Ethereum address! - id: HOPRD_MODULE_ADDRESS @@ -94,7 +114,7 @@ fields: *Example:* `0x010203040506070809aabbccddeeff00112233` secret: false - pattern: "^0x[a-fA-F0-9]{40}$" + pattern: ^0x[a-fA-F0-9]{40}$ patternErrorMessage: Must be a valid Ethereum address! - id: HOPRD_HOST @@ -117,5 +137,20 @@ fields: *Example (dynDNS entry):* `abcd1234.dyndns.dappnode.io:9091` secret: false - pattern: "^[a-z0-9.-]{3,}:909[1-9]$" + pattern: ^[a-z0-9.-]{3,}:909[1-9]$ patternErrorMessage: Must be in correct host:port format! + + - id: HOPRD_NAT + target: + type: environment + name: HOPRD_NAT + service: node + title: Enable NAT mode + required: false + description: |- + By default the HOPR node assumes that it is running behind a NAT on a + dappnode. If this is not the case or proper port forwarding has been + set up this option can be set to `false` to disable NAT mode. + secret: false + pattern: ^(true|false)$ + patternErrorMessage: Must be either `true` or `false`! diff --git a/shell.nix b/shell.nix index 1d9d110..77b8279 100644 --- a/shell.nix +++ b/shell.nix @@ -18,6 +18,7 @@ mkShell { envsubst # build utils + just nodejs_20 # custom pkg groups