permaweb-deploy 3.4.4 → 3.4.6

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"upload-workflow-DMKlwZve.js","sources":["../../node_modules/.pnpm/hyperbalance@https+++codeload.github.com+xylophonez+hyperbalance+tar.gz+dcb009349368197c88586e4eba784bb5290203cb/node_modules/hyperbalance/dist/errors.js","../../node_modules/.pnpm/hyperbalance@https+++codeload.github.com+xylophonez+hyperbalance+tar.gz+dcb009349368197c88586e4eba784bb5290203cb/node_modules/hyperbalance/dist/discovery.js","../../node_modules/.pnpm/hyperbalance@https+++codeload.github.com+xylophonez+hyperbalance+tar.gz+dcb009349368197c88586e4eba784bb5290203cb/node_modules/hyperbalance/dist/lookup.js","../../node_modules/.pnpm/hyperbalance@https+++codeload.github.com+xylophonez+hyperbalance+tar.gz+dcb009349368197c88586e4eba784bb5290203cb/node_modules/hyperbalance/dist/parse.js","../../node_modules/.pnpm/hyperbalance@https+++codeload.github.com+xylophonez+hyperbalance+tar.gz+dcb009349368197c88586e4eba784bb5290203cb/node_modules/hyperbalance/dist/templates.js","../../node_modules/.pnpm/hyperbalance@https+++codeload.github.com+xylophonez+hyperbalance+tar.gz+dcb009349368197c88586e4eba784bb5290203cb/node_modules/hyperbalance/dist/client.js","../../node_modules/.pnpm/hyperbalance@https+++codeload.github.com+xylophonez+hyperbalance+tar.gz+dcb009349368197c88586e4eba784bb5290203cb/node_modules/hyperbalance/dist/adapters/ao.js","../../node_modules/.pnpm/hyperbalance@https+++codeload.github.com+xylophonez+hyperbalance+tar.gz+dcb009349368197c88586e4eba784bb5290203cb/node_modules/hyperbalance/dist/conventions.js","../../src/utils/hyperbeam-uploader.ts","../../src/workflows/upload-workflow.ts"],"sourcesContent":["export class HyperbalanceError extends Error {\n cause;\n constructor(message, cause) {\n super(message);\n this.cause = cause;\n this.name = \"HyperbalanceError\";\n }\n}\nexport class MissingDiscoveryError extends HyperbalanceError {\n attemptedUrls;\n constructor(attemptedUrls) {\n super(`No hyperbalance discovery endpoint found: ${attemptedUrls.join(\", \")}`);\n this.attemptedUrls = attemptedUrls;\n this.name = \"MissingDiscoveryError\";\n }\n}\nexport class PaymentRequiredError extends HyperbalanceError {\n required;\n available;\n constructor(message, required, available) {\n super(message);\n this.required = required;\n this.available = available;\n this.name = \"PaymentRequiredError\";\n }\n}\n","import { MissingDiscoveryError } from \"./errors.js\";\nexport const DEFAULT_DISCOVERY_PATHS = [\"/.well-known/hyperbalance\"];\nexport function normalizeNodeUrl(nodeUrl) {\n return nodeUrl.replace(/\\/+$/, \"\");\n}\nexport async function discoverPaymentProfile(nodeUrl, options = {}) {\n const fetcher = options.fetch ?? globalThis.fetch;\n const base = normalizeNodeUrl(nodeUrl);\n const paths = options.paths ?? DEFAULT_DISCOVERY_PATHS;\n const attemptedUrls = [];\n for (const path of paths) {\n const url = `${base}${path.startsWith(\"/\") ? path : `/${path}`}`;\n attemptedUrls.push(url);\n const response = await fetcher(url, { headers: { accept: \"application/json\" } }).catch(() => undefined);\n if (!response?.ok)\n continue;\n const profile = (await response.json());\n validateProfile(profile);\n return profile;\n }\n throw new MissingDiscoveryError(attemptedUrls);\n}\nfunction validateProfile(profile) {\n if (!profile || typeof profile !== \"object\") {\n throw new Error(\"Invalid hyperbalance profile: expected object\");\n }\n if (!Array.isArray(profile.ledgers)) {\n throw new Error(\"Invalid hyperbalance profile: ledgers must be an array\");\n }\n if (!Array.isArray(profile.tokens)) {\n throw new Error(\"Invalid hyperbalance profile: tokens must be an array\");\n }\n}\n","export function getLedger(profile, ledgerId) {\n const ledger = profile.ledgers.find((candidate) => candidate.id === ledgerId);\n if (!ledger) {\n throw new Error(`Ledger not found in payment profile: ${ledgerId}`);\n }\n return ledger;\n}\nexport function getToken(profile, tokenId) {\n const token = profile.tokens.find((candidate) => candidate.id === tokenId);\n if (!token) {\n throw new Error(`Token not found in payment profile: ${tokenId}`);\n }\n return token;\n}\n","export async function parseBalanceResponse(response) {\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n const raw = await response.text();\n if (contentType.includes(\"application/json\")) {\n const parsed = JSON.parse(raw);\n return parseBalanceValue(parsed);\n }\n return BigInt(raw.trim());\n}\nexport async function parseQuoteResponse(response) {\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n const raw = await response.text();\n if (contentType.includes(\"application/json\")) {\n const parsed = JSON.parse(raw);\n const quote = parseQuoteValue(parsed);\n return { ...quote, raw: parsed };\n }\n return { amount: BigInt(raw.trim()), raw };\n}\nfunction parseBalanceValue(value) {\n if (typeof value === \"bigint\")\n return value;\n if (typeof value === \"number\")\n return BigInt(value);\n if (typeof value === \"string\")\n return BigInt(value);\n if (value && typeof value === \"object\") {\n const record = value;\n for (const key of [\"balance\", \"value\", \"amount\", \"ok\"]) {\n if (key in record)\n return parseBalanceValue(record[key]);\n }\n }\n throw new Error(\"Could not parse ledger balance response\");\n}\nfunction parseQuoteValue(value) {\n if (typeof value === \"bigint\" || typeof value === \"number\" || typeof value === \"string\") {\n return { amount: BigInt(value) };\n }\n if (value && typeof value === \"object\") {\n const record = value;\n const amountKey = [\"amount\", \"price\", \"quote\", \"value\", \"ok\"].find((key) => key in record);\n if (!amountKey) {\n throw new Error(\"Could not parse quote amount response\");\n }\n const quote = parseQuoteValue(record[amountKey]);\n const ledgerId = typeof record.ledgerId === \"string\" ? record.ledgerId : undefined;\n const tokenId = typeof record.tokenId === \"string\" ? record.tokenId : undefined;\n return {\n amount: quote.amount,\n ...(ledgerId !== undefined && { ledgerId }),\n ...(tokenId !== undefined && { tokenId }),\n };\n }\n throw new Error(\"Could not parse quote amount response\");\n}\n","export function applyTemplate(template, values) {\n return template.replaceAll(/\\{([A-Za-z0-9_-]+)\\}/g, (_match, key) => {\n const value = values[key];\n if (value === undefined) {\n throw new Error(`Missing template value: ${key}`);\n }\n return encodeURIComponent(String(value));\n });\n}\nexport function applyTemplateMap(templates, values) {\n if (!templates)\n return {};\n return Object.fromEntries(Object.entries(templates).map(([key, template]) => [key, applyTemplate(template, values)]));\n}\n","import { discoverPaymentProfile, normalizeNodeUrl } from \"./discovery.js\";\nimport { PaymentRequiredError } from \"./errors.js\";\nimport { getLedger, getToken } from \"./lookup.js\";\nimport { parseBalanceResponse, parseQuoteResponse } from \"./parse.js\";\nimport { applyTemplate, applyTemplateMap } from \"./templates.js\";\nexport class HyperbalanceClient {\n fetch;\n nodeUrl;\n constructor(options) {\n this.fetch = options.fetch ?? globalThis.fetch;\n this.nodeUrl = normalizeNodeUrl(options.nodeUrl);\n }\n discover(options = {}) {\n return discoverPaymentProfile(this.nodeUrl, { ...options, fetch: this.fetch });\n }\n async getBalance(request) {\n const ledger = getLedger(request.profile, request.ledgerId);\n const path = applyTemplate(ledger.balancePath, { address: request.address });\n const response = await this.fetch(this.absoluteUrl(path), {\n headers: { accept: \"application/json, text/plain\" },\n });\n if (response.status === 404) {\n return {\n address: request.address,\n ledger,\n value: 0n,\n };\n }\n if (!response.ok) {\n throw new Error(`Balance request failed: ${response.status} ${response.statusText}`);\n }\n return {\n address: request.address,\n ledger,\n value: await parseBalanceResponse(response),\n };\n }\n async ensureCredit(request) {\n const token = getToken(request.profile, request.tokenId);\n const ledger = getLedger(request.profile, request.ledgerId);\n const before = await this.getBalance({\n address: request.recipient,\n ledgerId: ledger.id,\n profile: request.profile,\n });\n if (before.value >= request.minimumBalance) {\n return {\n after: before,\n before,\n shortfall: 0n,\n };\n }\n const shortfall = request.minimumBalance - before.value;\n const depositAddress = token.depositAddress ?? request.profile.node?.operator;\n if (!depositAddress) {\n throw new PaymentRequiredError(\"Payment is required, but the node did not advertise a deposit address\", request.minimumBalance, before.value);\n }\n if (token.transfer?.kind && token.transfer.kind !== request.transferAdapter.kind) {\n throw new Error(`Transfer adapter kind mismatch: token expects ${token.transfer.kind}, got ${request.transferAdapter.kind}`);\n }\n const sender = await request.transferAdapter.inferSender?.();\n const transferRequest = {\n amount: shortfall,\n depositAddress,\n recipient: request.recipient,\n token,\n };\n if (sender !== undefined)\n transferRequest.sender = sender;\n const transfer = await request.transferAdapter.transfer(transferRequest);\n const importRequest = {\n amount: shortfall,\n ledger,\n profile: request.profile,\n recipient: request.recipient,\n token,\n transfer,\n };\n const importSender = transfer.sender ?? sender;\n if (importSender !== undefined)\n importRequest.sender = importSender;\n const imported = await this.importDeposit(importRequest);\n const after = await this.getBalance({\n address: request.recipient,\n ledgerId: ledger.id,\n profile: request.profile,\n });\n return {\n after,\n before,\n imported,\n shortfall,\n transfer,\n };\n }\n async ensureCreditAuto(request) {\n const profile = request.profile ?? (await this.discover());\n const targetOptions = {\n transferKind: request.transferAdapter.kind,\n };\n if (request.ledgerId !== undefined)\n targetOptions.ledgerId = request.ledgerId;\n if (request.tokenId !== undefined)\n targetOptions.tokenId = request.tokenId;\n const { ledger, token } = selectFundingTarget(profile, targetOptions);\n return this.ensureCredit({\n ledgerId: ledger.id,\n minimumBalance: request.minimumBalance,\n profile,\n recipient: request.recipient,\n tokenId: token.id,\n transferAdapter: request.transferAdapter,\n });\n }\n async quote(request) {\n const descriptor = request.profile.pricing?.find((candidate) => candidate.action === request.action);\n if (!descriptor?.quotePath) {\n throw new Error(`No quote path advertised for action: ${request.action}`);\n }\n const values = request.params ?? {};\n const url = new URL(this.absoluteUrl(applyTemplate(descriptor.quotePath, values)));\n for (const [key, value] of Object.entries(applyTemplateMap(descriptor.query, values))) {\n url.searchParams.set(key, value);\n }\n const bodyValues = applyTemplateMap(descriptor.body, values);\n const hasBody = Object.keys(bodyValues).length > 0;\n const init = {\n headers: { accept: \"application/json, text/plain\" },\n method: descriptor.method ?? (hasBody ? \"POST\" : \"GET\"),\n };\n if (hasBody) {\n init.body = JSON.stringify(bodyValues);\n init.headers = { ...init.headers, \"content-type\": \"application/json\" };\n }\n const response = await this.fetch(url, init);\n if (!response.ok) {\n throw new Error(`Quote request failed: ${response.status} ${response.statusText}`);\n }\n return parseQuoteResponse(response);\n }\n async quoteAuto(request) {\n const quoteRequest = {\n action: request.action,\n profile: request.profile ?? (await this.discover()),\n };\n if (request.params !== undefined)\n quoteRequest.params = request.params;\n return this.quote(quoteRequest);\n }\n async importDeposit(request) {\n const descriptor = request.token.import;\n if (!descriptor) {\n throw new Error(`Token does not advertise a deposit import flow: ${request.token.id}`);\n }\n const values = {\n ledgerId: request.ledger.id,\n messageId: request.transfer.messageId,\n quantity: request.amount,\n recipient: request.recipient,\n sender: request.sender,\n slot: request.transfer.slot,\n tokenId: request.token.id,\n };\n const url = new URL(this.absoluteUrl(descriptor.path));\n for (const [key, value] of Object.entries(applyTemplateMap(descriptor.query, values))) {\n url.searchParams.set(key, value);\n }\n const bodyValues = applyTemplateMap(descriptor.body, values);\n const hasBody = Object.keys(bodyValues).length > 0;\n const init = {\n method: descriptor.method ?? \"POST\",\n };\n if (hasBody) {\n init.body = JSON.stringify(bodyValues);\n init.headers = { \"content-type\": \"application/json\" };\n }\n const response = await this.fetch(url, init);\n if (!response.ok) {\n throw new Error(`Deposit import failed: ${response.status} ${response.statusText}`);\n }\n const text = await response.text();\n if (!text.trim())\n return undefined;\n try {\n return JSON.parse(text);\n }\n catch {\n return text;\n }\n }\n absoluteUrl(pathOrUrl) {\n if (/^https?:\\/\\//.test(pathOrUrl))\n return pathOrUrl;\n return `${this.nodeUrl}${pathOrUrl.startsWith(\"/\") ? pathOrUrl : `/${pathOrUrl}`}`;\n }\n}\nexport function selectFundingTarget(profile, options = {}) {\n const token = options.tokenId\n ? getToken(profile, options.tokenId)\n : profile.tokens.find((candidate) => (!options.transferKind || candidate.transfer?.kind === options.transferKind) &&\n (!options.ledgerId || candidate.ledgerId === options.ledgerId));\n if (!token) {\n throw new Error(\"No matching funding token found in payment profile\");\n }\n const ledgerId = options.ledgerId ?? token.ledgerId;\n if (!ledgerId) {\n throw new Error(`Funding token does not specify a ledger: ${token.id}`);\n }\n return {\n ledger: getLedger(profile, ledgerId),\n token,\n };\n}\n","import { applyTemplateMap } from \"../templates.js\";\nexport class AoTokenTransferAdapter {\n options;\n kind = \"ao\";\n inferSender;\n constructor(options) {\n this.options = options;\n if (options.inferSender) {\n this.inferSender = options.inferSender;\n }\n }\n async transfer(request) {\n const transfer = request.token.transfer;\n assertAoTransferDescriptor(request.token, transfer);\n const tags = buildAoTransferTags(request, transfer);\n const messageId = await this.options.message({\n data: \"\",\n process: transfer.processId,\n tags,\n });\n const slot = await this.options.waitForAssignmentSlot?.(messageId, {\n processId: transfer.processId,\n });\n const result = { messageId };\n if (request.sender !== undefined)\n result.sender = request.sender;\n if (slot !== undefined)\n result.slot = slot;\n return result;\n }\n}\nexport async function waitForAoAssignmentSlot(options) {\n const fetcher = options.fetch ?? globalThis.fetch;\n const stateUrl = (options.stateUrl ?? \"https://state.forward.computer\").replace(/\\/+$/, \"\");\n const pollMs = options.pollMs ?? 5000;\n const timeoutMs = options.timeoutMs ?? 360000;\n const fromSlot = Math.max(0, (await currentSlot(fetcher, stateUrl, options.processId)) - 5);\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline) {\n const toSlot = (await currentSlot(fetcher, stateUrl, options.processId)) + 20;\n const url = `${stateUrl}/${options.processId}~process@1.0/schedule` +\n `?from=${fromSlot}&to=${toSlot}&accept=application/aos-2`;\n const response = await fetcher(url);\n if (!response.ok) {\n throw new Error(`AO schedule request failed: ${response.status} ${response.statusText}`);\n }\n const schedule = (await response.json());\n for (const edge of schedule.edges ?? []) {\n if (edge.node?.message?.Id === options.messageId) {\n const slot = edge.node.assignment?.Tags?.find((tag) => tag.name === \"Nonce\")?.value;\n if (!slot) {\n throw new Error(`AO assignment is missing Nonce for message ${options.messageId}`);\n }\n return slot;\n }\n }\n await sleep(pollMs);\n }\n throw new Error(`AO message did not appear in schedule: ${options.messageId}`);\n}\nasync function currentSlot(fetcher, stateUrl, processId) {\n const response = await fetcher(`${stateUrl}/${processId}~process@1.0/slot/current`);\n if (!response.ok) {\n throw new Error(`AO current slot request failed: ${response.status} ${response.statusText}`);\n }\n const text = await response.text();\n const match = text.match(/\\d+/);\n if (!match) {\n throw new Error(`Could not parse AO current slot: ${text}`);\n }\n return Number(match[0]);\n}\nfunction sleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\nexport function buildAoTransferTags(request, transfer) {\n const tags = applyTemplateMap(transfer.tags, {\n depositAddress: request.depositAddress,\n quantity: request.amount,\n recipient: request.recipient,\n sender: request.sender,\n tokenId: request.token.id,\n });\n return Object.entries(tags).map(([name, value]) => ({ name, value }));\n}\nfunction assertAoTransferDescriptor(token, transfer) {\n if (!transfer) {\n throw new Error(`AO token does not advertise a transfer flow: ${token.id}`);\n }\n if (transfer.kind !== \"ao\") {\n throw new Error(`Token transfer kind is not AO: ${transfer.kind}`);\n }\n if (!transfer.processId) {\n throw new Error(`AO token is missing transfer.processId: ${token.id}`);\n }\n}\n","import { normalizeNodeUrl } from \"./discovery.js\";\nexport const DEFAULT_AO_TOKEN_ID = \"0syT13r0s0tgPmIed95bJnuSqaD29HQNN8D3ElLSrsc\";\nexport const HYPERBEAM_AO_BUNDLER_QUOTE_ACTION = \"hyperbeam-upload\";\nexport const HYPERBEAM_DEFAULT_LEDGER_ID = \"default\";\nexport const HYPERBEAM_DEFAULT_LEDGER_ROUTE = \"/ledger~node-process@1.0\";\nexport async function discoverHyperbeamAoBundlerProfile(options) {\n const fetcher = options.fetch ?? globalThis.fetch;\n const nodeUrl = normalizeNodeUrl(options.nodeUrl);\n const ledgerId = options.ledgerId ?? HYPERBEAM_DEFAULT_LEDGER_ID;\n const ledgerRoute = options.ledgerRoute ?? HYPERBEAM_DEFAULT_LEDGER_ROUTE;\n const tokenId = options.tokenId ?? DEFAULT_AO_TOKEN_ID;\n const depositAddress = await fetchHyperbeamOperatorAddress(fetcher, nodeUrl);\n return {\n ledgers: [\n {\n balancePath: `${ledgerRoute}/now/balance/{address}`,\n id: ledgerId,\n route: ledgerRoute,\n type: \"process-ledger@1.0\",\n unit: \"AO\",\n },\n ],\n node: {\n operator: depositAddress,\n url: nodeUrl,\n },\n pricing: [\n {\n action: HYPERBEAM_AO_BUNDLER_QUOTE_ACTION,\n query: {\n amount: \"{bytes}\",\n resource: \"arweave-bytes\",\n },\n quotePath: \"/~metering@1.0/quote\",\n },\n ],\n tokens: [\n {\n decimals: 12,\n depositAddress,\n id: tokenId,\n import: {\n method: \"POST\",\n path: \"/~ao-payment@1.0/ingest\",\n query: {\n \"message-id\": \"{messageId}\",\n quantity: \"{quantity}\",\n recipient: \"{recipient}\",\n sender: \"{sender}\",\n slot: \"{slot}\",\n token: \"{tokenId}\",\n },\n },\n ledgerId,\n network: \"ao\",\n ticker: \"AO\",\n transfer: {\n kind: \"ao\",\n processId: tokenId,\n tags: {\n Action: \"Transfer\",\n Quantity: \"{quantity}\",\n Recipient: \"{depositAddress}\",\n },\n },\n },\n ],\n version: \"hyperbalance@0.1\",\n };\n}\nasync function fetchHyperbeamOperatorAddress(fetcher, nodeUrl) {\n const response = await fetcher(`${nodeUrl}/~meta@1.0/info/address`, {\n headers: { accept: \"text/plain\" },\n });\n if (!response.ok) {\n throw new Error(`HyperBEAM operator address request failed: ${response.status} ${response.statusText}`);\n }\n const address = (await response.text()).trim();\n if (!address) {\n throw new Error(\"HyperBEAM operator address response was empty\");\n }\n return address;\n}\n","import { createHash } from 'node:crypto'\nimport fs from 'node:fs'\nimport { createRequire } from 'node:module'\nimport { Readable } from 'node:stream'\n\nimport { createDataItemSigner, message as aoMessage } from '@permaweb/aoconnect'\nimport {\n AoTokenTransferAdapter,\n DEFAULT_AO_TOKEN_ID,\n discoverHyperbeamAoBundlerProfile,\n type FundingResult,\n HyperbalanceClient,\n type HyperbalanceProfile,\n HYPERBEAM_DEFAULT_LEDGER_ID,\n HYPERBEAM_DEFAULT_LEDGER_ROUTE,\n waitForAoAssignmentSlot,\n} from 'hyperbalance'\n\nconst require = createRequire(import.meta.url)\nconst { ArweaveSigner, DataItem, createData } = require('@dha-team/arbundles') as {\n ArweaveSigner: new (jwk: Record<string, unknown>) => unknown\n DataItem: new (raw: Buffer) => { id: string | Uint8Array }\n createData: (\n data: Buffer,\n signer: unknown,\n opts?: { tags?: Array<{ name: string; value: string }> },\n ) => {\n getRaw: () => Uint8Array\n id?: string\n sign: (signer: unknown) => Promise<void>\n }\n}\n\nexport interface UploadFileArgs {\n dataItemOpts?: { tags?: Array<{ name: string; value: string }> }\n file?: string | Buffer\n fileSizeFactory?: () => number\n fileStreamFactory?: () => unknown\n fundingMode?: unknown\n}\n\nexport interface UploadClient {\n uploadFile: (args: UploadFileArgs) => Promise<UploadClientResult>\n}\n\nexport interface UploadClientResult {\n cost?: UploadCost\n id?: string\n size?: UploadSize\n}\n\nexport interface UploadCost {\n amount: bigint\n token: 'AO'\n}\n\nexport interface UploadSize {\n payloadBytes: number\n signedBytes?: number\n}\n\nconst AO_BASE_UNITS = 1_000_000_000_000n\nconst ARWEAVE_GATEWAY = 'https://arweave.net'\n\nexport interface HyperbeamBundlerOptions {\n autoFund?: HyperbeamBundlerAutoFundOptions\n deployKey: string\n quote?: HyperbeamBundlerQuoteOptions\n uploadPath: string\n uploader: string\n}\n\nexport interface HyperbeamAutoFundOptions {\n aoPollMs?: number\n aoStateUrl?: string\n aoTimeoutMs?: number\n deployKey: string\n ledgerId?: string\n minimumBalance: bigint\n tokenId?: string\n uploader: string\n}\n\nexport interface HyperbeamBundlerAutoFundOptions {\n aoPollMs?: number\n aoStateUrl?: string\n aoTimeoutMs?: number\n deployKey: string\n ledgerId?: string\n minimumBalance?: bigint\n quoteAction?: string\n tokenId?: string\n uploader: string\n}\n\nexport interface HyperbeamBundlerQuoteOptions {\n ledgerId?: string\n quoteAction?: string\n tokenId?: string\n uploader: string\n}\n\nasync function readableToBuffer(stream: Readable): Promise<Buffer> {\n const chunks: Buffer[] = []\n\n for await (const chunk of stream) {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk))\n }\n\n return Buffer.concat(chunks)\n}\n\nasync function streamToBuffer(stream: unknown): Promise<Buffer> {\n if (Buffer.isBuffer(stream)) {\n return stream\n }\n\n if (stream instanceof Uint8Array) {\n return Buffer.from(stream)\n }\n\n if (stream instanceof Readable) {\n return readableToBuffer(stream)\n }\n\n if (stream && typeof (stream as { getReader?: unknown }).getReader === 'function') {\n return readableToBuffer(Readable.fromWeb(stream as ReadableStream))\n }\n\n throw new Error('Unsupported upload stream type')\n}\n\nfunction toBase64Url(value: string | Uint8Array): string {\n if (typeof value === 'string') {\n return value\n }\n\n return Buffer.from(value).toString('base64url')\n}\n\nfunction normalizeUploadUrl(base: string, uploadPath: string): string {\n const normalizedBase = base.endsWith('/') ? base : `${base}/`\n const cleanPath = uploadPath.startsWith('/') ? uploadPath.slice(1) : uploadPath\n return new URL(cleanPath, normalizedBase).toString()\n}\n\nfunction arweaveAddressFromJwk(jwk: Record<string, unknown>): string {\n if (typeof jwk.n !== 'string') {\n throw new TypeError('Arweave JWK is missing modulus field \"n\"')\n }\n\n return createHash('sha256').update(Buffer.from(jwk.n, 'base64url')).digest('base64url')\n}\n\nexport function parseHyperbeamFundAmount(value: string): bigint {\n if (!/^[1-9]\\d*$/.test(value)) {\n throw new Error('--hyperbeam-fund-amount must be a positive integer in token base units')\n }\n\n return BigInt(value)\n}\n\nfunction formatAoAmount(amount: bigint): string {\n const whole = amount / AO_BASE_UNITS\n const fraction = amount % AO_BASE_UNITS\n\n if (fraction === 0n) {\n return `${whole.toString()} AO`\n }\n\n return `${whole.toString()}.${fraction.toString().padStart(12, '0').replaceAll(/0+$/g, '')} AO`\n}\n\nfunction responsePreview(body: string): string | undefined {\n const preview = body.replaceAll(/\\s+/g, ' ').trim()\n if (!preview) {\n return undefined\n }\n\n if (/^(<!doctype html\\b|<html\\b)/i.test(preview)) {\n return 'HTML error response'\n }\n\n return preview.slice(0, 300)\n}\n\nexport async function autoFundHyperbeamLedger(\n options: HyperbeamAutoFundOptions,\n): Promise<FundingResult> {\n const profile = await discoverHyperbeamAoBundlerProfile({\n ledgerId: options.ledgerId,\n nodeUrl: options.uploader,\n tokenId: options.tokenId,\n })\n\n return ensureHyperbeamCredit(options, profile)\n}\n\nasync function ensureHyperbeamCredit(\n options: HyperbeamAutoFundOptions,\n profile: HyperbalanceProfile,\n): Promise<FundingResult> {\n const jwk = JSON.parse(Buffer.from(options.deployKey, 'base64').toString('utf8')) as Record<\n string,\n unknown\n >\n const recipient = arweaveAddressFromJwk(jwk)\n const signer = createDataItemSigner(jwk)\n const client = new HyperbalanceClient({ nodeUrl: options.uploader })\n const adapter = new AoTokenTransferAdapter({\n async inferSender() {\n return recipient\n },\n async message(input) {\n return aoMessage({\n data: input.data ?? '',\n process: input.process,\n signer,\n tags: input.tags,\n })\n },\n async waitForAssignmentSlot(messageId, context) {\n return waitForAoAssignmentSlot({\n messageId,\n pollMs: options.aoPollMs,\n processId: context.processId,\n stateUrl: options.aoStateUrl,\n timeoutMs: options.aoTimeoutMs,\n })\n },\n })\n\n return client.ensureCreditAuto({\n ledgerId: options.ledgerId,\n minimumBalance: options.minimumBalance,\n profile,\n recipient,\n tokenId: options.tokenId ?? DEFAULT_AO_TOKEN_ID,\n transferAdapter: adapter,\n })\n}\n\nexport async function autoFundQuotedHyperbeamLedger(\n options: { signedBytes: number } & HyperbeamBundlerAutoFundOptions,\n): Promise<FundingResult> {\n const profile = await discoverHyperbeamAoBundlerProfile({\n ledgerId: options.ledgerId,\n nodeUrl: options.uploader,\n tokenId: options.tokenId,\n })\n const client = new HyperbalanceClient({ nodeUrl: options.uploader })\n let { ledgerId } = options\n let { minimumBalance } = options\n let { tokenId } = options\n\n if (minimumBalance === undefined) {\n const quote = await client.quoteAuto({\n action: options.quoteAction ?? 'hyperbeam-upload',\n params: { bytes: options.signedBytes },\n profile,\n })\n minimumBalance = quote.amount\n ledgerId ??= quote.ledgerId\n tokenId ??= quote.tokenId\n }\n\n return ensureHyperbeamCredit(\n {\n aoPollMs: options.aoPollMs,\n aoStateUrl: options.aoStateUrl,\n aoTimeoutMs: options.aoTimeoutMs,\n deployKey: options.deployKey,\n ledgerId,\n minimumBalance,\n tokenId,\n uploader: options.uploader,\n },\n profile,\n )\n}\n\nexport async function quoteHyperbeamUpload(\n options: { signedBytes: number } & HyperbeamBundlerQuoteOptions,\n): Promise<{ amount: bigint; ledgerId?: string; tokenId?: string }> {\n const profile = await discoverHyperbeamAoBundlerProfile({\n ledgerId: options.ledgerId,\n nodeUrl: options.uploader,\n tokenId: options.tokenId,\n })\n const quote = await new HyperbalanceClient({ nodeUrl: options.uploader }).quoteAuto({\n action: options.quoteAction ?? 'hyperbeam-upload',\n params: { bytes: options.signedBytes },\n profile,\n })\n\n return { amount: quote.amount, ledgerId: quote.ledgerId, tokenId: quote.tokenId }\n}\n\nexport function hyperbeamBundlerLink(uploader: string, id: string, isManifest = false): string {\n const normalizedBase = uploader.endsWith('/') ? uploader : `${uploader}/`\n return new URL(`${encodeURIComponent(id)}${isManifest ? '/' : ''}`, normalizedBase).toString()\n}\n\nasync function preflightHyperbeamBundlerArBalance(uploader: string): Promise<void> {\n const nodeUrl = uploader.replace(/\\/+$/, '')\n const addressRes = await fetch(`${nodeUrl}/~meta@1.0/info/address`)\n if (!addressRes.ok) {\n throw new Error(`HyperBEAM bundler address check failed with HTTP ${addressRes.status}`)\n }\n\n const address = (await addressRes.text()).trim()\n if (!address) {\n throw new Error('HyperBEAM bundler address check returned an empty address')\n }\n\n const balanceRes = await fetch(`${ARWEAVE_GATEWAY}/wallet/${encodeURIComponent(address)}/balance`)\n if (!balanceRes.ok) {\n throw new Error(`HyperBEAM bundler AR balance check failed with HTTP ${balanceRes.status}`)\n }\n\n const balance = (await balanceRes.text()).trim()\n if (!/^\\d+$/.test(balance)) {\n throw new Error('HyperBEAM bundler AR balance check returned an invalid balance')\n }\n\n if (BigInt(balance) === 0n) {\n throw new Error(\n `HyperBEAM bundler wallet ${address} has 0 AR; upload aborted because the node cannot seed data to Arweave.`,\n )\n }\n}\n\nfunction responseId(headers: Headers, body: string): string | undefined {\n const headerId = headers.get('id')\n if (headerId) {\n return headerId\n }\n\n try {\n const parsed = JSON.parse(body) as { body?: { id?: string }; id?: string }\n return parsed.id || parsed.body?.id\n } catch {\n return undefined\n }\n}\n\nfunction cleanAutoFundErrorMessage(message: string): string {\n const jsonStart = message.indexOf('{')\n if (jsonStart >= 0) {\n try {\n const parsed = JSON.parse(message.slice(jsonStart)) as { error?: string }\n if (parsed.error) {\n return parsed.error.replace(/^Error:\\s*/, '')\n }\n } catch {\n // Keep the original error below if the body is not JSON.\n }\n }\n\n return message\n}\n\nfunction autoFundFailureNote(message: string): string {\n if (/rate limit exceeded/i.test(message)) {\n return 'AO token transfer was rate limited. Check that the wallet has enough spendable AO before retrying auto-fund.'\n }\n\n return 'Check the wallet or node ledger before retrying auto-fund; the AO transfer may already have been submitted.'\n}\n\nexport class HyperbeamBundlerClient implements UploadClient {\n private readonly autoFund?: HyperbeamBundlerAutoFundOptions\n private readonly quote: HyperbeamBundlerQuoteOptions\n private seedPreflight?: Promise<void>\n private readonly signer: unknown\n private readonly uploader: string\n private readonly uploadUrl: string\n\n constructor({ autoFund, deployKey, quote, uploadPath, uploader }: HyperbeamBundlerOptions) {\n const jwk = JSON.parse(Buffer.from(deployKey, 'base64').toString('utf8')) as Record<\n string,\n unknown\n >\n this.autoFund = autoFund\n this.quote = quote ?? { uploader }\n this.signer = new ArweaveSigner(jwk)\n this.uploader = uploader\n this.uploadUrl = normalizeUploadUrl(uploader, uploadPath)\n }\n\n async uploadFile(args: UploadFileArgs): Promise<{ id: string } & UploadClientResult> {\n this.seedPreflight ??= preflightHyperbeamBundlerArBalance(this.uploader)\n await this.seedPreflight\n\n const data = args.file\n ? typeof args.file === 'string'\n ? fs.readFileSync(args.file)\n : args.file\n : await streamToBuffer(args.fileStreamFactory?.() ?? Readable.from([]))\n const tags = args.dataItemOpts?.tags ?? []\n const item = createData(data, this.signer, { tags })\n\n await item.sign(this.signer)\n\n const raw = Buffer.from(item.getRaw())\n const localId = item.id || toBase64Url(new DataItem(raw).id)\n const size: UploadSize = { payloadBytes: data.length, signedBytes: raw.length }\n let cost: UploadCost | undefined\n\n if (this.autoFund) {\n const quote = await quoteHyperbeamUpload({ ...this.quote, signedBytes: raw.length })\n cost = { amount: quote.amount, token: 'AO' }\n try {\n await autoFundQuotedHyperbeamLedger({\n ...this.autoFund,\n ledgerId: this.autoFund.ledgerId ?? quote.ledgerId,\n minimumBalance: this.autoFund.minimumBalance ?? quote.amount,\n signedBytes: raw.length,\n tokenId: this.autoFund.tokenId ?? quote.tokenId,\n })\n } catch (error) {\n const message = cleanAutoFundErrorMessage(\n error instanceof Error ? error.message : String(error),\n )\n throw new Error(\n [\n `HyperBEAM auto-fund failed: ${message}`,\n `Required upload credit: ${formatAoAmount(cost.amount)}`,\n autoFundFailureNote(message),\n await this.paymentHint(false),\n ]\n .filter(Boolean)\n .join('\\n\\n'),\n )\n }\n } else {\n try {\n const quote = await quoteHyperbeamUpload({ ...this.quote, signedBytes: raw.length })\n cost = { amount: quote.amount, token: 'AO' }\n } catch {\n cost = undefined\n }\n }\n\n const res = await fetch(this.uploadUrl, {\n body: raw,\n headers: {\n accept: 'application/json, text/plain, */*',\n 'content-type': 'application/octet-stream',\n },\n method: 'POST',\n })\n const body = await res.text()\n\n if (!res.ok) {\n const preview = responsePreview(body)\n const paymentHint = res.status === 402 ? await this.paymentHint() : undefined\n throw new Error(\n [\n `HyperBEAM bundler upload failed with HTTP ${res.status}${preview ? `: ${preview}` : ''}`,\n paymentHint,\n ]\n .filter(Boolean)\n .join('\\n\\n'),\n )\n }\n\n return { cost, id: responseId(res.headers, body) || localId, size }\n }\n\n private async paymentHint(includeAutoFundInstruction = true): Promise<string | undefined> {\n try {\n return hyperbeamAoFundingHint(\n await discoverHyperbeamAoBundlerProfile({ nodeUrl: this.uploader }),\n { includeAutoFundInstruction },\n )\n } catch {\n try {\n const operator = await fetch(\n `${this.uploader.replace(/\\/+$/, '')}/~meta@1.0/info/address`,\n ).then((res) => (res.ok ? res.text() : undefined))\n if (!operator?.trim()) return undefined\n\n return [\n 'The HyperBEAM node requires AO in its local ledger:',\n `- AO: send funds to ${operator.trim()}. Local ledger: ${HYPERBEAM_DEFAULT_LEDGER_ID} at ${HYPERBEAM_DEFAULT_LEDGER_ROUTE}.`,\n includeAutoFundInstruction\n ? 'Use --hyperbeam-auto-fund to transfer AO and import the credit automatically before upload.'\n : undefined,\n ]\n .filter(Boolean)\n .join('\\n')\n } catch {\n return undefined\n }\n }\n }\n}\n\nexport function hyperbeamAoFundingHint(\n profile: HyperbalanceProfile,\n options: { includeAutoFundInstruction?: boolean } = {},\n): string | undefined {\n const lines = profile.tokens\n .map((token) => {\n const depositAddress = token.depositAddress ?? profile.node?.operator\n if (!depositAddress) return\n\n const label =\n token.ticker === 'AO' ? 'AO' : token.ticker ? `${token.ticker} (${token.id})` : token.id\n const ledger = token.ledgerId\n ? profile.ledgers.find((candidate) => candidate.id === token.ledgerId)\n : undefined\n const ledgerInfo = ledger\n ? ` Local ledger: ${ledger.id}${ledger.route ? ` at ${ledger.route}` : ''}.`\n : ''\n\n return `- ${label}: send funds to ${depositAddress}.${ledgerInfo}`\n })\n .filter(Boolean)\n\n if (lines.length === 0) return undefined\n\n return [\n 'The HyperBEAM node requires AO in its local ledger:',\n ...lines,\n options.includeAutoFundInstruction === false\n ? undefined\n : 'Use --hyperbeam-auto-fund to transfer AO and import the credit automatically before upload.',\n ]\n .filter(Boolean)\n .join('\\n')\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nimport {\n ARIOToTokenAmount,\n ETHToTokenAmount,\n OnDemandFunding,\n TurboAuthenticatedConfiguration,\n TurboFactory,\n} from '@ardrive/turbo-sdk'\nimport chalk from 'chalk'\nimport ora from 'ora'\n\nimport type { SignerType } from '../types/index.js'\nimport { cleanupCache, loadCache, saveCache } from '../utils/cache.js'\nimport {\n type HyperbeamBundlerAutoFundOptions,\n HyperbeamBundlerClient,\n parseHyperbeamFundAmount,\n type UploadClient,\n type UploadCost,\n type UploadSize,\n} from '../utils/hyperbeam-uploader.js'\nimport { expandPath } from '../utils/path.js'\nimport { createSigner } from '../utils/signer.js'\nimport { type FolderUploadResult, uploadFile, uploadFolder } from '../utils/uploader.js'\n\nexport interface UploadWorkflowConfig {\n 'dedupe-cache-max-entries': number\n 'deploy-file'?: string\n 'deploy-folder': string\n 'hyperbeam-ao-state-url'?: string\n 'hyperbeam-auto-fund'?: boolean\n 'hyperbeam-fund-amount'?: string\n 'hyperbeam-ledger-id'?: string\n 'hyperbeam-token-id'?: string\n 'hyperbeam-upload-path'?: string\n 'max-token-amount'?: string\n 'on-demand'?: string\n 'sig-type': string\n uploader?: string\n 'uploader-type'?: string\n}\n\nfunction getFolderSize(folderPath: string): number {\n let totalSize = 0\n\n for (const item of fs.readdirSync(folderPath)) {\n const fullPath = path.join(folderPath, item)\n const stats = fs.statSync(fullPath)\n\n totalSize += stats.isDirectory() ? getFolderSize(fullPath) : stats.size\n }\n\n return totalSize\n}\n\nexport interface UploadWorkflowIo {\n error: (msg: string) => never\n}\n\nexport interface UploadWorkflowResult {\n cost?: UploadCost\n size?: UploadSize\n transactionId: string\n}\n\n/**\n * Sign in to Turbo and upload a file or folder.\n *\n * @param deployKey - Wallet material (base64 JWK or hex private key per sig-type)\n * @param config - Upload paths, dedupe, bundler service URL, on-demand payment\n * @param io - Error handler (must exit the process)\n * @returns Transaction ID or folder manifest ID\n */\nexport async function runUploadWorkflow(\n deployKey: string,\n config: UploadWorkflowConfig,\n io: UploadWorkflowIo,\n): Promise<UploadWorkflowResult> {\n const spinner = ora()\n\n const uploaderType = config['uploader-type'] ?? 'turbo'\n let uploadClient: UploadClient\n let turbo: ReturnType<typeof TurboFactory.authenticated> | undefined\n\n if (uploaderType === 'hyperbeam') {\n if (config['sig-type'] !== 'arweave') {\n io.error('HyperBEAM uploads require --sig-type arweave')\n }\n\n if (!config.uploader) {\n io.error('HyperBEAM uploads require --uploader <node-url>')\n }\n\n if (config['on-demand']) {\n io.error('HyperBEAM uploads do not support Turbo --on-demand payments')\n }\n\n let autoFund: HyperbeamBundlerAutoFundOptions | undefined\n if (config['hyperbeam-auto-fund']) {\n autoFund = {\n deployKey,\n uploader: config.uploader,\n }\n if (config['hyperbeam-ao-state-url']) autoFund.aoStateUrl = config['hyperbeam-ao-state-url']\n if (config['hyperbeam-ledger-id']) autoFund.ledgerId = config['hyperbeam-ledger-id']\n if (config['hyperbeam-token-id']) autoFund.tokenId = config['hyperbeam-token-id']\n if (config['hyperbeam-fund-amount']) {\n autoFund.minimumBalance = parseHyperbeamFundAmount(config['hyperbeam-fund-amount'])\n }\n }\n\n spinner.start('Initializing HyperBEAM bundler')\n uploadClient = new HyperbeamBundlerClient({\n autoFund,\n deployKey,\n quote: {\n ledgerId: config['hyperbeam-ledger-id'],\n tokenId: config['hyperbeam-token-id'],\n uploader: config.uploader,\n },\n uploadPath: config['hyperbeam-upload-path'] ?? '/~bundler@1.0/item?codec-device=ans104@1.0',\n uploader: config.uploader,\n })\n spinner.succeed(`HyperBEAM bundler initialized (${chalk.cyan(config.uploader)})`)\n } else {\n spinner.start('Creating signer')\n const { signer, token } = createSigner(config['sig-type'] as SignerType, deployKey)\n spinner.succeed(`Signer created (${chalk.cyan(config['sig-type'])})`)\n\n spinner.start('Initializing Turbo')\n\n const turboFactoryArgs: TurboAuthenticatedConfiguration = { signer, token }\n\n if (config.uploader) {\n turboFactoryArgs.uploadServiceConfig = { url: config.uploader }\n }\n\n turbo = TurboFactory.authenticated(turboFactoryArgs)\n uploadClient = turbo as UploadClient\n\n spinner.succeed('Turbo initialized')\n }\n\n let fundingMode: OnDemandFunding | undefined\n if (config['on-demand'] && config['max-token-amount']) {\n const tokenType = config['on-demand']\n const maxAmount = Number.parseFloat(config['max-token-amount'])\n\n let maxTokenAmount: ReturnType<typeof ARIOToTokenAmount>\n switch (tokenType) {\n case 'ario': {\n maxTokenAmount = ARIOToTokenAmount(maxAmount)\n break\n }\n\n case 'base-eth': {\n maxTokenAmount = ETHToTokenAmount(maxAmount)\n break\n }\n\n default: {\n throw new Error(`Unsupported on-demand token type: ${tokenType}`)\n }\n }\n\n fundingMode = new OnDemandFunding({\n maxTokenAmount,\n topUpBufferMultiplier: 1.1,\n })\n }\n\n if (!fundingMode && turbo) {\n spinner.start('Checking Turbo credits for upload')\n\n try {\n const uploadBytes = config['deploy-file']\n ? (() => {\n const filePath = expandPath(config['deploy-file']!)\n return fs.statSync(filePath).size\n })()\n : (() => {\n const folderPath = expandPath(config['deploy-folder']!)\n return getFolderSize(folderPath)\n })()\n\n const FREE_THRESHOLD_BYTES = 107_520 // ~105 KiB\n\n if (uploadBytes >= FREE_THRESHOLD_BYTES) {\n const [uploadCost] = await turbo.getUploadCosts({ bytes: [uploadBytes] })\n const balance = await turbo.getBalance()\n\n const requiredWinc = BigInt(uploadCost.winc)\n const currentWinc = BigInt(balance.winc)\n\n if (requiredWinc > currentWinc) {\n spinner.fail('Insufficient Turbo credits')\n\n io.error(\n [\n 'Insufficient Turbo credits for this upload.',\n `Required: ${requiredWinc.toString()} winc, available: ${currentWinc.toString()} winc.`,\n '',\n 'Top up your Turbo balance (or re-run with --on-demand and --max-token-amount).',\n ].join(' '),\n )\n }\n }\n\n spinner.succeed('Turbo credits check passed')\n } catch (balanceError) {\n spinner.fail('Failed to check Turbo credits')\n const errorMessage =\n balanceError instanceof Error ? balanceError.message : String(balanceError)\n io.error(`Failed to check Turbo credits: ${errorMessage}`)\n }\n }\n\n let txOrManifestId: string\n let cost: UploadCost | undefined\n let size: UploadSize | undefined\n try {\n if (config['deploy-file']) {\n const filePath = expandPath(config['deploy-file'])\n spinner.start(`Uploading file ${chalk.yellow(config['deploy-file'])}`)\n\n let cache = config['dedupe-cache-max-entries'] > 0 ? loadCache() : {}\n const uploadResult = await uploadFile(uploadClient, filePath, { cache, fundingMode })\n\n if (!uploadResult.transactionId) {\n spinner.fail('File upload failed: no transaction ID returned')\n io.error('File upload failed: no transaction ID returned')\n }\n\n txOrManifestId = uploadResult.transactionId\n cost = uploadResult.cost\n size = uploadResult.size\n\n if (uploadResult.updatedCache && config['dedupe-cache-max-entries'] > 0) {\n cache = cleanupCache(uploadResult.updatedCache, config['dedupe-cache-max-entries'])\n saveCache(cache)\n }\n\n if (uploadResult.cacheHit) {\n spinner.succeed(`File cache hit - reusing transaction ${chalk.green(txOrManifestId)}`)\n } else {\n const cacheMsg =\n config['dedupe-cache-max-entries'] > 0 ? chalk.gray('(cached for future uploads)') : ''\n spinner.succeed(`File uploaded: ${chalk.green(txOrManifestId)} ${cacheMsg}`.trim())\n }\n } else {\n const folderPath = expandPath(config['deploy-folder'])\n spinner.start(`Uploading folder ${chalk.yellow(config['deploy-folder'])}`)\n\n let cache = config['dedupe-cache-max-entries'] > 0 ? loadCache() : {}\n const uploadResult: FolderUploadResult = await uploadFolder(uploadClient, folderPath, {\n cache,\n concurrency: config['hyperbeam-auto-fund'] ? 1 : undefined,\n fundingMode,\n throwOnFailure: true,\n })\n\n if (!uploadResult.transactionId) {\n spinner.fail('Folder upload failed: no transaction ID returned')\n io.error('Folder upload failed: no transaction ID returned')\n }\n\n txOrManifestId = uploadResult.transactionId\n cost = uploadResult.cost\n size = uploadResult.size\n\n if (uploadResult.updatedCache && config['dedupe-cache-max-entries'] > 0) {\n cache = cleanupCache(uploadResult.updatedCache, config['dedupe-cache-max-entries'])\n saveCache(cache)\n }\n\n const { cacheHits, totalFiles, uploaded } = uploadResult\n const statsMsg =\n cacheHits > 0\n ? chalk.gray(` (${cacheHits}/${totalFiles} files cached, ${uploaded} uploaded)`)\n : ''\n\n if (uploadResult.cacheHit) {\n spinner.succeed(`All ${totalFiles} files cached - manifest: ${chalk.green(txOrManifestId)}`)\n } else {\n const cacheMsg =\n config['dedupe-cache-max-entries'] > 0\n ? chalk.gray(' (files cached for future uploads)')\n : ''\n spinner.succeed(`Folder uploaded: ${chalk.green(txOrManifestId)}${statsMsg}${cacheMsg}`)\n }\n }\n } catch (uploadError) {\n spinner.fail('Upload failed')\n const errorMessage = uploadError instanceof Error ? uploadError.message : String(uploadError)\n io.error(`Upload failed: ${errorMessage}`)\n }\n\n return {\n cost,\n size,\n transactionId: txOrManifestId,\n }\n}\n"],"names":["require","aoMessage"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7]}