diff --git a/.github/workflows/task-publish-runtime.yml b/.github/workflows/task-publish-runtime.yml new file mode 100644 index 00000000..6e757c3f --- /dev/null +++ b/.github/workflows/task-publish-runtime.yml @@ -0,0 +1,192 @@ +name: Publish Runtime Draft + +# The code (like generate-release-body) will be taken from the tag versions, not master +on: + workflow_dispatch: + inputs: + from: + description: tag (ex. runtime-53) to retrieve commit diff from + required: true + to: + description: tag (ex. runtime-155) to generate release note and srtool runtimes from + required: true + +jobs: + ####### Build runtimes with srtool ####### + + setup-scripts: + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - uses: actions/checkout@v5 + - name: Upload scripts + uses: actions/upload-artifact@v4 + with: + name: original-scripts + path: operator/scripts + - name: Upload tools + uses: actions/upload-artifact@v4 + with: + name: original-tools + path: tools + + read-rust-version: + runs-on: ubuntu-latest + permissions: + contents: read + outputs: + rust_version: ${{ steps.get-version.outputs.rust_version }} + steps: + - uses: actions/checkout@v5 + - id: get-version + run: | + RUST_VERSION=$(cat rust-toolchain | grep channel | grep --only-matching --perl-regexp "(\d+\.){2}\d+(-nightly)?") + echo "rust_version=$RUST_VERSION" >> $GITHUB_OUTPUT + + build-srtool-runtimes: + needs: ["setup-scripts", "read-rust-version"] + runs-on: DH-runners + permissions: + contents: read + strategy: + matrix: + chain: ["stagenet", "testnet", "mainnet"] + srtool_image: + - paritytech/srtool + srtool_image_tag: + - ${{ needs.read-rust-version.outputs.rust_version }} + steps: + - uses: actions/checkout@v5 + with: + ref: ${{ github.event.inputs.to }} + - name: Login to DockerHub + uses: docker/login-action@v3 + if: github.repository == 'datahaven-xyz/datahaven' + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + registry: index.docker.io + - name: Download original scripts + uses: actions/download-artifact@v5 + with: + name: original-scripts + path: original-scripts + - name: Build runtime using "${{ matrix.srtool_image }}:${{ matrix.srtool_image_tag }}" + id: srtool_build + env: + GH_WORKFLOW_MATRIX_CHAIN: ${{ matrix.chain }} + GH_WORKFLOW_MATRIX_SRTOOL_IMAGE: ${{ matrix.srtool_image }} + GH_WORKFLOW_MATRIX_SRTOOL_IMAGE_TAG: ${{ matrix.srtool_image_tag }} + RUNTIME_BUILD_OPTS: "--features=on-chain-release-build" + RUNTIME_BUILD_PROFILE: "production" + run: | + # Ensure we have permissions to write to the runtime folder target for the docker user + mkdir -p runtime/${GH_WORKFLOW_MATRIX_CHAIN}/target + chmod uog+rwX runtime/${GH_WORKFLOW_MATRIX_CHAIN}/target + + chmod u+x ./original-scripts/build-runtime-srtool.sh + ./original-scripts/build-runtime-srtool.sh + - name: Summary + run: | + echo '${{ steps.srtool_build.outputs.json }}' | jq . > ${{ matrix.chain }}-srtool-digest.json + cat ${{ matrix.chain }}-srtool-digest.json + cp ${{ steps.srtool_build.outputs.wasm_compressed }} ${{ matrix.chain }}-runtime.compact.compressed.wasm + - name: Archive Artifacts for ${{ matrix.chain }} + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.chain }}-runtime + path: | + ${{ matrix.chain }}-runtime.compact.compressed.wasm + ${{ matrix.chain }}-srtool-digest.json + + ####### Prepare the release draft ####### + publish-draft-release: + runs-on: ubuntu-latest + permissions: + contents: write + needs: ["setup-scripts", "build-srtool-runtimes"] + outputs: + release_url: ${{ steps.create-release.outputs.html_url }} + steps: + - name: Checkout + uses: actions/checkout@v5 + with: + ref: ${{ github.event.inputs.to }} + fetch-depth: 0 + - name: Download stagenet runtime + uses: actions/download-artifact@v5 + with: + name: stagenet-runtime + path: build + - name: Download testnet runtime + uses: actions/download-artifact@v5 + with: + name: testnet-runtime + path: build + - name: Download mainnet runtime + uses: actions/download-artifact@v5 + with: + name: mainnet-runtime + path: build + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version-file: "test/.nvmrc" + - name: Download Original Tools + uses: actions/download-artifact@v5 + with: + name: original-tools + path: original-tools + - name: Generate release body + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + id: generate-release-body + working-directory: original-tools + run: | + yarn + yarn -s run ts-node github/generate-runtimes-body.ts --owner "${{ github.repository_owner }}" --repo "$(basename ${{ github.repository }})" --from "${{ github.event.inputs.from }}" --to "${{ github.event.inputs.to }}" --srtool-report-folder '../build/' > ../body.md + - name: Get runtime versions + id: get-runtime-ver + run: | + runtime_stagenet_ver="$(cat ./operator/runtime/stagenet/src/lib.rs | grep -o 'spec_version: [0-9]*' | tail -1 | grep -o '[0-9]*')" + echo "runtime_stagenet_ver=$runtime_stagenet_ver" >> $GITHUB_OUTPUT + + runtime_testnet_ver="$(cat ./operator/runtime/testnet/src/lib.rs | grep -o 'spec_version: [0-9]*' | tail -1 | grep -o '[0-9]*')" + echo "runtime_testnet_ver=$runtime_testnet_ver" >> $GITHUB_OUTPUT + + runtime_mainnet_ver="$(cat ./operator/runtime/mainnet/src/lib.rs | grep -o 'spec_version: [0-9]*' | tail -1 | grep -o '[0-9]*')" + echo "runtime_mainnet_ver=$runtime_mainnet_ver" >> $GITHUB_OUTPUT + - name: Prepare runtime assets + working-directory: build + run: | + # Get runtime versions from the previous step + runtime_stagenet_ver="${{ steps.get-runtime-ver.outputs.runtime_stagenet_ver }}" + runtime_testnet_ver="${{ steps.get-runtime-ver.outputs.runtime_testnet_ver }}" + runtime_mainnet_ver="${{ steps.get-runtime-ver.outputs.runtime_mainnet_ver }}" + + # Rename files with version numbers + mv stagenet-runtime.compact.compressed.wasm ../stagenet-runtime-${runtime_stagenet_ver}.wasm + mv stagenet-srtool-digest.json ../stagenet-runtime-${runtime_stagenet_ver}.srtool-digest.json + + mv testnet-runtime.compact.compressed.wasm ../testnet-runtime-${runtime_testnet_ver}.wasm + mv testnet-srtool-digest.json ../testnet-runtime-${runtime_testnet_ver}.srtool-digest.json + + mv mainnet-runtime.compact.compressed.wasm ../mainnet-runtime-${runtime_mainnet_ver}.wasm + mv mainnet-srtool-digest.json ../mainnet-runtime-${runtime_mainnet_ver}.srtool-digest.json + + - name: Create draft release with runtime assets + id: create-release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ github.event.inputs.to }} + name: Runtime ${{ github.event.inputs.to }} + body_path: body.md + draft: true + files: | + stagenet-runtime-${{ steps.get-runtime-ver.outputs.runtime_stagenet_ver }}.wasm + stagenet-runtime-${{ steps.get-runtime-ver.outputs.runtime_stagenet_ver }}.srtool-digest.json + testnet-runtime-${{ steps.get-runtime-ver.outputs.runtime_testnet_ver }}.wasm + testnet-runtime-${{ steps.get-runtime-ver.outputs.runtime_testnet_ver }}.srtool-digest.json + mainnet-runtime-${{ steps.get-runtime-ver.outputs.runtime_mainnet_ver }}.wasm + mainnet-runtime-${{ steps.get-runtime-ver.outputs.runtime_mainnet_ver }}.srtool-digest.json diff --git a/operator/scripts/build-runtime-srtool.sh b/operator/scripts/build-runtime-srtool.sh new file mode 100755 index 00000000..3be476f8 --- /dev/null +++ b/operator/scripts/build-runtime-srtool.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +# CARGO_NET_GIT_FETCH_WITH_CLI=true and --entrypoint /srtool/entrypoint.sh +# are required to allow srtool to fetch from github private repositories + +# self-hosted runner uses user `maintenance` to match srtool `builder` user 1001 +# $(~/srtool/uid-gid-mapping.sh 1001 | xargs) is used to map the user and group + +# Docker command to generate JSON blob of the runtime +CMD="docker run \ + -i \ + --rm \ + -e CARGO_NET_GIT_FETCH_WITH_CLI=true \ + -e PACKAGE=${GH_WORKFLOW_MATRIX_CHAIN}-runtime \ + -e RUNTIME_DIR=runtime/${GH_WORKFLOW_MATRIX_CHAIN} \ + -e BUILD_OPTS=${RUNTIME_BUILD_OPTS} \ + -e PROFILE=${RUNTIME_BUILD_PROFILE} \ + -e WASM_BUILD_STD=0 \ + -v "${PWD}:/build" \ + ${GH_WORKFLOW_MATRIX_SRTOOL_IMAGE}:${GH_WORKFLOW_MATRIX_SRTOOL_IMAGE_TAG} \ + build --app --json -cM" + +# Here we run the command and stream the output (JSON blob) to a variable +stdbuf -oL $CMD | { + while IFS= read -r line + do + echo ║ $line + JSON="$line" + done + + echo "json=$JSON" >> $GITHUB_OUTPUT + + PROP=$(echo $JSON | jq -r .runtimes.compact.prop) + echo "proposal_hash=$PROP" >> $GITHUB_OUTPUT + + WASM=$(echo $JSON | jq -r .runtimes.compact.wasm) + echo "wasm=$WASM" >> $GITHUB_OUTPUT + + Z_WASM=$(echo $JSON | jq -r .runtimes.compressed.wasm) + echo "wasm_compressed=$Z_WASM" >> $GITHUB_OUTPUT + + IPFS=$(echo $JSON | jq -r .runtimes.compact.ipfs) + echo "ipfs=$IPFS" >> $GITHUB_OUTPUT +} diff --git a/tools/github/generate-runtime-body.ts b/tools/github/generate-runtime-body.ts new file mode 100644 index 00000000..8ab0b2cc --- /dev/null +++ b/tools/github/generate-runtime-body.ts @@ -0,0 +1,163 @@ +import { execSync } from "node:child_process"; +import { Octokit } from "octokit"; +import { readFileSync } from "node:fs"; +import yargs from "yargs"; +import path from "path"; +import { getCommitAndLabels, getCompareLink } from "./github-utils"; +import { blake2AsHex } from "@polkadot/util-crypto"; + +const BREAKING_CHANGES_LABEL = "breaking"; +const RUNTIME_CHANGES_LABEL = "B7-runtimenoteworthy"; +// `System` is pallet index 0. `authorize_upgrade` is extrinsic index 9. +const STAGENET_PREFIX_SYSTEM_AUTHORIZE_UPGRADE = "0x0009"; +// `System` is pallet index 0. `authorize_upgrade` is extrinsic index 9. +const TESTNET_PREFIX_SYSTEM_AUTHORIZE_UPGRADE = "0x0009"; +// `System` is pallet index 0. `authorize_upgrade` is extrinsic index 9. +const MAINNET_PREFIX_SYSTEM_AUTHORIZE_UPGRADE = "0x0009"; + +function capitalize(s) { + return s[0].toUpperCase() + s.slice(1); +} + +function getRuntimeInfo(srtoolReportFolder: string, runtimeName: string) { + const specVersion = execSync( + `cat ../operator/runtime/${runtimeName}/src/lib.rs | grep 'spec_version: [0-9]*' | tail -1` + ).toString(); + return { + name: runtimeName, + version: /:\s?([0-9A-z\-]*)/.exec(specVersion)[1], + srtool: JSON.parse( + readFileSync(path.join(srtoolReportFolder, `./${runtimeName}-srtool-digest.json`)).toString() + ), + }; +} + +// This function computes the preimage of the `system.authorize_upgrade` call +// for the given runtime code hash. The preimage is the BLAKE2b-256 hash of +// the given call. It is to be used in the governance proposal to authorize +// the runtime upgrade. +function authorizeUpgradeHash(runtimeName: string, srtool: any): string { + if (runtimeName === "datahaven-stagenet") { + return blake2AsHex( + STAGENET_PREFIX_SYSTEM_AUTHORIZE_UPGRADE + + srtool.runtimes.compressed.blake2_256.substr(2) // remove "0x" prefix + ); + } else if (runtimeName === "datahaven-testnet") { + return blake2AsHex( + TESTNET_PREFIX_SYSTEM_AUTHORIZE_UPGRADE + + srtool.runtimes.compressed.blake2_256.substr(2) // remove "0x" prefix + ); + } else { + return blake2AsHex( + MAINNET_PREFIX_SYSTEM_AUTHORIZE_UPGRADE + + srtool.runtimes.compressed.blake2_256.substr(2) // remove "0x" prefix + ); + } +} + +async function main() { + const argv = yargs(process.argv.slice(2)) + .usage("Usage: npm run ts-node github/generate-release-body.ts [args]") + .version("1.0.0") + .options({ + "srtool-report-folder": { + type: "string", + describe: "folder which contains -srtool-digest.json", + required: true, + }, + from: { + type: "string", + describe: "previous tag to retrieve commits from", + required: true, + }, + to: { + type: "string", + describe: "current tag to draft", + required: true, + }, + owner: { + type: "string", + describe: "Repository owner (Ex: datahaven-xyz)", + required: true, + }, + repo: { + type: "string", + describe: "Repository name (Ex: datahaven)", + required: true, + }, + }) + .demandOption(["srtool-report-folder", "from", "to"]) + .help().argv; + + const octokit = new Octokit({ + auth: process.env.GITHUB_TOKEN || undefined, + }); + + const previousTag = argv.from; + const newTag = argv.to; + + const runtimes = ["stagenet", "testnet", "mainnet"].map((runtimeName) => + getRuntimeInfo(argv["srtool-report-folder"], runtimeName) + ); + + const moduleLinks = ["polkadot-sdk", "evm", "frontier", "storage-hub"].map((repoName) => ({ + name: repoName, + link: getCompareLink(repoName, previousTag, newTag), + })); + + const { prByLabels } = await getCommitAndLabels( + octokit, + argv.owner, + argv.repo, + previousTag, + newTag + ); + const filteredPr = prByLabels[RUNTIME_CHANGES_LABEL] || []; + + const printPr = (pr) => { + if (pr.labels.includes(BREAKING_CHANGES_LABEL)) { + return "⚠️ " + pr.title + " (#" + pr.number + ")"; + } else { + return pr.title + " (#" + pr.number + ")"; + } + }; + + // + + const template = `${ + runtimes.length > 0 + ? `## Runtimes + +${runtimes + .map( + (runtime) => `### ${capitalize(runtime.name)} +\`\`\` +✨ spec_version : ${runtime.version} +🏋 size : ${runtime.srtool.runtimes.compressed.size} +#️⃣ sha256 : ${runtime.srtool.runtimes.compressed.sha256} +#️⃣ blake2-256 : ${runtime.srtool.runtimes.compressed.blake2_256} +🗳️ proposal (authorizeUpgrade) : ${authorizeUpgradeHash(runtime.name, runtime.srtool)} +\`\`\`` + ) + .join(`\n\n`)} +` + : "" + } + +## Build information + +WASM runtime built using \`${runtimes[0]?.srtool.info.rustc}\` + +## Changes + +${filteredPr.map((pr) => `* ${printPr(pr)}`).join("\n")} + +## Dependency changes + +DataHaven: https://github.com/${argv.owner}/${argv.repo}/compare/${previousTag}...${newTag} +${moduleLinks.map((modules) => `${capitalize(modules.name)}: ${modules.link}`).join("\n")} +`; + console.log(template); +} + +main(); diff --git a/tools/package-lock.json b/tools/package-lock.json index cc7636db..23fc7361 100644 --- a/tools/package-lock.json +++ b/tools/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.1", "license": "GPL-3.0", "dependencies": { + "@polkadot/api": "^6.6.1", "octokit": "^1.0.6", "ts-node": "^8.10.1", "typescript": "^4.4.3", @@ -18,6 +19,33 @@ "@types/yargs": "^15.0.12" } }, + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@noble/hashes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.0.0.tgz", + "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==", + "license": "MIT" + }, + "node_modules/@noble/secp256k1": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.5.5.tgz", + "integrity": "sha512-sZ1W6gQzYnu45wPrWx8D3kwI2/U29VYTx9OjbDAd7jwRItJ0cSTMPRL/C8AWZFn9kWFLQGqEXVEE86w4Z8LpIQ==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, "node_modules/@octokit/app": { "version": "12.0.7", "license": "MIT", @@ -489,10 +517,361 @@ "version": "5.8.0", "license": "MIT" }, + "node_modules/@polkadot/api": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-6.12.1.tgz", + "integrity": "sha512-RVdTiA2WaEvproM3i6E9TKS1bfXpPd9Ly9lUG/kVLaspjKoIot9DJUDTl97TJ+7xr8LXGbXqm448Ud0hsEBV8Q==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.16.3", + "@polkadot/api-derive": "6.12.1", + "@polkadot/keyring": "^8.1.2", + "@polkadot/rpc-core": "6.12.1", + "@polkadot/rpc-provider": "6.12.1", + "@polkadot/types": "6.12.1", + "@polkadot/types-known": "6.12.1", + "@polkadot/util": "^8.1.2", + "@polkadot/util-crypto": "^8.1.2", + "eventemitter3": "^4.0.7", + "rxjs": "^7.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/api-derive": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-6.12.1.tgz", + "integrity": "sha512-5LOVlG5EBCT+ytY6aHmQ4RdEWZovZQqRoc6DLd5BLhkR7BFTHKSkLQW+89so8jd0zEtmSXBVPPnsrXS8joM35Q==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.16.3", + "@polkadot/api": "6.12.1", + "@polkadot/rpc-core": "6.12.1", + "@polkadot/types": "6.12.1", + "@polkadot/util": "^8.1.2", + "@polkadot/util-crypto": "^8.1.2", + "rxjs": "^7.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/keyring": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-8.7.1.tgz", + "integrity": "sha512-t6ZgQVC+nQT7XwbWtEhkDpiAzxKVJw8Xd/gWdww6xIrawHu7jo3SGB4QNdPgkf8TvDHYAAJiupzVQYAlOIq3GA==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.17.8", + "@polkadot/util": "8.7.1", + "@polkadot/util-crypto": "8.7.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@polkadot/util": "8.7.1", + "@polkadot/util-crypto": "8.7.1" + } + }, + "node_modules/@polkadot/networks": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-8.7.1.tgz", + "integrity": "sha512-8xAmhDW0ry5EKcEjp6VTuwoTm0DdDo/zHsmx88P6sVL87gupuFsL+B6TrsYLl8GcaqxujwrOlKB+CKTUg7qFKg==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.17.8", + "@polkadot/util": "8.7.1", + "@substrate/ss58-registry": "^1.17.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/rpc-core": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-6.12.1.tgz", + "integrity": "sha512-Hb08D9zho3SB1UNlUCmG5q0gdgbOx25JKGLDfSYpD/wtD0Y1Sf2X5cfgtMoSYE3USWiRdCu4BxQkXTiRjPjzJg==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.16.3", + "@polkadot/rpc-provider": "6.12.1", + "@polkadot/types": "6.12.1", + "@polkadot/util": "^8.1.2", + "rxjs": "^7.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/rpc-provider": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-6.12.1.tgz", + "integrity": "sha512-uUHD3fLTOeZYWJoc6DQlhz+MJR33rVelasV+OxFY2nSD9MSNXRwQh+9UKDQBnyxw5B4BZ2QaEGfucDeavXmVDw==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.16.3", + "@polkadot/types": "6.12.1", + "@polkadot/util": "^8.1.2", + "@polkadot/util-crypto": "^8.1.2", + "@polkadot/x-fetch": "^8.1.2", + "@polkadot/x-global": "^8.1.2", + "@polkadot/x-ws": "^8.1.2", + "eventemitter3": "^4.0.7" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/types": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-6.12.1.tgz", + "integrity": "sha512-O37cAGUL0xiXTuO3ySweVh0OuFUD6asrd0TfuzGsEp3jAISWdElEHV5QDiftWq8J9Vf8BMgTcP2QLFbmSusxqA==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.16.3", + "@polkadot/types-known": "6.12.1", + "@polkadot/util": "^8.1.2", + "@polkadot/util-crypto": "^8.1.2", + "rxjs": "^7.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/types-known": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-6.12.1.tgz", + "integrity": "sha512-Z8bHpPQy+mqUm0uR1tai6ra0bQIoPmgRcGFYUM+rJtW1kx/6kZLh10HAICjLpPeA1cwLRzaxHRDqH5MCU6OgXw==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.16.3", + "@polkadot/networks": "^8.1.2", + "@polkadot/types": "6.12.1", + "@polkadot/util": "^8.1.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/util": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-8.7.1.tgz", + "integrity": "sha512-XjY1bTo7V6OvOCe4yn8H2vifeuBciCy0gq0k5P1tlGUQLI/Yt0hvDmxcA0FEPtqg8CL+rYRG7WXGPVNjkrNvyQ==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.17.8", + "@polkadot/x-bigint": "8.7.1", + "@polkadot/x-global": "8.7.1", + "@polkadot/x-textdecoder": "8.7.1", + "@polkadot/x-textencoder": "8.7.1", + "@types/bn.js": "^5.1.0", + "bn.js": "^5.2.0", + "ip-regex": "^4.3.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/util-crypto": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-8.7.1.tgz", + "integrity": "sha512-TaSuJ2aNrB5sYK7YXszkEv24nYJKRFqjF2OrggoMg6uYxUAECvTkldFnhtgeizMweRMxJIBu6bMHlSIutbWgjw==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.17.8", + "@noble/hashes": "1.0.0", + "@noble/secp256k1": "1.5.5", + "@polkadot/networks": "8.7.1", + "@polkadot/util": "8.7.1", + "@polkadot/wasm-crypto": "^5.1.1", + "@polkadot/x-bigint": "8.7.1", + "@polkadot/x-randomvalues": "8.7.1", + "@scure/base": "1.0.0", + "ed2curve": "^0.3.0", + "tweetnacl": "^1.0.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@polkadot/util": "8.7.1" + } + }, + "node_modules/@polkadot/wasm-crypto": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-5.1.1.tgz", + "integrity": "sha512-JCcAVfH8DhYuEyd4oX1ouByxhou0TvpErKn8kHjtzt7+tRoFi0nzWlmK4z49vszsV3JJgXxV81i10C0BYlwTcQ==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.17.8", + "@polkadot/wasm-crypto-asmjs": "^5.1.1", + "@polkadot/wasm-crypto-wasm": "^5.1.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@polkadot/util": "*", + "@polkadot/x-randomvalues": "*" + } + }, + "node_modules/@polkadot/wasm-crypto-asmjs": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-5.1.1.tgz", + "integrity": "sha512-1WBwc2G3pZMKW1T01uXzKE30Sg22MXmF3RbbZiWWk3H2d/Er4jZQRpjumxO5YGWan+xOb7HQQdwnrUnrPgbDhg==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.17.8" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@polkadot/util": "*" + } + }, + "node_modules/@polkadot/wasm-crypto-wasm": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-5.1.1.tgz", + "integrity": "sha512-F9PZ30J2S8vUNl2oY7Myow5Xsx5z5uNVpnNlJwlmY8IXBvyucvyQ4HSdhJsrbs4W1BfFc0mHghxgp0FbBCnf/Q==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.17.8" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@polkadot/util": "*" + } + }, + "node_modules/@polkadot/x-bigint": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-8.7.1.tgz", + "integrity": "sha512-ClkhgdB/KqcAKk3zA6Qw8wBL6Wz67pYTPkrAtImpvoPJmR+l4RARauv+MH34JXMUNlNb3aUwqN6lq2Z1zN+mJg==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.17.8", + "@polkadot/x-global": "8.7.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-fetch": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-8.7.1.tgz", + "integrity": "sha512-ygNparcalYFGbspXtdtZOHvNXZBkNgmNO+um9C0JYq74K5OY9/be93uyfJKJ8JcRJtOqBfVDsJpbiRkuJ1PRfg==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.17.8", + "@polkadot/x-global": "8.7.1", + "@types/node-fetch": "^2.6.1", + "node-fetch": "^2.6.7" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-global": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-8.7.1.tgz", + "integrity": "sha512-WOgUor16IihgNVdiTVGAWksYLUAlqjmODmIK1cuWrLOZtV1VBomWcb3obkO9sh5P6iWziAvCB/i+L0vnTN9ZCA==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.17.8" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-randomvalues": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-8.7.1.tgz", + "integrity": "sha512-njt17MlfN6yNyNEti7fL12lr5qM6A1aSGkWKVuqzc7XwSBesifJuW4km5u6r2gwhXjH2eHDv9SoQ7WXu8vrrkg==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.17.8", + "@polkadot/x-global": "8.7.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-textdecoder": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-8.7.1.tgz", + "integrity": "sha512-ia0Ie2zi4VdQdNVD2GE2FZzBMfX//hEL4w546RMJfZM2LqDS674LofHmcyrsv5zscLnnRyCxZC1+J2dt+6MDIA==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.17.8", + "@polkadot/x-global": "8.7.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-textencoder": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-8.7.1.tgz", + "integrity": "sha512-XDO0A27Xy+eJCKSxENroB8Dcnl+UclGG4ZBei+P/BqZ9rsjskUyd2Vsl6peMXAcsxwOE7g0uTvujoGM8jpKOXw==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.17.8", + "@polkadot/x-global": "8.7.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@polkadot/x-ws": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-8.7.1.tgz", + "integrity": "sha512-Mt0tcNzGXyKnN3DQ06alkv+JLtTfXWu6zSypFrrKHSQe3u79xMQ1nSicmpT3gWLhIa8YF+8CYJXMrqaXgCnDhw==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.17.8", + "@polkadot/x-global": "8.7.1", + "@types/websocket": "^1.0.5", + "websocket": "^1.0.34" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@scure/base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.0.0.tgz", + "integrity": "sha512-gIVaYhUsy+9s58m/ETjSJVKHhKTBMmcRb9cEV5/5dwvfDlfORjKrFsDeDHWRrm6RjcPvCLZFwGJjAjLj1gg4HA==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/@substrate/ss58-registry": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/@substrate/ss58-registry/-/ss58-registry-1.51.0.tgz", + "integrity": "sha512-TWDurLiPxndFgKjVavCniytBIw+t4ViOi7TYp9h/D0NMmkEc9klFTo+827eyEJ0lELpqO207Ey7uGxUa+BS1jQ==", + "license": "Apache-2.0" + }, "node_modules/@types/aws-lambda": { "version": "8.10.152", "license": "MIT" }, + "node_modules/@types/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/btoa-lite": { "version": "1.0.2", "license": "MIT" @@ -520,6 +899,25 @@ "undici-types": "~7.12.0" } }, + "node_modules/@types/node-fetch": { + "version": "2.6.13", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.13.tgz", + "integrity": "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.4" + } + }, + "node_modules/@types/websocket": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.10.tgz", + "integrity": "sha512-svjGZvPB7EzuYS94cI7a+qhwgGU1y89wUgjT6E2wVUfmAGIvRfT7obBvRtnhXCSsoMdlG4gBFGE7MfkIXZLoww==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/yargs": { "version": "15.0.19", "dev": true, @@ -576,6 +974,12 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "license": "MIT", @@ -648,6 +1052,12 @@ "version": "2.2.3", "license": "Apache-2.0" }, + "node_modules/bn.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "license": "MIT" + }, "node_modules/bottleneck": { "version": "2.19.5", "license": "MIT" @@ -693,6 +1103,19 @@ "license": "BSD-3-Clause", "optional": true }, + "node_modules/bufferutil": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.9.tgz", + "integrity": "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, "node_modules/call-bind": { "version": "1.0.8", "license": "MIT", @@ -713,7 +1136,6 @@ "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "license": "MIT", - "optional": true, "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -770,11 +1192,51 @@ "version": "1.1.4", "license": "MIT" }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "3.0.2", "license": "MIT", "optional": true }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, "node_modules/define-data-property": { "version": "1.1.4", "license": "MIT", @@ -791,6 +1253,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/deprecation": { "version": "2.3.1", "license": "ISC" @@ -805,7 +1276,6 @@ "node_modules/dunder-proto": { "version": "1.0.1", "license": "MIT", - "optional": true, "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -822,6 +1292,15 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/ed2curve": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ed2curve/-/ed2curve-0.3.0.tgz", + "integrity": "sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ==", + "license": "Unlicense", + "dependencies": { + "tweetnacl": "1.x.x" + } + }, "node_modules/emoji-regex": { "version": "8.0.0", "license": "MIT" @@ -829,7 +1308,6 @@ "node_modules/es-define-property": { "version": "1.0.1", "license": "MIT", - "optional": true, "engines": { "node": ">= 0.4" } @@ -837,7 +1315,6 @@ "node_modules/es-errors": { "version": "1.3.0", "license": "MIT", - "optional": true, "engines": { "node": ">= 0.4" } @@ -845,7 +1322,6 @@ "node_modules/es-object-atoms": { "version": "1.1.1", "license": "MIT", - "optional": true, "dependencies": { "es-errors": "^1.3.0" }, @@ -853,6 +1329,61 @@ "node": ">= 0.4" } }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "hasInstallScript": true, + "license": "ISC", + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "license": "ISC", + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, "node_modules/escalade": { "version": "3.2.0", "license": "MIT", @@ -860,6 +1391,21 @@ "node": ">=6" } }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/esprima": { "version": "4.0.1", "license": "BSD-2-Clause", @@ -872,6 +1418,22 @@ "node": ">=4" } }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, "node_modules/events": { "version": "1.1.1", "license": "MIT", @@ -880,6 +1442,15 @@ "node": ">=0.4.x" } }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "license": "ISC", + "dependencies": { + "type": "^2.7.2" + } + }, "node_modules/for-each": { "version": "0.3.5", "license": "MIT", @@ -894,6 +1465,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fromentries": { "version": "1.3.2", "funding": [ @@ -915,7 +1502,6 @@ "node_modules/function-bind": { "version": "1.1.2", "license": "MIT", - "optional": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -930,7 +1516,6 @@ "node_modules/get-intrinsic": { "version": "1.3.0", "license": "MIT", - "optional": true, "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", @@ -953,7 +1538,6 @@ "node_modules/get-proto": { "version": "1.0.1", "license": "MIT", - "optional": true, "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -970,7 +1554,6 @@ "node_modules/gopd": { "version": "1.2.0", "license": "MIT", - "optional": true, "engines": { "node": ">= 0.4" }, @@ -997,7 +1580,6 @@ "node_modules/has-symbols": { "version": "1.1.0", "license": "MIT", - "optional": true, "engines": { "node": ">= 0.4" }, @@ -1008,7 +1590,6 @@ "node_modules/has-tostringtag": { "version": "1.0.2", "license": "MIT", - "optional": true, "dependencies": { "has-symbols": "^1.0.3" }, @@ -1022,7 +1603,6 @@ "node_modules/hasown": { "version": "2.0.2", "license": "MIT", - "optional": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -1047,6 +1627,15 @@ "license": "ISC", "optional": true }, + "node_modules/ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-arguments": { "version": "1.2.0", "license": "MIT", @@ -1135,6 +1724,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, "node_modules/isarray": { "version": "1.0.0", "license": "MIT", @@ -1242,15 +1837,41 @@ "node_modules/math-intrinsics": { "version": "1.1.0", "license": "MIT", - "optional": true, "engines": { "node": ">= 0.4" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/ms": { "version": "2.1.3", "license": "MIT" }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "license": "ISC" + }, "node_modules/node-fetch": { "version": "2.7.0", "license": "MIT", @@ -1269,6 +1890,17 @@ } } }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, "node_modules/octokit": { "version": "1.8.1", "license": "MIT", @@ -1317,6 +1949,15 @@ "node": ">=0.10.0" } }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "funding": [ @@ -1451,6 +2092,33 @@ "typescript": ">=2.7" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "license": "Unlicense" + }, + "node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "license": "ISC" + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, "node_modules/typescript": { "version": "4.9.5", "license": "Apache-2.0", @@ -1487,6 +2155,19 @@ "querystring": "0.2.0" } }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, "node_modules/util": { "version": "0.12.5", "license": "MIT", @@ -1523,6 +2204,23 @@ "version": "3.0.1", "license": "BSD-2-Clause" }, + "node_modules/websocket": { + "version": "1.0.35", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.35.tgz", + "integrity": "sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==", + "license": "Apache-2.0", + "dependencies": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.63", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/whatwg-url": { "version": "5.0.0", "license": "MIT", @@ -1602,6 +2300,16 @@ "node": ">=10" } }, + "node_modules/yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT", + "engines": { + "node": ">=0.10.32" + } + }, "node_modules/yallist": { "version": "4.0.0", "license": "ISC" diff --git a/tools/package.json b/tools/package.json index 3f6bea8f..fbd50683 100644 --- a/tools/package.json +++ b/tools/package.json @@ -3,6 +3,7 @@ "version": "0.0.1", "license": "GPL-3.0", "dependencies": { + "@polkadot/api": "^6.6.1", "octokit": "^1.0.6", "ts-node": "^8.10.1", "typescript": "^4.4.3", @@ -10,5 +11,9 @@ }, "devDependencies": { "@types/yargs": "^15.0.12" + }, + "scripts": { + "print-client-release-issue": "ts-node github/print-client-release-issue.ts", + "print-runtime-release-issue": "ts-node github/print-runtime-release-issue.ts" } }