permaweb-deploy 3.4.2 → 3.4.3
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/README.md +62 -11
- package/dist/chunks/upload-workflow-zlELdPNp.js +930 -0
- package/dist/chunks/upload-workflow-zlELdPNp.js.map +1 -0
- package/dist/chunks/uploader-DDS_d-O_.js.map +1 -1
- package/dist/commands/deploy.js +19 -2
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/upload.js +23 -4
- package/dist/commands/upload.js.map +1 -1
- package/dist/constants/flags.js +69 -1
- package/dist/constants/flags.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/constants/flags.d.ts +35 -0
- package/dist/src/constants/flags.d.ts.map +1 -1
- package/dist/src/utils/__tests__/hyperbeam-uploader.test.d.ts +2 -0
- package/dist/src/utils/__tests__/hyperbeam-uploader.test.d.ts.map +1 -0
- package/dist/src/utils/hyperbeam-uploader.d.ts +64 -0
- package/dist/src/utils/hyperbeam-uploader.d.ts.map +1 -0
- package/dist/src/utils/uploader.d.ts +9 -3
- package/dist/src/utils/uploader.d.ts.map +1 -1
- package/dist/src/workflows/upload-workflow.d.ts +7 -0
- package/dist/src/workflows/upload-workflow.d.ts.map +1 -1
- package/dist/tests/setup.d.ts +1 -1
- package/dist/tests/setup.d.ts.map +1 -1
- package/dist/workflows/upload-workflow.js +9 -146
- package/dist/workflows/upload-workflow.js.map +1 -1
- package/package.json +3 -1
|
@@ -1,147 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
function getFolderSize(folderPath) {
|
|
11
|
-
let totalSize = 0;
|
|
12
|
-
for (const item of fs.readdirSync(folderPath)) {
|
|
13
|
-
const fullPath = path.join(folderPath, item);
|
|
14
|
-
const stats = fs.statSync(fullPath);
|
|
15
|
-
totalSize += stats.isDirectory() ? getFolderSize(fullPath) : stats.size;
|
|
16
|
-
}
|
|
17
|
-
return totalSize;
|
|
18
|
-
}
|
|
19
|
-
async function runUploadWorkflow(deployKey, config, io) {
|
|
20
|
-
const spinner = ora();
|
|
21
|
-
spinner.start("Creating signer");
|
|
22
|
-
const { signer, token } = createSigner(config["sig-type"], deployKey);
|
|
23
|
-
spinner.succeed(`Signer created (${chalk.cyan(config["sig-type"])})`);
|
|
24
|
-
spinner.start("Initializing Turbo");
|
|
25
|
-
const turboFactoryArgs = { signer, token };
|
|
26
|
-
if (config.uploader) {
|
|
27
|
-
turboFactoryArgs.uploadServiceConfig = { url: config.uploader };
|
|
28
|
-
}
|
|
29
|
-
const turbo = TurboFactory.authenticated(turboFactoryArgs);
|
|
30
|
-
spinner.succeed("Turbo initialized");
|
|
31
|
-
let fundingMode;
|
|
32
|
-
if (config["on-demand"] && config["max-token-amount"]) {
|
|
33
|
-
const tokenType = config["on-demand"];
|
|
34
|
-
const maxAmount = Number.parseFloat(config["max-token-amount"]);
|
|
35
|
-
let maxTokenAmount;
|
|
36
|
-
switch (tokenType) {
|
|
37
|
-
case "ario": {
|
|
38
|
-
maxTokenAmount = ARIOToTokenAmount(maxAmount);
|
|
39
|
-
break;
|
|
40
|
-
}
|
|
41
|
-
case "base-eth": {
|
|
42
|
-
maxTokenAmount = ETHToTokenAmount(maxAmount);
|
|
43
|
-
break;
|
|
44
|
-
}
|
|
45
|
-
default: {
|
|
46
|
-
throw new Error(`Unsupported on-demand token type: ${tokenType}`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
fundingMode = new OnDemandFunding({
|
|
50
|
-
maxTokenAmount,
|
|
51
|
-
topUpBufferMultiplier: 1.1
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
if (!fundingMode) {
|
|
55
|
-
spinner.start("Checking Turbo credits for upload");
|
|
56
|
-
try {
|
|
57
|
-
const uploadBytes = config["deploy-file"] ? (() => {
|
|
58
|
-
const filePath = expandPath(config["deploy-file"]);
|
|
59
|
-
return fs.statSync(filePath).size;
|
|
60
|
-
})() : (() => {
|
|
61
|
-
const folderPath = expandPath(config["deploy-folder"]);
|
|
62
|
-
return getFolderSize(folderPath);
|
|
63
|
-
})();
|
|
64
|
-
const FREE_THRESHOLD_BYTES = 107520;
|
|
65
|
-
if (uploadBytes >= FREE_THRESHOLD_BYTES) {
|
|
66
|
-
const [uploadCost] = await turbo.getUploadCosts({ bytes: [uploadBytes] });
|
|
67
|
-
const balance = await turbo.getBalance();
|
|
68
|
-
const requiredWinc = BigInt(uploadCost.winc);
|
|
69
|
-
const currentWinc = BigInt(balance.winc);
|
|
70
|
-
if (requiredWinc > currentWinc) {
|
|
71
|
-
spinner.fail("Insufficient Turbo credits");
|
|
72
|
-
io.error(
|
|
73
|
-
[
|
|
74
|
-
"Insufficient Turbo credits for this upload.",
|
|
75
|
-
`Required: ${requiredWinc.toString()} winc, available: ${currentWinc.toString()} winc.`,
|
|
76
|
-
"",
|
|
77
|
-
"Top up your Turbo balance (or re-run with --on-demand and --max-token-amount)."
|
|
78
|
-
].join(" ")
|
|
79
|
-
);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
spinner.succeed("Turbo credits check passed");
|
|
83
|
-
} catch (balanceError) {
|
|
84
|
-
spinner.fail("Failed to check Turbo credits");
|
|
85
|
-
const errorMessage = balanceError instanceof Error ? balanceError.message : String(balanceError);
|
|
86
|
-
io.error(`Failed to check Turbo credits: ${errorMessage}`);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
let txOrManifestId;
|
|
90
|
-
try {
|
|
91
|
-
if (config["deploy-file"]) {
|
|
92
|
-
const filePath = expandPath(config["deploy-file"]);
|
|
93
|
-
spinner.start(`Uploading file ${chalk.yellow(config["deploy-file"])}`);
|
|
94
|
-
let cache = config["dedupe-cache-max-entries"] > 0 ? loadCache() : {};
|
|
95
|
-
const uploadResult = await uploadFile(turbo, filePath, { cache, fundingMode });
|
|
96
|
-
if (!uploadResult.transactionId) {
|
|
97
|
-
spinner.fail("File upload failed: no transaction ID returned");
|
|
98
|
-
io.error("File upload failed: no transaction ID returned");
|
|
99
|
-
}
|
|
100
|
-
txOrManifestId = uploadResult.transactionId;
|
|
101
|
-
if (uploadResult.updatedCache && config["dedupe-cache-max-entries"] > 0) {
|
|
102
|
-
cache = cleanupCache(uploadResult.updatedCache, config["dedupe-cache-max-entries"]);
|
|
103
|
-
saveCache(cache);
|
|
104
|
-
}
|
|
105
|
-
if (uploadResult.cacheHit) {
|
|
106
|
-
spinner.succeed(`File cache hit - reusing transaction ${chalk.green(txOrManifestId)}`);
|
|
107
|
-
} else {
|
|
108
|
-
const cacheMsg = config["dedupe-cache-max-entries"] > 0 ? chalk.gray("(cached for future uploads)") : "";
|
|
109
|
-
spinner.succeed(`File uploaded: ${chalk.green(txOrManifestId)} ${cacheMsg}`.trim());
|
|
110
|
-
}
|
|
111
|
-
} else {
|
|
112
|
-
const folderPath = expandPath(config["deploy-folder"]);
|
|
113
|
-
spinner.start(`Uploading folder ${chalk.yellow(config["deploy-folder"])}`);
|
|
114
|
-
let cache = config["dedupe-cache-max-entries"] > 0 ? loadCache() : {};
|
|
115
|
-
const uploadResult = await uploadFolder(turbo, folderPath, {
|
|
116
|
-
cache,
|
|
117
|
-
fundingMode,
|
|
118
|
-
throwOnFailure: true
|
|
119
|
-
});
|
|
120
|
-
if (!uploadResult.transactionId) {
|
|
121
|
-
spinner.fail("Folder upload failed: no transaction ID returned");
|
|
122
|
-
io.error("Folder upload failed: no transaction ID returned");
|
|
123
|
-
}
|
|
124
|
-
txOrManifestId = uploadResult.transactionId;
|
|
125
|
-
if (uploadResult.updatedCache && config["dedupe-cache-max-entries"] > 0) {
|
|
126
|
-
cache = cleanupCache(uploadResult.updatedCache, config["dedupe-cache-max-entries"]);
|
|
127
|
-
saveCache(cache);
|
|
128
|
-
}
|
|
129
|
-
const { cacheHits, totalFiles, uploaded } = uploadResult;
|
|
130
|
-
const statsMsg = cacheHits > 0 ? chalk.gray(` (${cacheHits}/${totalFiles} files cached, ${uploaded} uploaded)`) : "";
|
|
131
|
-
if (uploadResult.cacheHit) {
|
|
132
|
-
spinner.succeed(`All ${totalFiles} files cached - manifest: ${chalk.green(txOrManifestId)}`);
|
|
133
|
-
} else {
|
|
134
|
-
const cacheMsg = config["dedupe-cache-max-entries"] > 0 ? chalk.gray(" (files cached for future uploads)") : "";
|
|
135
|
-
spinner.succeed(`Folder uploaded: ${chalk.green(txOrManifestId)}${statsMsg}${cacheMsg}`);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
} catch (uploadError) {
|
|
139
|
-
spinner.fail("Upload failed");
|
|
140
|
-
const errorMessage = uploadError instanceof Error ? uploadError.message : String(uploadError);
|
|
141
|
-
io.error(`Upload failed: ${errorMessage}`);
|
|
142
|
-
}
|
|
143
|
-
return txOrManifestId;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
export { runUploadWorkflow };
|
|
1
|
+
import 'node:fs';
|
|
2
|
+
import 'node:path';
|
|
3
|
+
import '@ardrive/turbo-sdk';
|
|
4
|
+
import 'chalk';
|
|
5
|
+
import 'ora';
|
|
6
|
+
import '../chunks/uploader-DDS_d-O_.js';
|
|
7
|
+
export { r as runUploadWorkflow } from '../chunks/upload-workflow-zlELdPNp.js';
|
|
8
|
+
import '../utils/path.js';
|
|
9
|
+
import '../utils/signer.js';
|
|
147
10
|
//# sourceMappingURL=upload-workflow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-workflow.js","sources":["../../src/workflows/upload-workflow.ts"],"sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\n\nimport {\n ARIOToTokenAmount,\n ETHToTokenAmount,\n OnDemandFunding,\n TurboAuthenticatedConfiguration,\n TurboFactory,\n} from '@ardrive/turbo-sdk'\nimport chalk from 'chalk'\nimport ora from 'ora'\n\nimport type { SignerType } from '../types/index.js'\nimport { cleanupCache, loadCache, saveCache } from '../utils/cache.js'\nimport { 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 'max-token-amount'?: string\n 'on-demand'?: string\n 'sig-type': string\n uploader?: 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\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<string> {\n const spinner = ora()\n\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 const turbo = TurboFactory.authenticated(turboFactoryArgs)\n\n spinner.succeed('Turbo initialized')\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) {\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 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(turbo, 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\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(turbo, folderPath, {\n cache,\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\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 txOrManifestId\n}\n"],"names":[],"mappings":"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"}
|
|
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.3",
|
|
4
4
|
"description": "Permaweb App Deployment Package",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -31,12 +31,14 @@
|
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@ar.io/sdk": "^3.22.1",
|
|
33
33
|
"@ardrive/turbo-sdk": "^1.39.1",
|
|
34
|
+
"@dha-team/arbundles": "^1.0.4",
|
|
34
35
|
"@inquirer/prompts": "^7.2.0",
|
|
35
36
|
"@oclif/core": "^4.0.30",
|
|
36
37
|
"@permaweb/aoconnect": "^0.0.85",
|
|
37
38
|
"boxen": "^8.0.1",
|
|
38
39
|
"chalk": "^5.3.0",
|
|
39
40
|
"cli-table3": "^0.6.5",
|
|
41
|
+
"hyperbalance": "github:xylophonez/hyperbalance#main",
|
|
40
42
|
"mime-types": "^3.0.1",
|
|
41
43
|
"ora": "^8.1.1",
|
|
42
44
|
"p-limit": "^7.2.0"
|