stow-cli 1.0.3 → 2.0.2
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/{app-JPUDM4LJ.js → app-2A2CFVBC.js} +1 -1
- package/dist/app-2H4TLSN7.js +239 -0
- package/dist/app-DTW2LNXW.js +249 -0
- package/dist/app-HYCPA7GA.js +239 -0
- package/dist/app-IZGSPZPX.js +239 -0
- package/dist/app-UGUM75MC.js +239 -0
- package/dist/app-XPOEAZJC.js +239 -0
- package/dist/app-YITP5APT.js +233 -0
- package/dist/{backfill-QZTVNJZM.js → backfill-G57M2BRA.js} +3 -3
- package/dist/{buckets-JQKZ3PH3.js → buckets-NXIVHPW5.js} +2 -2
- package/dist/chunk-2AORPTQB.js +23 -0
- package/dist/chunk-5LU25QZK.js +17 -0
- package/dist/chunk-FEMMZ4YZ.js +125 -0
- package/dist/chunk-LYCXXF2T.js +79 -0
- package/dist/chunk-MHRMBH4Y.js +36 -0
- package/dist/{chunk-WAQSCS57.js → chunk-QF7PVPWQ.js} +1 -1
- package/dist/chunk-R5CCBTXZ.js +79 -0
- package/dist/chunk-TOADDO2F.js +23 -0
- package/dist/chunk-YRHPOFJT.js +115 -0
- package/dist/chunk-ZDVARBCV.js +43 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +43 -43
- package/dist/delete-AECEJX5W.js +18 -0
- package/dist/delete-GEX3O7YS.js +14 -0
- package/dist/delete-KYOZEODD.js +18 -0
- package/dist/delete-OLOAJRRO.js +18 -0
- package/dist/delete-V4EY4UBG.js +18 -0
- package/dist/{drops-QXGTYB5E.js → drops-RD55IDZ4.js} +2 -2
- package/dist/{files-OCYICIAM.js → files-E662TXUP.js} +3 -3
- package/dist/{health-YMZTZUFX.js → health-6LWM7KAT.js} +3 -3
- package/dist/{jobs-6JY4SVV5.js → jobs-CLXYKZ3B.js} +4 -4
- package/dist/{jobs-OKKGKSIH.js → jobs-K3LTNETU.js} +5 -5
- package/dist/list-7A3VZA2T.js +97 -0
- package/dist/list-DHXVIMRI.js +94 -0
- package/dist/list-DJEAKEZJ.js +106 -0
- package/dist/list-DQRU6QHO.js +106 -0
- package/dist/list-I5A6LTHX.js +106 -0
- package/dist/list-KEQPJY7I.js +109 -0
- package/dist/list-Z3MPT6MI.js +109 -0
- package/dist/{maintenance-EZUHQK5Q.js → maintenance-7LOAGG6J.js} +6 -6
- package/dist/open-2YNHG3MA.js +15 -0
- package/dist/open-F73Q2OHD.js +15 -0
- package/dist/{profiles-GWLBEEIT.js → profiles-C6SCFXS6.js} +2 -2
- package/dist/{queues-EQX7EJZF.js → queues-2GJAMMNF.js} +4 -4
- package/dist/{search-2PXM6XQ6.js → search-DV4VV62L.js} +2 -2
- package/dist/{tags-LSVEIIUF.js → tags-URHK2YH5.js} +2 -2
- package/dist/upload-3NS5O3UL.js +120 -0
- package/dist/upload-5RIDB2C5.js +92 -0
- package/dist/upload-B2PGW3AN.js +125 -0
- package/dist/{upload-ESYKBYHA.js → upload-DQDBDIDI.js} +1 -1
- package/dist/upload-FGNGNPC3.js +93 -0
- package/dist/upload-HKUPWTK2.js +173 -0
- package/dist/upload-JDVSJVWK.js +173 -0
- package/dist/upload-K4H7ZVRW.js +98 -0
- package/dist/upload-MI6VFGTC.js +92 -0
- package/dist/whoami-2SLCNVKP.js +27 -0
- package/dist/whoami-5IYRZKWS.js +28 -0
- package/dist/{whoami-4UYMSRVP.js → whoami-754O5IML.js} +1 -1
- package/dist/whoami-DOMX3Z5K.js +28 -0
- package/dist/whoami-IPMCUEUH.js +27 -0
- package/dist/whoami-JSQA2IDN.js +27 -0
- package/dist/whoami-RKH5HHPR.js +27 -0
- package/package.json +4 -4
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getApiKey,
|
|
3
|
+
getBaseUrl
|
|
4
|
+
} from "./chunk-2AORPTQB.js";
|
|
5
|
+
|
|
6
|
+
// src/lib/api.ts
|
|
7
|
+
var StowApiError = class extends Error {
|
|
8
|
+
status;
|
|
9
|
+
code;
|
|
10
|
+
constructor(status, message, code) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = "StowApiError";
|
|
13
|
+
this.status = status;
|
|
14
|
+
this.code = code;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
function formatApiError(status, message) {
|
|
18
|
+
switch (status) {
|
|
19
|
+
case 401:
|
|
20
|
+
return "Invalid API key. Set STOW_API_KEY or get one at stow.sh/dashboard/api-keys";
|
|
21
|
+
case 403:
|
|
22
|
+
return message || "Permission denied";
|
|
23
|
+
case 404:
|
|
24
|
+
return message || "Not found";
|
|
25
|
+
case 413:
|
|
26
|
+
return "File too large (max 50MB)";
|
|
27
|
+
case 429:
|
|
28
|
+
return "Rate limit exceeded. Try again shortly.";
|
|
29
|
+
default:
|
|
30
|
+
return message || `Request failed (${status})`;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async function apiRequest(path, options = {}) {
|
|
34
|
+
const apiKey = getApiKey();
|
|
35
|
+
const baseUrl = getBaseUrl();
|
|
36
|
+
const url = `${baseUrl}${path}`;
|
|
37
|
+
const headers = {
|
|
38
|
+
"x-api-key": apiKey,
|
|
39
|
+
...options.headers || {}
|
|
40
|
+
};
|
|
41
|
+
if (options.body && typeof options.body === "string") {
|
|
42
|
+
headers["Content-Type"] = "application/json";
|
|
43
|
+
}
|
|
44
|
+
let response;
|
|
45
|
+
try {
|
|
46
|
+
response = await fetch(url, { ...options, headers });
|
|
47
|
+
} catch (err) {
|
|
48
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
49
|
+
if (msg.includes("ECONNREFUSED")) {
|
|
50
|
+
throw new StowApiError(0, `Cannot connect to ${baseUrl}. Is the server running?`);
|
|
51
|
+
}
|
|
52
|
+
if (msg.includes("ENOTFOUND")) {
|
|
53
|
+
throw new StowApiError(0, `Cannot resolve ${baseUrl}. Check your STOW_API_URL or internet connection.`);
|
|
54
|
+
}
|
|
55
|
+
throw new StowApiError(0, `Network error: ${msg}`);
|
|
56
|
+
}
|
|
57
|
+
if (!response.ok) {
|
|
58
|
+
const data = await response.json().catch(() => ({}));
|
|
59
|
+
const serverMsg = data.error;
|
|
60
|
+
const code = data.code;
|
|
61
|
+
throw new StowApiError(
|
|
62
|
+
response.status,
|
|
63
|
+
formatApiError(response.status, serverMsg || ""),
|
|
64
|
+
code
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
return await response.json();
|
|
68
|
+
}
|
|
69
|
+
async function apiUpload(path, fileBuffer, filename, contentType) {
|
|
70
|
+
const apiKey = getApiKey();
|
|
71
|
+
const baseUrl = getBaseUrl();
|
|
72
|
+
const boundary = `----stow${Date.now()}`;
|
|
73
|
+
const parts = [];
|
|
74
|
+
parts.push(Buffer.from(`--${boundary}\r
|
|
75
|
+
`));
|
|
76
|
+
parts.push(Buffer.from(`Content-Disposition: form-data; name="file"; filename="${filename}"\r
|
|
77
|
+
`));
|
|
78
|
+
parts.push(Buffer.from(`Content-Type: ${contentType}\r
|
|
79
|
+
\r
|
|
80
|
+
`));
|
|
81
|
+
parts.push(fileBuffer);
|
|
82
|
+
parts.push(Buffer.from(`\r
|
|
83
|
+
--${boundary}--\r
|
|
84
|
+
`));
|
|
85
|
+
const body = Buffer.concat(parts);
|
|
86
|
+
let response;
|
|
87
|
+
try {
|
|
88
|
+
response = await fetch(`${baseUrl}${path}`, {
|
|
89
|
+
method: "POST",
|
|
90
|
+
headers: {
|
|
91
|
+
"x-api-key": apiKey,
|
|
92
|
+
"Content-Type": `multipart/form-data; boundary=${boundary}`
|
|
93
|
+
},
|
|
94
|
+
body
|
|
95
|
+
});
|
|
96
|
+
} catch (err) {
|
|
97
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
98
|
+
throw new StowApiError(0, `Network error: ${msg}`);
|
|
99
|
+
}
|
|
100
|
+
if (!response.ok) {
|
|
101
|
+
const data = await response.json().catch(() => ({}));
|
|
102
|
+
const serverMsg = data.error;
|
|
103
|
+
throw new StowApiError(
|
|
104
|
+
response.status,
|
|
105
|
+
formatApiError(response.status, serverMsg || "")
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
return await response.json();
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export {
|
|
112
|
+
StowApiError,
|
|
113
|
+
apiRequest,
|
|
114
|
+
apiUpload
|
|
115
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// src/lib/format.ts
|
|
2
|
+
function formatBytes(bytes) {
|
|
3
|
+
if (bytes === 0) {
|
|
4
|
+
return "0 B";
|
|
5
|
+
}
|
|
6
|
+
const units = ["B", "KB", "MB", "GB", "TB"];
|
|
7
|
+
const i = Math.floor(Math.log(bytes) / Math.log(1024));
|
|
8
|
+
return `${(bytes / 1024 ** i).toFixed(i > 0 ? 1 : 0)} ${units[i]}`;
|
|
9
|
+
}
|
|
10
|
+
function formatTable(headers, rows) {
|
|
11
|
+
if (rows.length === 0) {
|
|
12
|
+
return "";
|
|
13
|
+
}
|
|
14
|
+
const widths = headers.map((h, i) => {
|
|
15
|
+
const dataMax = rows.reduce(
|
|
16
|
+
(max, row) => Math.max(max, (row[i] || "").length),
|
|
17
|
+
0
|
|
18
|
+
);
|
|
19
|
+
return Math.max(h.length, dataMax);
|
|
20
|
+
});
|
|
21
|
+
const pad = (str, width) => str.padEnd(width);
|
|
22
|
+
const sep = widths.map((w) => "\u2500".repeat(w)).join("\u2500\u2500");
|
|
23
|
+
const lines = [];
|
|
24
|
+
lines.push(headers.map((h, i) => pad(h, widths[i])).join(" "));
|
|
25
|
+
lines.push(sep);
|
|
26
|
+
for (const row of rows) {
|
|
27
|
+
lines.push(row.map((cell, i) => pad(cell || "", widths[i])).join(" "));
|
|
28
|
+
}
|
|
29
|
+
return lines.join("\n");
|
|
30
|
+
}
|
|
31
|
+
function usageBar(used, total, width = 20) {
|
|
32
|
+
const ratio = Math.min(used / total, 1);
|
|
33
|
+
const filled = Math.round(ratio * width);
|
|
34
|
+
const empty = width - filled;
|
|
35
|
+
const pct = Math.round(ratio * 100);
|
|
36
|
+
return `[${"\u2588".repeat(filled)}${"\u2591".repeat(empty)}] ${pct}%`;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export {
|
|
40
|
+
formatBytes,
|
|
41
|
+
formatTable,
|
|
42
|
+
usageBar
|
|
43
|
+
};
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
package/dist/cli.js
CHANGED
|
@@ -344,7 +344,7 @@ var program = new Command();
|
|
|
344
344
|
program.name("stow").description(CLI_DOCS.root.description).version(VERSION).addHelpText("after", renderCommandHelp("root"));
|
|
345
345
|
program.command("drop").description(CLI_DOCS.drop.description).argument("<file>", "File to upload").option("-q, --quiet", "Only output the URL").addHelpText("after", renderCommandHelp("drop")).action(async (file, options) => {
|
|
346
346
|
try {
|
|
347
|
-
const { uploadDrop } = await import("./upload-
|
|
347
|
+
const { uploadDrop } = await import("./upload-5RIDB2C5.js");
|
|
348
348
|
await uploadDrop(file, options);
|
|
349
349
|
} catch (err) {
|
|
350
350
|
handleError(err);
|
|
@@ -353,7 +353,7 @@ program.command("drop").description(CLI_DOCS.drop.description).argument("<file>"
|
|
|
353
353
|
program.command("upload").description(CLI_DOCS.upload.description).argument("<file>", "File to upload").option("-b, --bucket <name>", "Bucket name or ID").option("-q, --quiet", "Only output the URL").addHelpText("after", renderCommandHelp("upload")).action(
|
|
354
354
|
async (file, options) => {
|
|
355
355
|
try {
|
|
356
|
-
const { uploadFile } = await import("./upload-
|
|
356
|
+
const { uploadFile } = await import("./upload-5RIDB2C5.js");
|
|
357
357
|
await uploadFile(file, options);
|
|
358
358
|
} catch (err) {
|
|
359
359
|
handleError(err);
|
|
@@ -362,7 +362,7 @@ program.command("upload").description(CLI_DOCS.upload.description).argument("<fi
|
|
|
362
362
|
);
|
|
363
363
|
var bucketsCmd = program.command("buckets").description(CLI_DOCS.buckets.description).addHelpText("after", renderCommandHelp("buckets")).action(async () => {
|
|
364
364
|
try {
|
|
365
|
-
const { listBuckets } = await import("./buckets-
|
|
365
|
+
const { listBuckets } = await import("./buckets-NXIVHPW5.js");
|
|
366
366
|
await listBuckets();
|
|
367
367
|
} catch (err) {
|
|
368
368
|
handleError(err);
|
|
@@ -371,7 +371,7 @@ var bucketsCmd = program.command("buckets").description(CLI_DOCS.buckets.descrip
|
|
|
371
371
|
bucketsCmd.command("create").description(CLI_DOCS.bucketsCreate.description).argument("<name>", "Bucket name").option("-d, --description <text>", "Bucket description").option("--public", "Make bucket public").addHelpText("after", renderCommandHelp("bucketsCreate")).action(
|
|
372
372
|
async (name, options) => {
|
|
373
373
|
try {
|
|
374
|
-
const { createBucket } = await import("./buckets-
|
|
374
|
+
const { createBucket } = await import("./buckets-NXIVHPW5.js");
|
|
375
375
|
await createBucket(name, options);
|
|
376
376
|
} catch (err) {
|
|
377
377
|
handleError(err);
|
|
@@ -380,7 +380,7 @@ bucketsCmd.command("create").description(CLI_DOCS.bucketsCreate.description).arg
|
|
|
380
380
|
);
|
|
381
381
|
bucketsCmd.command("rename").description(CLI_DOCS.bucketsRename.description).argument("<name>", "Current bucket name").argument("<new-name>", "New bucket name").option("-y, --yes", "Skip confirmation warning").addHelpText("after", renderCommandHelp("bucketsRename")).action(async (name, newName, options) => {
|
|
382
382
|
try {
|
|
383
|
-
const { renameBucket } = await import("./buckets-
|
|
383
|
+
const { renameBucket } = await import("./buckets-NXIVHPW5.js");
|
|
384
384
|
await renameBucket(name, newName, options);
|
|
385
385
|
} catch (err) {
|
|
386
386
|
handleError(err);
|
|
@@ -388,7 +388,7 @@ bucketsCmd.command("rename").description(CLI_DOCS.bucketsRename.description).arg
|
|
|
388
388
|
});
|
|
389
389
|
bucketsCmd.command("delete").description(CLI_DOCS.bucketsDelete.description).argument("<id>", "Bucket ID").addHelpText("after", renderCommandHelp("bucketsDelete")).action(async (id) => {
|
|
390
390
|
try {
|
|
391
|
-
const { deleteBucket } = await import("./buckets-
|
|
391
|
+
const { deleteBucket } = await import("./buckets-NXIVHPW5.js");
|
|
392
392
|
await deleteBucket(id);
|
|
393
393
|
} catch (err) {
|
|
394
394
|
handleError(err);
|
|
@@ -401,7 +401,7 @@ var filesCmd = program.command("files").description(CLI_DOCS.files.description).
|
|
|
401
401
|
return;
|
|
402
402
|
}
|
|
403
403
|
try {
|
|
404
|
-
const { listFiles } = await import("./files-
|
|
404
|
+
const { listFiles } = await import("./files-E662TXUP.js");
|
|
405
405
|
await listFiles(bucket, options);
|
|
406
406
|
} catch (err) {
|
|
407
407
|
handleError(err);
|
|
@@ -410,7 +410,7 @@ var filesCmd = program.command("files").description(CLI_DOCS.files.description).
|
|
|
410
410
|
);
|
|
411
411
|
filesCmd.command("get").description(CLI_DOCS.filesGet.description).argument("<bucket>", "Bucket name").argument("<key>", "File key").option("--json", "Output as JSON").addHelpText("after", renderCommandHelp("filesGet")).action(async (bucket, key, options) => {
|
|
412
412
|
try {
|
|
413
|
-
const { getFile } = await import("./files-
|
|
413
|
+
const { getFile } = await import("./files-E662TXUP.js");
|
|
414
414
|
await getFile(bucket, key, options);
|
|
415
415
|
} catch (err) {
|
|
416
416
|
handleError(err);
|
|
@@ -419,7 +419,7 @@ filesCmd.command("get").description(CLI_DOCS.filesGet.description).argument("<bu
|
|
|
419
419
|
filesCmd.command("update").description(CLI_DOCS.filesUpdate.description).argument("<bucket>", "Bucket name").argument("<key>", "File key").option("-m, --metadata <kv...>", "Metadata key=value pairs").option("--json", "Output as JSON").addHelpText("after", renderCommandHelp("filesUpdate")).action(
|
|
420
420
|
async (bucket, key, options) => {
|
|
421
421
|
try {
|
|
422
|
-
const { updateFile } = await import("./files-
|
|
422
|
+
const { updateFile } = await import("./files-E662TXUP.js");
|
|
423
423
|
await updateFile(bucket, key, options);
|
|
424
424
|
} catch (err) {
|
|
425
425
|
handleError(err);
|
|
@@ -428,7 +428,7 @@ filesCmd.command("update").description(CLI_DOCS.filesUpdate.description).argumen
|
|
|
428
428
|
);
|
|
429
429
|
filesCmd.command("enrich").description(CLI_DOCS.filesEnrich.description).argument("<bucket>", "Bucket name").argument("<key>", "File key").addHelpText("after", renderCommandHelp("filesEnrich")).action(async (bucket, key) => {
|
|
430
430
|
try {
|
|
431
|
-
const { enrichFile } = await import("./files-
|
|
431
|
+
const { enrichFile } = await import("./files-E662TXUP.js");
|
|
432
432
|
await enrichFile(bucket, key);
|
|
433
433
|
} catch (err) {
|
|
434
434
|
handleError(err);
|
|
@@ -437,7 +437,7 @@ filesCmd.command("enrich").description(CLI_DOCS.filesEnrich.description).argumen
|
|
|
437
437
|
filesCmd.command("missing").description(CLI_DOCS.filesMissing.description).argument("<bucket>", "Bucket name").argument("<type>", "dimensions | embeddings | colors").option("-l, --limit <count>", "Max files to return").option("--json", "Output as JSON").addHelpText("after", renderCommandHelp("filesMissing")).action(
|
|
438
438
|
async (bucket, type, options) => {
|
|
439
439
|
try {
|
|
440
|
-
const { listMissing } = await import("./files-
|
|
440
|
+
const { listMissing } = await import("./files-E662TXUP.js");
|
|
441
441
|
await listMissing(bucket, type, options);
|
|
442
442
|
} catch (err) {
|
|
443
443
|
handleError(err);
|
|
@@ -446,7 +446,7 @@ filesCmd.command("missing").description(CLI_DOCS.filesMissing.description).argum
|
|
|
446
446
|
);
|
|
447
447
|
var dropsCmd = program.command("drops").description(CLI_DOCS.drops.description).addHelpText("after", renderCommandHelp("drops")).action(async () => {
|
|
448
448
|
try {
|
|
449
|
-
const { listDrops } = await import("./drops-
|
|
449
|
+
const { listDrops } = await import("./drops-RD55IDZ4.js");
|
|
450
450
|
await listDrops();
|
|
451
451
|
} catch (err) {
|
|
452
452
|
handleError(err);
|
|
@@ -454,7 +454,7 @@ var dropsCmd = program.command("drops").description(CLI_DOCS.drops.description).
|
|
|
454
454
|
});
|
|
455
455
|
dropsCmd.command("delete").description(CLI_DOCS.dropsDelete.description).argument("<id>", "Drop ID").addHelpText("after", renderCommandHelp("dropsDelete")).action(async (id) => {
|
|
456
456
|
try {
|
|
457
|
-
const { deleteDrop } = await import("./drops-
|
|
457
|
+
const { deleteDrop } = await import("./drops-RD55IDZ4.js");
|
|
458
458
|
await deleteDrop(id);
|
|
459
459
|
} catch (err) {
|
|
460
460
|
handleError(err);
|
|
@@ -464,7 +464,7 @@ var searchCmd = program.command("search").description(CLI_DOCS.search.descriptio
|
|
|
464
464
|
searchCmd.command("text").description(CLI_DOCS.searchText.description).argument("<query>", "Search query").option("-b, --bucket <name>", "Bucket name").option("-l, --limit <count>", "Max results").option("--json", "Output as JSON").addHelpText("after", renderCommandHelp("searchText")).action(
|
|
465
465
|
async (query, options) => {
|
|
466
466
|
try {
|
|
467
|
-
const { textSearch } = await import("./search-
|
|
467
|
+
const { textSearch } = await import("./search-DV4VV62L.js");
|
|
468
468
|
await textSearch(query, options);
|
|
469
469
|
} catch (err) {
|
|
470
470
|
handleError(err);
|
|
@@ -474,7 +474,7 @@ searchCmd.command("text").description(CLI_DOCS.searchText.description).argument(
|
|
|
474
474
|
searchCmd.command("similar").description(CLI_DOCS.searchSimilar.description).requiredOption("--file <key>", "File key to search from").option("-b, --bucket <name>", "Bucket name").option("-l, --limit <count>", "Max results").option("--json", "Output as JSON").addHelpText("after", renderCommandHelp("searchSimilar")).action(
|
|
475
475
|
async (options) => {
|
|
476
476
|
try {
|
|
477
|
-
const { similarSearch } = await import("./search-
|
|
477
|
+
const { similarSearch } = await import("./search-DV4VV62L.js");
|
|
478
478
|
await similarSearch(options);
|
|
479
479
|
} catch (err) {
|
|
480
480
|
handleError(err);
|
|
@@ -484,7 +484,7 @@ searchCmd.command("similar").description(CLI_DOCS.searchSimilar.description).req
|
|
|
484
484
|
searchCmd.command("color").description(CLI_DOCS.searchColor.description).requiredOption("--hex <color>", "Hex color code").option("-b, --bucket <name>", "Bucket name").option("-l, --limit <count>", "Max results").option("--json", "Output as JSON").addHelpText("after", renderCommandHelp("searchColor")).action(
|
|
485
485
|
async (options) => {
|
|
486
486
|
try {
|
|
487
|
-
const { colorSearch } = await import("./search-
|
|
487
|
+
const { colorSearch } = await import("./search-DV4VV62L.js");
|
|
488
488
|
await colorSearch(options);
|
|
489
489
|
} catch (err) {
|
|
490
490
|
handleError(err);
|
|
@@ -494,7 +494,7 @@ searchCmd.command("color").description(CLI_DOCS.searchColor.description).require
|
|
|
494
494
|
searchCmd.command("diverse").description(CLI_DOCS.searchDiverse.description).option("-b, --bucket <name>", "Bucket name").option("-l, --limit <count>", "Max results").option("--json", "Output as JSON").addHelpText("after", renderCommandHelp("searchDiverse")).action(
|
|
495
495
|
async (options) => {
|
|
496
496
|
try {
|
|
497
|
-
const { diverseSearch } = await import("./search-
|
|
497
|
+
const { diverseSearch } = await import("./search-DV4VV62L.js");
|
|
498
498
|
await diverseSearch(options);
|
|
499
499
|
} catch (err) {
|
|
500
500
|
handleError(err);
|
|
@@ -503,7 +503,7 @@ searchCmd.command("diverse").description(CLI_DOCS.searchDiverse.description).opt
|
|
|
503
503
|
);
|
|
504
504
|
var tagsCmd = program.command("tags").description(CLI_DOCS.tags.description).option("--json", "Output as JSON").addHelpText("after", renderCommandHelp("tags")).action(async (options) => {
|
|
505
505
|
try {
|
|
506
|
-
const { listTags } = await import("./tags-
|
|
506
|
+
const { listTags } = await import("./tags-URHK2YH5.js");
|
|
507
507
|
await listTags(options);
|
|
508
508
|
} catch (err) {
|
|
509
509
|
handleError(err);
|
|
@@ -511,7 +511,7 @@ var tagsCmd = program.command("tags").description(CLI_DOCS.tags.description).opt
|
|
|
511
511
|
});
|
|
512
512
|
tagsCmd.command("create").description(CLI_DOCS.tagsCreate.description).argument("<name>", "Tag name").option("--color <hex>", "Tag color (hex)").option("--json", "Output as JSON").addHelpText("after", renderCommandHelp("tagsCreate")).action(async (name, options) => {
|
|
513
513
|
try {
|
|
514
|
-
const { createTag } = await import("./tags-
|
|
514
|
+
const { createTag } = await import("./tags-URHK2YH5.js");
|
|
515
515
|
await createTag(name, options);
|
|
516
516
|
} catch (err) {
|
|
517
517
|
handleError(err);
|
|
@@ -519,7 +519,7 @@ tagsCmd.command("create").description(CLI_DOCS.tagsCreate.description).argument(
|
|
|
519
519
|
});
|
|
520
520
|
tagsCmd.command("delete").description(CLI_DOCS.tagsDelete.description).argument("<id>", "Tag ID").addHelpText("after", renderCommandHelp("tagsDelete")).action(async (id) => {
|
|
521
521
|
try {
|
|
522
|
-
const { deleteTag } = await import("./tags-
|
|
522
|
+
const { deleteTag } = await import("./tags-URHK2YH5.js");
|
|
523
523
|
await deleteTag(id);
|
|
524
524
|
} catch (err) {
|
|
525
525
|
handleError(err);
|
|
@@ -529,7 +529,7 @@ var profilesCmd = program.command("profiles").description(CLI_DOCS.profiles.desc
|
|
|
529
529
|
profilesCmd.command("create").description(CLI_DOCS.profilesCreate.description).requiredOption("--name <name>", "Profile name").option("-b, --bucket <id>", "Bucket ID").option("--json", "Output as JSON").addHelpText("after", renderCommandHelp("profilesCreate")).action(
|
|
530
530
|
async (options) => {
|
|
531
531
|
try {
|
|
532
|
-
const { createProfile } = await import("./profiles-
|
|
532
|
+
const { createProfile } = await import("./profiles-C6SCFXS6.js");
|
|
533
533
|
await createProfile(options);
|
|
534
534
|
} catch (err) {
|
|
535
535
|
handleError(err);
|
|
@@ -538,7 +538,7 @@ profilesCmd.command("create").description(CLI_DOCS.profilesCreate.description).r
|
|
|
538
538
|
);
|
|
539
539
|
profilesCmd.command("get").description(CLI_DOCS.profilesGet.description).argument("<id>", "Profile ID").option("--json", "Output as JSON").addHelpText("after", renderCommandHelp("profilesGet")).action(async (id, options) => {
|
|
540
540
|
try {
|
|
541
|
-
const { getProfile } = await import("./profiles-
|
|
541
|
+
const { getProfile } = await import("./profiles-C6SCFXS6.js");
|
|
542
542
|
await getProfile(id, options);
|
|
543
543
|
} catch (err) {
|
|
544
544
|
handleError(err);
|
|
@@ -546,7 +546,7 @@ profilesCmd.command("get").description(CLI_DOCS.profilesGet.description).argumen
|
|
|
546
546
|
});
|
|
547
547
|
profilesCmd.command("delete").description(CLI_DOCS.profilesDelete.description).argument("<id>", "Profile ID").addHelpText("after", renderCommandHelp("profilesDelete")).action(async (id) => {
|
|
548
548
|
try {
|
|
549
|
-
const { deleteProfile } = await import("./profiles-
|
|
549
|
+
const { deleteProfile } = await import("./profiles-C6SCFXS6.js");
|
|
550
550
|
await deleteProfile(id);
|
|
551
551
|
} catch (err) {
|
|
552
552
|
handleError(err);
|
|
@@ -555,7 +555,7 @@ profilesCmd.command("delete").description(CLI_DOCS.profilesDelete.description).a
|
|
|
555
555
|
var jobsCmd = program.command("jobs").description(CLI_DOCS.jobs.description).requiredOption("-b, --bucket <id>", "Bucket ID (required)").option("-s, --status <status>", "Filter by status").option("-q, --queue <name>", "Filter by queue name").option("-l, --limit <count>", "Max jobs to return").option("--json", "Output as JSON").addHelpText("after", renderCommandHelp("jobs")).action(
|
|
556
556
|
async (options) => {
|
|
557
557
|
try {
|
|
558
|
-
const { listJobs } = await import("./jobs-
|
|
558
|
+
const { listJobs } = await import("./jobs-CLXYKZ3B.js");
|
|
559
559
|
await listJobs(options.bucket, options);
|
|
560
560
|
} catch (err) {
|
|
561
561
|
handleError(err);
|
|
@@ -564,7 +564,7 @@ var jobsCmd = program.command("jobs").description(CLI_DOCS.jobs.description).req
|
|
|
564
564
|
);
|
|
565
565
|
jobsCmd.command("retry").description(CLI_DOCS.jobsRetry.description).argument("<id>", "Job ID").requiredOption("-q, --queue <name>", "Queue name").requiredOption("-b, --bucket <id>", "Bucket ID").addHelpText("after", renderCommandHelp("jobsRetry")).action(async (id, options) => {
|
|
566
566
|
try {
|
|
567
|
-
const { retryJob } = await import("./jobs-
|
|
567
|
+
const { retryJob } = await import("./jobs-CLXYKZ3B.js");
|
|
568
568
|
await retryJob(id, options);
|
|
569
569
|
} catch (err) {
|
|
570
570
|
handleError(err);
|
|
@@ -572,7 +572,7 @@ jobsCmd.command("retry").description(CLI_DOCS.jobsRetry.description).argument("<
|
|
|
572
572
|
});
|
|
573
573
|
jobsCmd.command("delete").description(CLI_DOCS.jobsDelete.description).argument("<id>", "Job ID").requiredOption("-q, --queue <name>", "Queue name").requiredOption("-b, --bucket <id>", "Bucket ID").addHelpText("after", renderCommandHelp("jobsDelete")).action(async (id, options) => {
|
|
574
574
|
try {
|
|
575
|
-
const { deleteJob } = await import("./jobs-
|
|
575
|
+
const { deleteJob } = await import("./jobs-CLXYKZ3B.js");
|
|
576
576
|
await deleteJob(id, options);
|
|
577
577
|
} catch (err) {
|
|
578
578
|
handleError(err);
|
|
@@ -581,7 +581,7 @@ jobsCmd.command("delete").description(CLI_DOCS.jobsDelete.description).argument(
|
|
|
581
581
|
var adminCmd = program.command("admin").description(CLI_DOCS.admin.description).addHelpText("after", renderCommandHelp("admin"));
|
|
582
582
|
adminCmd.command("health").description(CLI_DOCS.adminHealth.description).option("--json", "Output as JSON").addHelpText("after", renderCommandHelp("adminHealth")).action(async (options) => {
|
|
583
583
|
try {
|
|
584
|
-
const { health } = await import("./health-
|
|
584
|
+
const { health } = await import("./health-6LWM7KAT.js");
|
|
585
585
|
await health(options);
|
|
586
586
|
} catch (err) {
|
|
587
587
|
handleError(err);
|
|
@@ -591,7 +591,7 @@ var backfillCmd = adminCmd.command("backfill").description(CLI_DOCS.adminBackfil
|
|
|
591
591
|
backfillCmd.command("dimensions").description("Backfill image dimensions").option("--bucket <id>", "Bucket ID").option("-l, --limit <count>", "Max files to enqueue").option("--dry-run", "Preview without enqueuing").option("--json", "Output as JSON").action(
|
|
592
592
|
async (options) => {
|
|
593
593
|
try {
|
|
594
|
-
const { backfillDimensions } = await import("./backfill-
|
|
594
|
+
const { backfillDimensions } = await import("./backfill-G57M2BRA.js");
|
|
595
595
|
await backfillDimensions(options);
|
|
596
596
|
} catch (err) {
|
|
597
597
|
handleError(err);
|
|
@@ -601,7 +601,7 @@ backfillCmd.command("dimensions").description("Backfill image dimensions").optio
|
|
|
601
601
|
backfillCmd.command("colors").description("Backfill color extraction").option("--bucket <id>", "Bucket ID").option("-l, --limit <count>", "Max files to enqueue").option("--dry-run", "Preview without enqueuing").option("--json", "Output as JSON").action(
|
|
602
602
|
async (options) => {
|
|
603
603
|
try {
|
|
604
|
-
const { backfillColors } = await import("./backfill-
|
|
604
|
+
const { backfillColors } = await import("./backfill-G57M2BRA.js");
|
|
605
605
|
await backfillColors(options);
|
|
606
606
|
} catch (err) {
|
|
607
607
|
handleError(err);
|
|
@@ -611,7 +611,7 @@ backfillCmd.command("colors").description("Backfill color extraction").option("-
|
|
|
611
611
|
backfillCmd.command("embeddings").description("Backfill embedding generation").option("--bucket <id>", "Bucket ID").option("-l, --limit <count>", "Max files to enqueue").option("--dry-run", "Preview without enqueuing").option("--json", "Output as JSON").action(
|
|
612
612
|
async (options) => {
|
|
613
613
|
try {
|
|
614
|
-
const { backfillEmbeddings } = await import("./backfill-
|
|
614
|
+
const { backfillEmbeddings } = await import("./backfill-G57M2BRA.js");
|
|
615
615
|
await backfillEmbeddings(options);
|
|
616
616
|
} catch (err) {
|
|
617
617
|
handleError(err);
|
|
@@ -621,7 +621,7 @@ backfillCmd.command("embeddings").description("Backfill embedding generation").o
|
|
|
621
621
|
adminCmd.command("cleanup-drops").description(CLI_DOCS.adminCleanupDrops.description).option("--max-age-hours <hours>", "Max age in hours").option("--dry-run", "Preview without deleting").option("--json", "Output as JSON").addHelpText("after", renderCommandHelp("adminCleanupDrops")).action(
|
|
622
622
|
async (options) => {
|
|
623
623
|
try {
|
|
624
|
-
const { cleanupDrops } = await import("./maintenance-
|
|
624
|
+
const { cleanupDrops } = await import("./maintenance-7LOAGG6J.js");
|
|
625
625
|
await cleanupDrops(options);
|
|
626
626
|
} catch (err) {
|
|
627
627
|
handleError(err);
|
|
@@ -630,7 +630,7 @@ adminCmd.command("cleanup-drops").description(CLI_DOCS.adminCleanupDrops.descrip
|
|
|
630
630
|
);
|
|
631
631
|
adminCmd.command("purge-events").description(CLI_DOCS.adminPurgeEvents.description).option("--dry-run", "Preview without deleting").option("--json", "Output as JSON").addHelpText("after", renderCommandHelp("adminPurgeEvents")).action(async (options) => {
|
|
632
632
|
try {
|
|
633
|
-
const { purgeEvents } = await import("./maintenance-
|
|
633
|
+
const { purgeEvents } = await import("./maintenance-7LOAGG6J.js");
|
|
634
634
|
await purgeEvents(options);
|
|
635
635
|
} catch (err) {
|
|
636
636
|
handleError(err);
|
|
@@ -639,7 +639,7 @@ adminCmd.command("purge-events").description(CLI_DOCS.adminPurgeEvents.descripti
|
|
|
639
639
|
adminCmd.command("reconcile-files").description(CLI_DOCS.adminReconcileFiles.description).requiredOption("--bucket <id>", "Bucket ID").option("--dry-run", "Preview without reconciling").option("--json", "Output as JSON").addHelpText("after", renderCommandHelp("adminReconcileFiles")).action(
|
|
640
640
|
async (options) => {
|
|
641
641
|
try {
|
|
642
|
-
const { reconcileFiles } = await import("./maintenance-
|
|
642
|
+
const { reconcileFiles } = await import("./maintenance-7LOAGG6J.js");
|
|
643
643
|
await reconcileFiles(options);
|
|
644
644
|
} catch (err) {
|
|
645
645
|
handleError(err);
|
|
@@ -648,7 +648,7 @@ adminCmd.command("reconcile-files").description(CLI_DOCS.adminReconcileFiles.des
|
|
|
648
648
|
);
|
|
649
649
|
adminCmd.command("retry-sync-failures").description(CLI_DOCS.adminRetrySyncFailures.description).option("--json", "Output as JSON").addHelpText("after", renderCommandHelp("adminRetrySyncFailures")).action(async (options) => {
|
|
650
650
|
try {
|
|
651
|
-
const { retrySyncFailures } = await import("./maintenance-
|
|
651
|
+
const { retrySyncFailures } = await import("./maintenance-7LOAGG6J.js");
|
|
652
652
|
await retrySyncFailures(options);
|
|
653
653
|
} catch (err) {
|
|
654
654
|
handleError(err);
|
|
@@ -657,7 +657,7 @@ adminCmd.command("retry-sync-failures").description(CLI_DOCS.adminRetrySyncFailu
|
|
|
657
657
|
var adminJobsCmd = adminCmd.command("jobs").description(CLI_DOCS.adminJobs.description).option("--org <id>", "Filter by org ID").option("--bucket <id>", "Filter by bucket ID").option("-s, --status <status>", "Filter by status").option("-q, --queue <name>", "Filter by queue name").option("-l, --limit <count>", "Max jobs to return").option("--json", "Output as JSON").addHelpText("after", renderCommandHelp("adminJobs")).action(
|
|
658
658
|
async (options) => {
|
|
659
659
|
try {
|
|
660
|
-
const { listAdminJobs } = await import("./jobs-
|
|
660
|
+
const { listAdminJobs } = await import("./jobs-K3LTNETU.js");
|
|
661
661
|
await listAdminJobs(options);
|
|
662
662
|
} catch (err) {
|
|
663
663
|
handleError(err);
|
|
@@ -666,7 +666,7 @@ var adminJobsCmd = adminCmd.command("jobs").description(CLI_DOCS.adminJobs.descr
|
|
|
666
666
|
);
|
|
667
667
|
adminJobsCmd.command("retry").description(CLI_DOCS.adminJobsRetry.description).argument("<id>", "Job ID").requiredOption("-q, --queue <name>", "Queue name").addHelpText("after", renderCommandHelp("adminJobsRetry")).action(async (id, options) => {
|
|
668
668
|
try {
|
|
669
|
-
const { retryAdminJob } = await import("./jobs-
|
|
669
|
+
const { retryAdminJob } = await import("./jobs-K3LTNETU.js");
|
|
670
670
|
await retryAdminJob(id, options);
|
|
671
671
|
} catch (err) {
|
|
672
672
|
handleError(err);
|
|
@@ -674,7 +674,7 @@ adminJobsCmd.command("retry").description(CLI_DOCS.adminJobsRetry.description).a
|
|
|
674
674
|
});
|
|
675
675
|
adminJobsCmd.command("delete").description(CLI_DOCS.adminJobsDelete.description).argument("<id>", "Job ID").requiredOption("-q, --queue <name>", "Queue name").addHelpText("after", renderCommandHelp("adminJobsDelete")).action(async (id, options) => {
|
|
676
676
|
try {
|
|
677
|
-
const { deleteAdminJob } = await import("./jobs-
|
|
677
|
+
const { deleteAdminJob } = await import("./jobs-K3LTNETU.js");
|
|
678
678
|
await deleteAdminJob(id, options);
|
|
679
679
|
} catch (err) {
|
|
680
680
|
handleError(err);
|
|
@@ -682,7 +682,7 @@ adminJobsCmd.command("delete").description(CLI_DOCS.adminJobsDelete.description)
|
|
|
682
682
|
});
|
|
683
683
|
var adminQueuesCmd = adminCmd.command("queues").description(CLI_DOCS.adminQueues.description).option("--json", "Output as JSON").addHelpText("after", renderCommandHelp("adminQueues")).action(async (options) => {
|
|
684
684
|
try {
|
|
685
|
-
const { listQueues } = await import("./queues-
|
|
685
|
+
const { listQueues } = await import("./queues-2GJAMMNF.js");
|
|
686
686
|
await listQueues(options);
|
|
687
687
|
} catch (err) {
|
|
688
688
|
handleError(err);
|
|
@@ -691,7 +691,7 @@ var adminQueuesCmd = adminCmd.command("queues").description(CLI_DOCS.adminQueues
|
|
|
691
691
|
adminQueuesCmd.command("clean").description(CLI_DOCS.adminQueuesClean.description).argument("<name>", "Queue name").option("--failed", "Clean failed jobs").option("--completed", "Clean completed jobs").option("--grace <seconds>", "Grace period in seconds").addHelpText("after", renderCommandHelp("adminQueuesClean")).action(
|
|
692
692
|
async (name, options) => {
|
|
693
693
|
try {
|
|
694
|
-
const { cleanQueue } = await import("./queues-
|
|
694
|
+
const { cleanQueue } = await import("./queues-2GJAMMNF.js");
|
|
695
695
|
await cleanQueue(name, options);
|
|
696
696
|
} catch (err) {
|
|
697
697
|
handleError(err);
|
|
@@ -700,7 +700,7 @@ adminQueuesCmd.command("clean").description(CLI_DOCS.adminQueuesClean.descriptio
|
|
|
700
700
|
);
|
|
701
701
|
program.command("delete").description(CLI_DOCS.delete.description).argument("<bucket>", "Bucket name").argument("<key>", "File key").addHelpText("after", renderCommandHelp("delete")).action(async (bucket, key) => {
|
|
702
702
|
try {
|
|
703
|
-
const { deleteFile } = await import("./delete-
|
|
703
|
+
const { deleteFile } = await import("./delete-GEX3O7YS.js");
|
|
704
704
|
await deleteFile(bucket, key);
|
|
705
705
|
} catch (err) {
|
|
706
706
|
handleError(err);
|
|
@@ -708,7 +708,7 @@ program.command("delete").description(CLI_DOCS.delete.description).argument("<bu
|
|
|
708
708
|
});
|
|
709
709
|
program.command("whoami").description(CLI_DOCS.whoami.description).addHelpText("after", renderCommandHelp("whoami")).action(async () => {
|
|
710
710
|
try {
|
|
711
|
-
const { whoami } = await import("./whoami-
|
|
711
|
+
const { whoami } = await import("./whoami-5IYRZKWS.js");
|
|
712
712
|
await whoami();
|
|
713
713
|
} catch (err) {
|
|
714
714
|
handleError(err);
|
|
@@ -716,7 +716,7 @@ program.command("whoami").description(CLI_DOCS.whoami.description).addHelpText("
|
|
|
716
716
|
});
|
|
717
717
|
program.command("open").description(CLI_DOCS.open.description).argument("<bucket>", "Bucket name").addHelpText("after", renderCommandHelp("open")).action(async (bucket) => {
|
|
718
718
|
try {
|
|
719
|
-
const { openBucket } = await import("./open-
|
|
719
|
+
const { openBucket } = await import("./open-F73Q2OHD.js");
|
|
720
720
|
await openBucket(bucket);
|
|
721
721
|
} catch (err) {
|
|
722
722
|
handleError(err);
|
|
@@ -727,5 +727,5 @@ program.parse();
|
|
|
727
727
|
var opts = program.opts();
|
|
728
728
|
var args = process.argv.slice(2);
|
|
729
729
|
if (args.length === 0 || args.length === 1 && opts.interactive) {
|
|
730
|
-
import("./app-
|
|
730
|
+
import("./app-DTW2LNXW.js").then(({ startInteractive }) => startInteractive()).catch(handleError);
|
|
731
731
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
apiRequest
|
|
3
|
+
} from "./chunk-FEMMZ4YZ.js";
|
|
4
|
+
import "./chunk-2AORPTQB.js";
|
|
5
|
+
|
|
6
|
+
// src/commands/delete.ts
|
|
7
|
+
async function deleteFile(bucket, key) {
|
|
8
|
+
const encodedKey = encodeURIComponent(key);
|
|
9
|
+
const params = new URLSearchParams({ bucket });
|
|
10
|
+
await apiRequest(
|
|
11
|
+
`/api/files/${encodedKey}?${params}`,
|
|
12
|
+
{ method: "DELETE" }
|
|
13
|
+
);
|
|
14
|
+
console.log(`Deleted: ${key} from ${bucket}`);
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
deleteFile
|
|
18
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createStow
|
|
3
|
+
} from "./chunk-5LU25QZK.js";
|
|
4
|
+
import "./chunk-TOADDO2F.js";
|
|
5
|
+
|
|
6
|
+
// src/commands/delete.ts
|
|
7
|
+
async function deleteFile(bucket, key) {
|
|
8
|
+
const stow = createStow();
|
|
9
|
+
await stow.deleteFile(key, { bucket });
|
|
10
|
+
console.log(`Deleted: ${key} from ${bucket}`);
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
deleteFile
|
|
14
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
apiRequest
|
|
3
|
+
} from "./chunk-R5CCBTXZ.js";
|
|
4
|
+
import "./chunk-2AORPTQB.js";
|
|
5
|
+
|
|
6
|
+
// src/commands/delete.ts
|
|
7
|
+
async function deleteFile(bucket, key) {
|
|
8
|
+
const encodedKey = encodeURIComponent(key);
|
|
9
|
+
const params = new URLSearchParams({ bucket });
|
|
10
|
+
await apiRequest(
|
|
11
|
+
`/api/files/${encodedKey}?${params}`,
|
|
12
|
+
{ method: "DELETE" }
|
|
13
|
+
);
|
|
14
|
+
console.log(`Deleted: ${key} from ${bucket}`);
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
deleteFile
|
|
18
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
apiRequest
|
|
3
|
+
} from "./chunk-LYCXXF2T.js";
|
|
4
|
+
import "./chunk-OZ7QQTIZ.js";
|
|
5
|
+
|
|
6
|
+
// src/commands/delete.ts
|
|
7
|
+
async function deleteFile(bucket, key) {
|
|
8
|
+
const encodedKey = encodeURIComponent(key);
|
|
9
|
+
const params = new URLSearchParams({ bucket });
|
|
10
|
+
await apiRequest(
|
|
11
|
+
`/api/files/${encodedKey}?${params}`,
|
|
12
|
+
{ method: "DELETE" }
|
|
13
|
+
);
|
|
14
|
+
console.log(`Deleted: ${key} from ${bucket}`);
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
deleteFile
|
|
18
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
apiRequest
|
|
3
|
+
} from "./chunk-YRHPOFJT.js";
|
|
4
|
+
import "./chunk-2AORPTQB.js";
|
|
5
|
+
|
|
6
|
+
// src/commands/delete.ts
|
|
7
|
+
async function deleteFile(bucket, key) {
|
|
8
|
+
const encodedKey = encodeURIComponent(key);
|
|
9
|
+
const params = new URLSearchParams({ bucket });
|
|
10
|
+
await apiRequest(
|
|
11
|
+
`/api/files/${encodedKey}?${params}`,
|
|
12
|
+
{ method: "DELETE" }
|
|
13
|
+
);
|
|
14
|
+
console.log(`Deleted: ${key} from ${bucket}`);
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
deleteFile
|
|
18
|
+
};
|