diff --git a/.github/workflows/push-master.yml b/.github/workflows/push-master.yml index 1aca39553..509a459ea 100644 --- a/.github/workflows/push-master.yml +++ b/.github/workflows/push-master.yml @@ -25,6 +25,26 @@ jobs: yarn install --immutable | grep -v 'YN0013' yarn ${{ matrix.step }} + # publish to ipfs when a release is detected + ipfs: + strategy: + matrix: + step: ['build:release:ipfs'] + name: ${{ matrix.step }} + if: "startsWith(github.event.head_commit.message, '[CI Skip] release/stable') && github.repository == 'polkadot-js/phishing'" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: ${{ matrix.step }} + env: + CF_API_TOKEN: ${{ secrets.CF_API_TOKEN }} + PINATA_API_KEY: ${{ secrets.PINATA_API_KEY }} + PINATA_SECRET_KEY: ${{ secrets.PINATA_SECRET_KEY }} + run: | + yarn install --immutable | grep -v 'YN0013' + ./scripts/ipfsPrep.sh + yarn ${{ matrix.step }} + dummy: runs-on: ubuntu-latest steps: diff --git a/index.html b/index.html index 9d0897167..6dd38190f 100644 --- a/index.html +++ b/index.html @@ -145,8 +145,8 @@ draw(); const [addrBody, metaBody] = await Promise.all([ - fetch('https://polkadot.js.org/phishing/address.json'), - fetch('https://polkadot.js.org/phishing/urlmeta.json') + fetch('address.json'), + fetch('urlmeta.json') ]); [addrJson, metaJson] = await Promise.all([ diff --git a/package.json b/package.json index e63ee9ba8..f95cc0c48 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "build": "polkadot-dev-build-ts", "build:extra": "node scripts/sortAll.mjs", "build:release": "polkadot-ci-ghact-build --skip-beta", + "build:release:ipfs": "node scripts/ipfsUpload.mjs", "lint": "polkadot-dev-run-lint", "clean": "polkadot-dev-clean-build", "phishing:addrcheck": "polkadot-dev-run-test packages/phishing/src/addrcheck", @@ -25,5 +26,9 @@ "@polkadot/dev": "^0.61.25", "@types/jest": "^26.0.20" }, - "version": "0.4.50" + "version": "0.4.50", + "dependencies": { + "@pinata/sdk": "^1.1.11", + "dnslink-cloudflare": "^3.0.0" + } } diff --git a/scripts/ipfsPrep.sh b/scripts/ipfsPrep.sh new file mode 100755 index 000000000..4c4ecf1b0 --- /dev/null +++ b/scripts/ipfsPrep.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +# Copyright 2020-2021 @polkadot/phishing authors & contributors +# SPDX-License-Identifier: Apache-2.0 + +mkdir -p build +cp inhex.html address.json all.json known.json urlmeta.json build diff --git a/scripts/ipfsUpload.mjs b/scripts/ipfsUpload.mjs new file mode 100755 index 000000000..08507f29b --- /dev/null +++ b/scripts/ipfsUpload.mjs @@ -0,0 +1,65 @@ +// Copyright 2020-2021 @polkadot/phishing authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import pinataSDK from '@pinata/sdk'; +import cloudflare from 'dnslink-cloudflare'; + +const SUB_DOMAIN = 'phishing'; +const DOMAIN = 'dotapps.io'; +const DST = 'build'; +const PINMETA = { name: `${SUB_DOMAIN}.${DOMAIN}` }; + +const pinata = pinataSDK(process.env.PINATA_API_KEY, process.env.PINATA_SECRET_KEY); + +async function pin () { + const result = await pinata.pinFromFS(DST, { pinataMetadata: PINMETA }); + + console.log(`Pinned ${result.IpfsHash}`); + + return result.IpfsHash; +} + +async function unpin (exclude) { + const result = await pinata.pinList({ metadata: PINMETA, status: 'pinned' }); + + if (result.count > 1) { + const filtered = result.rows + .map((r) => r.ipfs_pin_hash) + .filter((hash) => hash !== exclude); + + if (filtered.length) { + await Promise.all( + filtered.map((hash) => + pinata + .unpin(hash) + .then(() => console.log(`Unpinned ${hash}`)) + .catch(console.error) + ) + ); + } + } +} + +async function dnslink (hash) { + const records = [`_dnslink.${SUB_DOMAIN}.${DOMAIN}`]; + + await Promise.all(records.map((record) => + cloudflare( + { token: process.env.CF_API_TOKEN }, + { link: `/ipfs/${hash}`, record, zone: DOMAIN } + ) + )); + + console.log(`Dnslink ${hash} for ${records.join(', ')}`); +} + +async function main () { + const hash = await pin(); + + await dnslink(hash); + await unpin(hash); +} + +main() + .catch(console.error) + .finally(() => process.exit()); diff --git a/yarn.lock b/yarn.lock index 8c342da03..72a2c27df 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1738,6 +1738,19 @@ __metadata: languageName: node linkType: hard +"@pinata/sdk@npm:^1.1.11": + version: 1.1.11 + resolution: "@pinata/sdk@npm:1.1.11" + dependencies: + axios: ^0.18.1 + base-path-converter: ^1.0.2 + form-data: ^2.3.3 + is-ipfs: ^0.6.0 + recursive-fs: ^1.1.2 + checksum: b17b655534dcfe84aeb36811c8077d8aabeabe238712980d1e7d8fef7d68513870ab0b6f7488f3df452288ae4b988f07d45b51524941fd2eb86030429fd3e7ad + languageName: node + linkType: hard + "@polkadot/dev@npm:^0.61.25": version: 0.61.25 resolution: "@polkadot/dev@npm:0.61.25" @@ -1996,6 +2009,13 @@ __metadata: languageName: node linkType: hard +"@sindresorhus/is@npm:^4.0.0": + version: 4.0.0 + resolution: "@sindresorhus/is@npm:4.0.0" + checksum: 7022d5037ff778c5c369c353e16a173c3797de5f4196b631ec00b0f710a3ccb016937ce454d4fac6ca32d695ed30a59444e941f8f78ff7692dc3c50959b3fe61 + languageName: node + linkType: hard + "@sinonjs/commons@npm:^1.7.0": version: 1.8.1 resolution: "@sinonjs/commons@npm:1.8.1" @@ -2023,6 +2043,15 @@ __metadata: languageName: node linkType: hard +"@szmarczak/http-timer@npm:^4.0.5": + version: 4.0.5 + resolution: "@szmarczak/http-timer@npm:4.0.5" + dependencies: + defer-to-connect: ^2.0.0 + checksum: 13d8f71dbd792b620b2cd13d72d086ef031ebefd5263a9db2f34693a32e4d90920fa1d7075cd59bf0c9810b2b1b93ad36d89fc88aba4cd3b8022df7ecc5ffdec + languageName: node + linkType: hard + "@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.7": version: 7.1.12 resolution: "@types/babel__core@npm:7.1.12" @@ -2073,6 +2102,18 @@ __metadata: languageName: node linkType: hard +"@types/cacheable-request@npm:^6.0.1": + version: 6.0.1 + resolution: "@types/cacheable-request@npm:6.0.1" + dependencies: + "@types/http-cache-semantics": "*" + "@types/keyv": "*" + "@types/node": "*" + "@types/responselike": "*" + checksum: 3dae802a0808573986c56b92bf16cd031a5b648b6c893d20c7ef6bfda3fc72a2107c7978697d2b27b14febc597162d6959985eeb5befc307a9f9f3c5081d4905 + languageName: node + linkType: hard + "@types/graceful-fs@npm:^4.1.2": version: 4.1.4 resolution: "@types/graceful-fs@npm:4.1.4" @@ -2082,6 +2123,13 @@ __metadata: languageName: node linkType: hard +"@types/http-cache-semantics@npm:*": + version: 4.0.0 + resolution: "@types/http-cache-semantics@npm:4.0.0" + checksum: e16fae56d4daea4ed678b4d5918b693b44ca12fb5e479b87d242d3a35bf3a014974dcf9ed7aba7e29149fdb6c3719f9987fca51b20ef10aa84b58f86553c2f74 + languageName: node + linkType: hard + "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.3 resolution: "@types/istanbul-lib-coverage@npm:2.0.3" @@ -2138,7 +2186,7 @@ __metadata: languageName: node linkType: hard -"@types/keyv@npm:^3.1.1": +"@types/keyv@npm:*, @types/keyv@npm:^3.1.1": version: 3.1.1 resolution: "@types/keyv@npm:3.1.1" dependencies: @@ -2147,6 +2195,13 @@ __metadata: languageName: node linkType: hard +"@types/minimist@npm:^1.2.0": + version: 1.2.1 + resolution: "@types/minimist@npm:1.2.1" + checksum: 3a6f5fe35f1656b34a4ccd5a5db1c38509d8d5b59625865b8c2b997994fcb0cfde0d9af7c5507b95dc5a0a32a22886c189e505cd2e52a7ef36d3c9982f07ed5a + languageName: node + linkType: hard + "@types/node-fetch@npm:^2.5.8": version: 2.5.8 resolution: "@types/node-fetch@npm:2.5.8" @@ -2178,7 +2233,7 @@ __metadata: languageName: node linkType: hard -"@types/responselike@npm:^1.0.0": +"@types/responselike@npm:*, @types/responselike@npm:^1.0.0": version: 1.0.0 resolution: "@types/responselike@npm:1.0.0" dependencies: @@ -2640,6 +2695,13 @@ __metadata: languageName: node linkType: hard +"arrify@npm:^1.0.1": + version: 1.0.1 + resolution: "arrify@npm:1.0.1" + checksum: f1d3bae819f49f51a09da5f5c5ce282e79ca69bbdb32db1d9f6c62b151ef801b74398d007cfe89686e2c5aeb62576a398b9068e5172b7f4e20157aa3284076d3 + languageName: node + linkType: hard + "asn1@npm:~0.2.3": version: 0.2.4 resolution: "asn1@npm:0.2.4" @@ -2737,6 +2799,16 @@ __metadata: languageName: node linkType: hard +"axios@npm:^0.18.1": + version: 0.18.1 + resolution: "axios@npm:0.18.1" + dependencies: + follow-redirects: 1.5.10 + is-buffer: ^2.0.2 + checksum: 6188a1b815733c1b6118eddc70d931caea7f867ca77ade8205e49cd6e457b837460cc4e325e19c66a81190a170fde5b76480878366b3743131977da76d571bec + languageName: node + linkType: hard + "babel-jest@npm:^26.6.3": version: 26.6.3 resolution: "babel-jest@npm:26.6.3" @@ -2871,7 +2943,14 @@ __metadata: languageName: node linkType: hard -"base-x@npm:^3.0.8": +"base-path-converter@npm:^1.0.2": + version: 1.0.2 + resolution: "base-path-converter@npm:1.0.2" + checksum: 66567fbd0c98fbb30724b09ed306a7dab80fcc9128625c005b08e592c977429a73ec8b412802ced5d458414ae5cb409034e48c62125d2b67d535bc73c59c0808 + languageName: node + linkType: hard + +"base-x@npm:^3.0.2, base-x@npm:^3.0.8": version: 3.0.8 resolution: "base-x@npm:3.0.8" dependencies: @@ -3046,6 +3125,15 @@ __metadata: languageName: node linkType: hard +"bs58@npm:^4.0.1": + version: 4.0.1 + resolution: "bs58@npm:4.0.1" + dependencies: + base-x: ^3.0.2 + checksum: 0da897a0e527b31ec0fd7ce4d84a86278196acb4fa4f5010dce38a7b83b8b0bbe26909843878c2aa32bdbe00b93a68408d42c74a1cfaa05ca64f29bd5dff4187 + languageName: node + linkType: hard + "bser@npm:2.1.1": version: 2.1.1 resolution: "bser@npm:2.1.1" @@ -3062,7 +3150,7 @@ __metadata: languageName: node linkType: hard -"buffer@npm:^5.5.0": +"buffer@npm:^5.5.0, buffer@npm:^5.6.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" dependencies: @@ -3089,6 +3177,13 @@ __metadata: languageName: node linkType: hard +"cacheable-lookup@npm:^5.0.3": + version: 5.0.4 + resolution: "cacheable-lookup@npm:5.0.4" + checksum: cb5849f5841e37f007aeaea2516ecf2cb0a9730667694d131331a04413f6c3bf2587391d55003cc2b95ef59085b5f50ac9887a0b7c673fc0c8102bcc69b6d73d + languageName: node + linkType: hard + "cacheable-request@npm:^6.0.0": version: 6.1.0 resolution: "cacheable-request@npm:6.1.0" @@ -3104,6 +3199,21 @@ __metadata: languageName: node linkType: hard +"cacheable-request@npm:^7.0.1": + version: 7.0.1 + resolution: "cacheable-request@npm:7.0.1" + dependencies: + clone-response: ^1.0.2 + get-stream: ^5.1.0 + http-cache-semantics: ^4.0.0 + keyv: ^4.0.0 + lowercase-keys: ^2.0.0 + normalize-url: ^4.1.0 + responselike: ^2.0.0 + checksum: fe0b6f3b8a145c98fecc00f0f1b13a9886cad9bf4537533c5568cba19db81c8ee09ace9c61967d5a4e72615e174d771b6b8080c3816f0b74fc6f9c69060c3ff0 + languageName: node + linkType: hard + "call-bind@npm:^1.0.0": version: 1.0.0 resolution: "call-bind@npm:1.0.0" @@ -3121,6 +3231,17 @@ __metadata: languageName: node linkType: hard +"camelcase-keys@npm:^6.2.2": + version: 6.2.2 + resolution: "camelcase-keys@npm:6.2.2" + dependencies: + camelcase: ^5.3.1 + map-obj: ^4.0.0 + quick-lru: ^4.0.1 + checksum: d4bd5fa5249127be0f5b1aa961da3a9de7d0a578d9524c5013f21c0ed345637eaa1e42bab28a75bbfc8511911ffb30fec4191a9efcec52741c1a3402dc38dd53 + languageName: node + linkType: hard + "camelcase@npm:^5.0.0, camelcase@npm:^5.3.1": version: 5.3.1 resolution: "camelcase@npm:5.3.1" @@ -3248,6 +3369,32 @@ __metadata: languageName: node linkType: hard +"cids@npm:~0.7.0": + version: 0.7.5 + resolution: "cids@npm:0.7.5" + dependencies: + buffer: ^5.5.0 + class-is: ^1.1.0 + multibase: ~0.6.0 + multicodec: ^1.0.0 + multihashes: ~0.4.15 + checksum: 8e19dde8d5f9a9900c3823b61c83ee1f0af1ba71c5694a06aa1d79f4e5e1aa9439dff0bc8ccd3e80f1bc09078457a0d212db90aebd8982c8fd4b142d22567eb6 + languageName: node + linkType: hard + +"cids@npm:~0.8.0": + version: 0.8.3 + resolution: "cids@npm:0.8.3" + dependencies: + buffer: ^5.6.0 + class-is: ^1.1.0 + multibase: ^1.0.0 + multicodec: ^1.0.1 + multihashes: ^1.0.1 + checksum: 11139e4c978eb97d24ec3e80642337b65deee574a98690ea0cdd0861c437c6c18af431d36f56dd433ece7ce6793c8bd6ab71b28630375c7598aed7a4931cc01c + languageName: node + linkType: hard + "cipher-base@npm:^1.0.1": version: 1.0.4 resolution: "cipher-base@npm:1.0.4" @@ -3265,6 +3412,13 @@ __metadata: languageName: node linkType: hard +"class-is@npm:^1.1.0": + version: 1.1.0 + resolution: "class-is@npm:1.1.0" + checksum: 1d9f1764fc86d0624b542f4a0cdcf842bec97d957d4f7eb87439b95b3ba0065e852c9ded902064785e1bb776537f62135c025b89fbd8b8852ae8463bde277ccd + languageName: node + linkType: hard + "class-utils@npm:^0.3.5": version: 0.3.6 resolution: "class-utils@npm:0.3.6" @@ -3661,6 +3815,15 @@ __metadata: languageName: node linkType: hard +"debug@npm:=3.1.0": + version: 3.1.0 + resolution: "debug@npm:3.1.0" + dependencies: + ms: 2.0.0 + checksum: 1295acd5e0531761255661d325cd0a80ac8c5f6de8942a53bb23c2197ccb97526972de662ed0e5d9393be83f3428a298a6e7185ecb02f0da6282019cd2ffb4a8 + languageName: node + linkType: hard + "debug@npm:^2.2.0, debug@npm:^2.3.3, debug@npm:^2.6.9": version: 2.6.9 resolution: "debug@npm:2.6.9" @@ -3682,7 +3845,17 @@ __metadata: languageName: node linkType: hard -"decamelize@npm:^1.2.0": +"decamelize-keys@npm:^1.1.0": + version: 1.1.0 + resolution: "decamelize-keys@npm:1.1.0" + dependencies: + decamelize: ^1.1.0 + map-obj: ^1.0.0 + checksum: dbfe6d594810ef134f8e3b8aa1684c854187a225999a0c3871b8c32d8fda886d1832b79b952a53e9557be17a78ec0198b6c26a5a5a35d012d6b18340a4dc6356 + languageName: node + linkType: hard + +"decamelize@npm:^1.1.0, decamelize@npm:^1.2.0": version: 1.2.0 resolution: "decamelize@npm:1.2.0" checksum: 8ca9d03ea8ac07920f4504e219d18edff2491bdd0a3e05a1e5ca2e9a0bf6333564231de3528b01d5e76c40a38c37bbc1e09cb5a0424714f53dd615ed78ced464 @@ -3767,6 +3940,13 @@ __metadata: languageName: node linkType: hard +"defer-to-connect@npm:^2.0.0": + version: 2.0.0 + resolution: "defer-to-connect@npm:2.0.0" + checksum: 0453938bfce1c866263d0a4732ade8d69b1a39e27e073d3fbae9e0cc1c6a15a422c2fe5f90320465312ace6a01dbed4a2836755ac2a9519555e82d65141eabdc + languageName: node + linkType: hard + "define-properties@npm:^1.1.3": version: 1.1.3 resolution: "define-properties@npm:1.1.3" @@ -3967,6 +4147,18 @@ __metadata: languageName: node linkType: hard +"dnslink-cloudflare@npm:^3.0.0": + version: 3.0.0 + resolution: "dnslink-cloudflare@npm:3.0.0" + dependencies: + got: ^11.5.1 + meow: ^7.0.1 + bin: + dnslink-cloudflare: bin/index.js + checksum: 2e5cb32440b7dcd564b2fd0cbe0e31ae39e15cb04e59efa0cee37270153e1b8784aaa01c257b023c3f6f33855a05eb20874cea6041b12f376e559e22908862fe + languageName: node + linkType: hard + "doctrine@npm:1.5.0": version: 1.5.0 resolution: "doctrine@npm:1.5.0" @@ -4898,6 +5090,15 @@ __metadata: languageName: node linkType: hard +"follow-redirects@npm:1.5.10": + version: 1.5.10 + resolution: "follow-redirects@npm:1.5.10" + dependencies: + debug: =3.1.0 + checksum: 6e58e02c31337b6b41ffc3d5f3d49920b7db428eddcf374537da00ef121fe473983e12d8557f4304287604168d3efcc288d1f009abaf4c9d61e5db0c0cee3c4a + languageName: node + linkType: hard + "for-in@npm:^1.0.2": version: 1.0.2 resolution: "for-in@npm:1.0.2" @@ -4912,6 +5113,17 @@ __metadata: languageName: node linkType: hard +"form-data@npm:^2.3.3": + version: 2.5.1 + resolution: "form-data@npm:2.5.1" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.6 + mime-types: ^2.1.12 + checksum: c46ee9a14a8678b6e0dfafabc96e25237d9f11ced9c51cd371a2b3448f6a3f2fa684b3bbbb35911bae8f5448b3f3c48c73f7f2be791a4ae5aee0eb0ab3cdfec2 + languageName: node + linkType: hard + "form-data@npm:^3.0.0": version: 3.0.0 resolution: "form-data@npm:3.0.0" @@ -5300,6 +5512,25 @@ __metadata: languageName: node linkType: hard +"got@npm:^11.5.1": + version: 11.8.1 + resolution: "got@npm:11.8.1" + dependencies: + "@sindresorhus/is": ^4.0.0 + "@szmarczak/http-timer": ^4.0.5 + "@types/cacheable-request": ^6.0.1 + "@types/responselike": ^1.0.0 + cacheable-lookup: ^5.0.3 + cacheable-request: ^7.0.1 + decompress-response: ^6.0.0 + http2-wrapper: ^1.0.0-beta.5.2 + lowercase-keys: ^2.0.0 + p-cancelable: ^2.0.0 + responselike: ^2.0.0 + checksum: 739e7ffe359b73a21270136a917f0837471b87758773439bc178bcf7dba21f43872f0b72ad107f5ebf9487f74eea19391b3ed7902acf4576610c51c3396315a1 + languageName: node + linkType: hard + "got@npm:^9.6.0": version: 9.6.0 resolution: "got@npm:9.6.0" @@ -5377,6 +5608,13 @@ __metadata: languageName: node linkType: hard +"hard-rejection@npm:^2.1.0": + version: 2.1.0 + resolution: "hard-rejection@npm:2.1.0" + checksum: 27bc09d185ca8131356f0f3391ae5965c5ed8ec9eddf697d604e33c76eb995831e60ac636e5e5839587d0499f29719171c19d0af5fa12e9e7f7c0a1689e22b6f + languageName: node + linkType: hard + "has-flag@npm:^3.0.0": version: 3.0.0 resolution: "has-flag@npm:3.0.0" @@ -5540,6 +5778,16 @@ __metadata: languageName: node linkType: hard +"http2-wrapper@npm:^1.0.0-beta.5.2": + version: 1.0.0-beta.5.2 + resolution: "http2-wrapper@npm:1.0.0-beta.5.2" + dependencies: + quick-lru: ^5.1.1 + resolve-alpn: ^1.0.0 + checksum: 74db457c83d2cef5ea36e6a0a013a0a12b3fff575c4cabfc91c012b7335463d09ed3dba2d7e87babab4396a170df466730b1c13d92f99bbdd82b7aec99387683 + languageName: node + linkType: hard + "human-signals@npm:^1.1.1": version: 1.1.1 resolution: "human-signals@npm:1.1.1" @@ -5623,6 +5871,13 @@ __metadata: languageName: node linkType: hard +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 3e54996c6e15ca00a7a4403be705bce4fb3bb4ac637da2e1473006e42a651863f53bfb8c3438c1b3aac77817768ac0cde0e7b7a81a6cf24a1286227a06510dbf + languageName: node + linkType: hard + "indexes-of@npm:^1.0.1": version: 1.0.1 resolution: "indexes-of@npm:1.0.1" @@ -5707,7 +5962,7 @@ __metadata: languageName: node linkType: hard -"ip-regex@npm:^4.3.0": +"ip-regex@npm:^4.0.0, ip-regex@npm:^4.3.0": version: 4.3.0 resolution: "ip-regex@npm:4.3.0" checksum: 4f44f34dcfe5cfae3b79bac4b25bec81ea007c24a66a30a3a17d01eebde4fa98bb531f207590ee16e1e4721b4f8ad12f6a64ed9f49bcb4587ff13ebb7cc984a5 @@ -5764,6 +6019,13 @@ __metadata: languageName: node linkType: hard +"is-buffer@npm:^2.0.2": + version: 2.0.5 + resolution: "is-buffer@npm:2.0.5" + checksum: 1a6dc68206e834887d3b0d8e8ec6c95e0d780314479526a5a2cf458838d1bc441a105c4cebf95d8cc16e383238f66c41761ec622f6154043186e3d9439d56970 + languageName: node + linkType: hard + "is-callable@npm:^1.1.4, is-callable@npm:^1.2.2": version: 1.2.2 resolution: "is-callable@npm:1.2.2" @@ -5935,6 +6197,29 @@ __metadata: languageName: node linkType: hard +"is-ip@npm:^3.1.0": + version: 3.1.0 + resolution: "is-ip@npm:3.1.0" + dependencies: + ip-regex: ^4.0.0 + checksum: 9929f2f33d46f85f1c603d360796e2ce97ac718ffa95611412c1959b59b839a8e7c8aa35e495812c9061ff3a23cab8a818ec54064fa2428c46f86d11114b289f + languageName: node + linkType: hard + +"is-ipfs@npm:^0.6.0": + version: 0.6.3 + resolution: "is-ipfs@npm:0.6.3" + dependencies: + bs58: ^4.0.1 + cids: ~0.7.0 + mafmt: ^7.0.0 + multiaddr: ^7.2.1 + multibase: ~0.6.0 + multihashes: ~0.4.13 + checksum: 0705cdcdb690b3a97903cffa8d72c076be99e55bcbaa43bd6d9a898c7403fedd5fcde99d037313eec5d5779852bd240f9f57844bf3c71ff0ba0cfce08ec74164 + languageName: node + linkType: hard + "is-negative-zero@npm:^2.0.0": version: 2.0.1 resolution: "is-negative-zero@npm:2.0.1" @@ -5986,7 +6271,7 @@ __metadata: languageName: node linkType: hard -"is-plain-obj@npm:^1.0.0": +"is-plain-obj@npm:^1.0.0, is-plain-obj@npm:^1.1.0": version: 1.1.0 resolution: "is-plain-obj@npm:1.1.0" checksum: d2eb5a32eacd7c79f3b2fe20552d091805a5ae88a7ca2aa71226bf822e4d690ef046ed2beb795f32666a401dfbf9a25ee3d4acde5426f963d55474468708ad22 @@ -6756,6 +7041,13 @@ __metadata: languageName: node linkType: hard +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 78011309cb53c19195702ece9e282c8c58d7facd8d6e286857fd4daf511f0bd93424498898d0b9ecfde6ab8e87a2ab0c0a654fba4b1a4ec81fa51f2c48a5ddba + languageName: node + linkType: hard + "json-parse-even-better-errors@npm:^2.3.0": version: 2.3.1 resolution: "json-parse-even-better-errors@npm:2.3.1" @@ -6885,6 +7177,15 @@ __metadata: languageName: node linkType: hard +"keyv@npm:^4.0.0": + version: 4.0.3 + resolution: "keyv@npm:4.0.3" + dependencies: + json-buffer: 3.0.1 + checksum: 63527e3d010dd9b8f8e62435130cdb1518de7b7d0ebafcff1359611caa0e79c7f80f1863ff73e712d99ce69fa06be62b66a78fb5cfee6483f2f95eeac340f12b + languageName: node + linkType: hard + "kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0": version: 3.2.2 resolution: "kind-of@npm:3.2.2" @@ -6910,7 +7211,7 @@ __metadata: languageName: node linkType: hard -"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2": +"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" checksum: 5de5d6577796af87a983199d6350ed41c670abec4a306cc43ca887c1afdbd6b89af9ab00016e3ca17eb7ad89ebfd9bb817d33baa89f855c6c95398a8b8abbf08 @@ -7167,6 +7468,15 @@ __metadata: languageName: node linkType: hard +"mafmt@npm:^7.0.0": + version: 7.1.0 + resolution: "mafmt@npm:7.1.0" + dependencies: + multiaddr: ^7.3.0 + checksum: 83d4aa33ebe555fdd38cf019b75a5653d2860ea557edd91b20ee08b1de981bd50c28c05afd20d145251fb81510b5e78b3424d3a28ee99026a7769c7a75f66a07 + languageName: node + linkType: hard + "make-dir@npm:^2.0.0, make-dir@npm:^2.1.0": version: 2.1.0 resolution: "make-dir@npm:2.1.0" @@ -7202,6 +7512,20 @@ __metadata: languageName: node linkType: hard +"map-obj@npm:^1.0.0": + version: 1.0.1 + resolution: "map-obj@npm:1.0.1" + checksum: e68b20e4fa76efdbba9a7af05b879eb7a6c5ccb7a9d813796de825da4c182fc3dab66f4b2a32a9aefae83db152a0172deb1e19a9c2322c6d412b8f9f81ca51a4 + languageName: node + linkType: hard + +"map-obj@npm:^4.0.0": + version: 4.1.0 + resolution: "map-obj@npm:4.1.0" + checksum: 91827cab5aa21840605cb5e77c8cabd3089251f95f939419a7208c29fb6b1032006d8b2ad9d407c91b6e0a9e282105c1811eabd750df87f8b55ae758f87c2063 + languageName: node + linkType: hard + "map-visit@npm:^1.0.0": version: 1.0.0 resolution: "map-visit@npm:1.0.0" @@ -7231,6 +7555,25 @@ __metadata: languageName: node linkType: hard +"meow@npm:^7.0.1": + version: 7.1.1 + resolution: "meow@npm:7.1.1" + dependencies: + "@types/minimist": ^1.2.0 + camelcase-keys: ^6.2.2 + decamelize-keys: ^1.1.0 + hard-rejection: ^2.1.0 + minimist-options: 4.1.0 + normalize-package-data: ^2.5.0 + read-pkg-up: ^7.0.1 + redent: ^3.0.0 + trim-newlines: ^3.0.0 + type-fest: ^0.13.1 + yargs-parser: ^18.1.3 + checksum: de6d2f15332a18da5e13bb3f935f9718cf7ae697d121009adee7a3410bfc63f6b7896476bb0e1ef101faacea4d4a4dc95108e3c9eab0e336b990a115646b72e8 + languageName: node + linkType: hard + "merge-source-map@npm:^1.1.0": version: 1.1.0 resolution: "merge-source-map@npm:1.1.0" @@ -7331,6 +7674,13 @@ __metadata: languageName: node linkType: hard +"min-indent@npm:^1.0.0": + version: 1.0.1 + resolution: "min-indent@npm:1.0.1" + checksum: c3aeea46bc432e6ce69b86717e98fbb544e338abb5e3c93cfa196c427e3d5a4a6ee4f76e6931a9e424fb53e83451b90fc417ce7db04440a92d68369704ad11d1 + languageName: node + linkType: hard + "minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": version: 1.0.1 resolution: "minimalistic-assert@npm:1.0.1" @@ -7354,6 +7704,17 @@ __metadata: languageName: node linkType: hard +"minimist-options@npm:4.1.0": + version: 4.1.0 + resolution: "minimist-options@npm:4.1.0" + dependencies: + arrify: ^1.0.1 + is-plain-obj: ^1.1.0 + kind-of: ^6.0.3 + checksum: 51f1aba56f9c2c2986d85c98a29abec26c632019abd2966a151029cf2cf0903d81894781460e0d5755d4f899bb3884bc86fc9af36ab31469a38d82cf74f4f651 + languageName: node + linkType: hard + "minimist@npm:^1.1.1, minimist@npm:^1.2.0, minimist@npm:^1.2.5": version: 1.2.5 resolution: "minimist@npm:1.2.5" @@ -7440,6 +7801,82 @@ __metadata: languageName: node linkType: hard +"multiaddr@npm:^7.2.1, multiaddr@npm:^7.3.0": + version: 7.5.0 + resolution: "multiaddr@npm:7.5.0" + dependencies: + buffer: ^5.5.0 + cids: ~0.8.0 + class-is: ^1.1.0 + is-ip: ^3.1.0 + multibase: ^0.7.0 + varint: ^5.0.0 + checksum: ac55d7b7e0ce033f4ebdaa49bad804aa10900f3e6acee4e070e95eaa8efe34117efd92141f196f4eef63e3bc6a9900a534ef27af4e0f562e4888a02207297a20 + languageName: node + linkType: hard + +"multibase@npm:^0.7.0": + version: 0.7.0 + resolution: "multibase@npm:0.7.0" + dependencies: + base-x: ^3.0.8 + buffer: ^5.5.0 + checksum: 4acc18629a12f8cbe781d4896d457d6da72133cc1e8b3bf2520e3fb1f7cc17d6146a9605bf561d5d3608dd3c9253f431e4efac19bad360cbf642f118fa88d73a + languageName: node + linkType: hard + +"multibase@npm:^1.0.0, multibase@npm:^1.0.1": + version: 1.0.1 + resolution: "multibase@npm:1.0.1" + dependencies: + base-x: ^3.0.8 + buffer: ^5.5.0 + checksum: 61aedfdf01e5b2fc7b6dbb74adc24869f1ef80349239e6818d3dfc1b1dc5c737b4d2fa6765f74d68e9b3ac03f64ccff084e1fe8f30a91b0811d2e5db21086caa + languageName: node + linkType: hard + +"multibase@npm:~0.6.0": + version: 0.6.1 + resolution: "multibase@npm:0.6.1" + dependencies: + base-x: ^3.0.8 + buffer: ^5.5.0 + checksum: 22087b1bbbf4059202e866a1341f245b93bbca0316f31aa5ae6d932d2f82328bbe5bee93bb2c6895258bed653064b9c8ca3f98832c9139738201e9ad8587491d + languageName: node + linkType: hard + +"multicodec@npm:^1.0.0, multicodec@npm:^1.0.1": + version: 1.0.4 + resolution: "multicodec@npm:1.0.4" + dependencies: + buffer: ^5.6.0 + varint: ^5.0.0 + checksum: aedec568e5dc662d3d02eb938207e08e1c69eaddf683efc902f15d1910e7acf1c349edc2f6b1edc995ecf777f7a9a30245ef9ab1b05e05f4f83268760eca060c + languageName: node + linkType: hard + +"multihashes@npm:^1.0.1": + version: 1.0.1 + resolution: "multihashes@npm:1.0.1" + dependencies: + buffer: ^5.6.0 + multibase: ^1.0.1 + varint: ^5.0.0 + checksum: 35e92d7110f27879fffdf1c57a5af2acb37e5962d6a49a55ec5327f140640c41bed53207897c72752510e31ac9ae5cdcfdf405f3e948ff7262e3893492007840 + languageName: node + linkType: hard + +"multihashes@npm:~0.4.13, multihashes@npm:~0.4.15": + version: 0.4.21 + resolution: "multihashes@npm:0.4.21" + dependencies: + buffer: ^5.5.0 + multibase: ^0.7.0 + varint: ^5.0.0 + checksum: b950e045db982899f712ddfed7b3eb27b04576fa1a78bfd179e9dc86ded35823398d8cac6c3935f405b9a3cf2e8767022bd4287fb5e9d2b0fa6de098caa61323 + languageName: node + linkType: hard + "mute-stream@npm:0.0.8, mute-stream@npm:~0.0.4": version: 0.0.8 resolution: "mute-stream@npm:0.0.8" @@ -7882,6 +8319,13 @@ __metadata: languageName: node linkType: hard +"p-cancelable@npm:^2.0.0": + version: 2.0.0 + resolution: "p-cancelable@npm:2.0.0" + checksum: 966065f056a116a1ca3b6c7064d4d27a65bc1740c25cc60729faa5deea385bbd0f2317aedabb8e64c0cfc3c6b2dafe7f3ea65c267373d6d9be1602af443b4f12 + languageName: node + linkType: hard + "p-each-series@npm:^2.1.0": version: 2.2.0 resolution: "p-each-series@npm:2.2.0" @@ -8434,6 +8878,20 @@ __metadata: languageName: node linkType: hard +"quick-lru@npm:^4.0.1": + version: 4.0.1 + resolution: "quick-lru@npm:4.0.1" + checksum: 91847e4b07453655f73513b96a3b49e3bb8bf37de1ce2075d44e5dddb2f08050c5dc858d97884d61618bb44487945880b4b481fe93e94a3622b43036f8b94e11 + languageName: node + linkType: hard + +"quick-lru@npm:^5.1.1": + version: 5.1.1 + resolution: "quick-lru@npm:5.1.1" + checksum: fafb2b2fa1a948d6f2e88d4a60571be70b316d9b0be857d24fba0ac28fc31acebf535b643fe968473d689f8c655bcb2a0e4da67912f571059a4e4eb15740b021 + languageName: node + linkType: hard + "rc@npm:^1.2.7, rc@npm:^1.2.8": version: 1.2.8 resolution: "rc@npm:1.2.8" @@ -8570,6 +9028,26 @@ __metadata: languageName: node linkType: hard +"recursive-fs@npm:^1.1.2": + version: 1.1.2 + resolution: "recursive-fs@npm:1.1.2" + bin: + recursive-copy: ./bin/recursive-copy + recursive-delete: ./bin/recursive-delete + checksum: dd4bc1558f5985bc35a243b9601f94305137e44a1b2536837e7e00ce10024f0331d033dd029ab3002357680d51926849f9964c4d57eebf6ede7d195250f47710 + languageName: node + linkType: hard + +"redent@npm:^3.0.0": + version: 3.0.0 + resolution: "redent@npm:3.0.0" + dependencies: + indent-string: ^4.0.0 + strip-indent: ^3.0.0 + checksum: 78c8aa0a1076f47e0e198bfc8a9aa7d4ae3163c6951bd5de1015e47661bba62ea36573337bbeb4b309b48cc71954edbe43ae4aa3163db1996a781b757c5c47d7 + languageName: node + linkType: hard + "regenerate-unicode-properties@npm:^8.2.0": version: 8.2.0 resolution: "regenerate-unicode-properties@npm:8.2.0" @@ -8807,6 +9285,13 @@ __metadata: languageName: node linkType: hard +"resolve-alpn@npm:^1.0.0": + version: 1.0.0 + resolution: "resolve-alpn@npm:1.0.0" + checksum: 17baee01c03a57cebd163aa5c9bd94f33646378bce8aa94c7a8d29fc0e1bf0807532bda3c36bb929511606633921d0f4a69e7fcc894cf02ad1c742e649b71673 + languageName: node + linkType: hard + "resolve-cwd@npm:^3.0.0": version: 3.0.0 resolution: "resolve-cwd@npm:3.0.0" @@ -8873,6 +9358,15 @@ __metadata: languageName: node linkType: hard +"responselike@npm:^2.0.0": + version: 2.0.0 + resolution: "responselike@npm:2.0.0" + dependencies: + lowercase-keys: ^2.0.0 + checksum: 11d8225dd8bbbd2ab7482c2e54ff2618e346c7d785e66d2ff5da03d6eafa8b33c3a4c6d685324dccf06f36ee2695db9bd2579382548c2a7253d770204694a63d + languageName: node + linkType: hard + "restore-cursor@npm:^3.1.0": version: 3.1.0 resolution: "restore-cursor@npm:3.1.0" @@ -8923,8 +9417,10 @@ __metadata: resolution: "root-workspace-0b6124@workspace:." dependencies: "@babel/core": ^7.12.13 + "@pinata/sdk": ^1.1.11 "@polkadot/dev": ^0.61.25 "@types/jest": ^26.0.20 + dnslink-cloudflare: ^3.0.0 languageName: unknown linkType: soft @@ -9646,6 +10142,15 @@ __metadata: languageName: node linkType: hard +"strip-indent@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-indent@npm:3.0.0" + dependencies: + min-indent: ^1.0.0 + checksum: 4a7860e94372753b90a48d032758464efbf194880880fd7636965b7137ae4af24ce77a43d223a602cac787e2e95214aaa2f2470a65986e3d6ffa0e1c3dd887f6 + languageName: node + linkType: hard + "strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" @@ -9931,6 +10436,13 @@ __metadata: languageName: node linkType: hard +"trim-newlines@npm:^3.0.0": + version: 3.0.0 + resolution: "trim-newlines@npm:3.0.0" + checksum: 51bfbec0014ae58cdbf3c55e34cfe7f1a92a77d362990bb4cc8d6edf51f1c21f28b92e442adec3ef9cef69194b532b28c1a0a06d9ee78b2b0fd28d191a2b738e + languageName: node + linkType: hard + "trim-repeated@npm:^1.0.0": version: 1.0.0 resolution: "trim-repeated@npm:1.0.0" @@ -10025,6 +10537,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^0.13.1": + version: 0.13.1 + resolution: "type-fest@npm:0.13.1" + checksum: 11acce4f34c75a838914bdc4a0133d2dd0864e313897471974880df82624159521bae691a6100ff99f93be2d0f8871ecdab18573d2c67e61905cf2f5cbfa52a6 + languageName: node + linkType: hard + "type-fest@npm:^0.6.0": version: 0.6.0 resolution: "type-fest@npm:0.6.0" @@ -10338,6 +10857,13 @@ __metadata: languageName: node linkType: hard +"varint@npm:^5.0.0": + version: 5.0.2 + resolution: "varint@npm:5.0.2" + checksum: 7af69386a5998d75249cefe04764693b43c1e4c3b03ab54536d9f6150829ea9573c0383a5970685ea517260f011d84e9bb5e5b7dec14606a6fc692fd4c652209 + languageName: node + linkType: hard + "verror@npm:1.10.0": version: 1.10.0 resolution: "verror@npm:1.10.0" @@ -10650,7 +11176,7 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:^18.1.2": +"yargs-parser@npm:^18.1.2, yargs-parser@npm:^18.1.3": version: 18.1.3 resolution: "yargs-parser@npm:18.1.3" dependencies: