diff --git a/.github/workflows/nova-build-temp.yaml b/.github/workflows/nova-build-temp.yaml index 530821290..45c023289 100644 --- a/.github/workflows/nova-build-temp.yaml +++ b/.github/workflows/nova-build-temp.yaml @@ -1,129 +1,49 @@ -name: Nova Deply Workflow (with SDK build) +name: Nova Deploy Workflow -on: - workflow_dispatch: - inputs: - TARGET_COMMIT: - description: "Target Commit Hash for the SDK" - required: false - default: "5d8c3042c87fbde300269f55da90dd4d8c60f2f1" - environment: - type: choice - description: "Select the environment to deploy to" - options: - - nova - required: false - default: nova - deployment: - type: boolean - description: "Deploy after build?" - required: false - default: false +on: workflow_dispatch + +env: + DEPLOY_ENV: nova jobs: - build-and-deploy: + set_env_vars: + name: Set Environment Variables runs-on: ubuntu-latest - environment: release + outputs: + version_tag: ${{ steps.set_version_tag.outputs.version_tag }} steps: - - name: Checkout Repository + - name: Checkout uses: actions/checkout@v2 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to Docker Hub - uses: docker/login-action@v1 - with: - username: ${{ secrets.IOTALEDGER_DOCKER_USERNAME }} - password: ${{ secrets.IOTALEDGER_DOCKER_PASSWORD }} - - - name: Get the short commit hash + - name: Set up the version tag for docker images + id: set_version_tag run: | COMMIT_HASH=$(git rev-parse --short HEAD) - echo "VERSION=$COMMIT_HASH" >> $GITHUB_ENV - - - name: Set up Environment Variable - run: echo "DEPLOY_ENV=${{ github.event.inputs.environment }}" >> $GITHUB_ENV - - - name: Set up Node.js - uses: actions/setup-node@v2 - with: - node-version: "16" - - - name: Install System Dependencies - run: | - sudo apt-get update - sudo apt-get install -y python2 gcc-multilib g++-multilib build-essential libssl-dev rpm libsecret-1-dev software-properties-common apt-transport-https libudev-dev libusb-1.0-0-dev llvm-dev libclang-dev clang yarn - echo 'LIBCLANG_PATH=/usr/lib/llvm-14/lib' >> $GITHUB_ENV - echo 'DEBUG=electron-builder' >> $GITHUB_ENV - echo 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/snap:/root/.cargo/bin' >> $GITHUB_ENV - - - name: Install Rust and wasm-bindgen-cli - run: | - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y - source $HOME/.cargo/env - cargo install wasm-bindgen-cli - rustup target add wasm32-unknown-unknown - - - name: Global Git Configuration - run: git config --global --add safe.directory ${{ github.workspace }} - - - name: Yarn Add crypto-browserify - run: yarn add crypto-browserify - - - name: Setup SDK - run: | - git clone -b 2.0 https://github.com/iotaledger/iota-sdk - cd iota-sdk - echo "Checking out nova-sdk commit ${{ github.event.inputs.TARGET_COMMIT }}" - git checkout ${{ github.event.inputs.TARGET_COMMIT }} - - - name: Build Node.js Bindings - run: | - cd iota-sdk/bindings/nodejs - echo "Renaming nodejs sdk (sdk-nova)" - sed -i.bak '2s/.*/ \"name\": \"@iota\/sdk-nova\",/' package.json - rm package.json.bak - echo "Building nodejs bindings" - source $HOME/.cargo/env - yarn - yarn build - - - name: Build WASM Bindings - run: | - cd iota-sdk/bindings/wasm - echo "Renaming wasm sdk (sdk-wasm-nova)" - sed -i.bak '2s/.*/ \"name\": \"@iota\/sdk-wasm-nova\",/' package.json - rm package.json.bak - echo "Building wasm bindings" - source $HOME/.cargo/env - yarn - yarn build - - - name: Build and push API Docker image - uses: docker/build-push-action@v2 - with: - context: ./ - file: ./api/Dockerfile - push: true - tags: iotaledger/explorer-api:${{ env.VERSION }} - no-cache: true - - - name: Build and push Client Docker image - uses: docker/build-push-action@v2 - with: - context: ./ - file: ./client/Dockerfile - push: true - tags: iotaledger/explorer-client:${{ env.VERSION }} - no-cache: true - + echo "VERSION_TAG=$COMMIT_HASH" >> $GITHUB_OUTPUT + + use-reusable-workflow: + strategy: + matrix: + directory: [api, client] + name: Build Images + needs: set_env_vars + uses: ./.github/workflows/build-images.reusable.yaml + with: + directory: ${{ matrix.directory }} + image_tags: | + iotaledger/explorer-${{ matrix.directory }}:${{ needs.set_env_vars.outputs.version_tag }} + secrets: inherit + + deploy_to_server: + name: Deploy Production to Server + needs: [set_env_vars, use-reusable-workflow] + runs-on: ubuntu-latest + steps: - name: Add SSH key uses: webfactory/ssh-agent@v0.5.2 with: ssh-private-key: ${{ secrets.UPDATER_SSH_PRIVATE_KEY }} - name: Deploy to Server - if: ${{ github.event.inputs.deployment }} run: | - ssh -o StrictHostKeyChecking=no updater@${{ secrets.EXPLORER_NOVA_GATEWAY }} "${{ env.DEPLOY_ENV }} ${{ env.VERSION }}" + ssh -o StrictHostKeyChecking=no updater@${{ secrets.EXPLORER_NOVA_GATEWAY }} "${{ env.DEPLOY_ENV }} ${{ needs.set_env_vars.outputs.version_tag }}" diff --git a/api/Dockerfile b/api/Dockerfile index 52838f84a..9d76f4658 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -1,31 +1,13 @@ FROM node:16.20.2-bullseye ## Include the build tools for any npm packages that rebuild -RUN apt-get update && apt-get install -y \ - build-essential \ - pkg-config \ - libssl-dev \ - libudev-dev \ - cmake \ - clang \ - curl \ - git \ - python3 \ - && rm -rf /var/lib/apt/lists/* +RUN apt install git curl python3 # Working DIR WORKDIR /usr/src/app # Copy everything from current Folder -# COPY . ./ - -# Copy iota-sdk-nova deps REMOVE THIS for prod -# Get Rust -RUN curl https://sh.rustup.rs -sSf | bash -s -- -y -ENV PATH="${PATH}:/root/.cargo/bin" - -COPY ./api ./ -COPY ./iota-sdk/ ../iota-sdk/ +COPY . ./ # Set the env variables ARG CONFIG_ID diff --git a/api/package-lock.json b/api/package-lock.json index 659028f1c..452f23b80 100644 --- a/api/package-lock.json +++ b/api/package-lock.json @@ -1,15 +1,15 @@ { "name": "explorer-api", - "version": "3.3.6", + "version": "3.3.8-rc.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "explorer-api", - "version": "3.3.6", + "version": "3.3.8-rc.2", "license": "Apache-2.0", "dependencies": { - "@google-cloud/logging-winston": "^5.3.0", + "@google-cloud/logging-winston": "^6.0.0", "@iota/core": "^1.0.0-beta.30", "@iota/crypto.js": "^1.8.6", "@iota/identity-wasm": "^0.5.0-dev.6", @@ -17,9 +17,9 @@ "@iota/identity-wasm-stardust": "npm:@iota/identity-wasm@^1.1.0", "@iota/iota.js-chrysalis": "npm:@iota/iota.js@^1.8.6", "@iota/mqtt.js": "^1.8.6", - "@iota/sdk": "1.1.1", - "@iota/sdk-nova": "../iota-sdk/bindings/nodejs", - "@iota/sdk-wasm": "^1.0.4", + "@iota/sdk-nova": "npm:@iota/sdk@2.0.0-alpha.7", + "@iota/sdk-stardust": "npm:@iota/sdk@1.1.1", + "@iota/sdk-wasm-stardust": "npm:@iota/sdk-wasm@1.1.1", "@iota/util.js": "^1.8.6", "@iota/validators": "^1.0.0-beta.30", "@types/node-cron": "^3.0.2", @@ -27,7 +27,7 @@ "big-integer": "^1.6.51", "compression": "^1.7.4", "dotenv": "^16.0.3", - "express": "^4.18.1", + "express": "^4.19.2", "influx": "^5.9.3", "jszip": "^3.10.1", "lint-staged": "^14.0.1", @@ -67,7 +67,8 @@ }, "../iota-sdk/bindings/nodejs": { "name": "@iota/sdk-nova", - "version": "2.0.0-alpha.1", + "version": "1.1.6", + "extraneous": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -547,6 +548,7 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", + "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -884,61 +886,61 @@ } }, "node_modules/@google-cloud/common": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-4.0.3.tgz", - "integrity": "sha512-fUoMo5b8iAKbrYpneIRV3z95AlxVJPrjpevxs4SKoclngWZvTXBSGpNisF5+x5m+oNGve7jfB1e6vNBZBUs7Fw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-5.0.1.tgz", + "integrity": "sha512-7NBC5vD0au75nkctVs2vEGpdUPFs1BaHTMpeI+RVEgQSMe5/wEU6dx9p0fmZA0bj4HgdpobMKeegOcLUiEoxng==", "dependencies": { - "@google-cloud/projectify": "^3.0.0", - "@google-cloud/promisify": "^3.0.0", + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "^4.0.0", "arrify": "^2.0.1", "duplexify": "^4.1.1", "ent": "^2.2.0", "extend": "^3.0.2", - "google-auth-library": "^8.0.2", - "retry-request": "^5.0.0", - "teeny-request": "^8.0.0" + "google-auth-library": "^9.0.0", + "retry-request": "^7.0.0", + "teeny-request": "^9.0.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, "node_modules/@google-cloud/logging": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@google-cloud/logging/-/logging-10.5.0.tgz", - "integrity": "sha512-XmlNs6B8lDZvFwFB5M55g9ch873AA2rXSuFOczQ3FOAzuyd/qksf18suFJfcrLMu8lYSr3SQhTE45FlXz4p9pg==", - "dependencies": { - "@google-cloud/common": "^4.0.0", - "@google-cloud/paginator": "^4.0.0", - "@google-cloud/projectify": "^3.0.0", - "@google-cloud/promisify": "^3.0.0", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/logging/-/logging-11.0.0.tgz", + "integrity": "sha512-uQeReiVICoV5yt9J/cczNxHxqzTkLLG7yGHXCMAk/wQNVZGevT4Bi7CBWpt0aXxm044a76Aj6V08cCAlBj7UZw==", + "dependencies": { + "@google-cloud/common": "^5.0.0", + "@google-cloud/paginator": "^5.0.0", + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "^4.0.0", "arrify": "^2.0.1", "dot-prop": "^6.0.0", "eventid": "^2.0.0", "extend": "^3.0.2", - "gcp-metadata": "^4.0.0", - "google-auth-library": "^8.0.2", - "google-gax": "^3.5.8", + "gcp-metadata": "^6.0.0", + "google-auth-library": "^9.0.0", + "google-gax": "^4.0.3", "on-finished": "^2.3.0", "pumpify": "^2.0.1", "stream-events": "^1.0.5", "uuid": "^9.0.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, "node_modules/@google-cloud/logging-winston": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@google-cloud/logging-winston/-/logging-winston-5.3.0.tgz", - "integrity": "sha512-i7rh4h6YU9RVowtaGU1Da+ShoFy5ueKJQMpE/+grW/NoU+vvzDSIC8GOBhr1ZGqFU2QhETSlt2d50htbFYW8Vw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/logging-winston/-/logging-winston-6.0.0.tgz", + "integrity": "sha512-/lVp7CyT3nFOr+AjQlZnJhTIOf+kcNGB4JTziL0fkX6Ov/2qNKtRGS/NqE6cD+VSPiv5jLOty3LgkRsXMpYxQQ==", "dependencies": { - "@google-cloud/logging": "^10.2.2", - "google-auth-library": "^8.0.2", + "@google-cloud/logging": "^11.0.0", + "google-auth-library": "^9.0.0", "lodash.mapvalues": "^4.6.0", "winston-transport": "^4.3.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "peerDependencies": { "winston": ">=3.2.1" @@ -957,49 +959,49 @@ } }, "node_modules/@google-cloud/paginator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-4.0.1.tgz", - "integrity": "sha512-6G1ui6bWhNyHjmbYwavdN7mpVPRBtyDg/bfqBTAlwr413On2TnFNfDxc9UhTJctkgoCDgQXEKiRPLPR9USlkbQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.0.tgz", + "integrity": "sha512-87aeg6QQcEPxGCOthnpUjvw4xAZ57G7pL8FS0C4e/81fr3FjkpUpibf1s2v5XGyGhUVGF4Jfg7yEcxqn2iUw1w==", "dependencies": { "arrify": "^2.0.0", "extend": "^3.0.2" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, "node_modules/@google-cloud/projectify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-3.0.0.tgz", - "integrity": "sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", + "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, "node_modules/@google-cloud/promisify": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-3.0.1.tgz", - "integrity": "sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", + "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", "engines": { - "node": ">=12" + "node": ">=14" } }, "node_modules/@grpc/grpc-js": { - "version": "1.8.21", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.21.tgz", - "integrity": "sha512-KeyQeZpxeEBSqFVTi3q2K7PiPXmgBfECc4updA1ejCLjYmoAlvvM3ZMp5ztTDUCUQmoY3CpDxvchjO1+rFkoHg==", + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.6.tgz", + "integrity": "sha512-xP58G7wDQ4TCmN/cMUHh00DS7SRDv/+lC+xFLrTkMIN8h55X5NhZMLYbvy7dSELP15qlI6hPhNCRWVMtZMwqLA==", "dependencies": { - "@grpc/proto-loader": "^0.7.0", - "@types/node": ">=12.12.47" + "@grpc/proto-loader": "^0.7.10", + "@js-sdsl/ordered-map": "^4.4.2" }, "engines": { - "node": "^8.13.0 || >=10.10.0" + "node": ">=12.10.0" } }, "node_modules/@grpc/proto-loader": { - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.10.tgz", - "integrity": "sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ==", + "version": "0.7.12", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.12.tgz", + "integrity": "sha512-DCVwMxqYzpUCiDMl7hQ384FqP4T3DbNpXU8pt681l3UWCip1WUiD5JrkImUwCB9a7f2cq4CUTmi5r/xIMRPY1Q==", "dependencies": { "lodash.camelcase": "^4.3.0", "long": "^5.0.0", @@ -1295,7 +1297,20 @@ "resolved": "https://registry.npmjs.org/@iota/pad/-/pad-1.0.0-beta.30.tgz", "integrity": "sha512-fnhPMPul18WunLq9Ni4rxzBFmhna6eaG8WroDg6GdQqSK/eN62uFHV8tpspJHXuCqwgCUVp6NpuUna7+B2OV9g==" }, - "node_modules/@iota/sdk": { + "node_modules/@iota/sdk-nova": { + "name": "@iota/sdk", + "version": "2.0.0-alpha.7", + "resolved": "https://registry.npmjs.org/@iota/sdk/-/sdk-2.0.0-alpha.7.tgz", + "integrity": "sha512-aEi5caNOak2xGxBBJHhkYjE4zQ/nPBXK6XWHucwYHRH7rla9OO8RrCZIk4EfXTbInCXqxpLiZgTi0MaqW2pyGQ==", + "hasInstallScript": true, + "dependencies": { + "class-transformer": "^0.5.1", + "prebuild-install": "^7.1.1", + "reflect-metadata": "^0.1.13" + } + }, + "node_modules/@iota/sdk-stardust": { + "name": "@iota/sdk", "version": "1.1.1", "resolved": "https://registry.npmjs.org/@iota/sdk/-/sdk-1.1.1.tgz", "integrity": "sha512-63WcGZGwlIwZpIhk+F+ozxm9miRy+eDmCoyIS/8actUNlH8zG5DXmjtWqxZx89se9UEAZyr4eZH7JJlwfkieqQ==", @@ -1309,14 +1324,19 @@ "typescript": "^4.9.4" } }, - "node_modules/@iota/sdk-nova": { - "resolved": "../iota-sdk/bindings/nodejs", - "link": true + "node_modules/@iota/sdk-stardust/node_modules/@types/node": { + "version": "18.19.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.26.tgz", + "integrity": "sha512-+wiMJsIwLOYCvUqSdKTrfkS8mpTp+MPINe6+Np4TAGFWWRWiBQ5kSq9nZGCSPkzx9mvT+uEukzpX4MOSCydcvw==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@iota/sdk-wasm": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@iota/sdk-wasm/-/sdk-wasm-1.1.1.tgz", "integrity": "sha512-PoGo4SaQA20oY1hBvNPl10yaWoGh786LklVwKLfGiv/Hw86+bhuHOdNqP4VX1eNa2HmCiP5tPgkEtQj8WvGxIQ==", + "peer": true, "dependencies": { "class-transformer": "^0.5.1", "node-fetch": "^2.6.7", @@ -1332,12 +1352,24 @@ "fsevents": "^2.3.2" } }, - "node_modules/@iota/sdk/node_modules/@types/node": { - "version": "18.18.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.12.tgz", - "integrity": "sha512-G7slVfkwOm7g8VqcEF1/5SXiMjP3Tbt+pXDU3r/qhlM2KkGm786DUD4xyMA2QzEElFrv/KZV9gjygv4LnkpbMQ==", + "node_modules/@iota/sdk-wasm-stardust": { + "name": "@iota/sdk-wasm", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@iota/sdk-wasm/-/sdk-wasm-1.1.1.tgz", + "integrity": "sha512-PoGo4SaQA20oY1hBvNPl10yaWoGh786LklVwKLfGiv/Hw86+bhuHOdNqP4VX1eNa2HmCiP5tPgkEtQj8WvGxIQ==", "dependencies": { - "undici-types": "~5.26.4" + "class-transformer": "^0.5.1", + "node-fetch": "^2.6.7", + "qs": "^6.9.7", + "reflect-metadata": "^0.1.13", + "semver": "^7.5.2", + "text-encoding": "^0.7.0" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, "node_modules/@iota/signing": { @@ -1829,15 +1861,13 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jsdoc/salty": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.6.tgz", - "integrity": "sha512-aA+awb5yoml8TQ3CzI5Ue7sM3VMRC4l1zJJW4fgZ8OCL1wshJZhNzaf0PL85DSnOUw6QuFgeHGD/eq/xwwAF2g==", - "dependencies": { - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=v12.0.0" + "node_modules/@js-sdsl/ordered-map": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" } }, "node_modules/@noble/ed25519": { @@ -2028,6 +2058,11 @@ "@types/node": "*" } }, + "node_modules/@types/caseless": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" + }, "node_modules/@types/connect": { "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", @@ -2079,15 +2114,6 @@ "@types/send": "*" } }, - "node_modules/@types/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", - "dependencies": { - "@types/minimatch": "^5.1.2", - "@types/node": "*" - } - }, "node_modules/@types/graceful-fs": { "version": "4.1.9", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", @@ -2149,41 +2175,17 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, - "node_modules/@types/linkify-it": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz", - "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==" - }, "node_modules/@types/long": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, - "node_modules/@types/markdown-it": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", - "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", - "dependencies": { - "@types/linkify-it": "*", - "@types/mdurl": "*" - } - }, - "node_modules/@types/mdurl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz", - "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==" - }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" - }, "node_modules/@types/node": { "version": "16.18.64", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.64.tgz", @@ -2221,13 +2223,28 @@ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true }, - "node_modules/@types/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==", + "node_modules/@types/request": { + "version": "2.48.12", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", + "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", "dependencies": { - "@types/glob": "*", - "@types/node": "*" + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + } + }, + "node_modules/@types/request/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" } }, "node_modules/@types/semver": { @@ -2263,6 +2280,11 @@ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" + }, "node_modules/@types/triple-beam": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", @@ -2522,6 +2544,7 @@ "version": "8.11.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -2533,19 +2556,20 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dependencies": { - "debug": "4" + "debug": "^4.3.4" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/ajv": { @@ -2629,7 +2653,8 @@ "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/array-buffer-byte-length": { "version": "1.0.0", @@ -3022,12 +3047,12 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -3035,7 +3060,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -3251,21 +3276,11 @@ "cargo-cp-artifact": "bin/cargo-cp-artifact.js" } }, - "node_modules/catharsis": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", - "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", - "dependencies": { - "lodash": "^4.17.15" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3690,9 +3705,9 @@ "dev": true }, "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "engines": { "node": ">= 0.6" } @@ -3850,7 +3865,8 @@ "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true }, "node_modules/deepmerge": { "version": "4.3.1", @@ -4125,14 +4141,6 @@ "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==" }, - "node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -4260,82 +4268,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/eslint": { "version": "8.54.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", @@ -4582,6 +4514,7 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -4593,6 +4526,7 @@ "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -4609,6 +4543,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -4645,6 +4580,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, "engines": { "node": ">=4.0" } @@ -4653,6 +4589,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -4754,16 +4691,16 @@ } }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -4888,12 +4825,8 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "node_modules/fast-text-encoding": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", - "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true }, "node_modules/fastq": { "version": "1.15.0", @@ -5108,30 +5041,42 @@ } }, "node_modules/gaxios": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz", - "integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.5.0.tgz", + "integrity": "sha512-R9QGdv8j4/dlNoQbX3hSaK/S0rkMijqjVvW3YM06CoBdbU/VdKd159j4hePpng0KuE6Lh6JJ7UdmVGJZFcAG1w==", "dependencies": { - "abort-controller": "^3.0.0", "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", + "https-proxy-agent": "^7.0.1", "is-stream": "^2.0.0", - "node-fetch": "^2.6.7" + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" }, "engines": { - "node": ">=10" + "node": ">=14" + } + }, + "node_modules/gaxios/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" } }, "node_modules/gcp-metadata": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", - "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", "dependencies": { - "gaxios": "^4.0.0", + "gaxios": "^6.0.0", "json-bigint": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/gensync": { @@ -5288,91 +5233,53 @@ } }, "node_modules/google-auth-library": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.9.0.tgz", - "integrity": "sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.8.0.tgz", + "integrity": "sha512-TJJXFzMlVGRlIH27gYZ6XXyPf5Y3OItsKFfefsDAafNNywYRTkei83nEO29IrYj8GtdHWU78YnW+YZdaZaXIJA==", "dependencies": { - "arrify": "^2.0.0", "base64-js": "^1.3.0", "ecdsa-sig-formatter": "^1.0.11", - "fast-text-encoding": "^1.0.0", - "gaxios": "^5.0.0", - "gcp-metadata": "^5.3.0", - "gtoken": "^6.1.0", - "jws": "^4.0.0", - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/google-auth-library/node_modules/gaxios": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", - "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", - "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/google-auth-library/node_modules/gcp-metadata": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", - "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", - "dependencies": { - "gaxios": "^5.0.0", - "json-bigint": "^1.0.0" + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=14" } }, "node_modules/google-gax": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-3.6.1.tgz", - "integrity": "sha512-g/lcUjGcB6DSw2HxgEmCDOrI/CByOwqRvsuUvNalHUK2iPPPlmAIpbMbl62u0YufGMr8zgE3JL7th6dCb1Ry+w==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.3.2.tgz", + "integrity": "sha512-2mw7qgei2LPdtGrmd1zvxQviOcduTnsvAWYzCxhOWXK4IQKmQztHnDQwD0ApB690fBQJemFKSU7DnceAy3RLzw==", "dependencies": { - "@grpc/grpc-js": "~1.8.0", + "@grpc/grpc-js": "~1.10.0", "@grpc/proto-loader": "^0.7.0", "@types/long": "^4.0.0", - "@types/rimraf": "^3.0.2", "abort-controller": "^3.0.0", "duplexify": "^4.0.0", - "fast-text-encoding": "^1.0.3", - "google-auth-library": "^8.0.2", - "is-stream-ended": "^0.1.4", + "google-auth-library": "^9.3.0", "node-fetch": "^2.6.1", "object-hash": "^3.0.0", - "proto3-json-serializer": "^1.0.0", - "protobufjs": "7.2.4", - "protobufjs-cli": "1.1.1", - "retry-request": "^5.0.0" - }, - "bin": { - "compileProtos": "build/tools/compileProtos.js", - "minifyProtoJson": "build/tools/minify.js" + "proto3-json-serializer": "^2.0.0", + "protobufjs": "7.2.6", + "retry-request": "^7.0.0", + "uuid": "^9.0.1" }, "engines": { - "node": ">=12" + "node": ">=14" } }, - "node_modules/google-p12-pem": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz", - "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==", - "dependencies": { - "node-forge": "^1.3.1" - }, + "node_modules/google-gax/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { - "gp12-pem": "build/src/bin/gp12-pem.js" - }, - "engines": { - "node": ">=12.0.0" + "uuid": "dist/bin/uuid" } }, "node_modules/gopd": { @@ -5389,7 +5296,8 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true }, "node_modules/graphemer": { "version": "1.4.0", @@ -5398,30 +5306,15 @@ "dev": true }, "node_modules/gtoken": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", - "integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", "dependencies": { - "gaxios": "^5.0.1", - "google-p12-pem": "^4.0.0", + "gaxios": "^6.0.0", "jws": "^4.0.0" }, "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/gtoken/node_modules/gaxios": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", - "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", - "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.9" - }, - "engines": { - "node": ">=12" + "node": ">=14.0.0" } }, "node_modules/has-bigints": { @@ -5437,6 +5330,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -5548,16 +5442,27 @@ "node": ">= 6" } }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dependencies": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/human-signals": { @@ -5975,11 +5880,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-stream-ended": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", - "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" - }, "node_modules/is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -6733,42 +6633,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/js2xmlparser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", - "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", - "dependencies": { - "xmlcreate": "^2.0.4" - } - }, - "node_modules/jsdoc": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.2.tgz", - "integrity": "sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg==", - "dependencies": { - "@babel/parser": "^7.20.15", - "@jsdoc/salty": "^0.2.1", - "@types/markdown-it": "^12.2.3", - "bluebird": "^3.7.2", - "catharsis": "^0.9.0", - "escape-string-regexp": "^2.0.0", - "js2xmlparser": "^4.0.2", - "klaw": "^3.0.0", - "markdown-it": "^12.3.2", - "markdown-it-anchor": "^8.4.1", - "marked": "^4.0.10", - "mkdirp": "^1.0.4", - "requizzle": "^0.2.3", - "strip-json-comments": "^3.1.0", - "underscore": "~1.13.2" - }, - "bin": { - "jsdoc": "jsdoc.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/jsdoc-type-pratt-parser": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz", @@ -6778,14 +6642,6 @@ "node": ">=12.0.0" } }, - "node_modules/jsdoc/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "engines": { - "node": ">=8" - } - }, "node_modules/jsesc": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", @@ -6909,14 +6765,6 @@ "json-buffer": "3.0.1" } }, - "node_modules/klaw": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", - "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", - "dependencies": { - "graceful-fs": "^4.1.9" - } - }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -6975,14 +6823,6 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "node_modules/linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "dependencies": { - "uc.micro": "^1.0.1" - } - }, "node_modules/lint-staged": { "version": "14.0.1", "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-14.0.1.tgz", @@ -7282,11 +7122,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -7498,46 +7333,6 @@ "tmpl": "1.0.5" } }, - "node_modules/markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", - "dependencies": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/markdown-it-anchor": { - "version": "8.6.7", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz", - "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==", - "peerDependencies": { - "@types/markdown-it": "*", - "markdown-it": "*" - } - }, - "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" - }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -7675,6 +7470,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -7813,14 +7609,6 @@ } } }, - "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==", - "engines": { - "node": ">= 6.13.0" - } - }, "node_modules/node-gyp-build": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.0.tgz", @@ -8677,20 +8465,20 @@ } }, "node_modules/proto3-json-serializer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-1.1.1.tgz", - "integrity": "sha512-AwAuY4g9nxx0u52DnSMkqqgyLHaW/XaPLtaAo3y/ZCfeaQB/g4YDH4kb8Wc/mWzWvu0YjOznVnfn373MVZZrgw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-2.0.1.tgz", + "integrity": "sha512-8awBvjO+FwkMd6gNoGFZyqkHZXCFd54CIYTb6De7dPaufGJ2XNW+QUNqbMr8MaAocMdb+KpsD4rxEOaTBDCffA==", "dependencies": { - "protobufjs": "^7.0.0" + "protobufjs": "^7.2.5" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, "node_modules/protobufjs": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.4.tgz", - "integrity": "sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ==", + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz", + "integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==", "hasInstallScript": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", @@ -8710,70 +8498,6 @@ "node": ">=12.0.0" } }, - "node_modules/protobufjs-cli": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.1.1.tgz", - "integrity": "sha512-VPWMgIcRNyQwWUv8OLPyGQ/0lQY/QTQAVN5fh+XzfDwsVw1FZ2L3DM/bcBf8WPiRz2tNpaov9lPZfNcmNo6LXA==", - "dependencies": { - "chalk": "^4.0.0", - "escodegen": "^1.13.0", - "espree": "^9.0.0", - "estraverse": "^5.1.0", - "glob": "^8.0.0", - "jsdoc": "^4.0.0", - "minimist": "^1.2.0", - "semver": "^7.1.2", - "tmp": "^0.2.1", - "uglify-js": "^3.7.7" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "protobufjs": "^7.0.0" - } - }, - "node_modules/protobufjs-cli/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/protobufjs-cli/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/protobufjs-cli/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -8893,9 +8617,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -9165,14 +8889,6 @@ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, - "node_modules/requizzle": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz", - "integrity": "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==", - "dependencies": { - "lodash": "^4.17.21" - } - }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -9245,15 +8961,16 @@ } }, "node_modules/retry-request": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz", - "integrity": "sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", + "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", "dependencies": { - "debug": "^4.1.1", - "extend": "^3.0.2" + "@types/request": "^2.48.8", + "extend": "^3.0.2", + "teeny-request": "^9.0.0" }, "engines": { - "node": ">=12" + "node": ">=14" } }, "node_modules/reusify": { @@ -9275,6 +8992,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -9712,7 +9430,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "devOptional": true, + "dev": true, "engines": { "node": ">=0.10.0" } @@ -9991,6 +9709,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, "engines": { "node": ">=8" }, @@ -10007,6 +9726,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -10053,18 +9773,41 @@ } }, "node_modules/teeny-request": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-8.0.3.tgz", - "integrity": "sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", + "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", "dependencies": { "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.1", + "node-fetch": "^2.6.9", "stream-events": "^1.0.5", "uuid": "^9.0.0" }, "engines": { - "node": ">=12" + "node": ">=14" + } + }, + "node_modules/teeny-request/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/teeny-request/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" } }, "node_modules/teeny-request/node_modules/uuid": { @@ -10144,17 +9887,6 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -10440,22 +10172,6 @@ "node": ">=4.2.0" } }, - "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" - }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -10477,11 +10193,6 @@ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", "dev": true }, - "node_modules/underscore": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", - "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" - }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -10744,14 +10455,6 @@ "node": ">= 12.0.0" } }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -10826,11 +10529,6 @@ "node": ">=4.0" } }, - "node_modules/xmlcreate": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", - "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==" - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -11271,7 +10969,8 @@ "@babel/parser": { "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", - "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==" + "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", + "dev": true }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", @@ -11518,37 +11217,37 @@ "dev": true }, "@google-cloud/common": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-4.0.3.tgz", - "integrity": "sha512-fUoMo5b8iAKbrYpneIRV3z95AlxVJPrjpevxs4SKoclngWZvTXBSGpNisF5+x5m+oNGve7jfB1e6vNBZBUs7Fw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-5.0.1.tgz", + "integrity": "sha512-7NBC5vD0au75nkctVs2vEGpdUPFs1BaHTMpeI+RVEgQSMe5/wEU6dx9p0fmZA0bj4HgdpobMKeegOcLUiEoxng==", "requires": { - "@google-cloud/projectify": "^3.0.0", - "@google-cloud/promisify": "^3.0.0", + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "^4.0.0", "arrify": "^2.0.1", "duplexify": "^4.1.1", "ent": "^2.2.0", "extend": "^3.0.2", - "google-auth-library": "^8.0.2", - "retry-request": "^5.0.0", - "teeny-request": "^8.0.0" + "google-auth-library": "^9.0.0", + "retry-request": "^7.0.0", + "teeny-request": "^9.0.0" } }, "@google-cloud/logging": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@google-cloud/logging/-/logging-10.5.0.tgz", - "integrity": "sha512-XmlNs6B8lDZvFwFB5M55g9ch873AA2rXSuFOczQ3FOAzuyd/qksf18suFJfcrLMu8lYSr3SQhTE45FlXz4p9pg==", - "requires": { - "@google-cloud/common": "^4.0.0", - "@google-cloud/paginator": "^4.0.0", - "@google-cloud/projectify": "^3.0.0", - "@google-cloud/promisify": "^3.0.0", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/logging/-/logging-11.0.0.tgz", + "integrity": "sha512-uQeReiVICoV5yt9J/cczNxHxqzTkLLG7yGHXCMAk/wQNVZGevT4Bi7CBWpt0aXxm044a76Aj6V08cCAlBj7UZw==", + "requires": { + "@google-cloud/common": "^5.0.0", + "@google-cloud/paginator": "^5.0.0", + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "^4.0.0", "arrify": "^2.0.1", "dot-prop": "^6.0.0", "eventid": "^2.0.0", "extend": "^3.0.2", - "gcp-metadata": "^4.0.0", - "google-auth-library": "^8.0.2", - "google-gax": "^3.5.8", + "gcp-metadata": "^6.0.0", + "google-auth-library": "^9.0.0", + "google-gax": "^4.0.3", "on-finished": "^2.3.0", "pumpify": "^2.0.1", "stream-events": "^1.0.5", @@ -11563,48 +11262,48 @@ } }, "@google-cloud/logging-winston": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@google-cloud/logging-winston/-/logging-winston-5.3.0.tgz", - "integrity": "sha512-i7rh4h6YU9RVowtaGU1Da+ShoFy5ueKJQMpE/+grW/NoU+vvzDSIC8GOBhr1ZGqFU2QhETSlt2d50htbFYW8Vw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/logging-winston/-/logging-winston-6.0.0.tgz", + "integrity": "sha512-/lVp7CyT3nFOr+AjQlZnJhTIOf+kcNGB4JTziL0fkX6Ov/2qNKtRGS/NqE6cD+VSPiv5jLOty3LgkRsXMpYxQQ==", "requires": { - "@google-cloud/logging": "^10.2.2", - "google-auth-library": "^8.0.2", + "@google-cloud/logging": "^11.0.0", + "google-auth-library": "^9.0.0", "lodash.mapvalues": "^4.6.0", "winston-transport": "^4.3.0" } }, "@google-cloud/paginator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-4.0.1.tgz", - "integrity": "sha512-6G1ui6bWhNyHjmbYwavdN7mpVPRBtyDg/bfqBTAlwr413On2TnFNfDxc9UhTJctkgoCDgQXEKiRPLPR9USlkbQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.0.tgz", + "integrity": "sha512-87aeg6QQcEPxGCOthnpUjvw4xAZ57G7pL8FS0C4e/81fr3FjkpUpibf1s2v5XGyGhUVGF4Jfg7yEcxqn2iUw1w==", "requires": { "arrify": "^2.0.0", "extend": "^3.0.2" } }, "@google-cloud/projectify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-3.0.0.tgz", - "integrity": "sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", + "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==" }, "@google-cloud/promisify": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-3.0.1.tgz", - "integrity": "sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", + "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==" }, "@grpc/grpc-js": { - "version": "1.8.21", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.21.tgz", - "integrity": "sha512-KeyQeZpxeEBSqFVTi3q2K7PiPXmgBfECc4updA1ejCLjYmoAlvvM3ZMp5ztTDUCUQmoY3CpDxvchjO1+rFkoHg==", + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.6.tgz", + "integrity": "sha512-xP58G7wDQ4TCmN/cMUHh00DS7SRDv/+lC+xFLrTkMIN8h55X5NhZMLYbvy7dSELP15qlI6hPhNCRWVMtZMwqLA==", "requires": { - "@grpc/proto-loader": "^0.7.0", - "@types/node": ">=12.12.47" + "@grpc/proto-loader": "^0.7.10", + "@js-sdsl/ordered-map": "^4.4.2" } }, "@grpc/proto-loader": { - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.10.tgz", - "integrity": "sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ==", + "version": "0.7.12", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.12.tgz", + "integrity": "sha512-DCVwMxqYzpUCiDMl7hQ384FqP4T3DbNpXU8pt681l3UWCip1WUiD5JrkImUwCB9a7f2cq4CUTmi5r/xIMRPY1Q==", "requires": { "lodash.camelcase": "^4.3.0", "long": "^5.0.0", @@ -11838,61 +11537,58 @@ "resolved": "https://registry.npmjs.org/@iota/pad/-/pad-1.0.0-beta.30.tgz", "integrity": "sha512-fnhPMPul18WunLq9Ni4rxzBFmhna6eaG8WroDg6GdQqSK/eN62uFHV8tpspJHXuCqwgCUVp6NpuUna7+B2OV9g==" }, - "@iota/sdk": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@iota/sdk/-/sdk-1.1.1.tgz", - "integrity": "sha512-63WcGZGwlIwZpIhk+F+ozxm9miRy+eDmCoyIS/8actUNlH8zG5DXmjtWqxZx89se9UEAZyr4eZH7JJlwfkieqQ==", + "@iota/sdk-nova": { + "version": "npm:@iota/sdk@2.0.0-alpha.7", + "resolved": "https://registry.npmjs.org/@iota/sdk/-/sdk-2.0.0-alpha.7.tgz", + "integrity": "sha512-aEi5caNOak2xGxBBJHhkYjE4zQ/nPBXK6XWHucwYHRH7rla9OO8RrCZIk4EfXTbInCXqxpLiZgTi0MaqW2pyGQ==", "requires": { - "@types/node": "^18.15.12", - "cargo-cp-artifact": "^0.1.6", "class-transformer": "^0.5.1", "prebuild-install": "^7.1.1", - "reflect-metadata": "^0.1.13", - "typescript": "^4.9.4" - }, - "dependencies": { - "@types/node": { - "version": "18.18.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.12.tgz", - "integrity": "sha512-G7slVfkwOm7g8VqcEF1/5SXiMjP3Tbt+pXDU3r/qhlM2KkGm786DUD4xyMA2QzEElFrv/KZV9gjygv4LnkpbMQ==", - "requires": { - "undici-types": "~5.26.4" - } - } + "reflect-metadata": "^0.1.13" } }, - "@iota/sdk-nova": { - "version": "file:../iota-sdk/bindings/nodejs", - "requires": { - "@napi-rs/cli": "^1.0.0", - "@types/jest": "^29.4.0", - "@types/node": "^18.15.12", - "@typescript-eslint/eslint-plugin": "^5.30.7", - "@typescript-eslint/parser": "^5.30.7", - "cargo-cp-artifact": "^0.1.6", - "class-transformer": "^0.5.1", - "dotenv": "^16.0.3", - "electron-build-env": "^0.2.0", - "eslint": "^8.20.0", - "eslint-config-prettier": "^8.5.0", - "jest": "^29.4.2", - "jest-matcher-utils": "^29.5.0", - "prebuild": "^12.1.0", + "@iota/sdk-stardust": { + "version": "npm:@iota/sdk@1.1.1", + "resolved": "https://registry.npmjs.org/@iota/sdk/-/sdk-1.1.1.tgz", + "integrity": "sha512-63WcGZGwlIwZpIhk+F+ozxm9miRy+eDmCoyIS/8actUNlH8zG5DXmjtWqxZx89se9UEAZyr4eZH7JJlwfkieqQ==", + "requires": { + "@types/node": "^18.15.12", + "cargo-cp-artifact": "^0.1.6", + "class-transformer": "^0.5.1", "prebuild-install": "^7.1.1", - "prettier": "^2.8.3", "reflect-metadata": "^0.1.13", - "ts-jest": "^29.0.5", - "typedoc": "^0.24.6", - "typedoc-plugin-markdown": "^3.14.0", - "typescript": "^4.9.4", - "webpack": "^5.88.2", - "webpack-cli": "^5.1.4" + "typescript": "^4.9.4" + }, + "dependencies": { + "@types/node": { + "version": "18.19.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.26.tgz", + "integrity": "sha512-+wiMJsIwLOYCvUqSdKTrfkS8mpTp+MPINe6+Np4TAGFWWRWiBQ5kSq9nZGCSPkzx9mvT+uEukzpX4MOSCydcvw==", + "requires": { + "undici-types": "~5.26.4" + } + } } }, "@iota/sdk-wasm": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@iota/sdk-wasm/-/sdk-wasm-1.1.1.tgz", "integrity": "sha512-PoGo4SaQA20oY1hBvNPl10yaWoGh786LklVwKLfGiv/Hw86+bhuHOdNqP4VX1eNa2HmCiP5tPgkEtQj8WvGxIQ==", + "peer": true, + "requires": { + "class-transformer": "^0.5.1", + "fsevents": "^2.3.2", + "node-fetch": "^2.6.7", + "qs": "^6.9.7", + "reflect-metadata": "^0.1.13", + "semver": "^7.5.2", + "text-encoding": "^0.7.0" + } + }, + "@iota/sdk-wasm-stardust": { + "version": "npm:@iota/sdk-wasm@1.1.1", + "resolved": "https://registry.npmjs.org/@iota/sdk-wasm/-/sdk-wasm-1.1.1.tgz", + "integrity": "sha512-PoGo4SaQA20oY1hBvNPl10yaWoGh786LklVwKLfGiv/Hw86+bhuHOdNqP4VX1eNa2HmCiP5tPgkEtQj8WvGxIQ==", "requires": { "class-transformer": "^0.5.1", "fsevents": "^2.3.2", @@ -12297,13 +11993,10 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "@jsdoc/salty": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.6.tgz", - "integrity": "sha512-aA+awb5yoml8TQ3CzI5Ue7sM3VMRC4l1zJJW4fgZ8OCL1wshJZhNzaf0PL85DSnOUw6QuFgeHGD/eq/xwwAF2g==", - "requires": { - "lodash": "^4.17.21" - } + "@js-sdsl/ordered-map": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==" }, "@noble/ed25519": { "version": "1.7.3", @@ -12475,6 +12168,11 @@ "@types/node": "*" } }, + "@types/caseless": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" + }, "@types/connect": { "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", @@ -12526,15 +12224,6 @@ "@types/send": "*" } }, - "@types/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", - "requires": { - "@types/minimatch": "^5.1.2", - "@types/node": "*" - } - }, "@types/graceful-fs": { "version": "4.1.9", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", @@ -12596,41 +12285,17 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, - "@types/linkify-it": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz", - "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==" - }, "@types/long": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, - "@types/markdown-it": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", - "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", - "requires": { - "@types/linkify-it": "*", - "@types/mdurl": "*" - } - }, - "@types/mdurl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz", - "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==" - }, "@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true }, - "@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" - }, "@types/node": { "version": "16.18.64", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.64.tgz", @@ -12668,13 +12333,27 @@ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true }, - "@types/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==", + "@types/request": { + "version": "2.48.12", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", + "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", "requires": { - "@types/glob": "*", - "@types/node": "*" + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + }, + "dependencies": { + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + } } }, "@types/semver": { @@ -12710,6 +12389,11 @@ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true }, + "@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" + }, "@types/triple-beam": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", @@ -12873,20 +12557,22 @@ "acorn": { "version": "8.11.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==" + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, "requires": {} }, "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "requires": { - "debug": "4" + "debug": "^4.3.4" } }, "ajv": { @@ -12944,7 +12630,8 @@ "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "array-buffer-byte-length": { "version": "1.0.0", @@ -13225,12 +12912,12 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "requires": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -13238,7 +12925,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -13382,18 +13069,11 @@ "resolved": "https://registry.npmjs.org/cargo-cp-artifact/-/cargo-cp-artifact-0.1.8.tgz", "integrity": "sha512-3j4DaoTrsCD1MRkTF2Soacii0Nx7UHCce0EwUf4fHnggwiE4fbmF2AbnfzayR36DF8KGadfh7M/Yfy625kgPlA==" }, - "catharsis": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", - "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", - "requires": { - "lodash": "^4.17.15" - } - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13716,9 +13396,9 @@ "dev": true }, "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==" }, "cookie-signature": { "version": "1.0.6", @@ -13828,7 +13508,8 @@ "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true }, "deepmerge": { "version": "4.3.1", @@ -14024,11 +13705,6 @@ "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==" }, - "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -14132,60 +13808,6 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "requires": { - "prelude-ls": "~1.1.2" - } - } - } - }, "eslint": { "version": "8.54.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", @@ -14382,12 +14004,14 @@ "eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true }, "espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, "requires": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -14397,7 +14021,8 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esquery": { "version": "1.5.0", @@ -14420,12 +14045,14 @@ "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true }, "etag": { "version": "1.8.1", @@ -14497,16 +14124,16 @@ } }, "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -14606,12 +14233,8 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "fast-text-encoding": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", - "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true }, "fastq": { "version": "1.15.0", @@ -14782,23 +14405,30 @@ "dev": true }, "gaxios": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz", - "integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.5.0.tgz", + "integrity": "sha512-R9QGdv8j4/dlNoQbX3hSaK/S0rkMijqjVvW3YM06CoBdbU/VdKd159j4hePpng0KuE6Lh6JJ7UdmVGJZFcAG1w==", "requires": { - "abort-controller": "^3.0.0", "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", + "https-proxy-agent": "^7.0.1", "is-stream": "^2.0.0", - "node-fetch": "^2.6.7" + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" + }, + "dependencies": { + "uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" + } } }, "gcp-metadata": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", - "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", "requires": { - "gaxios": "^4.0.0", + "gaxios": "^6.0.0", "json-bigint": "^1.0.0" } }, @@ -14905,71 +14535,42 @@ } }, "google-auth-library": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.9.0.tgz", - "integrity": "sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.8.0.tgz", + "integrity": "sha512-TJJXFzMlVGRlIH27gYZ6XXyPf5Y3OItsKFfefsDAafNNywYRTkei83nEO29IrYj8GtdHWU78YnW+YZdaZaXIJA==", "requires": { - "arrify": "^2.0.0", "base64-js": "^1.3.0", "ecdsa-sig-formatter": "^1.0.11", - "fast-text-encoding": "^1.0.0", - "gaxios": "^5.0.0", - "gcp-metadata": "^5.3.0", - "gtoken": "^6.1.0", - "jws": "^4.0.0", - "lru-cache": "^6.0.0" - }, - "dependencies": { - "gaxios": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", - "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", - "requires": { - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.9" - } - }, - "gcp-metadata": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", - "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", - "requires": { - "gaxios": "^5.0.0", - "json-bigint": "^1.0.0" - } - } + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" } }, "google-gax": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-3.6.1.tgz", - "integrity": "sha512-g/lcUjGcB6DSw2HxgEmCDOrI/CByOwqRvsuUvNalHUK2iPPPlmAIpbMbl62u0YufGMr8zgE3JL7th6dCb1Ry+w==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.3.2.tgz", + "integrity": "sha512-2mw7qgei2LPdtGrmd1zvxQviOcduTnsvAWYzCxhOWXK4IQKmQztHnDQwD0ApB690fBQJemFKSU7DnceAy3RLzw==", "requires": { - "@grpc/grpc-js": "~1.8.0", + "@grpc/grpc-js": "~1.10.0", "@grpc/proto-loader": "^0.7.0", "@types/long": "^4.0.0", - "@types/rimraf": "^3.0.2", "abort-controller": "^3.0.0", "duplexify": "^4.0.0", - "fast-text-encoding": "^1.0.3", - "google-auth-library": "^8.0.2", - "is-stream-ended": "^0.1.4", + "google-auth-library": "^9.3.0", "node-fetch": "^2.6.1", "object-hash": "^3.0.0", - "proto3-json-serializer": "^1.0.0", - "protobufjs": "7.2.4", - "protobufjs-cli": "1.1.1", - "retry-request": "^5.0.0" - } - }, - "google-p12-pem": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz", - "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==", - "requires": { - "node-forge": "^1.3.1" + "proto3-json-serializer": "^2.0.0", + "protobufjs": "7.2.6", + "retry-request": "^7.0.0", + "uuid": "^9.0.1" + }, + "dependencies": { + "uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" + } } }, "gopd": { @@ -14983,7 +14584,8 @@ "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true }, "graphemer": { "version": "1.4.0", @@ -14992,26 +14594,12 @@ "dev": true }, "gtoken": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", - "integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", "requires": { - "gaxios": "^5.0.1", - "google-p12-pem": "^4.0.0", + "gaxios": "^6.0.0", "jws": "^4.0.0" - }, - "dependencies": { - "gaxios": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", - "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", - "requires": { - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.9" - } - } } }, "has-bigints": { @@ -15023,7 +14611,8 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "has-property-descriptors": { "version": "1.0.1", @@ -15100,14 +14689,24 @@ "@tootallnate/once": "2", "agent-base": "6", "debug": "4" + }, + "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + } } }, "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "requires": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" } }, @@ -15394,11 +14993,6 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" }, - "is-stream-ended": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", - "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" - }, "is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -15973,43 +15567,6 @@ "argparse": "^2.0.1" } }, - "js2xmlparser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", - "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", - "requires": { - "xmlcreate": "^2.0.4" - } - }, - "jsdoc": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.2.tgz", - "integrity": "sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg==", - "requires": { - "@babel/parser": "^7.20.15", - "@jsdoc/salty": "^0.2.1", - "@types/markdown-it": "^12.2.3", - "bluebird": "^3.7.2", - "catharsis": "^0.9.0", - "escape-string-regexp": "^2.0.0", - "js2xmlparser": "^4.0.2", - "klaw": "^3.0.0", - "markdown-it": "^12.3.2", - "markdown-it-anchor": "^8.4.1", - "marked": "^4.0.10", - "mkdirp": "^1.0.4", - "requizzle": "^0.2.3", - "strip-json-comments": "^3.1.0", - "underscore": "~1.13.2" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - } - } - }, "jsdoc-type-pratt-parser": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz", @@ -16129,14 +15686,6 @@ "json-buffer": "3.0.1" } }, - "klaw": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", - "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", - "requires": { - "graceful-fs": "^4.1.9" - } - }, "kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -16183,14 +15732,6 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "requires": { - "uc.micro": "^1.0.1" - } - }, "lint-staged": { "version": "14.0.1", "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-14.0.1.tgz", @@ -16374,11 +15915,6 @@ "p-locate": "^5.0.0" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -16529,34 +16065,6 @@ "tmpl": "1.0.5" } }, - "markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", - "requires": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - } - }, - "markdown-it-anchor": { - "version": "8.6.7", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz", - "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==", - "requires": {} - }, - "marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==" - }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" - }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -16648,7 +16156,8 @@ "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true }, "mkdirp-classic": { "version": "0.5.3", @@ -16750,11 +16259,6 @@ "whatwg-url": "^5.0.0" } }, - "node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" - }, "node-gyp-build": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.0.tgz", @@ -17390,17 +16894,17 @@ } }, "proto3-json-serializer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-1.1.1.tgz", - "integrity": "sha512-AwAuY4g9nxx0u52DnSMkqqgyLHaW/XaPLtaAo3y/ZCfeaQB/g4YDH4kb8Wc/mWzWvu0YjOznVnfn373MVZZrgw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-2.0.1.tgz", + "integrity": "sha512-8awBvjO+FwkMd6gNoGFZyqkHZXCFd54CIYTb6De7dPaufGJ2XNW+QUNqbMr8MaAocMdb+KpsD4rxEOaTBDCffA==", "requires": { - "protobufjs": "^7.0.0" + "protobufjs": "^7.2.5" } }, "protobufjs": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.4.tgz", - "integrity": "sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ==", + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz", + "integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -17416,53 +16920,6 @@ "long": "^5.0.0" } }, - "protobufjs-cli": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.1.1.tgz", - "integrity": "sha512-VPWMgIcRNyQwWUv8OLPyGQ/0lQY/QTQAVN5fh+XzfDwsVw1FZ2L3DM/bcBf8WPiRz2tNpaov9lPZfNcmNo6LXA==", - "requires": { - "chalk": "^4.0.0", - "escodegen": "^1.13.0", - "espree": "^9.0.0", - "estraverse": "^5.1.0", - "glob": "^8.0.0", - "jsdoc": "^4.0.0", - "minimist": "^1.2.0", - "semver": "^7.1.2", - "tmp": "^0.2.1", - "uglify-js": "^3.7.7" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, "proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -17539,9 +16996,9 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "requires": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -17751,14 +17208,6 @@ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, - "requizzle": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz", - "integrity": "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==", - "requires": { - "lodash": "^4.17.21" - } - }, "resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -17809,12 +17258,13 @@ } }, "retry-request": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz", - "integrity": "sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", + "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", "requires": { - "debug": "^4.1.1", - "extend": "^3.0.2" + "@types/request": "^2.48.8", + "extend": "^3.0.2", + "teeny-request": "^9.0.0" } }, "reusify": { @@ -17832,6 +17282,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, "requires": { "glob": "^7.1.3" } @@ -18146,7 +17597,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "devOptional": true + "dev": true }, "source-map-support": { "version": "0.5.13", @@ -18360,7 +17811,8 @@ "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true }, "stubs": { "version": "3.0.0", @@ -18371,6 +17823,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -18405,17 +17858,34 @@ } }, "teeny-request": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-8.0.3.tgz", - "integrity": "sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", + "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", "requires": { "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.1", + "node-fetch": "^2.6.9", "stream-events": "^1.0.5", "uuid": "^9.0.0" }, "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, "uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", @@ -18486,14 +17956,6 @@ } } }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "requires": { - "rimraf": "^3.0.0" - } - }, "tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -18685,16 +18147,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" }, - "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" - }, - "uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==" - }, "unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -18713,11 +18165,6 @@ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", "dev": true }, - "underscore": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", - "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" - }, "undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -18923,11 +18370,6 @@ "triple-beam": "^1.3.0" } }, - "word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" - }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -18973,11 +18415,6 @@ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" }, - "xmlcreate": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", - "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==" - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/api/package.json b/api/package.json index 84be9a78d..c7890f7a9 100644 --- a/api/package.json +++ b/api/package.json @@ -1,7 +1,7 @@ { "name": "explorer-api", "description": "API for Tangle Explorer", - "version": "3.3.6", + "version": "3.3.8-rc.2", "author": "Martyn Janes ", "repository": { "type": "git", @@ -26,7 +26,7 @@ "node": ">=16 <=16.20.2" }, "dependencies": { - "@google-cloud/logging-winston": "^5.3.0", + "@google-cloud/logging-winston": "^6.0.0", "@iota/core": "^1.0.0-beta.30", "@iota/crypto.js": "^1.8.6", "@iota/identity-wasm": "^0.5.0-dev.6", @@ -34,9 +34,9 @@ "@iota/identity-wasm-stardust": "npm:@iota/identity-wasm@^1.1.0", "@iota/iota.js-chrysalis": "npm:@iota/iota.js@^1.8.6", "@iota/mqtt.js": "^1.8.6", - "@iota/sdk": "1.1.1", - "@iota/sdk-nova": "../iota-sdk/bindings/nodejs", - "@iota/sdk-wasm": "^1.0.4", + "@iota/sdk-stardust": "npm:@iota/sdk@1.1.1", + "@iota/sdk-nova": "npm:@iota/sdk@2.0.0-alpha.7", + "@iota/sdk-wasm-stardust": "npm:@iota/sdk-wasm@1.1.1", "@iota/util.js": "^1.8.6", "@iota/validators": "^1.0.0-beta.30", "@types/node-cron": "^3.0.2", @@ -44,7 +44,7 @@ "big-integer": "^1.6.51", "compression": "^1.7.4", "dotenv": "^16.0.3", - "express": "^4.18.1", + "express": "^4.19.2", "influx": "^5.9.3", "jszip": "^3.10.1", "lint-staged": "^14.0.1", @@ -84,4 +84,4 @@ "eslint --fix" ] } -} +} \ No newline at end of file diff --git a/api/src/initServices.ts b/api/src/initServices.ts index 68f3613f0..a71129afe 100644 --- a/api/src/initServices.ts +++ b/api/src/initServices.ts @@ -1,7 +1,6 @@ -/* eslint-disable import/no-unresolved */ import { MqttClient as ChrysalisMqttClient } from "@iota/mqtt.js"; -import { IClientOptions as IStardustClientOptions, Client as StardustClient } from "@iota/sdk"; import { ClientOptions as INovaClientOptions, Client as NovaClient } from "@iota/sdk-nova"; +import { IClientOptions as IStardustClientOptions, Client as StardustClient } from "@iota/sdk-stardust"; import { ServiceFactory } from "./factories/serviceFactory"; import logger from "./logger"; import { IConfiguration } from "./models/configuration/IConfiguration"; diff --git a/api/src/models/api/INetworkGetResponse.ts b/api/src/models/api/INetworkGetResponse.ts index 3ef168d13..cf7de6bb4 100644 --- a/api/src/models/api/INetworkGetResponse.ts +++ b/api/src/models/api/INetworkGetResponse.ts @@ -75,4 +75,8 @@ interface INetworkView { * If Identity Resolver tool should be supported. */ identityResolverEnabled?: boolean; + /** + * Max results for API requests (only used in legacy for now). + */ + apiMaxResults?: number; } diff --git a/api/src/models/api/nova/IAccountDetailsResponse.ts b/api/src/models/api/nova/IAccountDetailsResponse.ts index 2c2fddd9f..cab7926a3 100644 --- a/api/src/models/api/nova/IAccountDetailsResponse.ts +++ b/api/src/models/api/nova/IAccountDetailsResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { OutputWithMetadataResponse } from "@iota/sdk-nova"; import { IResponse } from "./IResponse"; diff --git a/api/src/models/api/nova/IAccountValidatorDetailsResponse.ts b/api/src/models/api/nova/IAccountValidatorDetailsResponse.ts index 13b205e30..e4e466e76 100644 --- a/api/src/models/api/nova/IAccountValidatorDetailsResponse.ts +++ b/api/src/models/api/nova/IAccountValidatorDetailsResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { ValidatorResponse } from "@iota/sdk-nova"; import { IResponse } from "./IResponse"; diff --git a/api/src/models/api/nova/IAddressDetails.ts b/api/src/models/api/nova/IAddressDetails.ts index 8ea1dbd37..0e6be69d0 100644 --- a/api/src/models/api/nova/IAddressDetails.ts +++ b/api/src/models/api/nova/IAddressDetails.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { AddressType } from "@iota/sdk-nova"; export interface IAddressDetails { diff --git a/api/src/models/api/nova/IAddressDetailsResponse.ts b/api/src/models/api/nova/IAddressDetailsResponse.ts index 6b47774b5..da2bfae69 100644 --- a/api/src/models/api/nova/IAddressDetailsResponse.ts +++ b/api/src/models/api/nova/IAddressDetailsResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { OutputWithMetadataResponse } from "@iota/sdk-nova"; import { IResponse } from "./IResponse"; diff --git a/api/src/models/api/nova/IAnchorDetailsResponse.ts b/api/src/models/api/nova/IAnchorDetailsResponse.ts index f13ce7410..ec5962374 100644 --- a/api/src/models/api/nova/IAnchorDetailsResponse.ts +++ b/api/src/models/api/nova/IAnchorDetailsResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { OutputWithMetadataResponse } from "@iota/sdk-nova"; import { IResponse } from "./IResponse"; diff --git a/api/src/models/api/nova/IBlockDetailsResponse.ts b/api/src/models/api/nova/IBlockDetailsResponse.ts index e4c478ab4..050957aae 100644 --- a/api/src/models/api/nova/IBlockDetailsResponse.ts +++ b/api/src/models/api/nova/IBlockDetailsResponse.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-unresolved */ import { BlockMetadataResponse } from "@iota/sdk-nova"; import { IResponse } from "../IResponse"; diff --git a/api/src/models/api/nova/IBlockResponse.ts b/api/src/models/api/nova/IBlockResponse.ts index 9c269c4ea..6f42e816f 100644 --- a/api/src/models/api/nova/IBlockResponse.ts +++ b/api/src/models/api/nova/IBlockResponse.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-unresolved */ import { Block } from "@iota/sdk-nova"; import { IResponse } from "./IResponse"; diff --git a/api/src/models/api/nova/ICongestionResponse.ts b/api/src/models/api/nova/ICongestionResponse.ts index 9e7fff964..44aa4e40a 100644 --- a/api/src/models/api/nova/ICongestionResponse.ts +++ b/api/src/models/api/nova/ICongestionResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { CongestionResponse } from "@iota/sdk-nova"; import { IResponse } from "./IResponse"; diff --git a/api/src/models/api/nova/IDelegationByValidatorResponse.ts b/api/src/models/api/nova/IDelegationByValidatorResponse.ts index c3aeb4e4a..96c229cc8 100644 --- a/api/src/models/api/nova/IDelegationByValidatorResponse.ts +++ b/api/src/models/api/nova/IDelegationByValidatorResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { OutputWithMetadataResponse } from "@iota/sdk-nova"; import { IResponse } from "./IResponse"; diff --git a/api/src/models/api/nova/IDelegationWithDetails.ts b/api/src/models/api/nova/IDelegationWithDetails.ts index bb419d816..94283092d 100644 --- a/api/src/models/api/nova/IDelegationWithDetails.ts +++ b/api/src/models/api/nova/IDelegationWithDetails.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { OutputWithMetadataResponse } from "@iota/sdk-nova"; import { IRewardsResponse } from "./IRewardsResponse"; diff --git a/api/src/models/api/nova/IEpochCommitteeResponse.ts b/api/src/models/api/nova/IEpochCommitteeResponse.ts index de0fbd479..45c457dde 100644 --- a/api/src/models/api/nova/IEpochCommitteeResponse.ts +++ b/api/src/models/api/nova/IEpochCommitteeResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { CommitteeResponse } from "@iota/sdk-nova"; import { IResponse } from "./IResponse"; diff --git a/api/src/models/api/nova/INftDetailsResponse.ts b/api/src/models/api/nova/INftDetailsResponse.ts index 677a2ee50..59b447d93 100644 --- a/api/src/models/api/nova/INftDetailsResponse.ts +++ b/api/src/models/api/nova/INftDetailsResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { OutputWithMetadataResponse } from "@iota/sdk-nova"; import { IResponse } from "./IResponse"; diff --git a/api/src/models/api/nova/INodeInfoResponse.ts b/api/src/models/api/nova/INodeInfoResponse.ts index f19cf28ab..0dcfbb88e 100644 --- a/api/src/models/api/nova/INodeInfoResponse.ts +++ b/api/src/models/api/nova/INodeInfoResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-redundant-type-constituents */ import { InfoResponse } from "@iota/sdk-nova"; import { IResponse } from "../IResponse"; diff --git a/api/src/models/api/nova/IOutputDetailsResponse.ts b/api/src/models/api/nova/IOutputDetailsResponse.ts index 726f13f89..59220d75a 100644 --- a/api/src/models/api/nova/IOutputDetailsResponse.ts +++ b/api/src/models/api/nova/IOutputDetailsResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-redundant-type-constituents */ import { OutputWithMetadataResponse } from "@iota/sdk-nova"; import { IResponse } from "./IResponse"; diff --git a/api/src/models/api/nova/IRewardsResponse.ts b/api/src/models/api/nova/IRewardsResponse.ts index 587c6dc14..e50b808a3 100644 --- a/api/src/models/api/nova/IRewardsResponse.ts +++ b/api/src/models/api/nova/IRewardsResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { ManaRewardsResponse } from "@iota/sdk-nova"; import { IResponse } from "./IResponse"; diff --git a/api/src/models/api/nova/ISearchResponse.ts b/api/src/models/api/nova/ISearchResponse.ts index f6253f62d..157353f8f 100644 --- a/api/src/models/api/nova/ISearchResponse.ts +++ b/api/src/models/api/nova/ISearchResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { Block, OutputWithMetadataResponse } from "@iota/sdk-nova"; import { IAddressDetails } from "./IAddressDetails"; import { IResponse } from "./IResponse"; diff --git a/api/src/models/api/nova/ISlotResponse.ts b/api/src/models/api/nova/ISlotResponse.ts index 342e6c65f..2db6f5d27 100644 --- a/api/src/models/api/nova/ISlotResponse.ts +++ b/api/src/models/api/nova/ISlotResponse.ts @@ -1,4 +1,3 @@ -// eslint-disable-next-line import/no-unresolved import { SlotCommitment } from "@iota/sdk-nova"; import { IResponse } from "./IResponse"; diff --git a/api/src/models/api/nova/ITransactionDetailsResponse.ts b/api/src/models/api/nova/ITransactionDetailsResponse.ts index b9aef5eea..967ea8acf 100644 --- a/api/src/models/api/nova/ITransactionDetailsResponse.ts +++ b/api/src/models/api/nova/ITransactionDetailsResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-redundant-type-constituents */ import { Block } from "@iota/sdk-nova"; import { IResponse } from "./IResponse"; diff --git a/api/src/models/api/nova/ITransactionMetadataResponse.ts b/api/src/models/api/nova/ITransactionMetadataResponse.ts index 182969037..1281042b1 100644 --- a/api/src/models/api/nova/ITransactionMetadataResponse.ts +++ b/api/src/models/api/nova/ITransactionMetadataResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-redundant-type-constituents */ import { TransactionMetadataResponse } from "@iota/sdk-nova"; import { IResponse } from "./IResponse"; diff --git a/api/src/models/api/nova/IValidatorStatsResponse.ts b/api/src/models/api/nova/IValidatorStatsResponse.ts index 3834e44f2..04cd87527 100644 --- a/api/src/models/api/nova/IValidatorStatsResponse.ts +++ b/api/src/models/api/nova/IValidatorStatsResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { IResponse } from "./IResponse"; export interface IValidatorStatsResponse extends IResponse { diff --git a/api/src/models/api/nova/IValidatorsResponse.ts b/api/src/models/api/nova/IValidatorsResponse.ts index 50a94b740..fba55d547 100644 --- a/api/src/models/api/nova/IValidatorsResponse.ts +++ b/api/src/models/api/nova/IValidatorsResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { ValidatorResponse } from "@iota/sdk-nova"; import { IResponse } from "./IResponse"; diff --git a/api/src/models/api/nova/chronicle/ISlotBlocksResponse.ts b/api/src/models/api/nova/chronicle/ISlotBlocksResponse.ts index 747076209..e34ae4b7f 100644 --- a/api/src/models/api/nova/chronicle/ISlotBlocksResponse.ts +++ b/api/src/models/api/nova/chronicle/ISlotBlocksResponse.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-unresolved */ import { HexEncodedString, PayloadType } from "@iota/sdk-nova"; import { IResponse } from "../IResponse"; diff --git a/api/src/models/api/nova/commitment/ILatestSlotCommitmentsResponse.ts b/api/src/models/api/nova/commitment/ILatestSlotCommitmentsResponse.ts index c2818376d..e9b5599d7 100644 --- a/api/src/models/api/nova/commitment/ILatestSlotCommitmentsResponse.ts +++ b/api/src/models/api/nova/commitment/ILatestSlotCommitmentsResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { SlotCommitment } from "@iota/sdk-nova"; import { IResponse } from "../../IResponse"; diff --git a/api/src/models/api/nova/feed/IFeedUpdate.ts b/api/src/models/api/nova/feed/IFeedUpdate.ts index 41c313795..7dea18862 100644 --- a/api/src/models/api/nova/feed/IFeedUpdate.ts +++ b/api/src/models/api/nova/feed/IFeedUpdate.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-redundant-type-constituents */ import { Block, BlockMetadataResponse, SlotIndex } from "@iota/sdk-nova"; interface IFeedBlockUpdate { diff --git a/api/src/models/api/nova/foundry/IFoundriesResponse.ts b/api/src/models/api/nova/foundry/IFoundriesResponse.ts index 4fdd39c24..cf73181e1 100644 --- a/api/src/models/api/nova/foundry/IFoundriesResponse.ts +++ b/api/src/models/api/nova/foundry/IFoundriesResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { OutputsResponse } from "@iota/sdk-nova"; import { IResponse } from "../IResponse"; diff --git a/api/src/models/api/nova/foundry/IFoundryResponse.ts b/api/src/models/api/nova/foundry/IFoundryResponse.ts index 1dde7ba09..f887a7a76 100644 --- a/api/src/models/api/nova/foundry/IFoundryResponse.ts +++ b/api/src/models/api/nova/foundry/IFoundryResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { OutputWithMetadataResponse } from "@iota/sdk-nova"; import { IResponse } from "../IResponse"; diff --git a/api/src/models/api/nova/outputs/IOutputsResponse.ts b/api/src/models/api/nova/outputs/IOutputsResponse.ts index 186fd453e..aa15f3bd3 100644 --- a/api/src/models/api/nova/outputs/IOutputsResponse.ts +++ b/api/src/models/api/nova/outputs/IOutputsResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { OutputsResponse } from "@iota/sdk-nova"; import { IResponse } from "../IResponse"; diff --git a/api/src/models/api/stardust/IAddressDetailsResponse.ts b/api/src/models/api/stardust/IAddressDetailsResponse.ts index 98d8a74da..3d2a5d3d3 100644 --- a/api/src/models/api/stardust/IAddressDetailsResponse.ts +++ b/api/src/models/api/stardust/IAddressDetailsResponse.ts @@ -1,4 +1,4 @@ -import { OutputResponse } from "@iota/sdk"; +import { OutputResponse } from "@iota/sdk-stardust"; import { IResponse } from "../IResponse"; export interface IAddressDetailsResponse extends IResponse { diff --git a/api/src/models/api/stardust/IAliasResponse.ts b/api/src/models/api/stardust/IAliasResponse.ts index a20ade9ed..e967c9989 100644 --- a/api/src/models/api/stardust/IAliasResponse.ts +++ b/api/src/models/api/stardust/IAliasResponse.ts @@ -1,4 +1,4 @@ -import { OutputResponse } from "@iota/sdk"; +import { OutputResponse } from "@iota/sdk-stardust"; import { IResponse } from "./IResponse"; export interface IAliasResponse extends IResponse { diff --git a/api/src/models/api/stardust/IAssociationsResponse.ts b/api/src/models/api/stardust/IAssociationsResponse.ts index 840e9d786..18fd8972e 100644 --- a/api/src/models/api/stardust/IAssociationsResponse.ts +++ b/api/src/models/api/stardust/IAssociationsResponse.ts @@ -2,6 +2,7 @@ import { IResponse } from "../IResponse"; export enum AssociationType { BASIC_ADDRESS, + BASIC_ADDRESS_EXPIRED, BASIC_SENDER, BASIC_EXPIRATION_RETURN, BASIC_STORAGE_RETURN, @@ -12,6 +13,7 @@ export enum AssociationType { ALIAS_ID, FOUNDRY_ALIAS, NFT_ADDRESS, + NFT_ADDRESS_EXPIRED, NFT_STORAGE_RETURN, NFT_EXPIRATION_RETURN, NFT_ISSUER, diff --git a/api/src/models/api/stardust/IBlockDetailsResponse.ts b/api/src/models/api/stardust/IBlockDetailsResponse.ts index 95c0ae292..32bfd079f 100644 --- a/api/src/models/api/stardust/IBlockDetailsResponse.ts +++ b/api/src/models/api/stardust/IBlockDetailsResponse.ts @@ -1,4 +1,4 @@ -import { IBlockMetadata } from "@iota/sdk"; +import { IBlockMetadata } from "@iota/sdk-stardust"; import { IResponse } from "../IResponse"; export interface IBlockDetailsResponse extends IResponse { diff --git a/api/src/models/api/stardust/IBlockResponse.ts b/api/src/models/api/stardust/IBlockResponse.ts index a9435135b..f94d3822b 100644 --- a/api/src/models/api/stardust/IBlockResponse.ts +++ b/api/src/models/api/stardust/IBlockResponse.ts @@ -1,4 +1,4 @@ -import { Block } from "@iota/sdk"; +import { Block } from "@iota/sdk-stardust"; import { IResponse } from "../IResponse"; export interface IBlockResponse extends IResponse { diff --git a/api/src/models/api/stardust/INodeInfoResponse.ts b/api/src/models/api/stardust/INodeInfoResponse.ts index 792038c3d..a0655ac4e 100644 --- a/api/src/models/api/stardust/INodeInfoResponse.ts +++ b/api/src/models/api/stardust/INodeInfoResponse.ts @@ -1,4 +1,4 @@ -import { INodeInfoBaseToken, IRent } from "@iota/sdk"; +import { INodeInfoBaseToken, IRent } from "@iota/sdk-stardust"; import { IResponse } from "../IResponse"; /** diff --git a/api/src/models/api/stardust/IOutputDetailsResponse.ts b/api/src/models/api/stardust/IOutputDetailsResponse.ts index 7cd3aa561..8f3409bfd 100644 --- a/api/src/models/api/stardust/IOutputDetailsResponse.ts +++ b/api/src/models/api/stardust/IOutputDetailsResponse.ts @@ -1,4 +1,4 @@ -import { OutputResponse } from "@iota/sdk"; +import { OutputResponse } from "@iota/sdk-stardust"; import { IResponse } from "./IResponse"; export interface IOutputDetailsResponse extends IResponse { diff --git a/api/src/models/api/stardust/ISearchResponse.ts b/api/src/models/api/stardust/ISearchResponse.ts index f83157a8c..c705b947a 100644 --- a/api/src/models/api/stardust/ISearchResponse.ts +++ b/api/src/models/api/stardust/ISearchResponse.ts @@ -1,4 +1,4 @@ -import { Block, OutputResponse } from "@iota/sdk"; +import { Block, OutputResponse } from "@iota/sdk-stardust"; import { IBech32AddressDetails } from "./IBech32AddressDetails"; import { ITaggedOutputsResponse } from "./ITaggedOutputsResponse"; import { IMilestoneDetailsResponse } from "./milestone/IMilestoneDetailsResponse"; diff --git a/api/src/models/api/stardust/ITransactionDetailsResponse.ts b/api/src/models/api/stardust/ITransactionDetailsResponse.ts index 6d97b28c8..dc53126b3 100644 --- a/api/src/models/api/stardust/ITransactionDetailsResponse.ts +++ b/api/src/models/api/stardust/ITransactionDetailsResponse.ts @@ -1,4 +1,4 @@ -import { Block } from "@iota/sdk"; +import { Block } from "@iota/sdk-stardust"; import { IResponse } from "../IResponse"; export interface ITransactionDetailsResponse extends IResponse { diff --git a/api/src/models/api/stardust/basic/IBasicOutputsResponse.ts b/api/src/models/api/stardust/basic/IBasicOutputsResponse.ts index 3c2d82d15..ecff3f3da 100644 --- a/api/src/models/api/stardust/basic/IBasicOutputsResponse.ts +++ b/api/src/models/api/stardust/basic/IBasicOutputsResponse.ts @@ -1,4 +1,4 @@ -import { IOutputsResponse } from "@iota/sdk"; +import { IOutputsResponse } from "@iota/sdk-stardust"; import { IResponse } from "../../IResponse"; export interface IBasicOutputsResponse extends IResponse { diff --git a/api/src/models/api/stardust/chronicle/IBlockChildrenResponse.ts b/api/src/models/api/stardust/chronicle/IBlockChildrenResponse.ts index 97d0dc091..a3439fa84 100644 --- a/api/src/models/api/stardust/chronicle/IBlockChildrenResponse.ts +++ b/api/src/models/api/stardust/chronicle/IBlockChildrenResponse.ts @@ -1,4 +1,4 @@ -import { HexEncodedString } from "@iota/sdk"; +import { HexEncodedString } from "@iota/sdk-stardust"; import { IResponse } from "../../IResponse"; export interface IBlockChildrenResponse extends IResponse { diff --git a/api/src/models/api/stardust/chronicle/IRichestAddressesResponse.ts b/api/src/models/api/stardust/chronicle/IRichestAddressesResponse.ts index 75703df76..c009403a7 100644 --- a/api/src/models/api/stardust/chronicle/IRichestAddressesResponse.ts +++ b/api/src/models/api/stardust/chronicle/IRichestAddressesResponse.ts @@ -1,4 +1,4 @@ -import { IResponse } from "@iota/sdk"; +import { IResponse } from "@iota/sdk-stardust"; export interface IRichAddress { address: string; diff --git a/api/src/models/api/stardust/chronicle/ITokenDistributionResponse.ts b/api/src/models/api/stardust/chronicle/ITokenDistributionResponse.ts index 93e699c29..8ef2833a7 100644 --- a/api/src/models/api/stardust/chronicle/ITokenDistributionResponse.ts +++ b/api/src/models/api/stardust/chronicle/ITokenDistributionResponse.ts @@ -1,4 +1,4 @@ -import { IResponse } from "@iota/sdk"; +import { IResponse } from "@iota/sdk-stardust"; export interface IDistributionEntry { addressCount: string; diff --git a/api/src/models/api/stardust/feed/IFeedItemMetadata.ts b/api/src/models/api/stardust/feed/IFeedItemMetadata.ts index 7b1eabb46..65e7767b0 100644 --- a/api/src/models/api/stardust/feed/IFeedItemMetadata.ts +++ b/api/src/models/api/stardust/feed/IFeedItemMetadata.ts @@ -1,4 +1,4 @@ -import { ConflictReason } from "@iota/sdk"; +import { ConflictReason } from "@iota/sdk-stardust"; export interface IFeedItemMetadata { /** diff --git a/api/src/models/api/stardust/feed/IFeedUpdate.ts b/api/src/models/api/stardust/feed/IFeedUpdate.ts index 082687495..90e9c858c 100644 --- a/api/src/models/api/stardust/feed/IFeedUpdate.ts +++ b/api/src/models/api/stardust/feed/IFeedUpdate.ts @@ -1,4 +1,4 @@ -import { Block, MilestonePayload } from "@iota/sdk"; +import { Block, MilestonePayload } from "@iota/sdk-stardust"; import { IFeedItemMetadata } from "./IFeedItemMetadata"; type IFeedBlockUpdate = Block; diff --git a/api/src/models/api/stardust/foundry/IFoundriesResponse.ts b/api/src/models/api/stardust/foundry/IFoundriesResponse.ts index d3606cb13..130030673 100644 --- a/api/src/models/api/stardust/foundry/IFoundriesResponse.ts +++ b/api/src/models/api/stardust/foundry/IFoundriesResponse.ts @@ -1,4 +1,4 @@ -import { IOutputsResponse } from "@iota/sdk"; +import { IOutputsResponse } from "@iota/sdk-stardust"; import { IResponse } from "../IResponse"; export interface IFoundriesResponse extends IResponse { diff --git a/api/src/models/api/stardust/foundry/IFoundryResponse.ts b/api/src/models/api/stardust/foundry/IFoundryResponse.ts index 0dd481b93..a037808e9 100644 --- a/api/src/models/api/stardust/foundry/IFoundryResponse.ts +++ b/api/src/models/api/stardust/foundry/IFoundryResponse.ts @@ -1,4 +1,4 @@ -import { OutputResponse } from "@iota/sdk"; +import { OutputResponse } from "@iota/sdk-stardust"; import { IResponse } from "../IResponse"; export interface IFoundryResponse extends IResponse { diff --git a/api/src/models/api/stardust/milestone/IMilestoneDetailsResponse.ts b/api/src/models/api/stardust/milestone/IMilestoneDetailsResponse.ts index 958438c2d..8d2a12bcc 100644 --- a/api/src/models/api/stardust/milestone/IMilestoneDetailsResponse.ts +++ b/api/src/models/api/stardust/milestone/IMilestoneDetailsResponse.ts @@ -1,4 +1,4 @@ -import { MilestonePayload } from "@iota/sdk"; +import { MilestonePayload } from "@iota/sdk-stardust"; import { IResponse } from "../../IResponse"; export interface IMilestoneDetailsResponse extends IResponse { diff --git a/api/src/models/api/stardust/nft/INftDetailsResponse.ts b/api/src/models/api/stardust/nft/INftDetailsResponse.ts index 97206499e..d8c74b6a8 100644 --- a/api/src/models/api/stardust/nft/INftDetailsResponse.ts +++ b/api/src/models/api/stardust/nft/INftDetailsResponse.ts @@ -1,4 +1,4 @@ -import { OutputResponse } from "@iota/sdk"; +import { OutputResponse } from "@iota/sdk-stardust"; import { IResponse } from "../IResponse"; export interface INftDetailsResponse extends IResponse { diff --git a/api/src/models/api/stardust/nft/INftOutputsResponse.ts b/api/src/models/api/stardust/nft/INftOutputsResponse.ts index 3feb56325..046fa6a54 100644 --- a/api/src/models/api/stardust/nft/INftOutputsResponse.ts +++ b/api/src/models/api/stardust/nft/INftOutputsResponse.ts @@ -1,4 +1,4 @@ -import { IOutputsResponse } from "@iota/sdk"; +import { IOutputsResponse } from "@iota/sdk-stardust"; import { IResponse } from "../../IResponse"; export interface INftOutputsResponse extends IResponse { diff --git a/api/src/models/db/INetwork.ts b/api/src/models/db/INetwork.ts index e48182a03..c5c1eec23 100644 --- a/api/src/models/db/INetwork.ts +++ b/api/src/models/db/INetwork.ts @@ -172,4 +172,9 @@ export interface INetwork { * If Identity Resolver tool should be supported. */ identityResolverEnabled?: boolean; + + /** + * Max results for API requests (only used in legacy for now). + */ + apiMaxResults?: number; } diff --git a/api/src/models/db/networkType.ts b/api/src/models/db/networkType.ts index 1ab097ec1..0aed62d29 100644 --- a/api/src/models/db/networkType.ts +++ b/api/src/models/db/networkType.ts @@ -5,10 +5,23 @@ export const MAINNET = "mainnet"; const DEVNET = "devnet"; export const SHIMMER = "shimmer"; const TESTNET = "testnet"; +const IOTA_TESTNET = "iota-testnet"; +const SHIMMER_TESTNET = "shimmer-testnet"; const ALPHANET = "alphanet"; const CUSTOM = "custom"; -const networkTypes = [LEGACY_MAINNET, CHRYSALIS_MAINNET, MAINNET, DEVNET, SHIMMER, TESTNET, ALPHANET, CUSTOM] as const; +const networkTypes = [ + LEGACY_MAINNET, + CHRYSALIS_MAINNET, + MAINNET, + DEVNET, + SHIMMER, + TESTNET, + IOTA_TESTNET, + SHIMMER_TESTNET, + ALPHANET, + CUSTOM, +] as const; /** * The network type. diff --git a/api/src/routes/networks/get.ts b/api/src/routes/networks/get.ts index fe9dd4d16..348513391 100644 --- a/api/src/routes/networks/get.ts +++ b/api/src/routes/networks/get.ts @@ -50,6 +50,7 @@ export async function get(_: IConfiguration): Promise { circulatingSupply: circulatingSupplyFromSupplyTracker ?? n.circulatingSupply, identityResolverEnabled: n.identityResolverEnabled, tokenRegistryEndpoint: n.tokenRegistryEndpoint, + apiMaxResults: n.apiMaxResults, }; }), }; diff --git a/api/src/routes/node/info.ts b/api/src/routes/node/info.ts index 8efc96175..ef3bf2a00 100644 --- a/api/src/routes/node/info.ts +++ b/api/src/routes/node/info.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-redundant-type-constituents */ import { ServiceFactory } from "../../factories/serviceFactory"; import { INetworkBoundGetRequest } from "../../models/api/INetworkBoundGetRequest"; import { INodeInfoResponse as INovaNodeInfoResponse } from "../../models/api/nova/INodeInfoResponse"; diff --git a/api/src/routes/nova/validators/get.ts b/api/src/routes/nova/validators/get.ts index c0155b0ba..68817efae 100644 --- a/api/src/routes/nova/validators/get.ts +++ b/api/src/routes/nova/validators/get.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-unsafe-return */ import { ServiceFactory } from "../../../factories/serviceFactory"; import { INetworkBoundGetRequest } from "../../../models/api/INetworkBoundGetRequest"; import { IValidator, IValidatorsResponse } from "../../../models/api/nova/IValidatorsResponse"; diff --git a/api/src/routes/nova/validators/stats/get.ts b/api/src/routes/nova/validators/stats/get.ts index 51fa63e16..b09a2fd56 100644 --- a/api/src/routes/nova/validators/stats/get.ts +++ b/api/src/routes/nova/validators/stats/get.ts @@ -1,5 +1,3 @@ -/* eslint-disable @typescript-eslint/no-unsafe-return */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { ServiceFactory } from "../../../../factories/serviceFactory"; import { INetworkBoundGetRequest } from "../../../../models/api/INetworkBoundGetRequest"; import { IValidatorStatsResponse } from "../../../../models/api/nova/IValidatorStatsResponse"; diff --git a/api/src/routes/stardust/identity/resolution-stardust/get.ts b/api/src/routes/stardust/identity/resolution-stardust/get.ts index 4ca60478d..0ba4a8abe 100644 --- a/api/src/routes/stardust/identity/resolution-stardust/get.ts +++ b/api/src/routes/stardust/identity/resolution-stardust/get.ts @@ -1,5 +1,5 @@ import { IotaDID, IotaDocument, IotaIdentityClient } from "@iota/identity-wasm-stardust/node"; -import { Client } from "@iota/sdk-wasm/node"; +import { Client } from "@iota/sdk-wasm-stardust/node"; import { ServiceFactory } from "../../../../factories/serviceFactory"; import { IIdentityStardustResolveRequest } from "../../../../models/api/stardust/identity/IIdentityStardustResolveRequest"; import { IIdentityStardustResolveResponse } from "../../../../models/api/stardust/identity/IIdentityStardustResolveResponse"; diff --git a/api/src/routes/stardust/output/associated/post.ts b/api/src/routes/stardust/output/associated/post.ts index 3a5833f18..e3d749ba5 100644 --- a/api/src/routes/stardust/output/associated/post.ts +++ b/api/src/routes/stardust/output/associated/post.ts @@ -1,7 +1,7 @@ import { ServiceFactory } from "../../../../factories/serviceFactory"; import { IAssociationsRequest } from "../../../../models/api/stardust/IAssociationsRequest"; import { IAssociationsRequestBody } from "../../../../models/api/stardust/IAssociationsRequestBody"; -import { IAssociation, IAssociationsResponse } from "../../../../models/api/stardust/IAssociationsResponse"; +import { IAssociationsResponse } from "../../../../models/api/stardust/IAssociationsResponse"; import { IConfiguration } from "../../../../models/configuration/IConfiguration"; import { STARDUST } from "../../../../models/db/protocolVersion"; import { NetworkService } from "../../../../services/networkService"; @@ -33,12 +33,7 @@ export async function post( const helper = new AssociatedOutputsHelper(networkConfig, body.addressDetails); await helper.fetch(); - const result = helper.associationToOutputIds; - - const associations: IAssociation[] = []; - for (const [type, outputIds] of result.entries()) { - associations.push({ type, outputIds: outputIds.reverse() }); - } + const associations = helper.getAssociations(); return { associations, diff --git a/api/src/routes/stardust/transactionhistory/download/post.ts b/api/src/routes/stardust/transactionhistory/download/post.ts index cce621140..597a7af1c 100644 --- a/api/src/routes/stardust/transactionhistory/download/post.ts +++ b/api/src/routes/stardust/transactionhistory/download/post.ts @@ -1,4 +1,4 @@ -import { CommonOutput, INodeInfoBaseToken, OutputResponse } from "@iota/sdk"; +import { CommonOutput, INodeInfoBaseToken, OutputResponse } from "@iota/sdk-stardust"; import JSZip from "jszip"; import moment from "moment"; import { ServiceFactory } from "../../../../factories/serviceFactory"; diff --git a/api/src/services/nova/feed/novaFeed.ts b/api/src/services/nova/feed/novaFeed.ts index 139e5c29e..6a662e007 100644 --- a/api/src/services/nova/feed/novaFeed.ts +++ b/api/src/services/nova/feed/novaFeed.ts @@ -1,6 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ -/* eslint-disable @typescript-eslint/no-unsafe-return */ import { Block, Client, BlockMetadataResponse, SlotCommitment } from "@iota/sdk-nova"; import { ClassConstructor, plainToInstance } from "class-transformer"; import { ServiceFactory } from "../../../factories/serviceFactory"; diff --git a/api/src/services/nova/influx/influxServiceNova.ts b/api/src/services/nova/influx/influxServiceNova.ts index 8c0ce8d2c..577686a6b 100644 --- a/api/src/services/nova/influx/influxServiceNova.ts +++ b/api/src/services/nova/influx/influxServiceNova.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-unresolved */ import { InfluxDB, toNanoDate } from "influx"; import moment from "moment"; import cron from "node-cron"; diff --git a/api/src/services/nova/nodeInfoService.ts b/api/src/services/nova/nodeInfoService.ts index 7bd6d92cd..ffe64b725 100644 --- a/api/src/services/nova/nodeInfoService.ts +++ b/api/src/services/nova/nodeInfoService.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-return */ import { Client, InfoResponse, ProtocolParameters } from "@iota/sdk-nova"; import cron from "node-cron"; import { NodeInfoError } from "../../errors/nodeInfoError"; diff --git a/api/src/services/nova/novaApiService.ts b/api/src/services/nova/novaApiService.ts index 50f167c05..ba054b2d4 100644 --- a/api/src/services/nova/novaApiService.ts +++ b/api/src/services/nova/novaApiService.ts @@ -1,6 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ -/* eslint-disable @typescript-eslint/no-unsafe-return */ import { Client, HexEncodedString, diff --git a/api/src/services/nova/novaTimeService.ts b/api/src/services/nova/novaTimeService.ts index 194b24e28..693153137 100644 --- a/api/src/services/nova/novaTimeService.ts +++ b/api/src/services/nova/novaTimeService.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-return */ import { Client, ProtocolParameters } from "@iota/sdk-nova"; import { epochIndexToSlotIndexRangeConverter, diff --git a/api/src/services/nova/stats/novaStatsService.ts b/api/src/services/nova/stats/novaStatsService.ts index b0a4452bc..1082e747f 100644 --- a/api/src/services/nova/stats/novaStatsService.ts +++ b/api/src/services/nova/stats/novaStatsService.ts @@ -1,4 +1,3 @@ -// eslint-disable-next-line import/no-unresolved import { Client } from "@iota/sdk-nova"; import { BaseStatsService } from "./baseStatsService"; import { ServiceFactory } from "../../../factories/serviceFactory"; diff --git a/api/src/services/nova/validatorService.ts b/api/src/services/nova/validatorService.ts index 69d1d9598..a73eb4be1 100644 --- a/api/src/services/nova/validatorService.ts +++ b/api/src/services/nova/validatorService.ts @@ -1,6 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-return */ -/* eslint-disable @typescript-eslint/no-redundant-type-constituents */ import { Client, ValidatorResponse, CommitteeResponse } from "@iota/sdk-nova"; import cron from "node-cron"; import { ServiceFactory } from "../../factories/serviceFactory"; @@ -9,9 +6,9 @@ import { INetwork } from "../../models/db/INetwork"; /** * The collect validators interval cron expression. - * Every hour at 55 min 55 sec + * Every 10 minutes */ -const COLLECT_VALIDATORS_CRON = "55 55 * * * *"; +const COLLECT_VALIDATORS_CRON = "*/10 * * * *"; export class ValidatorService { /** diff --git a/api/src/services/stardust/feed/stardustFeed.ts b/api/src/services/stardust/feed/stardustFeed.ts index e013b3c2e..7fa10326f 100644 --- a/api/src/services/stardust/feed/stardustFeed.ts +++ b/api/src/services/stardust/feed/stardustFeed.ts @@ -1,4 +1,4 @@ -import { Block, Client, IBlockMetadata, MilestonePayload, Utils } from "@iota/sdk"; +import { Block, Client, IBlockMetadata, MilestonePayload, Utils } from "@iota/sdk-stardust"; import { ClassConstructor, plainToInstance } from "class-transformer"; import { ServiceFactory } from "../../../factories/serviceFactory"; import logger from "../../../logger"; diff --git a/api/src/services/stardust/nodeInfoService.ts b/api/src/services/stardust/nodeInfoService.ts index ee3b2f309..7cd2ca864 100644 --- a/api/src/services/stardust/nodeInfoService.ts +++ b/api/src/services/stardust/nodeInfoService.ts @@ -1,4 +1,4 @@ -import { INodeInfoBaseToken, IRent, Client } from "@iota/sdk"; +import { INodeInfoBaseToken, IRent, Client } from "@iota/sdk-stardust"; import cron from "node-cron"; import { StardustApiService } from "./stardustApiService"; import { NodeInfoError } from "../../errors/nodeInfoError"; diff --git a/api/src/services/stardust/stardustApiService.ts b/api/src/services/stardust/stardustApiService.ts index 51bb6d8d5..3469ad136 100644 --- a/api/src/services/stardust/stardustApiService.ts +++ b/api/src/services/stardust/stardustApiService.ts @@ -1,5 +1,4 @@ -/* eslint-disable no-warning-comments */ -import { OutputResponse, Client, IOutputsResponse, HexEncodedString, Utils, NftQueryParameter } from "@iota/sdk"; +import { OutputResponse, Client, IOutputsResponse, HexEncodedString, Utils, NftQueryParameter } from "@iota/sdk-stardust"; import { NodeInfoService } from "./nodeInfoService"; import { ServiceFactory } from "../../factories/serviceFactory"; import logger from "../../logger"; @@ -249,18 +248,21 @@ export class StardustApiService { public async basicOutputDetailsByAddress(addressBech32: string): Promise { let cursor: string | undefined; let outputIds: string[] = []; + const expiredIds = await this.basicExpiredOutputIdsByAddress(addressBech32); + const notClaimedIds = await this.basicNotClaimedOutputIdsByAddress(addressBech32); do { try { const outputIdsResponse = await this.client.basicOutputIds([{ address: addressBech32 }, { cursor: cursor ?? "" }]); - outputIds = outputIds.concat(outputIdsResponse.items); + outputIds = outputIds.concat(outputIdsResponse.items.filter((id) => !expiredIds.includes(id))); cursor = outputIdsResponse.cursor; } catch (e) { logger.error(`Fetching basic output ids failed. Cause: ${e}`); } } while (cursor); + outputIds = outputIds.concat(notClaimedIds); const outputResponses = await this.outputsDetails(outputIds); return { @@ -303,18 +305,21 @@ export class StardustApiService { public async nftOutputDetailsByAddress(addressBech32: string): Promise { let cursor: string | undefined; let outputIds: string[] = []; + const expiredIds = await this.nftExpiredOutputIdsByAddress(addressBech32); + const notClaimedIds = await this.nftNotClaimedOutputIdsByAddress(addressBech32); do { try { const outputIdsResponse = await this.client.nftOutputIds([{ address: addressBech32 }, { cursor: cursor ?? "" }]); - outputIds = outputIds.concat(outputIdsResponse.items); + outputIds = outputIds.concat(outputIdsResponse.items.filter((id) => !expiredIds.includes(id))); cursor = outputIdsResponse.cursor; } catch (e) { logger.error(`Fetching nft output ids failed. Cause: ${e}`); } } while (cursor); + outputIds = outputIds.concat(notClaimedIds); const outputResponses = await this.outputsDetails(outputIds); return { outputs: outputResponses, @@ -499,6 +504,116 @@ export class StardustApiService { return new SearchExecutor(this.network, new SearchQueryBuilder(query, this.network.bechHrp).build()).run(); } + /** + * Get the expired basic output ids for an address (outputs no longer owned by the address but by the expirationReturnAddress). + * @param addressBech32 The address in bech32 format. + * @returns The basic output ids. + */ + private async basicExpiredOutputIdsByAddress(addressBech32: string): Promise { + let cursor: string | undefined; + let outputIds: string[] = []; + const currentTimestamp = Math.floor(Date.now() / 1000); + do { + try { + const outputIdsResponse = await this.client.basicOutputIds([ + { address: addressBech32 }, + { expiresBefore: currentTimestamp }, + { cursor: cursor ?? "" }, + ]); + + outputIds = outputIds.concat(outputIdsResponse.items); + cursor = outputIdsResponse.cursor; + } catch (e) { + logger.error(`Fetching expired basic output ids failed. Cause: ${e}`); + } + } while (cursor); + + return outputIds; + } + + /** + * Get the expired ntf output ids for an address (outputs no longer owned by the address but by the expirationReturnAddress). + * @param addressBech32 The address in bech32 format. + * @returns The nft output ids. + */ + private async nftExpiredOutputIdsByAddress(addressBech32: string): Promise { + let cursor: string | undefined; + let outputIds: string[] = []; + const currentTimestamp = Math.floor(Date.now() / 1000); + do { + try { + const outputIdsResponse = await this.client.nftOutputIds([ + { address: addressBech32 }, + { expiresBefore: currentTimestamp }, + { cursor: cursor ?? "" }, + ]); + + outputIds = outputIds.concat(outputIdsResponse.items); + cursor = outputIdsResponse.cursor; + } catch (e) { + logger.error(`Fetching expired nft output ids failed. Cause: ${e}`); + } + } while (cursor); + + return outputIds; + } + + /** + * Get the not claimed basic output ids for an address (outputs owned by the expirationReturnAddress). + * @param expirationReturnAddress The address in bech32 format. + * @returns The nft output ids. + */ + private async basicNotClaimedOutputIdsByAddress(expirationReturnAddress: string): Promise { + let cursor: string | undefined; + let outputIds: string[] = []; + const currentTimestamp = Math.floor(Date.now() / 1000); + + do { + try { + const outputIdsResponse = await this.client.basicOutputIds([ + { expirationReturnAddress }, + { expiresBefore: currentTimestamp }, + { cursor: cursor ?? "" }, + ]); + + outputIds = outputIds.concat(outputIdsResponse.items); + cursor = outputIdsResponse.cursor; + } catch (e) { + logger.error(`Fetching not claimed nft output ids failed. Cause: ${e}`); + } + } while (cursor); + + return outputIds; + } + + /** + * Get the not claimed ntf output ids for an address (outputs owned by the expirationReturnAddress). + * @param expirationReturnAddress The address in bech32 format. + * @returns The nft output ids. + */ + private async nftNotClaimedOutputIdsByAddress(expirationReturnAddress: string): Promise { + let cursor: string | undefined; + let outputIds: string[] = []; + const currentTimestamp = Math.floor(Date.now() / 1000); + + do { + try { + const outputIdsResponse = await this.client.nftOutputIds([ + { expirationReturnAddress }, + { expiresBefore: currentTimestamp }, + { cursor: cursor ?? "" }, + ]); + + outputIds = outputIds.concat(outputIdsResponse.items); + cursor = outputIdsResponse.cursor; + } catch (e) { + logger.error(`Fetching not claimed nft output ids failed. Cause: ${e}`); + } + } while (cursor); + + return outputIds; + } + /** * Extension method which provides request methods for plugins. * @param basePluginPath The base path for the plugin eg indexer/v1/ . diff --git a/api/src/services/stardust/stats/stardustStatsService.ts b/api/src/services/stardust/stats/stardustStatsService.ts index 7de848839..e5577d879 100644 --- a/api/src/services/stardust/stats/stardustStatsService.ts +++ b/api/src/services/stardust/stats/stardustStatsService.ts @@ -1,4 +1,4 @@ -import { Client } from "@iota/sdk"; +import { Client } from "@iota/sdk-stardust"; import { BaseStatsService } from "./baseStatsService"; import { ServiceFactory } from "../../../factories/serviceFactory"; import logger from "../../../logger"; diff --git a/api/src/utils/legacy/legacyTangleHelper.ts b/api/src/utils/legacy/legacyTangleHelper.ts index ff90c53f0..0d3347ba1 100644 --- a/api/src/utils/legacy/legacyTangleHelper.ts +++ b/api/src/utils/legacy/legacyTangleHelper.ts @@ -41,9 +41,14 @@ export class LegacyTangleHelper { try { const client = new LegacyClient(network.provider, network.user, network.password); + let maxResults = limit || network.apiMaxResults; + if (maxResults > network.apiMaxResults) { + maxResults = network.apiMaxResults; + } + const response = await client.findTransactions({ ...findReq, - maxresults: 5000, + maxresults: maxResults, }); if (response?.txHashes && response.txHashes.length > 0) { @@ -51,7 +56,7 @@ export class LegacyTangleHelper { cursor.node = hashes.length; if (limit === undefined) { - cursor.hasMore = hashes.length === 5000; + cursor.hasMore = hashes.length === maxResults; } else { cursor.hasMore = hashes.length > limit; if (hashes.length > limit) { diff --git a/api/src/utils/nova/addressHelper.ts b/api/src/utils/nova/addressHelper.ts index 8566d8720..46c82a0ca 100644 --- a/api/src/utils/nova/addressHelper.ts +++ b/api/src/utils/nova/addressHelper.ts @@ -1,6 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-redundant-type-constituents */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { Address, AddressType, diff --git a/api/src/utils/nova/associatedOutputsHelper.ts b/api/src/utils/nova/associatedOutputsHelper.ts index 405532ebf..d79da8dd9 100644 --- a/api/src/utils/nova/associatedOutputsHelper.ts +++ b/api/src/utils/nova/associatedOutputsHelper.ts @@ -1,7 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-redundant-type-constituents */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ -/* eslint-disable @typescript-eslint/no-unsafe-return */ import { Client, OutputsResponse, diff --git a/api/src/utils/nova/novaTimeUtils.ts b/api/src/utils/nova/novaTimeUtils.ts index 248364a7f..d83459f76 100644 --- a/api/src/utils/nova/novaTimeUtils.ts +++ b/api/src/utils/nova/novaTimeUtils.ts @@ -1,6 +1,4 @@ /* eslint-disable no-bitwise */ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-return */ import { ProtocolParameters } from "@iota/sdk-nova"; // Note: genesisUnixTimestamp is the first second that falls into genesisSlot + 1 diff --git a/api/src/utils/nova/searchQueryBuilder.ts b/api/src/utils/nova/searchQueryBuilder.ts index d0568d372..1525ea6e9 100644 --- a/api/src/utils/nova/searchQueryBuilder.ts +++ b/api/src/utils/nova/searchQueryBuilder.ts @@ -1,5 +1,4 @@ /* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */ -/* eslint-disable import/no-unresolved */ import { AddressType, HexEncodedString } from "@iota/sdk-nova"; import { AddressHelper } from "./addressHelper"; import { IAddressDetails } from "../../models/api/nova/IAddressDetails"; diff --git a/api/src/utils/stardust/associatedOutputsHelper.ts b/api/src/utils/stardust/associatedOutputsHelper.ts index b5b736a0f..6674c9618 100644 --- a/api/src/utils/stardust/associatedOutputsHelper.ts +++ b/api/src/utils/stardust/associatedOutputsHelper.ts @@ -6,9 +6,9 @@ import { FoundryQueryParameter, NftQueryParameter, AddressType, -} from "@iota/sdk"; +} from "@iota/sdk-stardust"; import { ServiceFactory } from "../../factories/serviceFactory"; -import { AssociationType } from "../../models/api/stardust/IAssociationsResponse"; +import { AssociationType, IAssociation } from "../../models/api/stardust/IAssociationsResponse"; import { IBech32AddressDetails } from "../../models/api/stardust/IBech32AddressDetails"; import { INetwork } from "../../models/db/INetwork"; @@ -43,6 +43,15 @@ export class AssociatedOutputsHelper { ), ); + promises.push( + // Basic output -> owner address expired outputs + this.fetchAssociatedOutputIds( + async (query) => client.basicOutputIds(query), + [{ address }, { expiresBefore: Math.floor(Date.now() / 1000) }], + AssociationType.BASIC_ADDRESS_EXPIRED, + ), + ); + promises.push( // Basic output -> storage return address this.fetchAssociatedOutputIds( @@ -142,6 +151,15 @@ export class AssociatedOutputsHelper { ), ); + promises.push( + // Nft output -> owner address expired outputs + this.fetchAssociatedOutputIds( + async (query) => client.nftOutputIds(query), + [{ address }, { expiresBefore: Math.floor(Date.now() / 1000) }], + AssociationType.NFT_ADDRESS_EXPIRED, + ), + ); + promises.push( // Nft output -> storage return address this.fetchAssociatedOutputIds( @@ -181,6 +199,38 @@ export class AssociatedOutputsHelper { await Promise.all(promises); } + /** + * Retrieves the associations between output types and output IDs. + * @returns An array of associations. + */ + public getAssociations(): IAssociation[] { + const associations: IAssociation[] = []; + for (const [type, outputIds] of this.associationToOutputIds.entries()) { + if (type !== AssociationType.BASIC_ADDRESS_EXPIRED && type !== AssociationType.NFT_ADDRESS_EXPIRED) { + if ( + type === AssociationType.BASIC_ADDRESS && + this.associationToOutputIds.get(AssociationType.BASIC_ADDRESS_EXPIRED)?.length > 0 + ) { + // remove expired basic outputs from basic address associations if they exist + const expiredIds = this.associationToOutputIds.get(AssociationType.BASIC_ADDRESS_EXPIRED); + const filteredOutputIds = outputIds.filter((id) => !expiredIds?.includes(id)); + associations.push({ type, outputIds: filteredOutputIds.reverse() }); + } else if ( + type === AssociationType.NFT_ADDRESS && + this.associationToOutputIds.get(AssociationType.NFT_ADDRESS_EXPIRED)?.length > 0 + ) { + // remove expired nft outputs from nft address associations if they exist + const expiredIds = this.associationToOutputIds.get(AssociationType.NFT_ADDRESS_EXPIRED); + const filteredOutputIds = outputIds.filter((id) => !expiredIds?.includes(id)); + associations.push({ type, outputIds: filteredOutputIds.reverse() }); + } else { + associations.push({ type, outputIds: outputIds.reverse() }); + } + } + } + return associations; + } + /** * Generic helper function for fetching associated outputs. * @param fetch The function for the API call @@ -197,7 +247,15 @@ export class AssociatedOutputsHelper { do { try { - const response = typeof args === "string" ? await fetch(args) : await fetch({ ...args, cursor }); + let requestArgs: T = null; + if (typeof args === "string") { + requestArgs = args; + } else if (Array.isArray(args)) { + requestArgs = cursor ? ([...args, { cursor }] as T) : args; + } else { + requestArgs = { ...args, cursor }; + } + const response = await fetch(requestArgs); if (typeof response === "string") { const outputIds = associationToOutputIds.get(association); diff --git a/api/src/utils/stardust/searchQueryBuilder.ts b/api/src/utils/stardust/searchQueryBuilder.ts index 5443db78a..6831d9b91 100644 --- a/api/src/utils/stardust/searchQueryBuilder.ts +++ b/api/src/utils/stardust/searchQueryBuilder.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */ import { Bech32Helper } from "@iota/iota.js-chrysalis"; -import { AddressType, HexEncodedString, Utils } from "@iota/sdk"; +import { AddressType, HexEncodedString, Utils } from "@iota/sdk-stardust"; import { Converter } from "../convertUtils"; import { HexHelper } from "../hexHelper"; diff --git a/api/src/utils/stardust/utils.ts b/api/src/utils/stardust/utils.ts index c79a594a4..330cbf880 100644 --- a/api/src/utils/stardust/utils.ts +++ b/api/src/utils/stardust/utils.ts @@ -1,4 +1,4 @@ -import { Block, Client, CommonOutput, IOutputsResponse, MilestonePayload, Utils } from "@iota/sdk"; +import { Block, Client, CommonOutput, IOutputsResponse, MilestonePayload, Utils } from "@iota/sdk-stardust"; import bigInt, { BigInteger } from "big-integer"; /** diff --git a/client/Dockerfile b/client/Dockerfile index 146215714..ab398864e 100644 --- a/client/Dockerfile +++ b/client/Dockerfile @@ -11,15 +11,7 @@ RUN apt-get update && apt-get install -y \ WORKDIR /usr/src/app # Copy everything from current Folder -# COPY . ./ - -# Copy iota-sdk-nova deps REMOVE THIS for prod -# Get Rust -RUN curl https://sh.rustup.rs -sSf | bash -s -- -y -ENV PATH="${PATH}:/root/.cargo/bin" - -COPY ./client ./ -COPY ./iota-sdk/ ../iota-sdk/ +COPY . ./ # A minimal NGINX configuration RUN echo 'server {\ @@ -40,4 +32,4 @@ RUN npm run build EXPOSE 80 # Serve the prod build -CMD ["nginx", "-g", "daemon off;"] +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/client/package-lock.json b/client/package-lock.json index 699b7f3a1..b51fd320d 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1,12 +1,12 @@ { "name": "explorer-client", - "version": "3.3.6", + "version": "3.3.8-rc.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "explorer-client", - "version": "3.3.6", + "version": "3.3.8-rc.2", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -18,8 +18,8 @@ "@iota/iota.js": "^1.8.6", "@iota/mam-legacy": "github:iotaledger/mam.js#fddc95f60539b9a31a4db1b5b56e0dedb8994883", "@iota/mam.js": "^1.6.2", - "@iota/sdk-wasm": "1.1.1", - "@iota/sdk-wasm-nova": "../iota-sdk/bindings/wasm", + "@iota/sdk-wasm-nova": "npm:@iota/sdk-wasm@^2.0.0-alpha.3", + "@iota/sdk-wasm-stardust": "npm:@iota/sdk-wasm@1.1.1", "@iota/util.js": "^1.8.6", "classnames": "^2.3.1", "d3-array": "^3.2.1", @@ -31,7 +31,7 @@ "d3-shape": "^3.1.0", "d3-time": "^3.1.0", "d3-time-format": "^4.1.0", - "express": "^4.18.1", + "express": "^4.19.2", "jsonschema": "^1.4.1", "moment": "^2.29.4", "qr.js": "0.0.0", @@ -88,7 +88,7 @@ "stylelint-config-sass-guidelines": "^9.0.1", "stylelint-config-standard-scss": "^5.0.0", "typescript": "^4.9.3", - "vite": "^4.5.2", + "vite": "^4.5.3", "vite-aliases": "^0.11.3", "vite-plugin-node-polyfills": "^0.16.0", "vite-plugin-svgr": "^4.2.0", @@ -100,7 +100,8 @@ }, "../iota-sdk/bindings/wasm": { "name": "@iota/sdk-wasm-nova", - "version": "2.0.0-alpha.1", + "version": "1.1.3", + "extraneous": true, "license": "Apache-2.0", "dependencies": { "class-transformer": "^0.5.1", @@ -847,6 +848,7 @@ "node_modules/@iota/sdk-wasm": { "version": "1.1.1", "license": "Apache-2.0", + "peer": true, "dependencies": { "class-transformer": "^0.5.1", "node-fetch": "^2.6.7", @@ -863,12 +865,76 @@ } }, "node_modules/@iota/sdk-wasm-nova": { - "resolved": "../iota-sdk/bindings/wasm", - "link": true + "name": "@iota/sdk-wasm", + "version": "2.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@iota/sdk-wasm/-/sdk-wasm-2.0.0-alpha.3.tgz", + "integrity": "sha512-prZbd8kc/qsSUpmPgMD4yYr4kZD4fDC03f/2bUd6xVyOU0QwEY0Y56PMwMIARGTq27O8dUxwzNiTD3t+yQPW7w==", + "dependencies": { + "class-transformer": "^0.5.1", + "node-fetch": "^2.6.7", + "reflect-metadata": "^0.1.13" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/@iota/sdk-wasm-stardust": { + "name": "@iota/sdk-wasm", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@iota/sdk-wasm/-/sdk-wasm-1.1.1.tgz", + "integrity": "sha512-PoGo4SaQA20oY1hBvNPl10yaWoGh786LklVwKLfGiv/Hw86+bhuHOdNqP4VX1eNa2HmCiP5tPgkEtQj8WvGxIQ==", + "dependencies": { + "class-transformer": "^0.5.1", + "node-fetch": "^2.6.7", + "qs": "^6.9.7", + "reflect-metadata": "^0.1.13", + "semver": "^7.5.2", + "text-encoding": "^0.7.0" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/@iota/sdk-wasm-stardust/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@iota/sdk-wasm-stardust/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@iota/sdk-wasm-stardust/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/@iota/sdk-wasm/node_modules/lru-cache": { "version": "6.0.0", "license": "ISC", + "peer": true, "dependencies": { "yallist": "^4.0.0" }, @@ -879,6 +945,7 @@ "node_modules/@iota/sdk-wasm/node_modules/semver": { "version": "7.5.4", "license": "ISC", + "peer": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -891,7 +958,8 @@ }, "node_modules/@iota/sdk-wasm/node_modules/yallist": { "version": "4.0.0", - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/@iota/signing": { "version": "1.0.0-beta.30", @@ -2497,11 +2565,12 @@ "license": "MIT" }, "node_modules/body-parser": { - "version": "1.20.1", - "license": "MIT", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -2509,7 +2578,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -3177,8 +3246,9 @@ "license": "MIT" }, "node_modules/cookie": { - "version": "0.5.0", - "license": "MIT", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "engines": { "node": ">= 0.6" } @@ -4774,15 +4844,16 @@ } }, "node_modules/express": { - "version": "4.18.2", - "license": "MIT", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -8398,8 +8469,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "license": "MIT", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -10389,9 +10461,9 @@ } }, "node_modules/vite": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", - "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz", + "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==", "dev": true, "license": "MIT", "dependencies": { @@ -11691,6 +11763,7 @@ }, "@iota/sdk-wasm": { "version": "1.1.1", + "peer": true, "requires": { "class-transformer": "^0.5.1", "fsevents": "^2.3.2", @@ -11703,45 +11776,70 @@ "dependencies": { "lru-cache": { "version": "6.0.0", + "peer": true, "requires": { "yallist": "^4.0.0" } }, "semver": { "version": "7.5.4", + "peer": true, "requires": { "lru-cache": "^6.0.0" } }, "yallist": { - "version": "4.0.0" + "version": "4.0.0", + "peer": true } } }, "@iota/sdk-wasm-nova": { - "version": "file:../iota-sdk/bindings/wasm", + "version": "npm:@iota/sdk-wasm@2.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@iota/sdk-wasm/-/sdk-wasm-2.0.0-alpha.3.tgz", + "integrity": "sha512-prZbd8kc/qsSUpmPgMD4yYr4kZD4fDC03f/2bUd6xVyOU0QwEY0Y56PMwMIARGTq27O8dUxwzNiTD3t+yQPW7w==", "requires": { - "@types/jest": "^27.5.2", - "@typescript-eslint/eslint-plugin": "^5.31.0", - "@typescript-eslint/parser": "^5.31.0", "class-transformer": "^0.5.1", - "copy-webpack-plugin": "^11.0.0", - "dotenv": "^16.0.1", - "eslint": "^8.20.0", - "eslint-config-prettier": "^8.5.0", - "fs-extra": "^10.1.0", "fsevents": "^2.3.2", - "jest": "^27.5.1", - "jest-matcher-utils": "^28.1.3", "node-fetch": "^2.6.7", - "prettier": "^2.7.1", + "reflect-metadata": "^0.1.13" + } + }, + "@iota/sdk-wasm-stardust": { + "version": "npm:@iota/sdk-wasm@1.1.1", + "resolved": "https://registry.npmjs.org/@iota/sdk-wasm/-/sdk-wasm-1.1.1.tgz", + "integrity": "sha512-PoGo4SaQA20oY1hBvNPl10yaWoGh786LklVwKLfGiv/Hw86+bhuHOdNqP4VX1eNa2HmCiP5tPgkEtQj8WvGxIQ==", + "requires": { + "class-transformer": "^0.5.1", + "fsevents": "^2.3.2", + "node-fetch": "^2.6.7", + "qs": "^6.9.7", "reflect-metadata": "^0.1.13", - "ts-jest": "^27.1.5", - "ts-node": "^10.9.1", - "typedoc": "^0.24.0", - "typedoc-plugin-markdown": "^3.13.4", - "typescript": "^4.7.4", - "wasm-opt": "^1.4.0" + "semver": "^7.5.2", + "text-encoding": "^0.7.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } } }, "@iota/signing": { @@ -12840,10 +12938,12 @@ "dev": true }, "body-parser": { - "version": "1.20.1", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "requires": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -12851,7 +12951,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -13275,7 +13375,9 @@ "dev": true }, "cookie": { - "version": "0.5.0" + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==" }, "cookie-signature": { "version": "1.0.6" @@ -14343,14 +14445,16 @@ } }, "express": { - "version": "4.18.2", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -16624,7 +16728,9 @@ "version": "1.2.1" }, "raw-body": { - "version": "2.5.1", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "requires": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -17964,9 +18070,9 @@ "version": "1.1.2" }, "vite": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", - "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz", + "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==", "dev": true, "requires": { "esbuild": "^0.18.10", diff --git a/client/package.json b/client/package.json index 4d3e0eb72..6cf566abb 100644 --- a/client/package.json +++ b/client/package.json @@ -1,7 +1,7 @@ { "name": "explorer-client", "description": "Tangle Explorer UI", - "version": "3.3.6", + "version": "3.3.8-rc.2", "author": "Martyn Janes ", "type": "module", "repository": { @@ -28,8 +28,8 @@ "@iota/iota.js": "^1.8.6", "@iota/mam-legacy": "github:iotaledger/mam.js#fddc95f60539b9a31a4db1b5b56e0dedb8994883", "@iota/mam.js": "^1.6.2", - "@iota/sdk-wasm": "1.1.1", - "@iota/sdk-wasm-nova": "../iota-sdk/bindings/wasm", + "@iota/sdk-wasm-stardust": "npm:@iota/sdk-wasm@1.1.1", + "@iota/sdk-wasm-nova": "npm:@iota/sdk-wasm@^2.0.0-alpha.3", "@iota/util.js": "^1.8.6", "classnames": "^2.3.1", "d3-array": "^3.2.1", @@ -41,7 +41,7 @@ "d3-shape": "^3.1.0", "d3-time": "^3.1.0", "d3-time-format": "^4.1.0", - "express": "^4.18.1", + "express": "^4.19.2", "jsonschema": "^1.4.1", "moment": "^2.29.4", "qr.js": "0.0.0", @@ -98,7 +98,7 @@ "stylelint-config-sass-guidelines": "^9.0.1", "stylelint-config-standard-scss": "^5.0.0", "typescript": "^4.9.3", - "vite": "^4.5.2", + "vite": "^4.5.3", "vite-aliases": "^0.11.3", "vite-plugin-node-polyfills": "^0.16.0", "vite-plugin-svgr": "^4.2.0", @@ -115,7 +115,6 @@ ], "lint-staged": { "src/**/*.{ts,js,tsx,jsx}": "eslint --cache --fix", - "src/**/*.{ts,js,tsx,jsx,scss,css}": "prettier --ignore-path=.prettierignore --write", - "src/**/*.scss": "stylelint --fix" + "src/**/*.{ts,js,tsx,jsx,scss,css}": "prettier --ignore-path=.prettierignore --write" } } \ No newline at end of file diff --git a/client/src/app/App.scss b/client/src/app/App.scss index e98b59071..c80c0b24b 100644 --- a/client/src/app/App.scss +++ b/client/src/app/App.scss @@ -34,3 +34,16 @@ } } } + +.fixed-center-page { + background: var(--body-background); + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} diff --git a/client/src/app/App.tsx b/client/src/app/App.tsx index ad497c363..66de60d32 100644 --- a/client/src/app/App.tsx +++ b/client/src/app/App.tsx @@ -12,6 +12,8 @@ import buildAppRoutes from "./routes"; import { ServiceFactory } from "~factories/serviceFactory"; import { isShimmerUiTheme } from "~helpers/networkHelper"; import { scrollToTop } from "~helpers/pageUtils"; +import { useWasmLoader } from "~helpers/hooks/useWasmLoader"; +import { useInitServicesLoader } from "~helpers/hooks/useInitServicesLoader"; import { INetwork } from "~models/config/INetwork"; import { MAINNET } from "~models/config/networkType"; import { IOTA_UI, IOTA2_UI, SHIMMER_UI } from "~models/config/uiTheme"; @@ -19,6 +21,7 @@ import { NOVA, STARDUST } from "~models/config/protocolVersion"; import { NetworkService } from "~services/networkService"; import { NodeInfoService as NodeInfoServiceStardust } from "~services/stardust/nodeInfoService"; import "./App.scss"; +import Spinner from "~app/components/Spinner"; const App: React.FC> = ({ history, @@ -28,24 +31,29 @@ const App: React.FC> = ({ }) => { const [networks, setNetworks] = useState([]); const [networksLoaded, setNetworksLoaded] = useState(false); + const { isServicesLoaded } = useInitServicesLoader(); useEffect(() => { + if (!isServicesLoaded) return; + const networkService = ServiceFactory.get("network"); const networkConfigs = networkService.networks(); setNetworks(networkConfigs); setNetworksLoaded(true); - }, []); + }, [isServicesLoaded]); useEffect(() => { if (networksLoaded && !network) { - network = networks.length > 0 ? networks[0].network : MAINNET; + network = networks.find((n) => n.network === MAINNET)?.network ?? networks[0]?.network ?? MAINNET; history.replace(`/${network}`); } }, [networksLoaded]); const networkConfig = networks.find((n) => n.network === network); const protocolVersion = networkConfig?.protocolVersion ?? STARDUST; + const { isMainWasmLoaded } = useWasmLoader(isServicesLoaded, networksLoaded, networkConfig?.protocolVersion); + const identityResolverEnabled = protocolVersion !== STARDUST && (networkConfig?.identityResolverEnabled ?? true); const currentNetworkName = networkConfig?.network; const isShimmer = isShimmerUiTheme(networkConfig?.uiTheme); @@ -74,6 +82,14 @@ const App: React.FC> = ({ break; } + if (!networksLoaded || !isMainWasmLoaded || !isServicesLoaded) { + return ( +
+ +
+ ); + } + const routes = buildAppRoutes(networkConfig?.protocolVersion ?? "", withNetworkContext); const pages = getPages(networkConfig, networks); diff --git a/client/src/app/AppUtils.tsx b/client/src/app/AppUtils.tsx index a4e9cbf08..959576e86 100644 --- a/client/src/app/AppUtils.tsx +++ b/client/src/app/AppUtils.tsx @@ -10,6 +10,7 @@ import { NodeInfoService as NodeInfoServiceNova } from "~services/nova/nodeInfoS import { MANA_INFO_DEFAULT, useNetworkInfoNova } from "~/helpers/nova/networkInfo"; import { NavigationRoute } from "./lib/interfaces"; import { InfoResponse } from "@iota/sdk-wasm-nova/web"; +import { NOVA, STARDUST } from "~/models/config/protocolVersion"; export const networkContextWrapper = (currentNetwork: string | undefined, nodeInfo: IStardustNodeInfo | null, uiTheme: Theme | undefined) => function withNetworkContext(wrappedComponent: ReactNode) { @@ -32,7 +33,11 @@ export const networkContextWrapper = (currentNetwork: string | undefined, nodeIn export const getPages = (currentNetwork: INetwork | undefined, networks: INetwork[]): NavigationRoute[] => { const hasNetworks = networks.length > 0 && currentNetwork !== undefined; - const { network, hasStatisticsSupport } = currentNetwork ?? { network: "", hasStatisticsSupport: false }; + const { network, protocolVersion, hasStatisticsSupport } = currentNetwork ?? { network: "", hasStatisticsSupport: false }; + + const isStardust = hasNetworks && currentNetwork.protocolVersion === STARDUST; + const isNova = hasNetworks && currentNetwork.protocolVersion === NOVA; + const isStardustOrNova = isStardust || isNova; const routes: NavigationRoute[] = [ { @@ -43,21 +48,21 @@ export const getPages = (currentNetwork: INetwork | undefined, networks: INetwor { label: "Visualizer", url: `/${network}/visualizer/`, - disabled: !hasNetworks, + disabled: !hasNetworks || !isStardustOrNova, }, { label: "Statistics", url: `/${network}/statistics/`, - disabled: !hasStatisticsSupport || !hasNetworks, + disabled: !hasNetworks || !hasStatisticsSupport || !isStardustOrNova, }, { label: "Validators", url: `/${network}/validators/`, - disabled: !hasNetworks || network !== ALPHANET, + disabled: !hasNetworks || protocolVersion !== NOVA, }, { label: "Utilities", - disabled: network !== CHRYSALIS_MAINNET || !hasNetworks, + disabled: !hasNetworks || network !== CHRYSALIS_MAINNET, routes: [ { label: "Streams v0", url: `/${network}/streams/0/` }, { @@ -69,6 +74,7 @@ export const getPages = (currentNetwork: INetwork | undefined, networks: INetwor }, { label: "EVM", + disabled: !hasNetworks || !isStardust, routes: [ { label: "ShimmerEVM Explorer", diff --git a/client/src/app/components/DataToggle.tsx b/client/src/app/components/DataToggle.tsx index 375b9aba1..4ad7b9bf5 100644 --- a/client/src/app/components/DataToggle.tsx +++ b/client/src/app/components/DataToggle.tsx @@ -1,4 +1,4 @@ -import { HexEncodedString } from "@iota/sdk-wasm/web"; +import { HexEncodedString } from "@iota/sdk-wasm-stardust/web"; import classNames from "classnames"; import React, { useEffect, useState } from "react"; import CopyButton from "./CopyButton"; diff --git a/client/src/app/components/FiatValue.tsx b/client/src/app/components/FiatValue.tsx index 6cd8bd58b..c8e8a0239 100644 --- a/client/src/app/components/FiatValue.tsx +++ b/client/src/app/components/FiatValue.tsx @@ -1,4 +1,4 @@ -import { INodeInfoBaseToken } from "@iota/sdk-wasm/web"; +import { INodeInfoBaseToken } from "@iota/sdk-wasm-stardust/web"; import React, { ReactNode } from "react"; import Currency from "./Currency"; import { FiatValueProps } from "./FiatValueProps"; diff --git a/client/src/app/components/NetworkSwitcher.scss b/client/src/app/components/NetworkSwitcher.scss index 6667f070f..8cdb2e8ed 100644 --- a/client/src/app/components/NetworkSwitcher.scss +++ b/client/src/app/components/NetworkSwitcher.scss @@ -23,6 +23,15 @@ justify-content: center; font-family: $metropolis; + .icon { + margin-left: 12px; + + span { + transition: transform 0.2s ease; + color: var(--header-icon-color); + } + } + &.opened { .icon { span { @@ -34,6 +43,10 @@ .network--switcher__dropdown { text-align: center; + @include desktop-down { + width: 100%; + } + .label { @include font-size(16px, 18px); @@ -50,19 +63,6 @@ letter-spacing: 0.15em; text-transform: uppercase; } - - @include desktop-down { - width: 100%; - } - } - - .icon { - margin-left: 12px; - - span { - transition: transform 0.2s ease; - color: var(--header-icon-color); - } } } } @@ -91,7 +91,8 @@ } &.opened { - max-height: 1000px; + max-height: 80vh; + overflow-y: scroll; @include desktop-down { top: $navbar-height-mobile * 2; @@ -112,6 +113,7 @@ } } + /* stylelint-disable max-nesting-depth, selector-max-compound-selectors */ .network { display: flex; flex-direction: row; @@ -129,8 +131,20 @@ border-radius: 12px; cursor: pointer; + .network--icon { + min-width: 64px; + height: 64px; + border-radius: 8px; + background: $gray-2; + background: var(--header-svg-bg); + + svg path { + fill: var(--header-icon-color); + } + } + &.selected { - background: rgba(20, 202, 191, 0.08); + background: rgb(20 202 191 / 8%); .network--icon { background: $mint-green-6; @@ -145,41 +159,31 @@ background: var(--light-bg); } - .network--icon { - min-width: 64px; - height: 64px; - border-radius: 8px; - background: $gray-2; - background: var(--header-svg-bg); - - svg path { - fill: var(--header-icon-color); - } - } - .network--content { margin-left: 24px; .label { + @include font-size(16px, 24px); + color: var(--body-color); font-family: $metropolis; font-weight: 600; letter-spacing: 0.01em; - - @include font-size(16px, 24px); } .protocol { + @include font-size(12px, 18px); + color: var(--expanded-color); font-family: $inter; font-weight: 500; letter-spacing: 0.5px; - - @include font-size(12px, 18px); } } } } } + + /* stylelint-enable max-nesting-depth, selector-max-compound-selectors */ } } diff --git a/client/src/app/components/NetworkSwitcher.tsx b/client/src/app/components/NetworkSwitcher.tsx index 5047882ab..4203dc938 100644 --- a/client/src/app/components/NetworkSwitcher.tsx +++ b/client/src/app/components/NetworkSwitcher.tsx @@ -2,10 +2,11 @@ import classNames from "classnames"; import React, { Component, ReactNode } from "react"; import DevnetIcon from "~assets/devnet.svg?react"; import MainnetIcon from "~assets/mainnet.svg?react"; +import ShimmerIcon from "~assets/shimmer-logo-header.svg?react"; import { NetworkSwitcherProps } from "./NetworkSwitcherProps"; import { getNetworkOrder } from "~helpers/networkHelper"; -import { MAINNET } from "~models/config/networkType"; import { CHRYSALIS, LEGACY, NOVA, STARDUST } from "~models/config/protocolVersion"; +import { MAINNET, SHIMMER, NetworkType } from "~models/config/networkType"; import "./NetworkSwitcher.scss"; const PROTOCOL_VERIONS_TO_LABEL = { @@ -19,6 +20,22 @@ const PROTOCOL_VERIONS_TO_LABEL = { * Component which will show the switcher. */ class NetworkSwitcher extends Component { + /** + * Get the appropriate icon based on the network type. + * @param networkType The network type. + * @returns The icon component. + */ + getIcon(networkType: NetworkType) { + switch (networkType) { + case MAINNET: + return ; + case SHIMMER: + return ; + default: + return ; + } + } + /** * Render the component. * @returns The node to render. @@ -56,9 +73,7 @@ class NetworkSwitcher extends Component { className={classNames("network--card row middle", { selected: network.label === label })} onClick={() => onChange(network.network)} > -
- {network.network === MAINNET ? : } -
+
{this.getIcon(network.network)}
{network.label}
{PROTOCOL_VERIONS_TO_LABEL[network.protocolVersion]}
diff --git a/client/src/app/components/chrysalis/InclusionState.tsx b/client/src/app/components/chrysalis/InclusionState.tsx index 42951b9de..610d60dc1 100644 --- a/client/src/app/components/chrysalis/InclusionState.tsx +++ b/client/src/app/components/chrysalis/InclusionState.tsx @@ -1,4 +1,4 @@ -import { LedgerInclusionState } from "@iota/sdk-wasm/web"; +import { LedgerInclusionState } from "@iota/sdk-wasm-stardust/web"; import React, { Component, ReactNode } from "react"; interface InclusionStateProps { diff --git a/client/src/app/components/nova/ContextInputView.tsx b/client/src/app/components/nova/ContextInputView.tsx index e9e5f1022..c4e94c553 100644 --- a/client/src/app/components/nova/ContextInputView.tsx +++ b/client/src/app/components/nova/ContextInputView.tsx @@ -35,7 +35,7 @@ const ContextInputView: React.FC = ({ contextInput }) =>
Account
- +
); diff --git a/client/src/app/components/nova/OutputView.scss b/client/src/app/components/nova/OutputView.scss index 9050a83cc..d5b23291c 100644 --- a/client/src/app/components/nova/OutputView.scss +++ b/client/src/app/components/nova/OutputView.scss @@ -4,6 +4,16 @@ @import "../../../scss/fonts"; .output-page { + .card--content__account { + width: 100%; + display: flex; + justify-content: space-between; + + @include phone-down { + flex-direction: column; + } + } + .card--content__output { padding: 0 30px; margin-bottom: 20px; @@ -15,10 +25,14 @@ .card--value.card-header--wrapper { width: 100%; display: flex; - margin-bottom: 0px; + margin-bottom: 0; height: 32px; align-items: center; + @include tablet-down { + height: auto; + } + .output-header { display: flex; width: 100%; @@ -33,7 +47,7 @@ white-space: nowrap; a { - margin-right: 0px; + margin-right: 0; } .highlight { @@ -67,6 +81,10 @@ color: #fec900; font-size: 18px; + @include phone-down { + display: none; + } + &.expired { color: #ff4800; } @@ -74,10 +92,6 @@ @media (min-width: #{768px}) and (max-width: #{820px}) { display: none; } - - @include phone-down { - display: none; - } } .left-border { @@ -113,9 +127,11 @@ .tooltip .wrap { width: 230px !important; + .arrow { left: 8px !important; margin-left: 0 !important; + &--down { top: 95%; } @@ -125,6 +141,7 @@ &--above { .tooltip .wrap { top: -416%; + .arrow { top: 94%; } diff --git a/client/src/app/components/nova/OutputView.tsx b/client/src/app/components/nova/OutputView.tsx index 405120607..82edd8268 100644 --- a/client/src/app/components/nova/OutputView.tsx +++ b/client/src/app/components/nova/OutputView.tsx @@ -99,42 +99,46 @@ const OutputView: React.FC = ({ outputId, output, showCopyAmoun >
-
- -
- ( - {isLinksDisabled ? ( -
- {outputIdTransactionPart} - {outputIdIndexPart} +
+
+ +
+ ( + {isLinksDisabled ? ( +
+ {outputIdTransactionPart} + {outputIdIndexPart} +
+ ) : ( + + {outputIdTransactionPart} + {outputIdIndexPart} + + )} + ) + +
+ {specialUnlockCondition} +
+
+ {showCopyAmount && ( +
+ { + setIsFormattedBalance(!isFormattedBalance); + e.stopPropagation(); + }} + > + {formatAmount(output.amount, tokenInfo, !isFormattedBalance)} +
- ) : ( - - {outputIdTransactionPart} - {outputIdIndexPart} - )} - ) - + {showCopyAmount && }
- {specialUnlockCondition}
- {showCopyAmount && ( -
- { - setIsFormattedBalance(!isFormattedBalance); - e.stopPropagation(); - }} - > - {formatAmount(output.amount, tokenInfo, !isFormattedBalance)} - -
- )} - {showCopyAmount && }
); @@ -376,7 +380,6 @@ function getSpecialUnlockConditionContent( ); } else if (unlockCondition.type === UnlockConditionType.Expiration) { const expirationUnlockCondition = unlockCondition as ExpirationUnlockCondition; - // @ts-expect-error The ACTUAL runtime field is 'slot', not 'slotIndex'. https://github.com/iotaledger/iota-sdk/issues/2217 const eucSlot = expirationUnlockCondition.slot; const slotTimeRange = slotIndexToUnixTimeRange ? slotIndexToUnixTimeRange(eucSlot) : null; const time = slotTimeRange ? DateHelper.format(DateHelper.milliseconds(slotTimeRange?.from)) : null; @@ -388,12 +391,12 @@ function getSpecialUnlockConditionContent( ); } else if (unlockCondition.type === UnlockConditionType.Timelock) { const timelockUnlockCondition = unlockCondition as TimelockUnlockCondition; - const slotTimeRange = slotIndexToUnixTimeRange ? slotIndexToUnixTimeRange(timelockUnlockCondition.slotIndex) : null; + const slotTimeRange = slotIndexToUnixTimeRange ? slotIndexToUnixTimeRange(timelockUnlockCondition.slot) : null; const time = slotTimeRange ? DateHelper.format(DateHelper.milliseconds(slotTimeRange?.from)) : null; return ( Timelock Unlock Condition{isExpiredOrTimeLocked ? " (TimeLocked)" : ""}
- {time ? Time: {time} : Slot: {timelockUnlockCondition.slotIndex}} + {time ? Time: {time} : Slot: {timelockUnlockCondition.slot}}
); } diff --git a/client/src/app/components/nova/PageDataRow.tsx b/client/src/app/components/nova/PageDataRow.tsx new file mode 100644 index 000000000..5780d4dac --- /dev/null +++ b/client/src/app/components/nova/PageDataRow.tsx @@ -0,0 +1,43 @@ +import React, { useState } from "react"; +import classNames from "classnames"; +import TruncatedId from "../stardust/TruncatedId"; +import { BaseTokenResponse } from "@iota/sdk-wasm-nova/web"; +import { formatAmount } from "~/helpers/stardust/valueFormatHelper"; + +export interface IPageDataRow { + label: string; + value?: string | number; + highlight?: boolean; + truncatedId?: { + id: string; + link?: string; + showCopyButton?: boolean; + }; + tokenInfo?: BaseTokenResponse; +} +const PageDataRow = ({ label, value, truncatedId, highlight, tokenInfo }: IPageDataRow): React.JSX.Element => { + const [isFormatBalance, setIsFormatBalance] = useState(true); + + const renderValue = () => { + if (truncatedId) { + return ; + } else if (tokenInfo && value) { + return ( + setIsFormatBalance(!isFormatBalance)} className="pointer margin-r-5"> + {formatAmount(value ?? 0, tokenInfo, isFormatBalance)} + + ); + } else { + return value; + } + }; + + return ( +
+
{label}
+
{renderValue()}
+
+ ); +}; + +export default PageDataRow; diff --git a/client/src/app/components/nova/UnlockConditionView.tsx b/client/src/app/components/nova/UnlockConditionView.tsx index 873bd59e9..3dd0ab496 100644 --- a/client/src/app/components/nova/UnlockConditionView.tsx +++ b/client/src/app/components/nova/UnlockConditionView.tsx @@ -48,22 +48,18 @@ const UnlockConditionView: React.FC = ({ unlockConditi
)} - {/** @ts-expect-error The ACTUAL runtime field is 'slot', not 'slotIndex'. https://github.com/iotaledger/iota-sdk/issues/2217 */} {unlockCondition.type === UnlockConditionType.Timelock && (unlockCondition as TimelockUnlockCondition).slot && (
Slot index
- {/** @ts-expect-error The ACTUAL runtime field is 'slot', not 'slotIndex'. https://github.com/iotaledger/iota-sdk/issues/2217 */}
{(unlockCondition as TimelockUnlockCondition).slot}
)} {unlockCondition.type === UnlockConditionType.Expiration && ( - {/** @ts-expect-error The ACTUAL runtime field is 'slot', not 'slotIndex'. https://github.com/iotaledger/iota-sdk/issues/2217 */} {(unlockCondition as ExpirationUnlockCondition).slot && (
Slot index
- {/** @ts-expect-error The ACTUAL runtime field is 'slot', not 'slotIndex'. https://github.com/iotaledger/iota-sdk/issues/2217 */}
{(unlockCondition as ExpirationUnlockCondition).slot}
)} diff --git a/client/src/app/components/nova/block/section/TransactionMetadataSection.tsx b/client/src/app/components/nova/block/section/TransactionMetadataSection.tsx index 790401523..46628bd3f 100644 --- a/client/src/app/components/nova/block/section/TransactionMetadataSection.tsx +++ b/client/src/app/components/nova/block/section/TransactionMetadataSection.tsx @@ -84,10 +84,7 @@ const TransactionMetadataSection: React.FC = ({ return (
- +
, Add this._tangleCacheService = ServiceFactory.get(`tangle-cache-${LEGACY}`); this._settingsService = ServiceFactory.get("settings"); + const networkService = ServiceFactory.get("network"); + const network: INetwork = (props.match.params.network && networkService.get(props.match.params.network)) || networkConfigDefault; + let address; let checksum; if ( @@ -55,6 +60,7 @@ class Address extends AsyncComponent, Add } this.state = { + networkConfig: network, statusBusy: 0, status: "Finding transactions...", formatFull: false, @@ -93,7 +99,7 @@ class Address extends AsyncComponent, Add this.props.match.params.network, "address", this.props.match.params.address, - 250, + this.state.networkConfig.apiMaxResults, ); let status = ""; diff --git a/client/src/app/routes/legacy/AddressState.ts b/client/src/app/routes/legacy/AddressState.ts index 43ebf83c6..edcb24528 100644 --- a/client/src/app/routes/legacy/AddressState.ts +++ b/client/src/app/routes/legacy/AddressState.ts @@ -1,7 +1,13 @@ +import { INetwork } from "~/models/config/INetwork"; import { ICachedTransaction } from "~models/api/ICachedTransaction"; import { ITransactionsCursor } from "~models/api/legacy/ITransactionsCursor"; export interface AddressState { + /** + * The name of the network. + */ + networkConfig: INetwork; + /** * The address. */ diff --git a/client/src/app/routes/legacy/Bundle.tsx b/client/src/app/routes/legacy/Bundle.tsx index 581854439..70117b8de 100644 --- a/client/src/app/routes/legacy/Bundle.tsx +++ b/client/src/app/routes/legacy/Bundle.tsx @@ -8,8 +8,10 @@ import { DateHelper } from "~helpers/dateHelper"; import { TrytesHelper } from "~helpers/trytesHelper"; import { ICachedTransaction } from "~models/api/ICachedTransaction"; import { LEGACY } from "~models/config/protocolVersion"; +import { INetwork, networkConfigDefault } from "~models/config/INetwork"; import { ConfirmationState } from "~models/confirmationState"; import { LegacyTangleCacheService } from "~services/legacy/legacyTangleCacheService"; +import { NetworkService } from "~services/networkService"; import Confirmation from "../../components/Confirmation"; import CopyButton from "../../components/CopyButton"; import Currency from "../../components/Currency"; @@ -34,12 +36,16 @@ class Bundle extends Currency, BundleState this._tangleCacheService = ServiceFactory.get(`tangle-cache-${LEGACY}`); + const networkService = ServiceFactory.get("network"); + const network: INetwork = (props.match.params.network && networkService.get(props.match.params.network)) || networkConfigDefault; + let bundle; if (this.props.match.params.bundle.length === 81 && TrytesHelper.isTrytes(this.props.match.params.bundle)) { bundle = props.match.params.bundle; } this.state = { + networkConfig: network, statusBusy: true, status: "Finding bundle transactions...", bundle, @@ -62,6 +68,7 @@ class Bundle extends Currency, BundleState this.props.match.params.network, "bundle", this.props.match.params.bundle, + this.state.networkConfig.apiMaxResults, ); const bundleGroupsPlain = await this._tangleCacheService.getBundleGroups(this.props.match.params.network, txHashes); diff --git a/client/src/app/routes/legacy/BundleState.ts b/client/src/app/routes/legacy/BundleState.ts index c4f378ce3..e7aa5817b 100644 --- a/client/src/app/routes/legacy/BundleState.ts +++ b/client/src/app/routes/legacy/BundleState.ts @@ -1,8 +1,14 @@ +import { INetwork } from "~/models/config/INetwork"; import { ICachedTransaction } from "~models/api/ICachedTransaction"; import { ConfirmationState } from "~models/confirmationState"; import { CurrencyState } from "../../components/CurrencyState"; export interface BundleState extends CurrencyState { + /** + * The name of the network. + */ + networkConfig: INetwork; + /** * The bundle hash. */ diff --git a/client/src/app/routes/legacy/Landing.tsx b/client/src/app/routes/legacy/Landing.tsx index 785ea581d..8cb0343e9 100644 --- a/client/src/app/routes/legacy/Landing.tsx +++ b/client/src/app/routes/legacy/Landing.tsx @@ -3,16 +3,13 @@ import React, { ReactNode } from "react"; import { Link, RouteComponentProps } from "react-router-dom"; import { LandingState } from "./LandingState"; import { ServiceFactory } from "~factories/serviceFactory"; -import { NumberHelper } from "~helpers/numberHelper"; -import { RouteBuilder } from "~helpers/routeBuilder"; import { INetwork } from "~models/config/INetwork"; -import { CUSTOM, LEGACY_MAINNET } from "~models/config/networkType"; +import { CUSTOM } from "~models/config/networkType"; import { LEGACY } from "~models/config/protocolVersion"; import { IFeedItem } from "~models/feed/IFeedItem"; import { getFilterFieldDefaults } from "~models/services/filterField"; import { IFilterSettings } from "~models/services/IFilterSettings"; import { NetworkService } from "~services/networkService"; -import FeedMilestoneInfo from "../../components/FeedMilestoneInfo"; import Feeds from "../../components/legacy/Feeds"; import "./Landing.scss"; import { LandingRouteProps } from "../LandingRouteProps"; @@ -90,9 +87,6 @@ class Landing extends Feeds, LandingState * @returns The node to render. */ public render(): ReactNode { - const isLatestMilestoneFeedInfoEnabled = - this._networkConfig && this._networkConfig.network !== LEGACY_MAINNET && this._networkConfig.network !== CUSTOM; - return (
@@ -106,18 +100,6 @@ class Landing extends Feeds, LandingState
{this.state.networkConfig.isEnabled && (
-
- Transactions per sec -
- - {NumberHelper.roundTo(Number(this.state.itemsPerSecond), 1) || "--"} - -
-
-
- Inclusion rate - {this.state.confirmedItemsPerSecondPercent} -
{this.state.networkConfig.showMarket && (
IOTA Market Cap @@ -137,173 +119,33 @@ class Landing extends Feeds, LandingState
-
-
-
-
-

Latest messages

-
- -
- -
- {this.state.valuesFilter.filter((f) => f.isEnabled).length} -
-
- {this.state.isFilterExpanded && ( -
-
-
- - Payload Filter - -
- -
- {this.state.valuesFilter.map((payload) => ( - - - {this.state.networkConfig.protocolVersion === LEGACY && - payload.label === "Non-zero only" && - payload.isEnabled} - - ))} -
-
-
{ - this.setState({ isFilterExpanded: !this.state.isFilterExpanded }); - }} - /> -
- )} -
-
- {isLatestMilestoneFeedInfoEnabled && ( - - )} -
-
- Transaction - Amount -
- {this.state.filteredItems.length === 0 &&

There are no items with the current filter.

} - {this.state.filteredItems.map((item) => ( -
-
- Transaction - - {item.id} - -
-
- Amount - - - -
-
- ))} -
-
+
+
+

+ This network is superseded by + + Chrysalis (archive) + + and + + Mainnet (stardust) + + . +

+

+ It can only be used to browse historic data before milestone 4984942 +

+
+ {!this.state.networkConfig.isEnabled && (
-
{this.state.networkConfig.description}
- {this.state.networkConfig.faucet && ( -
- Get tokens from the Faucet: - - {this.state.networkConfig.faucet} - -
- )} -
- {!this.state.networkConfig.isEnabled && ( -
-
- {this.state.networkConfig.isEnabled === undefined - ? "This network is not recognised." - : "This network is currently disabled in explorer."} -
+
+ {this.state.networkConfig.isEnabled === undefined + ? "This network is not recognised." + : "This network is currently disabled in explorer."}
- )} -
+
+ )}
diff --git a/client/src/app/routes/legacy/Tag.tsx b/client/src/app/routes/legacy/Tag.tsx index 8cacdd2b3..d4d4b69a3 100644 --- a/client/src/app/routes/legacy/Tag.tsx +++ b/client/src/app/routes/legacy/Tag.tsx @@ -16,6 +16,8 @@ import Confirmation from "../../components/Confirmation"; import CopyButton from "../../components/CopyButton"; import Spinner from "../../components/Spinner"; import "./Tag.scss"; +import { INetwork, networkConfigDefault } from "~/models/config/INetwork"; +import { NetworkService } from "~/services/networkService"; /** * Component which will show the tag page. @@ -41,6 +43,9 @@ class Tag extends AsyncComponent, TagState> { this._tangleCacheService = ServiceFactory.get(`tangle-cache-${LEGACY}`); this._settingsService = ServiceFactory.get("settings"); + const networkService = ServiceFactory.get("network"); + const network: INetwork = (props.match.params.network && networkService.get(props.match.params.network)) || networkConfigDefault; + let tag; let tagFill; if (this.props.match.params.tag.length <= 27 && TrytesHelper.isTrytes(this.props.match.params.tag)) { @@ -54,6 +59,7 @@ class Tag extends AsyncComponent, TagState> { } this.state = { + networkConfig: network, statusBusy: 0, status: "Finding transactions...", tag, @@ -86,7 +92,7 @@ class Tag extends AsyncComponent, TagState> { this.props.match.params.network, "tag", this.props.match.params.tag, - 250, + this.state.networkConfig.apiMaxResults, ); let status = ""; diff --git a/client/src/app/routes/legacy/TagState.ts b/client/src/app/routes/legacy/TagState.ts index 0463b4f75..fb00604db 100644 --- a/client/src/app/routes/legacy/TagState.ts +++ b/client/src/app/routes/legacy/TagState.ts @@ -1,7 +1,13 @@ +import { INetwork } from "~/models/config/INetwork"; import { ICachedTransaction } from "~models/api/ICachedTransaction"; import { ITransactionsCursor } from "~models/api/legacy/ITransactionsCursor"; export interface TagState { + /** + * The name of the network. + */ + networkConfig: INetwork; + /** * The tag to display. */ diff --git a/client/src/app/routes/nova/Block.tsx b/client/src/app/routes/nova/Block.tsx index 02fe2db7e..24efd94c3 100644 --- a/client/src/app/routes/nova/Block.tsx +++ b/client/src/app/routes/nova/Block.tsx @@ -10,7 +10,7 @@ import Spinner from "~/app/components/Spinner"; import TruncatedId from "~/app/components/stardust/TruncatedId"; import { DateHelper } from "~/helpers/dateHelper"; import MilestoneSignaturesSection from "~/app/components/stardust/block/payload/milestone/MilestoneSignaturesSection"; -import { Ed25519Signature } from "@iota/sdk-wasm/web"; +import { Ed25519Signature } from "@iota/sdk-wasm-stardust/web"; import { useInputsAndOutputs } from "~/helpers/nova/hooks/useInputsAndOutputs"; import BlockPayloadSection from "~/app/components/nova/block/section/BlockPayloadSection"; import { formatAmount } from "~/helpers/stardust/valueFormatHelper"; @@ -154,12 +154,14 @@ const Block: React.FC> = ({
Latest Finalized Slot
{block.header.latestFinalizedSlot}
-
-
Issuer
-
- + {issuerAddress && ( +
+
Issuer
+
+ +
-
+ )}
{blockBody?.strongParents && (
diff --git a/client/src/app/routes/nova/EpochPage.scss b/client/src/app/routes/nova/EpochPage.scss index 794a5ab26..0b83da3ce 100644 --- a/client/src/app/routes/nova/EpochPage.scss +++ b/client/src/app/routes/nova/EpochPage.scss @@ -4,9 +4,16 @@ @import "../../../scss/variables"; .epoch-page { + .wrapper { + padding: 0 20px; + } .epoch-page--header { display: flex; justify-content: space-between; + + @include tablet-down { + flex-direction: column; + } } .validators-page__header { diff --git a/client/src/app/routes/nova/FoundryPage.tsx b/client/src/app/routes/nova/FoundryPage.tsx index 2d2d412a4..5d60232dc 100644 --- a/client/src/app/routes/nova/FoundryPage.tsx +++ b/client/src/app/routes/nova/FoundryPage.tsx @@ -1,5 +1,4 @@ import { - AccountAddress, FeatureType, FoundryOutput, MetadataFeature, @@ -59,7 +58,6 @@ const FoundryPage: React.FC> = ({ const [isFormattedBalance, setIsFormattedBalance] = useState(true); const [foundryDetails, isFoundryDetailsLoading, foundryError] = useFoundryDetails(network, foundryId); const [foundryOutput, setFoundryOutput] = useState(); - const [controllerAccountId, setControllerAccountId] = useState(); const [controllerAccountBech32, setControllerAccountBech32] = useState(); const [tokenMetadata, setTokenMetadata] = useState(); const [tokensCount, setTokensCount] = useState(0); @@ -68,7 +66,6 @@ const FoundryPage: React.FC> = ({ if (foundryDetails) { const output = foundryDetails?.output as FoundryOutput; const immutableAccountUnlockCondition = output.unlockConditions[0] as ImmutableAccountAddressUnlockCondition; - const accountId = (immutableAccountUnlockCondition.address as AccountAddress).accountId; const bech32 = Utils.addressToBech32(immutableAccountUnlockCondition.address, bech32Hrp); const immutableFeatures = (foundryDetails?.output as FoundryOutput).immutableFeatures; @@ -81,9 +78,9 @@ const FoundryPage: React.FC> = ({ ); setTokenMetadata(parsedMetadata); } + if (isMounted) { setFoundryOutput(output); - setControllerAccountId(accountId); setControllerAccountBech32(bech32); } } @@ -109,11 +106,15 @@ const FoundryPage: React.FC> = ({ {serialNumber}
- {controllerAccountId && controllerAccountBech32 && ( + {controllerAccountBech32 && (
Controller Account
- +
)} diff --git a/client/src/app/routes/nova/TransactionPage.tsx b/client/src/app/routes/nova/TransactionPage.tsx index 2742e54f3..ea742eb53 100644 --- a/client/src/app/routes/nova/TransactionPage.tsx +++ b/client/src/app/routes/nova/TransactionPage.tsx @@ -95,6 +95,8 @@ const TransactionPage: React.FC> = ({ ); } + const issuerAddress = block?.header.issuerId ? Utils.addressToBech32(new AccountAddress(block.header.issuerId), bech32Hrp) : null; + const transactionContent = block ? (
@@ -126,16 +128,14 @@ const TransactionPage: React.FC> = ({
-
-
Issuer
-
- + {issuerAddress && ( +
+
Issuer
+
+ +
-
+ )} {transferTotal !== null && (
Amount Transacted
diff --git a/client/src/app/routes/stardust/AddressPage.tsx b/client/src/app/routes/stardust/AddressPage.tsx index f5a8deeb5..e76e46bbe 100644 --- a/client/src/app/routes/stardust/AddressPage.tsx +++ b/client/src/app/routes/stardust/AddressPage.tsx @@ -1,4 +1,4 @@ -import { AddressType } from "@iota/sdk-wasm/web"; +import { AddressType } from "@iota/sdk-wasm-stardust/web"; import React from "react"; import { RouteComponentProps } from "react-router-dom"; import { useAddressPageState } from "./AddressState"; diff --git a/client/src/app/routes/stardust/AddressState.ts b/client/src/app/routes/stardust/AddressState.ts index d26440e51..0a3e8509c 100644 --- a/client/src/app/routes/stardust/AddressState.ts +++ b/client/src/app/routes/stardust/AddressState.ts @@ -9,7 +9,7 @@ import { Output, OutputResponse, OutputType, -} from "@iota/sdk-wasm/web"; +} from "@iota/sdk-wasm-stardust/web"; import { Reducer, useContext, useEffect, useReducer } from "react"; import { useLocation, useParams } from "react-router-dom"; import { useAliasContainsDID } from "~/helpers/stardust/hooks/useAliasContainsDID"; diff --git a/client/src/app/routes/stardust/Block.tsx b/client/src/app/routes/stardust/Block.tsx index bdd6a6897..0c5c04995 100644 --- a/client/src/app/routes/stardust/Block.tsx +++ b/client/src/app/routes/stardust/Block.tsx @@ -1,4 +1,4 @@ -import { MilestonePayload, PayloadType, TransactionPayload, Utils } from "@iota/sdk-wasm/web"; +import { MilestonePayload, PayloadType, TransactionPayload, Utils } from "@iota/sdk-wasm-stardust/web"; import React, { useContext, useEffect, useState } from "react"; import { RouteComponentProps } from "react-router-dom"; import { BlockProps } from "./BlockProps"; diff --git a/client/src/app/routes/stardust/BlockState.ts b/client/src/app/routes/stardust/BlockState.ts index 33adef790..ae95c9f34 100644 --- a/client/src/app/routes/stardust/BlockState.ts +++ b/client/src/app/routes/stardust/BlockState.ts @@ -1,4 +1,4 @@ -import { IBlockMetadata } from "@iota/sdk-wasm/web"; +import { IBlockMetadata } from "@iota/sdk-wasm-stardust/web"; import { TangleStatus } from "~models/tangleStatus"; export interface BlockMetadata { diff --git a/client/src/app/routes/stardust/Foundry.tsx b/client/src/app/routes/stardust/Foundry.tsx index 946df5bef..c61a3a838 100644 --- a/client/src/app/routes/stardust/Foundry.tsx +++ b/client/src/app/routes/stardust/Foundry.tsx @@ -5,7 +5,7 @@ import { FoundryOutput, ImmutableAliasAddressUnlockCondition, MetadataFeature, -} from "@iota/sdk-wasm/web"; +} from "@iota/sdk-wasm-stardust/web"; import React, { useContext, useEffect, useState } from "react"; import { RouteComponentProps } from "react-router"; import { FoundryProps } from "./FoundryProps"; diff --git a/client/src/app/routes/stardust/NftRedirectRoute.tsx b/client/src/app/routes/stardust/NftRedirectRoute.tsx index de3131aa8..c84d85534 100644 --- a/client/src/app/routes/stardust/NftRedirectRoute.tsx +++ b/client/src/app/routes/stardust/NftRedirectRoute.tsx @@ -1,4 +1,4 @@ -import { AddressType } from "@iota/sdk-wasm/web"; +import { AddressType } from "@iota/sdk-wasm-stardust/web"; import React, { useContext } from "react"; import { Redirect, RouteComponentProps } from "react-router-dom"; import { Bech32AddressHelper } from "~helpers/stardust/bech32AddressHelper"; diff --git a/client/src/app/routes/stardust/Search.tsx b/client/src/app/routes/stardust/Search.tsx index 844bf0f4f..edd8f133b 100644 --- a/client/src/app/routes/stardust/Search.tsx +++ b/client/src/app/routes/stardust/Search.tsx @@ -1,4 +1,4 @@ -import { AddressType, Utils } from "@iota/sdk-wasm/web"; +import { AddressType, Utils } from "@iota/sdk-wasm-stardust/web"; import React, { ReactNode } from "react"; import { Redirect, RouteComponentProps } from "react-router-dom"; import { ServiceFactory } from "~factories/serviceFactory"; diff --git a/client/src/app/routes/stardust/TransactionPage.tsx b/client/src/app/routes/stardust/TransactionPage.tsx index ab64b5f19..651b62a29 100644 --- a/client/src/app/routes/stardust/TransactionPage.tsx +++ b/client/src/app/routes/stardust/TransactionPage.tsx @@ -1,5 +1,5 @@ /* eslint-disable react/jsx-no-useless-fragment */ -import { PayloadType, RegularTransactionEssence, TransactionPayload as ITransactionPayload, Utils } from "@iota/sdk-wasm/web"; +import { PayloadType, RegularTransactionEssence, TransactionPayload as ITransactionPayload, Utils } from "@iota/sdk-wasm-stardust/web"; import React, { useContext, useEffect, useState } from "react"; import { RouteComponentProps } from "react-router-dom"; import { TransactionPageProps } from "./TransactionPageProps"; diff --git a/client/src/app/routes/stardust/Visualizer.tsx b/client/src/app/routes/stardust/Visualizer.tsx index 3fa77abce..06d147df5 100644 --- a/client/src/app/routes/stardust/Visualizer.tsx +++ b/client/src/app/routes/stardust/Visualizer.tsx @@ -1,5 +1,5 @@ /* eslint-disable react/jsx-no-useless-fragment */ -import { CONFLICT_REASON_STRINGS, ConflictReason, hexToUtf8 } from "@iota/sdk-wasm/web"; +import { CONFLICT_REASON_STRINGS, ConflictReason, hexToUtf8 } from "@iota/sdk-wasm-stardust/web"; import classNames from "classnames"; import React, { useContext, useRef, useState } from "react"; import { Link, RouteComponentProps } from "react-router-dom"; diff --git a/client/src/app/routes/stardust/landing/AnalyticStats.tsx b/client/src/app/routes/stardust/landing/AnalyticStats.tsx index 9e17ea247..646d6488e 100644 --- a/client/src/app/routes/stardust/landing/AnalyticStats.tsx +++ b/client/src/app/routes/stardust/landing/AnalyticStats.tsx @@ -1,4 +1,4 @@ -import { INodeInfoBaseToken } from "@iota/sdk-wasm/web"; +import { INodeInfoBaseToken } from "@iota/sdk-wasm-stardust/web"; import React from "react"; import { buildShimmerClaimedStats, COMMAS_REGEX } from "./ShimmerClaimedUtils"; import { formatAmount } from "~helpers/stardust/valueFormatHelper"; diff --git a/client/src/app/routes/stardust/landing/ShimmerClaimedUtils.spec.ts b/client/src/app/routes/stardust/landing/ShimmerClaimedUtils.spec.ts index 435bf33d0..cbb480eb1 100644 --- a/client/src/app/routes/stardust/landing/ShimmerClaimedUtils.spec.ts +++ b/client/src/app/routes/stardust/landing/ShimmerClaimedUtils.spec.ts @@ -1,4 +1,4 @@ -import { INodeInfoBaseToken } from "@iota/sdk-wasm/web"; +import { INodeInfoBaseToken } from "@iota/sdk-wasm-stardust/web"; import { buildShimmerClaimedStats } from "./ShimmerClaimedUtils"; const TOKEN_INFO: INodeInfoBaseToken = { diff --git a/client/src/app/routes/stardust/landing/ShimmerClaimedUtils.ts b/client/src/app/routes/stardust/landing/ShimmerClaimedUtils.ts index 50ac730cc..f9ebf1266 100644 --- a/client/src/app/routes/stardust/landing/ShimmerClaimedUtils.ts +++ b/client/src/app/routes/stardust/landing/ShimmerClaimedUtils.ts @@ -1,4 +1,4 @@ -import { INodeInfoBaseToken } from "@iota/sdk-wasm/web"; +import { INodeInfoBaseToken } from "@iota/sdk-wasm-stardust/web"; import BigDecimal from "~helpers/bigDecimal"; import { formatAmount } from "~helpers/stardust/valueFormatHelper"; diff --git a/client/src/features/visualizer-vivagraph/components/KeyPanel.scss b/client/src/features/visualizer-vivagraph/components/KeyPanel.scss index 1c5a8c479..edc36a969 100644 --- a/client/src/features/visualizer-vivagraph/components/KeyPanel.scss +++ b/client/src/features/visualizer-vivagraph/components/KeyPanel.scss @@ -15,9 +15,18 @@ pointer-events: none; gap: 20px; + @include tablet-down { + flex-direction: column; + gap: 8px; + } + .card { background: var(--body-background); padding: 16px 32px; + + @include tablet-down { + padding: 8px 16px; + } } .key-panel-list { @@ -26,6 +35,10 @@ flex-wrap: wrap; gap: 32px; + @include tablet-down { + gap: 8px; + } + .key-panel-item { display: flex; flex-direction: row; @@ -67,6 +80,23 @@ align-items: center; pointer-events: none; + @include tablet-down { + width: 100%; + } + + .card { + @include tablet-down { + width: 100%; + } + } + + .card--label, + .card--value { + @include tablet-down { + height: auto; + } + } + .card--label { justify-content: flex-start; } @@ -78,6 +108,17 @@ display: flex; flex-direction: column; align-items: center; + + .card--value { + margin-bottom: 0; + } + + @include tablet-down { + justify-content: start; + flex-direction: row; + width: 100%; + gap: 8px; + } } @include tablet-down { diff --git a/client/src/features/visualizer-vivagraph/store/tangle.ts b/client/src/features/visualizer-vivagraph/store/tangle.ts index 908aafaff..09f794445 100644 --- a/client/src/features/visualizer-vivagraph/store/tangle.ts +++ b/client/src/features/visualizer-vivagraph/store/tangle.ts @@ -46,7 +46,6 @@ const INITIAL_STATE = { export const useTangleStore = create()( devtools((set, get) => ({ ...INITIAL_STATE, - resetTangleStore: () => { set(() => { return { diff --git a/client/src/helpers/bigDecimal.ts b/client/src/helpers/bigDecimal.ts index ecbd1d043..1a118e8ea 100644 --- a/client/src/helpers/bigDecimal.ts +++ b/client/src/helpers/bigDecimal.ts @@ -55,10 +55,18 @@ export default class BigDecimal { } public toString(): string { - const s = this.n.toString().padStart(this.decimals + 1, "0"); - const whole = this.decimals === 0 ? s : s.slice(0, -this.decimals); - const frac = this.decimals === 0 ? "" : s.slice(-this.decimals); + let negative = false; + let s = this.n.toString(); + + if (s.startsWith("-")) { + negative = true; + s = s.slice(1); + } + + const padded = s.padStart(this.decimals + 1, "0"); + const whole = this.decimals === 0 ? padded : padded.slice(0, -this.decimals); + const frac = this.decimals === 0 ? "" : padded.slice(-this.decimals); const hasFrac = Number(frac) !== 0; - return whole + (hasFrac ? "." : "") + frac.replace(/\.?0+$/, ""); + return (negative ? "-" : "") + whole + (hasFrac ? "." : "") + frac.replace(/\.?0+$/, ""); } } diff --git a/client/src/helpers/hooks/useInitServicesLoader.ts b/client/src/helpers/hooks/useInitServicesLoader.ts new file mode 100644 index 000000000..9ec487006 --- /dev/null +++ b/client/src/helpers/hooks/useInitServicesLoader.ts @@ -0,0 +1,17 @@ +import { useEffect, useState } from "react"; +import { initialiseServices } from "~/index"; + +export function useInitServicesLoader() { + const [isServicesLoaded, setServicesLoaded] = useState(false); + + useEffect(() => { + (async () => { + await initialiseServices(); + setServicesLoaded(true); + })(); + }, []); + + return { + isServicesLoaded, + }; +} diff --git a/client/src/helpers/hooks/useWasmLoader.ts b/client/src/helpers/hooks/useWasmLoader.ts new file mode 100644 index 000000000..be168217a --- /dev/null +++ b/client/src/helpers/hooks/useWasmLoader.ts @@ -0,0 +1,49 @@ +import { useEffect, useState } from "react"; +import initSdkStardust from "@iota/sdk-wasm-stardust/web"; +import initSdkNova from "@iota/sdk-wasm-nova/web"; +import { NOVA, STARDUST } from "~models/config/protocolVersion"; + +const STARDUST_WASM_PATH = "/wasm/iota_sdk_stardust_wasm_bg.wasm"; +const NOVA_WASM_PATH = "/wasm/iota_sdk_nova_wasm_bg.wasm"; + +export function useWasmLoader(isServicesLoaded: boolean, networksLoaded: boolean, protocolVersion?: string) { + const [isMainWasmLoaded, setWasmLoaded] = useState(false); + + useEffect(() => { + if (!networksLoaded || !isServicesLoaded) return; + + const loadWasm = async () => { + const origin = window?.location?.origin ?? ""; + const sdkStardustPath = origin + STARDUST_WASM_PATH; + const sdkNovaPath = origin + NOVA_WASM_PATH; + + try { + if (protocolVersion === STARDUST) { + await initSdkStardust(sdkStardustPath); + initSdkNova(sdkNovaPath); + setWasmLoaded(true); + return; + } + + if (protocolVersion === NOVA) { + await initSdkNova(sdkNovaPath); + initSdkStardust(sdkStardustPath); + setWasmLoaded(true); + return; + } + + setWasmLoaded(true); + initSdkStardust(sdkStardustPath); + initSdkNova(sdkNovaPath); + } catch (err) { + console.error("Error initializing SDK (wasm):", err); + } + }; + + void loadWasm(); + }, [isServicesLoaded, protocolVersion, networksLoaded, setWasmLoaded]); + + return { + isMainWasmLoaded, + }; +} diff --git a/client/src/helpers/networkHelper.ts b/client/src/helpers/networkHelper.ts index d92d1a28b..96812d5db 100644 --- a/client/src/helpers/networkHelper.ts +++ b/client/src/helpers/networkHelper.ts @@ -3,10 +3,12 @@ import { CHRYSALIS_MAINNET, CUSTOM, DEVNET, + IOTA_TESTNET, LEGACY_MAINNET, MAINNET, NetworkType, SHIMMER, + SHIMMER_TESTNET, TESTNET, } from "~models/config/networkType"; import { SHIMMER_UI, Theme } from "~models/config/uiTheme"; @@ -21,27 +23,30 @@ export const getNetworkOrder = (networkType: NetworkType) => { case MAINNET: { return 0; } - case CHRYSALIS_MAINNET: { + case SHIMMER: { return 1; } - case SHIMMER: { + case IOTA_TESTNET: { return 2; } - case TESTNET: { + case SHIMMER_TESTNET: { return 3; } - case ALPHANET: { + case DEVNET: { return 4; } - case LEGACY_MAINNET: { + case CHRYSALIS_MAINNET: { return 5; } - case DEVNET: { + case LEGACY_MAINNET: { return 6; } - default: { + case ALPHANET: { return 7; } + default: { + return 8; + } } }; diff --git a/client/src/helpers/nova/hooks/useGenerateSlotsTable.ts b/client/src/helpers/nova/hooks/useGenerateSlotsTable.ts index d3e95b1c0..5a57314cb 100644 --- a/client/src/helpers/nova/hooks/useGenerateSlotsTable.ts +++ b/client/src/helpers/nova/hooks/useGenerateSlotsTable.ts @@ -3,7 +3,7 @@ import type { ITableRow } from "~/app/components/Table"; import { TableCellType, type TTableData } from "~/app/components/nova/TableCell"; import { SlotStatus } from "~app/lib/enums"; import { SlotTableHeadings } from "~/app/lib/ui/enums"; -import { Utils } from "@iota/sdk-wasm-nova/web"; +import { BaseTokenResponse, Utils } from "@iota/sdk-wasm-nova/web"; import useSlotsFeed from "./useSlotsFeed"; import { useNovaTimeConvert } from "./useNovaTimeConvert"; import { useNetworkInfoNova } from "../networkInfo"; @@ -93,6 +93,7 @@ function getSlotCommitmentTableRow( slotIndex: number, commitmentWrapper: ISlotCommitmentWrapper | null, slotTimeRange: SlotTimeRange, + tokenInfo: BaseTokenResponse, ): ITableRow { const data: TTableData[] = []; @@ -120,8 +121,10 @@ function getSlotCommitmentTableRow( break; case SlotTableHeadings.ReferenceManaCost: tableData = { - type: TableCellType.Text, + type: TableCellType.Formatted, data: referenceManaCost, + tokenInfo, + isFormatted: true, }; break; case SlotTableHeadings.Blocks: @@ -170,7 +173,7 @@ function getSlotCommitmentTableRow( } export function useGenerateSlotsTable(): ITableRow[] { - const { name: network } = useNetworkInfoNova((s) => s.networkInfo); + const { name: network, manaInfo } = useNetworkInfoNova((s) => s.networkInfo); const { slotIndexToUnixTimeRange } = useNovaTimeConvert(); const { currentSlotIndex, currentSlotTimeRange, latestSlotCommitments, latestSlotIndexes } = useSlotsFeed(); @@ -185,7 +188,7 @@ export function useGenerateSlotsTable(): ITableRow[] { latestSlotIndexes?.map((slotIndex) => { const commitmentWrapper = latestSlotCommitments?.find((commitment) => commitment.slotCommitment.slot === slotIndex) ?? null; const slotTimeRange = slotIndexToUnixTimeRange?.(slotIndex) ?? null; - const row = getSlotCommitmentTableRow(network, slotIndex, commitmentWrapper, slotTimeRange); + const row = getSlotCommitmentTableRow(network, slotIndex, commitmentWrapper, slotTimeRange, manaInfo); rows.push(row); }); } diff --git a/client/src/helpers/nova/hooks/useGenerateValidatorsTable.ts b/client/src/helpers/nova/hooks/useGenerateValidatorsTable.ts index 75b8766dd..e3a451889 100644 --- a/client/src/helpers/nova/hooks/useGenerateValidatorsTable.ts +++ b/client/src/helpers/nova/hooks/useGenerateValidatorsTable.ts @@ -33,13 +33,13 @@ function getValidatorTableRow( case ValidatorsTableHeadings.Candidate: tableData = { type: TableCellType.Text, - data: (!inCommittee).toString(), + data: validatorResponse.active ? "Yes" : "No", }; break; case ValidatorsTableHeadings.Elected: tableData = { type: TableCellType.Text, - data: inCommittee.toString(), + data: inCommittee ? "Yes" : "No", }; break; case ValidatorsTableHeadings.FixedCost: diff --git a/client/src/helpers/nova/outputUtils.ts b/client/src/helpers/nova/outputUtils.ts index 52fd20146..1df83c1ff 100644 --- a/client/src/helpers/nova/outputUtils.ts +++ b/client/src/helpers/nova/outputUtils.ts @@ -29,7 +29,7 @@ export function isOutputExpired(output: CommonOutput, protocolParameters: Protoc const expirationUnlockCondition = output.unlockConditions.find( (unlockCondition) => unlockCondition.type === UnlockConditionType.Expiration, ) as ExpirationUnlockCondition; - const outputSlotIndex = expirationUnlockCondition?.slotIndex; + const outputSlotIndex = expirationUnlockCondition?.slot; const maxCommittableAge = protocolParameters?.parameters?.maxCommittableAge ?? null; const minCommittableAge = protocolParameters?.parameters?.minCommittableAge ?? null; @@ -59,6 +59,6 @@ export function isOutputTimeLocked(output: CommonOutput, protocolParameters: Pro } else { const unixTimestampToSlotIndex = unixTimestampToSlotIndexConverter(protocolParameters); const currentSlotIndex = unixTimestampToSlotIndex(moment().unix()); - return currentSlotIndex + minCommittableAge < timelockUnlockCondition.slotIndex; + return currentSlotIndex + minCommittableAge < timelockUnlockCondition.slot; } } diff --git a/client/src/helpers/stardust/bech32AddressHelper.ts b/client/src/helpers/stardust/bech32AddressHelper.ts index e0155f93a..f03b8b2c6 100644 --- a/client/src/helpers/stardust/bech32AddressHelper.ts +++ b/client/src/helpers/stardust/bech32AddressHelper.ts @@ -1,5 +1,5 @@ import { Bech32Helper } from "@iota/iota.js"; -import { Address, AddressType, AliasAddress, Ed25519Address, NftAddress } from "@iota/sdk-wasm/web"; +import { Address, AddressType, AliasAddress, Ed25519Address, NftAddress } from "@iota/sdk-wasm-stardust/web"; import { Converter } from "./convertUtils"; import { HexHelper } from "./hexHelper"; import { IBech32AddressDetails } from "~models/api/IBech32AddressDetails"; diff --git a/client/src/helpers/stardust/hooks/useAddressAliasOutputs.ts b/client/src/helpers/stardust/hooks/useAddressAliasOutputs.ts index c3745b7f3..7544673ce 100644 --- a/client/src/helpers/stardust/hooks/useAddressAliasOutputs.ts +++ b/client/src/helpers/stardust/hooks/useAddressAliasOutputs.ts @@ -1,4 +1,4 @@ -import { OutputResponse } from "@iota/sdk-wasm/web"; +import { OutputResponse } from "@iota/sdk-wasm-stardust/web"; import { useEffect, useState } from "react"; import { useIsMounted } from "~helpers/hooks/useIsMounted"; import { ServiceFactory } from "~factories/serviceFactory"; diff --git a/client/src/helpers/stardust/hooks/useAddressBalance.ts b/client/src/helpers/stardust/hooks/useAddressBalance.ts index 4e5c979cb..3887ddf5c 100644 --- a/client/src/helpers/stardust/hooks/useAddressBalance.ts +++ b/client/src/helpers/stardust/hooks/useAddressBalance.ts @@ -1,4 +1,4 @@ -import { AddressType, AliasOutput, NftOutput } from "@iota/sdk-wasm/web"; +import { AddressType, AliasOutput, NftOutput } from "@iota/sdk-wasm-stardust/web"; import { useEffect, useState } from "react"; import { IBech32AddressDetails } from "~/models/api/IBech32AddressDetails"; import { ServiceFactory } from "~factories/serviceFactory"; diff --git a/client/src/helpers/stardust/hooks/useAddressBasicOutputs.ts b/client/src/helpers/stardust/hooks/useAddressBasicOutputs.ts index 882b9bb06..9fd15b344 100644 --- a/client/src/helpers/stardust/hooks/useAddressBasicOutputs.ts +++ b/client/src/helpers/stardust/hooks/useAddressBasicOutputs.ts @@ -1,4 +1,4 @@ -import { OutputResponse } from "@iota/sdk-wasm/web"; +import { OutputResponse } from "@iota/sdk-wasm-stardust/web"; import { useEffect, useState } from "react"; import { useIsMounted } from "~helpers/hooks/useIsMounted"; import { ServiceFactory } from "~factories/serviceFactory"; diff --git a/client/src/helpers/stardust/hooks/useAddressHistory.ts b/client/src/helpers/stardust/hooks/useAddressHistory.ts index 58823e6f8..b010eeae1 100644 --- a/client/src/helpers/stardust/hooks/useAddressHistory.ts +++ b/client/src/helpers/stardust/hooks/useAddressHistory.ts @@ -6,7 +6,7 @@ import { ITransactionHistoryItem, ITransactionHistoryResponse } from "~models/ap import { STARDUST } from "~models/config/protocolVersion"; import { StardustApiClient } from "~services/stardust/stardustApiClient"; import { groupOutputsByTransactionId } from "~app/components/stardust/history/transactionHistoryUtils"; -import { OutputResponse } from "@iota/sdk-wasm/web"; +import { OutputResponse } from "@iota/sdk-wasm-stardust/web"; const OUTPUT_PAGE_SIZE = 10; const TX_PAGE_SIZE = 10; diff --git a/client/src/helpers/stardust/hooks/useAddressNftOutputs.ts b/client/src/helpers/stardust/hooks/useAddressNftOutputs.ts index 436d77116..b6e45919a 100644 --- a/client/src/helpers/stardust/hooks/useAddressNftOutputs.ts +++ b/client/src/helpers/stardust/hooks/useAddressNftOutputs.ts @@ -1,4 +1,4 @@ -import { OutputResponse } from "@iota/sdk-wasm/web"; +import { OutputResponse } from "@iota/sdk-wasm-stardust/web"; import { useEffect, useState } from "react"; import { useIsMounted } from "~helpers/hooks/useIsMounted"; import { ServiceFactory } from "~factories/serviceFactory"; diff --git a/client/src/helpers/stardust/hooks/useAliasContainsDID.ts b/client/src/helpers/stardust/hooks/useAliasContainsDID.ts index c38113814..39a9fb527 100644 --- a/client/src/helpers/stardust/hooks/useAliasContainsDID.ts +++ b/client/src/helpers/stardust/hooks/useAliasContainsDID.ts @@ -1,4 +1,4 @@ -import { AliasOutput, hexToBytes } from "@iota/sdk-wasm/web"; +import { AliasOutput, hexToBytes } from "@iota/sdk-wasm-stardust/web"; import { useEffect, useState } from "react"; import { Converter } from "~helpers/stardust/convertUtils"; diff --git a/client/src/helpers/stardust/hooks/useAliasControlledFoundries.ts b/client/src/helpers/stardust/hooks/useAliasControlledFoundries.ts index 267626bba..1ced54f30 100644 --- a/client/src/helpers/stardust/hooks/useAliasControlledFoundries.ts +++ b/client/src/helpers/stardust/hooks/useAliasControlledFoundries.ts @@ -1,4 +1,4 @@ -import { OutputType, HexEncodedString, FoundryOutput, Utils } from "@iota/sdk-wasm/web"; +import { OutputType, HexEncodedString, FoundryOutput, Utils } from "@iota/sdk-wasm-stardust/web"; import { useEffect, useState } from "react"; import { useIsMounted } from "~helpers/hooks/useIsMounted"; import { ServiceFactory } from "~factories/serviceFactory"; diff --git a/client/src/helpers/stardust/hooks/useAliasDetails.ts b/client/src/helpers/stardust/hooks/useAliasDetails.ts index 38791c8cd..04b16afe5 100644 --- a/client/src/helpers/stardust/hooks/useAliasDetails.ts +++ b/client/src/helpers/stardust/hooks/useAliasDetails.ts @@ -1,4 +1,4 @@ -import { AliasOutput } from "@iota/sdk-wasm/web"; +import { AliasOutput } from "@iota/sdk-wasm-stardust/web"; import { useEffect, useState } from "react"; import { useIsMounted } from "~helpers/hooks/useIsMounted"; import { ServiceFactory } from "~factories/serviceFactory"; diff --git a/client/src/helpers/stardust/hooks/useBlock.ts b/client/src/helpers/stardust/hooks/useBlock.ts index 9929c2b68..f0743cab2 100644 --- a/client/src/helpers/stardust/hooks/useBlock.ts +++ b/client/src/helpers/stardust/hooks/useBlock.ts @@ -1,4 +1,4 @@ -import { Block } from "@iota/sdk-wasm/web"; +import { Block } from "@iota/sdk-wasm-stardust/web"; import { useEffect, useState } from "react"; import { useIsMounted } from "~helpers/hooks/useIsMounted"; import { ServiceFactory } from "~factories/serviceFactory"; diff --git a/client/src/helpers/stardust/hooks/useBlockChildren.ts b/client/src/helpers/stardust/hooks/useBlockChildren.ts index 1645f5072..1f0faf887 100644 --- a/client/src/helpers/stardust/hooks/useBlockChildren.ts +++ b/client/src/helpers/stardust/hooks/useBlockChildren.ts @@ -1,4 +1,4 @@ -import { HexEncodedString } from "@iota/sdk-wasm/web"; +import { HexEncodedString } from "@iota/sdk-wasm-stardust/web"; import { useEffect, useState } from "react"; import { useIsMounted } from "~helpers/hooks/useIsMounted"; import { ServiceFactory } from "~factories/serviceFactory"; diff --git a/client/src/helpers/stardust/hooks/useFoundryDetails.ts b/client/src/helpers/stardust/hooks/useFoundryDetails.ts index 2f6068552..0d7513032 100644 --- a/client/src/helpers/stardust/hooks/useFoundryDetails.ts +++ b/client/src/helpers/stardust/hooks/useFoundryDetails.ts @@ -1,4 +1,4 @@ -import { OutputResponse } from "@iota/sdk-wasm/web"; +import { OutputResponse } from "@iota/sdk-wasm-stardust/web"; import { useEffect, useState } from "react"; import { useIsMounted } from "~helpers/hooks/useIsMounted"; import { ServiceFactory } from "~factories/serviceFactory"; diff --git a/client/src/helpers/stardust/hooks/useInputsAndOutputs.ts b/client/src/helpers/stardust/hooks/useInputsAndOutputs.ts index 715f11b40..b0db8e79b 100644 --- a/client/src/helpers/stardust/hooks/useInputsAndOutputs.ts +++ b/client/src/helpers/stardust/hooks/useInputsAndOutputs.ts @@ -1,4 +1,4 @@ -import { Block, PayloadType, Unlock } from "@iota/sdk-wasm/web"; +import { Block, PayloadType, Unlock } from "@iota/sdk-wasm-stardust/web"; import { useContext, useEffect, useState } from "react"; import NetworkContext from "~app/context/NetworkContext"; import { ServiceFactory } from "~factories/serviceFactory"; diff --git a/client/src/helpers/stardust/hooks/useMilestoneDetails.ts b/client/src/helpers/stardust/hooks/useMilestoneDetails.ts index 0ce0d2cda..3514ecc9a 100644 --- a/client/src/helpers/stardust/hooks/useMilestoneDetails.ts +++ b/client/src/helpers/stardust/hooks/useMilestoneDetails.ts @@ -1,4 +1,4 @@ -import { MilestonePayload } from "@iota/sdk-wasm/web"; +import { MilestonePayload } from "@iota/sdk-wasm-stardust/web"; import { useEffect, useState } from "react"; import { useIsMounted } from "~helpers/hooks/useIsMounted"; import { ServiceFactory } from "~factories/serviceFactory"; diff --git a/client/src/helpers/stardust/hooks/useNftDetails.ts b/client/src/helpers/stardust/hooks/useNftDetails.ts index 7cb9febeb..1693a9594 100644 --- a/client/src/helpers/stardust/hooks/useNftDetails.ts +++ b/client/src/helpers/stardust/hooks/useNftDetails.ts @@ -8,7 +8,7 @@ import { MetadataFeature, NftAddress, NftOutput, -} from "@iota/sdk-wasm/web"; +} from "@iota/sdk-wasm-stardust/web"; import { useEffect, useState } from "react"; import { useIsMounted } from "~helpers/hooks/useIsMounted"; import { ServiceFactory } from "~factories/serviceFactory"; diff --git a/client/src/helpers/stardust/hooks/useOutputDetails.ts b/client/src/helpers/stardust/hooks/useOutputDetails.ts index d82ac8cf1..24d1efe67 100644 --- a/client/src/helpers/stardust/hooks/useOutputDetails.ts +++ b/client/src/helpers/stardust/hooks/useOutputDetails.ts @@ -1,4 +1,4 @@ -import { Output, IOutputMetadataResponse } from "@iota/sdk-wasm/web"; +import { Output, IOutputMetadataResponse } from "@iota/sdk-wasm-stardust/web"; import { useEffect, useState } from "react"; import { useIsMounted } from "~helpers/hooks/useIsMounted"; import { ServiceFactory } from "~factories/serviceFactory"; diff --git a/client/src/helpers/stardust/hooks/useOutputsDetails.ts b/client/src/helpers/stardust/hooks/useOutputsDetails.ts index f4c9df3a1..4dfb39eb9 100644 --- a/client/src/helpers/stardust/hooks/useOutputsDetails.ts +++ b/client/src/helpers/stardust/hooks/useOutputsDetails.ts @@ -1,4 +1,4 @@ -import { OutputResponse } from "@iota/sdk-wasm/web"; +import { OutputResponse } from "@iota/sdk-wasm-stardust/web"; import { useEffect, useState } from "react"; import { useIsMounted } from "~helpers/hooks/useIsMounted"; import { ServiceFactory } from "~factories/serviceFactory"; diff --git a/client/src/helpers/stardust/hooks/useTaggedOutputs.ts b/client/src/helpers/stardust/hooks/useTaggedOutputs.ts index 4341ce393..7389f8ce4 100644 --- a/client/src/helpers/stardust/hooks/useTaggedOutputs.ts +++ b/client/src/helpers/stardust/hooks/useTaggedOutputs.ts @@ -1,4 +1,4 @@ -import { OutputResponse } from "@iota/sdk-wasm/web"; +import { OutputResponse } from "@iota/sdk-wasm-stardust/web"; import { useEffect, useState } from "react"; import { useHistory, useLocation } from "react-router-dom"; import { useIsMounted } from "~helpers/hooks/useIsMounted"; diff --git a/client/src/helpers/stardust/hooks/useTransactionIncludedBlock.ts b/client/src/helpers/stardust/hooks/useTransactionIncludedBlock.ts index 833a23743..d97f6f889 100644 --- a/client/src/helpers/stardust/hooks/useTransactionIncludedBlock.ts +++ b/client/src/helpers/stardust/hooks/useTransactionIncludedBlock.ts @@ -1,4 +1,4 @@ -import { Block } from "@iota/sdk-wasm/web"; +import { Block } from "@iota/sdk-wasm-stardust/web"; import { useEffect, useState } from "react"; import { useIsMounted } from "~helpers/hooks/useIsMounted"; import { ServiceFactory } from "~factories/serviceFactory"; diff --git a/client/src/helpers/stardust/metadataUtils.ts b/client/src/helpers/stardust/metadataUtils.ts index c39fd2608..89c45e5c3 100644 --- a/client/src/helpers/stardust/metadataUtils.ts +++ b/client/src/helpers/stardust/metadataUtils.ts @@ -1,4 +1,4 @@ -import { HexEncodedString, hexToUtf8 } from "@iota/sdk-wasm/web"; +import { HexEncodedString, hexToUtf8 } from "@iota/sdk-wasm-stardust/web"; import * as jsonschema from "jsonschema"; /** * Tries to parse hex data into metadata. diff --git a/client/src/helpers/stardust/nameHelper.ts b/client/src/helpers/stardust/nameHelper.ts index 792d57d80..7b0e17b9c 100644 --- a/client/src/helpers/stardust/nameHelper.ts +++ b/client/src/helpers/stardust/nameHelper.ts @@ -1,4 +1,13 @@ -import { AddressType, Block, FeatureType, InputType, OutputType, PayloadType, UnlockConditionType, UnlockType } from "@iota/sdk-wasm/web"; +import { + AddressType, + Block, + FeatureType, + InputType, + OutputType, + PayloadType, + UnlockConditionType, + UnlockType, +} from "@iota/sdk-wasm-stardust/web"; export class NameHelper { /** diff --git a/client/src/helpers/stardust/preExpandedConfig.ts b/client/src/helpers/stardust/preExpandedConfig.ts index c52a0d669..4f72269af 100644 --- a/client/src/helpers/stardust/preExpandedConfig.ts +++ b/client/src/helpers/stardust/preExpandedConfig.ts @@ -1,18 +1,20 @@ import { + AddressType, AddressUnlockCondition, + AliasOutput, + AliasUnlock, CommonOutput, ExpirationUnlockCondition, GovernorAddressUnlockCondition, StateControllerAddressUnlockCondition, Unlock, UnlockConditionType, - Utils, -} from "@iota/sdk-wasm/web"; + UnlockType, +} from "@iota/sdk-wasm-stardust/web"; import { Bech32AddressHelper } from "~/helpers/stardust/bech32AddressHelper"; import { IInput } from "~models/api/stardust/IInput"; import { IOutput } from "~models/api/stardust/IOutput"; import { IPreExpandedConfig } from "~models/components"; -import { resolveTransitiveUnlock } from "./resolveTransiviteUnlock"; const OUTPUT_EXPAND_CONDITIONS: UnlockConditionType[] = [ UnlockConditionType.Address, @@ -32,6 +34,7 @@ const INPUT_EXPAND_CONDITIONS: UnlockConditionType[] = [...OUTPUT_EXPAND_CONDITI export function getInputsPreExpandedConfig(inputs: IInput[], unlocks: Unlock[], bech32Hrp: string): IPreExpandedConfig[] { const inputsPreExpandedConfig: IPreExpandedConfig[] = inputs.map((input, idx) => { const commonOutput = input?.output?.output as unknown as CommonOutput; + let preExpandedConfig: IPreExpandedConfig = {}; if (commonOutput) { const matchExpandCondition = commonOutput.unlockConditions?.find((unlockCondition) => @@ -40,22 +43,33 @@ export function getInputsPreExpandedConfig(inputs: IInput[], unlocks: Unlock[], preExpandedConfig = { isPreExpanded: !!matchExpandCondition, }; - if (input?.output?.output && "unlockConditions" in input.output.output) { - const commmonOutput = input.output.output as unknown as CommonOutput; - const signatureUnlock = resolveTransitiveUnlock(unlocks, idx); - const unlockSignatureAddress = Utils.hexPublicKeyToBech32Address(signatureUnlock.signature.publicKey, bech32Hrp); + if (commonOutput.unlockConditions.length > 0) { + // unlockSignatureAddress is allready calculated in the input + const unlockSignatureAddress = input.address.bech32; + // special case for alias unlock where the signature is the state controller address but the unlock condition is the alias address + const { referencedStateControllerAddress, referencedAliasAddress } = getReferencedAddresses( + inputs, + unlocks[idx], + idx, + bech32Hrp, + ); preExpandedConfig = { ...preExpandedConfig, - unlockConditions: commmonOutput.unlockConditions?.map((unlockCondition) => { + unlockConditions: commonOutput.unlockConditions.map((unlockCondition) => { switch (unlockCondition.type) { case UnlockConditionType.Address: { const unlockAddress = Bech32AddressHelper.buildAddress( bech32Hrp, (unlockCondition as AddressUnlockCondition).address, )?.bech32; - return unlockAddress === unlockSignatureAddress; + + return ( + unlockAddress === unlockSignatureAddress || + (unlockAddress === referencedAliasAddress && + referencedStateControllerAddress === unlockSignatureAddress) + ); // special case for alias unlock } case UnlockConditionType.Expiration: { const unlockAddress = Bech32AddressHelper.buildAddress( @@ -90,6 +104,28 @@ export function getInputsPreExpandedConfig(inputs: IInput[], unlocks: Unlock[], return inputsPreExpandedConfig; } +function getReferencedAddresses( + inputs: IInput[], + unlock: Unlock, + idx: number, + bech32Hrp: string, +): { referencedStateControllerAddress: string; referencedAliasAddress: string } { + let referencedStateControllerAddress = ""; + let referencedAliasAddress = ""; + if (unlock.type === UnlockType.Alias) { + const referencedAliasInput = inputs[(unlock as AliasUnlock).reference]; + const referencedAliasOutput = referencedAliasInput?.output?.output as unknown as AliasOutput; + referencedAliasAddress = + Bech32AddressHelper.buildAddress(bech32Hrp, referencedAliasOutput.aliasId, AddressType.Alias)?.bech32 || ""; + + const referencedStateControllerAddressUC = referencedAliasOutput.unlockConditions.find( + (uc) => uc.type === UnlockConditionType.StateControllerAddress, + ) as StateControllerAddressUnlockCondition; + referencedStateControllerAddress = + Bech32AddressHelper.buildAddress(bech32Hrp, referencedStateControllerAddressUC.address)?.bech32 || ""; + } + return { referencedStateControllerAddress, referencedAliasAddress }; +} /** * Get the preExpandedConfig for the outputs. * Expand the output and its relevant receiver address related unlock conditions. @@ -114,6 +150,7 @@ export function getOutputsPreExpandedConfig(outputs: IOutput[]): IPreExpandedCon ), }; } + return preExpandedConfig; }); return outputsPreExpandedConfig; diff --git a/client/src/helpers/stardust/resolveTransiviteUnlock.ts b/client/src/helpers/stardust/resolveTransiviteUnlock.ts index 2e7f8d206..4298a0f5f 100644 --- a/client/src/helpers/stardust/resolveTransiviteUnlock.ts +++ b/client/src/helpers/stardust/resolveTransiviteUnlock.ts @@ -1,4 +1,4 @@ -import { ReferenceUnlock, SignatureUnlock, Unlock, UnlockType } from "@iota/sdk-wasm/web"; +import { ReferenceUnlock, SignatureUnlock, Unlock, UnlockType } from "@iota/sdk-wasm-stardust/web"; export function resolveTransitiveUnlock(unlocks: Unlock[], unlockIndex: number): SignatureUnlock { const unlock = unlocks[unlockIndex]; diff --git a/client/src/helpers/stardust/transactionsHelper.ts b/client/src/helpers/stardust/transactionsHelper.ts index 2419c8bdf..7faf53674 100644 --- a/client/src/helpers/stardust/transactionsHelper.ts +++ b/client/src/helpers/stardust/transactionsHelper.ts @@ -23,7 +23,7 @@ import { UnlockConditionType, Utils, UTXOInput, -} from "@iota/sdk-wasm/web"; +} from "@iota/sdk-wasm-stardust/web"; import bigInt from "big-integer"; import { Converter } from "./convertUtils"; import { HexHelper } from "./hexHelper"; diff --git a/client/src/helpers/stardust/valueFormatHelper.spec.ts b/client/src/helpers/stardust/valueFormatHelper.spec.ts index 949bb4a73..302604428 100644 --- a/client/src/helpers/stardust/valueFormatHelper.spec.ts +++ b/client/src/helpers/stardust/valueFormatHelper.spec.ts @@ -71,9 +71,25 @@ describe("formatAmount", () => { expect(formatAmount(1450896407249092, tokenInfo)).toBe("1450896407.24 IOTA"); }); + test("should honour 2 decimals arg even if has tailing decimals: format 6500004000 -> (6500.00 instead of 6500.004)", () => { + expect(formatAmount(6500004000, tokenInfo, false, 2, true)).toBe("6500.00 IOTA"); + }); + + test("should honour 3 decimal arg even if has tailing decimals: format 6500000400 -> (6500.000 instead of 6500.0004)", () => { + expect(formatAmount(6500000400, tokenInfo, false, 3, true)).toBe("6500.000 IOTA"); + }); + test("should honour format full (number)", () => { expect(formatAmount(1, tokenInfo, true)).toBe("1 micro"); }); + + test("should not break with negative value", () => { + expect(formatAmount(-2193144968, tokenInfo)).toBe("-2193.14 IOTA"); + }); + + test("should not break with negative decimal value", () => { + expect(formatAmount(-2144, tokenInfo)).toBe("-0.002144 IOTA"); + }); }); describe("with bigint values", () => { @@ -141,9 +157,25 @@ describe("formatAmount", () => { expect(formatAmount(9007199254740993n, tokenInfo)).toBe("9007199254.74 IOTA"); }); + test("should honour 2 decimals arg even if has tailing decimals: format 6500004000 -> (6500.00 instead of 6500.004)", () => { + expect(formatAmount(6500004000n, tokenInfo, false, 2, true)).toBe("6500.00 IOTA"); + }); + + test("should honour 3 decimal arg even if has tailing decimals: format 6500000400 -> (6500.000 instead of 6500.0004)", () => { + expect(formatAmount(6500000400n, tokenInfo, false, 3, true)).toBe("6500.000 IOTA"); + }); + test("should honour format full (bigint)", () => { expect(formatAmount(1n, tokenInfo, true)).toBe("1 micro"); }); + + test("should not break with negative value", () => { + expect(formatAmount(-2193144968n, tokenInfo)).toBe("-2193.14 IOTA"); + }); + + test("should not break with negative decimal value", () => { + expect(formatAmount(-2144n, tokenInfo)).toBe("-0.002144 IOTA"); + }); }); describe("with string values", () => { @@ -211,9 +243,25 @@ describe("formatAmount", () => { expect(formatAmount("9007199254740993", tokenInfo)).toBe("9007199254.74 IOTA"); }); + test("should honour 2 decimals arg even if has tailing decimals: format 6500004000 -> (6500.00 instead of 6500.004)", () => { + expect(formatAmount("6500004000", tokenInfo, false, 2, true)).toBe("6500.00 IOTA"); + }); + + test("should honour 3 decimal arg even if has tailing decimals: format 6500000400 -> (6500.000 instead of 6500.0004)", () => { + expect(formatAmount("6500000400", tokenInfo, false, 3, true)).toBe("6500.000 IOTA"); + }); + test("should honour format full (number)", () => { expect(formatAmount("1", tokenInfo, true)).toBe("1 micro"); }); + + test("should not break with negative value", () => { + expect(formatAmount("-2193144968", tokenInfo)).toBe("-2193.14 IOTA"); + }); + + test("should not break with negative decimal value", () => { + expect(formatAmount("-2144", tokenInfo)).toBe("-0.002144 IOTA"); + }); }); describe("with undefined values", () => { diff --git a/client/src/helpers/stardust/valueFormatHelper.tsx b/client/src/helpers/stardust/valueFormatHelper.tsx index 55f2baf2d..80a99f9fc 100644 --- a/client/src/helpers/stardust/valueFormatHelper.tsx +++ b/client/src/helpers/stardust/valueFormatHelper.tsx @@ -1,4 +1,4 @@ -import { INodeInfoBaseToken } from "@iota/sdk-wasm/web"; +import { INodeInfoBaseToken } from "@iota/sdk-wasm-stardust/web"; import React from "react"; import Tooltip from "~app/components/Tooltip"; import BigDecimal from "../bigDecimal"; @@ -51,33 +51,40 @@ export function formatNumberWithCommas(value: bigint): string { return value.toLocaleString("en", { useGrouping: true }); } +function trimTrailingZeros(numberStr: string) { + return numberStr.replace(/\.0+$|(\.\d*?)0+$/, "$1"); +} + /** * Format amount to two decimal places without rounding off. * @param value The raw amount to format. * @param precision The decimal places to show. + * @param forceShowDecimal The should show decimal anyway. * @returns The formatted amount. */ -function toFixedNoRound(value: number | string, precision: number = 2, trailingDecimals?: boolean): string { - const defaultDecimals = "0".repeat(precision); - const valueString = `${value}`; - const [integer, fraction = defaultDecimals] = valueString.split("."); +function toFixedNoRound(value: number | string, precision: number = 2, forceShowDecimal?: boolean): string { + const [integer, fraction = ""] = `${value}`.split("."); + const truncatedFraction = fraction.padEnd(precision, "0").substring(0, precision); - if (fraction === defaultDecimals && !trailingDecimals) { - return valueString; + if (forceShowDecimal) { + return `${integer}.${truncatedFraction}`; } - if (!precision) { - return integer; + if (Number(integer) === 0) { + if (Number(fraction) === 0) { + return integer; + } + if (Number(truncatedFraction) === 0) { + return `${integer}.${fraction}`; + } + return trimTrailingZeros(`${integer}.${truncatedFraction}`); } - const truncatedFraction = fraction.slice(0, precision); - - // avoid 0.00 case - if (!Number(truncatedFraction)) { - return `${integer}.${fraction}`; + if (!precision) { + return integer; } - return `${integer}.${truncatedFraction}`; + return trimTrailingZeros(`${integer}.${truncatedFraction}`); } /** diff --git a/client/src/index.tsx b/client/src/index.tsx index d09f7a96f..fbee954b7 100644 --- a/client/src/index.tsx +++ b/client/src/index.tsx @@ -1,16 +1,11 @@ /* eslint-disable unicorn/prefer-top-level-await */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ // needed for features from @iota/sdk which use reflection (decorators) import "reflect-metadata"; -import initSdkStardust from "@iota/sdk-wasm/web"; -import initSdkNova from "@iota/sdk-wasm-nova/web"; -import React from "react"; +import React, { Suspense, lazy } from "react"; import { createRoot } from "react-dom/client"; import { BrowserRouter, Route, RouteComponentProps } from "react-router-dom"; -import App from "~app/App"; import { AppRouteProps } from "~app/AppRouteProps"; import { ServiceFactory } from "~factories/serviceFactory"; -import "./index.scss"; import { CHRYSALIS, LEGACY, NOVA, STARDUST } from "~models/config/protocolVersion"; import { ChrysalisApiClient } from "~services/chrysalis/chrysalisApiClient"; import { ChrysalisFeedClient } from "~services/chrysalis/chrysalisFeedClient"; @@ -28,40 +23,47 @@ import { SettingsService } from "~services/settingsService"; import { StardustApiClient } from "~services/stardust/stardustApiClient"; import { StardustFeedClient } from "~services/stardust/stardustFeedClient"; import { NovaApiClient } from "./services/nova/novaApiClient"; +import { NovaFeedClient } from "./services/nova/novaFeedClient"; import { TokenRegistryClient } from "~services/stardust/tokenRegistryClient"; +import "./index.scss"; import "@fontsource/ibm-plex-mono"; import "@fontsource/material-icons"; -import { NovaFeedClient } from "./services/nova/novaFeedClient"; +import Spinner from "~app/components/Spinner"; + +const App = lazy(() => import("~app/App")); // eslint-disable-next-line @typescript-eslint/no-explicit-any const apiEndpoint = (window as any).env.API_ENDPOINT; -initialiseServices() - .then(async () => { - // load the wasm - const origin = window?.location?.origin ?? ""; - await initSdkStardust(origin + "/wasm/iota_sdk_stardust_wasm_bg.wasm"); - await initSdkNova(origin + "/wasm/iota_sdk_nova_wasm_bg.wasm"); - - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const container = document.querySelector("#root")!; - const root = createRoot(container); - root.render( - +const AppInitializer = () => { + return ( + + + +
+ } + > ) => } /> - , - ); - }) - .catch((err) => console.error(err)); + + + ); +}; + +// eslint-disable-next-line @typescript-eslint/no-non-null-assertion +const container = document.getElementById("root")!; +const root = createRoot(container); +root.render(); /** * Register all the services. */ -async function initialiseServices(): Promise { +export async function initialiseServices(): Promise { ServiceFactory.register(`api-client-${LEGACY}`, () => new LegacyApiClient(apiEndpoint)); ServiceFactory.register(`api-client-${CHRYSALIS}`, () => new ChrysalisApiClient(apiEndpoint)); ServiceFactory.register(`api-client-${STARDUST}`, () => new StardustApiClient(apiEndpoint)); diff --git a/client/src/models/api/nova/ICongestionResponse.ts b/client/src/models/api/nova/ICongestionResponse.ts index cb176a6f3..374c8695d 100644 --- a/client/src/models/api/nova/ICongestionResponse.ts +++ b/client/src/models/api/nova/ICongestionResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { CongestionResponse } from "@iota/sdk-wasm-nova/web"; import { IResponse } from "./IResponse"; diff --git a/client/src/models/api/nova/IRewardsResponse.ts b/client/src/models/api/nova/IRewardsResponse.ts index 2ad5deab9..d5fb13ab4 100644 --- a/client/src/models/api/nova/IRewardsResponse.ts +++ b/client/src/models/api/nova/IRewardsResponse.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-unresolved */ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ import { ManaRewardsResponse } from "@iota/sdk-wasm-nova/web"; import { IResponse } from "./IResponse"; diff --git a/client/src/models/api/stardust/IAliasResponse.ts b/client/src/models/api/stardust/IAliasResponse.ts index e82094682..e08e2ede1 100644 --- a/client/src/models/api/stardust/IAliasResponse.ts +++ b/client/src/models/api/stardust/IAliasResponse.ts @@ -1,4 +1,4 @@ -import { OutputResponse } from "@iota/sdk-wasm/web"; +import { OutputResponse } from "@iota/sdk-wasm-stardust/web"; import { IResponse } from "./IResponse"; export interface IAliasResponse extends IResponse { diff --git a/client/src/models/api/stardust/IAssociationsResponse.ts b/client/src/models/api/stardust/IAssociationsResponse.ts index 840e9d786..18fd8972e 100644 --- a/client/src/models/api/stardust/IAssociationsResponse.ts +++ b/client/src/models/api/stardust/IAssociationsResponse.ts @@ -2,6 +2,7 @@ import { IResponse } from "../IResponse"; export enum AssociationType { BASIC_ADDRESS, + BASIC_ADDRESS_EXPIRED, BASIC_SENDER, BASIC_EXPIRATION_RETURN, BASIC_STORAGE_RETURN, @@ -12,6 +13,7 @@ export enum AssociationType { ALIAS_ID, FOUNDRY_ALIAS, NFT_ADDRESS, + NFT_ADDRESS_EXPIRED, NFT_STORAGE_RETURN, NFT_EXPIRATION_RETURN, NFT_ISSUER, diff --git a/client/src/models/api/stardust/IBlockChildrenResponse.ts b/client/src/models/api/stardust/IBlockChildrenResponse.ts index f3904f22c..bf9a513da 100644 --- a/client/src/models/api/stardust/IBlockChildrenResponse.ts +++ b/client/src/models/api/stardust/IBlockChildrenResponse.ts @@ -1,4 +1,4 @@ -import { HexEncodedString } from "@iota/sdk-wasm/web"; +import { HexEncodedString } from "@iota/sdk-wasm-stardust/web"; import { IResponse } from "../IResponse"; export interface IBlockChildrenResponse extends IResponse { diff --git a/client/src/models/api/stardust/IInput.ts b/client/src/models/api/stardust/IInput.ts index 32c846efe..b9091d4f3 100644 --- a/client/src/models/api/stardust/IInput.ts +++ b/client/src/models/api/stardust/IInput.ts @@ -1,4 +1,4 @@ -import { HexEncodedString, OutputResponse } from "@iota/sdk-wasm/web"; +import { HexEncodedString, OutputResponse } from "@iota/sdk-wasm-stardust/web"; import { IBech32AddressDetails } from "../IBech32AddressDetails"; export interface IInput { diff --git a/client/src/models/api/stardust/IMilestoneDetailsResponse.ts b/client/src/models/api/stardust/IMilestoneDetailsResponse.ts index 937923dc4..ec61f7b16 100644 --- a/client/src/models/api/stardust/IMilestoneDetailsResponse.ts +++ b/client/src/models/api/stardust/IMilestoneDetailsResponse.ts @@ -1,4 +1,4 @@ -import { MilestonePayload } from "@iota/sdk-wasm/web"; +import { MilestonePayload } from "@iota/sdk-wasm-stardust/web"; import { IResponse } from "../IResponse"; export interface IMilestoneDetailsResponse extends IResponse { diff --git a/client/src/models/api/stardust/INodeInfoResponse.ts b/client/src/models/api/stardust/INodeInfoResponse.ts index 4d4be693c..9f9372a4a 100644 --- a/client/src/models/api/stardust/INodeInfoResponse.ts +++ b/client/src/models/api/stardust/INodeInfoResponse.ts @@ -1,4 +1,4 @@ -import { INodeInfoBaseToken, IRent } from "@iota/sdk-wasm/web"; +import { INodeInfoBaseToken, IRent } from "@iota/sdk-wasm-stardust/web"; import { IResponse } from "../IResponse"; /** diff --git a/client/src/models/api/stardust/IOutput.ts b/client/src/models/api/stardust/IOutput.ts index 48c3d8f53..025a2de14 100644 --- a/client/src/models/api/stardust/IOutput.ts +++ b/client/src/models/api/stardust/IOutput.ts @@ -1,4 +1,4 @@ -import { Output } from "@iota/sdk-wasm/web"; +import { Output } from "@iota/sdk-wasm-stardust/web"; import { IBech32AddressDetails } from "../IBech32AddressDetails"; export interface IOutput { diff --git a/client/src/models/api/stardust/IOutputDetailsResponse.ts b/client/src/models/api/stardust/IOutputDetailsResponse.ts index ebb8cf1d6..326835cc7 100644 --- a/client/src/models/api/stardust/IOutputDetailsResponse.ts +++ b/client/src/models/api/stardust/IOutputDetailsResponse.ts @@ -1,4 +1,4 @@ -import { OutputResponse } from "@iota/sdk-wasm/web"; +import { OutputResponse } from "@iota/sdk-wasm-stardust/web"; import { IResponse } from "./IResponse"; export interface IOutputDetailsResponse extends IResponse { diff --git a/client/src/models/api/stardust/ISearchResponse.ts b/client/src/models/api/stardust/ISearchResponse.ts index 6cc8bba8b..33dd82131 100644 --- a/client/src/models/api/stardust/ISearchResponse.ts +++ b/client/src/models/api/stardust/ISearchResponse.ts @@ -1,4 +1,4 @@ -import { Block, OutputResponse, IOutputsResponse } from "@iota/sdk-wasm/web"; +import { Block, OutputResponse, IOutputsResponse } from "@iota/sdk-wasm-stardust/web"; import { IAssociationsResponse } from "./IAssociationsResponse"; import { IMilestoneBlocksResponse } from "./IMilestoneBlocksResponse"; import { IMilestoneDetailsResponse } from "./IMilestoneDetailsResponse"; diff --git a/client/src/models/api/stardust/ITransactionDetailsResponse.ts b/client/src/models/api/stardust/ITransactionDetailsResponse.ts index 5e3a3cc1c..ba4fd1932 100644 --- a/client/src/models/api/stardust/ITransactionDetailsResponse.ts +++ b/client/src/models/api/stardust/ITransactionDetailsResponse.ts @@ -1,4 +1,4 @@ -import { Block } from "@iota/sdk-wasm/web"; +import { Block } from "@iota/sdk-wasm-stardust/web"; import { IResponse } from "../IResponse"; export interface ITransactionDetailsResponse extends IResponse { diff --git a/client/src/models/api/stardust/address/IAddressDetailsResponse.ts b/client/src/models/api/stardust/address/IAddressDetailsResponse.ts index dd788cbe0..b7ca2d52a 100644 --- a/client/src/models/api/stardust/address/IAddressDetailsResponse.ts +++ b/client/src/models/api/stardust/address/IAddressDetailsResponse.ts @@ -1,4 +1,4 @@ -import { OutputResponse } from "@iota/sdk-wasm/web"; +import { OutputResponse } from "@iota/sdk-wasm-stardust/web"; import { IResponse } from "../../IResponse"; export interface IAddressDetailsResponse extends IResponse { diff --git a/client/src/models/api/stardust/basic/IBasicOutputsResponse.ts b/client/src/models/api/stardust/basic/IBasicOutputsResponse.ts index 689101ff7..22dc930a6 100644 --- a/client/src/models/api/stardust/basic/IBasicOutputsResponse.ts +++ b/client/src/models/api/stardust/basic/IBasicOutputsResponse.ts @@ -1,4 +1,4 @@ -import { IOutputsResponse } from "@iota/sdk-wasm/web"; +import { IOutputsResponse } from "@iota/sdk-wasm-stardust/web"; import { IResponse } from "../../IResponse"; export interface IBasicOutputsResponse extends IResponse { diff --git a/client/src/models/api/stardust/block/IBlockDetailsResponse.ts b/client/src/models/api/stardust/block/IBlockDetailsResponse.ts index e634c1e89..9d628664f 100644 --- a/client/src/models/api/stardust/block/IBlockDetailsResponse.ts +++ b/client/src/models/api/stardust/block/IBlockDetailsResponse.ts @@ -1,4 +1,4 @@ -import { IBlockMetadata } from "@iota/sdk-wasm/web"; +import { IBlockMetadata } from "@iota/sdk-wasm-stardust/web"; import { IResponse } from "../../IResponse"; export interface IBlockDetailsResponse extends IResponse { diff --git a/client/src/models/api/stardust/block/IBlockResponse.ts b/client/src/models/api/stardust/block/IBlockResponse.ts index 4e759e104..8bd86547e 100644 --- a/client/src/models/api/stardust/block/IBlockResponse.ts +++ b/client/src/models/api/stardust/block/IBlockResponse.ts @@ -1,4 +1,4 @@ -import { Block } from "@iota/sdk-wasm/web"; +import { Block } from "@iota/sdk-wasm-stardust/web"; import { IResponse } from "../../IResponse"; export interface IBlockResponse extends IResponse { diff --git a/client/src/models/api/stardust/feed/IFeedBlockData.ts b/client/src/models/api/stardust/feed/IFeedBlockData.ts index fba3e7a0a..a09dc36a6 100644 --- a/client/src/models/api/stardust/feed/IFeedBlockData.ts +++ b/client/src/models/api/stardust/feed/IFeedBlockData.ts @@ -1,4 +1,4 @@ -import { HexEncodedString, MilestonePayload } from "@iota/sdk-wasm/web"; +import { HexEncodedString, MilestonePayload } from "@iota/sdk-wasm-stardust/web"; import { IFeedBlockMetadata } from "./IFeedBlockMetadata"; interface IFeedBlockProperties { diff --git a/client/src/models/api/stardust/feed/IFeedBlockMetadata.ts b/client/src/models/api/stardust/feed/IFeedBlockMetadata.ts index 3cd69966f..b3a073f95 100644 --- a/client/src/models/api/stardust/feed/IFeedBlockMetadata.ts +++ b/client/src/models/api/stardust/feed/IFeedBlockMetadata.ts @@ -1,4 +1,4 @@ -import { ConflictReason } from "@iota/sdk-wasm/web"; +import { ConflictReason } from "@iota/sdk-wasm-stardust/web"; export interface IFeedBlockMetadata { /** diff --git a/client/src/models/api/stardust/feed/IFeedUpdate.ts b/client/src/models/api/stardust/feed/IFeedUpdate.ts index e668fe287..8db46e9d2 100644 --- a/client/src/models/api/stardust/feed/IFeedUpdate.ts +++ b/client/src/models/api/stardust/feed/IFeedUpdate.ts @@ -1,4 +1,4 @@ -import { Block, MilestonePayload } from "@iota/sdk-wasm/web"; +import { Block, MilestonePayload } from "@iota/sdk-wasm-stardust/web"; import { IFeedBlockMetadata } from "./IFeedBlockMetadata"; type IFeedBlockUpdate = Block; diff --git a/client/src/models/api/stardust/foundry/IFoundriesResponse.ts b/client/src/models/api/stardust/foundry/IFoundriesResponse.ts index 5adbee027..dcccd03fb 100644 --- a/client/src/models/api/stardust/foundry/IFoundriesResponse.ts +++ b/client/src/models/api/stardust/foundry/IFoundriesResponse.ts @@ -1,4 +1,4 @@ -import { IOutputsResponse } from "@iota/sdk-wasm/web"; +import { IOutputsResponse } from "@iota/sdk-wasm-stardust/web"; import { IResponse } from "../IResponse"; export interface IFoundriesResponse extends IResponse { diff --git a/client/src/models/api/stardust/foundry/IFoundryResponse.ts b/client/src/models/api/stardust/foundry/IFoundryResponse.ts index e3e5bf9b5..e545180e4 100644 --- a/client/src/models/api/stardust/foundry/IFoundryResponse.ts +++ b/client/src/models/api/stardust/foundry/IFoundryResponse.ts @@ -1,4 +1,4 @@ -import { OutputResponse } from "@iota/sdk-wasm/web"; +import { OutputResponse } from "@iota/sdk-wasm-stardust/web"; import { IResponse } from "../IResponse"; export interface IFoundryResponse extends IResponse { diff --git a/client/src/models/api/stardust/nft/INftBase.ts b/client/src/models/api/stardust/nft/INftBase.ts index 7885f5f44..d7f14bd1b 100644 --- a/client/src/models/api/stardust/nft/INftBase.ts +++ b/client/src/models/api/stardust/nft/INftBase.ts @@ -1,4 +1,4 @@ -import { HexEncodedString } from "@iota/sdk-wasm/web"; +import { HexEncodedString } from "@iota/sdk-wasm-stardust/web"; export interface INftBase { /** diff --git a/client/src/models/api/stardust/nft/INftDetailsResponse.ts b/client/src/models/api/stardust/nft/INftDetailsResponse.ts index 9f4e69d8b..a8aee3d5f 100644 --- a/client/src/models/api/stardust/nft/INftDetailsResponse.ts +++ b/client/src/models/api/stardust/nft/INftDetailsResponse.ts @@ -1,4 +1,4 @@ -import { OutputResponse } from "@iota/sdk-wasm/web"; +import { OutputResponse } from "@iota/sdk-wasm-stardust/web"; import { IResponse } from "../IResponse"; export interface INftDetailsResponse extends IResponse { diff --git a/client/src/models/api/stardust/nft/INftOutputsResponse.ts b/client/src/models/api/stardust/nft/INftOutputsResponse.ts index 6154e3bb0..f4e0ef7ea 100644 --- a/client/src/models/api/stardust/nft/INftOutputsResponse.ts +++ b/client/src/models/api/stardust/nft/INftOutputsResponse.ts @@ -1,4 +1,4 @@ -import { IOutputsResponse } from "@iota/sdk-wasm/web"; +import { IOutputsResponse } from "@iota/sdk-wasm-stardust/web"; import { IResponse } from "../../IResponse"; export interface INftOutputsResponse extends IResponse { diff --git a/client/src/models/config/INetwork.ts b/client/src/models/config/INetwork.ts index c69374844..5b1a8b827 100644 --- a/client/src/models/config/INetwork.ts +++ b/client/src/models/config/INetwork.ts @@ -1,5 +1,5 @@ -import { NetworkType } from "./networkType"; -import { ProtocolVersion } from "./protocolVersion"; +import { CUSTOM, NetworkType } from "./networkType"; +import { LEGACY, ProtocolVersion } from "./protocolVersion"; import { Theme } from "./uiTheme"; /** @@ -74,4 +74,17 @@ export interface INetwork { * Url endpoint for token registry. */ tokenRegistryEndpoint?: string; + /** + * Max results for API requests (only used in legacy for now). + */ + apiMaxResults?: number; } + +export const networkConfigDefault: INetwork = { + label: "Custom network", + network: CUSTOM, + protocolVersion: LEGACY, + hasStatisticsSupport: false, + isEnabled: false, + apiMaxResults: 10000, +}; diff --git a/client/src/models/config/networkType.ts b/client/src/models/config/networkType.ts index 5c2e77597..19a3d38b8 100644 --- a/client/src/models/config/networkType.ts +++ b/client/src/models/config/networkType.ts @@ -1,10 +1,11 @@ -/* eslint-disable no-multi-spaces */ export const LEGACY_MAINNET = "legacy-mainnet"; export const CHRYSALIS_MAINNET = "chrysalis-mainnet"; export const MAINNET = "mainnet"; export const DEVNET = "devnet"; export const SHIMMER = "shimmer"; export const TESTNET = "testnet"; +export const IOTA_TESTNET = "iota-testnet"; +export const SHIMMER_TESTNET = "shimmer-testnet"; export const ALPHANET = "alphanet"; export const CUSTOM = "custom"; @@ -18,5 +19,7 @@ export type NetworkType = | typeof DEVNET | typeof SHIMMER | typeof TESTNET + | typeof IOTA_TESTNET + | typeof SHIMMER_TESTNET | typeof ALPHANET | typeof CUSTOM; diff --git a/client/src/models/config/protocolVersion.ts b/client/src/models/config/protocolVersion.ts index 73f71a01f..d83e43a0e 100644 --- a/client/src/models/config/protocolVersion.ts +++ b/client/src/models/config/protocolVersion.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-multi-spaces */ export const LEGACY = "legacy"; export const CHRYSALIS = "chrysalis"; export const STARDUST = "stardust"; diff --git a/client/src/models/tangleStatus.ts b/client/src/models/tangleStatus.ts index cdf421f79..f7948a850 100644 --- a/client/src/models/tangleStatus.ts +++ b/client/src/models/tangleStatus.ts @@ -1,4 +1,4 @@ -import { CONFLICT_REASON_STRINGS, IBlockMetadata } from "@iota/sdk-wasm/web"; +import { CONFLICT_REASON_STRINGS, IBlockMetadata } from "@iota/sdk-wasm-stardust/web"; export type TangleStatus = "unknown" | "pending" | "referenced" | "milestone"; diff --git a/client/src/services/currencyService.ts b/client/src/services/currencyService.ts index a84aaf30c..523f4df24 100644 --- a/client/src/services/currencyService.ts +++ b/client/src/services/currencyService.ts @@ -1,4 +1,4 @@ -import { INodeInfoBaseToken } from "@iota/sdk-wasm/web"; +import { INodeInfoBaseToken } from "@iota/sdk-wasm-stardust/web"; import { ChrysalisApiClient } from "./chrysalis/chrysalisApiClient"; import { SettingsService } from "./settingsService"; import { ServiceFactory } from "~factories/serviceFactory"; diff --git a/client/src/services/stardust/nodeInfoService.ts b/client/src/services/stardust/nodeInfoService.ts index 2b271985b..38eb4a211 100644 --- a/client/src/services/stardust/nodeInfoService.ts +++ b/client/src/services/stardust/nodeInfoService.ts @@ -1,4 +1,4 @@ -import { INodeInfoBaseToken, IRent } from "@iota/sdk-wasm/web"; +import { INodeInfoBaseToken, IRent } from "@iota/sdk-wasm-stardust/web"; import { StardustApiClient } from "../stardust/stardustApiClient"; import { ServiceFactory } from "~factories/serviceFactory"; import { INodeInfoResponse as IStardustInfoResponse } from "~models/api/stardust/INodeInfoResponse"; diff --git a/client/src/services/stardust/stardustApiClient.ts b/client/src/services/stardust/stardustApiClient.ts index 55450d2db..d95dfd829 100644 --- a/client/src/services/stardust/stardustApiClient.ts +++ b/client/src/services/stardust/stardustApiClient.ts @@ -1,4 +1,4 @@ -import { IOutputsResponse } from "@iota/sdk-wasm/web"; +import { IOutputsResponse } from "@iota/sdk-wasm-stardust/web"; import { FetchHelper } from "~helpers/fetchHelper"; import { IDIDResolverRequest } from "~models/api/IDIDResolverRequest"; import { IDIDResolverResponse } from "~models/api/IDIDResolverResponse"; diff --git a/client/src/services/stardust/stardustFeedClient.ts b/client/src/services/stardust/stardustFeedClient.ts index d7dd109fe..fac0c37c2 100644 --- a/client/src/services/stardust/stardustFeedClient.ts +++ b/client/src/services/stardust/stardustFeedClient.ts @@ -8,7 +8,7 @@ import { TaggedDataPayload, TransactionPayload, Utils, -} from "@iota/sdk-wasm/web"; +} from "@iota/sdk-wasm-stardust/web"; import { io, Socket } from "socket.io-client"; import { ServiceFactory } from "~factories/serviceFactory"; import { IFeedSubscribeResponse } from "~models/api/IFeedSubscribeResponse"; diff --git a/discord-bot/package-lock.json b/discord-bot/package-lock.json index 2ad63ec4a..7434b866e 100644 --- a/discord-bot/package-lock.json +++ b/discord-bot/package-lock.json @@ -10,7 +10,7 @@ "license": "Apache-2.0", "dependencies": { "discord.js": "^12.5.3", - "express": "^4.17.3", + "express": "^4.19.2", "node-fetch": "^2.6.7" }, "devDependencies": { @@ -1131,23 +1131,26 @@ } }, "node_modules/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, "node_modules/body-parser/node_modules/debug": { @@ -1229,13 +1232,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1425,9 +1433,9 @@ ] }, "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "engines": { "node": ">= 0.6" } @@ -1442,9 +1450,9 @@ } }, "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "engines": { "node": ">= 0.6" } @@ -1516,6 +1524,22 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -1537,17 +1561,21 @@ } }, "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } }, "node_modules/dir-glob": { "version": "3.0.1", @@ -1595,7 +1623,7 @@ "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { "version": "1.3.769", @@ -1612,7 +1640,7 @@ "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "engines": { "node": ">= 0.8" } @@ -1668,6 +1696,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -1697,7 +1744,7 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "node_modules/escape-string-regexp": { "version": "1.0.5", @@ -2242,37 +2289,38 @@ } }, "node_modules/express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", - "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.2", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.2", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.9.7", + "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", + "send": "0.18.0", + "serve-static": "1.15.0", "setprototypeof": "1.2.0", - "statuses": "~1.5.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -2381,16 +2429,16 @@ } }, "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "engines": { @@ -2408,7 +2456,7 @@ "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/find-up": { "version": "4.1.0", @@ -2479,10 +2527,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/functional-red-black-tree": { "version": "1.0.1", @@ -2509,14 +2559,18 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2607,6 +2661,17 @@ "node": ">= 4" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -2643,11 +2708,32 @@ "node": ">=4" } }, - "node_modules/has-symbols": { + "node_modules/has-property-descriptors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true, + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "engines": { "node": ">= 0.4" }, @@ -2655,6 +2741,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hosted-git-info": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", @@ -2662,18 +2759,18 @@ "dev": true }, "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dependencies": { - "depd": "~1.1.2", + "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", + "statuses": "2.0.1", "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/iconv-lite": { @@ -3520,10 +3617,9 @@ } }, "node_modules/object-inspect": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", - "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", - "dev": true, + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3573,9 +3669,9 @@ } }, "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dependencies": { "ee-first": "1.1.1" }, @@ -3999,9 +4095,12 @@ } }, "node_modules/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { "node": ">=0.6" }, @@ -4038,12 +4137,12 @@ } }, "node_modules/raw-body": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", - "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dependencies": { "bytes": "3.1.2", - "http-errors": "1.8.1", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, @@ -4329,23 +4428,23 @@ } }, "node_modules/send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dependencies": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.8.1", + "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" @@ -4370,19 +4469,35 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.2" + "send": "0.18.0" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -4420,6 +4535,23 @@ "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", "dev": true }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/simple-update-notifier": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", @@ -4515,11 +4647,11 @@ "dev": true }, "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/string_decoder": { @@ -4877,7 +5009,7 @@ "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "engines": { "node": ">= 0.8" } @@ -5907,20 +6039,22 @@ "dev": true }, "body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "requires": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "dependencies": { "debug": { @@ -5982,13 +6116,15 @@ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" } }, "callsites": { @@ -6123,9 +6259,9 @@ } }, "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" }, "convert-source-map": { "version": "1.8.0", @@ -6137,9 +6273,9 @@ } }, "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==" }, "cookie-signature": { "version": "1.0.6", @@ -6193,6 +6329,16 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -6208,14 +6354,14 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" }, "dir-glob": { "version": "3.0.1", @@ -6253,7 +6399,7 @@ "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "electron-to-chromium": { "version": "1.3.769", @@ -6270,7 +6416,7 @@ "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" }, "enquirer": { "version": "2.3.6", @@ -6314,6 +6460,19 @@ "unbox-primitive": "^1.0.1" } }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -6334,7 +6493,7 @@ "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "escape-string-regexp": { "version": "1.0.5", @@ -6763,37 +6922,38 @@ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" }, "express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", - "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.2", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.2", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.9.7", + "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", + "send": "0.18.0", + "serve-static": "1.15.0", "setprototypeof": "1.2.0", - "statuses": "~1.5.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -6878,16 +7038,16 @@ } }, "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "dependencies": { @@ -6902,7 +7062,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, @@ -6956,10 +7116,9 @@ "optional": true }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "functional-red-black-tree": { "version": "1.0.1", @@ -6980,14 +7139,15 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "glob": { @@ -7052,6 +7212,14 @@ } } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -7079,11 +7247,31 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "has-symbols": { + "has-property-descriptors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } }, "hosted-git-info": { "version": "2.8.8", @@ -7092,14 +7280,14 @@ "dev": true }, "http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "requires": { - "depd": "~1.1.2", + "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", + "statuses": "2.0.1", "toidentifier": "1.0.1" } }, @@ -7726,10 +7914,9 @@ } }, "object-inspect": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", - "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", - "dev": true + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" }, "object-keys": { "version": "1.1.1", @@ -7761,9 +7948,9 @@ } }, "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "requires": { "ee-first": "1.1.1" } @@ -8064,9 +8251,12 @@ "dev": true }, "qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==" + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } }, "queue-microtask": { "version": "1.2.3", @@ -8080,12 +8270,12 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", - "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "requires": { "bytes": "3.1.2", - "http-errors": "1.8.1", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" } @@ -8294,23 +8484,23 @@ } }, "send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.8.1", + "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "dependencies": { "debug": { @@ -8336,14 +8526,27 @@ } }, "serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.2" + "send": "0.18.0" + } + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" } }, "setimmediate": { @@ -8377,6 +8580,17 @@ "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", "dev": true }, + "side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + } + }, "simple-update-notifier": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", @@ -8456,9 +8670,9 @@ "dev": true }, "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, "string_decoder": { "version": "0.10.31", @@ -8747,7 +8961,7 @@ "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" }, "untildify": { "version": "4.0.0", diff --git a/discord-bot/package.json b/discord-bot/package.json index 3c693b731..8feff976c 100644 --- a/discord-bot/package.json +++ b/discord-bot/package.json @@ -25,7 +25,7 @@ }, "dependencies": { "discord.js": "^12.5.3", - "express": "^4.17.3", + "express": "^4.19.2", "node-fetch": "^2.6.7" }, "devDependencies": { diff --git a/package-lock.json b/package-lock.json index 3248f52ef..59042e7dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "explorer", - "version": "3.3.3-rc.2", + "version": "3.3.8-rc.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "explorer", - "version": "3.3.3-rc.2", + "version": "3.3.8-rc.2", "dependencies": { "husky": "^8.0.3" }, diff --git a/package.json b/package.json index 0a076d86d..de8005ff5 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,12 @@ { "name": "explorer", "description": "Tangle Explorer", - "version": "3.3.6", + "version": "3.3.8-rc.2", "scripts": { "setup:client": "cd client && npm install && npm run postinstall", "setup:api": "cd api && npm install && npm run build-compile && npm run build-config", - "setup:dev": "npm run clear && npm run setup:sdk-nova-local && npm run prepare && npm run setup:client && npm run setup:api", + "setup:dev": "npm run clear && npm run prepare && npm run setup:client && npm run setup:api", + "setup:dev-build-sdk": "npm run clear && npm run setup:sdk-nova-local && npm run prepare && npm run setup:client && npm run setup:api", "clear": "rimraf api/node_modules api/dist client/node_modules client/build", "dev": "concurrently 'cd api && npm run start-dev' 'cd client && npm run start'", "prepare": "husky install", diff --git a/setup_nova.sh b/setup_nova.sh index 98c3f9285..1d385f389 100755 --- a/setup_nova.sh +++ b/setup_nova.sh @@ -1,6 +1,6 @@ #!/bin/bash SDK_DIR="iota-sdk" -TARGET_COMMIT="5d8c3042c87fbde300269f55da90dd4d8c60f2f1" +TARGET_COMMIT="0694acfa2258fe3c28de2b88ea9c1a911de35051" if [ ! -d "$SDK_DIR" ]; then git clone -b 2.0 git@github.com:iotaledger/iota-sdk.git