permaweb-deploy 3.4.4 → 3.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{display-BgIiyBIu.js → display-y6lAuqxZ.js} +14 -21
- package/dist/chunks/display-y6lAuqxZ.js.map +1 -0
- package/dist/chunks/{upload-workflow-DMKlwZve.js → upload-workflow-CfCTs0EW.js} +50 -4
- package/dist/chunks/upload-workflow-CfCTs0EW.js.map +1 -0
- package/dist/chunks/{uploader-CIHu22Fw.js → uploader-CC-qBdlV.js} +3 -2
- package/dist/chunks/{uploader-CIHu22Fw.js.map → uploader-CC-qBdlV.js.map} +1 -1
- package/dist/commands/deploy.js +34 -98
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/upload.js +22 -60
- package/dist/commands/upload.js.map +1 -1
- package/dist/src/commands/deploy.d.ts.map +1 -1
- package/dist/src/commands/upload.d.ts.map +1 -1
- package/dist/src/utils/chalk.d.ts +9 -0
- package/dist/src/utils/chalk.d.ts.map +1 -0
- package/dist/src/utils/display.d.ts +3 -1
- package/dist/src/utils/display.d.ts.map +1 -1
- package/dist/src/utils/uploader.d.ts.map +1 -1
- package/dist/utils/uploader.js +1 -1
- package/dist/workflows/upload-workflow.js +2 -3
- package/dist/workflows/upload-workflow.js.map +1 -1
- package/package.json +2 -5
- package/dist/chunks/display-BgIiyBIu.js.map +0 -1
- package/dist/chunks/upload-workflow-DMKlwZve.js.map +0 -1
package/dist/commands/deploy.js
CHANGED
|
@@ -2,16 +2,13 @@ import fs from 'node:fs';
|
|
|
2
2
|
import { ARIO, AOProcess, ANT } from '@ar.io/sdk';
|
|
3
3
|
import { Command } from '@oclif/core';
|
|
4
4
|
import { connect } from '@permaweb/aoconnect';
|
|
5
|
-
import boxen from 'boxen';
|
|
6
|
-
import chalk from 'chalk';
|
|
7
|
-
import Table from 'cli-table3';
|
|
8
5
|
import ora from 'ora';
|
|
9
6
|
import { deployFlagConfigs } from '../constants/flags.js';
|
|
10
7
|
import { promptAdvancedOptions } from '../prompts/arns.js';
|
|
11
8
|
import { getWalletConfig } from '../prompts/wallet.js';
|
|
9
|
+
import { c as chalk, r as runUploadWorkflow, h as hyperbeamBundlerLink } from '../chunks/upload-workflow-CfCTs0EW.js';
|
|
12
10
|
import { extractFlags, resolveConfig } from '../utils/config-resolver.js';
|
|
13
|
-
import {
|
|
14
|
-
import { r as runUploadWorkflow, h as hyperbeamBundlerLink } from '../chunks/upload-workflow-DMKlwZve.js';
|
|
11
|
+
import { f as formatDisplayRows, a as formatUploadError } from '../chunks/display-y6lAuqxZ.js';
|
|
15
12
|
import { expandPath } from '../utils/path.js';
|
|
16
13
|
import { createSigner } from '../utils/signer.js';
|
|
17
14
|
|
|
@@ -33,7 +30,7 @@ class Deploy extends Command {
|
|
|
33
30
|
const useArns = Boolean(flags["use-arns"] || flags["arns-name"]);
|
|
34
31
|
const interactive = useArns && !flags["arns-name"];
|
|
35
32
|
if (interactive) {
|
|
36
|
-
this.log(chalk.
|
|
33
|
+
this.log(chalk.bold(chalk.cyan("\nInteractive ArNS Deployment Mode\n")));
|
|
37
34
|
}
|
|
38
35
|
const baseConfig = await resolveConfig(deployFlagConfigs, flags, {
|
|
39
36
|
interactive
|
|
@@ -101,7 +98,7 @@ class Deploy extends Command {
|
|
|
101
98
|
);
|
|
102
99
|
}
|
|
103
100
|
}
|
|
104
|
-
this.log(chalk.
|
|
101
|
+
this.log(chalk.bold(chalk.cyan("\nStarting deployment...\n")));
|
|
105
102
|
try {
|
|
106
103
|
if (!deployConfig["use-arns"]) {
|
|
107
104
|
const { transactionId: txOrManifestId2 } = await runUploadWorkflow(
|
|
@@ -112,53 +109,24 @@ class Deploy extends Command {
|
|
|
112
109
|
}
|
|
113
110
|
);
|
|
114
111
|
this.log("");
|
|
115
|
-
const isCI2 = Boolean(process.env.CI);
|
|
116
112
|
const bundlerLink2 = deployConfig["uploader-type"] === "hyperbeam" && deployConfig.uploader ? hyperbeamBundlerLink(
|
|
117
113
|
deployConfig.uploader,
|
|
118
114
|
txOrManifestId2,
|
|
119
115
|
!deployConfig["deploy-file"]
|
|
120
116
|
) : void 0;
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
this.log("Uploader type: " + deployConfig["uploader-type"]);
|
|
127
|
-
}
|
|
128
|
-
if (bundlerLink2) {
|
|
129
|
-
this.log("Bundler link: " + bundlerLink2);
|
|
130
|
-
}
|
|
131
|
-
this.log(`Arweave URL: https://arweave.net/${txOrManifestId2}`);
|
|
132
|
-
} else {
|
|
133
|
-
const table = new Table({
|
|
134
|
-
style: {
|
|
135
|
-
head: []
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
table.push(
|
|
139
|
-
["Tx ID", chalk.green(txOrManifestId2)],
|
|
140
|
-
...deployConfig.uploader ? [
|
|
141
|
-
["Bundler service", chalk.cyan(deployConfig.uploader)],
|
|
142
|
-
["Uploader type", chalk.cyan(deployConfig["uploader-type"])]
|
|
143
|
-
] : [],
|
|
144
|
-
...bundlerLink2 ? [["Bundler link", chalk.yellow(bundlerLink2)]] : [],
|
|
145
|
-
["Arweave URL", chalk.yellow(`https://arweave.net/${txOrManifestId2}`)]
|
|
146
|
-
);
|
|
147
|
-
const successMessage = boxen(
|
|
148
|
-
`${chalk.green.bold("Deployment Successful!")}
|
|
149
|
-
|
|
150
|
-
${table.toString()}`,
|
|
151
|
-
{
|
|
152
|
-
borderColor: "green",
|
|
153
|
-
borderStyle: "round",
|
|
154
|
-
padding: 1,
|
|
155
|
-
title: chalk.bold("Permaweb Deploy"),
|
|
156
|
-
titleAlignment: "center"
|
|
157
|
-
}
|
|
117
|
+
const rows2 = [["Tx ID", chalk.green(txOrManifestId2)]];
|
|
118
|
+
if (deployConfig.uploader) {
|
|
119
|
+
rows2.push(
|
|
120
|
+
["Bundler service", chalk.cyan(deployConfig.uploader)],
|
|
121
|
+
["Uploader type", chalk.cyan(deployConfig["uploader-type"])]
|
|
158
122
|
);
|
|
159
|
-
this.log(`
|
|
160
|
-
${successMessage}`);
|
|
161
123
|
}
|
|
124
|
+
if (bundlerLink2) {
|
|
125
|
+
rows2.push(["Bundler link", chalk.yellow(bundlerLink2)]);
|
|
126
|
+
}
|
|
127
|
+
rows2.push(["Arweave URL", chalk.yellow(`https://arweave.net/${txOrManifestId2}`)]);
|
|
128
|
+
this.log(chalk.bold(chalk.green("Deployment Successful!")));
|
|
129
|
+
this.log(formatDisplayRows(rows2));
|
|
162
130
|
return;
|
|
163
131
|
}
|
|
164
132
|
const arioProcess = deployConfig["ario-process"];
|
|
@@ -215,69 +183,37 @@ ${successMessage}`);
|
|
|
215
183
|
}
|
|
216
184
|
);
|
|
217
185
|
spinner.succeed("ANT record updated");
|
|
218
|
-
const isCI = Boolean(process.env.CI);
|
|
219
186
|
const bundlerLink = deployConfig["uploader-type"] === "hyperbeam" && deployConfig.uploader ? hyperbeamBundlerLink(
|
|
220
187
|
deployConfig.uploader,
|
|
221
188
|
txOrManifestId,
|
|
222
189
|
!deployConfig["deploy-file"]
|
|
223
190
|
) : void 0;
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
this.log("Uploader type: " + deployConfig["uploader-type"]);
|
|
230
|
-
}
|
|
231
|
-
if (bundlerLink) {
|
|
232
|
-
this.log("Bundler link: " + bundlerLink);
|
|
233
|
-
}
|
|
234
|
-
this.log("ArNS Name: " + arnsName);
|
|
235
|
-
this.log("Undername: " + deployConfig.undername);
|
|
236
|
-
this.log("ANT: " + arnsNameRecord.processId);
|
|
237
|
-
this.log("ARIO Process: " + arioProcess);
|
|
238
|
-
this.log("TTL Seconds: " + deployConfig["ttl-seconds"]);
|
|
239
|
-
this.log(`Arweave URL: https://arweave.net/${txOrManifestId}`);
|
|
240
|
-
} else {
|
|
241
|
-
const table = new Table({
|
|
242
|
-
style: {
|
|
243
|
-
head: []
|
|
244
|
-
}
|
|
245
|
-
});
|
|
246
|
-
table.push(
|
|
247
|
-
["Tx ID", chalk.green(txOrManifestId)],
|
|
248
|
-
...deployConfig.uploader ? [
|
|
249
|
-
["Bundler service", chalk.cyan(deployConfig.uploader)],
|
|
250
|
-
["Uploader type", chalk.cyan(deployConfig["uploader-type"])]
|
|
251
|
-
] : [],
|
|
252
|
-
...bundlerLink ? [["Bundler link", chalk.yellow(bundlerLink)]] : [],
|
|
253
|
-
["ArNS Name", chalk.yellow(arnsName)],
|
|
254
|
-
["Undername", chalk.yellow(deployConfig.undername)],
|
|
255
|
-
["ANT", chalk.cyan(arnsNameRecord.processId)],
|
|
256
|
-
["ARIO Process", chalk.gray(arioProcess)],
|
|
257
|
-
["TTL Seconds", chalk.blue(deployConfig["ttl-seconds"])],
|
|
258
|
-
["Arweave URL", chalk.yellow(`https://arweave.net/${txOrManifestId}`)]
|
|
191
|
+
const rows = [["Tx ID", chalk.green(txOrManifestId)]];
|
|
192
|
+
if (deployConfig.uploader) {
|
|
193
|
+
rows.push(
|
|
194
|
+
["Bundler service", chalk.cyan(deployConfig.uploader)],
|
|
195
|
+
["Uploader type", chalk.cyan(deployConfig["uploader-type"])]
|
|
259
196
|
);
|
|
260
|
-
const successMessage = boxen(
|
|
261
|
-
`${chalk.green.bold("Deployment Successful!")}
|
|
262
|
-
|
|
263
|
-
${table.toString()}`,
|
|
264
|
-
{
|
|
265
|
-
borderColor: "green",
|
|
266
|
-
borderStyle: "round",
|
|
267
|
-
padding: 1,
|
|
268
|
-
title: chalk.bold("Permaweb Deploy"),
|
|
269
|
-
titleAlignment: "center"
|
|
270
|
-
}
|
|
271
|
-
);
|
|
272
|
-
this.log(`
|
|
273
|
-
${successMessage}`);
|
|
274
197
|
}
|
|
198
|
+
if (bundlerLink) {
|
|
199
|
+
rows.push(["Bundler link", chalk.yellow(bundlerLink)]);
|
|
200
|
+
}
|
|
201
|
+
rows.push(
|
|
202
|
+
["ArNS Name", chalk.yellow(arnsName)],
|
|
203
|
+
["Undername", chalk.yellow(deployConfig.undername)],
|
|
204
|
+
["ANT", chalk.cyan(arnsNameRecord.processId)],
|
|
205
|
+
["ARIO Process", chalk.gray(arioProcess)],
|
|
206
|
+
["TTL Seconds", chalk.blue(deployConfig["ttl-seconds"])],
|
|
207
|
+
["Arweave URL", chalk.yellow(`https://arweave.net/${txOrManifestId}`)]
|
|
208
|
+
);
|
|
209
|
+
this.log(chalk.bold(chalk.green("Deployment Successful!")));
|
|
210
|
+
this.log(formatDisplayRows(rows));
|
|
275
211
|
} catch (error) {
|
|
276
212
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
277
213
|
const normalizedError = errorMessage.startsWith("Upload failed:") ? errorMessage.replace(/^Upload failed:\s*/, "") : errorMessage;
|
|
278
214
|
if (errorMessage.startsWith("Upload failed:") && !process.env.CI && process.stdout.isTTY) {
|
|
279
215
|
this.log(`
|
|
280
|
-
${
|
|
216
|
+
${formatUploadError(normalizedError, "Deployment failed")}`);
|
|
281
217
|
this.exit(1);
|
|
282
218
|
}
|
|
283
219
|
this.error(chalk.red(`Deployment failed: ${errorMessage}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sources":["../../src/commands/deploy.ts"],"sourcesContent":["import fs from 'node:fs'\n\nimport { ANT, AOProcess, ARIO } from '@ar.io/sdk'\nimport { Command } from '@oclif/core'\nimport { connect } from '@permaweb/aoconnect'\nimport boxen from 'boxen'\nimport chalk from 'chalk'\n// eslint-disable-next-line import/no-named-as-default\nimport Table from 'cli-table3'\nimport ora from 'ora'\n\nimport { type DeployConfig, deployFlagConfigs } from '../constants/flags.js'\nimport { promptAdvancedOptions } from '../prompts/arns.js'\nimport { getWalletConfig } from '../prompts/wallet.js'\nimport type { SignerType } from '../types/index.js'\nimport { extractFlags, resolveConfig } from '../utils/config-resolver.js'\nimport { uploadErrorTable } from '../utils/display.js'\nimport { hyperbeamBundlerLink } from '../utils/hyperbeam-uploader.js'\nimport { expandPath } from '../utils/path.js'\nimport { createSigner } from '../utils/signer.js'\nimport { runUploadWorkflow } from '../workflows/upload-workflow.js'\n\nexport default class Deploy extends Command {\n static override args = {}\n\n static override description = 'Deploy an application to the permaweb with optional ArNS update'\n\n static override examples = [\n '<%= config.bin %> deploy --wallet ./wallet.json',\n '<%= config.bin %> deploy --wallet ./wallet.json --deploy-folder ./dist',\n '<%= config.bin %> deploy --wallet ./wallet.json --deploy-file ./dist/index.html',\n '<%= config.bin %> deploy --wallet ./wallet.json --uploader-type hyperbeam --uploader https://hyperbeam.example.com',\n '<%= config.bin %> deploy --wallet ./wallet.json --use-arns --arns-name my-app',\n '<%= config.bin %> deploy --wallet ./wallet.json --use-arns --arns-name my-app --undername staging',\n ]\n\n static override flags = extractFlags(deployFlagConfigs)\n\n public async run(): Promise<void> {\n try {\n const { flags } = await this.parse(Deploy)\n\n const useArns = Boolean(flags['use-arns'] || flags['arns-name'])\n const interactive = useArns && !flags['arns-name']\n\n if (interactive) {\n this.log(chalk.cyan.bold('\\nInteractive ArNS Deployment Mode\\n'))\n }\n\n const baseConfig = (await resolveConfig<typeof deployFlagConfigs>(deployFlagConfigs, flags, {\n interactive,\n })) as DeployConfig\n\n let walletConfig: { privateKey?: string; wallet?: string } = {\n privateKey: baseConfig['private-key'],\n wallet: baseConfig.wallet,\n }\n\n const shouldPromptWallet =\n !baseConfig.wallet &&\n !baseConfig['private-key'] &&\n (interactive || !process.env.DEPLOY_KEY?.trim())\n\n if (shouldPromptWallet) {\n const config = await getWalletConfig()\n walletConfig = {\n privateKey: config.privateKey,\n wallet: config.wallet,\n }\n }\n\n let advancedOptions:\n | {\n arioProcess: string\n maxTokenAmount?: string\n onDemand?: string\n ttlSeconds: string\n undername: string\n }\n | undefined\n\n if (interactive) {\n const options = await promptAdvancedOptions()\n advancedOptions = options || undefined\n }\n\n const effectiveCacheMaxEntries = baseConfig['no-dedupe']\n ? 0\n : baseConfig['dedupe-cache-max-entries']\n\n const deployConfig: DeployConfig = {\n 'ario-process': advancedOptions?.arioProcess || baseConfig['ario-process'],\n 'arns-name': baseConfig['arns-name'],\n 'dedupe-cache-max-entries': effectiveCacheMaxEntries,\n 'deploy-file': baseConfig['deploy-file'],\n 'deploy-folder': baseConfig['deploy-folder'],\n 'hyperbeam-ao-state-url': baseConfig['hyperbeam-ao-state-url'],\n 'hyperbeam-auto-fund': baseConfig['hyperbeam-auto-fund'],\n 'hyperbeam-fund-amount': baseConfig['hyperbeam-fund-amount'],\n 'hyperbeam-ledger-id': baseConfig['hyperbeam-ledger-id'],\n 'hyperbeam-token-id': baseConfig['hyperbeam-token-id'],\n 'hyperbeam-upload-path': baseConfig['hyperbeam-upload-path'],\n 'max-token-amount': advancedOptions?.maxTokenAmount || baseConfig['max-token-amount'],\n 'no-dedupe': baseConfig['no-dedupe'],\n 'on-demand': advancedOptions?.onDemand || baseConfig['on-demand'],\n 'private-key': walletConfig.privateKey,\n 'sig-type': baseConfig['sig-type'],\n 'ttl-seconds': advancedOptions?.ttlSeconds || baseConfig['ttl-seconds'],\n undername: advancedOptions?.undername || baseConfig.undername,\n uploader: baseConfig.uploader,\n 'uploader-type': baseConfig['uploader-type'],\n 'use-arns': useArns,\n wallet: walletConfig.wallet,\n }\n\n if (interactive) {\n this.log('')\n }\n\n let deployKey: string\n if (deployConfig.wallet) {\n const walletPath = expandPath(deployConfig.wallet)\n if (!fs.existsSync(walletPath)) {\n this.error(`Wallet file [${deployConfig.wallet}] does not exist`)\n }\n\n const walletContent = fs.readFileSync(walletPath, 'utf8')\n deployKey =\n deployConfig['sig-type'] === 'arweave'\n ? Buffer.from(walletContent).toString('base64')\n : walletContent.trim()\n } else if (deployConfig['private-key']) {\n deployKey =\n deployConfig['sig-type'] === 'arweave'\n ? Buffer.from(deployConfig['private-key']).toString('base64')\n : deployConfig['private-key'].trim()\n } else {\n deployKey = process.env.DEPLOY_KEY || ''\n if (!deployKey) {\n this.error(\n 'DEPLOY_KEY environment variable not set. Use --wallet, --private-key, or set DEPLOY_KEY',\n )\n }\n }\n\n this.log(chalk.cyan.bold('\\nStarting deployment...\\n'))\n try {\n if (!deployConfig['use-arns']) {\n const { transactionId: txOrManifestId } = await runUploadWorkflow(\n deployKey,\n deployConfig,\n {\n error: (msg) => this.error(msg),\n },\n )\n\n this.log('')\n\n const isCI = Boolean(process.env.CI)\n const bundlerLink =\n deployConfig['uploader-type'] === 'hyperbeam' && deployConfig.uploader\n ? hyperbeamBundlerLink(\n deployConfig.uploader,\n txOrManifestId,\n !deployConfig['deploy-file'],\n )\n : undefined\n\n if (isCI) {\n this.log('Deployment Successful!')\n this.log('Tx ID: ' + txOrManifestId)\n if (deployConfig.uploader) {\n this.log('Bundler service: ' + deployConfig.uploader)\n this.log('Uploader type: ' + deployConfig['uploader-type'])\n }\n\n if (bundlerLink) {\n this.log('Bundler link: ' + bundlerLink)\n }\n\n this.log(`Arweave URL: https://arweave.net/${txOrManifestId}`)\n } else {\n const table = new Table({\n style: {\n head: [],\n },\n })\n\n table.push(\n ['Tx ID', chalk.green(txOrManifestId)],\n ...(deployConfig.uploader\n ? ([\n ['Bundler service', chalk.cyan(deployConfig.uploader)],\n ['Uploader type', chalk.cyan(deployConfig['uploader-type'])],\n ] as [string, string][])\n : []),\n ...(bundlerLink\n ? ([['Bundler link', chalk.yellow(bundlerLink)]] as [string, string][])\n : []),\n ['Arweave URL', chalk.yellow(`https://arweave.net/${txOrManifestId}`)],\n )\n\n const successMessage = boxen(\n `${chalk.green.bold('Deployment Successful!')}\\n\\n${table.toString()}`,\n {\n borderColor: 'green',\n borderStyle: 'round',\n padding: 1,\n title: chalk.bold('Permaweb Deploy'),\n titleAlignment: 'center',\n },\n )\n\n this.log(`\\n${successMessage}`)\n }\n\n return\n }\n\n const arioProcess = deployConfig['ario-process']\n const arnsName = deployConfig['arns-name']\n if (!arnsName) {\n this.error('--use-arns requires --arns-name')\n }\n\n const spinner = ora()\n\n spinner.start('Initializing ARIO')\n\n const ao = connect({\n CU_URL: 'https://cu.ardrive.io',\n MODE: 'legacy',\n MU_URL: 'https://mu.ao-testnet.xyz',\n })\n\n const ario = ARIO.init({\n process: new AOProcess({\n ao,\n processId: arioProcess,\n }),\n })\n\n spinner.succeed('ARIO initialized')\n\n spinner.start(`Fetching ArNS record for ${chalk.yellow(arnsName)}`)\n const arnsNameRecord = await ario.getArNSRecord({ name: arnsName }).catch(() => {\n spinner.fail(`ArNS name ${chalk.red(arnsName)} does not exist`)\n this.error(`ArNS name [${arnsName}] does not exist`)\n })\n\n spinner.succeed(`ArNS record fetched for ${chalk.green(arnsName)}`)\n\n const { transactionId: txOrManifestId } = await runUploadWorkflow(deployKey, deployConfig, {\n error: (msg) => this.error(msg),\n })\n\n this.log('')\n\n spinner.start('Updating ANT record')\n const { signer } = createSigner(deployConfig['sig-type'] as SignerType, deployKey)\n const ant = ANT.init({ processId: arnsNameRecord.processId, signer })\n\n await ant.setRecord(\n {\n transactionId: txOrManifestId,\n ttlSeconds: Number.parseInt(deployConfig['ttl-seconds'], 10),\n undername: deployConfig.undername,\n },\n {\n tags: [\n {\n name: 'App-Name',\n value: 'Permaweb-Deploy',\n },\n ...(process.env.GITHUB_SHA\n ? [\n {\n name: 'GIT-HASH',\n value: process.env.GITHUB_SHA,\n },\n ]\n : []),\n ],\n },\n )\n\n spinner.succeed('ANT record updated')\n\n const isCI = Boolean(process.env.CI)\n const bundlerLink =\n deployConfig['uploader-type'] === 'hyperbeam' && deployConfig.uploader\n ? hyperbeamBundlerLink(\n deployConfig.uploader,\n txOrManifestId,\n !deployConfig['deploy-file'],\n )\n : undefined\n\n if (isCI) {\n this.log('Deployment Successful!')\n this.log('Tx ID: ' + txOrManifestId)\n if (deployConfig.uploader) {\n this.log('Bundler service: ' + deployConfig.uploader)\n this.log('Uploader type: ' + deployConfig['uploader-type'])\n }\n\n if (bundlerLink) {\n this.log('Bundler link: ' + bundlerLink)\n }\n\n this.log('ArNS Name: ' + arnsName)\n this.log('Undername: ' + deployConfig.undername)\n this.log('ANT: ' + arnsNameRecord.processId)\n this.log('ARIO Process: ' + arioProcess)\n this.log('TTL Seconds: ' + deployConfig['ttl-seconds'])\n this.log(`Arweave URL: https://arweave.net/${txOrManifestId}`)\n } else {\n const table = new Table({\n style: {\n head: [],\n },\n })\n\n table.push(\n ['Tx ID', chalk.green(txOrManifestId)],\n ...(deployConfig.uploader\n ? ([\n ['Bundler service', chalk.cyan(deployConfig.uploader)],\n ['Uploader type', chalk.cyan(deployConfig['uploader-type'])],\n ] as [string, string][])\n : []),\n ...(bundlerLink\n ? ([['Bundler link', chalk.yellow(bundlerLink)]] as [string, string][])\n : []),\n ['ArNS Name', chalk.yellow(arnsName)],\n ['Undername', chalk.yellow(deployConfig.undername)],\n ['ANT', chalk.cyan(arnsNameRecord.processId)],\n ['ARIO Process', chalk.gray(arioProcess)],\n ['TTL Seconds', chalk.blue(deployConfig['ttl-seconds'])],\n ['Arweave URL', chalk.yellow(`https://arweave.net/${txOrManifestId}`)],\n )\n\n const successMessage = boxen(\n `${chalk.green.bold('Deployment Successful!')}\\n\\n${table.toString()}`,\n {\n borderColor: 'green',\n borderStyle: 'round',\n padding: 1,\n title: chalk.bold('Permaweb Deploy'),\n titleAlignment: 'center',\n },\n )\n\n this.log(`\\n${successMessage}`)\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n const normalizedError = errorMessage.startsWith('Upload failed:')\n ? errorMessage.replace(/^Upload failed:\\s*/, '')\n : errorMessage\n\n if (errorMessage.startsWith('Upload failed:') && !process.env.CI && process.stdout.isTTY) {\n this.log(`\\n${uploadErrorTable(normalizedError, 'Deployment failed')}`)\n this.exit(1)\n }\n\n this.error(chalk.red(`Deployment failed: ${errorMessage}`))\n }\n } catch (error) {\n if (error instanceof Error && error.name === 'ExitPromptError') {\n this.log(chalk.yellow('\\n\\nDeployment cancelled'))\n this.exit(0)\n }\n\n throw error\n }\n }\n}\n"],"names":["txOrManifestId","isCI","bundlerLink"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deploy.js","sources":["../../src/commands/deploy.ts"],"sourcesContent":["import fs from 'node:fs'\n\nimport { ANT, AOProcess, ARIO } from '@ar.io/sdk'\nimport { Command } from '@oclif/core'\nimport { connect } from '@permaweb/aoconnect'\nimport ora from 'ora'\n\nimport { type DeployConfig, deployFlagConfigs } from '../constants/flags.js'\nimport { promptAdvancedOptions } from '../prompts/arns.js'\nimport { getWalletConfig } from '../prompts/wallet.js'\nimport type { SignerType } from '../types/index.js'\nimport { chalk } from '../utils/chalk.js'\nimport { extractFlags, resolveConfig } from '../utils/config-resolver.js'\nimport { type DisplayRow, formatDisplayRows, formatUploadError } from '../utils/display.js'\nimport { hyperbeamBundlerLink } from '../utils/hyperbeam-uploader.js'\nimport { expandPath } from '../utils/path.js'\nimport { createSigner } from '../utils/signer.js'\nimport { runUploadWorkflow } from '../workflows/upload-workflow.js'\n\nexport default class Deploy extends Command {\n static override args = {}\n\n static override description = 'Deploy an application to the permaweb with optional ArNS update'\n\n static override examples = [\n '<%= config.bin %> deploy --wallet ./wallet.json',\n '<%= config.bin %> deploy --wallet ./wallet.json --deploy-folder ./dist',\n '<%= config.bin %> deploy --wallet ./wallet.json --deploy-file ./dist/index.html',\n '<%= config.bin %> deploy --wallet ./wallet.json --uploader-type hyperbeam --uploader https://hyperbeam.example.com',\n '<%= config.bin %> deploy --wallet ./wallet.json --use-arns --arns-name my-app',\n '<%= config.bin %> deploy --wallet ./wallet.json --use-arns --arns-name my-app --undername staging',\n ]\n\n static override flags = extractFlags(deployFlagConfigs)\n\n public async run(): Promise<void> {\n try {\n const { flags } = await this.parse(Deploy)\n\n const useArns = Boolean(flags['use-arns'] || flags['arns-name'])\n const interactive = useArns && !flags['arns-name']\n\n if (interactive) {\n this.log(chalk.bold(chalk.cyan('\\nInteractive ArNS Deployment Mode\\n')))\n }\n\n const baseConfig = (await resolveConfig<typeof deployFlagConfigs>(deployFlagConfigs, flags, {\n interactive,\n })) as DeployConfig\n\n let walletConfig: { privateKey?: string; wallet?: string } = {\n privateKey: baseConfig['private-key'],\n wallet: baseConfig.wallet,\n }\n\n const shouldPromptWallet =\n !baseConfig.wallet &&\n !baseConfig['private-key'] &&\n (interactive || !process.env.DEPLOY_KEY?.trim())\n\n if (shouldPromptWallet) {\n const config = await getWalletConfig()\n walletConfig = {\n privateKey: config.privateKey,\n wallet: config.wallet,\n }\n }\n\n let advancedOptions:\n | {\n arioProcess: string\n maxTokenAmount?: string\n onDemand?: string\n ttlSeconds: string\n undername: string\n }\n | undefined\n\n if (interactive) {\n const options = await promptAdvancedOptions()\n advancedOptions = options || undefined\n }\n\n const effectiveCacheMaxEntries = baseConfig['no-dedupe']\n ? 0\n : baseConfig['dedupe-cache-max-entries']\n\n const deployConfig: DeployConfig = {\n 'ario-process': advancedOptions?.arioProcess || baseConfig['ario-process'],\n 'arns-name': baseConfig['arns-name'],\n 'dedupe-cache-max-entries': effectiveCacheMaxEntries,\n 'deploy-file': baseConfig['deploy-file'],\n 'deploy-folder': baseConfig['deploy-folder'],\n 'hyperbeam-ao-state-url': baseConfig['hyperbeam-ao-state-url'],\n 'hyperbeam-auto-fund': baseConfig['hyperbeam-auto-fund'],\n 'hyperbeam-fund-amount': baseConfig['hyperbeam-fund-amount'],\n 'hyperbeam-ledger-id': baseConfig['hyperbeam-ledger-id'],\n 'hyperbeam-token-id': baseConfig['hyperbeam-token-id'],\n 'hyperbeam-upload-path': baseConfig['hyperbeam-upload-path'],\n 'max-token-amount': advancedOptions?.maxTokenAmount || baseConfig['max-token-amount'],\n 'no-dedupe': baseConfig['no-dedupe'],\n 'on-demand': advancedOptions?.onDemand || baseConfig['on-demand'],\n 'private-key': walletConfig.privateKey,\n 'sig-type': baseConfig['sig-type'],\n 'ttl-seconds': advancedOptions?.ttlSeconds || baseConfig['ttl-seconds'],\n undername: advancedOptions?.undername || baseConfig.undername,\n uploader: baseConfig.uploader,\n 'uploader-type': baseConfig['uploader-type'],\n 'use-arns': useArns,\n wallet: walletConfig.wallet,\n }\n\n if (interactive) {\n this.log('')\n }\n\n let deployKey: string\n if (deployConfig.wallet) {\n const walletPath = expandPath(deployConfig.wallet)\n if (!fs.existsSync(walletPath)) {\n this.error(`Wallet file [${deployConfig.wallet}] does not exist`)\n }\n\n const walletContent = fs.readFileSync(walletPath, 'utf8')\n deployKey =\n deployConfig['sig-type'] === 'arweave'\n ? Buffer.from(walletContent).toString('base64')\n : walletContent.trim()\n } else if (deployConfig['private-key']) {\n deployKey =\n deployConfig['sig-type'] === 'arweave'\n ? Buffer.from(deployConfig['private-key']).toString('base64')\n : deployConfig['private-key'].trim()\n } else {\n deployKey = process.env.DEPLOY_KEY || ''\n if (!deployKey) {\n this.error(\n 'DEPLOY_KEY environment variable not set. Use --wallet, --private-key, or set DEPLOY_KEY',\n )\n }\n }\n\n this.log(chalk.bold(chalk.cyan('\\nStarting deployment...\\n')))\n try {\n if (!deployConfig['use-arns']) {\n const { transactionId: txOrManifestId } = await runUploadWorkflow(\n deployKey,\n deployConfig,\n {\n error: (msg) => this.error(msg),\n },\n )\n\n this.log('')\n\n const bundlerLink =\n deployConfig['uploader-type'] === 'hyperbeam' && deployConfig.uploader\n ? hyperbeamBundlerLink(\n deployConfig.uploader,\n txOrManifestId,\n !deployConfig['deploy-file'],\n )\n : undefined\n\n const rows: DisplayRow[] = [['Tx ID', chalk.green(txOrManifestId)]]\n if (deployConfig.uploader) {\n rows.push(\n ['Bundler service', chalk.cyan(deployConfig.uploader)],\n ['Uploader type', chalk.cyan(deployConfig['uploader-type'])],\n )\n }\n\n if (bundlerLink) {\n rows.push(['Bundler link', chalk.yellow(bundlerLink)])\n }\n\n rows.push(['Arweave URL', chalk.yellow(`https://arweave.net/${txOrManifestId}`)])\n\n this.log(chalk.bold(chalk.green('Deployment Successful!')))\n this.log(formatDisplayRows(rows))\n\n return\n }\n\n const arioProcess = deployConfig['ario-process']\n const arnsName = deployConfig['arns-name']\n if (!arnsName) {\n this.error('--use-arns requires --arns-name')\n }\n\n const spinner = ora()\n\n spinner.start('Initializing ARIO')\n\n const ao = connect({\n CU_URL: 'https://cu.ardrive.io',\n MODE: 'legacy',\n MU_URL: 'https://mu.ao-testnet.xyz',\n })\n\n const ario = ARIO.init({\n process: new AOProcess({\n ao,\n processId: arioProcess,\n }),\n })\n\n spinner.succeed('ARIO initialized')\n\n spinner.start(`Fetching ArNS record for ${chalk.yellow(arnsName)}`)\n const arnsNameRecord = await ario.getArNSRecord({ name: arnsName }).catch(() => {\n spinner.fail(`ArNS name ${chalk.red(arnsName)} does not exist`)\n this.error(`ArNS name [${arnsName}] does not exist`)\n })\n\n spinner.succeed(`ArNS record fetched for ${chalk.green(arnsName)}`)\n\n const { transactionId: txOrManifestId } = await runUploadWorkflow(deployKey, deployConfig, {\n error: (msg) => this.error(msg),\n })\n\n this.log('')\n\n spinner.start('Updating ANT record')\n const { signer } = createSigner(deployConfig['sig-type'] as SignerType, deployKey)\n const ant = ANT.init({ processId: arnsNameRecord.processId, signer })\n\n await ant.setRecord(\n {\n transactionId: txOrManifestId,\n ttlSeconds: Number.parseInt(deployConfig['ttl-seconds'], 10),\n undername: deployConfig.undername,\n },\n {\n tags: [\n {\n name: 'App-Name',\n value: 'Permaweb-Deploy',\n },\n ...(process.env.GITHUB_SHA\n ? [\n {\n name: 'GIT-HASH',\n value: process.env.GITHUB_SHA,\n },\n ]\n : []),\n ],\n },\n )\n\n spinner.succeed('ANT record updated')\n\n const bundlerLink =\n deployConfig['uploader-type'] === 'hyperbeam' && deployConfig.uploader\n ? hyperbeamBundlerLink(\n deployConfig.uploader,\n txOrManifestId,\n !deployConfig['deploy-file'],\n )\n : undefined\n\n const rows: DisplayRow[] = [['Tx ID', chalk.green(txOrManifestId)]]\n if (deployConfig.uploader) {\n rows.push(\n ['Bundler service', chalk.cyan(deployConfig.uploader)],\n ['Uploader type', chalk.cyan(deployConfig['uploader-type'])],\n )\n }\n\n if (bundlerLink) {\n rows.push(['Bundler link', chalk.yellow(bundlerLink)])\n }\n\n rows.push(\n ['ArNS Name', chalk.yellow(arnsName)],\n ['Undername', chalk.yellow(deployConfig.undername)],\n ['ANT', chalk.cyan(arnsNameRecord.processId)],\n ['ARIO Process', chalk.gray(arioProcess)],\n ['TTL Seconds', chalk.blue(deployConfig['ttl-seconds'])],\n ['Arweave URL', chalk.yellow(`https://arweave.net/${txOrManifestId}`)],\n )\n\n this.log(chalk.bold(chalk.green('Deployment Successful!')))\n this.log(formatDisplayRows(rows))\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n const normalizedError = errorMessage.startsWith('Upload failed:')\n ? errorMessage.replace(/^Upload failed:\\s*/, '')\n : errorMessage\n\n if (errorMessage.startsWith('Upload failed:') && !process.env.CI && process.stdout.isTTY) {\n this.log(`\\n${formatUploadError(normalizedError, 'Deployment failed')}`)\n this.exit(1)\n }\n\n this.error(chalk.red(`Deployment failed: ${errorMessage}`))\n }\n } catch (error) {\n if (error instanceof Error && error.name === 'ExitPromptError') {\n this.log(chalk.yellow('\\n\\nDeployment cancelled'))\n this.exit(0)\n }\n\n throw error\n }\n }\n}\n"],"names":["txOrManifestId","bundlerLink","rows"],"mappings":"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"}
|
package/dist/commands/upload.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import { Command } from '@oclif/core';
|
|
3
|
-
import boxen from 'boxen';
|
|
4
|
-
import chalk from 'chalk';
|
|
5
|
-
import Table from 'cli-table3';
|
|
6
3
|
import { uploadFlagConfigs } from '../constants/flags.js';
|
|
7
4
|
import { getWalletConfig } from '../prompts/wallet.js';
|
|
5
|
+
import { c as chalk, r as runUploadWorkflow, h as hyperbeamBundlerLink } from '../chunks/upload-workflow-CfCTs0EW.js';
|
|
8
6
|
import { extractFlags, resolveConfig } from '../utils/config-resolver.js';
|
|
9
|
-
import {
|
|
10
|
-
import { r as runUploadWorkflow, h as hyperbeamBundlerLink } from '../chunks/upload-workflow-DMKlwZve.js';
|
|
7
|
+
import { b as formatUploadSize, c as formatUploadCost, f as formatDisplayRows, a as formatUploadError } from '../chunks/display-y6lAuqxZ.js';
|
|
11
8
|
import { expandPath } from '../utils/path.js';
|
|
12
9
|
|
|
13
10
|
class Upload extends Command {
|
|
@@ -27,7 +24,7 @@ class Upload extends Command {
|
|
|
27
24
|
const { flags } = await this.parse(Upload);
|
|
28
25
|
const interactive = !flags.wallet && !flags["private-key"] && !process.env.DEPLOY_KEY?.trim();
|
|
29
26
|
if (interactive) {
|
|
30
|
-
this.log(chalk.
|
|
27
|
+
this.log(chalk.bold(chalk.cyan("\nInteractive upload mode\n")));
|
|
31
28
|
}
|
|
32
29
|
const baseConfig = await resolveConfig(uploadFlagConfigs, flags, {
|
|
33
30
|
interactive
|
|
@@ -83,75 +80,40 @@ class Upload extends Command {
|
|
|
83
80
|
);
|
|
84
81
|
}
|
|
85
82
|
}
|
|
86
|
-
this.log(chalk.
|
|
83
|
+
this.log(chalk.bold(chalk.cyan("\nStarting upload...\n")));
|
|
87
84
|
try {
|
|
88
85
|
const uploadResult = await runUploadWorkflow(deployKey, uploadCfg, {
|
|
89
86
|
error: (msg) => this.error(msg)
|
|
90
87
|
});
|
|
91
88
|
const txOrManifestId = uploadResult.transactionId;
|
|
92
89
|
this.log("");
|
|
93
|
-
const isCI = Boolean(process.env.CI);
|
|
94
90
|
const uploadSize = uploadResult.size;
|
|
95
91
|
const bundlerLink = uploadCfg["uploader-type"] === "hyperbeam" && uploadCfg.uploader ? hyperbeamBundlerLink(uploadCfg.uploader, txOrManifestId, !uploadCfg["deploy-file"]) : void 0;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
this.log("Uploader type: " + uploadCfg["uploader-type"]);
|
|
108
|
-
}
|
|
109
|
-
if (bundlerLink) {
|
|
110
|
-
this.log("Bundler link: " + bundlerLink);
|
|
111
|
-
}
|
|
112
|
-
this.log(`Arweave URL: https://arweave.net/${txOrManifestId}`);
|
|
113
|
-
} else {
|
|
114
|
-
const table = new Table({
|
|
115
|
-
style: { head: [] }
|
|
116
|
-
});
|
|
117
|
-
table.push(["Tx ID", chalk.green(txOrManifestId)]);
|
|
118
|
-
if (uploadSize) {
|
|
119
|
-
table.push(["Upload size", chalk.blue(formatUploadSize(uploadSize))]);
|
|
120
|
-
}
|
|
121
|
-
if (uploadResult.cost) {
|
|
122
|
-
table.push(["Upload cost", chalk.blue(formatUploadCost(uploadResult.cost))]);
|
|
123
|
-
}
|
|
124
|
-
if (uploadCfg.uploader) {
|
|
125
|
-
table.push(
|
|
126
|
-
["Bundler service", chalk.cyan(uploadCfg.uploader)],
|
|
127
|
-
["Uploader type", chalk.cyan(uploadCfg["uploader-type"])]
|
|
128
|
-
);
|
|
129
|
-
}
|
|
130
|
-
if (bundlerLink) {
|
|
131
|
-
table.push(["Bundler link", chalk.yellow(bundlerLink)]);
|
|
132
|
-
}
|
|
133
|
-
table.push(["Arweave URL", chalk.yellow(`https://arweave.net/${txOrManifestId}`)]);
|
|
134
|
-
const successMessage = boxen(
|
|
135
|
-
`${chalk.green.bold("Upload successful!")}
|
|
136
|
-
|
|
137
|
-
${table.toString()}`,
|
|
138
|
-
{
|
|
139
|
-
borderColor: "green",
|
|
140
|
-
borderStyle: "round",
|
|
141
|
-
padding: 1,
|
|
142
|
-
title: chalk.bold("Permaweb Deploy"),
|
|
143
|
-
titleAlignment: "center"
|
|
144
|
-
}
|
|
92
|
+
const rows = [["Tx ID", chalk.green(txOrManifestId)]];
|
|
93
|
+
if (uploadSize) {
|
|
94
|
+
rows.push(["Upload size", chalk.blue(formatUploadSize(uploadSize))]);
|
|
95
|
+
}
|
|
96
|
+
if (uploadResult.cost) {
|
|
97
|
+
rows.push(["Upload cost", chalk.blue(formatUploadCost(uploadResult.cost))]);
|
|
98
|
+
}
|
|
99
|
+
if (uploadCfg.uploader) {
|
|
100
|
+
rows.push(
|
|
101
|
+
["Bundler service", chalk.cyan(uploadCfg.uploader)],
|
|
102
|
+
["Uploader type", chalk.cyan(uploadCfg["uploader-type"])]
|
|
145
103
|
);
|
|
146
|
-
this.log(`
|
|
147
|
-
${successMessage}`);
|
|
148
104
|
}
|
|
105
|
+
if (bundlerLink) {
|
|
106
|
+
rows.push(["Bundler link", chalk.yellow(bundlerLink)]);
|
|
107
|
+
}
|
|
108
|
+
rows.push(["Arweave URL", chalk.yellow(`https://arweave.net/${txOrManifestId}`)]);
|
|
109
|
+
this.log(chalk.bold(chalk.green("Upload successful!")));
|
|
110
|
+
this.log(formatDisplayRows(rows));
|
|
149
111
|
} catch (error) {
|
|
150
112
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
151
113
|
const normalizedError = errorMessage.startsWith("Upload failed:") ? errorMessage.replace(/^Upload failed:\s*/, "") : errorMessage;
|
|
152
114
|
if (!process.env.CI && process.stdout.isTTY) {
|
|
153
115
|
this.log(`
|
|
154
|
-
${
|
|
116
|
+
${formatUploadError(normalizedError)}`);
|
|
155
117
|
this.exit(1);
|
|
156
118
|
}
|
|
157
119
|
this.error(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.js","sources":["../../src/commands/upload.ts"],"sourcesContent":["import fs from 'node:fs'\n\nimport { Command } from '@oclif/core'\nimport boxen from 'boxen'\nimport chalk from 'chalk'\n// eslint-disable-next-line import/no-named-as-default\nimport Table from 'cli-table3'\n\nimport { type UploadConfig, uploadFlagConfigs } from '../constants/flags.js'\nimport { getWalletConfig } from '../prompts/wallet.js'\nimport { extractFlags, resolveConfig } from '../utils/config-resolver.js'\nimport { formatUploadCost, formatUploadSize, uploadErrorTable } from '../utils/display.js'\nimport { hyperbeamBundlerLink } from '../utils/hyperbeam-uploader.js'\nimport { expandPath } from '../utils/path.js'\nimport { runUploadWorkflow } from '../workflows/upload-workflow.js'\n\nexport default class Upload extends Command {\n static override args = {}\n\n static override description = 'Upload a file or folder to Arweave via Turbo without updating ArNS'\n\n static override examples = [\n '<%= config.bin %> upload --wallet ./wallet.json',\n '<%= config.bin %> upload --wallet ./wallet.json --deploy-folder ./dist',\n '<%= config.bin %> upload --wallet ./wallet.json --deploy-file ./dist/index.html',\n '<%= config.bin %> upload --private-key \"$(cat wallet.json)\" --on-demand ario --max-token-amount 1.5',\n '<%= config.bin %> upload --wallet ./wallet.json --uploader https://up.arweave.net',\n '<%= config.bin %> upload --wallet ./wallet.json --uploader-type hyperbeam --uploader https://hyperbeam.example.com',\n ]\n\n static override flags = extractFlags(uploadFlagConfigs)\n\n public async run(): Promise<void> {\n try {\n const { flags } = await this.parse(Upload)\n\n const interactive = !flags.wallet && !flags['private-key'] && !process.env.DEPLOY_KEY?.trim()\n\n if (interactive) {\n this.log(chalk.cyan.bold('\\nInteractive upload mode\\n'))\n }\n\n const baseConfig = (await resolveConfig<typeof uploadFlagConfigs>(uploadFlagConfigs, flags, {\n interactive,\n })) as UploadConfig\n\n let walletConfig: { privateKey?: string; wallet?: string } = {\n privateKey: baseConfig['private-key'],\n wallet: baseConfig.wallet,\n }\n\n if (interactive && !baseConfig.wallet && !baseConfig['private-key']) {\n const config = await getWalletConfig()\n walletConfig = {\n privateKey: config.privateKey,\n wallet: config.wallet,\n }\n }\n\n const effectiveCacheMaxEntries = baseConfig['no-dedupe']\n ? 0\n : baseConfig['dedupe-cache-max-entries']\n\n const uploadCfg = {\n 'dedupe-cache-max-entries': effectiveCacheMaxEntries,\n 'deploy-file': baseConfig['deploy-file'],\n 'deploy-folder': baseConfig['deploy-folder'],\n 'hyperbeam-ao-state-url': baseConfig['hyperbeam-ao-state-url'],\n 'hyperbeam-auto-fund': baseConfig['hyperbeam-auto-fund'],\n 'hyperbeam-fund-amount': baseConfig['hyperbeam-fund-amount'],\n 'hyperbeam-ledger-id': baseConfig['hyperbeam-ledger-id'],\n 'hyperbeam-token-id': baseConfig['hyperbeam-token-id'],\n 'hyperbeam-upload-path': baseConfig['hyperbeam-upload-path'],\n 'max-token-amount': baseConfig['max-token-amount'],\n 'on-demand': baseConfig['on-demand'],\n 'sig-type': baseConfig['sig-type'],\n uploader: baseConfig.uploader,\n 'uploader-type': baseConfig['uploader-type'],\n }\n\n if (interactive) {\n this.log('')\n }\n\n const { privateKey, wallet } = walletConfig\n const sigType = uploadCfg['sig-type']\n\n let deployKey: string\n if (wallet) {\n const walletPath = expandPath(wallet)\n if (!fs.existsSync(walletPath)) {\n this.error(`Wallet file [${wallet}] does not exist`)\n }\n\n const walletContent = fs.readFileSync(walletPath, 'utf8')\n deployKey =\n sigType === 'arweave'\n ? Buffer.from(walletContent).toString('base64')\n : walletContent.trim()\n } else if (privateKey) {\n deployKey =\n sigType === 'arweave' ? Buffer.from(privateKey).toString('base64') : privateKey.trim()\n } else {\n deployKey = process.env.DEPLOY_KEY || ''\n if (!deployKey) {\n this.error(\n 'DEPLOY_KEY environment variable not set. Use --wallet, --private-key, or set DEPLOY_KEY',\n )\n }\n }\n\n this.log(chalk.cyan.bold('\\nStarting upload...\\n'))\n\n try {\n const uploadResult = await runUploadWorkflow(deployKey, uploadCfg, {\n error: (msg) => this.error(msg),\n })\n const txOrManifestId = uploadResult.transactionId\n\n this.log('')\n\n const isCI = Boolean(process.env.CI)\n const uploadSize = uploadResult.size\n const bundlerLink =\n uploadCfg['uploader-type'] === 'hyperbeam' && uploadCfg.uploader\n ? hyperbeamBundlerLink(uploadCfg.uploader, txOrManifestId, !uploadCfg['deploy-file'])\n : undefined\n\n if (isCI) {\n this.log('Upload successful!')\n this.log('Tx ID: ' + txOrManifestId)\n if (uploadSize) {\n this.log('Upload size: ' + formatUploadSize(uploadSize))\n }\n\n if (uploadResult.cost) {\n this.log('Upload cost: ' + formatUploadCost(uploadResult.cost))\n }\n\n if (uploadCfg.uploader) {\n this.log('Bundler service: ' + uploadCfg.uploader)\n this.log('Uploader type: ' + uploadCfg['uploader-type'])\n }\n\n if (bundlerLink) {\n this.log('Bundler link: ' + bundlerLink)\n }\n\n this.log(`Arweave URL: https://arweave.net/${txOrManifestId}`)\n } else {\n const table = new Table({\n style: { head: [] },\n })\n\n table.push(['Tx ID', chalk.green(txOrManifestId)])\n if (uploadSize) {\n table.push(['Upload size', chalk.blue(formatUploadSize(uploadSize))])\n }\n\n if (uploadResult.cost) {\n table.push(['Upload cost', chalk.blue(formatUploadCost(uploadResult.cost))])\n }\n\n if (uploadCfg.uploader) {\n table.push(\n ['Bundler service', chalk.cyan(uploadCfg.uploader)],\n ['Uploader type', chalk.cyan(uploadCfg['uploader-type'])],\n )\n }\n\n if (bundlerLink) {\n table.push(['Bundler link', chalk.yellow(bundlerLink)])\n }\n\n table.push(['Arweave URL', chalk.yellow(`https://arweave.net/${txOrManifestId}`)])\n\n const successMessage = boxen(\n `${chalk.green.bold('Upload successful!')}\\n\\n${table.toString()}`,\n {\n borderColor: 'green',\n borderStyle: 'round',\n padding: 1,\n title: chalk.bold('Permaweb Deploy'),\n titleAlignment: 'center',\n },\n )\n\n this.log(`\\n${successMessage}`)\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n const normalizedError = errorMessage.startsWith('Upload failed:')\n ? errorMessage.replace(/^Upload failed:\\s*/, '')\n : errorMessage\n\n if (!process.env.CI && process.stdout.isTTY) {\n this.log(`\\n${uploadErrorTable(normalizedError)}`)\n this.exit(1)\n }\n\n this.error(\n chalk.red(\n errorMessage.startsWith('Upload failed:')\n ? errorMessage\n : `Upload failed: ${errorMessage}`,\n ),\n )\n }\n } catch (error) {\n if (error instanceof Error && error.name === 'ExitPromptError') {\n this.log(chalk.yellow('\\n\\nUpload cancelled'))\n this.exit(0)\n }\n\n throw error\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"upload.js","sources":["../../src/commands/upload.ts"],"sourcesContent":["import fs from 'node:fs'\n\nimport { Command } from '@oclif/core'\n\nimport { type UploadConfig, uploadFlagConfigs } from '../constants/flags.js'\nimport { getWalletConfig } from '../prompts/wallet.js'\nimport { chalk } from '../utils/chalk.js'\nimport { extractFlags, resolveConfig } from '../utils/config-resolver.js'\nimport {\n type DisplayRow,\n formatDisplayRows,\n formatUploadCost,\n formatUploadError,\n formatUploadSize,\n} from '../utils/display.js'\nimport { hyperbeamBundlerLink } from '../utils/hyperbeam-uploader.js'\nimport { expandPath } from '../utils/path.js'\nimport { runUploadWorkflow } from '../workflows/upload-workflow.js'\n\nexport default class Upload extends Command {\n static override args = {}\n\n static override description = 'Upload a file or folder to Arweave via Turbo without updating ArNS'\n\n static override examples = [\n '<%= config.bin %> upload --wallet ./wallet.json',\n '<%= config.bin %> upload --wallet ./wallet.json --deploy-folder ./dist',\n '<%= config.bin %> upload --wallet ./wallet.json --deploy-file ./dist/index.html',\n '<%= config.bin %> upload --private-key \"$(cat wallet.json)\" --on-demand ario --max-token-amount 1.5',\n '<%= config.bin %> upload --wallet ./wallet.json --uploader https://up.arweave.net',\n '<%= config.bin %> upload --wallet ./wallet.json --uploader-type hyperbeam --uploader https://hyperbeam.example.com',\n ]\n\n static override flags = extractFlags(uploadFlagConfigs)\n\n public async run(): Promise<void> {\n try {\n const { flags } = await this.parse(Upload)\n\n const interactive = !flags.wallet && !flags['private-key'] && !process.env.DEPLOY_KEY?.trim()\n\n if (interactive) {\n this.log(chalk.bold(chalk.cyan('\\nInteractive upload mode\\n')))\n }\n\n const baseConfig = (await resolveConfig<typeof uploadFlagConfigs>(uploadFlagConfigs, flags, {\n interactive,\n })) as UploadConfig\n\n let walletConfig: { privateKey?: string; wallet?: string } = {\n privateKey: baseConfig['private-key'],\n wallet: baseConfig.wallet,\n }\n\n if (interactive && !baseConfig.wallet && !baseConfig['private-key']) {\n const config = await getWalletConfig()\n walletConfig = {\n privateKey: config.privateKey,\n wallet: config.wallet,\n }\n }\n\n const effectiveCacheMaxEntries = baseConfig['no-dedupe']\n ? 0\n : baseConfig['dedupe-cache-max-entries']\n\n const uploadCfg = {\n 'dedupe-cache-max-entries': effectiveCacheMaxEntries,\n 'deploy-file': baseConfig['deploy-file'],\n 'deploy-folder': baseConfig['deploy-folder'],\n 'hyperbeam-ao-state-url': baseConfig['hyperbeam-ao-state-url'],\n 'hyperbeam-auto-fund': baseConfig['hyperbeam-auto-fund'],\n 'hyperbeam-fund-amount': baseConfig['hyperbeam-fund-amount'],\n 'hyperbeam-ledger-id': baseConfig['hyperbeam-ledger-id'],\n 'hyperbeam-token-id': baseConfig['hyperbeam-token-id'],\n 'hyperbeam-upload-path': baseConfig['hyperbeam-upload-path'],\n 'max-token-amount': baseConfig['max-token-amount'],\n 'on-demand': baseConfig['on-demand'],\n 'sig-type': baseConfig['sig-type'],\n uploader: baseConfig.uploader,\n 'uploader-type': baseConfig['uploader-type'],\n }\n\n if (interactive) {\n this.log('')\n }\n\n const { privateKey, wallet } = walletConfig\n const sigType = uploadCfg['sig-type']\n\n let deployKey: string\n if (wallet) {\n const walletPath = expandPath(wallet)\n if (!fs.existsSync(walletPath)) {\n this.error(`Wallet file [${wallet}] does not exist`)\n }\n\n const walletContent = fs.readFileSync(walletPath, 'utf8')\n deployKey =\n sigType === 'arweave'\n ? Buffer.from(walletContent).toString('base64')\n : walletContent.trim()\n } else if (privateKey) {\n deployKey =\n sigType === 'arweave' ? Buffer.from(privateKey).toString('base64') : privateKey.trim()\n } else {\n deployKey = process.env.DEPLOY_KEY || ''\n if (!deployKey) {\n this.error(\n 'DEPLOY_KEY environment variable not set. Use --wallet, --private-key, or set DEPLOY_KEY',\n )\n }\n }\n\n this.log(chalk.bold(chalk.cyan('\\nStarting upload...\\n')))\n\n try {\n const uploadResult = await runUploadWorkflow(deployKey, uploadCfg, {\n error: (msg) => this.error(msg),\n })\n const txOrManifestId = uploadResult.transactionId\n\n this.log('')\n\n const uploadSize = uploadResult.size\n const bundlerLink =\n uploadCfg['uploader-type'] === 'hyperbeam' && uploadCfg.uploader\n ? hyperbeamBundlerLink(uploadCfg.uploader, txOrManifestId, !uploadCfg['deploy-file'])\n : undefined\n\n const rows: DisplayRow[] = [['Tx ID', chalk.green(txOrManifestId)]]\n if (uploadSize) {\n rows.push(['Upload size', chalk.blue(formatUploadSize(uploadSize))])\n }\n\n if (uploadResult.cost) {\n rows.push(['Upload cost', chalk.blue(formatUploadCost(uploadResult.cost))])\n }\n\n if (uploadCfg.uploader) {\n rows.push(\n ['Bundler service', chalk.cyan(uploadCfg.uploader)],\n ['Uploader type', chalk.cyan(uploadCfg['uploader-type'])],\n )\n }\n\n if (bundlerLink) {\n rows.push(['Bundler link', chalk.yellow(bundlerLink)])\n }\n\n rows.push(['Arweave URL', chalk.yellow(`https://arweave.net/${txOrManifestId}`)])\n\n this.log(chalk.bold(chalk.green('Upload successful!')))\n this.log(formatDisplayRows(rows))\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n const normalizedError = errorMessage.startsWith('Upload failed:')\n ? errorMessage.replace(/^Upload failed:\\s*/, '')\n : errorMessage\n\n if (!process.env.CI && process.stdout.isTTY) {\n this.log(`\\n${formatUploadError(normalizedError)}`)\n this.exit(1)\n }\n\n this.error(\n chalk.red(\n errorMessage.startsWith('Upload failed:')\n ? errorMessage\n : `Upload failed: ${errorMessage}`,\n ),\n )\n }\n } catch (error) {\n if (error instanceof Error && error.name === 'ExitPromptError') {\n this.log(chalk.yellow('\\n\\nUpload cancelled'))\n this.exit(0)\n }\n\n throw error\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/deploy.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/deploy.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAgBrC,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,OAAO;IACzC,OAAgB,IAAI,KAAK;IAEzB,OAAgB,WAAW,SAAoE;IAE/F,OAAgB,QAAQ,WAOvB;IAED,OAAgB,KAAK,sBAAkC;IAE1C,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAgRlC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/commands/upload.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/commands/upload.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAiBrC,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,OAAO;IACzC,OAAgB,IAAI,KAAK;IAEzB,OAAgB,WAAW,SAAuE;IAElG,OAAgB,QAAQ,WAOvB;IAED,OAAgB,KAAK,sBAAkC;IAE1C,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmJlC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare const colorCodes: readonly [readonly ["bold", "\u001B[1m"], readonly ["dim", "\u001B[2m"], readonly ["italic", "\u001B[3m"], readonly ["underline", "\u001B[4m"], readonly ["inverse", "\u001B[7m"], readonly ["strikethrough", "\u001B[9m"], readonly ["black", "\u001B[30m"], readonly ["red", "\u001B[31m"], readonly ["green", "\u001B[32m"], readonly ["yellow", "\u001B[33m"], readonly ["blue", "\u001B[34m"], readonly ["magenta", "\u001B[35m"], readonly ["cyan", "\u001B[36m"], readonly ["white", "\u001B[37m"], readonly ["gray", "\u001B[90m"], readonly ["grey", "\u001B[90m"], readonly ["blackBright", "\u001B[90m"], readonly ["redBright", "\u001B[91m"], readonly ["greenBright", "\u001B[92m"], readonly ["yellowBright", "\u001B[93m"], readonly ["blueBright", "\u001B[94m"], readonly ["magentaBright", "\u001B[95m"], readonly ["cyanBright", "\u001B[96m"], readonly ["whiteBright", "\u001B[97m"], readonly ["bgBlack", "\u001B[40m"], readonly ["bgRed", "\u001B[41m"], readonly ["bgGreen", "\u001B[42m"], readonly ["bgYellow", "\u001B[43m"], readonly ["bgBlue", "\u001B[44m"], readonly ["bgMagenta", "\u001B[45m"], readonly ["bgCyan", "\u001B[46m"], readonly ["bgWhite", "\u001B[47m"], readonly ["bgBlackBright", "\u001B[100m"]];
|
|
2
|
+
type ColorName = (typeof colorCodes)[number][0];
|
|
3
|
+
type ColorFunction = (text: unknown) => string;
|
|
4
|
+
type Chalk = {
|
|
5
|
+
highlight: ColorFunction;
|
|
6
|
+
} & Record<ColorName, ColorFunction>;
|
|
7
|
+
export declare const chalk: Chalk;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=chalk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chalk.d.ts","sourceRoot":"","sources":["../../../src/utils/chalk.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,UAAU,urCAqCN,CAAA;AAEV,KAAK,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/C,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,CAAA;AAC9C,KAAK,KAAK,GAAG;IACX,SAAS,EAAE,aAAa,CAAA;CACzB,GAAG,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;AAapC,eAAO,MAAM,KAAK,EAAE,KAElB,CAAA"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { UploadCost, UploadSize } from './hyperbeam-uploader.js';
|
|
2
|
+
export type DisplayRow = [label: string, value: string];
|
|
2
3
|
export declare function formatUploadSize(size: UploadSize): string;
|
|
3
4
|
export declare function formatUploadCost(cost: UploadCost): string;
|
|
4
|
-
export declare function
|
|
5
|
+
export declare function formatDisplayRows(rows: DisplayRow[]): string;
|
|
6
|
+
export declare function formatUploadError(message: string, title?: string): string;
|
|
5
7
|
//# sourceMappingURL=display.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../../src/utils/display.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../../src/utils/display.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAIrE,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;AAEvD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAEzD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAazD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAE5D;AAkBD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAkB,GAAG,MAAM,CA8BlF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploader.d.ts","sourceRoot":"","sources":["../../../src/utils/uploader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAIpD,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEnF,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,gBAAgB,CAAA;CAChC;AAED,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAA;IACjB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAA;IAClB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACxB,WAAW,CAAC,EAAE,eAAe,CAAA;CAC9B,GACA,OAAO,CAAC,YAAY,CAAC,CA+DvB;AAYD;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,GACA,OAAO,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"uploader.d.ts","sourceRoot":"","sources":["../../../src/utils/uploader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAIpD,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEnF,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,gBAAgB,CAAA;CAChC;AAED,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAA;IACjB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAA;IAClB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACxB,WAAW,CAAC,EAAE,eAAe,CAAA;CAC9B,GACA,OAAO,CAAC,YAAY,CAAC,CA+DvB;AAYD;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,GACA,OAAO,CAAC,kBAAkB,CAAC,CAoJ7B"}
|
package/dist/utils/uploader.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'node:path';
|
|
2
2
|
import 'node:stream';
|
|
3
3
|
import 'mime-types';
|
|
4
|
-
export { u as uploadFile, a as uploadFolder } from '../chunks/uploader-
|
|
4
|
+
export { u as uploadFile, a as uploadFolder } from '../chunks/uploader-CC-qBdlV.js';
|
|
5
5
|
//# sourceMappingURL=uploader.js.map
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import 'node:fs';
|
|
2
2
|
import 'node:path';
|
|
3
3
|
import '@ardrive/turbo-sdk';
|
|
4
|
-
import 'chalk';
|
|
5
4
|
import 'ora';
|
|
6
|
-
import '../chunks/uploader-
|
|
7
|
-
export { r as runUploadWorkflow } from '../chunks/upload-workflow-
|
|
5
|
+
import '../chunks/uploader-CC-qBdlV.js';
|
|
6
|
+
export { r as runUploadWorkflow } from '../chunks/upload-workflow-CfCTs0EW.js';
|
|
8
7
|
import '../utils/path.js';
|
|
9
8
|
import '../utils/signer.js';
|
|
10
9
|
//# sourceMappingURL=upload-workflow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-workflow.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"upload-workflow.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "permaweb-deploy",
|
|
3
|
-
"version": "3.4.
|
|
3
|
+
"version": "3.4.6",
|
|
4
4
|
"description": "Permaweb App Deployment Package",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -58,9 +58,6 @@
|
|
|
58
58
|
"@inquirer/prompts": "^7.2.0",
|
|
59
59
|
"@oclif/core": "^4.0.30",
|
|
60
60
|
"@permaweb/aoconnect": "^0.0.85",
|
|
61
|
-
"boxen": "^8.0.1",
|
|
62
|
-
"chalk": "^5.3.0",
|
|
63
|
-
"cli-table3": "^0.6.5",
|
|
64
61
|
"hyperbalance": "github:xylophonez/hyperbalance#main",
|
|
65
62
|
"mime-types": "^3.0.1",
|
|
66
63
|
"ora": "^8.1.1",
|
|
@@ -115,7 +112,7 @@
|
|
|
115
112
|
},
|
|
116
113
|
"homepage": "https://github.com/permaweb/permaweb-deploy#readme",
|
|
117
114
|
"lint-staged": {
|
|
118
|
-
"
|
|
115
|
+
"{src,tests}/**/*.{ts,tsx}": [
|
|
119
116
|
"eslint --fix --max-warnings=0",
|
|
120
117
|
"prettier --write"
|
|
121
118
|
],
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"display-BgIiyBIu.js","sources":["../../src/utils/display.ts"],"sourcesContent":["import boxen from 'boxen'\nimport chalk from 'chalk'\n// eslint-disable-next-line import/no-named-as-default\nimport Table from 'cli-table3'\n\nimport type { UploadCost, UploadSize } from './hyperbeam-uploader.js'\n\nconst AO_BASE_UNITS = 1_000_000_000_000n\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\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 uploadErrorTable(message: string, title = 'Upload failed'): string {\n const table = new Table({\n style: { head: [] },\n })\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 table.push(['Error', chalk.red(section)])\n continue\n }\n\n if (section.startsWith('Required upload credit:')) {\n table.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 table.push(['Funding', fundingDisplay(section)])\n continue\n }\n\n table.push(['Note', section])\n }\n\n return boxen(`${chalk.red.bold(title)}\\n\\n${table.toString()}`, {\n borderColor: 'red',\n borderStyle: 'round',\n padding: 1,\n title: chalk.bold('Permaweb Deploy'),\n titleAlignment: 'center',\n })\n}\n"],"names":[],"mappings":"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"}
|