From 1bb7799ef664faf42db840049745562de08f2ce4 Mon Sep 17 00:00:00 2001 From: Derek Sonnenberg Date: Mon, 30 Sep 2024 15:06:02 -0500 Subject: [PATCH 01/10] feat: init arweave uploader using turbo sdk PE-6832 --- .changeset/silent-keys-love.md | 5 + packages/umi-uploader-arweave/CHANGELOG.md | 0 packages/umi-uploader-arweave/README.md | 9 + .../umi-uploader-arweave/babel.config.json | 3 + packages/umi-uploader-arweave/package.json | 72 +++ .../umi-uploader-arweave/rollup.config.js | 16 + .../src/createArweaveUploader.ts | 326 ++++++++++ packages/umi-uploader-arweave/src/errors.ts | 45 ++ packages/umi-uploader-arweave/src/index.ts | 3 + packages/umi-uploader-arweave/src/plugin.ts | 13 + .../test/ArweaveUploader.test.ts | 57 ++ .../umi-uploader-arweave/test/tsconfig.json | 11 + packages/umi-uploader-arweave/tsconfig.json | 8 + pnpm-lock.yaml | 570 ++++++++++++------ 14 files changed, 952 insertions(+), 186 deletions(-) create mode 100644 .changeset/silent-keys-love.md create mode 100644 packages/umi-uploader-arweave/CHANGELOG.md create mode 100644 packages/umi-uploader-arweave/README.md create mode 100644 packages/umi-uploader-arweave/babel.config.json create mode 100644 packages/umi-uploader-arweave/package.json create mode 100644 packages/umi-uploader-arweave/rollup.config.js create mode 100644 packages/umi-uploader-arweave/src/createArweaveUploader.ts create mode 100644 packages/umi-uploader-arweave/src/errors.ts create mode 100644 packages/umi-uploader-arweave/src/index.ts create mode 100644 packages/umi-uploader-arweave/src/plugin.ts create mode 100644 packages/umi-uploader-arweave/test/ArweaveUploader.test.ts create mode 100644 packages/umi-uploader-arweave/test/tsconfig.json create mode 100644 packages/umi-uploader-arweave/tsconfig.json diff --git a/.changeset/silent-keys-love.md b/.changeset/silent-keys-love.md new file mode 100644 index 00000000..d24446e5 --- /dev/null +++ b/.changeset/silent-keys-love.md @@ -0,0 +1,5 @@ +--- +'@metaplex-foundation/umi-uploader-arweave': minor +--- + +Added Arweave uploader support via Turbo SDK diff --git a/packages/umi-uploader-arweave/CHANGELOG.md b/packages/umi-uploader-arweave/CHANGELOG.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/umi-uploader-arweave/README.md b/packages/umi-uploader-arweave/README.md new file mode 100644 index 00000000..34288264 --- /dev/null +++ b/packages/umi-uploader-arweave/README.md @@ -0,0 +1,9 @@ +# umi-uploader-arweave + +An uploader implementation relying on Arweave. + +## Installation + +```sh +npm install @metaplex-foundation/umi-uploader-arweave +``` diff --git a/packages/umi-uploader-arweave/babel.config.json b/packages/umi-uploader-arweave/babel.config.json new file mode 100644 index 00000000..ac08da0a --- /dev/null +++ b/packages/umi-uploader-arweave/babel.config.json @@ -0,0 +1,3 @@ +{ + "extends": "../../babel.config.json" +} diff --git a/packages/umi-uploader-arweave/package.json b/packages/umi-uploader-arweave/package.json new file mode 100644 index 00000000..63e351dd --- /dev/null +++ b/packages/umi-uploader-arweave/package.json @@ -0,0 +1,72 @@ +{ + "name": "@metaplex-foundation/umi-uploader-arweave", + "version": "0.9.2", + "description": "An uploader implementation relying on Arweave", + "license": "MIT", + "sideEffects": false, + "module": "dist/esm/index.mjs", + "main": "dist/cjs/index.cjs", + "types": "dist/types/index.d.ts", + "exports": { + ".": { + "types": "./dist/types/index.d.ts", + "import": "./dist/esm/index.mjs", + "require": "./dist/cjs/index.cjs" + } + }, + "files": [ + "/dist/cjs", + "/dist/esm", + "/dist/types", + "/src" + ], + "scripts": { + "lint": "eslint --ext js,ts,tsx src", + "lint:fix": "eslint --fix --ext js,ts,tsx src", + "clean": "rimraf dist", + "build": "pnpm clean && tsc && tsc -p test/tsconfig.json && rollup -c", + "test": "ava" + }, + "dependencies": { + "@ardrive/turbo-sdk": "alpha", + "@metaplex-foundation/umi-web3js-adapters": "workspace:^", + "bignumber.js": "^9.1.2", + "buffer": "^6.0.3" + }, + "peerDependencies": { + "@metaplex-foundation/umi": "workspace:^", + "@solana/web3.js": "^1.72.0" + }, + "devDependencies": { + "@ava/typescript": "^3.0.1", + "@metaplex-foundation/umi": "workspace:^", + "@metaplex-foundation/umi-downloader-http": "workspace:^", + "@metaplex-foundation/umi-eddsa-web3js": "workspace:^", + "@metaplex-foundation/umi-http-fetch": "workspace:^", + "@metaplex-foundation/umi-rpc-web3js": "workspace:^", + "@solana/web3.js": "^1.72.0", + "ava": "^5.1.0" + }, + "publishConfig": { + "access": "public" + }, + "author": "Metaplex Maintainers ", + "homepage": "https://metaplex.com", + "repository": { + "url": "https://github.com/metaplex-foundation/umi.git" + }, + "typedoc": { + "entryPoint": "./src/index.ts", + "readmeFile": "./README.md", + "displayName": "umi-uploader-arweave" + }, + "ava": { + "typescript": { + "compile": false, + "rewritePaths": { + "src/": "dist/test/src/", + "test/": "dist/test/test/" + } + } + } +} diff --git a/packages/umi-uploader-arweave/rollup.config.js b/packages/umi-uploader-arweave/rollup.config.js new file mode 100644 index 00000000..ba38fd10 --- /dev/null +++ b/packages/umi-uploader-arweave/rollup.config.js @@ -0,0 +1,16 @@ +import { createConfigs } from '../../rollup.config'; +import pkg from './package.json'; + +export default createConfigs({ + pkg, + builds: [ + { + dir: 'dist/esm', + format: 'es', + }, + { + dir: 'dist/cjs', + format: 'cjs', + }, + ], +}); diff --git a/packages/umi-uploader-arweave/src/createArweaveUploader.ts b/packages/umi-uploader-arweave/src/createArweaveUploader.ts new file mode 100644 index 00000000..77b4a17f --- /dev/null +++ b/packages/umi-uploader-arweave/src/createArweaveUploader.ts @@ -0,0 +1,326 @@ +import { + SOLToTokenAmount, + TurboAuthenticatedClient, + TurboFactory, + USD, +} from '@ardrive/turbo-sdk'; + +import { + Context, + GenericFile, + GenericFileTag, + Signer, + SolAmount, + UploaderInterface, + UsdAmount, + createGenericFileFromJson, + isKeypairSigner, + lamports, + publicKey, +} from '@metaplex-foundation/umi'; +import { base58 } from '@metaplex-foundation/umi/serializers'; +import { toWeb3JsPublicKey } from '@metaplex-foundation/umi-web3js-adapters'; +import { + LAMPORTS_PER_SOL, + Connection as Web3JsConnection, + PublicKey as Web3JsPublicKey, + SendOptions as Web3JsSendOptions, + Signer as Web3JsSigner, + Transaction as Web3JsTransaction, + TransactionSignature as Web3JsTransactionSignature, +} from '@solana/web3.js'; +import BigNumber from 'bignumber.js'; +import { Buffer } from 'buffer'; +import { + AssetUploadFailedError, + FailedToConnectToArweaveAddressError, +} from './errors'; + +export type ArweaveUploader = UploaderInterface & { + /** Get the current Arweave Turbo client */ + arweave: () => Promise; + /** Get the SOL estimated price for an amount of bytes */ + getUploadPriceFromBytes: (bytes: number) => Promise; + /** Get the current SOL equivalent balance from connected Arweave Bundler */ + getBalance: () => Promise; + /** Get the current Turbo Storage Credit balance from connected Arweave Bundler */ + getTurboStorageCreditBalance: () => Promise; + /** Purchase non-refundable Turbo Storage Credits from the connected Arweave Bundler by transferring SOL to the Bundler's wallet */ + fund: (amount: SolAmount, skipBalanceCheck: boolean) => Promise; + /** Purchase non-refundable Turbo Storage Credits from the connected Arweave Bundler by generating a Stripe checkout session with a USD amount */ + getStripeCheckoutSession: (amount: UsdAmount) => Promise<{ + turboStorageCredits: BigNumber.Value; + checkoutSessionUrl: string; + }>; +}; + +export type ArweaveUploaderOptions = { + solRpcUrl?: string; + uploadServiceUrl?: string; + paymentServiceUrl?: string; + priceMultiplier?: number; + payer?: Signer; +}; + +export type ArweaveWalletAdapter = { + publicKey: Web3JsPublicKey | null; + signMessage?: (message: Uint8Array) => Promise; + signTransaction?: ( + transaction: Web3JsTransaction + ) => Promise; + signAllTransactions?: ( + transactions: Web3JsTransaction[] + ) => Promise; + sendTransaction: ( + transaction: Web3JsTransaction, + connection: Web3JsConnection, + options?: Web3JsSendOptions & { signers?: Web3JsSigner[] } + ) => Promise; +}; + +// Size of Arweave transaction header. +const HEADER_SIZE = 2_000; + +export function createArweaveUploader( + context: Pick, + options: ArweaveUploaderOptions = {} +): ArweaveUploader { + // eslint-disable-next-line @typescript-eslint/naming-convention + let _arweave: TurboAuthenticatedClient | null = null; + options = { + solRpcUrl: context.rpc.getEndpoint(), + ...options, + }; + + const getUploadPriceFromBytes = async (bytes: number): Promise => { + const arweave = await getArweave(); + const wincPriceForOneSol = ( + await arweave.getWincForToken({ + tokenAmount: LAMPORTS_PER_SOL, + }) + ).winc; + + const wincPriceForOneGiB = ( + await arweave.getUploadCosts({ + bytes: [2 ** 30], + }) + )[0].winc; + + const solPriceForOneGiB = + BigNumber(wincPriceForOneGiB).dividedBy(wincPriceForOneSol); + + const solPriceForOneByte = solPriceForOneGiB.dividedBy(2 ** 30); + + return bigNumberToAmount( + solPriceForOneByte + .multipliedBy(bytes) + .multipliedBy(options.priceMultiplier ?? 1.1) + ); + }; + + const getUploadPrice = async (files: GenericFile[]): Promise => { + const bytes: number = files.reduce( + (sum, file) => sum + HEADER_SIZE + file.buffer.byteLength, + 0 + ); + + return getUploadPriceFromBytes(bytes); + }; + + const upload = async (files: GenericFile[]): Promise => { + const arweave = await getArweave(); + const amount = await getUploadPrice(files); + await fund(amount); + + const promises = files.map(async (file) => { + const buffer = Buffer.from(file.buffer); + + let dataItemId; + try { + const { id } = await arweave.uploadFile({ + fileStreamFactory: () => buffer, + fileSizeFactory: () => buffer.byteLength, + dataItemOpts: { + tags: getGenericFileTagsWithContentType(file), + }, + }); + dataItemId = id; + } catch (error) { + throw new AssetUploadFailedError(error); + } + + return `https://arweave.net/${dataItemId}`; + }); + + return Promise.all(promises); + }; + + const uploadJson = async (json: T): Promise => { + const file = createGenericFileFromJson(json); + const uris = await upload([file]); + return uris[0]; + }; + + const getTurboStorageCreditBalance = async (): Promise => { + const { winc } = await (await getArweave()).getBalance(); + return winc; + }; + + const getBalance = async (): Promise => { + const usersWincBalance = await getTurboStorageCreditBalance(); + + const wincForOneSol = ( + await ( + await getArweave() + ).getWincForToken({ + tokenAmount: LAMPORTS_PER_SOL, + }) + ).winc; + + const solEquivalent = BigNumber(usersWincBalance).dividedBy(wincForOneSol); + + return bigNumberToAmount(solEquivalent); + }; + + const fund = async ( + amount: SolAmount, + skipBalanceCheck = false + ): Promise => { + let toFund = amountToBigNumber(amount); + + if (!skipBalanceCheck) { + const solEquivalentBalance = amountToBigNumber(await getBalance()); + + toFund = toFund.isGreaterThan(solEquivalentBalance) + ? toFund.minus(solEquivalentBalance) + : new BigNumber(0); + } + + if (toFund.isLessThanOrEqualTo(0)) { + return; + } + + (await getArweave()).topUpWithTokens({ + tokenAmount: SOLToTokenAmount(toFund), + }); + }; + + const getStripeCheckoutSession = async ( + amount: UsdAmount + ): Promise<{ + turboStorageCredits: BigNumber.Value; + checkoutSessionUrl: string; + }> => { + const arweave = await getArweave(); + + const { winc, url } = await arweave.createCheckoutSession({ + amount: USD(+amount.basisPoints.toString()), + owner: toWeb3JsPublicKey(context.payer.publicKey).toBase58(), + }); + if (!url) { + throw new Error('Failed to create Stripe Checkout Session'); + } + return { + turboStorageCredits: BigNumber(winc).exponentiatedBy(12), + checkoutSessionUrl: url, + }; + }; + + const getArweave = async (): Promise => { + const oldPayer = await _arweave?.signer.getPublicKey(); + const newPayer = options.payer ?? context.payer; + if ( + oldPayer && + publicKey(new Uint8Array(oldPayer)) !== newPayer.publicKey + ) { + _arweave = null; + } + + if (!_arweave) { + _arweave = await initArweave(); + } + + return _arweave; + }; + + const initArweave = async (): Promise => { + const payer: Signer = options.payer ?? context.payer; + + let arweave; + if (isKeypairSigner(payer)) { + arweave = TurboFactory.authenticated({ + token: 'solana', + privateKey: base58.deserialize(payer.secretKey)[0], + gatewayUrl: options.solRpcUrl, + uploadServiceConfig: { url: options.uploadServiceUrl }, + paymentServiceConfig: { url: options.paymentServiceUrl }, + }); + } else { + arweave = await initWebTurbo(payer, options); + } + + try { + // Check for valid Arweave node. + await arweave.getTurboCryptoWallets(); + } catch (error) { + throw new FailedToConnectToArweaveAddressError( + options.uploadServiceUrl ?? '', + options.paymentServiceUrl ?? '', + error as Error + ); + } + + return arweave; + }; + + const initWebTurbo = async ( + payer: Signer, + options: any + ): Promise => { + const wallet = { + publicKey: toWeb3JsPublicKey(payer.publicKey), + signMessage: payer.signMessage, + }; + + return TurboFactory.authenticated({ + token: 'solana', + walletAdapter: wallet, + gatewayUrl: options.solRpcUrl, + uploadServiceConfig: { url: options.uploadServiceUrl }, + paymentServiceConfig: { url: options.paymentServiceUrl }, + }); + }; + + return { + getUploadPriceFromBytes, + getUploadPrice, + upload, + uploadJson, + getBalance, + getTurboStorageCreditBalance, + fund, + getStripeCheckoutSession, + arweave: getArweave, + }; +} + +export const isArweaveUploader = ( + uploader: UploaderInterface +): uploader is ArweaveUploader => + 'Arweave' in uploader && 'getBalance' in uploader && 'fund' in uploader; + +const bigNumberToAmount = (bigNumber: BigNumber): SolAmount => + lamports(bigNumber.decimalPlaces(0).toString()); + +const amountToBigNumber = (amount: SolAmount): BigNumber => + new BigNumber(amount.basisPoints.toString()); + +const getGenericFileTagsWithContentType = ( + file: GenericFile +): GenericFileTag[] => { + if (!file.contentType) { + return file.tags; + } + + return [{ name: 'Content-Type', value: file.contentType }, ...file.tags]; +}; diff --git a/packages/umi-uploader-arweave/src/errors.ts b/packages/umi-uploader-arweave/src/errors.ts new file mode 100644 index 00000000..bb1c9b6b --- /dev/null +++ b/packages/umi-uploader-arweave/src/errors.ts @@ -0,0 +1,45 @@ +import { UmiError } from '@metaplex-foundation/umi'; + +export class ArweaveError extends UmiError { + readonly name: string = 'ArweaveError'; + + constructor(message: string, cause?: Error) { + super(message, 'plugin', 'Arweave', cause); + } +} + +export class FailedToInitializeArweaveError extends ArweaveError { + readonly name: string = 'FailedToInitializeArweaveError'; + + constructor(cause: Error) { + const message = + 'Arweave could not be initialized. ' + + 'Please check the underlying error below for more details.'; + super(message, cause); + } +} + +export class FailedToConnectToArweaveAddressError extends ArweaveError { + readonly name: string = 'FailedToConnectToArweaveAddressError'; + + constructor( + uploadServiceUrl: string, + paymentServiceUrl: string, + cause: Error + ) { + const message = + `Arweave could not connect to the provided addresses [${uploadServiceUrl}, ${paymentServiceUrl}]. ` + + 'Please ensure the provided address is valid. Some valid addresses include: ' + + '"https://upload.ardrive.io" and "https://payment.ardrive.io" for mainnet '; + super(message, cause); + } +} + +export class AssetUploadFailedError extends ArweaveError { + readonly name: string = 'AssetUploadFailedError'; + + constructor(error: unknown) { + const message = `The asset could not be uploaded to the Arweave network: ${error}`; + super(message); + } +} diff --git a/packages/umi-uploader-arweave/src/index.ts b/packages/umi-uploader-arweave/src/index.ts new file mode 100644 index 00000000..8ff83c4d --- /dev/null +++ b/packages/umi-uploader-arweave/src/index.ts @@ -0,0 +1,3 @@ +export * from './createArweaveUploader'; +export * from './errors'; +export * from './plugin'; diff --git a/packages/umi-uploader-arweave/src/plugin.ts b/packages/umi-uploader-arweave/src/plugin.ts new file mode 100644 index 00000000..362a4b7c --- /dev/null +++ b/packages/umi-uploader-arweave/src/plugin.ts @@ -0,0 +1,13 @@ +import type { UmiPlugin } from '@metaplex-foundation/umi'; +import { + ArweaveUploaderOptions, + createArweaveUploader, +} from './createArweaveUploader'; + +export const arweaveUploader = ( + options?: ArweaveUploaderOptions +): UmiPlugin => ({ + install(umi) { + umi.uploader = createArweaveUploader(umi, options); + }, +}); diff --git a/packages/umi-uploader-arweave/test/ArweaveUploader.test.ts b/packages/umi-uploader-arweave/test/ArweaveUploader.test.ts new file mode 100644 index 00000000..4a85507d --- /dev/null +++ b/packages/umi-uploader-arweave/test/ArweaveUploader.test.ts @@ -0,0 +1,57 @@ +import { + Context, + createGenericFile, + createUmi, + generatedSignerIdentity, + sol, +} from '@metaplex-foundation/umi'; +import { httpDownloader } from '@metaplex-foundation/umi-downloader-http'; +import { web3JsEddsa } from '@metaplex-foundation/umi-eddsa-web3js'; +import { fetchHttp } from '@metaplex-foundation/umi-http-fetch'; +import { web3JsRpc } from '@metaplex-foundation/umi-rpc-web3js'; +import test from 'ava'; +import { arweaveUploader, ArweaveUploaderOptions } from '../src'; +import { utf8 } from '@metaplex-foundation/umi/serializers'; + +test('example test', async (t) => { + t.is(typeof arweaveUploader, 'function'); +}); + +// TODO(loris): Unskip these tests when we can mock the Arweave API. + +const getContext = async ( + options?: ArweaveUploaderOptions +): Promise => { + const context = createUmi().use({ + install(umi) { + umi.use(web3JsRpc('https://api.devnet.solana.com')); + umi.use(web3JsEddsa()); + umi.use(fetchHttp()); + umi.use(httpDownloader()); + umi.use(arweaveUploader(options)); + umi.use(generatedSignerIdentity()); + }, + }); + await context.rpc.airdrop(context.payer.publicKey, sol(1)); + return context; +}; + +test.skip('it can upload one file', async (t) => { + t.timeout(60_000); + const context = await getContext({ + solRpcUrl: 'https://api.devnet.solana.com', + }); + + // When we upload some asset. + const [uri] = await context.uploader.upload([ + createGenericFile('some-image', 'some-image.jpg'), + ]); + + // Then the URI should be a valid arweave gateway URI. + t.truthy(uri); + t.true(uri.startsWith('https://arweave.net/')); + + // and it should point to the uploaded asset. + const [asset] = await context.downloader.download([uri]); + t.is(utf8.deserialize(asset.buffer)[0], 'some-image'); +}); diff --git a/packages/umi-uploader-arweave/test/tsconfig.json b/packages/umi-uploader-arweave/test/tsconfig.json new file mode 100644 index 00000000..955c579c --- /dev/null +++ b/packages/umi-uploader-arweave/test/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../../tsconfig.json", + "include": ["../test"], + "compilerOptions": { + "module": "commonjs", + "outDir": "../dist/test", + "declarationDir": null, + "declaration": false, + "emitDeclarationOnly": false + } +} diff --git a/packages/umi-uploader-arweave/tsconfig.json b/packages/umi-uploader-arweave/tsconfig.json new file mode 100644 index 00000000..89a681d0 --- /dev/null +++ b/packages/umi-uploader-arweave/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src"], + "compilerOptions": { + "outDir": "dist/esm", + "declarationDir": "dist/types" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a35baa55..ab215ba8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -512,6 +512,86 @@ importers: specifier: ^5.1.0 version: 5.1.0(@ava/typescript@3.0.1) + packages/umi-uploader-arweave: + dependencies: + '@ardrive/turbo-sdk': + specifier: link:../../../ardrive-turbo-sdk + version: link:../../../ardrive-turbo-sdk + '@metaplex-foundation/umi-web3js-adapters': + specifier: workspace:^ + version: link:../umi-web3js-adapters + bignumber.js: + specifier: ^9.1.2 + version: 9.1.2 + buffer: + specifier: ^6.0.3 + version: 6.0.3 + devDependencies: + '@ava/typescript': + specifier: ^3.0.1 + version: 3.0.1 + '@metaplex-foundation/umi': + specifier: workspace:^ + version: link:../umi + '@metaplex-foundation/umi-downloader-http': + specifier: workspace:^ + version: link:../umi-downloader-http + '@metaplex-foundation/umi-eddsa-web3js': + specifier: workspace:^ + version: link:../umi-eddsa-web3js + '@metaplex-foundation/umi-http-fetch': + specifier: workspace:^ + version: link:../umi-http-fetch + '@metaplex-foundation/umi-rpc-web3js': + specifier: workspace:^ + version: link:../umi-rpc-web3js + '@solana/web3.js': + specifier: ^1.72.0 + version: 1.72.0 + ava: + specifier: ^5.1.0 + version: 5.1.0(@ava/typescript@3.0.1) + + packages/umi-uploader-arweave-arx: + dependencies: + '@metaplex-foundation/umi-web3js-adapters': + specifier: workspace:^ + version: link:../umi-web3js-adapters + '@permaweb/arx': + specifier: link:../../../arx + version: link:../../../arx + bignumber.js: + specifier: ^9.1.2 + version: 9.1.2 + buffer: + specifier: ^6.0.3 + version: 6.0.3 + devDependencies: + '@ava/typescript': + specifier: ^3.0.1 + version: 3.0.1 + '@metaplex-foundation/umi': + specifier: workspace:^ + version: link:../umi + '@metaplex-foundation/umi-downloader-http': + specifier: workspace:^ + version: link:../umi-downloader-http + '@metaplex-foundation/umi-eddsa-web3js': + specifier: workspace:^ + version: link:../umi-eddsa-web3js + '@metaplex-foundation/umi-http-fetch': + specifier: workspace:^ + version: link:../umi-http-fetch + '@metaplex-foundation/umi-rpc-web3js': + specifier: workspace:^ + version: link:../umi-rpc-web3js + '@solana/web3.js': + specifier: ^1.72.0 + version: 1.72.0 + ava: + specifier: ^5.1.0 + version: 5.1.0(@ava/typescript@3.0.1) + packages/umi-uploader-aws: devDependencies: '@ava/typescript': @@ -814,20 +894,20 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/chunked-blob-reader-native@3.208.0: resolution: {integrity: sha512-JeOZ95PW+fJ6bbuqPySYqLqHk1n4+4ueEEraJsiUrPBV0S1ZtyvOGHcnGztKUjr2PYNaiexmpWuvUve9K12HRA==} dependencies: '@aws-sdk/util-base64': 3.208.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/chunked-blob-reader@3.188.0: resolution: {integrity: sha512-zkPRFZZPL3eH+kH86LDYYXImiClA1/sW60zYOjse9Pgka+eDJlvBN6hcYxwDEKjcwATYiSRR1aVQHcfCinlGXg==} dependencies: - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/client-s3@3.264.0: @@ -928,7 +1008,7 @@ packages: '@aws-sdk/util-user-agent-browser': 3.257.0 '@aws-sdk/util-user-agent-node': 3.259.0 '@aws-sdk/util-utf8': 3.254.0 - tslib: 2.4.1 + tslib: 2.7.0 transitivePeerDependencies: - aws-crt dev: true @@ -968,7 +1048,7 @@ packages: '@aws-sdk/util-user-agent-browser': 3.257.0 '@aws-sdk/util-user-agent-node': 3.259.0 '@aws-sdk/util-utf8': 3.254.0 - tslib: 2.4.1 + tslib: 2.7.0 transitivePeerDependencies: - aws-crt dev: true @@ -1012,7 +1092,7 @@ packages: '@aws-sdk/util-user-agent-node': 3.259.0 '@aws-sdk/util-utf8': 3.254.0 fast-xml-parser: 4.0.11 - tslib: 2.4.1 + tslib: 2.7.0 transitivePeerDependencies: - aws-crt dev: true @@ -1025,7 +1105,7 @@ packages: '@aws-sdk/types': 3.257.0 '@aws-sdk/util-config-provider': 3.208.0 '@aws-sdk/util-middleware': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/credential-provider-env@3.257.0: @@ -1034,7 +1114,7 @@ packages: dependencies: '@aws-sdk/property-provider': 3.257.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/credential-provider-imds@3.259.0: @@ -1045,7 +1125,7 @@ packages: '@aws-sdk/property-provider': 3.257.0 '@aws-sdk/types': 3.257.0 '@aws-sdk/url-parser': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/credential-provider-ini@3.264.0: @@ -1060,7 +1140,7 @@ packages: '@aws-sdk/property-provider': 3.257.0 '@aws-sdk/shared-ini-file-loader': 3.257.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 transitivePeerDependencies: - aws-crt dev: true @@ -1078,7 +1158,7 @@ packages: '@aws-sdk/property-provider': 3.257.0 '@aws-sdk/shared-ini-file-loader': 3.257.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 transitivePeerDependencies: - aws-crt dev: true @@ -1090,7 +1170,7 @@ packages: '@aws-sdk/property-provider': 3.257.0 '@aws-sdk/shared-ini-file-loader': 3.257.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/credential-provider-sso@3.264.0: @@ -1102,7 +1182,7 @@ packages: '@aws-sdk/shared-ini-file-loader': 3.257.0 '@aws-sdk/token-providers': 3.264.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 transitivePeerDependencies: - aws-crt dev: true @@ -1113,7 +1193,7 @@ packages: dependencies: '@aws-sdk/property-provider': 3.257.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/eventstream-codec@3.258.0: @@ -1122,7 +1202,7 @@ packages: '@aws-crypto/crc32': 3.0.0 '@aws-sdk/types': 3.257.0 '@aws-sdk/util-hex-encoding': 3.201.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/eventstream-serde-browser@3.258.0: @@ -1131,7 +1211,7 @@ packages: dependencies: '@aws-sdk/eventstream-serde-universal': 3.258.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/eventstream-serde-config-resolver@3.257.0: @@ -1139,7 +1219,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/eventstream-serde-node@3.258.0: @@ -1148,7 +1228,7 @@ packages: dependencies: '@aws-sdk/eventstream-serde-universal': 3.258.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/eventstream-serde-universal@3.258.0: @@ -1157,7 +1237,7 @@ packages: dependencies: '@aws-sdk/eventstream-codec': 3.258.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/fetch-http-handler@3.257.0: @@ -1167,7 +1247,7 @@ packages: '@aws-sdk/querystring-builder': 3.257.0 '@aws-sdk/types': 3.257.0 '@aws-sdk/util-base64': 3.208.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/hash-blob-browser@3.257.0: @@ -1176,7 +1256,7 @@ packages: '@aws-sdk/chunked-blob-reader': 3.188.0 '@aws-sdk/chunked-blob-reader-native': 3.208.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/hash-node@3.257.0: @@ -1186,7 +1266,7 @@ packages: '@aws-sdk/types': 3.257.0 '@aws-sdk/util-buffer-from': 3.208.0 '@aws-sdk/util-utf8': 3.254.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/hash-stream-node@3.257.0: @@ -1195,21 +1275,21 @@ packages: dependencies: '@aws-sdk/types': 3.257.0 '@aws-sdk/util-utf8': 3.254.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/invalid-dependency@3.257.0: resolution: {integrity: sha512-T68SAPRNMEhpke0wlxURgogL7q0B8dfqZsSeS20BVR/lksJxLse9+pbmCDxiu1RrXoEIsEwl5rbLN+Hw8BFFYw==} dependencies: '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/is-array-buffer@3.201.0: resolution: {integrity: sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/md5-js@3.258.0: @@ -1217,7 +1297,7 @@ packages: dependencies: '@aws-sdk/types': 3.257.0 '@aws-sdk/util-utf8': 3.254.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/middleware-bucket-endpoint@3.259.0: @@ -1228,7 +1308,7 @@ packages: '@aws-sdk/types': 3.257.0 '@aws-sdk/util-arn-parser': 3.208.0 '@aws-sdk/util-config-provider': 3.208.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/middleware-content-length@3.257.0: @@ -1237,7 +1317,7 @@ packages: dependencies: '@aws-sdk/protocol-http': 3.257.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/middleware-endpoint@3.264.0: @@ -1251,7 +1331,7 @@ packages: '@aws-sdk/url-parser': 3.257.0 '@aws-sdk/util-config-provider': 3.208.0 '@aws-sdk/util-middleware': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/middleware-expect-continue@3.257.0: @@ -1260,7 +1340,7 @@ packages: dependencies: '@aws-sdk/protocol-http': 3.257.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/middleware-flexible-checksums@3.259.0: @@ -1273,7 +1353,7 @@ packages: '@aws-sdk/protocol-http': 3.257.0 '@aws-sdk/types': 3.257.0 '@aws-sdk/util-utf8': 3.254.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/middleware-host-header@3.257.0: @@ -1282,7 +1362,7 @@ packages: dependencies: '@aws-sdk/protocol-http': 3.257.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/middleware-location-constraint@3.257.0: @@ -1290,7 +1370,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/middleware-logger@3.257.0: @@ -1298,7 +1378,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/middleware-recursion-detection@3.257.0: @@ -1307,7 +1387,7 @@ packages: dependencies: '@aws-sdk/protocol-http': 3.257.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/middleware-retry@3.259.0: @@ -1319,7 +1399,7 @@ packages: '@aws-sdk/types': 3.257.0 '@aws-sdk/util-middleware': 3.257.0 '@aws-sdk/util-retry': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 uuid: 8.3.2 dev: true @@ -1330,7 +1410,7 @@ packages: '@aws-sdk/protocol-http': 3.257.0 '@aws-sdk/types': 3.257.0 '@aws-sdk/util-arn-parser': 3.208.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/middleware-sdk-sts@3.257.0: @@ -1342,7 +1422,7 @@ packages: '@aws-sdk/protocol-http': 3.257.0 '@aws-sdk/signature-v4': 3.257.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/middleware-serde@3.257.0: @@ -1350,7 +1430,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/middleware-signing@3.257.0: @@ -1362,7 +1442,7 @@ packages: '@aws-sdk/signature-v4': 3.257.0 '@aws-sdk/types': 3.257.0 '@aws-sdk/util-middleware': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/middleware-ssec@3.257.0: @@ -1370,14 +1450,14 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/middleware-stack@3.257.0: resolution: {integrity: sha512-awg2F0SvwACBaw4HIObK8pQGfSqAc4Vy+YFzWSfZNVC35oRO6RsRdKHVU99lRC0LrT2Ptmfghl2DMPSrRDbvlQ==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/middleware-user-agent@3.257.0: @@ -1386,7 +1466,7 @@ packages: dependencies: '@aws-sdk/protocol-http': 3.257.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/node-config-provider@3.259.0: @@ -1396,7 +1476,7 @@ packages: '@aws-sdk/property-provider': 3.257.0 '@aws-sdk/shared-ini-file-loader': 3.257.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/node-http-handler@3.257.0: @@ -1407,7 +1487,7 @@ packages: '@aws-sdk/protocol-http': 3.257.0 '@aws-sdk/querystring-builder': 3.257.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/property-provider@3.257.0: @@ -1415,7 +1495,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/protocol-http@3.257.0: @@ -1423,7 +1503,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/querystring-builder@3.257.0: @@ -1432,7 +1512,7 @@ packages: dependencies: '@aws-sdk/types': 3.257.0 '@aws-sdk/util-uri-escape': 3.201.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/querystring-parser@3.257.0: @@ -1440,7 +1520,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/service-error-classification@3.257.0: @@ -1453,7 +1533,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/signature-v4-multi-region@3.264.0: @@ -1469,7 +1549,7 @@ packages: '@aws-sdk/signature-v4': 3.257.0 '@aws-sdk/types': 3.257.0 '@aws-sdk/util-arn-parser': 3.208.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/signature-v4@3.257.0: @@ -1482,7 +1562,7 @@ packages: '@aws-sdk/util-middleware': 3.257.0 '@aws-sdk/util-uri-escape': 3.201.0 '@aws-sdk/util-utf8': 3.254.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/smithy-client@3.261.0: @@ -1491,7 +1571,7 @@ packages: dependencies: '@aws-sdk/middleware-stack': 3.257.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/token-providers@3.264.0: @@ -1502,7 +1582,7 @@ packages: '@aws-sdk/property-provider': 3.257.0 '@aws-sdk/shared-ini-file-loader': 3.257.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 transitivePeerDependencies: - aws-crt dev: true @@ -1511,7 +1591,7 @@ packages: resolution: {integrity: sha512-LmqXuBQBGeaGi/3Rp7XiEX1B5IPO2UUfBVvu0wwGqVsmstT0SbOVDZGPmxygACbm64n+PRx3uTSDefRfoiWYZg==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/url-parser@3.257.0: @@ -1519,14 +1599,14 @@ packages: dependencies: '@aws-sdk/querystring-parser': 3.257.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-arn-parser@3.208.0: resolution: {integrity: sha512-QV4af+kscova9dv4VuHOgH8wEr/IIYHDGcnyVtkUEqahCejWr1Kuk+SBK0xMwnZY5LSycOtQ8aeqHOn9qOjZtA==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-base64@3.208.0: @@ -1534,20 +1614,20 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/util-buffer-from': 3.208.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-body-length-browser@3.188.0: resolution: {integrity: sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==} dependencies: - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-body-length-node@3.208.0: resolution: {integrity: sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-buffer-from@3.208.0: @@ -1555,14 +1635,14 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/is-array-buffer': 3.201.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-config-provider@3.208.0: resolution: {integrity: sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-defaults-mode-browser@3.261.0: @@ -1572,7 +1652,7 @@ packages: '@aws-sdk/property-provider': 3.257.0 '@aws-sdk/types': 3.257.0 bowser: 2.11.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-defaults-mode-node@3.261.0: @@ -1584,7 +1664,7 @@ packages: '@aws-sdk/node-config-provider': 3.259.0 '@aws-sdk/property-provider': 3.257.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-endpoints@3.257.0: @@ -1592,28 +1672,28 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-hex-encoding@3.201.0: resolution: {integrity: sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-locate-window@3.208.0: resolution: {integrity: sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-middleware@3.257.0: resolution: {integrity: sha512-F9ieon8B8eGVs5tyZtAIG3DZEObDvujkspho0qRbUTHUosM0ylJLsMU800fmC/uRHLRrZvb/RSp59+kNDwSAMw==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-retry@3.257.0: @@ -1621,7 +1701,7 @@ packages: engines: {node: '>= 14.0.0'} dependencies: '@aws-sdk/service-error-classification': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-stream-browser@3.258.0: @@ -1632,7 +1712,7 @@ packages: '@aws-sdk/util-base64': 3.208.0 '@aws-sdk/util-hex-encoding': 3.201.0 '@aws-sdk/util-utf8': 3.254.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-stream-node@3.257.0: @@ -1642,14 +1722,14 @@ packages: '@aws-sdk/node-http-handler': 3.257.0 '@aws-sdk/types': 3.257.0 '@aws-sdk/util-buffer-from': 3.208.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-uri-escape@3.201.0: resolution: {integrity: sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-user-agent-browser@3.257.0: @@ -1657,7 +1737,7 @@ packages: dependencies: '@aws-sdk/types': 3.257.0 bowser: 2.11.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-user-agent-node@3.259.0: @@ -1671,13 +1751,13 @@ packages: dependencies: '@aws-sdk/node-config-provider': 3.259.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-utf8-browser@3.259.0: resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} dependencies: - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-utf8@3.254.0: @@ -1685,7 +1765,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/util-buffer-from': 3.208.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/util-waiter@3.257.0: @@ -1694,14 +1774,14 @@ packages: dependencies: '@aws-sdk/abort-controller': 3.257.0 '@aws-sdk/types': 3.257.0 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@aws-sdk/xml-builder@3.201.0: resolution: {integrity: sha512-brRdB1wwMgjWEnOQsv7zSUhIQuh7DEicrfslAqHop4S4FtSI3GQAShpQqgOpMTNFYcpaWKmE/Y1MJmNY7xLCnw==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.4.1 + tslib: 2.7.0 dev: true /@babel/code-frame@7.18.6: @@ -2954,6 +3034,12 @@ packages: dependencies: regenerator-runtime: 0.13.11 + /@babel/runtime@7.25.6: + resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + /@babel/template@7.18.10: resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} engines: {node: '>=6.9.0'} @@ -3031,11 +3117,11 @@ packages: deprecated: Bundlr is now Irys - please switch to @irys/sdk - this package will remain compatible with Irys for the foreseeable future. hasBin: true dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.72.0) - '@solana/web3.js': 1.72.0 + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.3) + '@solana/web3.js': 1.95.3 '@supercharge/promise-pool': 2.4.0 algosdk: 1.24.1 - arbundles: 0.6.23(@solana/web3.js@1.72.0) + arbundles: 0.6.23(@solana/web3.js@1.95.3) arweave: 1.12.4 async-retry: 1.3.3 axios: 0.25.0(debug@4.3.4) @@ -3054,14 +3140,13 @@ packages: - bufferutil - debug - encoding - - supports-color - utf-8-validate dev: false /@changesets/apply-release-plan@6.1.3: resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.25.6 '@changesets/config': 2.3.0 '@changesets/get-version-range-type': 0.3.2 '@changesets/git': 2.0.0 @@ -3079,7 +3164,7 @@ packages: /@changesets/assemble-release-plan@5.2.3(patch_hash=psjonfb234vefryc6hzdzm5ple): resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.25.6 '@changesets/errors': 0.1.4 '@changesets/get-dependents-graph': 1.3.5 '@changesets/types': 5.2.1 @@ -3183,7 +3268,7 @@ packages: /@changesets/get-release-plan@3.0.16: resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.25.6 '@changesets/assemble-release-plan': 5.2.3(patch_hash=psjonfb234vefryc6hzdzm5ple) '@changesets/config': 2.3.0 '@changesets/pre': 1.0.14 @@ -3199,7 +3284,7 @@ packages: /@changesets/git@2.0.0: resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.25.6 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -3224,7 +3309,7 @@ packages: /@changesets/pre@1.0.14: resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.25.6 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -3234,7 +3319,7 @@ packages: /@changesets/read@0.5.9: resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.25.6 '@changesets/git': 2.0.0 '@changesets/logger': 0.0.5 '@changesets/parse': 0.3.16 @@ -3255,7 +3340,7 @@ packages: /@changesets/write@0.2.3: resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.25.6 '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 @@ -3930,7 +4015,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.72.0 + '@solana/web3.js': 1.95.3 '@supercharge/promise-pool': 3.1.0 algosdk: 1.24.1 arbundles: 0.11.1(arweave@1.15.1) @@ -3951,7 +4036,6 @@ packages: - bufferutil - debug - encoding - - supports-color - utf-8-validate dev: false @@ -4010,7 +4094,7 @@ packages: /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.25.6 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 @@ -4019,7 +4103,7 @@ packages: /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.25.6 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -4034,7 +4118,7 @@ packages: detect-libc: 2.0.1 https-proxy-agent: 5.0.1 make-dir: 3.1.0 - node-fetch: 2.6.9 + node-fetch: 2.7.0 nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 @@ -4260,7 +4344,7 @@ packages: dependencies: '@dashkite/tweetnacl': 1.0.3 '@ipld/dag-pb': 2.1.18 - '@solana/web3.js': 1.72.0 + '@solana/web3.js': 1.95.3 '@web-std/fetch': 2.1.2 '@web-std/file': 1.1.4 ajv: 8.12.0 @@ -4301,13 +4385,13 @@ packages: resolution: {integrity: sha512-J5EKamIHnKPyClwVrzmaf5wSdQXgdHcPZIZLu3bwnbeCx8/7NPK5q2ZBWF+5FvYGByjiQQsJYX6jfgB2wDPn3A==} dependencies: '@noble/hashes': 1.4.0 - dev: false /@noble/ed25519@1.7.1: resolution: {integrity: sha512-Rk4SkJFaXZiznFyC/t77Q0NKS4FL7TLJJsVG2V2oiEq3kJVeTdxysEe/yRWSpnWMe808XRDJ+VFh5pt/FN5plw==} /@noble/hashes@1.2.0: resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} + dev: false /@noble/hashes@1.3.0: resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} @@ -4316,7 +4400,6 @@ packages: /@noble/hashes@1.4.0: resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} - dev: false /@noble/secp256k1@1.7.0: resolution: {integrity: sha512-kbacwGSsH/CTout0ZnZWxnW1B+jH/7r/WAAKLBtrRJ/+CUH7lgmQzl3GTrQua3SGKWNSDsS6lmjnDpIJ5Dxyaw==} @@ -4463,7 +4546,7 @@ packages: lodash.debounce: 4.0.8 lru-cache: 7.15.0 minimatch: 3.1.2 - node-fetch: 2.6.9 + node-fetch: 2.7.0 ora: 5.4.1 postcss: 8.4.19 postcss-discard-duplicates: 5.1.0(postcss@8.4.19) @@ -4478,7 +4561,7 @@ packages: sort-package-json: 1.57.0 tar-fs: 2.1.1 tsconfig-paths: 4.1.2 - ws: 7.5.9 + ws: 7.5.10 xdm: 2.1.0 transitivePeerDependencies: - bluebird @@ -4727,14 +4810,13 @@ packages: resolution: {integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==} engines: {node: '>= 10'} dependencies: - '@solana/buffer-layout': 4.0.0 - '@solana/web3.js': 1.72.0 + '@solana/buffer-layout': 4.0.1 + '@solana/web3.js': 1.95.3 bigint-buffer: 1.1.5 bignumber.js: 9.1.2 transitivePeerDependencies: - bufferutil - encoding - - supports-color - utf-8-validate dev: true @@ -4744,6 +4826,12 @@ packages: dependencies: buffer: 6.0.3 + /@solana/buffer-layout@4.0.1: + resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} + engines: {node: '>=5.10'} + dependencies: + buffer: 6.0.3 + /@solana/spl-token-registry@0.2.4574: resolution: {integrity: sha512-JzlfZmke8Rxug20VT/VpI2XsXlsqMlcORIUivF+Yucj7tFi7A0dXG7h+2UnD0WaZJw8BrUz2ABNkUnv89vbv1A==} engines: {node: '>=10'} @@ -4755,9 +4843,9 @@ packages: resolution: {integrity: sha512-RWcn31OXtdqIxmkzQfB2R+WpsJOVS6rKuvpxJFjvik2LyODd+WN58ZP3Rpjpro03fscGAkzlFuP3r42doRJgyQ==} engines: {node: '>= 14'} dependencies: - '@solana/buffer-layout': 4.0.0 + '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0 - '@solana/web3.js': 1.72.0 + '@solana/web3.js': 1.95.3 start-server-and-test: 1.15.1 transitivePeerDependencies: - bufferutil @@ -4766,14 +4854,14 @@ packages: - utf-8-validate dev: true - /@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.72.0): + /@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.3): resolution: {integrity: sha512-apqMuYwFp1jFi55NxDfvXUX2x1T0Zh07MxhZ/nCCTGys5raSfYUh82zen2BLv8BSDj/JxZ2P/s7jrQZGrX8uAw==} engines: {node: '>=16'} peerDependencies: '@solana/web3.js': ^1.77.3 dependencies: '@solana/wallet-standard-features': 1.1.0 - '@solana/web3.js': 1.72.0 + '@solana/web3.js': 1.95.3 '@wallet-standard/base': 1.0.1 '@wallet-standard/features': 1.0.3 eventemitter3: 4.0.7 @@ -4793,7 +4881,7 @@ packages: dependencies: '@babel/runtime': 7.20.6 '@noble/ed25519': 1.7.1 - '@noble/hashes': 1.2.0 + '@noble/hashes': 1.4.0 '@noble/secp256k1': 1.7.0 '@solana/buffer-layout': 4.0.0 agentkeepalive: 4.2.1 @@ -4804,7 +4892,7 @@ packages: buffer: 6.0.1 fast-stable-stringify: 1.0.0 jayson: 3.7.0 - node-fetch: 2.6.9 + node-fetch: 2.7.0 rpc-websockets: 7.5.0 superstruct: 0.14.2 transitivePeerDependencies: @@ -4813,6 +4901,29 @@ packages: - supports-color - utf-8-validate + /@solana/web3.js@1.95.3: + resolution: {integrity: sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og==} + dependencies: + '@babel/runtime': 7.25.6 + '@noble/curves': 1.5.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.2 + node-fetch: 2.7.0 + rpc-websockets: 9.0.4 + superstruct: 2.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + /@supercharge/promise-pool@2.4.0: resolution: {integrity: sha512-O9CMipBlq5OObdt1uKJGIzm9cdjpPWfj+a+Zw9EgWKxaMNHKC7EU7X9taj3H0EGQNLOSq2jAcOa3EzxlfHsD6w==} engines: {node: '>=8'} @@ -4823,6 +4934,11 @@ packages: engines: {node: '>=8'} dev: false + /@swc/helpers@0.5.13: + resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} + dependencies: + tslib: 2.7.0 + /@szmarczak/http-timer@4.0.6: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} @@ -4870,7 +4986,7 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 18.11.11 + '@types/node': 18.15.13 '@types/responselike': 1.0.0 /@types/connect@3.4.35: @@ -4885,7 +5001,7 @@ packages: /@types/cors@2.8.13: resolution: {integrity: sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==} dependencies: - '@types/node': 18.11.11 + '@types/node': 18.15.13 dev: true /@types/debug@4.1.7: @@ -4918,7 +5034,7 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 3.0.5 - '@types/node': 18.11.11 + '@types/node': 18.15.13 dev: true /@types/hast@2.3.4: @@ -4947,7 +5063,7 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 18.11.11 + '@types/node': 18.15.13 /@types/long@4.0.2: resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} @@ -4994,6 +5110,9 @@ packages: /@types/node@18.11.11: resolution: {integrity: sha512-KJ021B1nlQUBLopzZmPBVuGU9un7WJd/W4ya7Ih02B4Uwky5Nja0yGYav2EfYIk0RR2Q9oVhf60S2XR1BCWJ2g==} + /@types/node@18.15.13: + resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -5022,7 +5141,7 @@ packages: /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 18.11.11 + '@types/node': 18.15.13 /@types/retry@0.12.0: resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} @@ -5058,11 +5177,19 @@ packages: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: true + /@types/uuid@8.3.4: + resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} + /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: '@types/node': 18.11.11 + /@types/ws@8.5.12: + resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} + dependencies: + '@types/node': 18.15.13 + /@typescript-eslint/eslint-plugin@5.51.0(@typescript-eslint/parser@5.51.0)(eslint@8.33.0)(typescript@4.9.5): resolution: {integrity: sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5613,6 +5740,12 @@ packages: transitivePeerDependencies: - supports-color + /agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + dependencies: + humanize-ms: 1.2.1 + /aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -5775,15 +5908,15 @@ packages: - utf-8-validate dev: false - /arbundles@0.6.23(@solana/web3.js@1.72.0): + /arbundles@0.6.23(@solana/web3.js@1.95.3): resolution: {integrity: sha512-+gr93F3fivN+6dhiImT6BQNaXz4oECPn2GYjCZjS2yEoq7hM78FRvVp6kQyjEdhnuBFQr/q4oS/nkjnQlHdj9Q==} dependencies: '@noble/ed25519': 1.7.1 '@randlabs/myalgo-connect': 1.4.2 - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.72.0) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.3) algosdk: 1.24.1 - arweave: 1.12.4 - arweave-stream-tx: 1.2.2(arweave@1.12.4) + arweave: 1.15.1 + arweave-stream-tx: 1.2.2(arweave@1.15.1) avsc: github.com/Irys-xyz/avsc/a730cc8018b79e114b6a3381bbb57760a24c6cef axios: 0.21.4(debug@4.3.4) base64url: 3.0.1 @@ -5805,7 +5938,7 @@ packages: /arconnect@0.4.2: resolution: {integrity: sha512-Jkpd4QL3TVqnd3U683gzXmZUVqBUy17DdJDuL/3D9rkysLgX6ymJ2e+sR+xyZF5Rh42CBqDXWNMmCjBXeP7Gbw==} dependencies: - arweave: 1.12.4 + arweave: 1.15.1 dev: false /are-we-there-yet@2.0.0: @@ -5813,7 +5946,7 @@ packages: engines: {node: '>=10'} dependencies: delegates: 1.0.0 - readable-stream: 3.6.0 + readable-stream: 3.6.2 dev: true /arg@4.1.3: @@ -5925,16 +6058,6 @@ packages: engines: {node: '>=12'} dev: true - /arweave-stream-tx@1.2.2(arweave@1.12.4): - resolution: {integrity: sha512-bNt9rj0hbAEzoUZEF2s6WJbIz8nasZlZpxIw03Xm8fzb9gRiiZlZGW3lxQLjfc9Z0VRUWDzwtqoYeEoB/JDToQ==} - requiresBuild: true - peerDependencies: - arweave: ^1.10.0 - dependencies: - arweave: 1.12.4 - exponential-backoff: 3.1.0 - dev: false - /arweave-stream-tx@1.2.2(arweave@1.15.1): resolution: {integrity: sha512-bNt9rj0hbAEzoUZEF2s6WJbIz8nasZlZpxIw03Xm8fzb9gRiiZlZGW3lxQLjfc9Z0VRUWDzwtqoYeEoB/JDToQ==} requiresBuild: true @@ -5944,7 +6067,6 @@ packages: arweave: 1.15.1 exponential-backoff: 3.1.0 dev: false - optional: true /arweave@1.12.4: resolution: {integrity: sha512-W5z7hb9/ZP2vy6BiYC+2obfGMhlhz/DaCkEXpkj/4hjaecWYUnvlUX5aCI2i0+lCrzbBUFbz+maDihUpBrdZpg==} @@ -5965,7 +6087,6 @@ packages: base64-js: 1.5.1 bignumber.js: 9.1.2 dev: false - optional: true /asn1.js@5.4.1: resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} @@ -5980,14 +6101,14 @@ packages: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} dependencies: - tslib: 2.4.1 + tslib: 2.7.0 dev: true /ast-types@0.15.2: resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} engines: {node: '>=4'} dependencies: - tslib: 2.4.1 + tslib: 2.7.0 dev: true /astring@1.8.4: @@ -6082,21 +6203,21 @@ packages: /axios@0.21.4(debug@4.3.4): resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} dependencies: - follow-redirects: 1.15.2(debug@4.3.4) + follow-redirects: 1.15.6(debug@4.3.4) transitivePeerDependencies: - debug /axios@0.25.0(debug@4.3.4): resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} dependencies: - follow-redirects: 1.15.2(debug@4.3.4) + follow-redirects: 1.15.6(debug@4.3.4) transitivePeerDependencies: - debug /axios@1.7.4: resolution: {integrity: sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==} dependencies: - follow-redirects: 1.15.6 + follow-redirects: 1.15.6(debug@4.3.4) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -6106,7 +6227,7 @@ packages: /axios@1.7.5: resolution: {integrity: sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==} dependencies: - follow-redirects: 1.15.6 + follow-redirects: 1.15.6(debug@4.3.4) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -6241,7 +6362,7 @@ packages: dependencies: buffer: 5.7.1 inherits: 2.0.4 - readable-stream: 3.6.0 + readable-stream: 3.6.2 /bl@5.1.0: resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} @@ -7433,7 +7554,7 @@ packages: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.13 - '@types/node': 18.11.11 + '@types/node': 18.15.13 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -7509,6 +7630,10 @@ packages: unbox-primitive: 1.0.2 dev: true + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + /es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: @@ -8193,7 +8318,6 @@ packages: /eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - dev: false /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} @@ -8483,8 +8607,8 @@ packages: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true - /follow-redirects@1.15.2(debug@4.3.4): - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + /follow-redirects@1.15.6(debug@4.3.4): + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -8494,16 +8618,6 @@ packages: dependencies: debug: 4.3.4 - /follow-redirects@1.15.6: - resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: false - /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: @@ -8616,6 +8730,9 @@ packages: /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} @@ -8668,6 +8785,16 @@ packages: has: 1.0.3 has-symbols: 1.0.3 + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + /get-iterator@1.0.2: resolution: {integrity: sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==} dev: false @@ -8693,7 +8820,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.4 dev: true /get-uri@3.0.2: @@ -8744,6 +8871,7 @@ packages: /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -8815,7 +8943,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.4 dev: false /got@11.8.6: @@ -8883,6 +9011,10 @@ packages: get-intrinsic: 1.1.3 dev: true + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} @@ -8908,7 +9040,7 @@ packages: engines: {node: '>=4'} dependencies: inherits: 2.0.4 - readable-stream: 3.6.0 + readable-stream: 3.6.2 safe-buffer: 5.2.1 dev: false @@ -8919,6 +9051,12 @@ packages: minimalistic-assert: 1.0.1 dev: false + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + /hast-util-to-estree@2.3.2: resolution: {integrity: sha512-YYDwATNdnvZi3Qi84iatPIl1lWpXba1MeNrNbDfJfVzEBZL8uUmtR7mt7bxKBC8kuAuvb0bkojXYZzsNHyHCLg==} dependencies: @@ -9112,6 +9250,7 @@ packages: /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. dependencies: once: 1.4.0 wrappy: 1.0.2 @@ -9166,7 +9305,7 @@ packages: resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.4 has: 1.0.3 side-channel: 1.0.4 dev: true @@ -9361,8 +9500,8 @@ packages: it-to-stream: 1.0.0 merge-options: 3.0.4 nanoid: 3.3.4 - native-fetch: 3.0.0(node-fetch@2.6.9) - node-fetch: 2.6.9 + native-fetch: 3.0.0(node-fetch@2.7.0) + node-fetch: 2.7.0 react-native-fetch-api: 3.0.0 stream-to-it: 0.2.4 transitivePeerDependencies: @@ -9683,12 +9822,12 @@ packages: engines: {node: '>=12'} dev: false - /isomorphic-ws@4.0.1(ws@7.5.9): + /isomorphic-ws@4.0.1(ws@7.5.10): resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} peerDependencies: ws: '*' dependencies: - ws: 7.5.9 + ws: 7.5.10 /it-all@1.0.6: resolution: {integrity: sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==} @@ -9758,7 +9897,7 @@ packages: get-iterator: 1.0.2 p-defer: 3.0.0 p-fifo: 1.0.0 - readable-stream: 3.6.0 + readable-stream: 3.6.2 dev: false /javascript-stringify@2.1.0: @@ -9778,11 +9917,32 @@ packages: delay: 5.0.0 es6-promisify: 5.0.0 eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.9) + isomorphic-ws: 4.0.1(ws@7.5.10) json-stringify-safe: 5.0.1 lodash: 4.17.21 uuid: 8.3.2 - ws: 7.5.9 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + /jayson@4.1.2: + resolution: {integrity: sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA==} + 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.10) + json-stringify-safe: 5.0.1 + uuid: 8.3.2 + ws: 7.5.10 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -9984,7 +10144,7 @@ packages: dependencies: node-addon-api: 2.0.2 node-gyp-build: 4.5.0 - readable-stream: 3.6.0 + readable-stream: 3.6.2 dev: false /keyv@4.5.2: @@ -10364,7 +10524,7 @@ packages: /media-query-parser@2.0.2: resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.25.6 dev: true /media-typer@0.3.0: @@ -10944,7 +11104,7 @@ packages: requiresBuild: true dependencies: once: 1.4.0 - readable-stream: 3.6.0 + readable-stream: 3.6.2 dev: false /murmurhash3js-revisited@3.0.0: @@ -10981,6 +11141,14 @@ packages: node-fetch: 2.6.9 dev: false + /native-fetch@3.0.0(node-fetch@2.7.0): + resolution: {integrity: sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==} + peerDependencies: + node-fetch: '*' + dependencies: + node-fetch: 2.7.0 + dev: false + /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true @@ -11000,7 +11168,7 @@ packages: http-errors: 1.8.1 js-sha256: 0.9.0 mustache: 4.2.0 - node-fetch: 2.6.9 + node-fetch: 2.7.0 text-encoding-utf-8: 1.0.2 tweetnacl: 1.0.3 transitivePeerDependencies: @@ -11143,12 +11311,11 @@ packages: optional: true dependencies: whatwg-url: 5.0.0 - dev: false - optional: true /node-gyp-build@4.5.0: resolution: {integrity: sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==} hasBin: true + requiresBuild: true /node-releases@2.0.6: resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} @@ -11895,7 +12062,7 @@ packages: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 18.11.11 + '@types/node': 18.15.13 long: 4.0.0 dev: false @@ -11997,8 +12164,8 @@ packages: bl: 5.1.0 debug: 4.3.4 minimist: 1.2.7 - node-fetch: 2.6.9 - readable-stream: 3.6.0 + node-fetch: 2.7.0 + readable-stream: 3.6.2 transitivePeerDependencies: - encoding - supports-color @@ -12085,6 +12252,15 @@ packages: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 + dev: false + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} @@ -12100,7 +12276,7 @@ packages: ast-types: 0.15.2 esprima: 4.0.1 source-map: 0.6.1 - tslib: 2.4.1 + tslib: 2.7.0 dev: true /receptacle@1.3.2: @@ -12135,10 +12311,13 @@ 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==} + /regenerator-transform@0.15.1: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.25.6 dev: true /regexp.prototype.flags@1.4.3: @@ -12293,6 +12472,7 @@ packages: /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true dependencies: glob: 7.2.3 @@ -12345,10 +12525,24 @@ packages: /rpc-websockets@7.5.0: resolution: {integrity: sha512-9tIRi1uZGy7YmDjErf1Ax3wtqdSSLIlnmL5OtOzgd5eqPKbsPpwDP5whUDO2LQay3Xp0CcHlcNSGzacNRluBaQ==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.25.6 eventemitter3: 4.0.7 uuid: 8.3.2 - ws: 8.11.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + /rpc-websockets@9.0.4: + resolution: {integrity: sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==} + dependencies: + '@swc/helpers': 0.5.13 + '@types/uuid': 8.3.4 + '@types/ws': 8.5.12 + buffer: 6.0.3 + eventemitter3: 5.0.1 + uuid: 8.3.2 + ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) optionalDependencies: bufferutil: 4.0.8 utf-8-validate: 5.0.10 @@ -12366,7 +12560,7 @@ packages: /rxjs@7.6.0: resolution: {integrity: sha512-DDa7d8TFNUalGC9VqXvQ1euWNN7sc63TrUCuM9J998+ViviahMIjKSOU7rfcgFOF+FCD71BhDRv4hrFz+ImDLQ==} dependencies: - tslib: 2.4.1 + tslib: 2.7.0 /sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} @@ -12390,7 +12584,7 @@ packages: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.4 is-regex: 1.1.4 dev: true @@ -12575,7 +12769,7 @@ packages: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.4 object-inspect: 1.12.2 dev: true @@ -12976,6 +13170,10 @@ packages: /superstruct@0.14.2: resolution: {integrity: sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==} + /superstruct@2.0.2: + resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} + engines: {node: '>=14.0.0'} + /supertap@3.0.1: resolution: {integrity: sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -13029,7 +13227,7 @@ packages: end-of-stream: 1.4.4 fs-constants: 1.0.0 inherits: 2.0.4 - readable-stream: 3.6.0 + readable-stream: 3.6.2 dev: true /tar@6.1.13: @@ -13261,10 +13459,10 @@ packages: /tslib@2.4.1: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + dev: true /tslib@2.7.0: resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - dev: false /tsutils@3.21.0(typescript@4.9.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -13920,8 +14118,8 @@ packages: optional: true dev: false - /ws@7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + /ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 @@ -13932,12 +14130,12 @@ packages: utf-8-validate: optional: true - /ws@8.11.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} + /ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10): + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 + utf-8-validate: '>=5.0.2' peerDependenciesMeta: bufferutil: optional: true From 0a29a54e424d039bcc0aab3b648b7ac5c6a1e708 Mon Sep 17 00:00:00 2001 From: Derek Sonnenberg Date: Tue, 1 Oct 2024 11:54:49 -0500 Subject: [PATCH 02/10] refactor: setup devnet, adjust pricing and balance checks PE-6832 --- .../src/createArweaveUploader.ts | 69 +++++++++++++------ .../test/ArweaveUploader.test.ts | 14 +++- 2 files changed, 60 insertions(+), 23 deletions(-) diff --git a/packages/umi-uploader-arweave/src/createArweaveUploader.ts b/packages/umi-uploader-arweave/src/createArweaveUploader.ts index 77b4a17f..48257865 100644 --- a/packages/umi-uploader-arweave/src/createArweaveUploader.ts +++ b/packages/umi-uploader-arweave/src/createArweaveUploader.ts @@ -1,5 +1,5 @@ import { - SOLToTokenAmount, + lamportToTokenAmount, TurboAuthenticatedClient, TurboFactory, USD, @@ -15,8 +15,8 @@ import { UsdAmount, createGenericFileFromJson, isKeypairSigner, - lamports, publicKey, + sol, } from '@metaplex-foundation/umi'; import { base58 } from '@metaplex-foundation/umi/serializers'; import { toWeb3JsPublicKey } from '@metaplex-foundation/umi-web3js-adapters'; @@ -81,6 +81,8 @@ export type ArweaveWalletAdapter = { // Size of Arweave transaction header. const HEADER_SIZE = 2_000; +const FREE_UPLOAD_BYTE_LIMIT = 107_520; // 105 KiB + export function createArweaveUploader( context: Pick, options: ArweaveUploaderOptions = {} @@ -108,13 +110,13 @@ export function createArweaveUploader( const solPriceForOneGiB = BigNumber(wincPriceForOneGiB).dividedBy(wincPriceForOneSol); - const solPriceForOneByte = solPriceForOneGiB.dividedBy(2 ** 30); + const solPriceForGivenBytes = solPriceForOneByte.multipliedBy(bytes); - return bigNumberToAmount( - solPriceForOneByte - .multipliedBy(bytes) + return sol( + solPriceForGivenBytes .multipliedBy(options.priceMultiplier ?? 1.1) + .toNumber() ); }; @@ -124,6 +126,10 @@ export function createArweaveUploader( 0 ); + if (bytes <= FREE_UPLOAD_BYTE_LIMIT) { + return sol(0); + } + return getUploadPriceFromBytes(bytes); }; @@ -149,7 +155,12 @@ export function createArweaveUploader( throw new AssetUploadFailedError(error); } - return `https://arweave.net/${dataItemId}`; + const gateway = + context.rpc.getCluster() === 'devnet' + ? 'https://arweave.dev' + : 'https://arweave.net'; + + return `${gateway}/${dataItemId}`; }); return Promise.all(promises); @@ -179,29 +190,31 @@ export function createArweaveUploader( const solEquivalent = BigNumber(usersWincBalance).dividedBy(wincForOneSol); - return bigNumberToAmount(solEquivalent); + return sol(solEquivalent.toNumber()); }; const fund = async ( amount: SolAmount, skipBalanceCheck = false ): Promise => { - let toFund = amountToBigNumber(amount); + let toFundLamports = amountToBigNumber(amount); if (!skipBalanceCheck) { - const solEquivalentBalance = amountToBigNumber(await getBalance()); + const lamportEquivalentBalance = amountToBigNumber(await getBalance()); - toFund = toFund.isGreaterThan(solEquivalentBalance) - ? toFund.minus(solEquivalentBalance) + toFundLamports = toFundLamports.isGreaterThan(lamportEquivalentBalance) + ? toFundLamports.minus(lamportEquivalentBalance) : new BigNumber(0); } - if (toFund.isLessThanOrEqualTo(0)) { + if (toFundLamports.isLessThanOrEqualTo(0)) { return; } - (await getArweave()).topUpWithTokens({ - tokenAmount: SOLToTokenAmount(toFund), + await ( + await getArweave() + ).topUpWithTokens({ + tokenAmount: lamportToTokenAmount(toFundLamports), }); }; @@ -246,17 +259,32 @@ export function createArweaveUploader( const initArweave = async (): Promise => { const payer: Signer = options.payer ?? context.payer; + const defaultAddresses = + context.rpc.getCluster() === 'devnet' + ? { + uploadServiceUrl: 'https://upload.ardrive.dev', + paymentServiceUrl: 'https://payment.ardrive.dev', + } + : { + uploadServiceUrl: 'https://upload.ardrive.io', + paymentServiceUrl: 'https://payment.ardrive.io', + }; + let arweave; if (isKeypairSigner(payer)) { arweave = TurboFactory.authenticated({ token: 'solana', privateKey: base58.deserialize(payer.secretKey)[0], gatewayUrl: options.solRpcUrl, - uploadServiceConfig: { url: options.uploadServiceUrl }, - paymentServiceConfig: { url: options.paymentServiceUrl }, + uploadServiceConfig: { + url: options.uploadServiceUrl ?? defaultAddresses.uploadServiceUrl, + }, + paymentServiceConfig: { + url: options.paymentServiceUrl ?? defaultAddresses.paymentServiceUrl, + }, }); } else { - arweave = await initWebTurbo(payer, options); + arweave = await initWebArweave(payer, options); } try { @@ -273,7 +301,7 @@ export function createArweaveUploader( return arweave; }; - const initWebTurbo = async ( + const initWebArweave = async ( payer: Signer, options: any ): Promise => { @@ -309,9 +337,6 @@ export const isArweaveUploader = ( ): uploader is ArweaveUploader => 'Arweave' in uploader && 'getBalance' in uploader && 'fund' in uploader; -const bigNumberToAmount = (bigNumber: BigNumber): SolAmount => - lamports(bigNumber.decimalPlaces(0).toString()); - const amountToBigNumber = (amount: SolAmount): BigNumber => new BigNumber(amount.basisPoints.toString()); diff --git a/packages/umi-uploader-arweave/test/ArweaveUploader.test.ts b/packages/umi-uploader-arweave/test/ArweaveUploader.test.ts index 4a85507d..0466460b 100644 --- a/packages/umi-uploader-arweave/test/ArweaveUploader.test.ts +++ b/packages/umi-uploader-arweave/test/ArweaveUploader.test.ts @@ -22,6 +22,9 @@ test('example test', async (t) => { const getContext = async ( options?: ArweaveUploaderOptions ): Promise => { + // const keyWithDevnetBalance = '...'; + // const sk = Uint8Array.from(base58.serialize(keyWithDevnetBalance)); + const context = createUmi().use({ install(umi) { umi.use(web3JsRpc('https://api.devnet.solana.com')); @@ -30,8 +33,17 @@ const getContext = async ( umi.use(httpDownloader()); umi.use(arweaveUploader(options)); umi.use(generatedSignerIdentity()); + // umi.use( + // signerPayer( + // createSignerFromKeypair( + // { eddsa: umi.eddsa }, + // umi.eddsa.createKeypairFromSecretKey(sk) + // ) + // ) + // ); }, }); + await context.rpc.airdrop(context.payer.publicKey, sol(1)); return context; }; @@ -49,7 +61,7 @@ test.skip('it can upload one file', async (t) => { // Then the URI should be a valid arweave gateway URI. t.truthy(uri); - t.true(uri.startsWith('https://arweave.net/')); + t.true(uri.startsWith('https://arweave.dev/')); // and it should point to the uploaded asset. const [asset] = await context.downloader.download([uri]); From 9685a6ed5ddb534480b1859ceadab0bb35203139 Mon Sep 17 00:00:00 2001 From: Derek Sonnenberg Date: Tue, 1 Oct 2024 12:15:16 -0500 Subject: [PATCH 03/10] test: add coverage on checkout session and balance PE-6832 --- .../src/createArweaveUploader.ts | 9 ++-- .../test/ArweaveUploader.test.ts | 50 +++++++++++++++++-- 2 files changed, 51 insertions(+), 8 deletions(-) diff --git a/packages/umi-uploader-arweave/src/createArweaveUploader.ts b/packages/umi-uploader-arweave/src/createArweaveUploader.ts index 48257865..3088a41e 100644 --- a/packages/umi-uploader-arweave/src/createArweaveUploader.ts +++ b/packages/umi-uploader-arweave/src/createArweaveUploader.ts @@ -6,6 +6,7 @@ import { } from '@ardrive/turbo-sdk'; import { + Amount, Context, GenericFile, GenericFileTag, @@ -226,8 +227,10 @@ export function createArweaveUploader( }> => { const arweave = await getArweave(); + const usdAmount = amountToBigNumber(amount).shiftedBy(-2).toNumber(); + const { winc, url } = await arweave.createCheckoutSession({ - amount: USD(+amount.basisPoints.toString()), + amount: USD(usdAmount), owner: toWeb3JsPublicKey(context.payer.publicKey).toBase58(), }); if (!url) { @@ -335,9 +338,9 @@ export function createArweaveUploader( export const isArweaveUploader = ( uploader: UploaderInterface ): uploader is ArweaveUploader => - 'Arweave' in uploader && 'getBalance' in uploader && 'fund' in uploader; + 'arweave' in uploader && 'getBalance' in uploader && 'fund' in uploader; -const amountToBigNumber = (amount: SolAmount): BigNumber => +const amountToBigNumber = (amount: Amount): BigNumber => new BigNumber(amount.basisPoints.toString()); const getGenericFileTagsWithContentType = ( diff --git a/packages/umi-uploader-arweave/test/ArweaveUploader.test.ts b/packages/umi-uploader-arweave/test/ArweaveUploader.test.ts index 0466460b..8e20f40d 100644 --- a/packages/umi-uploader-arweave/test/ArweaveUploader.test.ts +++ b/packages/umi-uploader-arweave/test/ArweaveUploader.test.ts @@ -3,14 +3,19 @@ import { createGenericFile, createUmi, generatedSignerIdentity, - sol, + // sol, + usd, } from '@metaplex-foundation/umi'; import { httpDownloader } from '@metaplex-foundation/umi-downloader-http'; import { web3JsEddsa } from '@metaplex-foundation/umi-eddsa-web3js'; import { fetchHttp } from '@metaplex-foundation/umi-http-fetch'; import { web3JsRpc } from '@metaplex-foundation/umi-rpc-web3js'; import test from 'ava'; -import { arweaveUploader, ArweaveUploaderOptions } from '../src'; +import { + ArweaveUploader, + arweaveUploader, + ArweaveUploaderOptions, +} from '../src'; import { utf8 } from '@metaplex-foundation/umi/serializers'; test('example test', async (t) => { @@ -19,6 +24,8 @@ test('example test', async (t) => { // TODO(loris): Unskip these tests when we can mock the Arweave API. +const devNetRpcUrl = 'https://api.devnet.solana.com'; + const getContext = async ( options?: ArweaveUploaderOptions ): Promise => { @@ -27,7 +34,7 @@ const getContext = async ( const context = createUmi().use({ install(umi) { - umi.use(web3JsRpc('https://api.devnet.solana.com')); + umi.use(web3JsRpc(devNetRpcUrl)); umi.use(web3JsEddsa()); umi.use(fetchHttp()); umi.use(httpDownloader()); @@ -44,14 +51,14 @@ const getContext = async ( }, }); - await context.rpc.airdrop(context.payer.publicKey, sol(1)); + // await context.rpc.airdrop(context.payer.publicKey, sol(1)); return context; }; test.skip('it can upload one file', async (t) => { t.timeout(60_000); const context = await getContext({ - solRpcUrl: 'https://api.devnet.solana.com', + solRpcUrl: devNetRpcUrl, }); // When we upload some asset. @@ -67,3 +74,36 @@ test.skip('it can upload one file', async (t) => { const [asset] = await context.downloader.download([uri]); t.is(utf8.deserialize(asset.buffer)[0], 'some-image'); }); + +test('can get a USD stripe checkout session', async (t) => { + const context = await getContext({ + solRpcUrl: devNetRpcUrl, + }); + + const { checkoutSessionUrl, turboStorageCredits } = await ( + context.uploader as ArweaveUploader + ).getStripeCheckoutSession(usd(10)); + + t.assert(checkoutSessionUrl); + t.true(+turboStorageCredits > 0); +}); + +test('can get a balance in Turbo Storage Credits', async (t) => { + const context = await getContext({ + solRpcUrl: devNetRpcUrl, + }); + + const balance = await ( + context.uploader as ArweaveUploader + ).getTurboStorageCreditBalance(); + t.true(+balance.valueOf() > -1); +}); + +test('can get a balance in SOL Equivalent', async (t) => { + const context = await getContext({ + solRpcUrl: devNetRpcUrl, + }); + + const balance = await (context.uploader as ArweaveUploader).getBalance(); + t.true(balance.basisPoints.valueOf() > -1); +}); From 5eacb70b0f966db163aeb9a671e16e69759ee68f Mon Sep 17 00:00:00 2001 From: Derek Sonnenberg Date: Tue, 1 Oct 2024 13:26:24 -0500 Subject: [PATCH 04/10] test: add coverage for larger file PE-6832 --- .../src/createArweaveUploader.ts | 1 + .../test/ArweaveUploader.test.ts | 41 +- pnpm-lock.yaml | 723 ++++++++++++++++-- 3 files changed, 700 insertions(+), 65 deletions(-) diff --git a/packages/umi-uploader-arweave/src/createArweaveUploader.ts b/packages/umi-uploader-arweave/src/createArweaveUploader.ts index 3088a41e..ba98e4f4 100644 --- a/packages/umi-uploader-arweave/src/createArweaveUploader.ts +++ b/packages/umi-uploader-arweave/src/createArweaveUploader.ts @@ -315,6 +315,7 @@ export function createArweaveUploader( return TurboFactory.authenticated({ token: 'solana', + // @ts-ignore -- to be released in the next version of @ardrive/turbo-sdk walletAdapter: wallet, gatewayUrl: options.solRpcUrl, uploadServiceConfig: { url: options.uploadServiceUrl }, diff --git a/packages/umi-uploader-arweave/test/ArweaveUploader.test.ts b/packages/umi-uploader-arweave/test/ArweaveUploader.test.ts index 8e20f40d..95fdb50b 100644 --- a/packages/umi-uploader-arweave/test/ArweaveUploader.test.ts +++ b/packages/umi-uploader-arweave/test/ArweaveUploader.test.ts @@ -3,7 +3,6 @@ import { createGenericFile, createUmi, generatedSignerIdentity, - // sol, usd, } from '@metaplex-foundation/umi'; import { httpDownloader } from '@metaplex-foundation/umi-downloader-http'; @@ -29,9 +28,6 @@ const devNetRpcUrl = 'https://api.devnet.solana.com'; const getContext = async ( options?: ArweaveUploaderOptions ): Promise => { - // const keyWithDevnetBalance = '...'; - // const sk = Uint8Array.from(base58.serialize(keyWithDevnetBalance)); - const context = createUmi().use({ install(umi) { umi.use(web3JsRpc(devNetRpcUrl)); @@ -40,14 +36,6 @@ const getContext = async ( umi.use(httpDownloader()); umi.use(arweaveUploader(options)); umi.use(generatedSignerIdentity()); - // umi.use( - // signerPayer( - // createSignerFromKeypair( - // { eddsa: umi.eddsa }, - // umi.eddsa.createKeypairFromSecretKey(sk) - // ) - // ) - // ); }, }); @@ -55,18 +43,17 @@ const getContext = async ( return context; }; -test.skip('it can upload one file', async (t) => { - t.timeout(60_000); +test('can upload one file', async (t) => { const context = await getContext({ solRpcUrl: devNetRpcUrl, }); - // When we upload some asset. + // When we upload some asset under the free byte limit with the devnet RPC. const [uri] = await context.uploader.upload([ createGenericFile('some-image', 'some-image.jpg'), ]); - // Then the URI should be a valid arweave gateway URI. + // Then the URI should be a valid arweave dev gateway URI. t.truthy(uri); t.true(uri.startsWith('https://arweave.dev/')); @@ -75,6 +62,28 @@ test.skip('it can upload one file', async (t) => { t.is(utf8.deserialize(asset.buffer)[0], 'some-image'); }); +test.skip('can upload a file above 105 KiB in size', async (t) => { + // This test will require devnet SOL balance in the connected payer + + const context = await getContext({ + solRpcUrl: devNetRpcUrl, + }); + + const buffer = new Uint8Array(106 * 1024); + buffer.fill(1); + + // Upload will transfer SOL from the payer's wallet to the connected uploader's wallet in exchange for Turbo Storage Credits which are used to pay for the upload + const [uri] = await context.uploader.upload([ + createGenericFile(buffer, 'big-file.bin'), + ]); + + t.truthy(uri); + t.true(uri.startsWith('https://arweave.dev/')); + + const [asset] = await context.downloader.download([uri]); + t.deepEqual(asset.buffer, buffer); +}); + test('can get a USD stripe checkout session', async (t) => { const context = await getContext({ solRpcUrl: devNetRpcUrl, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ab215ba8..cbef8fc0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -515,8 +515,8 @@ importers: packages/umi-uploader-arweave: dependencies: '@ardrive/turbo-sdk': - specifier: link:../../../ardrive-turbo-sdk - version: link:../../../ardrive-turbo-sdk + specifier: alpha + version: 1.18.0-alpha.2 '@metaplex-foundation/umi-web3js-adapters': specifier: workspace:^ version: link:../umi-web3js-adapters @@ -552,46 +552,6 @@ importers: specifier: ^5.1.0 version: 5.1.0(@ava/typescript@3.0.1) - packages/umi-uploader-arweave-arx: - dependencies: - '@metaplex-foundation/umi-web3js-adapters': - specifier: workspace:^ - version: link:../umi-web3js-adapters - '@permaweb/arx': - specifier: link:../../../arx - version: link:../../../arx - bignumber.js: - specifier: ^9.1.2 - version: 9.1.2 - buffer: - specifier: ^6.0.3 - version: 6.0.3 - devDependencies: - '@ava/typescript': - specifier: ^3.0.1 - version: 3.0.1 - '@metaplex-foundation/umi': - specifier: workspace:^ - version: link:../umi - '@metaplex-foundation/umi-downloader-http': - specifier: workspace:^ - version: link:../umi-downloader-http - '@metaplex-foundation/umi-eddsa-web3js': - specifier: workspace:^ - version: link:../umi-eddsa-web3js - '@metaplex-foundation/umi-http-fetch': - specifier: workspace:^ - version: link:../umi-http-fetch - '@metaplex-foundation/umi-rpc-web3js': - specifier: workspace:^ - version: link:../umi-rpc-web3js - '@solana/web3.js': - specifier: ^1.72.0 - version: 1.72.0 - ava: - specifier: ^5.1.0 - version: 5.1.0(@ava/typescript@3.0.1) - packages/umi-uploader-aws: devDependencies: '@ava/typescript': @@ -766,6 +726,10 @@ importers: packages: + /@adraffy/ens-normalize@1.10.1: + resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} + dev: false + /@ampproject/remapping@2.2.0: resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} @@ -808,6 +772,38 @@ packages: - debug dev: false + /@ardrive/turbo-sdk@1.18.0-alpha.2: + resolution: {integrity: sha512-CeTrQJG94jECXR2JppfutN1VL+IuE/3gnyWuFhrNqxmvDuEy+8zfHCLxTn8K+ktawEnAZpWSKdW7E7moLDQgIg==} + engines: {node: '>=18'} + hasBin: true + dependencies: + '@cosmjs/amino': 0.32.4 + '@cosmjs/crypto': 0.32.4 + '@cosmjs/encoding': 0.32.4 + '@cosmjs/proto-signing': 0.32.4 + '@dha-team/arbundles': 1.0.1 + '@ethersproject/signing-key': 5.7.0 + '@kyvejs/sdk': 1.3.3 + '@solana/web3.js': 1.95.3 + arweave: 1.15.1 + axios: 1.4.0 + axios-retry: 3.9.1 + bignumber.js: 9.1.2 + bs58: 5.0.0 + commander: 12.1.0 + ethers: 6.13.3 + mime-types: 2.1.35 + plimit-lit: 3.0.1 + prompts: 2.4.2 + tweetnacl: 1.0.3 + winston: 3.14.2 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - utf-8-validate + dev: false + /@assemblyscript/loader@0.9.4: resolution: {integrity: sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA==} dev: false @@ -3347,6 +3343,135 @@ packages: prettier: 2.8.4 dev: true + /@colors/colors@1.6.0: + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} + engines: {node: '>=0.1.90'} + dev: false + + /@confio/ics23@0.6.8: + resolution: {integrity: sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==} + dependencies: + '@noble/hashes': 1.4.0 + protobufjs: 6.11.3 + dev: false + + /@cosmjs/amino@0.32.4: + resolution: {integrity: sha512-zKYOt6hPy8obIFtLie/xtygCkH9ZROiQ12UHfKsOkWaZfPQUvVbtgmu6R4Kn1tFLI/SRkw7eqhaogmW/3NYu/Q==} + dependencies: + '@cosmjs/crypto': 0.32.4 + '@cosmjs/encoding': 0.32.4 + '@cosmjs/math': 0.32.4 + '@cosmjs/utils': 0.32.4 + dev: false + + /@cosmjs/crypto@0.32.4: + resolution: {integrity: sha512-zicjGU051LF1V9v7bp8p7ovq+VyC91xlaHdsFOTo2oVry3KQikp8L/81RkXmUIT8FxMwdx1T7DmFwVQikcSDIw==} + dependencies: + '@cosmjs/encoding': 0.32.4 + '@cosmjs/math': 0.32.4 + '@cosmjs/utils': 0.32.4 + '@noble/hashes': 1.4.0 + bn.js: 5.2.1 + elliptic: 6.5.4 + libsodium-wrappers-sumo: 0.7.15 + dev: false + + /@cosmjs/encoding@0.32.4: + resolution: {integrity: sha512-tjvaEy6ZGxJchiizzTn7HVRiyTg1i4CObRRaTRPknm5EalE13SV+TCHq38gIDfyUeden4fCuaBVEdBR5+ti7Hw==} + dependencies: + base64-js: 1.5.1 + bech32: 1.1.4 + readonly-date: 1.0.0 + dev: false + + /@cosmjs/json-rpc@0.32.4: + resolution: {integrity: sha512-/jt4mBl7nYzfJ2J/VJ+r19c92mUKF0Lt0JxM3MXEJl7wlwW5haHAWtzRujHkyYMXOwIR+gBqT2S0vntXVBRyhQ==} + dependencies: + '@cosmjs/stream': 0.32.4 + xstream: 11.14.0 + dev: false + + /@cosmjs/math@0.32.4: + resolution: {integrity: sha512-++dqq2TJkoB8zsPVYCvrt88oJWsy1vMOuSOKcdlnXuOA/ASheTJuYy4+oZlTQ3Fr8eALDLGGPhJI02W2HyAQaw==} + dependencies: + bn.js: 5.2.1 + dev: false + + /@cosmjs/proto-signing@0.32.4: + resolution: {integrity: sha512-QdyQDbezvdRI4xxSlyM1rSVBO2st5sqtbEIl3IX03uJ7YiZIQHyv6vaHVf1V4mapusCqguiHJzm4N4gsFdLBbQ==} + dependencies: + '@cosmjs/amino': 0.32.4 + '@cosmjs/crypto': 0.32.4 + '@cosmjs/encoding': 0.32.4 + '@cosmjs/math': 0.32.4 + '@cosmjs/utils': 0.32.4 + cosmjs-types: 0.9.0 + dev: false + + /@cosmjs/socket@0.32.4: + resolution: {integrity: sha512-davcyYziBhkzfXQTu1l5NrpDYv0K9GekZCC9apBRvL1dvMc9F/ygM7iemHjUA+z8tJkxKxrt/YPjJ6XNHzLrkw==} + dependencies: + '@cosmjs/stream': 0.32.4 + isomorphic-ws: 4.0.1(ws@7.5.10) + ws: 7.5.10 + xstream: 11.14.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@cosmjs/stargate@0.32.4: + resolution: {integrity: sha512-usj08LxBSsPRq9sbpCeVdyLx2guEcOHfJS9mHGCLCXpdAPEIEQEtWLDpEUc0LEhWOx6+k/ChXTc5NpFkdrtGUQ==} + dependencies: + '@confio/ics23': 0.6.8 + '@cosmjs/amino': 0.32.4 + '@cosmjs/encoding': 0.32.4 + '@cosmjs/math': 0.32.4 + '@cosmjs/proto-signing': 0.32.4 + '@cosmjs/stream': 0.32.4 + '@cosmjs/tendermint-rpc': 0.32.4 + '@cosmjs/utils': 0.32.4 + cosmjs-types: 0.9.0 + xstream: 11.14.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + dev: false + + /@cosmjs/stream@0.32.4: + resolution: {integrity: sha512-Gih++NYHEiP+oyD4jNEUxU9antoC0pFSg+33Hpp0JlHwH0wXhtD3OOKnzSfDB7OIoEbrzLJUpEjOgpCp5Z+W3A==} + dependencies: + xstream: 11.14.0 + dev: false + + /@cosmjs/tendermint-rpc@0.32.4: + resolution: {integrity: sha512-MWvUUno+4bCb/LmlMIErLypXxy7ckUuzEmpufYYYd9wgbdCXaTaO08SZzyFM5PI8UJ/0S2AmUrgWhldlbxO8mw==} + dependencies: + '@cosmjs/crypto': 0.32.4 + '@cosmjs/encoding': 0.32.4 + '@cosmjs/json-rpc': 0.32.4 + '@cosmjs/math': 0.32.4 + '@cosmjs/socket': 0.32.4 + '@cosmjs/stream': 0.32.4 + '@cosmjs/utils': 0.32.4 + axios: 1.7.5 + readonly-date: 1.0.0 + xstream: 11.14.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + dev: false + + /@cosmjs/utils@0.32.4: + resolution: {integrity: sha512-D1Yc+Zy8oL/hkUkFUL/bwxvuDBzRGpc4cF7/SkdhxX4iHpSLgdOuTt1mhCh9+kl6NQREy9t7SYZ6xeW5gFe60w==} + dev: false + + /@cosmostation/extension-client@0.1.15: + resolution: {integrity: sha512-HlXYJjFrNpjiV/GUKhri1UL8/bhlOIFFLpRF78YDSqq16x0+plIqx5CAvEusFcKTDpVfpeD5sfUHiKvP7euNFg==} + dev: false + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -3354,10 +3479,45 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true + /@dabh/diagnostics@2.0.3: + resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} + dependencies: + colorspace: 1.1.4 + enabled: 2.0.0 + kuler: 2.0.0 + dev: false + /@dashkite/tweetnacl@1.0.3: resolution: {integrity: sha512-qBw5yhOw8mCe7fV6sw/5DIfQLW3txB+MlSDngf7h2WwnRz5CWzmhVBnKuYHcMXX9u50T4iW0AR/FwEl6Tm/TMQ==} dev: false + /@dha-team/arbundles@1.0.1: + resolution: {integrity: sha512-cgVxhZJLK1HG2+vcRBZ0CYGpxz7mA2QvLaspcw2gOzb2V/ZUxlifUu1aufBK3iz63Ww2OhgO0j9DstRJqrG1uA==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@noble/ed25519': 1.7.1 + arweave: 1.15.1 + base64url: 3.0.1 + bs58: 4.0.1 + keccak: 3.0.3 + secp256k1: 5.0.0 + optionalDependencies: + '@randlabs/myalgo-connect': 1.4.2 + algosdk: 1.24.1 + arweave-stream-tx: 1.2.2(arweave@1.15.1) + multistream: 4.1.0 + tmp-promise: 3.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + dev: false + /@edge-runtime/format@1.1.0: resolution: {integrity: sha512-MkLDDtPhXZIMx83NykdFmOpF7gVWIdd6GBHYb8V/E+PKWvD2pK/qWx9B30oN1iDJ2XBm0SGDjz02S8nDHI9lMQ==} dev: true @@ -4091,6 +4251,97 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true + /@keplr-wallet/common@0.12.130: + resolution: {integrity: sha512-VwhSbceL6KDWOgH6uK8jDoBFkr3sPLwrqlu8Up51v9RsXbECCoyrYKmpiGKJA2imPNa/ovxY8ssteY8yXTWk8Q==} + dependencies: + '@keplr-wallet/crypto': 0.12.130 + '@keplr-wallet/types': 0.12.130 + buffer: 6.0.3 + delay: 4.4.1 + dev: false + + /@keplr-wallet/cosmos@0.12.130: + resolution: {integrity: sha512-GIISwcTX2H5425tqMfXhNNgSL7gEAlITGM3ggrnidDoOlbH9id4HuacM5M2hJh6QbHxRy7SzH9qcIxcFsYwiPg==} + dependencies: + '@ethersproject/address': 5.7.0 + '@keplr-wallet/common': 0.12.130 + '@keplr-wallet/crypto': 0.12.130 + '@keplr-wallet/proto-types': 0.12.130 + '@keplr-wallet/simple-fetch': 0.12.130 + '@keplr-wallet/types': 0.12.130 + '@keplr-wallet/unit': 0.12.130 + bech32: 1.1.4 + buffer: 6.0.3 + long: 4.0.0 + protobufjs: 6.11.3 + dev: false + + /@keplr-wallet/crypto@0.12.130: + resolution: {integrity: sha512-Sx42ZH4IR/8XdZQih+4dmAeFUfww+krtIDxnkW8JPLgbJtmH75lOVS39YU6au7u0wJO++N877Z/y4IIT3Vv8tA==} + dependencies: + '@ethersproject/keccak256': 5.7.0 + bip32: 2.0.6 + bip39: 3.1.0 + bs58check: 2.1.2 + buffer: 6.0.3 + crypto-js: 4.2.0 + elliptic: 6.5.4 + sha.js: 2.4.11 + dev: false + + /@keplr-wallet/proto-types@0.12.130: + resolution: {integrity: sha512-cT4JCJqKsaJBVjDoimG/LKr7zM+DrGki8FYLtPHw/7BFD2WHnhYrf5iYx67tITTgloF3l/ze7Ao1xhiDg7xheQ==} + dependencies: + long: 4.0.0 + protobufjs: 6.11.3 + dev: false + + /@keplr-wallet/simple-fetch@0.12.130: + resolution: {integrity: sha512-mhIV9oZqnVRslYju6GSkz1dgDEYeu+WML6eQW8d4t2rMuxOvwF/rUaeSiIYqZPTAl/w/fWtuvAVfX4hiarf/xw==} + dev: false + + /@keplr-wallet/types@0.12.130: + resolution: {integrity: sha512-bUJ6JGpMYUAbPu6SdSG9HjAApgZirMnX4x+1Y9fwC5BCRP2zImYoleTSp+FNbG26iwfN+hUdM0uAcPWsKsfENg==} + dependencies: + long: 4.0.0 + dev: false + + /@keplr-wallet/unit@0.12.130: + resolution: {integrity: sha512-IeBm4ch6E8aQIl83PuvJCWf17tlcS6LTifGi/VHNLuuvNc3Vv1MmWd5wSHo3feTRTJgGoMQHZDpRTYPMut7llw==} + dependencies: + '@keplr-wallet/types': 0.12.130 + big-integer: 1.6.52 + utility-types: 3.11.0 + dev: false + + /@kyvejs/sdk@1.3.3: + resolution: {integrity: sha512-t7o3dy9CHpJ7aHRJVbb2hix5F/QNA0FyHtVrvMLg6/p4DVhDnQXMkLhSNevCPaOL0cj3CZpZApjYUAAWrexawQ==} + dependencies: + '@cosmjs/amino': 0.32.4 + '@cosmjs/crypto': 0.32.4 + '@cosmjs/encoding': 0.32.4 + '@cosmjs/math': 0.32.4 + '@cosmjs/proto-signing': 0.32.4 + '@cosmjs/stargate': 0.32.4 + '@cosmostation/extension-client': 0.1.15 + '@keplr-wallet/cosmos': 0.12.130 + '@kyvejs/types': 1.4.1 + axios: 0.27.2 + bech32: 2.0.0 + bignumber.js: 9.1.2 + cosmjs-types: 0.9.0 + humanize-number: 0.0.2 + qs: 6.11.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + dev: false + + /@kyvejs/types@1.4.1: + resolution: {integrity: sha512-35Pv9yqcFQIdYQrDeoMfVJzMNr26fKJE5cCEF4d7lHiMJDLVaJ4M8x9cPzAfis7Rd5sfZV9Hm3giB5pBbaZljA==} + dev: false + /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: @@ -4375,6 +4626,12 @@ packages: '@noble/hashes': 1.3.0 dev: false + /@noble/curves@1.2.0: + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + dependencies: + '@noble/hashes': 1.3.2 + dev: false + /@noble/curves@1.4.2: resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} dependencies: @@ -4397,6 +4654,11 @@ packages: resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} dev: false + /@noble/hashes@1.3.2: + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + dev: false + /@noble/hashes@1.4.0: resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} @@ -5096,6 +5358,10 @@ packages: form-data: 3.0.1 dev: true + /@types/node@10.12.18: + resolution: {integrity: sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==} + dev: false + /@types/node@11.11.6: resolution: {integrity: sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==} dev: false @@ -5173,6 +5439,10 @@ packages: resolution: {integrity: sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==} dev: true + /@types/triple-beam@1.3.5: + resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} + dev: false + /@types/unist@2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: true @@ -5721,6 +5991,10 @@ packages: resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} dev: false + /aes-js@4.0.0-beta.5: + resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + dev: false + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -6132,6 +6406,10 @@ packages: lodash: 4.17.21 dev: true + /async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + dev: false + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -6200,6 +6478,13 @@ packages: engines: {node: '>= 0.4'} dev: false + /axios-retry@3.9.1: + resolution: {integrity: sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==} + dependencies: + '@babel/runtime': 7.25.6 + is-retry-allowed: 2.2.0 + dev: false + /axios@0.21.4(debug@4.3.4): resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} dependencies: @@ -6214,6 +6499,25 @@ packages: transitivePeerDependencies: - debug + /axios@0.27.2: + resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} + dependencies: + follow-redirects: 1.15.6(debug@4.3.4) + form-data: 4.0.0 + transitivePeerDependencies: + - debug + dev: false + + /axios@1.4.0: + resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} + dependencies: + follow-redirects: 1.15.6(debug@4.3.4) + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + /axios@1.7.4: resolution: {integrity: sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==} dependencies: @@ -6310,6 +6614,10 @@ packages: resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} dev: false + /bech32@2.0.0: + resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} + dev: false + /better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -6317,6 +6625,11 @@ packages: is-windows: 1.0.2 dev: true + /big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + dev: false + /big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} dev: true @@ -6341,6 +6654,19 @@ packages: dependencies: file-uri-to-path: 1.0.0 + /bip32@2.0.6: + resolution: {integrity: sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA==} + engines: {node: '>=6.0.0'} + dependencies: + '@types/node': 10.12.18 + bs58check: 2.1.2 + create-hash: 1.2.0 + create-hmac: 1.1.7 + tiny-secp256k1: 1.1.6 + typeforce: 1.18.0 + wif: 2.0.6 + dev: false + /bip39-light@1.0.7: resolution: {integrity: sha512-WDTmLRQUsiioBdTs9BmSEmkJza+8xfJmptsNJjxnoq3EydSa/ZBXT6rm66KoT3PJIRYMnhSKNR7S9YL1l7R40Q==} dependencies: @@ -6357,6 +6683,12 @@ packages: randombytes: 2.1.0 dev: false + /bip39@3.1.0: + resolution: {integrity: sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==} + dependencies: + '@noble/hashes': 1.4.0 + dev: false + /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: @@ -6510,6 +6842,14 @@ packages: base-x: 4.0.0 dev: false + /bs58check@2.1.2: + resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} + dependencies: + bs58: 4.0.1 + create-hash: 1.2.0 + safe-buffer: 5.2.1 + dev: false + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true @@ -6851,11 +7191,32 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + /color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: false + /color-support@1.1.3: resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} hasBin: true dev: true + /color@3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + dev: false + + /colorspace@1.1.4: + resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} + dependencies: + color: 3.2.1 + text-hex: 1.0.0 + dev: false + /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -6886,6 +7247,11 @@ packages: typical: 5.2.0 dev: false + /commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + dev: false + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -7022,6 +7388,10 @@ packages: yaml: 1.10.2 dev: true + /cosmjs-types@0.9.0: + resolution: {integrity: sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==} + dev: false + /create-hash@1.2.0: resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} dependencies: @@ -7078,6 +7448,10 @@ packages: which: 2.0.2 dev: true + /crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + dev: false + /css-what@5.1.0: resolution: {integrity: sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==} engines: {node: '>= 6'} @@ -7268,6 +7642,15 @@ packages: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + dev: false + /define-properties@1.1.4: resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} engines: {node: '>= 0.4'} @@ -7276,6 +7659,15 @@ packages: object-keys: 1.1.1 dev: true + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: false + /degenerator@3.0.2: resolution: {integrity: sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==} engines: {node: '>= 6'} @@ -7300,6 +7692,11 @@ packages: slash: 4.0.0 dev: true + /delay@4.4.1: + resolution: {integrity: sha512-aL3AhqtfhOlT/3ai6sWXeqwnw63ATNpnUiN4HL7x9q+My5QtHlO3OIkasmug9LKzpheLdmUKGRKnYXYAS7FQkQ==} + engines: {node: '>=6'} + dev: false + /delay@5.0.0: resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} engines: {node: '>=10'} @@ -7513,6 +7910,10 @@ packages: engines: {node: '>= 4'} dev: true + /enabled@2.0.0: + resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} + dev: false + /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -7630,6 +8031,13 @@ packages: unbox-primitive: 1.0.2 dev: true + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: false + /es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} @@ -8289,6 +8697,22 @@ packages: - utf-8-validate dev: false + /ethers@6.13.3: + resolution: {integrity: sha512-/DzbZOLVtoO4fKvvQwpEucHAQgIwBGWuRvBdwE/lMXgXvvHHTSkn7XqAQ2b+gjJzZDJjWA9OD05bVceVOsBHbg==} + engines: {node: '>=14.0.0'} + dependencies: + '@adraffy/ens-normalize': 1.10.1 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@types/node': 18.15.13 + aes-js: 4.0.0-beta.5 + tslib: 2.4.0 + ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + /eval@0.1.6: resolution: {integrity: sha512-o0XUw+5OGkXw4pJZzQoXUk+H87DHuC+7ZE//oSrRGtatTmr12oTnLfg6QOq9DyTt0c/p4TwzgmkKrBzWTSizyQ==} engines: {node: '>= 0.8'} @@ -8319,6 +8743,11 @@ packages: /eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: false + /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -8475,6 +8904,10 @@ packages: format: 0.2.2 dev: true + /fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + dev: false + /figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -8607,6 +9040,10 @@ packages: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true + /fn.name@1.1.0: + resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} + dev: false + /follow-redirects@1.15.6(debug@4.3.4): resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} @@ -8892,6 +9329,14 @@ packages: type-fest: 0.20.2 dev: true + /globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + gopd: 1.0.1 + dev: false + /globby@10.0.0: resolution: {integrity: sha512-3LifW9M4joGZasyYPz2A1U74zbC/45fvpXUvO/9KbSa+VV0aGZarWkfdgKyR9sExNP0t0x0ss/UMJpNpcaTspw==} engines: {node: '>=8'} @@ -9008,8 +9453,7 @@ packages: /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: - get-intrinsic: 1.1.3 - dev: true + get-intrinsic: 1.2.4 /has-proto@1.0.3: resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} @@ -9177,6 +9621,10 @@ packages: dependencies: ms: 2.1.3 + /humanize-number@0.0.2: + resolution: {integrity: sha512-un3ZAcNQGI7RzaWGZzQDH47HETM4Wrj6z6E4TId8Yeq9w5ZKUVB1nrT2jwFheTUjEmqcgTjXDc959jum+ai1kQ==} + dev: false + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -9535,6 +9983,10 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + /is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: false + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -9742,6 +10194,11 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-retry-allowed@2.2.0: + resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} + engines: {node: '>=10'} + dev: false + /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: @@ -9751,7 +10208,6 @@ packages: /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - dev: true /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} @@ -10156,11 +10612,20 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: false + /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} dev: true + /kuler@2.0.0: + resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + dev: false + /lazy-ass@1.6.0: resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} engines: {node: '> 0.8'} @@ -10182,6 +10647,16 @@ packages: type-check: 0.4.0 dev: true + /libsodium-sumo@0.7.15: + resolution: {integrity: sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==} + dev: false + + /libsodium-wrappers-sumo@0.7.15: + resolution: {integrity: sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==} + dependencies: + libsodium-sumo: 0.7.15 + dev: false + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -10268,6 +10743,18 @@ packages: chalk: 4.1.2 is-unicode-supported: 0.1.0 + /logform@2.6.1: + resolution: {integrity: sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==} + engines: {node: '>= 12.0.0'} + dependencies: + '@colors/colors': 1.6.0 + '@types/triple-beam': 1.3.5 + fecha: 4.2.3 + ms: 2.1.3 + safe-stable-stringify: 2.5.0 + triple-beam: 1.4.1 + dev: false + /long@4.0.0: resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} dev: false @@ -11120,6 +11607,10 @@ packages: /mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + /nan@2.20.0: + resolution: {integrity: sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==} + dev: false + /nanoid@3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -11394,12 +11885,10 @@ packages: /object-inspect@1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} - dev: true /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - dev: true /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} @@ -11453,6 +11942,12 @@ packages: dependencies: wrappy: 1.0.2 + /one-time@1.0.0: + resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + dependencies: + fn.name: 1.1.0 + dev: false + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} @@ -11855,6 +12350,13 @@ packages: semver-compare: 1.0.0 dev: true + /plimit-lit@3.0.1: + resolution: {integrity: sha512-EyTTdP5LMX6WbHihG8R9w6DS+c3pyMpeKooOFuGDCyuVBogQjYNtoYwKLRD6hM1+VkHzGcfIuyLoWi6l5JA3iA==} + engines: {node: '>=18'} + dependencies: + queue-lit: 3.0.0 + dev: false + /plur@5.1.0: resolution: {integrity: sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -12042,6 +12544,14 @@ packages: optional: true dev: true + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: false + /property-information@6.2.0: resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} dev: true @@ -12135,7 +12645,6 @@ packages: engines: {node: '>=0.6'} dependencies: side-channel: 1.0.4 - dev: true /query-ast@1.0.4: resolution: {integrity: sha512-KFJFSvODCBjIH5HbHvITj9EEZKYUU6VX0T5CuB1ayvjUoUaZkKMi6eeby5Tf8DMukyZHlJQOE1+f3vevKUe6eg==} @@ -12144,6 +12653,11 @@ packages: lodash: 4.17.21 dev: true + /queue-lit@3.0.0: + resolution: {integrity: sha512-iyVL2X5G58kICVGLW/nseYmdHxBoAp2Gav16H23NPtIllyEJ+UheHlYZqBjO+lJHRYoZRSrX7chH8tMrH9MB/A==} + engines: {node: '>=18'} + dev: false + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true @@ -12262,6 +12776,17 @@ packages: string_decoder: 1.3.0 util-deprecate: 1.0.2 + /readable-stream@4.5.2: + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + dev: false + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -12269,6 +12794,10 @@ packages: picomatch: 2.3.1 dev: true + /readonly-date@1.0.0: + resolution: {integrity: sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==} + dev: false + /recast@0.21.5: resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} engines: {node: '>= 4'} @@ -12588,6 +13117,11 @@ packages: is-regex: 1.1.4 dev: true + /safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + dev: false + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -12771,11 +13305,16 @@ packages: call-bind: 1.0.2 get-intrinsic: 1.2.4 object-inspect: 1.12.2 - dev: true /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + /simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + dependencies: + is-arrayish: 0.3.2 + dev: false + /sinon@13.0.2: resolution: {integrity: sha512-KvOrztAVqzSJWMDoxM4vM+GPys1df2VBoXm+YciyB/OLMamfS3VXh3oGh5WtrAGSzrgczNWFFY22oKb7Fi5eeA==} dependencies: @@ -12787,6 +13326,10 @@ packages: supports-color: 7.2.0 dev: true + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: false + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -12983,6 +13526,10 @@ packages: minipass: 3.3.6 dev: true + /stack-trace@0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + dev: false + /stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -13200,6 +13747,11 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + /symbol-observable@2.0.3: + resolution: {integrity: sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==} + engines: {node: '>=0.10'} + dev: false + /table-layout@1.0.2: resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} engines: {node: '>=8.0.0'} @@ -13266,6 +13818,10 @@ packages: /text-encoding-utf-8@1.0.2: resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} + /text-hex@1.0.0: + resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} + dev: false + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true @@ -13307,6 +13863,18 @@ packages: retimer: 2.0.0 dev: false + /tiny-secp256k1@1.1.6: + resolution: {integrity: sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA==} + engines: {node: '>=6.0.0'} + requiresBuild: true + dependencies: + bindings: 1.5.0 + bn.js: 4.12.0 + create-hmac: 1.1.7 + elliptic: 6.5.4 + nan: 2.20.0 + dev: false + /tmp-promise@3.0.3: resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} requiresBuild: true @@ -13366,6 +13934,11 @@ packages: escape-string-regexp: 1.0.5 dev: true + /triple-beam@1.4.1: + resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} + engines: {node: '>= 14.0.0'} + dev: false + /trough@2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: true @@ -13457,6 +14030,10 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true + /tslib@2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + dev: false + /tslib@2.4.1: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} dev: true @@ -13629,6 +14206,10 @@ packages: typescript: 4.9.5 dev: true + /typeforce@1.18.0: + resolution: {integrity: sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==} + dev: false + /typescript@4.3.4: resolution: {integrity: sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew==} engines: {node: '>=4.2.0'} @@ -13825,6 +14406,11 @@ packages: which-typed-array: 1.1.9 dev: false + /utility-types@3.11.0: + resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} + engines: {node: '>= 4'} + dev: false + /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} @@ -14064,6 +14650,38 @@ packages: string-width: 4.2.3 dev: true + /wif@2.0.6: + resolution: {integrity: sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ==} + dependencies: + bs58check: 2.1.2 + dev: false + + /winston-transport@4.8.0: + resolution: {integrity: sha512-qxSTKswC6llEMZKgCQdaWgDuMJQnhuvF5f2Nk3SNXc4byfQ+voo2mX1Px9dkNOuR8p0KAjfPG29PuYUSIb+vSA==} + engines: {node: '>= 12.0.0'} + dependencies: + logform: 2.6.1 + readable-stream: 4.5.2 + triple-beam: 1.4.1 + dev: false + + /winston@3.14.2: + resolution: {integrity: sha512-CO8cdpBB2yqzEf8v895L+GNKYJiEq8eKlHU38af3snQBQ+sdAIUepjMSguOIJC7ICbzm0ZI+Af2If4vIJrtmOg==} + engines: {node: '>= 12.0.0'} + dependencies: + '@colors/colors': 1.6.0 + '@dabh/diagnostics': 2.0.3 + async: 3.2.6 + is-stream: 2.0.1 + logform: 2.6.1 + one-time: 1.0.0 + readable-stream: 3.6.2 + safe-stable-stringify: 2.5.0 + stack-trace: 0.0.10 + triple-beam: 1.4.1 + winston-transport: 4.8.0 + dev: false + /word-wrap@1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} @@ -14197,6 +14815,13 @@ packages: resolution: {integrity: sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==} dev: true + /xstream@11.14.0: + resolution: {integrity: sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==} + dependencies: + globalthis: 1.0.4 + symbol-observable: 2.0.3 + dev: false + /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} From c6cd5501b6063c25c987111aac918059cff47a5f Mon Sep 17 00:00:00 2001 From: Derek Sonnenberg Date: Wed, 2 Oct 2024 16:28:01 -0500 Subject: [PATCH 05/10] refactor: rename to umi-uploader-arweave-via-turbo PE-6832 --- .changeset/silent-keys-love.md | 2 +- .../CHANGELOG.md | 0 .../umi-uploader-arweave-via-turbo/README.md | 9 +++++ .../babel.config.json | 0 .../package.json | 6 ++-- .../rollup.config.js | 0 .../src/createArweaveUploader.ts | 1 - .../src/errors.ts | 0 .../src/index.ts | 0 .../src/plugin.ts | 0 .../test/ArweaveUploader.test.ts | 0 .../test/tsconfig.json | 0 .../tsconfig.json | 0 packages/umi-uploader-arweave/README.md | 9 ----- pnpm-lock.yaml | 36 +++++++------------ 15 files changed, 25 insertions(+), 38 deletions(-) rename packages/{umi-uploader-arweave => umi-uploader-arweave-via-turbo}/CHANGELOG.md (100%) create mode 100644 packages/umi-uploader-arweave-via-turbo/README.md rename packages/{umi-uploader-arweave => umi-uploader-arweave-via-turbo}/babel.config.json (100%) rename packages/{umi-uploader-arweave => umi-uploader-arweave-via-turbo}/package.json (91%) rename packages/{umi-uploader-arweave => umi-uploader-arweave-via-turbo}/rollup.config.js (100%) rename packages/{umi-uploader-arweave => umi-uploader-arweave-via-turbo}/src/createArweaveUploader.ts (99%) rename packages/{umi-uploader-arweave => umi-uploader-arweave-via-turbo}/src/errors.ts (100%) rename packages/{umi-uploader-arweave => umi-uploader-arweave-via-turbo}/src/index.ts (100%) rename packages/{umi-uploader-arweave => umi-uploader-arweave-via-turbo}/src/plugin.ts (100%) rename packages/{umi-uploader-arweave => umi-uploader-arweave-via-turbo}/test/ArweaveUploader.test.ts (100%) rename packages/{umi-uploader-arweave => umi-uploader-arweave-via-turbo}/test/tsconfig.json (100%) rename packages/{umi-uploader-arweave => umi-uploader-arweave-via-turbo}/tsconfig.json (100%) delete mode 100644 packages/umi-uploader-arweave/README.md diff --git a/.changeset/silent-keys-love.md b/.changeset/silent-keys-love.md index d24446e5..412b6421 100644 --- a/.changeset/silent-keys-love.md +++ b/.changeset/silent-keys-love.md @@ -1,5 +1,5 @@ --- -'@metaplex-foundation/umi-uploader-arweave': minor +'@metaplex-foundation/umi-uploader-arweave-via-turbo': minor --- Added Arweave uploader support via Turbo SDK diff --git a/packages/umi-uploader-arweave/CHANGELOG.md b/packages/umi-uploader-arweave-via-turbo/CHANGELOG.md similarity index 100% rename from packages/umi-uploader-arweave/CHANGELOG.md rename to packages/umi-uploader-arweave-via-turbo/CHANGELOG.md diff --git a/packages/umi-uploader-arweave-via-turbo/README.md b/packages/umi-uploader-arweave-via-turbo/README.md new file mode 100644 index 00000000..e486ba50 --- /dev/null +++ b/packages/umi-uploader-arweave-via-turbo/README.md @@ -0,0 +1,9 @@ +# umi-uploader-arweave-via-turbo + +An uploader implementation relying on Arweave. Takes advantage of the Turbo SDK and bundling infrastructure to provide seamless upload to Arweave + +## Installation + +```sh +npm install @metaplex-foundation/umi-uploader-arweave-via-turbo +``` diff --git a/packages/umi-uploader-arweave/babel.config.json b/packages/umi-uploader-arweave-via-turbo/babel.config.json similarity index 100% rename from packages/umi-uploader-arweave/babel.config.json rename to packages/umi-uploader-arweave-via-turbo/babel.config.json diff --git a/packages/umi-uploader-arweave/package.json b/packages/umi-uploader-arweave-via-turbo/package.json similarity index 91% rename from packages/umi-uploader-arweave/package.json rename to packages/umi-uploader-arweave-via-turbo/package.json index 63e351dd..41940029 100644 --- a/packages/umi-uploader-arweave/package.json +++ b/packages/umi-uploader-arweave-via-turbo/package.json @@ -1,5 +1,5 @@ { - "name": "@metaplex-foundation/umi-uploader-arweave", + "name": "@metaplex-foundation/umi-uploader-arweave-via-turbo", "version": "0.9.2", "description": "An uploader implementation relying on Arweave", "license": "MIT", @@ -28,7 +28,7 @@ "test": "ava" }, "dependencies": { - "@ardrive/turbo-sdk": "alpha", + "@ardrive/turbo-sdk": "1.19.0-alpha.1", "@metaplex-foundation/umi-web3js-adapters": "workspace:^", "bignumber.js": "^9.1.2", "buffer": "^6.0.3" @@ -58,7 +58,7 @@ "typedoc": { "entryPoint": "./src/index.ts", "readmeFile": "./README.md", - "displayName": "umi-uploader-arweave" + "displayName": "umi-uploader-arweave-via-turbo" }, "ava": { "typescript": { diff --git a/packages/umi-uploader-arweave/rollup.config.js b/packages/umi-uploader-arweave-via-turbo/rollup.config.js similarity index 100% rename from packages/umi-uploader-arweave/rollup.config.js rename to packages/umi-uploader-arweave-via-turbo/rollup.config.js diff --git a/packages/umi-uploader-arweave/src/createArweaveUploader.ts b/packages/umi-uploader-arweave-via-turbo/src/createArweaveUploader.ts similarity index 99% rename from packages/umi-uploader-arweave/src/createArweaveUploader.ts rename to packages/umi-uploader-arweave-via-turbo/src/createArweaveUploader.ts index ba98e4f4..3088a41e 100644 --- a/packages/umi-uploader-arweave/src/createArweaveUploader.ts +++ b/packages/umi-uploader-arweave-via-turbo/src/createArweaveUploader.ts @@ -315,7 +315,6 @@ export function createArweaveUploader( return TurboFactory.authenticated({ token: 'solana', - // @ts-ignore -- to be released in the next version of @ardrive/turbo-sdk walletAdapter: wallet, gatewayUrl: options.solRpcUrl, uploadServiceConfig: { url: options.uploadServiceUrl }, diff --git a/packages/umi-uploader-arweave/src/errors.ts b/packages/umi-uploader-arweave-via-turbo/src/errors.ts similarity index 100% rename from packages/umi-uploader-arweave/src/errors.ts rename to packages/umi-uploader-arweave-via-turbo/src/errors.ts diff --git a/packages/umi-uploader-arweave/src/index.ts b/packages/umi-uploader-arweave-via-turbo/src/index.ts similarity index 100% rename from packages/umi-uploader-arweave/src/index.ts rename to packages/umi-uploader-arweave-via-turbo/src/index.ts diff --git a/packages/umi-uploader-arweave/src/plugin.ts b/packages/umi-uploader-arweave-via-turbo/src/plugin.ts similarity index 100% rename from packages/umi-uploader-arweave/src/plugin.ts rename to packages/umi-uploader-arweave-via-turbo/src/plugin.ts diff --git a/packages/umi-uploader-arweave/test/ArweaveUploader.test.ts b/packages/umi-uploader-arweave-via-turbo/test/ArweaveUploader.test.ts similarity index 100% rename from packages/umi-uploader-arweave/test/ArweaveUploader.test.ts rename to packages/umi-uploader-arweave-via-turbo/test/ArweaveUploader.test.ts diff --git a/packages/umi-uploader-arweave/test/tsconfig.json b/packages/umi-uploader-arweave-via-turbo/test/tsconfig.json similarity index 100% rename from packages/umi-uploader-arweave/test/tsconfig.json rename to packages/umi-uploader-arweave-via-turbo/test/tsconfig.json diff --git a/packages/umi-uploader-arweave/tsconfig.json b/packages/umi-uploader-arweave-via-turbo/tsconfig.json similarity index 100% rename from packages/umi-uploader-arweave/tsconfig.json rename to packages/umi-uploader-arweave-via-turbo/tsconfig.json diff --git a/packages/umi-uploader-arweave/README.md b/packages/umi-uploader-arweave/README.md deleted file mode 100644 index 34288264..00000000 --- a/packages/umi-uploader-arweave/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# umi-uploader-arweave - -An uploader implementation relying on Arweave. - -## Installation - -```sh -npm install @metaplex-foundation/umi-uploader-arweave -``` diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cbef8fc0..58e846d2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -515,8 +515,8 @@ importers: packages/umi-uploader-arweave: dependencies: '@ardrive/turbo-sdk': - specifier: alpha - version: 1.18.0-alpha.2 + specifier: 1.19.0-alpha.1 + version: 1.19.0-alpha.1 '@metaplex-foundation/umi-web3js-adapters': specifier: workspace:^ version: link:../umi-web3js-adapters @@ -772,8 +772,8 @@ packages: - debug dev: false - /@ardrive/turbo-sdk@1.18.0-alpha.2: - resolution: {integrity: sha512-CeTrQJG94jECXR2JppfutN1VL+IuE/3gnyWuFhrNqxmvDuEy+8zfHCLxTn8K+ktawEnAZpWSKdW7E7moLDQgIg==} + /@ardrive/turbo-sdk@1.19.0-alpha.1: + resolution: {integrity: sha512-/lVIVKx1v+a0RmzYNLozL/k1Ldud5QRBbB0j++jsChxNre9ne9lZZZ4iLFh/nH274GSNjXAFxcsFUBbI0Wg52Q==} engines: {node: '>=18'} hasBin: true dependencies: @@ -6701,7 +6701,7 @@ packages: dependencies: buffer: 6.0.3 inherits: 2.0.4 - readable-stream: 3.6.0 + readable-stream: 3.6.2 dev: false /blob-to-it@1.0.4: @@ -6944,7 +6944,7 @@ packages: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.4 /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -7649,7 +7649,6 @@ packages: es-define-property: 1.0.0 es-errors: 1.3.0 gopd: 1.0.1 - dev: false /define-properties@1.1.4: resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} @@ -7666,7 +7665,6 @@ packages: define-data-property: 1.1.4 has-property-descriptors: 1.0.0 object-keys: 1.1.1 - dev: false /degenerator@3.0.2: resolution: {integrity: sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==} @@ -8009,7 +8007,7 @@ packages: es-to-primitive: 1.2.1 function-bind: 1.1.1 function.prototype.name: 1.1.5 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.4 get-symbol-description: 1.0.0 has: 1.0.3 has-property-descriptors: 1.0.0 @@ -8036,7 +8034,6 @@ packages: engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.4 - dev: false /es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} @@ -9175,7 +9172,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.1 es-abstract: 1.20.4 functions-have-names: 1.2.3 dev: true @@ -9221,6 +9218,7 @@ packages: function-bind: 1.1.1 has: 1.0.3 has-symbols: 1.0.3 + dev: true /get-intrinsic@1.2.4: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} @@ -9389,7 +9387,6 @@ packages: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.4 - dev: false /got@11.8.6: resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} @@ -12759,15 +12756,6 @@ packages: util-deprecate: 1.0.2 dev: true - /readable-stream@3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: false - /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -12854,7 +12842,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.1 functions-have-names: 1.2.3 dev: true @@ -13629,7 +13617,7 @@ packages: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.1 es-abstract: 1.20.4 dev: true @@ -13637,7 +13625,7 @@ packages: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.1 es-abstract: 1.20.4 dev: true From 47473c276a3bae279ae2b5a23f4b63a07235a5fe Mon Sep 17 00:00:00 2001 From: Derek Sonnenberg Date: Thu, 3 Oct 2024 09:58:08 -0500 Subject: [PATCH 06/10] docs: update readme PE-6832 --- packages/umi-uploader-arweave-via-turbo/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/umi-uploader-arweave-via-turbo/README.md b/packages/umi-uploader-arweave-via-turbo/README.md index e486ba50..73ff24b3 100644 --- a/packages/umi-uploader-arweave-via-turbo/README.md +++ b/packages/umi-uploader-arweave-via-turbo/README.md @@ -1,6 +1,6 @@ # umi-uploader-arweave-via-turbo -An uploader implementation relying on Arweave. Takes advantage of the Turbo SDK and bundling infrastructure to provide seamless upload to Arweave +An uploader implementation relying on Arweave. Takes advantage of the Turbo SDK and AR.IO bundling infrastructure to provide seamless upload to Arweave ## Installation From b74769682c73bd9f30c24967f27014ae3759c2bc Mon Sep 17 00:00:00 2001 From: Derek Sonnenberg Date: Thu, 3 Oct 2024 10:18:39 -0500 Subject: [PATCH 07/10] chore: bump turbo sdk version PE-6832 --- .../package.json | 2 +- pnpm-lock.yaml | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/umi-uploader-arweave-via-turbo/package.json b/packages/umi-uploader-arweave-via-turbo/package.json index 41940029..8356dce4 100644 --- a/packages/umi-uploader-arweave-via-turbo/package.json +++ b/packages/umi-uploader-arweave-via-turbo/package.json @@ -28,7 +28,7 @@ "test": "ava" }, "dependencies": { - "@ardrive/turbo-sdk": "1.19.0-alpha.1", + "@ardrive/turbo-sdk": "^1.19.0", "@metaplex-foundation/umi-web3js-adapters": "workspace:^", "bignumber.js": "^9.1.2", "buffer": "^6.0.3" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 58e846d2..ca62aa39 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -512,11 +512,11 @@ importers: specifier: ^5.1.0 version: 5.1.0(@ava/typescript@3.0.1) - packages/umi-uploader-arweave: + packages/umi-uploader-arweave-via-turbo: dependencies: '@ardrive/turbo-sdk': - specifier: 1.19.0-alpha.1 - version: 1.19.0-alpha.1 + specifier: ^1.19.0 + version: 1.19.0 '@metaplex-foundation/umi-web3js-adapters': specifier: workspace:^ version: link:../umi-web3js-adapters @@ -772,8 +772,8 @@ packages: - debug dev: false - /@ardrive/turbo-sdk@1.19.0-alpha.1: - resolution: {integrity: sha512-/lVIVKx1v+a0RmzYNLozL/k1Ldud5QRBbB0j++jsChxNre9ne9lZZZ4iLFh/nH274GSNjXAFxcsFUBbI0Wg52Q==} + /@ardrive/turbo-sdk@1.19.0: + resolution: {integrity: sha512-KSPTvNcrl6cCeaxzYmZ2XcDDtQhgOBS8UqRggCjjla0OnurX7uvNo+kDJyDhe+d9sRHtCcoKcJz+jkhWY04QSw==} engines: {node: '>=18'} hasBin: true dependencies: @@ -3256,7 +3256,7 @@ packages: resolution: {integrity: sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg==} dependencies: dataloader: 1.4.0 - node-fetch: 2.6.9 + node-fetch: 2.7.0 transitivePeerDependencies: - encoding dev: true @@ -5254,7 +5254,7 @@ packages: /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.11.11 + '@types/node': 18.15.13 /@types/cookie@0.4.1: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} @@ -5375,6 +5375,7 @@ packages: /@types/node@18.11.11: resolution: {integrity: sha512-KJ021B1nlQUBLopzZmPBVuGU9un7WJd/W4ya7Ih02B4Uwky5Nja0yGYav2EfYIk0RR2Q9oVhf60S2XR1BCWJ2g==} + dev: true /@types/node@18.15.13: resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} @@ -5453,7 +5454,7 @@ packages: /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: - '@types/node': 18.11.11 + '@types/node': 18.15.13 /@types/ws@8.5.12: resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} @@ -11787,6 +11788,7 @@ packages: optional: true dependencies: whatwg-url: 5.0.0 + dev: false /node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} From 28a81ba669aae4ec6db1d1b38f4918e1d6c56c0d Mon Sep 17 00:00:00 2001 From: Derek Sonnenberg Date: Mon, 4 Nov 2024 12:39:15 -0600 Subject: [PATCH 08/10] feat: sign uploads with ephemeral key to save web signature requests --- .../package.json | 2 +- .../src/createArweaveUploader.ts | 94 +++++++--- pnpm-lock.yaml | 175 ++++++++++++++++-- 3 files changed, 226 insertions(+), 45 deletions(-) diff --git a/packages/umi-uploader-arweave-via-turbo/package.json b/packages/umi-uploader-arweave-via-turbo/package.json index 8356dce4..1f8d24f7 100644 --- a/packages/umi-uploader-arweave-via-turbo/package.json +++ b/packages/umi-uploader-arweave-via-turbo/package.json @@ -28,7 +28,7 @@ "test": "ava" }, "dependencies": { - "@ardrive/turbo-sdk": "^1.19.0", + "@ardrive/turbo-sdk": "^1.20.0", "@metaplex-foundation/umi-web3js-adapters": "workspace:^", "bignumber.js": "^9.1.2", "buffer": "^6.0.3" diff --git a/packages/umi-uploader-arweave-via-turbo/src/createArweaveUploader.ts b/packages/umi-uploader-arweave-via-turbo/src/createArweaveUploader.ts index 3088a41e..7a043e83 100644 --- a/packages/umi-uploader-arweave-via-turbo/src/createArweaveUploader.ts +++ b/packages/umi-uploader-arweave-via-turbo/src/createArweaveUploader.ts @@ -15,6 +15,7 @@ import { UploaderInterface, UsdAmount, createGenericFileFromJson, + createSignerFromKeypair, isKeypairSigner, publicKey, sol, @@ -40,8 +41,10 @@ import { export type ArweaveUploader = UploaderInterface & { /** Get the current Arweave Turbo client */ arweave: () => Promise; - /** Get the SOL estimated price for an amount of bytes */ - getUploadPriceFromBytes: (bytes: number) => Promise; + /** Get the SOL and winc estimated price for an amount of bytes */ + getUploadPriceFromBytes: ( + bytes: number + ) => Promise<{ solAmount: SolAmount; wincAmount: BigNumber }>; /** Get the current SOL equivalent balance from connected Arweave Bundler */ getBalance: () => Promise; /** Get the current Turbo Storage Credit balance from connected Arweave Bundler */ @@ -95,7 +98,9 @@ export function createArweaveUploader( ...options, }; - const getUploadPriceFromBytes = async (bytes: number): Promise => { + const getUploadPriceFromBytes = async ( + bytes: number + ): Promise<{ solAmount: SolAmount; wincAmount: BigNumber }> => { const arweave = await getArweave(); const wincPriceForOneSol = ( await arweave.getWincForToken({ @@ -113,38 +118,65 @@ export function createArweaveUploader( BigNumber(wincPriceForOneGiB).dividedBy(wincPriceForOneSol); const solPriceForOneByte = solPriceForOneGiB.dividedBy(2 ** 30); const solPriceForGivenBytes = solPriceForOneByte.multipliedBy(bytes); + const wincPriceForGivenBytes = BigNumber(wincPriceForOneGiB) + .multipliedBy(bytes / 2 ** 30) + .integerValue(BigNumber.ROUND_CEIL); - return sol( + const solAmount = sol( solPriceForGivenBytes .multipliedBy(options.priceMultiplier ?? 1.1) .toNumber() ); + return { solAmount, wincAmount: wincPriceForGivenBytes }; }; - const getUploadPrice = async (files: GenericFile[]): Promise => { - const bytes: number = files.reduce( - (sum, file) => sum + HEADER_SIZE + file.buffer.byteLength, - 0 - ); + const getBytesFromFiles = (files: GenericFile[]): number => + files.reduce((sum, file) => sum + HEADER_SIZE + file.buffer.byteLength, 0); + + const getUploadSolAndWincPrice = async ( + files: GenericFile[] + ): Promise<{ solAmount: SolAmount; wincAmount: BigNumber }> => { + const bytes = getBytesFromFiles(files); if (bytes <= FREE_UPLOAD_BYTE_LIMIT) { - return sol(0); + return { solAmount: sol(0), wincAmount: new BigNumber(0) }; } return getUploadPriceFromBytes(bytes); }; + const getUploadPrice = async (files: GenericFile[]): Promise => { + const { solAmount } = await getUploadSolAndWincPrice(files); + return solAmount; + }; + const upload = async (files: GenericFile[]): Promise => { const arweave = await getArweave(); - const amount = await getUploadPrice(files); - await fund(amount); + const { solAmount, wincAmount } = await getUploadSolAndWincPrice(files); + await fund(solAmount); + + const ephemeralKey = context.eddsa.generateKeypair(); + const ephemeralArweave = await initArweave( + createSignerFromKeypair(context, ephemeralKey) + ); + + if (wincAmount.isGreaterThan(0)) { + // Share credits to ephemeral key + await arweave.shareCredits({ + approvedAddress: await ephemeralArweave.signer.getNativeAddress(), + approvedWincAmount: wincAmount, + // TODO: Could make configurable to prevent upload timeouts + expiresBySeconds: 60 * 20, // Provides 20 minutes to upload, expiring any un-used credits back to the payer. + }); + } const promises = files.map(async (file) => { const buffer = Buffer.from(file.buffer); let dataItemId; try { - const { id } = await arweave.uploadFile({ + // Send uploads with ephemeral key to avoid signing each upload with the payer's key. + const { id } = await ephemeralArweave.uploadFile({ fileStreamFactory: () => buffer, fileSizeFactory: () => buffer.byteLength, dataItemOpts: { @@ -259,20 +291,20 @@ export function createArweaveUploader( return _arweave; }; - const initArweave = async (): Promise => { - const payer: Signer = options.payer ?? context.payer; - - const defaultAddresses = - context.rpc.getCluster() === 'devnet' - ? { - uploadServiceUrl: 'https://upload.ardrive.dev', - paymentServiceUrl: 'https://payment.ardrive.dev', - } - : { - uploadServiceUrl: 'https://upload.ardrive.io', - paymentServiceUrl: 'https://payment.ardrive.io', - }; - + const defaultAddresses = + context.rpc.getCluster() === 'devnet' + ? { + uploadServiceUrl: 'https://upload.ardrive.dev', + paymentServiceUrl: 'https://payment.ardrive.dev', + } + : { + uploadServiceUrl: 'https://upload.ardrive.io', + paymentServiceUrl: 'https://payment.ardrive.io', + }; + + const initArweave = async ( + payer: Signer = options.payer ?? context.payer + ): Promise => { let arweave; if (isKeypairSigner(payer)) { arweave = TurboFactory.authenticated({ @@ -317,8 +349,12 @@ export function createArweaveUploader( token: 'solana', walletAdapter: wallet, gatewayUrl: options.solRpcUrl, - uploadServiceConfig: { url: options.uploadServiceUrl }, - paymentServiceConfig: { url: options.paymentServiceUrl }, + uploadServiceConfig: { + url: options.uploadServiceUrl ?? defaultAddresses.uploadServiceUrl, + }, + paymentServiceConfig: { + url: options.paymentServiceUrl ?? defaultAddresses.paymentServiceUrl, + }, }); }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ca62aa39..496e7a60 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -515,8 +515,8 @@ importers: packages/umi-uploader-arweave-via-turbo: dependencies: '@ardrive/turbo-sdk': - specifier: ^1.19.0 - version: 1.19.0 + specifier: ^1.20.0 + version: 1.20.0 '@metaplex-foundation/umi-web3js-adapters': specifier: workspace:^ version: link:../umi-web3js-adapters @@ -772,8 +772,8 @@ packages: - debug dev: false - /@ardrive/turbo-sdk@1.19.0: - resolution: {integrity: sha512-KSPTvNcrl6cCeaxzYmZ2XcDDtQhgOBS8UqRggCjjla0OnurX7uvNo+kDJyDhe+d9sRHtCcoKcJz+jkhWY04QSw==} + /@ardrive/turbo-sdk@1.20.0: + resolution: {integrity: sha512-Mc7T+1PCBxVOPOMBLzCGj7vNicvcEo043oJyfSOQHk9Tt/cBd9uJ3kcaYwAsisgIv1psbFozCqi6KjsAlcpmEw==} engines: {node: '>=18'} hasBin: true dependencies: @@ -795,6 +795,7 @@ packages: mime-types: 2.1.35 plimit-lit: 3.0.1 prompts: 2.4.2 + starknet: 6.11.0 tweetnacl: 1.0.3 winston: 3.14.2 transitivePeerDependencies: @@ -4632,6 +4633,12 @@ packages: '@noble/hashes': 1.3.2 dev: false + /@noble/curves@1.3.0: + resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} + dependencies: + '@noble/hashes': 1.3.3 + dev: false + /@noble/curves@1.4.2: resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} dependencies: @@ -4659,6 +4666,11 @@ packages: engines: {node: '>= 16'} dev: false + /@noble/hashes@1.3.3: + resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} + engines: {node: '>= 16'} + dev: false + /@noble/hashes@1.4.0: resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} @@ -5000,6 +5012,13 @@ packages: '@scure/base': 1.1.7 dev: false + /@scure/starknet@1.0.0: + resolution: {integrity: sha512-o5J57zY0f+2IL/mq8+AYJJ4Xpc1fOtDhr+mFQKbHnYFmm3WQrC+8zj2HEgxak1a+x86mhmBC1Kq305KUpVf0wg==} + dependencies: + '@noble/curves': 1.3.0 + '@noble/hashes': 1.3.3 + dev: false + /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} dependencies: @@ -5186,6 +5205,10 @@ packages: - encoding - utf-8-validate + /@starknet-io/types-js@0.7.7: + resolution: {integrity: sha512-WLrpK7LIaIb8Ymxu6KF/6JkGW1sso988DweWu7p5QY/3y7waBIiPvzh27D9bX5KIJNRDyOoOVoHVEKYUYWZ/RQ==} + dev: false + /@supercharge/promise-pool@2.4.0: resolution: {integrity: sha512-O9CMipBlq5OObdt1uKJGIzm9cdjpPWfj+a+Zw9EgWKxaMNHKC7EU7X9taj3H0EGQNLOSq2jAcOa3EzxlfHsD6w==} engines: {node: '>=8'} @@ -5954,6 +5977,16 @@ packages: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} dev: true + /abi-wan-kanabi@2.2.3: + resolution: {integrity: sha512-JlqiAl9CPvTm5kKG0QXmVCWNWoC/XyRMOeT77cQlbxXWllgjf6SqUmaNqFon72C2o5OSZids+5FvLdsw6dvWaw==} + hasBin: true + dependencies: + ansicolors: 0.3.2 + cardinal: 2.1.1 + fs-extra: 10.1.0 + yargs: 17.7.2 + dev: false + /abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -6991,6 +7024,14 @@ packages: multiformats: 9.9.0 dev: false + /cardinal@2.1.1: + resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==} + hasBin: true + dependencies: + ansicolors: 0.3.2 + redeyed: 2.1.1 + dev: false + /cbor@8.1.0: resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} engines: {node: '>=12.19'} @@ -7153,7 +7194,6 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: true /clone-response@1.0.3: resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} @@ -8304,7 +8344,6 @@ packages: /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - dev: true /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} @@ -8567,7 +8606,6 @@ packages: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - dev: true /esquery@1.4.0: resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} @@ -8906,6 +8944,13 @@ packages: resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} dev: false + /fetch-cookie@3.0.1: + resolution: {integrity: sha512-ZGXe8Y5Z/1FWqQ9q/CrJhkUD73DyBU9VF0hBQmEO/wPHe4A9PKTjplFDLeFX8aOsYypZUcX5Ji/eByn3VCVO3Q==} + dependencies: + set-cookie-parser: 2.5.1 + tough-cookie: 4.1.4 + dev: false + /figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -9107,7 +9152,6 @@ packages: graceful-fs: 4.2.10 jsonfile: 6.1.0 universalify: 2.0.0 - dev: true /fs-extra@11.1.0: resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} @@ -9211,7 +9255,6 @@ packages: /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - dev: true /get-intrinsic@1.1.3: resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} @@ -9240,6 +9283,12 @@ packages: engines: {node: '>=8'} dev: true + /get-starknet-core@4.0.0: + resolution: {integrity: sha512-6pLmidQZkC3wZsrHY99grQHoGpuuXqkbSP65F8ov1/JsEI8DDLkhsAuLCKFzNOK56cJp+f1bWWfTJ57e9r5eqQ==} + dependencies: + '@starknet-io/types-js': 0.7.7 + dev: false + /get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -10276,6 +10325,15 @@ packages: engines: {node: '>=12'} dev: false + /isomorphic-fetch@3.0.0: + resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} + dependencies: + node-fetch: 2.7.0 + whatwg-fetch: 3.6.20 + transitivePeerDependencies: + - encoding + dev: false + /isomorphic-ws@4.0.1(ws@7.5.10): resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} peerDependencies: @@ -10576,7 +10634,6 @@ packages: universalify: 2.0.0 optionalDependencies: graceful-fs: 4.2.10 - dev: true /jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} @@ -10768,6 +10825,10 @@ packages: js-tokens: 4.0.0 dev: true + /lossless-json@4.0.2: + resolution: {integrity: sha512-+z0EaLi2UcWi8MZRxA5iTb6m4Ys4E80uftGY+yG5KNFJb5EceQXOhdW/pWJZ8m97s26u7yZZAYMcKWNztSZssA==} + dev: false + /lowdb@1.0.0: resolution: {integrity: sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==} engines: {node: '>=4'} @@ -12152,6 +12213,10 @@ packages: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} dev: true + /pako@2.1.0: + resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + dev: false + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -12614,6 +12679,10 @@ packages: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true + /psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: false + /pump@2.0.1: resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} dependencies: @@ -12652,6 +12721,10 @@ packages: lodash: 4.17.21 dev: true + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: false + /queue-lit@3.0.0: resolution: {integrity: sha512-iyVL2X5G58kICVGLW/nseYmdHxBoAp2Gav16H23NPtIllyEJ+UheHlYZqBjO+lJHRYoZRSrX7chH8tMrH9MB/A==} engines: {node: '>=18'} @@ -12811,6 +12884,12 @@ packages: indent-string: 4.0.0 strip-indent: 3.0.0 + /redeyed@2.1.1: + resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==} + dependencies: + esprima: 4.0.1 + dev: false + /reduce-flatten@2.0.0: resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} engines: {node: '>=6'} @@ -12917,7 +12996,6 @@ packages: /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - dev: true /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} @@ -12935,6 +13013,10 @@ packages: resolution: {integrity: sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==} dev: true + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: false + /resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} @@ -13244,7 +13326,6 @@ packages: /set-cookie-parser@2.5.1: resolution: {integrity: sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==} - dev: true /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -13527,6 +13608,26 @@ packages: escape-string-regexp: 2.0.0 dev: true + /starknet@6.11.0: + resolution: {integrity: sha512-u50KrGDi9fbu1Ogu7ynwF/tSeFlp3mzOg1/Y5x50tYFICImo3OfY4lOz9OtYDk404HK4eUujKkhov9tG7GAKlg==} + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.7 + '@scure/starknet': 1.0.0 + abi-wan-kanabi: 2.2.3 + fetch-cookie: 3.0.1 + get-starknet-core: 4.0.0 + isomorphic-fetch: 3.0.0 + lossless-json: 4.0.2 + pako: 2.1.0 + starknet-types-07: /@starknet-io/types-js@0.7.7 + ts-mixer: 6.0.4 + url-join: 4.0.1 + transitivePeerDependencies: + - encoding + dev: false + /start-server-and-test@1.15.1: resolution: {integrity: sha512-ixhMbUAmym+7k3kqhjhTt6/0eUwE3dbNZPWgcfEUJ5uStaHbT0m8VB+049V5V9X0ueEyxAkwnkkR2SEhCKst5g==} engines: {node: '>=6'} @@ -13910,6 +14011,16 @@ packages: resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} dev: true + /tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.1.1 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: false + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -13956,6 +14067,10 @@ packages: typescript: 4.9.5 dev: true + /ts-mixer@6.0.4: + resolution: {integrity: sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==} + dev: false + /ts-morph@12.0.0: resolution: {integrity: sha512-VHC8XgU2fFW7yO1f/b3mxKDje1vmyzFXHWzOYmKEkCEwcLjDtbdLgBQviqj4ZwP4MJkQtRo6Ha2I29lq/B+VxA==} dependencies: @@ -14350,10 +14465,14 @@ packages: engines: {node: '>= 4.0.0'} dev: true + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: false + /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} - dev: true /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} @@ -14376,6 +14495,17 @@ packages: dependencies: punycode: 2.1.1 + /url-join@4.0.1: + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} + dev: false + + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: false + /utf-8-validate@5.0.10: resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} engines: {node: '>=6.14.2'} @@ -14579,6 +14709,10 @@ packages: engines: {node: '>=6'} dev: true + /whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + dev: false + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: @@ -14824,7 +14958,6 @@ packages: /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - dev: true /yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} @@ -14863,7 +14996,6 @@ packages: /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} - dev: true /yargs@15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} @@ -14908,6 +15040,19 @@ packages: yargs-parser: 21.1.1 dev: true + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: false + /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} From 7bcc7fe3960d066393f3202e1d07a01943f265ee Mon Sep 17 00:00:00 2001 From: Derek Sonnenberg Date: Mon, 4 Nov 2024 14:41:00 -0600 Subject: [PATCH 09/10] feat: use paidBy attribute in upload --- .../umi-uploader-arweave-via-turbo/src/createArweaveUploader.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/umi-uploader-arweave-via-turbo/src/createArweaveUploader.ts b/packages/umi-uploader-arweave-via-turbo/src/createArweaveUploader.ts index 7a043e83..af6d9531 100644 --- a/packages/umi-uploader-arweave-via-turbo/src/createArweaveUploader.ts +++ b/packages/umi-uploader-arweave-via-turbo/src/createArweaveUploader.ts @@ -170,6 +170,7 @@ export function createArweaveUploader( }); } + const paidBy = await arweave.signer.getNativeAddress(); const promises = files.map(async (file) => { const buffer = Buffer.from(file.buffer); @@ -181,6 +182,7 @@ export function createArweaveUploader( fileSizeFactory: () => buffer.byteLength, dataItemOpts: { tags: getGenericFileTagsWithContentType(file), + paidBy, }, }); dataItemId = id; From 4ab10fc49f77713cbf66749b16bb5aaa5d8fdda9 Mon Sep 17 00:00:00 2001 From: Derek Sonnenberg Date: Thu, 21 Nov 2024 13:10:25 -0600 Subject: [PATCH 10/10] refactor: use a functional arweave dev gateway --- .../src/createArweaveUploader.ts | 2 +- .../test/ArweaveUploader.test.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/umi-uploader-arweave-via-turbo/src/createArweaveUploader.ts b/packages/umi-uploader-arweave-via-turbo/src/createArweaveUploader.ts index af6d9531..c802d993 100644 --- a/packages/umi-uploader-arweave-via-turbo/src/createArweaveUploader.ts +++ b/packages/umi-uploader-arweave-via-turbo/src/createArweaveUploader.ts @@ -192,7 +192,7 @@ export function createArweaveUploader( const gateway = context.rpc.getCluster() === 'devnet' - ? 'https://arweave.dev' + ? 'https://turbo.ardrive.dev/raw' : 'https://arweave.net'; return `${gateway}/${dataItemId}`; diff --git a/packages/umi-uploader-arweave-via-turbo/test/ArweaveUploader.test.ts b/packages/umi-uploader-arweave-via-turbo/test/ArweaveUploader.test.ts index 95fdb50b..e4c67311 100644 --- a/packages/umi-uploader-arweave-via-turbo/test/ArweaveUploader.test.ts +++ b/packages/umi-uploader-arweave-via-turbo/test/ArweaveUploader.test.ts @@ -55,7 +55,7 @@ test('can upload one file', async (t) => { // Then the URI should be a valid arweave dev gateway URI. t.truthy(uri); - t.true(uri.startsWith('https://arweave.dev/')); + t.true(uri.startsWith('https://turbo.ardrive.dev/')); // and it should point to the uploaded asset. const [asset] = await context.downloader.download([uri]); @@ -78,7 +78,7 @@ test.skip('can upload a file above 105 KiB in size', async (t) => { ]); t.truthy(uri); - t.true(uri.startsWith('https://arweave.dev/')); + t.true(uri.startsWith('https://turbo.ardrive.dev/')); const [asset] = await context.downloader.download([uri]); t.deepEqual(asset.buffer, buffer);