@mxpicture/print-backlog 0.0.5 → 0.0.7
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/public/assets/index-C4BbRvDB.js +1 -0
- package/dist/public/assets/index-D7yzmKDn.css +1 -0
- package/dist/public/index.html +2 -2
- package/dist/server/api/events.d.ts +21 -0
- package/dist/server/api/events.d.ts.map +1 -0
- package/dist/server/api/events.js +201 -0
- package/dist/server/api/events.js.map +1 -0
- package/dist/server/api/items.d.ts +24 -1
- package/dist/server/api/items.d.ts.map +1 -1
- package/dist/server/api/items.js +181 -9
- package/dist/server/api/items.js.map +1 -1
- package/dist/server/app.d.ts +7 -1
- package/dist/server/app.d.ts.map +1 -1
- package/dist/server/app.js +11 -5
- package/dist/server/app.js.map +1 -1
- package/dist/server/bambuddy.d.ts +23 -6
- package/dist/server/bambuddy.d.ts.map +1 -1
- package/dist/server/bambuddy.js +95 -23
- package/dist/server/bambuddy.js.map +1 -1
- package/dist/server/cli.js +8 -1
- package/dist/server/cli.js.map +1 -1
- package/dist/server/matching.d.ts +22 -0
- package/dist/server/matching.d.ts.map +1 -0
- package/dist/server/matching.js +72 -0
- package/dist/server/matching.js.map +1 -0
- package/dist/server/multipart.d.ts +3 -1
- package/dist/server/multipart.d.ts.map +1 -1
- package/dist/server/multipart.js +2 -2
- package/dist/server/multipart.js.map +1 -1
- package/dist/server/storage.d.ts +18 -4
- package/dist/server/storage.d.ts.map +1 -1
- package/dist/server/storage.js +32 -3
- package/dist/server/storage.js.map +1 -1
- package/dist/server/zip.d.ts +35 -0
- package/dist/server/zip.d.ts.map +1 -0
- package/dist/server/zip.js +190 -0
- package/dist/server/zip.js.map +1 -0
- package/dist/shared/types.d.ts +46 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/package.json +7 -1
- package/dist/public/assets/index-CLP1jBWd.js +0 -1
- package/dist/public/assets/index-DxpzozYw.css +0 -1
- package/dist/server/api/hooks.d.ts +0 -9
- package/dist/server/api/hooks.d.ts.map +0 -1
- package/dist/server/api/hooks.js +0 -29
- package/dist/server/api/hooks.js.map +0 -1
package/dist/server/api/items.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { ITEM_STATUSES, } from "../../shared/types.js";
|
|
3
|
+
import { BambuddyError } from "../bambuddy.js";
|
|
3
4
|
import { HANDLED, HttpError } from "../http.js";
|
|
4
|
-
import { readMultipart } from "../multipart.js";
|
|
5
|
+
import { MAX_FILES, readMultipart } from "../multipart.js";
|
|
5
6
|
import { itemPosition } from "../positions.js";
|
|
6
|
-
import { BAMBUDDY_EXTENSIONS, FileStore, titleFromFilename, } from "../storage.js";
|
|
7
|
+
import { BAMBUDDY_EXTENSIONS, FileStore, isModel, titleFromFilename, } from "../storage.js";
|
|
8
|
+
import { exportZip, extract3mfThumbnail, unpackZip, } from "../zip.js";
|
|
7
9
|
const idParam = (v, what = "id") => {
|
|
8
10
|
const n = Number(v);
|
|
9
11
|
if (!Number.isSafeInteger(n) || n <= 0)
|
|
@@ -19,6 +21,7 @@ const toVersion = (r, currentId) => ({
|
|
|
19
21
|
comment: r.comment,
|
|
20
22
|
uploadedAt: r.uploaded_at.toISOString(),
|
|
21
23
|
uploadedBy: r.uploaded_by,
|
|
24
|
+
hasThumbnail: r.has_thumbnail,
|
|
22
25
|
current: r.id === currentId,
|
|
23
26
|
});
|
|
24
27
|
const toItem = (r) => {
|
|
@@ -33,6 +36,7 @@ const toItem = (r) => {
|
|
|
33
36
|
comment: r.v_comment,
|
|
34
37
|
uploadedAt: r.v_uploaded_at.toISOString(),
|
|
35
38
|
uploadedBy: r.v_uploaded_by,
|
|
39
|
+
hasThumbnail: r.v_has_thumbnail ?? false,
|
|
36
40
|
current: true,
|
|
37
41
|
};
|
|
38
42
|
return {
|
|
@@ -60,7 +64,7 @@ const selectItems = (db, where) => db `
|
|
|
60
64
|
SELECT i.*,
|
|
61
65
|
(SELECT count(*)::int FROM backlog.version vc WHERE vc.item_id = i.id) AS version_count,
|
|
62
66
|
v.n AS v_n, v.filename AS v_filename, v.ext AS v_ext, v.size AS v_size, v.sha256 AS v_sha256,
|
|
63
|
-
v.comment AS v_comment, v.uploaded_at AS v_uploaded_at, v.uploaded_by AS v_uploaded_by
|
|
67
|
+
v.comment AS v_comment, v.uploaded_at AS v_uploaded_at, v.uploaded_by AS v_uploaded_by, v.has_thumbnail AS v_has_thumbnail
|
|
64
68
|
FROM backlog.item i
|
|
65
69
|
LEFT JOIN backlog.version v ON v.id = i.current_version_id
|
|
66
70
|
WHERE ${where}
|
|
@@ -121,7 +125,7 @@ export const getItem = ({ sql }) => ({ params }) => loadDetail(sql, idParam(para
|
|
|
121
125
|
/** GET /api/v1/items/:id/history: status changes, versions and matched prints, oldest first. */
|
|
122
126
|
export const itemHistory = ({ sql }) => async ({ params }) => {
|
|
123
127
|
const id = idParam(params.id);
|
|
124
|
-
await loadItem(sql, id);
|
|
128
|
+
const item = await loadItem(sql, id);
|
|
125
129
|
const [statuses, versions, prints] = await Promise.all([
|
|
126
130
|
sql `
|
|
127
131
|
SELECT at, by, source, from_status::text AS from_status, to_status::text AS to_status, detail
|
|
@@ -159,6 +163,16 @@ export const itemHistory = ({ sql }) => async ({ params }) => {
|
|
|
159
163
|
filename: p.filename,
|
|
160
164
|
resolution: p.resolution,
|
|
161
165
|
})),
|
|
166
|
+
// Only the last send is kept (bambuddy_sent_at).
|
|
167
|
+
...(item.bambuddySentAt && item.bambuddyFileId !== null
|
|
168
|
+
? [
|
|
169
|
+
{
|
|
170
|
+
kind: "sent",
|
|
171
|
+
at: item.bambuddySentAt,
|
|
172
|
+
fileId: item.bambuddyFileId,
|
|
173
|
+
},
|
|
174
|
+
]
|
|
175
|
+
: []),
|
|
162
176
|
];
|
|
163
177
|
return entries.sort((a, b) => a.at.localeCompare(b.at));
|
|
164
178
|
};
|
|
@@ -185,17 +199,53 @@ const lockItem = async (tx, id, allowDeleted = false) => {
|
|
|
185
199
|
currentVersionId: row.current_version_id,
|
|
186
200
|
};
|
|
187
201
|
};
|
|
202
|
+
/** Where a version's preview image is stored, next to the file. */
|
|
203
|
+
export const thumbnailPath = (rel) => `${rel}.thumb.png`;
|
|
188
204
|
const insertVersion = async (tx, store, itemId, n, f, user, comment) => {
|
|
189
205
|
const rel = FileStore.relativePath(itemId, n, f.sha256, f.filename);
|
|
206
|
+
// A 3MF carries its own preview; anything else has none (no renderer here).
|
|
207
|
+
const thumbnail = f.ext === "3mf" ? await extract3mfThumbnail(f.tmpPath) : null;
|
|
190
208
|
const [v] = await tx `
|
|
191
|
-
INSERT INTO backlog.version (item_id, n, filename, ext, size, sha256, stored_path, comment, uploaded_by)
|
|
192
|
-
VALUES (${itemId}, ${n}, ${f.filename}, ${f.ext}, ${f.size}, ${f.sha256}, ${rel}, ${comment}, ${user})
|
|
209
|
+
INSERT INTO backlog.version (item_id, n, filename, ext, size, sha256, stored_path, comment, uploaded_by, has_thumbnail)
|
|
210
|
+
VALUES (${itemId}, ${n}, ${f.filename}, ${f.ext}, ${f.size}, ${f.sha256}, ${rel}, ${comment}, ${user}, ${thumbnail !== null})
|
|
193
211
|
RETURNING id
|
|
194
212
|
`;
|
|
195
213
|
// Placed inside the transaction: if it fails, the rows roll back with it.
|
|
196
214
|
await store.place(f, rel);
|
|
215
|
+
if (thumbnail)
|
|
216
|
+
await store.placeBuffer(thumbnail, thumbnailPath(rel));
|
|
197
217
|
return v.id;
|
|
198
218
|
};
|
|
219
|
+
/**
|
|
220
|
+
* Unpack the dropped ZIPs among `files`: every model file in them becomes
|
|
221
|
+
* one more file of the upload. All-or-nothing like the rest: on an error,
|
|
222
|
+
* every staged file is discarded.
|
|
223
|
+
*/
|
|
224
|
+
const expandZips = async (store, files) => {
|
|
225
|
+
const models = [];
|
|
226
|
+
const skipped = [];
|
|
227
|
+
const pending = [...files];
|
|
228
|
+
try {
|
|
229
|
+
while (pending.length) {
|
|
230
|
+
const f = pending.shift();
|
|
231
|
+
if (isModel(f)) {
|
|
232
|
+
models.push(f);
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
const room = MAX_FILES - models.length - pending.filter(isModel).length;
|
|
236
|
+
const u = await unpackZip(store, f, Math.max(room, 0));
|
|
237
|
+
models.push(...u.models);
|
|
238
|
+
skipped.push(...u.skipped.map((name) => `${f.filename}: ${name}`));
|
|
239
|
+
}
|
|
240
|
+
if (models.length > MAX_FILES)
|
|
241
|
+
throw new HttpError(413, `at most ${MAX_FILES} model files per upload`);
|
|
242
|
+
return { models, skipped };
|
|
243
|
+
}
|
|
244
|
+
catch (e) {
|
|
245
|
+
await Promise.all([...models, ...pending].map((m) => store.discard(m)));
|
|
246
|
+
throw e;
|
|
247
|
+
}
|
|
248
|
+
};
|
|
199
249
|
/**
|
|
200
250
|
* POST /api/v1/queues/:id/items (multipart, field `file`, 1..50 files): one
|
|
201
251
|
* new `queued` item per file, appended in drop order, each with version 1.
|
|
@@ -203,9 +253,10 @@ const insertVersion = async (tx, store, itemId, n, f, user, comment) => {
|
|
|
203
253
|
*/
|
|
204
254
|
export const uploadItems = ({ sql, store }) => async ({ req, params, user }) => {
|
|
205
255
|
const queueId = idParam(params.id, "queue id");
|
|
206
|
-
const
|
|
207
|
-
if (files.length === 0)
|
|
256
|
+
const received = await readMultipart(req, store, { allowZip: true });
|
|
257
|
+
if (received.files.length === 0)
|
|
208
258
|
throw new HttpError(400, "no file in the upload");
|
|
259
|
+
const { models: files, skipped } = await expandZips(store, received.files);
|
|
209
260
|
try {
|
|
210
261
|
const ids = await sql.begin(async (tx) => {
|
|
211
262
|
await lockQueue(tx, queueId);
|
|
@@ -233,7 +284,7 @@ export const uploadItems = ({ sql, store }) => async ({ req, params, user }) =>
|
|
|
233
284
|
return out;
|
|
234
285
|
});
|
|
235
286
|
const items = await Promise.all(ids.map((id) => loadItem(sql, id)));
|
|
236
|
-
return { items };
|
|
287
|
+
return { items, skipped };
|
|
237
288
|
}
|
|
238
289
|
catch (e) {
|
|
239
290
|
await Promise.all(files.map((f) => store.discard(f)));
|
|
@@ -253,6 +304,8 @@ export const uploadVersion = ({ sql, store }) => async ({ req, params, user }) =
|
|
|
253
304
|
throw new HttpError(400, "a new version is exactly one file");
|
|
254
305
|
}
|
|
255
306
|
const f = files[0];
|
|
307
|
+
if (!isModel(f))
|
|
308
|
+
throw new HttpError(415, "a version is one model file, not a ZIP");
|
|
256
309
|
const comment = fields.comment?.trim()
|
|
257
310
|
? fields.comment.trim().slice(0, 2000)
|
|
258
311
|
: null;
|
|
@@ -425,4 +478,123 @@ export const restoreItem = ({ sql }) => async ({ params }) => {
|
|
|
425
478
|
});
|
|
426
479
|
return loadItem(sql, id);
|
|
427
480
|
};
|
|
481
|
+
/** GET /api/v1/items/:id/versions/:n/thumbnail: the 3MF's preview PNG, or 404. */
|
|
482
|
+
export const versionThumbnail = ({ sql, store }) => async ({ params, res, req }) => {
|
|
483
|
+
const id = idParam(params.id);
|
|
484
|
+
const n = idParam(params.n, "version");
|
|
485
|
+
const [v] = await sql `
|
|
486
|
+
SELECT stored_path, has_thumbnail FROM backlog.version WHERE item_id = ${id} AND n = ${n}
|
|
487
|
+
`;
|
|
488
|
+
if (!v?.has_thumbnail)
|
|
489
|
+
throw new HttpError(404, "no thumbnail");
|
|
490
|
+
const rel = thumbnailPath(v.stored_path);
|
|
491
|
+
if (!(await store.exists(rel)))
|
|
492
|
+
throw new HttpError(404, "no thumbnail");
|
|
493
|
+
const data = await new Promise((resolve, reject) => {
|
|
494
|
+
const chunks = [];
|
|
495
|
+
store
|
|
496
|
+
.read(rel)
|
|
497
|
+
.on("data", (c) => chunks.push(c))
|
|
498
|
+
.on("end", () => resolve(Buffer.concat(chunks)))
|
|
499
|
+
.on("error", reject);
|
|
500
|
+
});
|
|
501
|
+
res.writeHead(200, {
|
|
502
|
+
"Content-Type": "image/png",
|
|
503
|
+
"Content-Length": data.length,
|
|
504
|
+
// Write-once: the image of a version never changes.
|
|
505
|
+
"Cache-Control": "private, max-age=31536000, immutable",
|
|
506
|
+
"X-Content-Type-Options": "nosniff",
|
|
507
|
+
});
|
|
508
|
+
res.end(req.method === "HEAD" ? undefined : data);
|
|
509
|
+
return HANDLED;
|
|
510
|
+
};
|
|
511
|
+
const exportQuery = z.object({
|
|
512
|
+
status: z.enum(ITEM_STATUSES).optional(),
|
|
513
|
+
});
|
|
514
|
+
/**
|
|
515
|
+
* GET /api/v1/queues/:id/export.zip?status=queued: the current version of
|
|
516
|
+
* every item in the queue (trash excluded), in list order, as one ZIP built
|
|
517
|
+
* while it is sent. Items whose file is missing on disk are left out.
|
|
518
|
+
*/
|
|
519
|
+
export const exportQueue = ({ sql, store }) => async ({ params, url, res, req }) => {
|
|
520
|
+
const queueId = idParam(params.id, "queue id");
|
|
521
|
+
const p = exportQuery.parse(Object.fromEntries(url.searchParams));
|
|
522
|
+
const [queue] = await sql `SELECT name FROM backlog.queue WHERE id = ${queueId}`;
|
|
523
|
+
if (!queue)
|
|
524
|
+
throw new HttpError(404, `queue ${queueId} not found`);
|
|
525
|
+
const rows = await sql `
|
|
526
|
+
SELECT v.filename, v.stored_path, v.ext, v.uploaded_at
|
|
527
|
+
FROM backlog.item i JOIN backlog.version v ON v.id = i.current_version_id
|
|
528
|
+
WHERE i.queue_id = ${queueId} AND i.deleted_at IS NULL
|
|
529
|
+
${p.status ? sql `AND i.status = ${p.status}::text::backlog.item_status` : sql ``}
|
|
530
|
+
ORDER BY i.position, i.id
|
|
531
|
+
`;
|
|
532
|
+
const files = [];
|
|
533
|
+
for (const r of rows)
|
|
534
|
+
if (await store.exists(r.stored_path))
|
|
535
|
+
files.push({
|
|
536
|
+
name: r.filename,
|
|
537
|
+
relPath: r.stored_path,
|
|
538
|
+
ext: r.ext,
|
|
539
|
+
mtime: r.uploaded_at,
|
|
540
|
+
});
|
|
541
|
+
const name = `${queue.name}${p.status ? `-${p.status}` : ""}.zip`;
|
|
542
|
+
res.writeHead(200, {
|
|
543
|
+
"Content-Type": "application/zip",
|
|
544
|
+
"Content-Disposition": contentDisposition(name),
|
|
545
|
+
"Cache-Control": "no-store",
|
|
546
|
+
"X-Content-Type-Options": "nosniff",
|
|
547
|
+
});
|
|
548
|
+
if (req.method === "HEAD") {
|
|
549
|
+
res.end();
|
|
550
|
+
return HANDLED;
|
|
551
|
+
}
|
|
552
|
+
await new Promise((resolve) => {
|
|
553
|
+
const zip = exportZip(store, files);
|
|
554
|
+
zip.on("error", () => {
|
|
555
|
+
res.destroy();
|
|
556
|
+
resolve();
|
|
557
|
+
});
|
|
558
|
+
res.on("close", resolve);
|
|
559
|
+
zip.pipe(res);
|
|
560
|
+
});
|
|
561
|
+
return HANDLED;
|
|
562
|
+
};
|
|
563
|
+
/**
|
|
564
|
+
* POST /api/v1/items/:id/send-to-bambuddy: upload the current version into
|
|
565
|
+
* Bambuddy's library folder (BAMBUDDY_FOLDER, created if missing). Bambuddy
|
|
566
|
+
* keeps one copy of identical content and says so (`duplicate`). Sending
|
|
567
|
+
* again uploads again. STEP is refused: Bambuddy cannot take it.
|
|
568
|
+
*/
|
|
569
|
+
export const sendToBambuddy = ({ sql, store, sender }) => async ({ params }) => {
|
|
570
|
+
if (!sender)
|
|
571
|
+
throw new HttpError(409, "Send to Bambuddy is not configured (BAMBUDDY_URL)");
|
|
572
|
+
const id = idParam(params.id);
|
|
573
|
+
const item = await loadItem(sql, id);
|
|
574
|
+
if (item.deletedAt)
|
|
575
|
+
throw new HttpError(409, `item ${id} is in the trash`);
|
|
576
|
+
if (!item.current)
|
|
577
|
+
throw new HttpError(409, `item ${id} has no file`);
|
|
578
|
+
if (!item.sendable)
|
|
579
|
+
throw new HttpError(400, `.${item.current.ext} cannot be sent to Bambuddy (it slices STL, 3MF and OBJ)`);
|
|
580
|
+
const [v] = await sql `
|
|
581
|
+
SELECT stored_path FROM backlog.version WHERE item_id = ${id} AND n = ${item.current.n}
|
|
582
|
+
`;
|
|
583
|
+
if (!v || !(await store.exists(v.stored_path)))
|
|
584
|
+
throw new HttpError(410, "the file is missing on disk");
|
|
585
|
+
const folderId = await sender.client
|
|
586
|
+
.folderId(sender.folder)
|
|
587
|
+
.catch(upstream);
|
|
588
|
+
const r = await sender.client
|
|
589
|
+
.upload(store.absolute(v.stored_path), item.current.filename, folderId)
|
|
590
|
+
.catch(upstream);
|
|
591
|
+
await sql `UPDATE backlog.item SET bambuddy_file_id = ${r.fileId}, bambuddy_sent_at = now() WHERE id = ${id}`;
|
|
592
|
+
return { item: await loadDetail(sql, id), duplicate: r.duplicate };
|
|
593
|
+
};
|
|
594
|
+
/** A Bambuddy failure as our answer: 502 with Bambuddy's message. */
|
|
595
|
+
const upstream = (e) => {
|
|
596
|
+
if (e instanceof BambuddyError)
|
|
597
|
+
throw new HttpError(e.status, e.message);
|
|
598
|
+
throw e;
|
|
599
|
+
};
|
|
428
600
|
//# sourceMappingURL=items.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"items.js","sourceRoot":"","sources":["../../../src/server/api/items.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"items.js","sourceRoot":"","sources":["../../../src/server/api/items.ts"],"names":[],"mappings":"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"}
|
package/dist/server/app.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type BambuddyState } from "./api/health.js";
|
|
2
|
+
import type { BambuddyClient } from "./bambuddy.js";
|
|
2
3
|
import type { Sql } from "./db.js";
|
|
3
4
|
import { Router } from "./http.js";
|
|
4
5
|
import type { FileStore } from "./storage.js";
|
|
@@ -6,7 +7,12 @@ export interface AppDeps {
|
|
|
6
7
|
sql: Sql;
|
|
7
8
|
store: FileStore;
|
|
8
9
|
bambuddy: BambuddyState;
|
|
10
|
+
/** Send to Bambuddy; null/absent when BAMBUDDY_URL is not set */
|
|
11
|
+
sender?: {
|
|
12
|
+
client: BambuddyClient;
|
|
13
|
+
folder: string;
|
|
14
|
+
} | null;
|
|
9
15
|
}
|
|
10
16
|
/** Every route. Paths are the contract with Caddy's vhost: only /health and /hooks/bambuddy bypass SSO. */
|
|
11
|
-
export declare const buildRouter: ({ sql, store, bambuddy }: AppDeps) => Router;
|
|
17
|
+
export declare const buildRouter: ({ sql, store, bambuddy, sender, }: AppDeps) => Router;
|
|
12
18
|
//# sourceMappingURL=app.d.ts.map
|
package/dist/server/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAc,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAc,MAAM,iBAAiB,CAAC;AAsBjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,GAAG,CAAC;IACT,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,aAAa,CAAC;IACxB,iEAAiE;IACjE,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC5D;AAED,2GAA2G;AAC3G,eAAO,MAAM,WAAW,GAAI,mCAKzB,OAAO,KAAG,MAiCZ,CAAC"}
|
package/dist/server/app.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { bambuddyHook } from "./api/
|
|
1
|
+
import { assignEvent, bambuddyHook, listEvents } from "./api/events.js";
|
|
2
2
|
import { health, me } from "./api/health.js";
|
|
3
|
-
import { deleteItem, downloadVersion, getItem, itemHistory, listItems, patchItem, patchVersion, restoreItem, uploadItems, uploadVersion, } from "./api/items.js";
|
|
3
|
+
import { deleteItem, downloadVersion, exportQueue, getItem, itemHistory, listItems, patchItem, patchVersion, restoreItem, sendToBambuddy, uploadItems, uploadVersion, versionThumbnail, } from "./api/items.js";
|
|
4
4
|
import { createQueue, deleteQueue, listQueues, patchQueue, } from "./api/queues.js";
|
|
5
5
|
import { Router } from "./http.js";
|
|
6
6
|
/** Every route. Paths are the contract with Caddy's vhost: only /health and /hooks/bambuddy bypass SSO. */
|
|
7
|
-
export const buildRouter = ({ sql, store, bambuddy }) => {
|
|
8
|
-
const deps = { sql, store };
|
|
7
|
+
export const buildRouter = ({ sql, store, bambuddy, sender = null, }) => {
|
|
8
|
+
const deps = { sql, store, sender };
|
|
9
9
|
return (new Router()
|
|
10
10
|
.get("/health", health(sql, bambuddy), { access: "public" })
|
|
11
11
|
.post("/hooks/bambuddy", bambuddyHook(sql), { access: "webhook" })
|
|
@@ -16,18 +16,24 @@ export const buildRouter = ({ sql, store, bambuddy }) => {
|
|
|
16
16
|
.patch("/api/v1/queues/:id", patchQueue(sql))
|
|
17
17
|
.delete("/api/v1/queues/:id", deleteQueue(sql))
|
|
18
18
|
.post("/api/v1/queues/:id/items", uploadItems(deps), { body: "stream" })
|
|
19
|
+
.get("/api/v1/queues/:id/export.zip", exportQueue(deps))
|
|
19
20
|
// items
|
|
20
21
|
.get("/api/v1/items", listItems(deps))
|
|
21
22
|
.get("/api/v1/items/:id", getItem(deps))
|
|
22
23
|
.patch("/api/v1/items/:id", patchItem(deps))
|
|
23
24
|
.delete("/api/v1/items/:id", deleteItem(deps))
|
|
24
25
|
.post("/api/v1/items/:id/restore", restoreItem(deps))
|
|
26
|
+
.post("/api/v1/items/:id/send-to-bambuddy", sendToBambuddy(deps))
|
|
27
|
+
// print events (Bambuddy's webhook) a person resolves
|
|
28
|
+
.get("/api/v1/print-events", listEvents(sql))
|
|
29
|
+
.post("/api/v1/print-events/:id/assign", assignEvent(sql))
|
|
25
30
|
.get("/api/v1/items/:id/history", itemHistory(deps))
|
|
26
31
|
// versions
|
|
27
32
|
.post("/api/v1/items/:id/versions", uploadVersion(deps), {
|
|
28
33
|
body: "stream",
|
|
29
34
|
})
|
|
30
35
|
.patch("/api/v1/items/:id/versions/:n", patchVersion(deps))
|
|
31
|
-
.get("/api/v1/items/:id/versions/:n/download", downloadVersion(deps))
|
|
36
|
+
.get("/api/v1/items/:id/versions/:n/download", downloadVersion(deps))
|
|
37
|
+
.get("/api/v1/items/:id/versions/:n/thumbnail", versionThumbnail(deps)));
|
|
32
38
|
};
|
|
33
39
|
//# sourceMappingURL=app.js.map
|
package/dist/server/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAsB,MAAM,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EACL,UAAU,EACV,eAAe,EACf,WAAW,EACX,OAAO,EACP,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,WAAW,EACX,cAAc,EACd,WAAW,EACX,aAAa,EACb,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,WAAW,EACX,WAAW,EACX,UAAU,EACV,UAAU,GACX,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAWnC,2GAA2G;AAC3G,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,GAAG,EACH,KAAK,EACL,QAAQ,EACR,MAAM,GAAG,IAAI,GACL,EAAU,EAAE;IACpB,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACpC,OAAO,CACL,IAAI,MAAM,EAAE;SACT,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;SAC3D,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;SACjE,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC3C,SAAS;SACR,GAAG,CAAC,gBAAgB,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;SACtC,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;SACxC,KAAK,CAAC,oBAAoB,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;SAC5C,MAAM,CAAC,oBAAoB,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;SAC9C,IAAI,CAAC,0BAA0B,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SACvE,GAAG,CAAC,+BAA+B,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACxD,QAAQ;SACP,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;SACrC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;SACvC,KAAK,CAAC,mBAAmB,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;SAC3C,MAAM,CAAC,mBAAmB,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;SAC7C,IAAI,CAAC,2BAA2B,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;SACpD,IAAI,CAAC,oCAAoC,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;QACjE,sDAAsD;SACrD,GAAG,CAAC,sBAAsB,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;SAC5C,IAAI,CAAC,iCAAiC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;SACzD,GAAG,CAAC,2BAA2B,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACpD,WAAW;SACV,IAAI,CAAC,4BAA4B,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE;QACvD,IAAI,EAAE,QAAQ;KACf,CAAC;SACD,KAAK,CAAC,+BAA+B,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;SAC1D,GAAG,CAAC,wCAAwC,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;SACpE,GAAG,CAAC,yCAAyC,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAC1E,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,15 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bambuddy's API at BAMBUDDY_URL (https://bambuddy.mxpicture.de). vps1's
|
|
3
|
+
* Caddy lets this host's calls with an X-API-Key through without SSO, for
|
|
4
|
+
* /api/v1/library/files, /api/v1/library/folders and /api/v1/auth/status
|
|
5
|
+
* only (ansible-playbook-contabo-vps, plan 2026-11-09_01 §3).
|
|
6
|
+
*
|
|
7
|
+
* The API key needs two scopes in Bambuddy:
|
|
8
|
+
* - "Manage library" (can_manage_library): upload, create the folder;
|
|
9
|
+
* - "Read status" (can_read_status): list the folders.
|
|
10
|
+
*/
|
|
11
|
+
export interface BambuddyUpload {
|
|
12
|
+
/** the new library file's id, or the existing one's when Bambuddy already had the same content */
|
|
13
|
+
fileId: number;
|
|
14
|
+
duplicate: boolean;
|
|
15
|
+
}
|
|
1
16
|
export interface BambuddyClient {
|
|
2
17
|
/** Reachable with the API key? Never throws. */
|
|
3
18
|
ping(): Promise<{
|
|
4
19
|
ok: boolean;
|
|
5
20
|
detail: string;
|
|
6
21
|
}>;
|
|
22
|
+
/** The id of the top-level library folder with this name, created if missing. */
|
|
23
|
+
folderId(name: string): Promise<number>;
|
|
24
|
+
/** Upload a file from disk into a library folder. */
|
|
25
|
+
upload(path: string, filename: string, folderId: number): Promise<BambuddyUpload>;
|
|
26
|
+
}
|
|
27
|
+
export declare class BambuddyError extends Error {
|
|
28
|
+
readonly status: number;
|
|
29
|
+
constructor(status: number, message: string);
|
|
7
30
|
}
|
|
8
|
-
/**
|
|
9
|
-
* Bambuddy's API, at BAMBUDDY_URL (https://bambuddy.mxpicture.de: vps1's
|
|
10
|
-
* Caddy lets this host's calls with an X-API-Key through without SSO, for the
|
|
11
|
-
* library endpoints and /api/v1/auth/status only). Upload and folder lookup
|
|
12
|
-
* come with Send to Bambuddy (PB6).
|
|
13
|
-
*/
|
|
14
31
|
export declare const createBambuddyClient: (url: string, apiKey: string, fetchImpl?: typeof fetch) => BambuddyClient;
|
|
15
32
|
//# sourceMappingURL=bambuddy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bambuddy.d.ts","sourceRoot":"","sources":["../../src/server/bambuddy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bambuddy.d.ts","sourceRoot":"","sources":["../../src/server/bambuddy.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AAEH,MAAM,WAAW,cAAc;IAC7B,kGAAkG;IAClG,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,IAAI,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,iFAAiF;IACjF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,qDAAqD;IACrD,MAAM,CACJ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B;AAED,qBAAa,aAAc,SAAQ,KAAK;IAEpC,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM;CAIlB;AAaD,eAAO,MAAM,oBAAoB,GAC/B,KAAK,MAAM,EACX,QAAQ,MAAM,EACd,YAAW,OAAO,KAAa,KAC9B,cAmGF,CAAC"}
|
package/dist/server/bambuddy.js
CHANGED
|
@@ -1,31 +1,103 @@
|
|
|
1
|
+
import { openAsBlob } from "node:fs";
|
|
1
2
|
import { errorMessage } from "./log.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
export class BambuddyError extends Error {
|
|
4
|
+
status;
|
|
5
|
+
constructor(status, message) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.status = status;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
const TIMEOUT_MS = 10_000;
|
|
11
|
+
/** Uploads of a few hundred MB through the home uplink and the tunnel. */
|
|
12
|
+
const UPLOAD_TIMEOUT_MS = 30 * 60_000;
|
|
13
|
+
export const createBambuddyClient = (url, apiKey, fetchImpl = fetch) => {
|
|
14
|
+
const call = async (path, init = {}, timeout = TIMEOUT_MS) => {
|
|
15
|
+
let res;
|
|
10
16
|
try {
|
|
11
|
-
|
|
12
|
-
|
|
17
|
+
res = await fetchImpl(`${url}${path}`, {
|
|
18
|
+
...init,
|
|
19
|
+
headers: {
|
|
20
|
+
"X-API-Key": apiKey,
|
|
21
|
+
Accept: "application/json",
|
|
22
|
+
...init.headers,
|
|
23
|
+
},
|
|
24
|
+
// A redirect is the SSO portal: vps1's route did not let us through.
|
|
13
25
|
redirect: "manual",
|
|
14
|
-
signal: AbortSignal.timeout(
|
|
26
|
+
signal: AbortSignal.timeout(timeout),
|
|
15
27
|
});
|
|
16
|
-
// A redirect is the SSO portal: the vps1 route did not let us through.
|
|
17
|
-
if (res.status >= 300 && res.status < 400)
|
|
18
|
-
return {
|
|
19
|
-
ok: false,
|
|
20
|
-
detail: `redirected (${res.status}): SSO gate, not the API route`,
|
|
21
|
-
};
|
|
22
|
-
if (!res.ok)
|
|
23
|
-
return { ok: false, detail: `HTTP ${res.status}` };
|
|
24
|
-
return { ok: true, detail: "ok" };
|
|
25
28
|
}
|
|
26
29
|
catch (e) {
|
|
27
|
-
|
|
30
|
+
throw new BambuddyError(502, `Bambuddy unreachable: ${errorMessage(e)}`);
|
|
28
31
|
}
|
|
29
|
-
|
|
30
|
-
});
|
|
32
|
+
if (res.status >= 300 && res.status < 400)
|
|
33
|
+
throw new BambuddyError(502, `Bambuddy redirected (${res.status}): the SSO gate, not the API route on vps1`);
|
|
34
|
+
const text = await res.text();
|
|
35
|
+
if (!res.ok) {
|
|
36
|
+
let detail = text.slice(0, 300);
|
|
37
|
+
try {
|
|
38
|
+
const body = JSON.parse(text);
|
|
39
|
+
if (body.detail)
|
|
40
|
+
detail =
|
|
41
|
+
typeof body.detail === "string"
|
|
42
|
+
? body.detail
|
|
43
|
+
: JSON.stringify(body.detail);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// not JSON: keep the text
|
|
47
|
+
}
|
|
48
|
+
// 502 for our caller whatever Bambuddy said: the failure is upstream, not in the request to us.
|
|
49
|
+
throw new BambuddyError(502, `Bambuddy ${res.status}: ${detail}`);
|
|
50
|
+
}
|
|
51
|
+
return JSON.parse(text);
|
|
52
|
+
};
|
|
53
|
+
let cachedFolder = null;
|
|
54
|
+
return {
|
|
55
|
+
async ping() {
|
|
56
|
+
try {
|
|
57
|
+
await call("/api/v1/auth/status");
|
|
58
|
+
return { ok: true, detail: "ok" };
|
|
59
|
+
}
|
|
60
|
+
catch (e) {
|
|
61
|
+
return { ok: false, detail: errorMessage(e) };
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
async folderId(name) {
|
|
65
|
+
if (cachedFolder?.name === name)
|
|
66
|
+
return cachedFolder.id;
|
|
67
|
+
const tree = await call("/api/v1/library/folders");
|
|
68
|
+
// Top level only: a folder of that name inside another one is not ours.
|
|
69
|
+
let folder = tree.find((f) => f.parent_id === null && f.name === name);
|
|
70
|
+
if (!folder)
|
|
71
|
+
folder = await call("/api/v1/library/folders", {
|
|
72
|
+
method: "POST",
|
|
73
|
+
headers: { "Content-Type": "application/json" },
|
|
74
|
+
body: JSON.stringify({ name }),
|
|
75
|
+
});
|
|
76
|
+
cachedFolder = { name, id: folder.id };
|
|
77
|
+
return folder.id;
|
|
78
|
+
},
|
|
79
|
+
async upload(path, filename, folderId) {
|
|
80
|
+
const form = new FormData();
|
|
81
|
+
// A file-backed Blob: streamed from disk, never read into memory.
|
|
82
|
+
form.append("file", await openAsBlob(path), filename);
|
|
83
|
+
const params = new URLSearchParams({
|
|
84
|
+
folder_id: String(folderId),
|
|
85
|
+
generate_stl_thumbnails: "true",
|
|
86
|
+
});
|
|
87
|
+
let r;
|
|
88
|
+
try {
|
|
89
|
+
r = await call(`/api/v1/library/files?${params}`, { method: "POST", body: form }, UPLOAD_TIMEOUT_MS);
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
// The folder may be gone (deleted in Bambuddy): look it up again next time.
|
|
93
|
+
cachedFolder = null;
|
|
94
|
+
throw e;
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
fileId: r.duplicate_of ?? r.id,
|
|
98
|
+
duplicate: r.duplicate_of != null,
|
|
99
|
+
};
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
};
|
|
31
103
|
//# sourceMappingURL=bambuddy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bambuddy.js","sourceRoot":"","sources":["../../src/server/bambuddy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"bambuddy.js","sourceRoot":"","sources":["../../src/server/bambuddy.ts"],"names":[],"mappings":"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"}
|