diff --git a/package.json b/package.json index 043f583..a93c357 100644 --- a/package.json +++ b/package.json @@ -29,5 +29,10 @@ "prettier": "^2.7.1", "shx": "^0.3.4", "typescript": "^4.7.4" + }, + "pnpm": { + "patchedDependencies": { + "@solana/web3.js@1.92.1": "patches/@solana__web3.js@1.92.1.patch" + } } } diff --git a/packages/cli/package.json b/packages/cli/package.json index 39de24f..c7df93c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -54,7 +54,7 @@ "@aws-sdk/client-s3": "^3.321.1", "@metaplex-foundation/js-plugin-aws": "^0.20.0", "@solana-mobile/dapp-store-publishing-tools": "workspace:0.9.1", - "@solana/web3.js": "1.68.0", + "@solana/web3.js": "1.92.1", "@types/semver": "^7.3.13", "ajv": "^8.11.0", "boxen": "^7.0.1", diff --git a/packages/cli/src/commands/create/CreateCliApp.ts b/packages/cli/src/commands/create/CreateCliApp.ts index da19ac1..378e34e 100644 --- a/packages/cli/src/commands/create/CreateCliApp.ts +++ b/packages/cli/src/commands/create/CreateCliApp.ts @@ -4,15 +4,14 @@ import { Connection, Keypair, PublicKey, - sendAndConfirmTransaction, } from "@solana/web3.js"; import { Constants, getMetaplexInstance, - showMessage, } from "../../CliUtils.js"; import { loadPublishDetailsWithChecks, writeToPublishDetails } from "../../config/PublishDetails.js"; +import { sendAndConfirmTransaction } from "../utils.js"; const createAppNft = async ( { @@ -46,33 +45,13 @@ const createAppNft = async ( ); console.info(`App NFT data upload complete\nSigning transaction now`); - const maxTries = 8; - for (let i = 1; i <= maxTries; i++) { - try { - const blockhash = await connection.getLatestBlockhashAndContext(); - const tx = txBuilder.toTransaction(blockhash.value); - tx.sign(mintAddress, publisher); - const txSig = await sendAndConfirmTransaction(connection, tx, [ - publisher, - mintAddress, - ], { - commitment: "confirmed", - minContextSlot: blockhash.context.slot - }); - return { appAddress: mintAddress.publicKey.toBase58(), transactionSignature: txSig }; - } catch (e) { - const errorMsg = (e as Error | null)?.message ?? ""; - if (i == maxTries) { - showMessage("Transaction Failure", errorMsg, "error"); - process.exit(-1) - } else { - const retryMsg = errorMsg + "\nWill Retry minting app NFT." - showMessage("Transaction Failure", retryMsg, "standard"); - } - } - } - throw new Error("Unable to mint app NFT"); + const { response } = await sendAndConfirmTransaction(metaplex, txBuilder); + + return { + appAddress: mintAddress.publicKey.toBase58(), + transactionSignature: response.signature, + }; }; type CreateAppCommandInput = { @@ -96,7 +75,6 @@ export const createAppCommand = async ({ url, { commitment: "confirmed", - disableRetryOnRateLimit: true, } ); diff --git a/packages/cli/src/commands/create/CreateCliPublisher.ts b/packages/cli/src/commands/create/CreateCliPublisher.ts index 8b294f7..ca3ef67 100644 --- a/packages/cli/src/commands/create/CreateCliPublisher.ts +++ b/packages/cli/src/commands/create/CreateCliPublisher.ts @@ -3,15 +3,14 @@ import { createPublisher } from "@solana-mobile/dapp-store-publishing-tools"; import { Connection, Keypair, - sendAndConfirmTransaction, } from "@solana/web3.js"; import { Constants, getMetaplexInstance, - showMessage, } from "../../CliUtils.js"; import { loadPublishDetailsWithChecks, writeToPublishDetails } from "../../config/PublishDetails.js"; +import { sendAndConfirmTransaction } from "../utils.js"; const createPublisherNft = async ( { @@ -37,33 +36,13 @@ const createPublisherNft = async ( ); console.info(`Publisher NFT data upload complete\nSigning transaction now`); - const maxTries = 8; - for (let i = 1; i <= maxTries; i++) { - try { - const blockhash = await connection.getLatestBlockhashAndContext(); - const tx = txBuilder.toTransaction(blockhash.value); - tx.sign(mintAddress, publisher); - const txSig = await sendAndConfirmTransaction(connection, tx, [ - publisher, - mintAddress, - ], { - commitment: "confirmed", - minContextSlot: blockhash.context.slot - }); - return { publisherAddress: mintAddress.publicKey.toBase58(), transactionSignature: txSig}; - } catch (e) { - const errorMsg = (e as Error | null)?.message ?? ""; - if (i == maxTries) { - showMessage("Transaction Failure", errorMsg, "error"); - process.exit(-1) - } else { - const retryMsg = errorMsg + "\nWill Retry minting publisher." - showMessage("Transaction Failure", retryMsg, "standard"); - } - } - } - throw new Error("Unable to mint publisher NFT"); + const { response } = await sendAndConfirmTransaction(metaplex, txBuilder); + + return { + publisherAddress: mintAddress.publicKey.toBase58(), + transactionSignature: response.signature, + }; }; export const createPublisherCommand = async ({ @@ -83,7 +62,6 @@ export const createPublisherCommand = async ({ url, { commitment: "confirmed", - disableRetryOnRateLimit: true, } ); diff --git a/packages/cli/src/commands/create/CreateCliRelease.ts b/packages/cli/src/commands/create/CreateCliRelease.ts index cef16e0..b295138 100644 --- a/packages/cli/src/commands/create/CreateCliRelease.ts +++ b/packages/cli/src/commands/create/CreateCliRelease.ts @@ -8,16 +8,15 @@ import { Connection, Keypair, PublicKey, - sendAndConfirmTransaction, } from "@solana/web3.js"; import fs from "fs"; import { createHash } from "crypto"; import { Constants, getMetaplexInstance, - showMessage } from "../../CliUtils.js"; import { PublishDetails, loadPublishDetailsWithChecks, writeToPublishDetails } from "../../config/PublishDetails.js"; +import { sendAndConfirmTransaction } from "../utils.js"; type CreateReleaseCommandInput = { appMintAddress: string; @@ -67,32 +66,13 @@ const createReleaseNft = async ({ ); console.info(`Release NFT data upload complete\nSigning transaction now`); - const maxTries = 8; - for (let i = 1; i <= maxTries; i++) { - try { - const blockhash = await connection.getLatestBlockhashAndContext(); - const tx = txBuilder.toTransaction(blockhash.value); - tx.sign(releaseMintAddress, publisher); - const txSig = await sendAndConfirmTransaction(connection, tx, [ - publisher, - releaseMintAddress, - ], { - commitment: "confirmed", - minContextSlot: blockhash.context.slot, - }); - return { releaseAddress: releaseMintAddress.publicKey.toBase58(), transactionSignature: txSig }; - } catch (e) { - const errorMsg = (e as Error | null)?.message ?? ""; - if (i == maxTries) { - showMessage("Transaction Failure", errorMsg, "error"); - process.exit(-1) - } else { - const retryMsg = errorMsg + "\nWill Retry minting release NFT" - showMessage("Transaction Failure", retryMsg, "standard"); - } - } - } - throw new Error("Unable to mint release NFT"); + + const { response } = await sendAndConfirmTransaction(metaplex, txBuilder); + + return { + releaseAddress: releaseMintAddress.publicKey.toBase58(), + transactionSignature: response.signature, + }; }; export const createReleaseCommand = async ({ @@ -108,7 +88,6 @@ export const createReleaseCommand = async ({ url, { commitment: "confirmed", - disableRetryOnRateLimit: true, } ); diff --git a/packages/cli/src/commands/utils.ts b/packages/cli/src/commands/utils.ts new file mode 100644 index 0000000..eba3060 --- /dev/null +++ b/packages/cli/src/commands/utils.ts @@ -0,0 +1,33 @@ +import { + type Metaplex, + type TransactionBuilder, + FailedToConfirmTransactionError, +} from "@metaplex-foundation/js"; +import { TransactionExpiredBlockheightExceededError } from "@solana/web3.js"; + +export async function sendAndConfirmTransaction( + metaplex: Metaplex, + builder: TransactionBuilder +): ReturnType { + for (let i = 0; i < 10; i++) { + try { + return await builder.sendAndConfirm(metaplex); + } catch (e: unknown) { + if (isTransientError(e)) { + continue; + } + + throw e; + } + } + + throw new Error("Unable to send transaction. Please try later."); +} + +function isTransientError(e: unknown): boolean { + return ( + e instanceof FailedToConfirmTransactionError && + (e.cause instanceof TransactionExpiredBlockheightExceededError || + /blockhash not found/i.test(e.cause?.message ?? "")) + ); +} diff --git a/patches/@solana__web3.js@1.92.1.patch b/patches/@solana__web3.js@1.92.1.patch new file mode 100644 index 0000000..aaba222 --- /dev/null +++ b/patches/@solana__web3.js@1.92.1.patch @@ -0,0 +1,13 @@ +diff --git a/lib/index.cjs.js b/lib/index.cjs.js +index 013925eb21352fb560e87229ae33de94ff83115a..42ca54b5023ee9731bf8f35cb3cb49276f79dfba 100644 +--- a/lib/index.cjs.js ++++ b/lib/index.cjs.js +@@ -6587,7 +6587,7 @@ class Connection { + let currentBlockHeight = await checkBlockHeight(); + if (done) return; + while (currentBlockHeight <= lastValidBlockHeight) { +- await sleep(1000); ++ await sleep(5000); + if (done) return; + currentBlockHeight = await checkBlockHeight(); + if (done) return; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b3383aa..91b16fd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,11 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +patchedDependencies: + '@solana/web3.js@1.92.1': + hash: mzwvqz2i2oupzkso3flqamwxpu + path: patches/@solana__web3.js@1.92.1.patch + importers: .: @@ -66,8 +71,8 @@ importers: specifier: workspace:0.9.1 version: link:../core '@solana/web3.js': - specifier: 1.68.0 - version: 1.68.0 + specifier: 1.92.1 + version: 1.92.1(patch_hash=mzwvqz2i2oupzkso3flqamwxpu) '@types/semver': specifier: ^7.3.13 version: 7.3.13 @@ -1470,6 +1475,12 @@ packages: dependencies: regenerator-runtime: 0.13.11 + /@babel/runtime@7.24.7: + resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + /@babel/template@7.22.5: resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} engines: {node: '>=6.9.0'} @@ -1865,7 +1876,7 @@ packages: '@near-js/keystores-browser': 0.0.3 '@near-js/providers': 0.0.4 '@near-js/transactions': 0.1.1 - '@solana/web3.js': 1.68.0 + '@solana/web3.js': 1.92.1(patch_hash=mzwvqz2i2oupzkso3flqamwxpu) '@supercharge/promise-pool': 3.2.0 algosdk: 1.24.1 aptos: 1.8.5(debug@4.3.4) @@ -2214,7 +2225,7 @@ packages: resolution: {integrity: sha512-tgyEl6dvtLln8XX81JyBvWjIiEcjTkUwZbrM5dIobTmoqMuGewSyk9CClno8qsMsFdB5T3jC91Rjeqmu/6xk2g==} dependencies: '@metaplex-foundation/beet': 0.7.1 - '@solana/web3.js': 1.68.0 + '@solana/web3.js': 1.92.1(patch_hash=mzwvqz2i2oupzkso3flqamwxpu) bs58: 5.0.0 debug: 4.3.4 transitivePeerDependencies: @@ -2227,7 +2238,7 @@ packages: resolution: {integrity: sha512-B1L94N3ZGMo53b0uOSoznbuM5GBNJ8LwSeznxBxJ+OThvfHQ4B5oMUqb+0zdLRfkKGS7Q6tpHK9P+QK0j3w2cQ==} dependencies: '@metaplex-foundation/beet': 0.7.1 - '@solana/web3.js': 1.68.0 + '@solana/web3.js': 1.92.1(patch_hash=mzwvqz2i2oupzkso3flqamwxpu) bs58: 5.0.0 debug: 4.3.4 transitivePeerDependencies: @@ -2294,9 +2305,9 @@ packages: '@metaplex-foundation/mpl-token-metadata': 2.13.0 '@noble/ed25519': 1.7.3 '@noble/hashes': 1.3.1 - '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.68.0) - '@solana/spl-token': 0.3.8(@solana/web3.js@1.68.0) - '@solana/web3.js': 1.68.0 + '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.92.1) + '@solana/spl-token': 0.3.8(@solana/web3.js@1.92.1) + '@solana/web3.js': 1.92.1(patch_hash=mzwvqz2i2oupzkso3flqamwxpu) bignumber.js: 9.1.1 bn.js: 5.2.1 bs58: 5.0.0 @@ -2321,8 +2332,8 @@ packages: '@metaplex-foundation/beet': 0.6.1 '@metaplex-foundation/beet-solana': 0.3.1 '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.8(@solana/web3.js@1.68.0) - '@solana/web3.js': 1.68.0 + '@solana/spl-token': 0.3.8(@solana/web3.js@1.92.1) + '@solana/web3.js': 1.92.1(patch_hash=mzwvqz2i2oupzkso3flqamwxpu) bn.js: 5.2.1 transitivePeerDependencies: - bufferutil @@ -2337,9 +2348,9 @@ packages: '@metaplex-foundation/beet-solana': 0.4.0 '@metaplex-foundation/cusper': 0.0.2 '@metaplex-foundation/mpl-token-metadata': 2.13.0 - '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.68.0) + '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.92.1) '@solana/spl-token': 0.1.8 - '@solana/web3.js': 1.68.0 + '@solana/web3.js': 1.92.1(patch_hash=mzwvqz2i2oupzkso3flqamwxpu) bn.js: 5.2.1 js-sha3: 0.8.0 transitivePeerDependencies: @@ -2354,7 +2365,7 @@ packages: '@metaplex-foundation/beet': 0.4.0 '@metaplex-foundation/beet-solana': 0.3.1 '@metaplex-foundation/cusper': 0.0.2 - '@solana/web3.js': 1.68.0 + '@solana/web3.js': 1.92.1(patch_hash=mzwvqz2i2oupzkso3flqamwxpu) bn.js: 5.2.1 transitivePeerDependencies: - bufferutil @@ -2368,7 +2379,7 @@ packages: '@metaplex-foundation/beet': 0.4.0 '@metaplex-foundation/beet-solana': 0.3.1 '@metaplex-foundation/cusper': 0.0.2 - '@solana/web3.js': 1.68.0 + '@solana/web3.js': 1.92.1(patch_hash=mzwvqz2i2oupzkso3flqamwxpu) bn.js: 5.2.1 transitivePeerDependencies: - bufferutil @@ -2382,8 +2393,8 @@ packages: '@metaplex-foundation/beet': 0.7.1 '@metaplex-foundation/beet-solana': 0.4.0 '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.8(@solana/web3.js@1.68.0) - '@solana/web3.js': 1.68.0 + '@solana/spl-token': 0.3.8(@solana/web3.js@1.92.1) + '@solana/web3.js': 1.92.1(patch_hash=mzwvqz2i2oupzkso3flqamwxpu) transitivePeerDependencies: - bufferutil - encoding @@ -2464,7 +2475,7 @@ packages: borsh: 0.7.0 http-errors: 1.8.1 optionalDependencies: - node-fetch: 2.6.12 + node-fetch: 2.7.0 transitivePeerDependencies: - encoding @@ -2530,6 +2541,11 @@ packages: depd: 2.0.0 mustache: 4.2.0 + /@noble/curves@1.4.0: + resolution: {integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==} + dependencies: + '@noble/hashes': 1.4.0 + /@noble/ed25519@1.7.3: resolution: {integrity: sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==} @@ -2540,6 +2556,10 @@ packages: resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} engines: {node: '>= 16'} + /@noble/hashes@1.4.0: + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + /@noble/secp256k1@1.7.1: resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} @@ -2651,7 +2671,7 @@ packages: dependencies: buffer: 6.0.3 - /@solana/spl-account-compression@0.1.10(@solana/web3.js@1.68.0): + /@solana/spl-account-compression@0.1.10(@solana/web3.js@1.92.1): resolution: {integrity: sha512-IQAOJrVOUo6LCgeWW9lHuXo6JDbi4g3/RkQtvY0SyalvSWk9BIkHHe4IkAzaQw8q/BxEVBIjz8e9bNYWIAESNw==} engines: {node: '>=16'} peerDependencies: @@ -2659,7 +2679,7 @@ packages: dependencies: '@metaplex-foundation/beet': 0.7.1 '@metaplex-foundation/beet-solana': 0.4.0 - '@solana/web3.js': 1.68.0 + '@solana/web3.js': 1.92.1(patch_hash=mzwvqz2i2oupzkso3flqamwxpu) bn.js: 5.2.1 borsh: 0.7.0 js-sha3: 0.8.0 @@ -2675,7 +2695,7 @@ packages: engines: {node: '>= 10'} dependencies: '@babel/runtime': 7.22.6 - '@solana/web3.js': 1.68.0 + '@solana/web3.js': 1.92.1(patch_hash=mzwvqz2i2oupzkso3flqamwxpu) bn.js: 5.2.1 buffer: 6.0.3 buffer-layout: 1.2.2 @@ -2700,6 +2720,21 @@ packages: - encoding - utf-8-validate + /@solana/spl-token@0.3.8(@solana/web3.js@1.92.1): + resolution: {integrity: sha512-ogwGDcunP9Lkj+9CODOWMiVJEdRtqHAtX2rWF62KxnnSWtMZtV9rDhTrZFshiyJmxDnRL/1nKE1yJHg4jjs3gg==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.47.4 + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0 + '@solana/web3.js': 1.92.1(patch_hash=mzwvqz2i2oupzkso3flqamwxpu) + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + /@solana/web3.js@1.68.0: resolution: {integrity: sha512-i41x4ArQrjdy/iQf75vKwZa+Mx1hOVquamHHe+5lNbObF4CT57oHOTvG9m9DTypuip3O9ucLoryywd6LfP2eEw==} engines: {node: '>=12.20.0'} @@ -2724,6 +2759,30 @@ packages: - encoding - utf-8-validate + /@solana/web3.js@1.92.1(patch_hash=mzwvqz2i2oupzkso3flqamwxpu): + resolution: {integrity: sha512-72hytgOHfJLbvKT0+HRuFUhxxZpCnlo4zFDt37UHPel1DJbgqGOWo3xUf3VEPRWBvSRv0EH15g8MGatdj1PO9g==} + dependencies: + '@babel/runtime': 7.24.7 + '@noble/curves': 1.4.0 + '@noble/hashes': 1.4.0 + '@solana/buffer-layout': 4.0.1 + agentkeepalive: 4.5.0 + bigint-buffer: 1.1.5 + bn.js: 5.2.1 + borsh: 0.7.0 + bs58: 4.0.1 + buffer: 6.0.3 + fast-stable-stringify: 1.0.0 + jayson: 4.1.0 + node-fetch: 2.7.0 + rpc-websockets: 7.11.1 + superstruct: 1.0.4 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + patched: true + /@supercharge/promise-pool@3.2.0: resolution: {integrity: sha512-pj0cAALblTZBPtMltWOlZTQSLT07jIaFNeM8TWoJD1cQMgDB9mcMlVMoetiB35OzNJpqQ2b+QEtwiR9f20mADg==} engines: {node: '>=8'} @@ -3273,6 +3332,12 @@ packages: /aes-js@3.0.0: resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + /agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + dependencies: + humanize-ms: 1.2.1 + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -5361,6 +5426,11 @@ packages: engines: {node: '>=10.17.0'} dev: true + /humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + dependencies: + ms: 2.1.2 + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -5741,6 +5811,27 @@ packages: - bufferutil - utf-8-validate + /jayson@4.1.0: + resolution: {integrity: sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==} + engines: {node: '>=8'} + hasBin: true + dependencies: + '@types/connect': 3.4.35 + '@types/node': 12.20.55 + '@types/ws': 7.4.7 + JSONStream: 1.3.5 + commander: 2.20.3 + delay: 5.0.0 + es6-promisify: 5.0.0 + eyes: 0.1.8 + isomorphic-ws: 4.0.1(ws@7.5.9) + json-stringify-safe: 5.0.1 + uuid: 8.3.2 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + /jest-changed-files@29.5.0: resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6586,6 +6677,17 @@ packages: dependencies: whatwg-url: 5.0.0 + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + /node-gyp-build@4.6.0: resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} hasBin: true @@ -7033,6 +7135,9 @@ packages: /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + /regexp.prototype.flags@1.5.0: resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} engines: {node: '>= 0.4'} @@ -7161,6 +7266,16 @@ packages: dependencies: bn.js: 5.2.1 + /rpc-websockets@7.11.1: + resolution: {integrity: sha512-ePm9GVlk1D1p1B35iU1AiAr9lMKUpSqU9wjYoUb9YaoabfLAcQ7DG6IfQvyam2nDJ0FOSB00AgEA4pGm/wSD5A==} + dependencies: + eventemitter3: 4.0.7 + uuid: 8.3.2 + ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) + optionalDependencies: + bufferutil: 4.0.7 + utf-8-validate: 5.0.10 + /rpc-websockets@7.5.1: resolution: {integrity: sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==} dependencies: @@ -7528,6 +7643,10 @@ packages: /superstruct@0.14.2: resolution: {integrity: sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==} + /superstruct@1.0.4: + resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} + engines: {node: '>=14.0.0'} + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'}