permaweb-deploy 3.4.6 → 4.0.0
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.
- package/dist/chunks/{display-y6lAuqxZ.js → display-WYdGiMxZ.js} +2 -2
- package/dist/chunks/{display-y6lAuqxZ.js.map → display-WYdGiMxZ.js.map} +1 -1
- package/dist/chunks/{upload-workflow-CfCTs0EW.js → upload-workflow-BnN8mhkm.js} +97 -15
- package/dist/chunks/upload-workflow-BnN8mhkm.js.map +1 -0
- package/dist/commands/deploy.js +2 -2
- package/dist/commands/upload.js +2 -2
- package/dist/src/utils/hyperbeam-uploader.d.ts +1 -1
- package/dist/src/utils/hyperbeam-uploader.d.ts.map +1 -1
- package/dist/workflows/upload-workflow.js +1 -1
- package/package.json +2 -2
- package/dist/chunks/upload-workflow-CfCTs0EW.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as chalk } from './upload-workflow-
|
|
1
|
+
import { c as chalk } from './upload-workflow-BnN8mhkm.js';
|
|
2
2
|
|
|
3
3
|
const AO_BASE_UNITS = 1000000000000n;
|
|
4
4
|
function formatUploadSize(size) {
|
|
@@ -50,4 +50,4 @@ ${formatDisplayRows(rows)}`;
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
export { formatUploadError as a, formatUploadSize as b, formatUploadCost as c, formatDisplayRows as f };
|
|
53
|
-
//# sourceMappingURL=display-
|
|
53
|
+
//# sourceMappingURL=display-WYdGiMxZ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-
|
|
1
|
+
{"version":3,"file":"display-WYdGiMxZ.js","sources":["../../src/utils/display.ts"],"sourcesContent":["import { chalk } from './chalk.js'\nimport type { UploadCost, UploadSize } from './hyperbeam-uploader.js'\n\nconst AO_BASE_UNITS = 1_000_000_000_000n\n\nexport type DisplayRow = [label: string, value: string]\n\nexport function formatUploadSize(size: UploadSize): string {\n return `${(size.signedBytes ?? size.payloadBytes).toLocaleString()} bytes`\n}\n\nexport function formatUploadCost(cost: UploadCost): string {\n if (cost.token !== 'AO') {\n return `${cost.amount.toString()}`\n }\n\n const whole = cost.amount / AO_BASE_UNITS\n const fraction = cost.amount % AO_BASE_UNITS\n const decimal =\n fraction === 0n\n ? whole.toString()\n : `${whole.toString()}.${fraction.toString().padStart(12, '0').replaceAll(/0+$/g, '')}`\n\n return `${decimal} AO`\n}\n\nexport function formatDisplayRows(rows: DisplayRow[]): string {\n return rows.map(([label, value]) => `${label}: ${value}`).join('\\n')\n}\n\nfunction fundingDisplay(section: string): string {\n const fundingLine = section\n .split('\\n')\n .map((line) => line.trim())\n .find((line) => line.startsWith('- '))\n ?.replace(/^- /, '')\n\n if (!fundingLine) {\n return section\n }\n\n return fundingLine\n .replace(/^AO: send funds to /, 'Sending AO to ')\n .replace(/\\. Local ledger:.*$/, '')\n}\n\nexport function formatUploadError(message: string, title = 'Upload failed'): string {\n const rows: DisplayRow[] = []\n const sections = message\n .split(/\\n{2,}/)\n .map((section) => section.trim())\n .filter(Boolean)\n\n for (const [index, section] of sections.entries()) {\n if (index === 0) {\n rows.push(['Error', chalk.red(section)])\n continue\n }\n\n if (section.startsWith('Required upload credit:')) {\n rows.push([\n 'Required upload credit',\n chalk.blue(section.replace(/^Required upload credit:\\s*/, '')),\n ])\n continue\n }\n\n if (section.startsWith('The HyperBEAM node requires AO')) {\n rows.push(['Funding', fundingDisplay(section)])\n continue\n }\n\n rows.push(['Note', section])\n }\n\n return `${chalk.bold(chalk.red(title))}\\n\\n${formatDisplayRows(rows)}`\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -348,6 +348,58 @@ class HyperbalanceClient {
|
|
|
348
348
|
quoteRequest.params = request.params;
|
|
349
349
|
return this.quote(quoteRequest);
|
|
350
350
|
}
|
|
351
|
+
async paidRequest(request) {
|
|
352
|
+
const profile = request.profile ?? (await this.discover());
|
|
353
|
+
const targetOptions = {};
|
|
354
|
+
if (request.ledgerId !== undefined)
|
|
355
|
+
targetOptions.ledgerId = request.ledgerId;
|
|
356
|
+
if (request.tokenId !== undefined)
|
|
357
|
+
targetOptions.tokenId = request.tokenId;
|
|
358
|
+
if (request.transferAdapter !== undefined)
|
|
359
|
+
targetOptions.transferKind = request.transferAdapter.kind;
|
|
360
|
+
const { ledger, token } = selectFundingTarget(profile, targetOptions);
|
|
361
|
+
const quoted = request.quote ? await this.quote(buildQuoteRequest(profile, request.quote)) : undefined;
|
|
362
|
+
const minimumBalance = maxBigint(request.minimumBalance ?? 0n, quoted?.amount ?? 0n);
|
|
363
|
+
let before = await this.getBalance({
|
|
364
|
+
address: request.signerAddress,
|
|
365
|
+
ledgerId: ledger.id,
|
|
366
|
+
profile,
|
|
367
|
+
});
|
|
368
|
+
let funding;
|
|
369
|
+
if (before.value < minimumBalance) {
|
|
370
|
+
if (!request.transferAdapter) {
|
|
371
|
+
throw new PaymentRequiredError("Payment is required, but no transfer adapter was provided", minimumBalance, before.value);
|
|
372
|
+
}
|
|
373
|
+
funding = await this.ensureCredit({
|
|
374
|
+
ledgerId: ledger.id,
|
|
375
|
+
minimumBalance,
|
|
376
|
+
profile,
|
|
377
|
+
recipient: request.signerAddress,
|
|
378
|
+
tokenId: token.id,
|
|
379
|
+
transferAdapter: request.transferAdapter,
|
|
380
|
+
});
|
|
381
|
+
before = funding.after;
|
|
382
|
+
}
|
|
383
|
+
const fields = { ...request.fields };
|
|
384
|
+
fields["signing-format"] ??= "httpsig";
|
|
385
|
+
const response = await request.send(fields);
|
|
386
|
+
const after = request.readBalanceAfter === false
|
|
387
|
+
? undefined
|
|
388
|
+
: await this.getBalance({
|
|
389
|
+
address: request.signerAddress,
|
|
390
|
+
ledgerId: ledger.id,
|
|
391
|
+
profile,
|
|
392
|
+
});
|
|
393
|
+
return {
|
|
394
|
+
...(after !== undefined && { after }),
|
|
395
|
+
before,
|
|
396
|
+
...(funding !== undefined && { funding }),
|
|
397
|
+
minimumBalance,
|
|
398
|
+
...(quoted !== undefined && { quote: quoted }),
|
|
399
|
+
response,
|
|
400
|
+
signerAddress: request.signerAddress,
|
|
401
|
+
};
|
|
402
|
+
}
|
|
351
403
|
async importDeposit(request) {
|
|
352
404
|
const descriptor = request.token.import;
|
|
353
405
|
if (!descriptor) {
|
|
@@ -377,7 +429,9 @@ class HyperbalanceClient {
|
|
|
377
429
|
}
|
|
378
430
|
const response = await this.fetch(url, init);
|
|
379
431
|
if (!response.ok) {
|
|
380
|
-
|
|
432
|
+
const body = (await response.text().catch(() => "")).trim();
|
|
433
|
+
const details = body ? `: ${body}` : "";
|
|
434
|
+
throw new Error(`Deposit import failed: ${response.status} ${response.statusText}${details}`);
|
|
381
435
|
}
|
|
382
436
|
const text = await response.text();
|
|
383
437
|
if (!text.trim())
|
|
@@ -412,6 +466,18 @@ function selectFundingTarget(profile, options = {}) {
|
|
|
412
466
|
token,
|
|
413
467
|
};
|
|
414
468
|
}
|
|
469
|
+
function buildQuoteRequest(profile, quote) {
|
|
470
|
+
const request = {
|
|
471
|
+
action: quote.action,
|
|
472
|
+
profile,
|
|
473
|
+
};
|
|
474
|
+
if (quote.params !== undefined)
|
|
475
|
+
request.params = quote.params;
|
|
476
|
+
return request;
|
|
477
|
+
}
|
|
478
|
+
function maxBigint(left, right) {
|
|
479
|
+
return left > right ? left : right;
|
|
480
|
+
}
|
|
415
481
|
|
|
416
482
|
class AoTokenTransferAdapter {
|
|
417
483
|
options;
|
|
@@ -516,14 +582,19 @@ const HYPERBEAM_DEFAULT_LEDGER_ROUTE = "/ledger~node-process@1.0";
|
|
|
516
582
|
async function discoverHyperbeamAoBundlerProfile(options) {
|
|
517
583
|
const fetcher = options.fetch ?? globalThis.fetch;
|
|
518
584
|
const nodeUrl = normalizeNodeUrl(options.nodeUrl);
|
|
519
|
-
const ledgerId = options.ledgerId ?? HYPERBEAM_DEFAULT_LEDGER_ID;
|
|
520
|
-
const ledgerRoute = options.ledgerRoute ?? HYPERBEAM_DEFAULT_LEDGER_ROUTE;
|
|
521
585
|
const tokenId = options.tokenId ?? DEFAULT_AO_TOKEN_ID;
|
|
522
|
-
const
|
|
586
|
+
const operator = await fetchRequiredHyperbeamText(fetcher, nodeUrl, "/~meta@1.0/info/address", "operator address");
|
|
587
|
+
const depositAddress = (await fetchOptionalHyperbeamText(fetcher, nodeUrl, "/~meta@1.0/info/ao-payment-deposit-address")) ?? operator;
|
|
588
|
+
const advertisedLedgerId = await fetchOptionalHyperbeamText(fetcher, nodeUrl, "/~meta@1.0/info/ao-payment-ledger");
|
|
589
|
+
const ledgerId = options.ledgerId ?? advertisedLedgerId ?? HYPERBEAM_DEFAULT_LEDGER_ID;
|
|
590
|
+
const ledgerRoute = options.ledgerRoute ?? HYPERBEAM_DEFAULT_LEDGER_ROUTE;
|
|
591
|
+
const balancePath = options.ledgerRoute === undefined && advertisedLedgerId
|
|
592
|
+
? "/~p4@1.0/balance?target={address}"
|
|
593
|
+
: `${ledgerRoute}/now/balance/{address}`;
|
|
523
594
|
return {
|
|
524
595
|
ledgers: [
|
|
525
596
|
{
|
|
526
|
-
balancePath
|
|
597
|
+
balancePath,
|
|
527
598
|
id: ledgerId,
|
|
528
599
|
route: ledgerRoute,
|
|
529
600
|
type: "process-ledger@1.0",
|
|
@@ -531,7 +602,7 @@ async function discoverHyperbeamAoBundlerProfile(options) {
|
|
|
531
602
|
},
|
|
532
603
|
],
|
|
533
604
|
node: {
|
|
534
|
-
operator
|
|
605
|
+
operator,
|
|
535
606
|
url: nodeUrl,
|
|
536
607
|
},
|
|
537
608
|
pricing: [
|
|
@@ -541,7 +612,7 @@ async function discoverHyperbeamAoBundlerProfile(options) {
|
|
|
541
612
|
amount: "{bytes}",
|
|
542
613
|
resource: "arweave-bytes",
|
|
543
614
|
},
|
|
544
|
-
quotePath: "/~
|
|
615
|
+
quotePath: "/~arweave-byte-pricing@1.0/quote",
|
|
545
616
|
},
|
|
546
617
|
],
|
|
547
618
|
tokens: [
|
|
@@ -553,6 +624,7 @@ async function discoverHyperbeamAoBundlerProfile(options) {
|
|
|
553
624
|
method: "POST",
|
|
554
625
|
path: "/~ao-payment@1.0/ingest",
|
|
555
626
|
query: {
|
|
627
|
+
ledger: "{ledgerId}",
|
|
556
628
|
"message-id": "{messageId}",
|
|
557
629
|
quantity: "{quantity}",
|
|
558
630
|
recipient: "{recipient}",
|
|
@@ -571,6 +643,7 @@ async function discoverHyperbeamAoBundlerProfile(options) {
|
|
|
571
643
|
Action: "Transfer",
|
|
572
644
|
Quantity: "{quantity}",
|
|
573
645
|
Recipient: "{depositAddress}",
|
|
646
|
+
"X-HB-Recipient": "{recipient}",
|
|
574
647
|
},
|
|
575
648
|
},
|
|
576
649
|
},
|
|
@@ -578,18 +651,27 @@ async function discoverHyperbeamAoBundlerProfile(options) {
|
|
|
578
651
|
version: "hyperbalance@0.1",
|
|
579
652
|
};
|
|
580
653
|
}
|
|
581
|
-
async function
|
|
582
|
-
const response = await fetcher(`${nodeUrl}
|
|
654
|
+
async function fetchRequiredHyperbeamText(fetcher, nodeUrl, path, label) {
|
|
655
|
+
const response = await fetcher(`${nodeUrl}${path}`, {
|
|
583
656
|
headers: { accept: "text/plain" },
|
|
584
657
|
});
|
|
585
658
|
if (!response.ok) {
|
|
586
|
-
throw new Error(`HyperBEAM
|
|
659
|
+
throw new Error(`HyperBEAM ${label} request failed: ${response.status} ${response.statusText}`);
|
|
587
660
|
}
|
|
588
|
-
const
|
|
589
|
-
if (!
|
|
590
|
-
throw new Error(
|
|
661
|
+
const value = (await response.text()).trim();
|
|
662
|
+
if (!value) {
|
|
663
|
+
throw new Error(`HyperBEAM ${label} response was empty`);
|
|
664
|
+
}
|
|
665
|
+
return value;
|
|
666
|
+
}
|
|
667
|
+
async function fetchOptionalHyperbeamText(fetcher, nodeUrl, path) {
|
|
668
|
+
const response = await fetcher(`${nodeUrl}${path}`, {
|
|
669
|
+
headers: { accept: "text/plain" },
|
|
670
|
+
});
|
|
671
|
+
if (!response.ok) {
|
|
672
|
+
return undefined;
|
|
591
673
|
}
|
|
592
|
-
return
|
|
674
|
+
return (await response.text()).trim() || undefined;
|
|
593
675
|
}
|
|
594
676
|
|
|
595
677
|
const require$1 = createRequire(import.meta.url);
|
|
@@ -1110,4 +1192,4 @@ async function runUploadWorkflow(deployKey, config, io) {
|
|
|
1110
1192
|
}
|
|
1111
1193
|
|
|
1112
1194
|
export { chalk as c, hyperbeamBundlerLink as h, runUploadWorkflow as r };
|
|
1113
|
-
//# sourceMappingURL=upload-workflow-
|
|
1195
|
+
//# sourceMappingURL=upload-workflow-BnN8mhkm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload-workflow-BnN8mhkm.js","sources":["../../src/utils/chalk.ts","../../node_modules/.pnpm/@permaweb+hyperbalance@0.1.0_bufferutil@4.1.0_utf-8-validate@6.0.6/node_modules/@permaweb/hyperbalance/dist/errors.js","../../node_modules/.pnpm/@permaweb+hyperbalance@0.1.0_bufferutil@4.1.0_utf-8-validate@6.0.6/node_modules/@permaweb/hyperbalance/dist/discovery.js","../../node_modules/.pnpm/@permaweb+hyperbalance@0.1.0_bufferutil@4.1.0_utf-8-validate@6.0.6/node_modules/@permaweb/hyperbalance/dist/lookup.js","../../node_modules/.pnpm/@permaweb+hyperbalance@0.1.0_bufferutil@4.1.0_utf-8-validate@6.0.6/node_modules/@permaweb/hyperbalance/dist/parse.js","../../node_modules/.pnpm/@permaweb+hyperbalance@0.1.0_bufferutil@4.1.0_utf-8-validate@6.0.6/node_modules/@permaweb/hyperbalance/dist/templates.js","../../node_modules/.pnpm/@permaweb+hyperbalance@0.1.0_bufferutil@4.1.0_utf-8-validate@6.0.6/node_modules/@permaweb/hyperbalance/dist/client.js","../../node_modules/.pnpm/@permaweb+hyperbalance@0.1.0_bufferutil@4.1.0_utf-8-validate@6.0.6/node_modules/@permaweb/hyperbalance/dist/adapters/ao.js","../../node_modules/.pnpm/@permaweb+hyperbalance@0.1.0_bufferutil@4.1.0_utf-8-validate@6.0.6/node_modules/@permaweb/hyperbalance/dist/conventions.js","../../src/utils/hyperbeam-uploader.ts","../../src/workflows/upload-workflow.ts"],"sourcesContent":["const RESET = '\\u001B[0m'\nconst WHITE = '\\u001B[37m'\nconst BG_BLACK = '\\u001B[40m'\n\nconst colorCodes = [\n ['bold', '\\u001B[1m'],\n ['dim', '\\u001B[2m'],\n ['italic', '\\u001B[3m'],\n ['underline', '\\u001B[4m'],\n ['inverse', '\\u001B[7m'],\n ['strikethrough', '\\u001B[9m'],\n\n ['black', '\\u001B[30m'],\n ['red', '\\u001B[31m'],\n ['green', '\\u001B[32m'],\n ['yellow', '\\u001B[33m'],\n ['blue', '\\u001B[34m'],\n ['magenta', '\\u001B[35m'],\n ['cyan', '\\u001B[36m'],\n ['white', WHITE],\n ['gray', '\\u001B[90m'],\n ['grey', '\\u001B[90m'],\n\n ['blackBright', '\\u001B[90m'],\n ['redBright', '\\u001B[91m'],\n ['greenBright', '\\u001B[92m'],\n ['yellowBright', '\\u001B[93m'],\n ['blueBright', '\\u001B[94m'],\n ['magentaBright', '\\u001B[95m'],\n ['cyanBright', '\\u001B[96m'],\n ['whiteBright', '\\u001B[97m'],\n\n ['bgBlack', BG_BLACK],\n ['bgRed', '\\u001B[41m'],\n ['bgGreen', '\\u001B[42m'],\n ['bgYellow', '\\u001B[43m'],\n ['bgBlue', '\\u001B[44m'],\n ['bgMagenta', '\\u001B[45m'],\n ['bgCyan', '\\u001B[46m'],\n ['bgWhite', '\\u001B[47m'],\n ['bgBlackBright', '\\u001B[100m'],\n] as const\n\ntype ColorName = (typeof colorCodes)[number][0]\ntype ColorFunction = (text: unknown) => string\ntype Chalk = {\n highlight: ColorFunction\n} & Record<ColorName, ColorFunction>\n\nconst createColorFunction =\n (code: string): ColorFunction =>\n (text) =>\n `${code}${String(text)}${RESET}`\n\nconst colorFunctions = {} as Record<ColorName, ColorFunction>\n\nfor (const [name, code] of colorCodes) {\n colorFunctions[name] = createColorFunction(code)\n}\n\nexport const chalk: Chalk = Object.assign(colorFunctions, {\n highlight: (text: unknown) => `${BG_BLACK}${WHITE}${String(text)} ${RESET}`,\n})\n","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 paidRequest(request) {\n const profile = request.profile ?? (await this.discover());\n const targetOptions = {};\n if (request.ledgerId !== undefined)\n targetOptions.ledgerId = request.ledgerId;\n if (request.tokenId !== undefined)\n targetOptions.tokenId = request.tokenId;\n if (request.transferAdapter !== undefined)\n targetOptions.transferKind = request.transferAdapter.kind;\n const { ledger, token } = selectFundingTarget(profile, targetOptions);\n const quoted = request.quote ? await this.quote(buildQuoteRequest(profile, request.quote)) : undefined;\n const minimumBalance = maxBigint(request.minimumBalance ?? 0n, quoted?.amount ?? 0n);\n let before = await this.getBalance({\n address: request.signerAddress,\n ledgerId: ledger.id,\n profile,\n });\n let funding;\n if (before.value < minimumBalance) {\n if (!request.transferAdapter) {\n throw new PaymentRequiredError(\"Payment is required, but no transfer adapter was provided\", minimumBalance, before.value);\n }\n funding = await this.ensureCredit({\n ledgerId: ledger.id,\n minimumBalance,\n profile,\n recipient: request.signerAddress,\n tokenId: token.id,\n transferAdapter: request.transferAdapter,\n });\n before = funding.after;\n }\n const fields = { ...request.fields };\n fields[\"signing-format\"] ??= \"httpsig\";\n const response = await request.send(fields);\n const after = request.readBalanceAfter === false\n ? undefined\n : await this.getBalance({\n address: request.signerAddress,\n ledgerId: ledger.id,\n profile,\n });\n return {\n ...(after !== undefined && { after }),\n before,\n ...(funding !== undefined && { funding }),\n minimumBalance,\n ...(quoted !== undefined && { quote: quoted }),\n response,\n signerAddress: request.signerAddress,\n };\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 const body = (await response.text().catch(() => \"\")).trim();\n const details = body ? `: ${body}` : \"\";\n throw new Error(`Deposit import failed: ${response.status} ${response.statusText}${details}`);\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}\nfunction buildQuoteRequest(profile, quote) {\n const request = {\n action: quote.action,\n profile,\n };\n if (quote.params !== undefined)\n request.params = quote.params;\n return request;\n}\nfunction maxBigint(left, right) {\n return left > right ? left : right;\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 tokenId = options.tokenId ?? DEFAULT_AO_TOKEN_ID;\n const operator = await fetchRequiredHyperbeamText(fetcher, nodeUrl, \"/~meta@1.0/info/address\", \"operator address\");\n const depositAddress = (await fetchOptionalHyperbeamText(fetcher, nodeUrl, \"/~meta@1.0/info/ao-payment-deposit-address\")) ?? operator;\n const advertisedLedgerId = await fetchOptionalHyperbeamText(fetcher, nodeUrl, \"/~meta@1.0/info/ao-payment-ledger\");\n const ledgerId = options.ledgerId ?? advertisedLedgerId ?? HYPERBEAM_DEFAULT_LEDGER_ID;\n const ledgerRoute = options.ledgerRoute ?? HYPERBEAM_DEFAULT_LEDGER_ROUTE;\n const balancePath = options.ledgerRoute === undefined && advertisedLedgerId\n ? \"/~p4@1.0/balance?target={address}\"\n : `${ledgerRoute}/now/balance/{address}`;\n return {\n ledgers: [\n {\n balancePath,\n id: ledgerId,\n route: ledgerRoute,\n type: \"process-ledger@1.0\",\n unit: \"AO\",\n },\n ],\n node: {\n operator,\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: \"/~arweave-byte-pricing@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 ledger: \"{ledgerId}\",\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 \"X-HB-Recipient\": \"{recipient}\",\n },\n },\n },\n ],\n version: \"hyperbalance@0.1\",\n };\n}\nasync function fetchRequiredHyperbeamText(fetcher, nodeUrl, path, label) {\n const response = await fetcher(`${nodeUrl}${path}`, {\n headers: { accept: \"text/plain\" },\n });\n if (!response.ok) {\n throw new Error(`HyperBEAM ${label} request failed: ${response.status} ${response.statusText}`);\n }\n const value = (await response.text()).trim();\n if (!value) {\n throw new Error(`HyperBEAM ${label} response was empty`);\n }\n return value;\n}\nasync function fetchOptionalHyperbeamText(fetcher, nodeUrl, path) {\n const response = await fetcher(`${nodeUrl}${path}`, {\n headers: { accept: \"text/plain\" },\n });\n if (!response.ok) {\n return undefined;\n }\n return (await response.text()).trim() || undefined;\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 '@permaweb/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 ora from 'ora'\n\nimport type { SignerType } from '../types/index.js'\nimport { cleanupCache, loadCache, saveCache } from '../utils/cache.js'\nimport { chalk } from '../utils/chalk.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":[1,2,3,4,5,6,7,8]}
|
package/dist/commands/deploy.js
CHANGED
|
@@ -6,9 +6,9 @@ import ora from 'ora';
|
|
|
6
6
|
import { deployFlagConfigs } from '../constants/flags.js';
|
|
7
7
|
import { promptAdvancedOptions } from '../prompts/arns.js';
|
|
8
8
|
import { getWalletConfig } from '../prompts/wallet.js';
|
|
9
|
-
import { c as chalk, r as runUploadWorkflow, h as hyperbeamBundlerLink } from '../chunks/upload-workflow-
|
|
9
|
+
import { c as chalk, r as runUploadWorkflow, h as hyperbeamBundlerLink } from '../chunks/upload-workflow-BnN8mhkm.js';
|
|
10
10
|
import { extractFlags, resolveConfig } from '../utils/config-resolver.js';
|
|
11
|
-
import { f as formatDisplayRows, a as formatUploadError } from '../chunks/display-
|
|
11
|
+
import { f as formatDisplayRows, a as formatUploadError } from '../chunks/display-WYdGiMxZ.js';
|
|
12
12
|
import { expandPath } from '../utils/path.js';
|
|
13
13
|
import { createSigner } from '../utils/signer.js';
|
|
14
14
|
|
package/dist/commands/upload.js
CHANGED
|
@@ -2,9 +2,9 @@ import fs from 'node:fs';
|
|
|
2
2
|
import { Command } from '@oclif/core';
|
|
3
3
|
import { uploadFlagConfigs } from '../constants/flags.js';
|
|
4
4
|
import { getWalletConfig } from '../prompts/wallet.js';
|
|
5
|
-
import { c as chalk, r as runUploadWorkflow, h as hyperbeamBundlerLink } from '../chunks/upload-workflow-
|
|
5
|
+
import { c as chalk, r as runUploadWorkflow, h as hyperbeamBundlerLink } from '../chunks/upload-workflow-BnN8mhkm.js';
|
|
6
6
|
import { extractFlags, resolveConfig } from '../utils/config-resolver.js';
|
|
7
|
-
import { b as formatUploadSize, c as formatUploadCost, f as formatDisplayRows, a as formatUploadError } from '../chunks/display-
|
|
7
|
+
import { b as formatUploadSize, c as formatUploadCost, f as formatDisplayRows, a as formatUploadError } from '../chunks/display-WYdGiMxZ.js';
|
|
8
8
|
import { expandPath } from '../utils/path.js';
|
|
9
9
|
|
|
10
10
|
class Upload extends Command {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hyperbeam-uploader.d.ts","sourceRoot":"","sources":["../../../src/utils/hyperbeam-uploader.ts"],"names":[],"mappings":"AAMA,OAAO,EAIL,KAAK,aAAa,EAElB,KAAK,mBAAmB,EAIzB,MAAM,
|
|
1
|
+
{"version":3,"file":"hyperbeam-uploader.d.ts","sourceRoot":"","sources":["../../../src/utils/hyperbeam-uploader.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import 'node:path';
|
|
|
3
3
|
import '@ardrive/turbo-sdk';
|
|
4
4
|
import 'ora';
|
|
5
5
|
import '../chunks/uploader-CC-qBdlV.js';
|
|
6
|
-
export { r as runUploadWorkflow } from '../chunks/upload-workflow-
|
|
6
|
+
export { r as runUploadWorkflow } from '../chunks/upload-workflow-BnN8mhkm.js';
|
|
7
7
|
import '../utils/path.js';
|
|
8
8
|
import '../utils/signer.js';
|
|
9
9
|
//# sourceMappingURL=upload-workflow.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "permaweb-deploy",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Permaweb App Deployment Package",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"@inquirer/prompts": "^7.2.0",
|
|
59
59
|
"@oclif/core": "^4.0.30",
|
|
60
60
|
"@permaweb/aoconnect": "^0.0.85",
|
|
61
|
-
"hyperbalance": "
|
|
61
|
+
"@permaweb/hyperbalance": "^0.1.0",
|
|
62
62
|
"mime-types": "^3.0.1",
|
|
63
63
|
"ora": "^8.1.1",
|
|
64
64
|
"p-limit": "^7.2.0"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload-workflow-CfCTs0EW.js","sources":["../../src/utils/chalk.ts","../../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":["const RESET = '\\u001B[0m'\nconst WHITE = '\\u001B[37m'\nconst BG_BLACK = '\\u001B[40m'\n\nconst colorCodes = [\n ['bold', '\\u001B[1m'],\n ['dim', '\\u001B[2m'],\n ['italic', '\\u001B[3m'],\n ['underline', '\\u001B[4m'],\n ['inverse', '\\u001B[7m'],\n ['strikethrough', '\\u001B[9m'],\n\n ['black', '\\u001B[30m'],\n ['red', '\\u001B[31m'],\n ['green', '\\u001B[32m'],\n ['yellow', '\\u001B[33m'],\n ['blue', '\\u001B[34m'],\n ['magenta', '\\u001B[35m'],\n ['cyan', '\\u001B[36m'],\n ['white', WHITE],\n ['gray', '\\u001B[90m'],\n ['grey', '\\u001B[90m'],\n\n ['blackBright', '\\u001B[90m'],\n ['redBright', '\\u001B[91m'],\n ['greenBright', '\\u001B[92m'],\n ['yellowBright', '\\u001B[93m'],\n ['blueBright', '\\u001B[94m'],\n ['magentaBright', '\\u001B[95m'],\n ['cyanBright', '\\u001B[96m'],\n ['whiteBright', '\\u001B[97m'],\n\n ['bgBlack', BG_BLACK],\n ['bgRed', '\\u001B[41m'],\n ['bgGreen', '\\u001B[42m'],\n ['bgYellow', '\\u001B[43m'],\n ['bgBlue', '\\u001B[44m'],\n ['bgMagenta', '\\u001B[45m'],\n ['bgCyan', '\\u001B[46m'],\n ['bgWhite', '\\u001B[47m'],\n ['bgBlackBright', '\\u001B[100m'],\n] as const\n\ntype ColorName = (typeof colorCodes)[number][0]\ntype ColorFunction = (text: unknown) => string\ntype Chalk = {\n highlight: ColorFunction\n} & Record<ColorName, ColorFunction>\n\nconst createColorFunction =\n (code: string): ColorFunction =>\n (text) =>\n `${code}${String(text)}${RESET}`\n\nconst colorFunctions = {} as Record<ColorName, ColorFunction>\n\nfor (const [name, code] of colorCodes) {\n colorFunctions[name] = createColorFunction(code)\n}\n\nexport const chalk: Chalk = Object.assign(colorFunctions, {\n highlight: (text: unknown) => `${BG_BLACK}${WHITE}${String(text)} ${RESET}`,\n})\n","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 ora from 'ora'\n\nimport type { SignerType } from '../types/index.js'\nimport { cleanupCache, loadCache, saveCache } from '../utils/cache.js'\nimport { chalk } from '../utils/chalk.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":[1,2,3,4,5,6,7,8]}
|