@beam-network/cli 0.1.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/README.md +14 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +320 -0
- package/dist/cli.js.map +1 -0
- package/package.json +51 -0
package/README.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# BEAM CLI
|
|
2
|
+
|
|
3
|
+
Command line tools for BEAM transfers.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npx @beam-network/cli --help
|
|
7
|
+
npx -p @beam-network/cli beam-send create \
|
|
8
|
+
--source '{"type":"http","url":"https://downloads.example.com/report.parquet"}' \
|
|
9
|
+
--destination '{"type":"http","url":"https://storage.example.com/ingest/report.parquet"}' \
|
|
10
|
+
--total-size 104857600 \
|
|
11
|
+
--wait
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
The package is configured for private npm publication with restricted access.
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { BEAM_DEFAULT_NATS_URL, BeamApiError, BeamClient } from "@beam-network/sdk";
|
|
3
|
+
const terminalStates = new Set(["completed", "failed", "cancelled", "canceled"]);
|
|
4
|
+
async function main(argv = process.argv.slice(2)) {
|
|
5
|
+
const command = argv[0];
|
|
6
|
+
if (!command || command === "--help" || command === "-h" || command === "help") {
|
|
7
|
+
printHelp();
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
try {
|
|
11
|
+
if (command === "create") {
|
|
12
|
+
await createCommand(argv.slice(1));
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (command === "status") {
|
|
16
|
+
await statusCommand(argv.slice(1));
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (command === "distribute") {
|
|
20
|
+
await distributeCommand(argv.slice(1));
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (command === "cancel") {
|
|
24
|
+
await cancelCommand(argv.slice(1));
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
throw new CliError(`Unknown command: ${command}`);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
if (error instanceof CliError) {
|
|
31
|
+
console.error(`Error: ${error.message}`);
|
|
32
|
+
process.exitCode = 1;
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (error instanceof BeamApiError) {
|
|
36
|
+
console.error(`BEAM lifecycle error status=${error.status}`);
|
|
37
|
+
process.exitCode = 1;
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
console.error(`Error: ${safeCliErrorText(error)}`);
|
|
41
|
+
process.exitCode = 1;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function safeErrorCode(error) {
|
|
45
|
+
if (!(error instanceof Error))
|
|
46
|
+
return "UnknownError";
|
|
47
|
+
const record = error;
|
|
48
|
+
const explicitCode = typeof record.code === "string" && /^[A-Za-z0-9_.-]{1,64}$/.test(record.code)
|
|
49
|
+
? record.code
|
|
50
|
+
: undefined;
|
|
51
|
+
const status = [record.status, record.statusCode]
|
|
52
|
+
.find((value) => Number.isInteger(value) && Number(value) >= 100 && Number(value) <= 599);
|
|
53
|
+
return [explicitCode ?? error.name, status === undefined ? undefined : `status=${status}`]
|
|
54
|
+
.filter(Boolean)
|
|
55
|
+
.join(" ");
|
|
56
|
+
}
|
|
57
|
+
function safeCliErrorText(error) {
|
|
58
|
+
if (error instanceof Error && [
|
|
59
|
+
"Beam SDK lifecycle endpoint must be nats://, tls://, or configured as natsWsUrl.",
|
|
60
|
+
"transferRuntimeShardCount must be a positive integer.",
|
|
61
|
+
].includes(error.message)) {
|
|
62
|
+
return error.message;
|
|
63
|
+
}
|
|
64
|
+
return safeErrorCode(error);
|
|
65
|
+
}
|
|
66
|
+
async function createCommand(args) {
|
|
67
|
+
const options = parseOptions(args);
|
|
68
|
+
const client = createClient(options);
|
|
69
|
+
const sources = parseJsonList(options.source, "--source");
|
|
70
|
+
const destinations = parseJsonList(options.destination, "--destination");
|
|
71
|
+
const totalSize = parseRequiredNumber(options["total-size"], "--total-size");
|
|
72
|
+
const transfer = await client.createRawTransfer({
|
|
73
|
+
sources,
|
|
74
|
+
destinations,
|
|
75
|
+
totalSize,
|
|
76
|
+
chunkSize: parseOptionalNumber(options["chunk-size"], "--chunk-size"),
|
|
77
|
+
name: parseOptionalString(options.name),
|
|
78
|
+
testMode: Boolean(options["test-mode"]),
|
|
79
|
+
progressiveMode: Boolean(options["progressive-mode"])
|
|
80
|
+
});
|
|
81
|
+
if (options.json) {
|
|
82
|
+
printJson(transfer);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
console.log(`Created transfer: ${transfer.transfer_id}`);
|
|
86
|
+
console.log(`Chunks: ${transfer.total_chunks}`);
|
|
87
|
+
}
|
|
88
|
+
if (options.distribute) {
|
|
89
|
+
const distributed = await client.distributeTransfer(transfer.transfer_id);
|
|
90
|
+
if (options.json) {
|
|
91
|
+
printJson({ distribute: distributed });
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
console.log(`Distributed transfer: ${distributed.transfer_id}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (options.wait) {
|
|
98
|
+
const status = await waitForTransfer(client, transfer.transfer_id, parseOptionalNumber(options["poll-interval"], "--poll-interval") ?? 2);
|
|
99
|
+
if (options.json) {
|
|
100
|
+
printJson({ final_status: status });
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
printStatus(status);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
async function statusCommand(args) {
|
|
108
|
+
const { positional, options } = parseCommandArgs(args);
|
|
109
|
+
const transferId = positional[0] ?? parseOptionalString(options["transfer-id"]);
|
|
110
|
+
if (!transferId) {
|
|
111
|
+
throw new CliError("Missing transfer id.");
|
|
112
|
+
}
|
|
113
|
+
const status = await createClient(options).transferStatus(transferId);
|
|
114
|
+
if (options.json) {
|
|
115
|
+
printJson(status);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
printStatus(status);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async function distributeCommand(args) {
|
|
122
|
+
const { positional, options } = parseCommandArgs(args);
|
|
123
|
+
const transferId = positional[0] ?? parseOptionalString(options["transfer-id"]);
|
|
124
|
+
if (!transferId) {
|
|
125
|
+
throw new CliError("Missing transfer id.");
|
|
126
|
+
}
|
|
127
|
+
const response = await createClient(options).distributeTransfer(transferId);
|
|
128
|
+
if (options.json) {
|
|
129
|
+
printJson(response);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
console.log(`Distributed transfer: ${response.transfer_id}`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
async function cancelCommand(args) {
|
|
136
|
+
const { positional, options } = parseCommandArgs(args);
|
|
137
|
+
const transferId = positional[0] ?? parseOptionalString(options["transfer-id"]);
|
|
138
|
+
if (!transferId) {
|
|
139
|
+
throw new CliError("Missing transfer id.");
|
|
140
|
+
}
|
|
141
|
+
const response = await createClient(options).cancelTransfer(transferId);
|
|
142
|
+
if (options.json) {
|
|
143
|
+
printJson(response);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
console.log(response.message ?? "Transfer cancelled.");
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function createClient(options) {
|
|
150
|
+
const apiKey = parseOptionalString(options["api-key"]) ?? process.env.BEAM_API_KEY;
|
|
151
|
+
const natsUrl = parseOptionalString(options.server) ?? process.env.BEAM_NATS_URL;
|
|
152
|
+
const environment = parseOptionalString(options.environment) ?? process.env.BEAM_ENV;
|
|
153
|
+
const transferRuntimeShardCount = parseOptionalNumber(options["shard-count"], "--shard-count") ?? (process.env.TRANSFER_RUNTIME_SHARD_COUNT ? Number(process.env.TRANSFER_RUNTIME_SHARD_COUNT) : undefined);
|
|
154
|
+
return new BeamClient({
|
|
155
|
+
apiKey,
|
|
156
|
+
natsUrl,
|
|
157
|
+
environment,
|
|
158
|
+
transferRuntimeShardCount
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
async function waitForTransfer(client, transferId, pollIntervalSeconds) {
|
|
162
|
+
if (pollIntervalSeconds <= 0) {
|
|
163
|
+
throw new CliError("--poll-interval must be greater than 0.");
|
|
164
|
+
}
|
|
165
|
+
for (;;) {
|
|
166
|
+
const status = await client.transferStatus(transferId);
|
|
167
|
+
if (terminalStates.has(status.status.toLowerCase())) {
|
|
168
|
+
return status;
|
|
169
|
+
}
|
|
170
|
+
console.log(`Status: ${status.status} (${status.delivery_tasks_completed}/${status.delivery_tasks_total})`);
|
|
171
|
+
await sleep(pollIntervalSeconds * 1000);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
function parseCommandArgs(args) {
|
|
175
|
+
const positional = [];
|
|
176
|
+
const options = {};
|
|
177
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
178
|
+
const arg = args[index];
|
|
179
|
+
if (!arg.startsWith("--")) {
|
|
180
|
+
positional.push(arg);
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
const [rawKey, inlineValue] = arg.slice(2).split("=", 2);
|
|
184
|
+
const key = rawKey.trim();
|
|
185
|
+
if (!key) {
|
|
186
|
+
throw new CliError(`Invalid option: ${arg}`);
|
|
187
|
+
}
|
|
188
|
+
const next = args[index + 1];
|
|
189
|
+
const value = inlineValue ??
|
|
190
|
+
(next && !next.startsWith("--")
|
|
191
|
+
? ((index += 1), next)
|
|
192
|
+
: true);
|
|
193
|
+
const existing = options[key];
|
|
194
|
+
if (existing === undefined) {
|
|
195
|
+
options[key] = value;
|
|
196
|
+
}
|
|
197
|
+
else if (Array.isArray(existing)) {
|
|
198
|
+
existing.push(String(value));
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
options[key] = [String(existing), String(value)];
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return { positional, options };
|
|
205
|
+
}
|
|
206
|
+
function parseOptions(args) {
|
|
207
|
+
return parseCommandArgs(args).options;
|
|
208
|
+
}
|
|
209
|
+
function parseJsonList(value, option) {
|
|
210
|
+
if (value === undefined || value === true) {
|
|
211
|
+
throw new CliError(`${option} is required.`);
|
|
212
|
+
}
|
|
213
|
+
if (value === false) {
|
|
214
|
+
throw new CliError(`${option} is required.`);
|
|
215
|
+
}
|
|
216
|
+
const values = Array.isArray(value) ? value : [value];
|
|
217
|
+
return values.map((item) => {
|
|
218
|
+
try {
|
|
219
|
+
return JSON.parse(item);
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
223
|
+
throw new CliError(`Invalid JSON for ${option}: ${message}`);
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
function parseRequiredNumber(value, option) {
|
|
228
|
+
const parsed = parseOptionalNumber(value, option);
|
|
229
|
+
if (parsed === undefined) {
|
|
230
|
+
throw new CliError(`${option} is required.`);
|
|
231
|
+
}
|
|
232
|
+
return parsed;
|
|
233
|
+
}
|
|
234
|
+
function parseOptionalNumber(value, option) {
|
|
235
|
+
const text = parseOptionalString(value);
|
|
236
|
+
if (text === undefined) {
|
|
237
|
+
return undefined;
|
|
238
|
+
}
|
|
239
|
+
const parsed = Number(text);
|
|
240
|
+
if (!Number.isFinite(parsed)) {
|
|
241
|
+
throw new CliError(`${option} must be a number.`);
|
|
242
|
+
}
|
|
243
|
+
return parsed;
|
|
244
|
+
}
|
|
245
|
+
function parseOptionalString(value) {
|
|
246
|
+
if (value === undefined || value === false) {
|
|
247
|
+
return undefined;
|
|
248
|
+
}
|
|
249
|
+
if (value === true) {
|
|
250
|
+
return "true";
|
|
251
|
+
}
|
|
252
|
+
if (Array.isArray(value)) {
|
|
253
|
+
return value[value.length - 1];
|
|
254
|
+
}
|
|
255
|
+
return value;
|
|
256
|
+
}
|
|
257
|
+
function printStatus(status) {
|
|
258
|
+
console.log(`Transfer: ${status.transfer_id}`);
|
|
259
|
+
console.log(`Status: ${status.status}`);
|
|
260
|
+
console.log(`Size: ${status.source_bytes_total}`);
|
|
261
|
+
console.log(`Tasks: ${status.delivery_tasks_completed}/${status.delivery_tasks_total}`);
|
|
262
|
+
if (status.error_message) {
|
|
263
|
+
console.log(`Error: ${status.error_message}`);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
function printJson(value) {
|
|
267
|
+
console.log(JSON.stringify(value, null, 2));
|
|
268
|
+
}
|
|
269
|
+
function printHelp() {
|
|
270
|
+
console.log(`BEAM CLI
|
|
271
|
+
|
|
272
|
+
Usage:
|
|
273
|
+
beam-send create --source <json> --destination <json> --total-size <bytes> [options]
|
|
274
|
+
beam-send status <transfer-id> [options]
|
|
275
|
+
beam-send distribute <transfer-id> [options]
|
|
276
|
+
beam-send cancel <transfer-id> [options]
|
|
277
|
+
|
|
278
|
+
Global options:
|
|
279
|
+
--api-key <key> Beam API key. Defaults to BEAM_API_KEY.
|
|
280
|
+
--server <url> NATS URL. Defaults to BEAM_NATS_URL or ${BEAM_DEFAULT_NATS_URL}.
|
|
281
|
+
--environment <env> Beam environment token. Defaults to BEAM_ENV or prod.
|
|
282
|
+
--shard-count <count> Runtime shard count. Defaults to TRANSFER_RUNTIME_SHARD_COUNT or 1.
|
|
283
|
+
--json Print JSON responses.
|
|
284
|
+
|
|
285
|
+
Create options:
|
|
286
|
+
--source <json> Source config. Repeat for multiple sources.
|
|
287
|
+
--destination <json> Destination config. Repeat for multiple destinations.
|
|
288
|
+
--total-size <bytes> Total transfer size in bytes.
|
|
289
|
+
--chunk-size <bytes> Chunk size in bytes.
|
|
290
|
+
--name <name> Transfer name.
|
|
291
|
+
--distribute Distribute after creation.
|
|
292
|
+
--wait Poll until terminal status.
|
|
293
|
+
--poll-interval <sec> Poll interval for --wait. Defaults to 2.
|
|
294
|
+
--test-mode Create transfer in test mode.
|
|
295
|
+
--progressive-mode Enable progressive transfer mode.
|
|
296
|
+
|
|
297
|
+
Examples:
|
|
298
|
+
beam-send create \\
|
|
299
|
+
--source '{"type":"http","url":"https://downloads.example.com/report.parquet"}' \\
|
|
300
|
+
--destination '{"type":"http","url":"https://storage.example.com/report.parquet"}' \\
|
|
301
|
+
--total-size 104857600 \\
|
|
302
|
+
--distribute
|
|
303
|
+
|
|
304
|
+
beam-send status transfer_123
|
|
305
|
+
|
|
306
|
+
Default API:
|
|
307
|
+
${BEAM_DEFAULT_NATS_URL}
|
|
308
|
+
`);
|
|
309
|
+
}
|
|
310
|
+
function sleep(ms) {
|
|
311
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
312
|
+
}
|
|
313
|
+
class CliError extends Error {
|
|
314
|
+
constructor(message) {
|
|
315
|
+
super(message);
|
|
316
|
+
this.name = "CliError";
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
await main();
|
|
320
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@beam-network/cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Command line tools for BEAM transfers.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"beam",
|
|
7
|
+
"transfer",
|
|
8
|
+
"cli",
|
|
9
|
+
"bandwidth",
|
|
10
|
+
"storage"
|
|
11
|
+
],
|
|
12
|
+
"homepage": "https://docs.b1m.ai/docs/sdk",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/Beam-Network/beam-sdk-public/issues"
|
|
15
|
+
},
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "git+https://github.com/Beam-Network/beam-sdk-public.git",
|
|
19
|
+
"directory": "packages/cli"
|
|
20
|
+
},
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"author": "Beam Network",
|
|
23
|
+
"type": "module",
|
|
24
|
+
"sideEffects": false,
|
|
25
|
+
"bin": {
|
|
26
|
+
"beam-send": "./dist/cli.js"
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"dist",
|
|
30
|
+
"README.md"
|
|
31
|
+
],
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "tsc -p tsconfig.json",
|
|
34
|
+
"test": "tsc -p tsconfig.json --noEmit && npm run test:functional",
|
|
35
|
+
"test:functional": "npm run build && node --test test/cli.functional.test.mjs",
|
|
36
|
+
"lint": "tsc -p tsconfig.json --noEmit"
|
|
37
|
+
},
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"access": "public"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"@beam-network/sdk": "^0.5.19"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/node": "^22.10.0",
|
|
46
|
+
"typescript": "^5.5.0"
|
|
47
|
+
},
|
|
48
|
+
"engines": {
|
|
49
|
+
"node": ">=20"
|
|
50
|
+
}
|
|
51
|
+
}
|