@metaplex-foundation/umi-uploader-irys 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -7,7 +7,7 @@ var umiWeb3jsAdapters = require('@metaplex-foundation/umi-web3js-adapters');
|
|
|
7
7
|
var web3_js = require('@solana/web3.js');
|
|
8
8
|
var BigNumber = require('bignumber.js');
|
|
9
9
|
var buffer = require('buffer');
|
|
10
|
-
var
|
|
10
|
+
var promisePool = require('@supercharge/promise-pool');
|
|
11
11
|
var errors = require('./errors.cjs');
|
|
12
12
|
|
|
13
13
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -31,7 +31,6 @@ function _interopNamespace(e) {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
var BigNumber__default = /*#__PURE__*/_interopDefaultLegacy(BigNumber);
|
|
34
|
-
var PromisePool__default = /*#__PURE__*/_interopDefaultLegacy(PromisePool);
|
|
35
34
|
|
|
36
35
|
// PromisePool is a dependency the Irys client already requires, so using it here has no extra cost.
|
|
37
36
|
|
|
@@ -76,7 +75,7 @@ function createIrysUploader(context, uploaderOptions = {}) {
|
|
|
76
75
|
const amount = await getUploadPrice(files);
|
|
77
76
|
await fund(amount);
|
|
78
77
|
const manifestMap = options?.manifest === true ? new Map() : undefined;
|
|
79
|
-
const result = await
|
|
78
|
+
const result = await promisePool.PromisePool.for(files).withConcurrency(uploaderOptions.uploadConcurrency ?? 10).onTaskFinished((_, pool) => options?.onProgress?.(pool.processedPercentage())).process(async file => {
|
|
80
79
|
if (options?.signal?.aborted) throw new errors.IrysAbortError();
|
|
81
80
|
const buffer$1 = buffer.Buffer.from(file.buffer);
|
|
82
81
|
const irysTx = irys.createTransaction(buffer$1, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createIrysUploader.cjs","sources":["../../src/createIrysUploader.ts"],"sourcesContent":["import type { BaseWebIrys } from '@irys/web-upload/dist/types/base';\nimport type { BaseNodeIrys } from '@irys/upload/dist/types/base';\nimport {\n Commitment,\n Context,\n GenericFile,\n GenericFileTag,\n Keypair,\n Signer,\n SolAmount,\n UploaderInterface,\n UploaderUploadOptions,\n base58,\n createGenericFileFromJson,\n createSignerFromKeypair,\n isKeypairSigner,\n lamports,\n publicKey,\n signTransaction,\n} from '@metaplex-foundation/umi';\nimport {\n fromWeb3JsKeypair,\n fromWeb3JsLegacyTransaction,\n toWeb3JsLegacyTransaction,\n toWeb3JsPublicKey,\n} from '@metaplex-foundation/umi-web3js-adapters';\nimport {\n Connection as Web3JsConnection,\n Keypair as Web3JsKeypair,\n PublicKey as Web3JsPublicKey,\n SendOptions as Web3JsSendOptions,\n Signer as Web3JsSigner,\n Transaction as Web3JsTransaction,\n TransactionSignature as Web3JsTransactionSignature,\n} from '@solana/web3.js';\nimport BigNumber from 'bignumber.js';\nimport { Buffer } from 'buffer';\nimport PromisePool from '@supercharge/promise-pool';\nimport {\n AssetUploadFailedError,\n IrysWithdrawError,\n FailedToConnectToIrysAddressError,\n FailedToInitializeIrysError,\n IrysAbortError,\n} from './errors';\n// PromisePool is a dependency the Irys client already requires, so using it here has no extra cost.\n\n/**\n * This method is necessary to import the Irys package on both ESM and CJS modules.\n * Without this, we get a different structure on each module:\n * - CJS: { default: [Getter], WebIrys: [Getter] }\n * - ESM: { default: { default: [Getter], WebIrys: [Getter] } }\n * This method fixes this by ensure there is not double default in the imported package.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction _removeDoubleDefault<T>(pkg: T): T {\n if (\n pkg &&\n typeof pkg === 'object' &&\n 'default' in pkg &&\n 'default' in (pkg as any).default\n ) {\n return (pkg as any).default;\n }\n\n return pkg;\n}\n\nexport type IrysUploader = UploaderInterface & {\n irys: () => Promise<BaseNodeIrys | BaseWebIrys>;\n getUploadPriceFromBytes: (bytes: number) => Promise<SolAmount>;\n getBalance: () => Promise<SolAmount>;\n fund: (amount: SolAmount, skipBalanceCheck: boolean) => Promise<void>;\n withdrawAll: (amount: SolAmount) => Promise<void>;\n withdraw: (amount: SolAmount) => Promise<void>;\n};\n\nexport type IrysUploaderOptions = {\n address?: string;\n timeout?: number;\n providerUrl?: string;\n priceMultiplier?: number;\n payer?: Signer;\n uploadConcurrency?: number;\n};\n\nexport type IrysWalletAdapter = {\n publicKey: Web3JsPublicKey | null;\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>;\n signTransaction?: (\n transaction: Web3JsTransaction\n ) => Promise<Web3JsTransaction>;\n signAllTransactions?: (\n transactions: Web3JsTransaction[]\n ) => Promise<Web3JsTransaction[]>;\n sendTransaction: (\n transaction: Web3JsTransaction,\n connection: Web3JsConnection,\n options?: Web3JsSendOptions & { signers?: Web3JsSigner[] }\n ) => Promise<Web3JsTransactionSignature>;\n};\n\n// Size of Irys transaction header.\nconst HEADER_SIZE = 2_000;\n\n// Minimum file size for cost calculation.\nconst MINIMUM_SIZE = 80_000;\n\nconst gatewayUrl = (id: string) => `https://gateway.irys.xyz/${id}`;\n\nexport function createIrysUploader(\n context: Pick<Context, 'rpc' | 'payer' | 'eddsa'>,\n uploaderOptions: IrysUploaderOptions = {}\n): IrysUploader {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n let _irys: BaseNodeIrys | BaseWebIrys | null = null;\n uploaderOptions = {\n providerUrl: context.rpc.getEndpoint(),\n ...uploaderOptions,\n };\n\n const getUploadPriceFromBytes = async (bytes: number): Promise<SolAmount> => {\n const irys = await getIrys();\n const price = await irys.getPrice(bytes);\n\n return bigNumberToAmount(\n price.multipliedBy(uploaderOptions.priceMultiplier ?? 1.1)\n );\n };\n\n const getUploadPrice = async (files: GenericFile[]): Promise<SolAmount> => {\n const bytes: number = files.reduce(\n (sum, file) =>\n sum + HEADER_SIZE + Math.max(MINIMUM_SIZE, file.buffer.byteLength),\n 0\n );\n\n return getUploadPriceFromBytes(bytes);\n };\n\n const upload = async (\n files: GenericFile[],\n options?: UploaderUploadOptions\n ): Promise<string[]> => {\n const irys = await getIrys();\n const amount = await getUploadPrice(files);\n await fund(amount);\n\n const manifestMap = options?.manifest === true ? new Map() : undefined;\n\n const result = await PromisePool.for(files)\n .withConcurrency(uploaderOptions.uploadConcurrency ?? 10)\n .onTaskFinished((_, pool) =>\n options?.onProgress?.(pool.processedPercentage())\n )\n .process(async (file) => {\n if (options?.signal?.aborted) throw new IrysAbortError();\n\n const buffer = Buffer.from(file.buffer);\n const irysTx = irys.createTransaction(buffer, {\n tags: getGenericFileTagsWithContentType(file),\n });\n await irysTx.sign();\n const {\n status,\n data: { id },\n } = await irys.uploader.uploadTransaction(irysTx);\n\n if (status >= 300) throw new AssetUploadFailedError(status);\n\n manifestMap?.set(file.fileName, id);\n\n return id;\n });\n\n if (manifestMap) {\n const manifest = await irys.uploader.generateFolder({\n items: manifestMap,\n });\n const { id } = await irys.upload(JSON.stringify(manifest), {\n tags: [\n { name: 'Type', value: 'manifest' },\n { name: 'Content-Type', value: 'application/x.irys-manifest+json' },\n // ...(options?.manifestTags ?? []),\n ],\n });\n return [gatewayUrl(id)];\n }\n\n return result.results.map(gatewayUrl);\n };\n\n const uploadJson = async <T>(json: T): Promise<string> => {\n const file = createGenericFileFromJson(json);\n const uris = await upload([file]);\n return uris[0];\n };\n\n const getBalance = async (): Promise<SolAmount> => {\n const irys = await getIrys();\n const balance = await irys.getBalance();\n\n return bigNumberToAmount(balance);\n };\n\n const fund = async (\n amount: SolAmount,\n skipBalanceCheck = false\n ): Promise<void> => {\n const irys = await getIrys();\n let toFund = amountToBigNumber(amount);\n\n if (!skipBalanceCheck) {\n const balance = await irys.getBalance();\n\n toFund = toFund.isGreaterThan(balance)\n ? toFund.minus(balance)\n : new BigNumber(0);\n }\n\n if (toFund.isLessThanOrEqualTo(0)) {\n return;\n }\n\n await irys.fund(toFund);\n };\n\n const withdrawAll = async (): Promise<void> => {\n const irys = await getIrys();\n const balance = await irys.getBalance();\n const minimumBalance = new BigNumber(5000);\n\n if (balance.isLessThan(minimumBalance)) {\n return;\n }\n\n await irys.withdrawAll();\n };\n\n const withdraw = async (amount: SolAmount): Promise<void> => {\n const irys = await getIrys();\n try {\n await irys.withdrawBalance(amountToBigNumber(amount));\n } catch (e: any) {\n throw new IrysWithdrawError(\n e instanceof Error ? e.message : e.toString()\n );\n }\n };\n\n const getIrys = async (): Promise<BaseWebIrys | BaseNodeIrys> => {\n const oldPayer = _irys?.getSigner().publicKey;\n const newPayer = uploaderOptions.payer ?? context.payer;\n if (\n oldPayer &&\n publicKey(new Uint8Array(oldPayer)) !== newPayer.publicKey\n ) {\n _irys = null;\n }\n\n if (!_irys) {\n _irys = await initIrys();\n }\n\n return _irys;\n };\n\n const initIrys = async (): Promise<BaseWebIrys | BaseNodeIrys> => {\n const token = 'solana';\n const defaultAddress =\n context.rpc.getCluster() === 'devnet'\n ? 'https://devnet.irys.xyz'\n : 'https://uploader.irys.xyz';\n const address = uploaderOptions?.address ?? defaultAddress;\n const irysOptions = {\n timeout: uploaderOptions.timeout,\n providerUrl: uploaderOptions.providerUrl,\n };\n\n const payer: Signer = uploaderOptions.payer ?? context.payer;\n\n // If in node use node irys, else use web irys.\n const isNode =\n // eslint-disable-next-line no-prototype-builtins\n typeof window === 'undefined' || window.process?.hasOwnProperty('type');\n\n let irys;\n if (isNode && isKeypairSigner(payer))\n irys = await initNodeIrys(address, payer, irysOptions);\n else {\n irys = await initWebIrys(address, payer, irysOptions);\n }\n\n try {\n // Check for valid irys node.\n await irys.utils.getBundlerAddress(token);\n } catch (error) {\n throw new FailedToConnectToIrysAddressError(address, error as Error);\n }\n\n return irys;\n };\n\n const initNodeIrys = async (\n address: string,\n keypair: Keypair,\n options: any\n ): Promise<BaseNodeIrys> => {\n const bPackage = _removeDoubleDefault(await import('@irys/upload'));\n const cPackage = _removeDoubleDefault(await import('@irys/upload-solana'));\n return bPackage\n .Uploader(cPackage.Solana)\n .bundlerUrl(address)\n .withWallet(keypair.secretKey)\n .withIrysConfig(options)\n .build();\n };\n\n const initWebIrys = async (\n address: string,\n payer: Signer,\n options: any\n ): Promise<BaseWebIrys> => {\n const wallet: IrysWalletAdapter = {\n publicKey: toWeb3JsPublicKey(payer.publicKey),\n signMessage: (message: Uint8Array) => payer.signMessage(message),\n signTransaction: async (web3JsTransaction: Web3JsTransaction) =>\n toWeb3JsLegacyTransaction(\n await payer.signTransaction(\n fromWeb3JsLegacyTransaction(web3JsTransaction)\n )\n ),\n signAllTransactions: async (web3JsTransactions: Web3JsTransaction[]) => {\n const transactions = web3JsTransactions.map(\n fromWeb3JsLegacyTransaction\n );\n const signedTransactions = await payer.signAllTransactions(\n transactions\n );\n return signedTransactions.map(toWeb3JsLegacyTransaction);\n },\n sendTransaction: async (\n web3JsTransaction: Web3JsTransaction,\n connection: Web3JsConnection,\n options: Web3JsSendOptions & { signers?: Web3JsSigner[] } = {}\n ): Promise<Web3JsTransactionSignature> => {\n const { signers: web3JsSigners = [], ...sendOptions } = options;\n const signers = web3JsSigners.map((web3JsSigner) =>\n createSignerFromKeypair(\n context,\n fromWeb3JsKeypair(\n Web3JsKeypair.fromSecretKey(web3JsSigner.secretKey)\n )\n )\n );\n\n let transaction = fromWeb3JsLegacyTransaction(web3JsTransaction);\n transaction = await signTransaction(transaction, [payer, ...signers]);\n\n const signature = await context.rpc.sendTransaction(transaction, {\n ...sendOptions,\n preflightCommitment: sendOptions.preflightCommitment as Commitment,\n });\n\n return base58.deserialize(signature)[0];\n },\n };\n\n const bPackage = _removeDoubleDefault(await import('@irys/web-upload'));\n const cPackage = _removeDoubleDefault(\n await import('@irys/web-upload-solana')\n );\n\n const irys = await bPackage\n .WebUploader(cPackage.WebSolana)\n .withProvider(wallet)\n .bundlerUrl(address)\n .withIrysConfig(options)\n .build();\n\n try {\n // Try to initiate irys.\n await irys.ready();\n } catch (error) {\n throw new FailedToInitializeIrysError(error as Error);\n }\n\n return irys;\n };\n\n return {\n getUploadPriceFromBytes,\n getUploadPrice,\n upload,\n uploadJson,\n getBalance,\n fund,\n withdrawAll,\n withdraw,\n irys: getIrys,\n };\n}\n\nexport const isIrysUploader = (\n uploader: UploaderInterface\n): uploader is IrysUploader =>\n 'irys' in uploader &&\n 'getBalance' in uploader &&\n 'fund' in uploader &&\n 'withdrawAll' in uploader;\n\nconst bigNumberToAmount = (bigNumber: BigNumber): SolAmount =>\n lamports(bigNumber.decimalPlaces(0).toString());\n\nconst amountToBigNumber = (amount: SolAmount): BigNumber =>\n new BigNumber(amount.basisPoints.toString());\n\nconst getGenericFileTagsWithContentType = (\n file: GenericFile\n): GenericFileTag[] => {\n if (!file.contentType) {\n return file.tags;\n }\n\n return [{ name: 'Content-Type', value: file.contentType }, ...file.tags];\n};\n"],"names":["_removeDoubleDefault","pkg","default","HEADER_SIZE","MINIMUM_SIZE","gatewayUrl","id","createIrysUploader","context","uploaderOptions","_irys","providerUrl","rpc","getEndpoint","getUploadPriceFromBytes","bytes","irys","getIrys","price","getPrice","bigNumberToAmount","multipliedBy","priceMultiplier","getUploadPrice","files","reduce","sum","file","Math","max","buffer","byteLength","upload","options","amount","fund","manifestMap","manifest","Map","undefined","result","PromisePool","for","withConcurrency","uploadConcurrency","onTaskFinished","_","pool","onProgress","processedPercentage","process","signal","aborted","IrysAbortError","Buffer","from","irysTx","createTransaction","tags","getGenericFileTagsWithContentType","sign","status","data","uploader","uploadTransaction","AssetUploadFailedError","set","fileName","generateFolder","items","JSON","stringify","name","value","results","map","uploadJson","json","createGenericFileFromJson","uris","getBalance","balance","skipBalanceCheck","toFund","amountToBigNumber","isGreaterThan","minus","BigNumber","isLessThanOrEqualTo","withdrawAll","minimumBalance","isLessThan","withdraw","withdrawBalance","e","IrysWithdrawError","Error","message","toString","oldPayer","getSigner","publicKey","newPayer","payer","Uint8Array","initIrys","token","defaultAddress","getCluster","address","irysOptions","timeout","isNode","window","hasOwnProperty","isKeypairSigner","initNodeIrys","initWebIrys","utils","getBundlerAddress","error","FailedToConnectToIrysAddressError","keypair","bPackage","cPackage","Uploader","Solana","bundlerUrl","withWallet","secretKey","withIrysConfig","build","wallet","toWeb3JsPublicKey","signMessage","signTransaction","web3JsTransaction","toWeb3JsLegacyTransaction","fromWeb3JsLegacyTransaction","signAllTransactions","web3JsTransactions","transactions","signedTransactions","sendTransaction","connection","signers","web3JsSigners","sendOptions","web3JsSigner","createSignerFromKeypair","fromWeb3JsKeypair","Web3JsKeypair","fromSecretKey","transaction","signature","preflightCommitment","base58","deserialize","WebUploader","WebSolana","withProvider","ready","FailedToInitializeIrysError","isIrysUploader","bigNumber","lamports","decimalPlaces","basisPoints","contentType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createIrysUploader.cjs","sources":["../../src/createIrysUploader.ts"],"sourcesContent":["import type { BaseWebIrys } from '@irys/web-upload/dist/types/base';\nimport type { BaseNodeIrys } from '@irys/upload/dist/types/base';\nimport {\n Commitment,\n Context,\n GenericFile,\n GenericFileTag,\n Keypair,\n Signer,\n SolAmount,\n UploaderInterface,\n UploaderUploadOptions,\n base58,\n createGenericFileFromJson,\n createSignerFromKeypair,\n isKeypairSigner,\n lamports,\n publicKey,\n signTransaction,\n} from '@metaplex-foundation/umi';\nimport {\n fromWeb3JsKeypair,\n fromWeb3JsLegacyTransaction,\n toWeb3JsLegacyTransaction,\n toWeb3JsPublicKey,\n} from '@metaplex-foundation/umi-web3js-adapters';\nimport {\n Connection as Web3JsConnection,\n Keypair as Web3JsKeypair,\n PublicKey as Web3JsPublicKey,\n SendOptions as Web3JsSendOptions,\n Signer as Web3JsSigner,\n Transaction as Web3JsTransaction,\n TransactionSignature as Web3JsTransactionSignature,\n} from '@solana/web3.js';\nimport BigNumber from 'bignumber.js';\nimport { Buffer } from 'buffer';\nimport { PromisePool } from '@supercharge/promise-pool';\nimport {\n AssetUploadFailedError,\n IrysWithdrawError,\n FailedToConnectToIrysAddressError,\n FailedToInitializeIrysError,\n IrysAbortError,\n} from './errors';\n// PromisePool is a dependency the Irys client already requires, so using it here has no extra cost.\n\n/**\n * This method is necessary to import the Irys package on both ESM and CJS modules.\n * Without this, we get a different structure on each module:\n * - CJS: { default: [Getter], WebIrys: [Getter] }\n * - ESM: { default: { default: [Getter], WebIrys: [Getter] } }\n * This method fixes this by ensure there is not double default in the imported package.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction _removeDoubleDefault<T>(pkg: T): T {\n if (\n pkg &&\n typeof pkg === 'object' &&\n 'default' in pkg &&\n 'default' in (pkg as any).default\n ) {\n return (pkg as any).default;\n }\n\n return pkg;\n}\n\nexport type IrysUploader = UploaderInterface & {\n irys: () => Promise<BaseNodeIrys | BaseWebIrys>;\n getUploadPriceFromBytes: (bytes: number) => Promise<SolAmount>;\n getBalance: () => Promise<SolAmount>;\n fund: (amount: SolAmount, skipBalanceCheck: boolean) => Promise<void>;\n withdrawAll: (amount: SolAmount) => Promise<void>;\n withdraw: (amount: SolAmount) => Promise<void>;\n};\n\nexport type IrysUploaderOptions = {\n address?: string;\n timeout?: number;\n providerUrl?: string;\n priceMultiplier?: number;\n payer?: Signer;\n uploadConcurrency?: number;\n};\n\nexport type IrysWalletAdapter = {\n publicKey: Web3JsPublicKey | null;\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>;\n signTransaction?: (\n transaction: Web3JsTransaction\n ) => Promise<Web3JsTransaction>;\n signAllTransactions?: (\n transactions: Web3JsTransaction[]\n ) => Promise<Web3JsTransaction[]>;\n sendTransaction: (\n transaction: Web3JsTransaction,\n connection: Web3JsConnection,\n options?: Web3JsSendOptions & { signers?: Web3JsSigner[] }\n ) => Promise<Web3JsTransactionSignature>;\n};\n\n// Size of Irys transaction header.\nconst HEADER_SIZE = 2_000;\n\n// Minimum file size for cost calculation.\nconst MINIMUM_SIZE = 80_000;\n\nconst gatewayUrl = (id: string) => `https://gateway.irys.xyz/${id}`;\n\nexport function createIrysUploader(\n context: Pick<Context, 'rpc' | 'payer' | 'eddsa'>,\n uploaderOptions: IrysUploaderOptions = {}\n): IrysUploader {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n let _irys: BaseNodeIrys | BaseWebIrys | null = null;\n uploaderOptions = {\n providerUrl: context.rpc.getEndpoint(),\n ...uploaderOptions,\n };\n\n const getUploadPriceFromBytes = async (bytes: number): Promise<SolAmount> => {\n const irys = await getIrys();\n const price = await irys.getPrice(bytes);\n\n return bigNumberToAmount(\n price.multipliedBy(uploaderOptions.priceMultiplier ?? 1.1)\n );\n };\n\n const getUploadPrice = async (files: GenericFile[]): Promise<SolAmount> => {\n const bytes: number = files.reduce(\n (sum, file) =>\n sum + HEADER_SIZE + Math.max(MINIMUM_SIZE, file.buffer.byteLength),\n 0\n );\n\n return getUploadPriceFromBytes(bytes);\n };\n\n const upload = async (\n files: GenericFile[],\n options?: UploaderUploadOptions\n ): Promise<string[]> => {\n const irys = await getIrys();\n const amount = await getUploadPrice(files);\n await fund(amount);\n\n const manifestMap = options?.manifest === true ? new Map() : undefined;\n\n const result = await PromisePool.for(files)\n .withConcurrency(uploaderOptions.uploadConcurrency ?? 10)\n .onTaskFinished((_, pool) =>\n options?.onProgress?.(pool.processedPercentage())\n )\n .process(async (file) => {\n if (options?.signal?.aborted) throw new IrysAbortError();\n\n const buffer = Buffer.from(file.buffer);\n const irysTx = irys.createTransaction(buffer, {\n tags: getGenericFileTagsWithContentType(file),\n });\n await irysTx.sign();\n const {\n status,\n data: { id },\n } = await irys.uploader.uploadTransaction(irysTx);\n\n if (status >= 300) throw new AssetUploadFailedError(status);\n\n manifestMap?.set(file.fileName, id);\n\n return id;\n });\n\n if (manifestMap) {\n const manifest = await irys.uploader.generateFolder({\n items: manifestMap,\n });\n const { id } = await irys.upload(JSON.stringify(manifest), {\n tags: [\n { name: 'Type', value: 'manifest' },\n { name: 'Content-Type', value: 'application/x.irys-manifest+json' },\n // ...(options?.manifestTags ?? []),\n ],\n });\n return [gatewayUrl(id)];\n }\n\n return result.results.map(gatewayUrl);\n };\n\n const uploadJson = async <T>(json: T): Promise<string> => {\n const file = createGenericFileFromJson(json);\n const uris = await upload([file]);\n return uris[0];\n };\n\n const getBalance = async (): Promise<SolAmount> => {\n const irys = await getIrys();\n const balance = await irys.getBalance();\n\n return bigNumberToAmount(balance);\n };\n\n const fund = async (\n amount: SolAmount,\n skipBalanceCheck = false\n ): Promise<void> => {\n const irys = await getIrys();\n let toFund = amountToBigNumber(amount);\n\n if (!skipBalanceCheck) {\n const balance = await irys.getBalance();\n\n toFund = toFund.isGreaterThan(balance)\n ? toFund.minus(balance)\n : new BigNumber(0);\n }\n\n if (toFund.isLessThanOrEqualTo(0)) {\n return;\n }\n\n await irys.fund(toFund);\n };\n\n const withdrawAll = async (): Promise<void> => {\n const irys = await getIrys();\n const balance = await irys.getBalance();\n const minimumBalance = new BigNumber(5000);\n\n if (balance.isLessThan(minimumBalance)) {\n return;\n }\n\n await irys.withdrawAll();\n };\n\n const withdraw = async (amount: SolAmount): Promise<void> => {\n const irys = await getIrys();\n try {\n await irys.withdrawBalance(amountToBigNumber(amount));\n } catch (e: any) {\n throw new IrysWithdrawError(\n e instanceof Error ? e.message : e.toString()\n );\n }\n };\n\n const getIrys = async (): Promise<BaseWebIrys | BaseNodeIrys> => {\n const oldPayer = _irys?.getSigner().publicKey;\n const newPayer = uploaderOptions.payer ?? context.payer;\n if (\n oldPayer &&\n publicKey(new Uint8Array(oldPayer)) !== newPayer.publicKey\n ) {\n _irys = null;\n }\n\n if (!_irys) {\n _irys = await initIrys();\n }\n\n return _irys;\n };\n\n const initIrys = async (): Promise<BaseWebIrys | BaseNodeIrys> => {\n const token = 'solana';\n const defaultAddress =\n context.rpc.getCluster() === 'devnet'\n ? 'https://devnet.irys.xyz'\n : 'https://uploader.irys.xyz';\n const address = uploaderOptions?.address ?? defaultAddress;\n const irysOptions = {\n timeout: uploaderOptions.timeout,\n providerUrl: uploaderOptions.providerUrl,\n };\n\n const payer: Signer = uploaderOptions.payer ?? context.payer;\n\n // If in node use node irys, else use web irys.\n const isNode =\n // eslint-disable-next-line no-prototype-builtins\n typeof window === 'undefined' || window.process?.hasOwnProperty('type');\n\n let irys;\n if (isNode && isKeypairSigner(payer))\n irys = await initNodeIrys(address, payer, irysOptions);\n else {\n irys = await initWebIrys(address, payer, irysOptions);\n }\n\n try {\n // Check for valid irys node.\n await irys.utils.getBundlerAddress(token);\n } catch (error) {\n throw new FailedToConnectToIrysAddressError(address, error as Error);\n }\n\n return irys;\n };\n\n const initNodeIrys = async (\n address: string,\n keypair: Keypair,\n options: any\n ): Promise<BaseNodeIrys> => {\n const bPackage = _removeDoubleDefault(await import('@irys/upload'));\n const cPackage = _removeDoubleDefault(await import('@irys/upload-solana'));\n return bPackage\n .Uploader(cPackage.Solana)\n .bundlerUrl(address)\n .withWallet(keypair.secretKey)\n .withIrysConfig(options)\n .build();\n };\n\n const initWebIrys = async (\n address: string,\n payer: Signer,\n options: any\n ): Promise<BaseWebIrys> => {\n const wallet: IrysWalletAdapter = {\n publicKey: toWeb3JsPublicKey(payer.publicKey),\n signMessage: (message: Uint8Array) => payer.signMessage(message),\n signTransaction: async (web3JsTransaction: Web3JsTransaction) =>\n toWeb3JsLegacyTransaction(\n await payer.signTransaction(\n fromWeb3JsLegacyTransaction(web3JsTransaction)\n )\n ),\n signAllTransactions: async (web3JsTransactions: Web3JsTransaction[]) => {\n const transactions = web3JsTransactions.map(\n fromWeb3JsLegacyTransaction\n );\n const signedTransactions = await payer.signAllTransactions(\n transactions\n );\n return signedTransactions.map(toWeb3JsLegacyTransaction);\n },\n sendTransaction: async (\n web3JsTransaction: Web3JsTransaction,\n connection: Web3JsConnection,\n options: Web3JsSendOptions & { signers?: Web3JsSigner[] } = {}\n ): Promise<Web3JsTransactionSignature> => {\n const { signers: web3JsSigners = [], ...sendOptions } = options;\n const signers = web3JsSigners.map((web3JsSigner) =>\n createSignerFromKeypair(\n context,\n fromWeb3JsKeypair(\n Web3JsKeypair.fromSecretKey(web3JsSigner.secretKey)\n )\n )\n );\n\n let transaction = fromWeb3JsLegacyTransaction(web3JsTransaction);\n transaction = await signTransaction(transaction, [payer, ...signers]);\n\n const signature = await context.rpc.sendTransaction(transaction, {\n ...sendOptions,\n preflightCommitment: sendOptions.preflightCommitment as Commitment,\n });\n\n return base58.deserialize(signature)[0];\n },\n };\n\n const bPackage = _removeDoubleDefault(await import('@irys/web-upload'));\n const cPackage = _removeDoubleDefault(\n await import('@irys/web-upload-solana')\n );\n\n const irys = await bPackage\n .WebUploader(cPackage.WebSolana)\n .withProvider(wallet)\n .bundlerUrl(address)\n .withIrysConfig(options)\n .build();\n\n try {\n // Try to initiate irys.\n await irys.ready();\n } catch (error) {\n throw new FailedToInitializeIrysError(error as Error);\n }\n\n return irys;\n };\n\n return {\n getUploadPriceFromBytes,\n getUploadPrice,\n upload,\n uploadJson,\n getBalance,\n fund,\n withdrawAll,\n withdraw,\n irys: getIrys,\n };\n}\n\nexport const isIrysUploader = (\n uploader: UploaderInterface\n): uploader is IrysUploader =>\n 'irys' in uploader &&\n 'getBalance' in uploader &&\n 'fund' in uploader &&\n 'withdrawAll' in uploader;\n\nconst bigNumberToAmount = (bigNumber: BigNumber): SolAmount =>\n lamports(bigNumber.decimalPlaces(0).toString());\n\nconst amountToBigNumber = (amount: SolAmount): BigNumber =>\n new BigNumber(amount.basisPoints.toString());\n\nconst getGenericFileTagsWithContentType = (\n file: GenericFile\n): GenericFileTag[] => {\n if (!file.contentType) {\n return file.tags;\n }\n\n return [{ name: 'Content-Type', value: file.contentType }, ...file.tags];\n};\n"],"names":["_removeDoubleDefault","pkg","default","HEADER_SIZE","MINIMUM_SIZE","gatewayUrl","id","createIrysUploader","context","uploaderOptions","_irys","providerUrl","rpc","getEndpoint","getUploadPriceFromBytes","bytes","irys","getIrys","price","getPrice","bigNumberToAmount","multipliedBy","priceMultiplier","getUploadPrice","files","reduce","sum","file","Math","max","buffer","byteLength","upload","options","amount","fund","manifestMap","manifest","Map","undefined","result","PromisePool","for","withConcurrency","uploadConcurrency","onTaskFinished","_","pool","onProgress","processedPercentage","process","signal","aborted","IrysAbortError","Buffer","from","irysTx","createTransaction","tags","getGenericFileTagsWithContentType","sign","status","data","uploader","uploadTransaction","AssetUploadFailedError","set","fileName","generateFolder","items","JSON","stringify","name","value","results","map","uploadJson","json","createGenericFileFromJson","uris","getBalance","balance","skipBalanceCheck","toFund","amountToBigNumber","isGreaterThan","minus","BigNumber","isLessThanOrEqualTo","withdrawAll","minimumBalance","isLessThan","withdraw","withdrawBalance","e","IrysWithdrawError","Error","message","toString","oldPayer","getSigner","publicKey","newPayer","payer","Uint8Array","initIrys","token","defaultAddress","getCluster","address","irysOptions","timeout","isNode","window","hasOwnProperty","isKeypairSigner","initNodeIrys","initWebIrys","utils","getBundlerAddress","error","FailedToConnectToIrysAddressError","keypair","bPackage","cPackage","Uploader","Solana","bundlerUrl","withWallet","secretKey","withIrysConfig","build","wallet","toWeb3JsPublicKey","signMessage","signTransaction","web3JsTransaction","toWeb3JsLegacyTransaction","fromWeb3JsLegacyTransaction","signAllTransactions","web3JsTransactions","transactions","signedTransactions","sendTransaction","connection","signers","web3JsSigners","sendOptions","web3JsSigner","createSignerFromKeypair","fromWeb3JsKeypair","Web3JsKeypair","fromSecretKey","transaction","signature","preflightCommitment","base58","deserialize","WebUploader","WebSolana","withProvider","ready","FailedToInitializeIrysError","isIrysUploader","bigNumber","lamports","decimalPlaces","basisPoints","contentType"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { toWeb3JsPublicKey, toWeb3JsLegacyTransaction, fromWeb3JsLegacyTransacti
|
|
|
3
3
|
import { Keypair } from '@solana/web3.js';
|
|
4
4
|
import BigNumber from 'bignumber.js';
|
|
5
5
|
import { Buffer } from 'buffer';
|
|
6
|
-
import PromisePool from '@supercharge/promise-pool';
|
|
6
|
+
import { PromisePool } from '@supercharge/promise-pool';
|
|
7
7
|
import { IrysAbortError, AssetUploadFailedError, IrysWithdrawError, FailedToConnectToIrysAddressError, FailedToInitializeIrysError } from './errors.mjs';
|
|
8
8
|
|
|
9
9
|
// PromisePool is a dependency the Irys client already requires, so using it here has no extra cost.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createIrysUploader.mjs","sources":["../../src/createIrysUploader.ts"],"sourcesContent":["import type { BaseWebIrys } from '@irys/web-upload/dist/types/base';\nimport type { BaseNodeIrys } from '@irys/upload/dist/types/base';\nimport {\n Commitment,\n Context,\n GenericFile,\n GenericFileTag,\n Keypair,\n Signer,\n SolAmount,\n UploaderInterface,\n UploaderUploadOptions,\n base58,\n createGenericFileFromJson,\n createSignerFromKeypair,\n isKeypairSigner,\n lamports,\n publicKey,\n signTransaction,\n} from '@metaplex-foundation/umi';\nimport {\n fromWeb3JsKeypair,\n fromWeb3JsLegacyTransaction,\n toWeb3JsLegacyTransaction,\n toWeb3JsPublicKey,\n} from '@metaplex-foundation/umi-web3js-adapters';\nimport {\n Connection as Web3JsConnection,\n Keypair as Web3JsKeypair,\n PublicKey as Web3JsPublicKey,\n SendOptions as Web3JsSendOptions,\n Signer as Web3JsSigner,\n Transaction as Web3JsTransaction,\n TransactionSignature as Web3JsTransactionSignature,\n} from '@solana/web3.js';\nimport BigNumber from 'bignumber.js';\nimport { Buffer } from 'buffer';\nimport PromisePool from '@supercharge/promise-pool';\nimport {\n AssetUploadFailedError,\n IrysWithdrawError,\n FailedToConnectToIrysAddressError,\n FailedToInitializeIrysError,\n IrysAbortError,\n} from './errors';\n// PromisePool is a dependency the Irys client already requires, so using it here has no extra cost.\n\n/**\n * This method is necessary to import the Irys package on both ESM and CJS modules.\n * Without this, we get a different structure on each module:\n * - CJS: { default: [Getter], WebIrys: [Getter] }\n * - ESM: { default: { default: [Getter], WebIrys: [Getter] } }\n * This method fixes this by ensure there is not double default in the imported package.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction _removeDoubleDefault<T>(pkg: T): T {\n if (\n pkg &&\n typeof pkg === 'object' &&\n 'default' in pkg &&\n 'default' in (pkg as any).default\n ) {\n return (pkg as any).default;\n }\n\n return pkg;\n}\n\nexport type IrysUploader = UploaderInterface & {\n irys: () => Promise<BaseNodeIrys | BaseWebIrys>;\n getUploadPriceFromBytes: (bytes: number) => Promise<SolAmount>;\n getBalance: () => Promise<SolAmount>;\n fund: (amount: SolAmount, skipBalanceCheck: boolean) => Promise<void>;\n withdrawAll: (amount: SolAmount) => Promise<void>;\n withdraw: (amount: SolAmount) => Promise<void>;\n};\n\nexport type IrysUploaderOptions = {\n address?: string;\n timeout?: number;\n providerUrl?: string;\n priceMultiplier?: number;\n payer?: Signer;\n uploadConcurrency?: number;\n};\n\nexport type IrysWalletAdapter = {\n publicKey: Web3JsPublicKey | null;\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>;\n signTransaction?: (\n transaction: Web3JsTransaction\n ) => Promise<Web3JsTransaction>;\n signAllTransactions?: (\n transactions: Web3JsTransaction[]\n ) => Promise<Web3JsTransaction[]>;\n sendTransaction: (\n transaction: Web3JsTransaction,\n connection: Web3JsConnection,\n options?: Web3JsSendOptions & { signers?: Web3JsSigner[] }\n ) => Promise<Web3JsTransactionSignature>;\n};\n\n// Size of Irys transaction header.\nconst HEADER_SIZE = 2_000;\n\n// Minimum file size for cost calculation.\nconst MINIMUM_SIZE = 80_000;\n\nconst gatewayUrl = (id: string) => `https://gateway.irys.xyz/${id}`;\n\nexport function createIrysUploader(\n context: Pick<Context, 'rpc' | 'payer' | 'eddsa'>,\n uploaderOptions: IrysUploaderOptions = {}\n): IrysUploader {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n let _irys: BaseNodeIrys | BaseWebIrys | null = null;\n uploaderOptions = {\n providerUrl: context.rpc.getEndpoint(),\n ...uploaderOptions,\n };\n\n const getUploadPriceFromBytes = async (bytes: number): Promise<SolAmount> => {\n const irys = await getIrys();\n const price = await irys.getPrice(bytes);\n\n return bigNumberToAmount(\n price.multipliedBy(uploaderOptions.priceMultiplier ?? 1.1)\n );\n };\n\n const getUploadPrice = async (files: GenericFile[]): Promise<SolAmount> => {\n const bytes: number = files.reduce(\n (sum, file) =>\n sum + HEADER_SIZE + Math.max(MINIMUM_SIZE, file.buffer.byteLength),\n 0\n );\n\n return getUploadPriceFromBytes(bytes);\n };\n\n const upload = async (\n files: GenericFile[],\n options?: UploaderUploadOptions\n ): Promise<string[]> => {\n const irys = await getIrys();\n const amount = await getUploadPrice(files);\n await fund(amount);\n\n const manifestMap = options?.manifest === true ? new Map() : undefined;\n\n const result = await PromisePool.for(files)\n .withConcurrency(uploaderOptions.uploadConcurrency ?? 10)\n .onTaskFinished((_, pool) =>\n options?.onProgress?.(pool.processedPercentage())\n )\n .process(async (file) => {\n if (options?.signal?.aborted) throw new IrysAbortError();\n\n const buffer = Buffer.from(file.buffer);\n const irysTx = irys.createTransaction(buffer, {\n tags: getGenericFileTagsWithContentType(file),\n });\n await irysTx.sign();\n const {\n status,\n data: { id },\n } = await irys.uploader.uploadTransaction(irysTx);\n\n if (status >= 300) throw new AssetUploadFailedError(status);\n\n manifestMap?.set(file.fileName, id);\n\n return id;\n });\n\n if (manifestMap) {\n const manifest = await irys.uploader.generateFolder({\n items: manifestMap,\n });\n const { id } = await irys.upload(JSON.stringify(manifest), {\n tags: [\n { name: 'Type', value: 'manifest' },\n { name: 'Content-Type', value: 'application/x.irys-manifest+json' },\n // ...(options?.manifestTags ?? []),\n ],\n });\n return [gatewayUrl(id)];\n }\n\n return result.results.map(gatewayUrl);\n };\n\n const uploadJson = async <T>(json: T): Promise<string> => {\n const file = createGenericFileFromJson(json);\n const uris = await upload([file]);\n return uris[0];\n };\n\n const getBalance = async (): Promise<SolAmount> => {\n const irys = await getIrys();\n const balance = await irys.getBalance();\n\n return bigNumberToAmount(balance);\n };\n\n const fund = async (\n amount: SolAmount,\n skipBalanceCheck = false\n ): Promise<void> => {\n const irys = await getIrys();\n let toFund = amountToBigNumber(amount);\n\n if (!skipBalanceCheck) {\n const balance = await irys.getBalance();\n\n toFund = toFund.isGreaterThan(balance)\n ? toFund.minus(balance)\n : new BigNumber(0);\n }\n\n if (toFund.isLessThanOrEqualTo(0)) {\n return;\n }\n\n await irys.fund(toFund);\n };\n\n const withdrawAll = async (): Promise<void> => {\n const irys = await getIrys();\n const balance = await irys.getBalance();\n const minimumBalance = new BigNumber(5000);\n\n if (balance.isLessThan(minimumBalance)) {\n return;\n }\n\n await irys.withdrawAll();\n };\n\n const withdraw = async (amount: SolAmount): Promise<void> => {\n const irys = await getIrys();\n try {\n await irys.withdrawBalance(amountToBigNumber(amount));\n } catch (e: any) {\n throw new IrysWithdrawError(\n e instanceof Error ? e.message : e.toString()\n );\n }\n };\n\n const getIrys = async (): Promise<BaseWebIrys | BaseNodeIrys> => {\n const oldPayer = _irys?.getSigner().publicKey;\n const newPayer = uploaderOptions.payer ?? context.payer;\n if (\n oldPayer &&\n publicKey(new Uint8Array(oldPayer)) !== newPayer.publicKey\n ) {\n _irys = null;\n }\n\n if (!_irys) {\n _irys = await initIrys();\n }\n\n return _irys;\n };\n\n const initIrys = async (): Promise<BaseWebIrys | BaseNodeIrys> => {\n const token = 'solana';\n const defaultAddress =\n context.rpc.getCluster() === 'devnet'\n ? 'https://devnet.irys.xyz'\n : 'https://uploader.irys.xyz';\n const address = uploaderOptions?.address ?? defaultAddress;\n const irysOptions = {\n timeout: uploaderOptions.timeout,\n providerUrl: uploaderOptions.providerUrl,\n };\n\n const payer: Signer = uploaderOptions.payer ?? context.payer;\n\n // If in node use node irys, else use web irys.\n const isNode =\n // eslint-disable-next-line no-prototype-builtins\n typeof window === 'undefined' || window.process?.hasOwnProperty('type');\n\n let irys;\n if (isNode && isKeypairSigner(payer))\n irys = await initNodeIrys(address, payer, irysOptions);\n else {\n irys = await initWebIrys(address, payer, irysOptions);\n }\n\n try {\n // Check for valid irys node.\n await irys.utils.getBundlerAddress(token);\n } catch (error) {\n throw new FailedToConnectToIrysAddressError(address, error as Error);\n }\n\n return irys;\n };\n\n const initNodeIrys = async (\n address: string,\n keypair: Keypair,\n options: any\n ): Promise<BaseNodeIrys> => {\n const bPackage = _removeDoubleDefault(await import('@irys/upload'));\n const cPackage = _removeDoubleDefault(await import('@irys/upload-solana'));\n return bPackage\n .Uploader(cPackage.Solana)\n .bundlerUrl(address)\n .withWallet(keypair.secretKey)\n .withIrysConfig(options)\n .build();\n };\n\n const initWebIrys = async (\n address: string,\n payer: Signer,\n options: any\n ): Promise<BaseWebIrys> => {\n const wallet: IrysWalletAdapter = {\n publicKey: toWeb3JsPublicKey(payer.publicKey),\n signMessage: (message: Uint8Array) => payer.signMessage(message),\n signTransaction: async (web3JsTransaction: Web3JsTransaction) =>\n toWeb3JsLegacyTransaction(\n await payer.signTransaction(\n fromWeb3JsLegacyTransaction(web3JsTransaction)\n )\n ),\n signAllTransactions: async (web3JsTransactions: Web3JsTransaction[]) => {\n const transactions = web3JsTransactions.map(\n fromWeb3JsLegacyTransaction\n );\n const signedTransactions = await payer.signAllTransactions(\n transactions\n );\n return signedTransactions.map(toWeb3JsLegacyTransaction);\n },\n sendTransaction: async (\n web3JsTransaction: Web3JsTransaction,\n connection: Web3JsConnection,\n options: Web3JsSendOptions & { signers?: Web3JsSigner[] } = {}\n ): Promise<Web3JsTransactionSignature> => {\n const { signers: web3JsSigners = [], ...sendOptions } = options;\n const signers = web3JsSigners.map((web3JsSigner) =>\n createSignerFromKeypair(\n context,\n fromWeb3JsKeypair(\n Web3JsKeypair.fromSecretKey(web3JsSigner.secretKey)\n )\n )\n );\n\n let transaction = fromWeb3JsLegacyTransaction(web3JsTransaction);\n transaction = await signTransaction(transaction, [payer, ...signers]);\n\n const signature = await context.rpc.sendTransaction(transaction, {\n ...sendOptions,\n preflightCommitment: sendOptions.preflightCommitment as Commitment,\n });\n\n return base58.deserialize(signature)[0];\n },\n };\n\n const bPackage = _removeDoubleDefault(await import('@irys/web-upload'));\n const cPackage = _removeDoubleDefault(\n await import('@irys/web-upload-solana')\n );\n\n const irys = await bPackage\n .WebUploader(cPackage.WebSolana)\n .withProvider(wallet)\n .bundlerUrl(address)\n .withIrysConfig(options)\n .build();\n\n try {\n // Try to initiate irys.\n await irys.ready();\n } catch (error) {\n throw new FailedToInitializeIrysError(error as Error);\n }\n\n return irys;\n };\n\n return {\n getUploadPriceFromBytes,\n getUploadPrice,\n upload,\n uploadJson,\n getBalance,\n fund,\n withdrawAll,\n withdraw,\n irys: getIrys,\n };\n}\n\nexport const isIrysUploader = (\n uploader: UploaderInterface\n): uploader is IrysUploader =>\n 'irys' in uploader &&\n 'getBalance' in uploader &&\n 'fund' in uploader &&\n 'withdrawAll' in uploader;\n\nconst bigNumberToAmount = (bigNumber: BigNumber): SolAmount =>\n lamports(bigNumber.decimalPlaces(0).toString());\n\nconst amountToBigNumber = (amount: SolAmount): BigNumber =>\n new BigNumber(amount.basisPoints.toString());\n\nconst getGenericFileTagsWithContentType = (\n file: GenericFile\n): GenericFileTag[] => {\n if (!file.contentType) {\n return file.tags;\n }\n\n return [{ name: 'Content-Type', value: file.contentType }, ...file.tags];\n};\n"],"names":["_removeDoubleDefault","pkg","default","HEADER_SIZE","MINIMUM_SIZE","gatewayUrl","id","createIrysUploader","context","uploaderOptions","_irys","providerUrl","rpc","getEndpoint","getUploadPriceFromBytes","bytes","irys","getIrys","price","getPrice","bigNumberToAmount","multipliedBy","priceMultiplier","getUploadPrice","files","reduce","sum","file","Math","max","buffer","byteLength","upload","options","amount","fund","manifestMap","manifest","Map","undefined","result","PromisePool","for","withConcurrency","uploadConcurrency","onTaskFinished","_","pool","onProgress","processedPercentage","process","signal","aborted","IrysAbortError","Buffer","from","irysTx","createTransaction","tags","getGenericFileTagsWithContentType","sign","status","data","uploader","uploadTransaction","AssetUploadFailedError","set","fileName","generateFolder","items","JSON","stringify","name","value","results","map","uploadJson","json","createGenericFileFromJson","uris","getBalance","balance","skipBalanceCheck","toFund","amountToBigNumber","isGreaterThan","minus","BigNumber","isLessThanOrEqualTo","withdrawAll","minimumBalance","isLessThan","withdraw","withdrawBalance","e","IrysWithdrawError","Error","message","toString","oldPayer","getSigner","publicKey","newPayer","payer","Uint8Array","initIrys","token","defaultAddress","getCluster","address","irysOptions","timeout","isNode","window","hasOwnProperty","isKeypairSigner","initNodeIrys","initWebIrys","utils","getBundlerAddress","error","FailedToConnectToIrysAddressError","keypair","bPackage","cPackage","Uploader","Solana","bundlerUrl","withWallet","secretKey","withIrysConfig","build","wallet","toWeb3JsPublicKey","signMessage","signTransaction","web3JsTransaction","toWeb3JsLegacyTransaction","fromWeb3JsLegacyTransaction","signAllTransactions","web3JsTransactions","transactions","signedTransactions","sendTransaction","connection","signers","web3JsSigners","sendOptions","web3JsSigner","createSignerFromKeypair","fromWeb3JsKeypair","Web3JsKeypair","fromSecretKey","transaction","signature","preflightCommitment","base58","deserialize","WebUploader","WebSolana","withProvider","ready","FailedToInitializeIrysError","isIrysUploader","bigNumber","lamports","decimalPlaces","basisPoints","contentType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createIrysUploader.mjs","sources":["../../src/createIrysUploader.ts"],"sourcesContent":["import type { BaseWebIrys } from '@irys/web-upload/dist/types/base';\nimport type { BaseNodeIrys } from '@irys/upload/dist/types/base';\nimport {\n Commitment,\n Context,\n GenericFile,\n GenericFileTag,\n Keypair,\n Signer,\n SolAmount,\n UploaderInterface,\n UploaderUploadOptions,\n base58,\n createGenericFileFromJson,\n createSignerFromKeypair,\n isKeypairSigner,\n lamports,\n publicKey,\n signTransaction,\n} from '@metaplex-foundation/umi';\nimport {\n fromWeb3JsKeypair,\n fromWeb3JsLegacyTransaction,\n toWeb3JsLegacyTransaction,\n toWeb3JsPublicKey,\n} from '@metaplex-foundation/umi-web3js-adapters';\nimport {\n Connection as Web3JsConnection,\n Keypair as Web3JsKeypair,\n PublicKey as Web3JsPublicKey,\n SendOptions as Web3JsSendOptions,\n Signer as Web3JsSigner,\n Transaction as Web3JsTransaction,\n TransactionSignature as Web3JsTransactionSignature,\n} from '@solana/web3.js';\nimport BigNumber from 'bignumber.js';\nimport { Buffer } from 'buffer';\nimport { PromisePool } from '@supercharge/promise-pool';\nimport {\n AssetUploadFailedError,\n IrysWithdrawError,\n FailedToConnectToIrysAddressError,\n FailedToInitializeIrysError,\n IrysAbortError,\n} from './errors';\n// PromisePool is a dependency the Irys client already requires, so using it here has no extra cost.\n\n/**\n * This method is necessary to import the Irys package on both ESM and CJS modules.\n * Without this, we get a different structure on each module:\n * - CJS: { default: [Getter], WebIrys: [Getter] }\n * - ESM: { default: { default: [Getter], WebIrys: [Getter] } }\n * This method fixes this by ensure there is not double default in the imported package.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction _removeDoubleDefault<T>(pkg: T): T {\n if (\n pkg &&\n typeof pkg === 'object' &&\n 'default' in pkg &&\n 'default' in (pkg as any).default\n ) {\n return (pkg as any).default;\n }\n\n return pkg;\n}\n\nexport type IrysUploader = UploaderInterface & {\n irys: () => Promise<BaseNodeIrys | BaseWebIrys>;\n getUploadPriceFromBytes: (bytes: number) => Promise<SolAmount>;\n getBalance: () => Promise<SolAmount>;\n fund: (amount: SolAmount, skipBalanceCheck: boolean) => Promise<void>;\n withdrawAll: (amount: SolAmount) => Promise<void>;\n withdraw: (amount: SolAmount) => Promise<void>;\n};\n\nexport type IrysUploaderOptions = {\n address?: string;\n timeout?: number;\n providerUrl?: string;\n priceMultiplier?: number;\n payer?: Signer;\n uploadConcurrency?: number;\n};\n\nexport type IrysWalletAdapter = {\n publicKey: Web3JsPublicKey | null;\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>;\n signTransaction?: (\n transaction: Web3JsTransaction\n ) => Promise<Web3JsTransaction>;\n signAllTransactions?: (\n transactions: Web3JsTransaction[]\n ) => Promise<Web3JsTransaction[]>;\n sendTransaction: (\n transaction: Web3JsTransaction,\n connection: Web3JsConnection,\n options?: Web3JsSendOptions & { signers?: Web3JsSigner[] }\n ) => Promise<Web3JsTransactionSignature>;\n};\n\n// Size of Irys transaction header.\nconst HEADER_SIZE = 2_000;\n\n// Minimum file size for cost calculation.\nconst MINIMUM_SIZE = 80_000;\n\nconst gatewayUrl = (id: string) => `https://gateway.irys.xyz/${id}`;\n\nexport function createIrysUploader(\n context: Pick<Context, 'rpc' | 'payer' | 'eddsa'>,\n uploaderOptions: IrysUploaderOptions = {}\n): IrysUploader {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n let _irys: BaseNodeIrys | BaseWebIrys | null = null;\n uploaderOptions = {\n providerUrl: context.rpc.getEndpoint(),\n ...uploaderOptions,\n };\n\n const getUploadPriceFromBytes = async (bytes: number): Promise<SolAmount> => {\n const irys = await getIrys();\n const price = await irys.getPrice(bytes);\n\n return bigNumberToAmount(\n price.multipliedBy(uploaderOptions.priceMultiplier ?? 1.1)\n );\n };\n\n const getUploadPrice = async (files: GenericFile[]): Promise<SolAmount> => {\n const bytes: number = files.reduce(\n (sum, file) =>\n sum + HEADER_SIZE + Math.max(MINIMUM_SIZE, file.buffer.byteLength),\n 0\n );\n\n return getUploadPriceFromBytes(bytes);\n };\n\n const upload = async (\n files: GenericFile[],\n options?: UploaderUploadOptions\n ): Promise<string[]> => {\n const irys = await getIrys();\n const amount = await getUploadPrice(files);\n await fund(amount);\n\n const manifestMap = options?.manifest === true ? new Map() : undefined;\n\n const result = await PromisePool.for(files)\n .withConcurrency(uploaderOptions.uploadConcurrency ?? 10)\n .onTaskFinished((_, pool) =>\n options?.onProgress?.(pool.processedPercentage())\n )\n .process(async (file) => {\n if (options?.signal?.aborted) throw new IrysAbortError();\n\n const buffer = Buffer.from(file.buffer);\n const irysTx = irys.createTransaction(buffer, {\n tags: getGenericFileTagsWithContentType(file),\n });\n await irysTx.sign();\n const {\n status,\n data: { id },\n } = await irys.uploader.uploadTransaction(irysTx);\n\n if (status >= 300) throw new AssetUploadFailedError(status);\n\n manifestMap?.set(file.fileName, id);\n\n return id;\n });\n\n if (manifestMap) {\n const manifest = await irys.uploader.generateFolder({\n items: manifestMap,\n });\n const { id } = await irys.upload(JSON.stringify(manifest), {\n tags: [\n { name: 'Type', value: 'manifest' },\n { name: 'Content-Type', value: 'application/x.irys-manifest+json' },\n // ...(options?.manifestTags ?? []),\n ],\n });\n return [gatewayUrl(id)];\n }\n\n return result.results.map(gatewayUrl);\n };\n\n const uploadJson = async <T>(json: T): Promise<string> => {\n const file = createGenericFileFromJson(json);\n const uris = await upload([file]);\n return uris[0];\n };\n\n const getBalance = async (): Promise<SolAmount> => {\n const irys = await getIrys();\n const balance = await irys.getBalance();\n\n return bigNumberToAmount(balance);\n };\n\n const fund = async (\n amount: SolAmount,\n skipBalanceCheck = false\n ): Promise<void> => {\n const irys = await getIrys();\n let toFund = amountToBigNumber(amount);\n\n if (!skipBalanceCheck) {\n const balance = await irys.getBalance();\n\n toFund = toFund.isGreaterThan(balance)\n ? toFund.minus(balance)\n : new BigNumber(0);\n }\n\n if (toFund.isLessThanOrEqualTo(0)) {\n return;\n }\n\n await irys.fund(toFund);\n };\n\n const withdrawAll = async (): Promise<void> => {\n const irys = await getIrys();\n const balance = await irys.getBalance();\n const minimumBalance = new BigNumber(5000);\n\n if (balance.isLessThan(minimumBalance)) {\n return;\n }\n\n await irys.withdrawAll();\n };\n\n const withdraw = async (amount: SolAmount): Promise<void> => {\n const irys = await getIrys();\n try {\n await irys.withdrawBalance(amountToBigNumber(amount));\n } catch (e: any) {\n throw new IrysWithdrawError(\n e instanceof Error ? e.message : e.toString()\n );\n }\n };\n\n const getIrys = async (): Promise<BaseWebIrys | BaseNodeIrys> => {\n const oldPayer = _irys?.getSigner().publicKey;\n const newPayer = uploaderOptions.payer ?? context.payer;\n if (\n oldPayer &&\n publicKey(new Uint8Array(oldPayer)) !== newPayer.publicKey\n ) {\n _irys = null;\n }\n\n if (!_irys) {\n _irys = await initIrys();\n }\n\n return _irys;\n };\n\n const initIrys = async (): Promise<BaseWebIrys | BaseNodeIrys> => {\n const token = 'solana';\n const defaultAddress =\n context.rpc.getCluster() === 'devnet'\n ? 'https://devnet.irys.xyz'\n : 'https://uploader.irys.xyz';\n const address = uploaderOptions?.address ?? defaultAddress;\n const irysOptions = {\n timeout: uploaderOptions.timeout,\n providerUrl: uploaderOptions.providerUrl,\n };\n\n const payer: Signer = uploaderOptions.payer ?? context.payer;\n\n // If in node use node irys, else use web irys.\n const isNode =\n // eslint-disable-next-line no-prototype-builtins\n typeof window === 'undefined' || window.process?.hasOwnProperty('type');\n\n let irys;\n if (isNode && isKeypairSigner(payer))\n irys = await initNodeIrys(address, payer, irysOptions);\n else {\n irys = await initWebIrys(address, payer, irysOptions);\n }\n\n try {\n // Check for valid irys node.\n await irys.utils.getBundlerAddress(token);\n } catch (error) {\n throw new FailedToConnectToIrysAddressError(address, error as Error);\n }\n\n return irys;\n };\n\n const initNodeIrys = async (\n address: string,\n keypair: Keypair,\n options: any\n ): Promise<BaseNodeIrys> => {\n const bPackage = _removeDoubleDefault(await import('@irys/upload'));\n const cPackage = _removeDoubleDefault(await import('@irys/upload-solana'));\n return bPackage\n .Uploader(cPackage.Solana)\n .bundlerUrl(address)\n .withWallet(keypair.secretKey)\n .withIrysConfig(options)\n .build();\n };\n\n const initWebIrys = async (\n address: string,\n payer: Signer,\n options: any\n ): Promise<BaseWebIrys> => {\n const wallet: IrysWalletAdapter = {\n publicKey: toWeb3JsPublicKey(payer.publicKey),\n signMessage: (message: Uint8Array) => payer.signMessage(message),\n signTransaction: async (web3JsTransaction: Web3JsTransaction) =>\n toWeb3JsLegacyTransaction(\n await payer.signTransaction(\n fromWeb3JsLegacyTransaction(web3JsTransaction)\n )\n ),\n signAllTransactions: async (web3JsTransactions: Web3JsTransaction[]) => {\n const transactions = web3JsTransactions.map(\n fromWeb3JsLegacyTransaction\n );\n const signedTransactions = await payer.signAllTransactions(\n transactions\n );\n return signedTransactions.map(toWeb3JsLegacyTransaction);\n },\n sendTransaction: async (\n web3JsTransaction: Web3JsTransaction,\n connection: Web3JsConnection,\n options: Web3JsSendOptions & { signers?: Web3JsSigner[] } = {}\n ): Promise<Web3JsTransactionSignature> => {\n const { signers: web3JsSigners = [], ...sendOptions } = options;\n const signers = web3JsSigners.map((web3JsSigner) =>\n createSignerFromKeypair(\n context,\n fromWeb3JsKeypair(\n Web3JsKeypair.fromSecretKey(web3JsSigner.secretKey)\n )\n )\n );\n\n let transaction = fromWeb3JsLegacyTransaction(web3JsTransaction);\n transaction = await signTransaction(transaction, [payer, ...signers]);\n\n const signature = await context.rpc.sendTransaction(transaction, {\n ...sendOptions,\n preflightCommitment: sendOptions.preflightCommitment as Commitment,\n });\n\n return base58.deserialize(signature)[0];\n },\n };\n\n const bPackage = _removeDoubleDefault(await import('@irys/web-upload'));\n const cPackage = _removeDoubleDefault(\n await import('@irys/web-upload-solana')\n );\n\n const irys = await bPackage\n .WebUploader(cPackage.WebSolana)\n .withProvider(wallet)\n .bundlerUrl(address)\n .withIrysConfig(options)\n .build();\n\n try {\n // Try to initiate irys.\n await irys.ready();\n } catch (error) {\n throw new FailedToInitializeIrysError(error as Error);\n }\n\n return irys;\n };\n\n return {\n getUploadPriceFromBytes,\n getUploadPrice,\n upload,\n uploadJson,\n getBalance,\n fund,\n withdrawAll,\n withdraw,\n irys: getIrys,\n };\n}\n\nexport const isIrysUploader = (\n uploader: UploaderInterface\n): uploader is IrysUploader =>\n 'irys' in uploader &&\n 'getBalance' in uploader &&\n 'fund' in uploader &&\n 'withdrawAll' in uploader;\n\nconst bigNumberToAmount = (bigNumber: BigNumber): SolAmount =>\n lamports(bigNumber.decimalPlaces(0).toString());\n\nconst amountToBigNumber = (amount: SolAmount): BigNumber =>\n new BigNumber(amount.basisPoints.toString());\n\nconst getGenericFileTagsWithContentType = (\n file: GenericFile\n): GenericFileTag[] => {\n if (!file.contentType) {\n return file.tags;\n }\n\n return [{ name: 'Content-Type', value: file.contentType }, ...file.tags];\n};\n"],"names":["_removeDoubleDefault","pkg","default","HEADER_SIZE","MINIMUM_SIZE","gatewayUrl","id","createIrysUploader","context","uploaderOptions","_irys","providerUrl","rpc","getEndpoint","getUploadPriceFromBytes","bytes","irys","getIrys","price","getPrice","bigNumberToAmount","multipliedBy","priceMultiplier","getUploadPrice","files","reduce","sum","file","Math","max","buffer","byteLength","upload","options","amount","fund","manifestMap","manifest","Map","undefined","result","PromisePool","for","withConcurrency","uploadConcurrency","onTaskFinished","_","pool","onProgress","processedPercentage","process","signal","aborted","IrysAbortError","Buffer","from","irysTx","createTransaction","tags","getGenericFileTagsWithContentType","sign","status","data","uploader","uploadTransaction","AssetUploadFailedError","set","fileName","generateFolder","items","JSON","stringify","name","value","results","map","uploadJson","json","createGenericFileFromJson","uris","getBalance","balance","skipBalanceCheck","toFund","amountToBigNumber","isGreaterThan","minus","BigNumber","isLessThanOrEqualTo","withdrawAll","minimumBalance","isLessThan","withdraw","withdrawBalance","e","IrysWithdrawError","Error","message","toString","oldPayer","getSigner","publicKey","newPayer","payer","Uint8Array","initIrys","token","defaultAddress","getCluster","address","irysOptions","timeout","isNode","window","hasOwnProperty","isKeypairSigner","initNodeIrys","initWebIrys","utils","getBundlerAddress","error","FailedToConnectToIrysAddressError","keypair","bPackage","cPackage","Uploader","Solana","bundlerUrl","withWallet","secretKey","withIrysConfig","build","wallet","toWeb3JsPublicKey","signMessage","signTransaction","web3JsTransaction","toWeb3JsLegacyTransaction","fromWeb3JsLegacyTransaction","signAllTransactions","web3JsTransactions","transactions","signedTransactions","sendTransaction","connection","signers","web3JsSigners","sendOptions","web3JsSigner","createSignerFromKeypair","fromWeb3JsKeypair","Web3JsKeypair","fromSecretKey","transaction","signature","preflightCommitment","base58","deserialize","WebUploader","WebSolana","withProvider","ready","FailedToInitializeIrysError","isIrysUploader","bigNumber","lamports","decimalPlaces","basisPoints","contentType"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metaplex-foundation/umi-uploader-irys",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "An uploader implementation relying on Irys",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -39,10 +39,10 @@
|
|
|
39
39
|
"@solana/web3.js": "^1.72.0",
|
|
40
40
|
"ava": "^5.1.0",
|
|
41
41
|
"@metaplex-foundation/umi-eddsa-web3js": "^1.0.0",
|
|
42
|
-
"@metaplex-foundation/umi-
|
|
43
|
-
"@metaplex-foundation/umi-rpc-web3js": "^1.0.0",
|
|
42
|
+
"@metaplex-foundation/umi-http-fetch": "^1.0.0",
|
|
44
43
|
"@metaplex-foundation/umi": "^1.0.0",
|
|
45
|
-
"@metaplex-foundation/umi-http
|
|
44
|
+
"@metaplex-foundation/umi-downloader-http": "^1.0.0",
|
|
45
|
+
"@metaplex-foundation/umi-rpc-web3js": "^1.0.0"
|
|
46
46
|
},
|
|
47
47
|
"publishConfig": {
|
|
48
48
|
"access": "public"
|
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
} from '@solana/web3.js';
|
|
36
36
|
import BigNumber from 'bignumber.js';
|
|
37
37
|
import { Buffer } from 'buffer';
|
|
38
|
-
import PromisePool from '@supercharge/promise-pool';
|
|
38
|
+
import { PromisePool } from '@supercharge/promise-pool';
|
|
39
39
|
import {
|
|
40
40
|
AssetUploadFailedError,
|
|
41
41
|
IrysWithdrawError,
|