@fdm-monster/server 2.0.7 → 2.0.9

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.
Files changed (82) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/README.md +1 -1
  3. package/RELEASE_NOTES.MD +35 -0
  4. package/dist/container.js +0 -6
  5. package/dist/container.js.map +1 -1
  6. package/dist/container.tokens.js +0 -2
  7. package/dist/container.tokens.js.map +1 -1
  8. package/dist/controllers/print-job.controller.js +12 -151
  9. package/dist/controllers/print-job.controller.js.map +1 -1
  10. package/dist/controllers/print-queue.controller.js +82 -17
  11. package/dist/controllers/print-queue.controller.js.map +1 -1
  12. package/dist/controllers/printer-files.controller.js +16 -77
  13. package/dist/controllers/printer-files.controller.js.map +1 -1
  14. package/dist/controllers/printer.controller.js +3 -3
  15. package/dist/controllers/printer.controller.js.map +1 -1
  16. package/dist/controllers/validation/printer-files-controller.validation.js +7 -0
  17. package/dist/controllers/validation/printer-files-controller.validation.js.map +1 -1
  18. package/dist/entities/print-job.entity.js.map +1 -1
  19. package/dist/server.constants.js +1 -2
  20. package/dist/server.constants.js.map +1 -1
  21. package/dist/services/bambu/bambu-ftp.adapter.js +3 -13
  22. package/dist/services/bambu/bambu-ftp.adapter.js.map +1 -1
  23. package/dist/services/bambu.api.js +31 -30
  24. package/dist/services/bambu.api.js.map +1 -1
  25. package/dist/services/file-storage.service.js +11 -2
  26. package/dist/services/file-storage.service.js.map +1 -1
  27. package/dist/services/moonraker/moonraker.client.js +5 -17
  28. package/dist/services/moonraker/moonraker.client.js.map +1 -1
  29. package/dist/services/moonraker.api.js +45 -11
  30. package/dist/services/moonraker.api.js.map +1 -1
  31. package/dist/services/octoprint/octoprint-api.routes.js +1 -1
  32. package/dist/services/octoprint/octoprint-api.routes.js.map +1 -1
  33. package/dist/services/octoprint/octoprint.client.js +35 -24
  34. package/dist/services/octoprint/octoprint.client.js.map +1 -1
  35. package/dist/services/octoprint/utils/file.utils.js +42 -5
  36. package/dist/services/octoprint/utils/file.utils.js.map +1 -1
  37. package/dist/services/octoprint.api.js +15 -10
  38. package/dist/services/octoprint.api.js.map +1 -1
  39. package/dist/services/orm/print-job.service.js +55 -47
  40. package/dist/services/orm/print-job.service.js.map +1 -1
  41. package/dist/services/print-queue.service.js +90 -30
  42. package/dist/services/print-queue.service.js.map +1 -1
  43. package/dist/services/printer-api.interface.js +13 -0
  44. package/dist/services/printer-api.interface.js.map +1 -1
  45. package/dist/services/prusa-link/prusa-link.api.js +33 -27
  46. package/dist/services/prusa-link/prusa-link.api.js.map +1 -1
  47. package/dist/tasks/print-job-analysis.task.js.map +1 -1
  48. package/dist/utils/bgcode/bgcode-thumbnail.parser.js +50 -0
  49. package/dist/utils/bgcode/bgcode-thumbnail.parser.js.map +1 -0
  50. package/dist/utils/bgcode/bgcode.constants.js +57 -0
  51. package/dist/utils/bgcode/bgcode.constants.js.map +1 -0
  52. package/dist/utils/bgcode/bgcode.types.js +132 -0
  53. package/dist/utils/bgcode/bgcode.types.js.map +1 -0
  54. package/dist/utils/bgcode/bgcode.utils.js +288 -0
  55. package/dist/utils/bgcode/bgcode.utils.js.map +1 -0
  56. package/dist/utils/bgcode/heatshrink-decoder.js +172 -0
  57. package/dist/utils/bgcode/heatshrink-decoder.js.map +1 -0
  58. package/dist/utils/bgcode/png-encoder.js +76 -0
  59. package/dist/utils/bgcode/png-encoder.js.map +1 -0
  60. package/dist/utils/bgcode/qoi-decoder.js +141 -0
  61. package/dist/utils/bgcode/qoi-decoder.js.map +1 -0
  62. package/dist/utils/image-dimensions.js +62 -0
  63. package/dist/utils/image-dimensions.js.map +1 -0
  64. package/dist/utils/job-stats.util.js +79 -0
  65. package/dist/utils/job-stats.util.js.map +1 -0
  66. package/dist/utils/parsers/3mf.parser.js +39 -9
  67. package/dist/utils/parsers/3mf.parser.js.map +1 -1
  68. package/dist/utils/parsers/bgcode.parser.js +125 -144
  69. package/dist/utils/parsers/bgcode.parser.js.map +1 -1
  70. package/dist/utils/parsers/gcode.parser.js +13 -2
  71. package/dist/utils/parsers/gcode.parser.js.map +1 -1
  72. package/dist/utils/parsers/parser.types.js +6 -0
  73. package/dist/utils/parsers/parser.types.js.map +1 -0
  74. package/dist/utils/thumbnail.util.js +24 -0
  75. package/dist/utils/thumbnail.util.js.map +1 -0
  76. package/package.json +5 -5
  77. package/dist/state/file.cache.js +0 -68
  78. package/dist/state/file.cache.js.map +0 -1
  79. package/dist/state/printer-files.store.js +0 -92
  80. package/dist/state/printer-files.store.js.map +0 -1
  81. package/dist/tasks/printer-files-load.task.js +0 -29
  82. package/dist/tasks/printer-files-load.task.js.map +0 -1
@@ -10,26 +10,58 @@ Object.defineProperty(exports, "PrintQueueService", {
10
10
  });
11
11
  const _typeorm = require("typeorm");
12
12
  const _printjobentity = require("../entities/print-job.entity");
13
+ const _printerentity = require("../entities/printer.entity");
14
+ const _socketstatetype = require("../shared/dtos/socket-state.type");
15
+ const _apistatetype = require("../shared/dtos/api-state.type");
13
16
  const _node = require("@sentry/node");
14
17
  class PrintQueueService {
15
18
  printerApiFactory;
16
19
  fileStorageService;
20
+ printerSocketStore;
17
21
  printJobRepository;
22
+ printerRepository;
18
23
  eventEmitter2;
19
24
  logger;
20
- constructor(loggerFactory, typeormService, eventEmitter2, printerApiFactory, fileStorageService){
25
+ constructor(loggerFactory, typeormService, eventEmitter2, printerApiFactory, fileStorageService, printerSocketStore){
21
26
  this.printerApiFactory = printerApiFactory;
22
27
  this.fileStorageService = fileStorageService;
28
+ this.printerSocketStore = printerSocketStore;
23
29
  this.printJobRepository = typeormService.getDataSource().getRepository(_printjobentity.PrintJob);
30
+ this.printerRepository = typeormService.getDataSource().getRepository(_printerentity.Printer);
24
31
  this.eventEmitter2 = eventEmitter2;
25
32
  this.logger = loggerFactory(PrintQueueService.name);
26
33
  this.eventEmitter2.on("printQueue.jobSubmitted", (event)=>{
27
- this.handleJobSubmission(event.printerId, event.jobId, event.fileName, event.fileStorageId).catch((error)=>{
34
+ this.handleJobSubmission(event.printerId, event.jobId, event.fileName, event.fileStorageId, event.queuePosition).catch((error)=>{
28
35
  this.logger.error(`Failed to handle job submission for job ${event.jobId}`, error);
29
36
  (0, _node.captureException)(error);
30
37
  });
31
38
  });
32
- this.logger.log("Print queue service initialized");
39
+ }
40
+ isPrinterConnected(printerId) {
41
+ const socket = this.printerSocketStore.getPrinterSocket(printerId);
42
+ if (!socket) {
43
+ return {
44
+ connected: false,
45
+ reason: "No socket connection found"
46
+ };
47
+ }
48
+ const socketState = socket.socketState;
49
+ const apiState = socket.apiState;
50
+ if (socketState !== _socketstatetype.SOCKET_STATE.opened && socketState !== _socketstatetype.SOCKET_STATE.authenticated) {
51
+ return {
52
+ connected: false,
53
+ reason: `Socket not connected (state: ${socketState})`
54
+ };
55
+ }
56
+ if (apiState !== _apistatetype.API_STATE.responding) {
57
+ return {
58
+ connected: false,
59
+ reason: `Printer not responding (API state: ${apiState})`
60
+ };
61
+ }
62
+ return {
63
+ connected: true
64
+ };
33
65
  }
34
66
  async addToQueue(printerId, jobId, position) {
35
67
  const job = await this.printJobRepository.findOne({
@@ -40,11 +72,7 @@ class PrintQueueService {
40
72
  if (!job) {
41
73
  throw new Error(`Print job ${jobId} not found`);
42
74
  }
43
- if (!job.printerId) {
44
- job.printerId = printerId;
45
- } else if (job.printerId !== printerId) {
46
- throw new Error(`Job ${jobId} belongs to printer ${job.printerId}, cannot add to printer ${printerId}`);
47
- }
75
+ this.ensurePrinterAssignment(job, printerId);
48
76
  if (position === undefined || position === null) {
49
77
  const maxPosition = await this.getMaxQueuePosition(printerId);
50
78
  job.queuePosition = (maxPosition ?? -1) + 1;
@@ -107,6 +135,23 @@ class PrintQueueService {
107
135
  createdAt: j.createdAt
108
136
  }));
109
137
  }
138
+ async getGlobalQueuePaged(page, pageSize) {
139
+ const skip = (page - 1) * pageSize;
140
+ return await this.printJobRepository.findAndCount({
141
+ where: {
142
+ status: "QUEUED"
143
+ },
144
+ order: {
145
+ printerId: "ASC",
146
+ queuePosition: "ASC"
147
+ },
148
+ relations: [
149
+ 'printer'
150
+ ],
151
+ take: pageSize,
152
+ skip: skip
153
+ });
154
+ }
110
155
  async getNextInQueue(printerId) {
111
156
  return this.printJobRepository.findOne({
112
157
  where: {
@@ -126,7 +171,7 @@ class PrintQueueService {
126
171
  id: jobIds[i]
127
172
  }
128
173
  });
129
- if (job && job.printerId === printerId) {
174
+ if (job?.printerId === printerId) {
130
175
  job.queuePosition = i;
131
176
  await this.printJobRepository.save(job);
132
177
  }
@@ -168,6 +213,13 @@ class PrintQueueService {
168
213
  });
169
214
  return nextJob;
170
215
  }
216
+ ensurePrinterAssignment(job, printerId) {
217
+ if (!job.printerId) {
218
+ job.printerId = printerId;
219
+ } else if (job.printerId !== printerId) {
220
+ throw new Error(`Job ${job.id} belongs to printer ${job.printerId}, cannot submit to printer ${printerId}`);
221
+ }
222
+ }
171
223
  async getMaxQueuePosition(printerId) {
172
224
  const result = await this.printJobRepository.createQueryBuilder("job").select("MAX(job.queuePosition)", "max").where("job.printerId = :printerId", {
173
225
  printerId
@@ -192,15 +244,6 @@ class PrintQueueService {
192
244
  removedPosition
193
245
  }).execute();
194
246
  }
195
- async handleJobCompleted(printerId) {
196
- const nextJob = await this.getNextInQueue(printerId);
197
- if (nextJob) {
198
- this.logger.log(`Auto-processing queue after completion: starting job ${nextJob.id}`);
199
- await this.processQueue(printerId);
200
- } else {
201
- this.logger.log(`Queue empty for printer ${printerId} after job completion`);
202
- }
203
- }
204
247
  async submitToPrinter(printerId, jobId) {
205
248
  const job = await this.printJobRepository.findOne({
206
249
  where: {
@@ -210,39 +253,55 @@ class PrintQueueService {
210
253
  if (!job) {
211
254
  throw new Error(`Print job ${jobId} not found`);
212
255
  }
213
- if (job.printerId && job.printerId !== printerId) {
214
- throw new Error(`Job ${jobId} belongs to printer ${job.printerId}, cannot submit to printer ${printerId}`);
215
- }
216
- if (!job.printerId) {
217
- job.printerId = printerId;
218
- }
256
+ this.ensurePrinterAssignment(job, printerId);
257
+ const queuePosition = job.queuePosition;
219
258
  if (job.queuePosition !== null) {
220
259
  const oldPosition = job.queuePosition;
221
260
  job.queuePosition = null;
222
261
  await this.compactQueuePositions(printerId, oldPosition);
223
262
  }
224
263
  job.status = "PRINTING";
264
+ job.startedAt = new Date();
225
265
  await this.printJobRepository.save(job);
226
266
  this.logger.log(`Submitting job ${jobId} (${job.fileName}) to printer ${printerId}`);
227
267
  this.eventEmitter2.emit("printQueue.jobSubmitted", {
228
268
  printerId,
229
269
  jobId: job.id,
230
270
  fileName: job.fileName,
231
- fileStorageId: job.fileStorageId
271
+ fileStorageId: job.fileStorageId,
272
+ queuePosition
232
273
  });
233
274
  }
234
- async handleJobSubmission(printerId, jobId, fileName, fileStorageId) {
275
+ async handleJobSubmission(printerId, jobId, fileName, fileStorageId, queuePosition) {
235
276
  this.logger.log(`Handling job submission for job ${jobId} on printer ${printerId}`);
236
277
  try {
237
278
  if (!fileStorageId) {
238
279
  throw new Error(`Job ${jobId} has no fileStorageId - cannot submit to printer`);
239
280
  }
240
- const fileBuffer = this.fileStorageService.readFile(fileStorageId);
241
- this.logger.log(`Read ${fileBuffer.length} bytes for job ${jobId}`);
242
281
  const printerApi = this.printerApiFactory.getById(printerId);
282
+ const fileSize = this.fileStorageService.getFileSize(fileStorageId);
283
+ const fileStream = this.fileStorageService.readFileStream(fileStorageId);
243
284
  this.logger.log(`Uploading file ${fileName} to printer ${printerId} and starting print`);
244
- await printerApi.uploadFile(fileBuffer, true);
285
+ await printerApi.uploadFile({
286
+ stream: fileStream,
287
+ fileName,
288
+ contentLength: fileSize,
289
+ startPrint: true
290
+ });
245
291
  this.logger.log(`Successfully submitted job ${jobId} to printer ${printerId}`);
292
+ if (queuePosition !== null && queuePosition !== undefined) {
293
+ const job = await this.printJobRepository.findOne({
294
+ where: {
295
+ id: jobId
296
+ }
297
+ });
298
+ if (job?.queuePosition === queuePosition) {
299
+ job.queuePosition = null;
300
+ await this.printJobRepository.save(job);
301
+ await this.compactQueuePositions(printerId, queuePosition);
302
+ this.logger.log(`Removed job ${jobId} from queue after successful submission`);
303
+ }
304
+ }
246
305
  } catch (error) {
247
306
  this.logger.error(`Failed to submit job ${jobId} to printer ${printerId}`, error);
248
307
  try {
@@ -254,8 +313,9 @@ class PrintQueueService {
254
313
  if (job) {
255
314
  job.status = "FAILED";
256
315
  job.statusReason = `Print submission failed: ${error instanceof Error ? error.message : "Unknown error"}`;
316
+ job.endedAt = new Date();
257
317
  await this.printJobRepository.save(job);
258
- this.logger.log(`Updated job ${jobId} status to FAILED`);
318
+ this.logger.log(`Updated job ${jobId} status to FAILED (still in queue for retry)`);
259
319
  }
260
320
  } catch (updateError) {
261
321
  this.logger.error(`Failed to update job ${jobId} status after submission error`, updateError);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/services/print-queue.service.ts"],"names":["PrintQueueService","printJobRepository","eventEmitter2","logger","loggerFactory","typeormService","printerApiFactory","fileStorageService","getDataSource","getRepository","PrintJob","name","on","event","handleJobSubmission","printerId","jobId","fileName","fileStorageId","catch","error","captureException","log","addToQueue","position","job","findOne","where","id","Error","undefined","maxPosition","getMaxQueuePosition","queuePosition","shiftQueuePositions","status","save","emit","removeFromQueue","oldPosition","compactQueuePositions","getQueue","jobs","find","Not","IsNull","order","map","j","estimatedTimeSeconds","metadata","gcodePrintTimeSeconds","filamentGrams","filamentUsedGrams","createdAt","getNextInQueue","reorderQueue","jobIds","i","length","clearQueue","processQueue","nextJob","result","createQueryBuilder","select","getRawOne","max","fromPosition","update","set","andWhere","execute","removedPosition","handleJobCompleted","submitToPrinter","fileBuffer","readFile","printerApi","getById","uploadFile","statusReason","message","updateError"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/services/print-queue.service.ts"],"names":["PrintQueueService","printJobRepository","printerRepository","eventEmitter2","logger","loggerFactory","typeormService","printerApiFactory","fileStorageService","printerSocketStore","getDataSource","getRepository","PrintJob","Printer","name","on","event","handleJobSubmission","printerId","jobId","fileName","fileStorageId","queuePosition","catch","error","captureException","isPrinterConnected","socket","getPrinterSocket","connected","reason","socketState","apiState","SOCKET_STATE","opened","authenticated","API_STATE","responding","addToQueue","position","job","findOne","where","id","Error","ensurePrinterAssignment","undefined","maxPosition","getMaxQueuePosition","shiftQueuePositions","status","save","log","emit","removeFromQueue","oldPosition","compactQueuePositions","getQueue","jobs","find","Not","IsNull","order","map","j","estimatedTimeSeconds","metadata","gcodePrintTimeSeconds","filamentGrams","filamentUsedGrams","createdAt","getGlobalQueuePaged","page","pageSize","skip","findAndCount","relations","take","getNextInQueue","reorderQueue","jobIds","i","length","clearQueue","processQueue","nextJob","result","createQueryBuilder","select","getRawOne","max","fromPosition","update","set","andWhere","execute","removedPosition","submitToPrinter","startedAt","Date","printerApi","getById","fileSize","getFileSize","fileStream","readFileStream","uploadFile","stream","contentLength","startPrint","statusReason","message","endedAt","updateError"],"mappings":"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"}
@@ -26,8 +26,21 @@ _export(exports, {
26
26
  },
27
27
  get ReprintState () {
28
28
  return ReprintState;
29
+ },
30
+ get uploadFileInputSchema () {
31
+ return uploadFileInputSchema;
29
32
  }
30
33
  });
34
+ const _zod = require("zod");
35
+ const uploadFileInputSchema = _zod.z.object({
36
+ stream: _zod.z.custom((val)=>{
37
+ return val && typeof val === "object" && "pipe" in val && typeof val.pipe === "function";
38
+ }, "Must be a readable stream"),
39
+ fileName: _zod.z.string().min(1),
40
+ contentLength: _zod.z.number().int().positive(),
41
+ startPrint: _zod.z.boolean(),
42
+ uploadToken: _zod.z.string().optional()
43
+ });
31
44
  const OctoprintType = 0;
32
45
  const MoonrakerType = 1;
33
46
  const PrusaLinkType = 2;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/services/printer-api.interface.ts"],"names":["BambuType","MoonrakerType","OctoprintType","PrinterTypesEnum","PrusaLinkType","ReprintState"],"mappings":";;;;;;;;;;;QAUaA;eAAAA;;QAFAC;eAAAA;;QADAC;eAAAA;;QAKDC;eAAAA;;QAHCC;eAAAA;;QA6CDC;eAAAA;;;AA/CL,MAAMH,gBAAgB;AACtB,MAAMD,gBAAgB;AACtB,MAAMG,gBAAgB;AACtB,MAAMJ,YAAY;AAElB,IAAA,AAAKG,0CAAAA;;;;;WAAAA;;AA0CL,IAAA,AAAKE,sCAAAA;;;;WAAAA"}
1
+ {"version":3,"sources":["../../src/services/printer-api.interface.ts"],"names":["BambuType","MoonrakerType","OctoprintType","PrinterTypesEnum","PrusaLinkType","ReprintState","uploadFileInputSchema","z","object","stream","custom","val","pipe","fileName","string","min","contentLength","number","int","positive","startPrint","boolean","uploadToken","optional"],"mappings":";;;;;;;;;;;QAwBaA;eAAAA;;QAFAC;eAAAA;;QADAC;eAAAA;;QAKDC;eAAAA;;QAHCC;eAAAA;;QAmDDC;eAAAA;;QAjECC;eAAAA;;;qBAHK;AAGX,MAAMA,wBAAwBC,MAAC,CAACC,MAAM,CAAC;IAC5CC,QAAQF,MAAC,CAACG,MAAM,CAAW,CAACC;QAC1B,OAAOA,OAAO,OAAOA,QAAQ,YAAY,UAAUA,OAAO,OAAOA,IAAIC,IAAI,KAAK;IAChF,GAAG;IACHC,UAAUN,MAAC,CAACO,MAAM,GAAGC,GAAG,CAAC;IACzBC,eAAeT,MAAC,CAACU,MAAM,GAAGC,GAAG,GAAGC,QAAQ;IACxCC,YAAYb,MAAC,CAACc,OAAO;IACrBC,aAAaf,MAAC,CAACO,MAAM,GAAGS,QAAQ;AAClC;AAIO,MAAMrB,gBAAgB;AACtB,MAAMD,gBAAgB;AACtB,MAAMG,gBAAgB;AACtB,MAAMJ,YAAY;AAElB,IAAA,AAAKG,0CAAAA;;;;;WAAAA;;AAgDL,IAAA,AAAKE,sCAAAA;;;;WAAAA"}
@@ -10,7 +10,6 @@ Object.defineProperty(exports, "PrusaLinkApi", {
10
10
  });
11
11
  const _printerapiinterface = require("../printer-api.interface");
12
12
  const _prusalinkhttpclientbuilder = require("./utils/prusa-link-http-client.builder");
13
- const _fs = require("fs");
14
13
  const _eventconstants = require("../../constants/event.constants");
15
14
  const _runtimeexceptions = require("../../exceptions/runtime.exceptions");
16
15
  const defaultLog = {
@@ -47,20 +46,36 @@ class PrusaLinkApi {
47
46
  async validateConnection() {
48
47
  await this.getVersion();
49
48
  }
50
- async getFiles() {
49
+ async getFiles(recursive = false, startDir = "/usb") {
50
+ if (recursive) {
51
+ throw new Error("Recursive listing not supported for PrusaLink printers");
52
+ }
51
53
  const response = await this.client.get("/api/files");
52
- return response.data.files.filter((dir)=>dir.path === "/usb")[0].children.map((f)=>({
53
- path: f.display,
54
+ const root = response.data.files.find((dir)=>dir.path === startDir);
55
+ if (!root || !root.children) {
56
+ return {
57
+ dirs: [],
58
+ files: []
59
+ };
60
+ }
61
+ const items = root.children.map((child)=>({
62
+ path: child.path,
63
+ size: null,
54
64
  date: null,
55
- size: -1
65
+ dir: !child.refs?.download
56
66
  }));
67
+ return {
68
+ dirs: items.filter((i)=>i.dir),
69
+ files: items.filter((i)=>!i.dir)
70
+ };
57
71
  }
58
72
  async getFile(path) {
59
73
  const response = await this.getFileRaw(path);
60
74
  return {
61
75
  path: response.data.name,
62
76
  size: response.data.size,
63
- date: null
77
+ date: null,
78
+ dir: false
64
79
  };
65
80
  }
66
81
  async getStatus() {
@@ -143,37 +158,28 @@ class PrusaLinkApi {
143
158
  Range: `bytes=${startBytes}-${endBytes}`
144
159
  })).get(pathUrl);
145
160
  }
146
- async uploadFile(multerFileOrBuffer, startPrint, progressToken) {
161
+ async uploadFile(input) {
162
+ const validated = _printerapiinterface.uploadFileInputSchema.parse(input);
147
163
  try {
148
- let fileBuffer;
149
- const filename = multerFileOrBuffer.originalname;
150
- if (Buffer.isBuffer(multerFileOrBuffer)) {
151
- this.logger.log("Using file directly from memory buffer for upload");
152
- fileBuffer = multerFileOrBuffer;
153
- } else {
154
- const filePath = multerFileOrBuffer.path;
155
- this.logger.log(`Reading file from disk for upload: ${filePath}`);
156
- fileBuffer = (0, _fs.readFileSync)(filePath);
157
- }
158
- const contentLength = fileBuffer.length;
159
164
  const response = await this.createClient((b)=>{
160
165
  b.withHeaders({
161
- "Content-Length": contentLength.toString(),
166
+ "Content-Type": "application/octet-stream",
167
+ "Content-Length": validated.contentLength.toString(),
162
168
  Overwrite: "?1",
163
- "Print-After-Upload": startPrint ? "?1" : "?0"
169
+ "Print-After-Upload": validated.startPrint ? "?1" : "?0"
164
170
  }).withTimeout(this.settingsStore.getTimeoutSettings().apiUploadTimeout).withOnUploadProgress((p)=>{
165
- if (progressToken) {
166
- this.eventEmitter2.emit(`${(0, _eventconstants.uploadProgressEvent)(progressToken)}`, progressToken, p);
171
+ if (validated.uploadToken) {
172
+ this.eventEmitter2.emit(`${(0, _eventconstants.uploadProgressEvent)(validated.uploadToken)}`, validated.uploadToken, p);
167
173
  }
168
174
  });
169
- }).put(`/api/v1/files/usb/${encodeURIComponent(filename)}`, fileBuffer);
170
- if (progressToken) {
171
- this.eventEmitter2.emit(`${(0, _eventconstants.uploadDoneEvent)(progressToken)}`, progressToken);
175
+ }).put(`/api/v1/files/usb/${encodeURIComponent(validated.fileName)}`, validated.stream);
176
+ if (validated.uploadToken) {
177
+ this.eventEmitter2.emit(`${(0, _eventconstants.uploadDoneEvent)(validated.uploadToken)}`, validated.uploadToken);
172
178
  }
173
179
  return response.data;
174
180
  } catch (e) {
175
- if (progressToken) {
176
- this.eventEmitter2.emit(`${(0, _eventconstants.uploadFailedEvent)(progressToken)}`, progressToken, e?.message);
181
+ if (validated.uploadToken) {
182
+ this.eventEmitter2.emit(`${(0, _eventconstants.uploadFailedEvent)(validated.uploadToken)}`, validated.uploadToken, e?.message);
177
183
  }
178
184
  let data;
179
185
  try {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/services/prusa-link/prusa-link.api.ts"],"names":["PrusaLinkApi","defaultLog","adapter","logger","authHeader","loggerFactory","eventEmitter2","httpClientFactory","settingsStore","printerLogin","name","debug","logMeta","type","PrusaLinkType","login","client","createClient","getVersion","response","get","data","server","validateConnection","getFiles","files","filter","dir","path","children","map","f","display","date","size","getFile","getFileRaw","getStatus","getPrinterState","getJobState","connect","Error","disconnect","restartServer","restartHost","restartPrinterFirmware","startPrint","post","pausePrint","jobId","getCurrentJobId","warn","put","resumePrint","cancelPrint","delete","quickStop","sendGcode","script","movePrintHead","amounts","homeAxes","axes","downloadFile","fileReference","pathUrl","refs","download","responseType","getFileChunk","startBytes","endBytes","o","withHeaders","Range","uploadFile","multerFileOrBuffer","progressToken","fileBuffer","filename","originalname","Buffer","isBuffer","log","filePath","readFileSync","contentLength","length","b","toString","Overwrite","withTimeout","getTimeoutSettings","apiUploadTimeout","withOnUploadProgress","p","emit","uploadProgressEvent","encodeURIComponent","uploadDoneEvent","e","uploadFailedEvent","message","JSON","parse","body","ExternalServiceError","error","statusCode","success","stack","deleteFile","deleteFolder","getSettings","getReprintState","status","job","id","buildFluentOptions","builder","PrusaLinkHttpClientBuilder","createClientWithBaseUrl","printerURL","withDigestAuth","username","password","attemptCount","config","method","toUpperCase","url","withAuthHeader"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/services/prusa-link/prusa-link.api.ts"],"names":["PrusaLinkApi","defaultLog","adapter","logger","authHeader","loggerFactory","eventEmitter2","httpClientFactory","settingsStore","printerLogin","name","debug","logMeta","type","PrusaLinkType","login","client","createClient","getVersion","response","get","data","server","validateConnection","getFiles","recursive","startDir","Error","root","files","find","dir","path","children","dirs","items","map","child","size","date","refs","download","filter","i","getFile","getFileRaw","getStatus","getPrinterState","getJobState","connect","disconnect","restartServer","restartHost","restartPrinterFirmware","startPrint","post","pausePrint","jobId","getCurrentJobId","warn","put","resumePrint","cancelPrint","delete","quickStop","sendGcode","script","movePrintHead","amounts","homeAxes","axes","downloadFile","fileReference","pathUrl","responseType","getFileChunk","startBytes","endBytes","o","withHeaders","Range","uploadFile","input","validated","uploadFileInputSchema","parse","b","contentLength","toString","Overwrite","withTimeout","getTimeoutSettings","apiUploadTimeout","withOnUploadProgress","p","uploadToken","emit","uploadProgressEvent","encodeURIComponent","fileName","stream","uploadDoneEvent","e","uploadFailedEvent","message","JSON","body","ExternalServiceError","error","statusCode","success","stack","deleteFile","deleteFolder","getSettings","getReprintState","status","job","id","buildFluentOptions","builder","PrusaLinkHttpClientBuilder","createClientWithBaseUrl","printerURL","withDigestAuth","username","password","attemptCount","log","config","method","toUpperCase","url","withAuthHeader"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tasks/print-job-analysis.task.ts"],"names":["PrintJobAnalysisTask","logger","printJobRepository","loggerFactory","printJobService","fileAnalysisService","fileStorageService","typeormService","name","getDataSource","getRepository","PrintJob","run","pendingJobs","find","where","analysisState","status","take","length","log","job","analyzeJob","error","id","fileName","statusReason","Error","message","save","fileStorageId","cachedMetadata","loadMetadata","metadata","thumbnails","filePath","resolveFilePath","exists","needsAnalysis","analysisResult","analyzeFile","thumbnailMetadata","saveThumbnails","fileHash","undefined","saveMetadata","handleFileAnalyzed","fileExists","warn","getFilePath","debug"],"mappings":";;;;+BAcaA;;;eAAAA;;;gCAPY;AAOlB,MAAMA;;;;IACXC,OAAsB;IACdC,mBAAyC;IAEjD,YACEC,aAA6B,EAC7B,AAAiBC,eAAgC,EACjD,AAAiBC,mBAAwC,EACzD,AAAiBC,kBAAsC,EACvDC,cAA8B,CAC9B;aAJiBH,kBAAAA;aACAC,sBAAAA;aACAC,qBAAAA;QAGjB,IAAI,CAACL,MAAM,GAAGE,cAAcH,qBAAqBQ,IAAI;QACrD,IAAI,CAACN,kBAAkB,GAAGK,eAAeE,aAAa,GAAGC,aAAa,CAACC,wBAAQ;IACjF;IAEA,MAAMC,MAAM;QACV,IAAI;YAEF,MAAMC,cAAc,MAAM,IAAI,CAACX,kBAAkB,CAACY,IAAI,CAAC;gBACrDC,OAAO;oBACL;wBAAEC,eAAe;wBAAgBC,QAAQ;oBAAU;oBACnD;wBAAED,eAAe;oBAAY;iBAC9B;gBACDE,MAAM;YACR;YAEA,IAAIL,YAAYM,MAAM,KAAK,GAAG;gBAC5B;YACF;YAEA,IAAI,CAAClB,MAAM,CAACmB,GAAG,CAAC,CAAC,MAAM,EAAEP,YAAYM,MAAM,CAAC,wBAAwB,CAAC;YAErE,KAAK,MAAME,OAAOR,YAAa;gBAC7B,IAAI;oBACF,MAAM,IAAI,CAACS,UAAU,CAACD;gBACxB,EAAE,OAAOE,OAAO;oBACd,IAAI,CAACtB,MAAM,CAACsB,KAAK,CAAC,CAAC,sBAAsB,EAAEF,IAAIG,EAAE,CAAC,EAAE,EAAEH,IAAII,QAAQ,EAAE,EAAEF;oBAGtEF,IAAIL,aAAa,GAAG;oBACpBK,IAAIK,YAAY,GAAG,CAAC,iBAAiB,EAAEH,iBAAiBI,QAAQJ,MAAMK,OAAO,GAAG,iBAAiB;oBACjG,MAAM,IAAI,CAAC1B,kBAAkB,CAAC2B,IAAI,CAACR;gBACrC;YACF;YAEA,IAAI,CAACpB,MAAM,CAACmB,GAAG,CAAC,CAAC,sBAAsB,EAAEP,YAAYM,MAAM,CAAC,aAAa,CAAC;QAC5E,EAAE,OAAOI,OAAO;YACd,IAAI,CAACtB,MAAM,CAACsB,KAAK,CAAC,yCAAyCA;QAC7D;IACF;IAEA,MAAcD,WAAWD,GAAa,EAAiB;QACrD,IAAI,CAACpB,MAAM,CAACmB,GAAG,CAAC,CAAC,oBAAoB,EAAEC,IAAIG,EAAE,CAAC,EAAE,EAAEH,IAAII,QAAQ,EAAE;QAGhEJ,IAAIL,aAAa,GAAG;QACpB,MAAM,IAAI,CAACd,kBAAkB,CAAC2B,IAAI,CAACR;QAEnC,IAAI,CAACA,IAAIS,aAAa,EAAE;YACtB,MAAM,IAAIH,MAAM;QAClB;QAGA,MAAMI,iBAAiB,MAAM,IAAI,CAACzB,kBAAkB,CAAC0B,YAAY,CAACX,IAAIS,aAAa;QAEnF,IAAIG;QACJ,IAAIC,aAAoB,EAAE;QAE1B,IAAIH,gBAAgB;YAElB,IAAI,CAAC9B,MAAM,CAACmB,GAAG,CAAC,CAAC,8BAA8B,EAAEC,IAAIG,EAAE,CAAC,aAAa,EAAEH,IAAIS,aAAa,CAAC,CAAC,CAAC;YAC3FG,WAAWF;YACXG,aAAa,EAAE;QACjB,OAAO;YAEL,MAAMC,WAAW,MAAM,IAAI,CAACC,eAAe,CAACf;YAE5C,IAAI,CAACc,UAAU;gBACb,MAAM,IAAIR,MAAM;YAClB;YAGA,MAAMU,SAAS,MAAM,IAAI,CAAChC,mBAAmB,CAACiC,aAAa,CAACH;YAC5D,IAAI,CAACE,QAAQ;gBACX,MAAM,IAAIV,MAAM,CAAC,gBAAgB,EAAEQ,UAAU;YAC/C;YAGA,MAAMI,iBAAiB,MAAM,IAAI,CAAClC,mBAAmB,CAACmC,WAAW,CAACL;YAClEF,WAAWM,eAAeN,QAAQ;YAClCC,aAAaK,eAAeL,UAAU;YAGtC,IAAIO,oBAA2B,EAAE;YACjC,IAAIP,cAAcA,WAAWf,MAAM,GAAG,GAAG;gBACvCsB,oBAAoB,MAAM,IAAI,CAACnC,kBAAkB,CAACoC,cAAc,CAACrB,IAAIS,aAAa,EAAEI;gBACpF,IAAI,CAACjC,MAAM,CAACmB,GAAG,CAAC,CAAC,MAAM,EAAEqB,kBAAkBtB,MAAM,CAAC,sBAAsB,EAAEE,IAAIG,EAAE,EAAE;YACpF;YAGA,MAAMmB,WAAWtB,IAAIsB,QAAQ,IAAIC;YACjC,MAAM,IAAI,CAACtC,kBAAkB,CAACuC,YAAY,CAACxB,IAAIS,aAAa,EAAEG,UAAUU,UAAUtB,IAAII,QAAQ,EAAEgB;YAChG,IAAI,CAACxC,MAAM,CAACmB,GAAG,CAAC,CAAC,6BAA6B,EAAEC,IAAIG,EAAE,EAAE;QAC1D;QAGA,MAAM,IAAI,CAACpB,eAAe,CAAC0C,kBAAkB,CAACzB,IAAIG,EAAE,EAAES,UAAUC;QAEhE,IAAI,CAACjC,MAAM,CAACmB,GAAG,CAAC,CAAC,0BAA0B,EAAEC,IAAIG,EAAE,CAAC,EAAE,EAAEH,IAAII,QAAQ,EAAE;IACxE;IAEA,MAAcW,gBAAgBf,GAAa,EAA0B;QAEnE,IAAIA,IAAIS,aAAa,EAAE;YACrB,IAAI;gBACF,MAAMO,SAAS,MAAM,IAAI,CAAC/B,kBAAkB,CAACyC,UAAU,CAAC1B,IAAIS,aAAa;gBACzE,IAAI,CAACO,QAAQ;oBACX,IAAI,CAACpC,MAAM,CAAC+C,IAAI,CAAC,CAAC,KAAK,EAAE3B,IAAIS,aAAa,CAAC,8BAA8B,EAAET,IAAIG,EAAE,EAAE;oBACnF,OAAO;gBACT;gBAEA,OAAO,IAAI,CAAClB,kBAAkB,CAAC2C,WAAW,CAAC5B,IAAIS,aAAa;YAC9D,EAAE,OAAOP,OAAO;gBACd,IAAI,CAACtB,MAAM,CAACsB,KAAK,CAAC,CAAC,oCAAoC,EAAEF,IAAIG,EAAE,CAAC,EAAE,EAAED,OAAO;gBAC3E,OAAO;YACT;QACF;QAGA,IAAI,CAACtB,MAAM,CAACiD,KAAK,CAAC,CAAC,IAAI,EAAE7B,IAAIG,EAAE,CAAC,2DAA2D,CAAC;QAC5F,OAAO;IACT;AACF"}
1
+ {"version":3,"sources":["../../src/tasks/print-job-analysis.task.ts"],"names":["PrintJobAnalysisTask","logger","printJobRepository","loggerFactory","printJobService","fileAnalysisService","fileStorageService","typeormService","name","getDataSource","getRepository","PrintJob","run","pendingJobs","find","where","analysisState","status","take","length","log","job","analyzeJob","error","id","fileName","statusReason","Error","message","save","fileStorageId","cachedMetadata","loadMetadata","metadata","thumbnails","filePath","resolveFilePath","exists","needsAnalysis","analysisResult","analyzeFile","thumbnailMetadata","saveThumbnails","fileHash","undefined","saveMetadata","handleFileAnalyzed","fileExists","warn","getFilePath","debug"],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get convertQoiToPng () {
13
+ return convertQoiToPng;
14
+ },
15
+ get processThumbnail () {
16
+ return processThumbnail;
17
+ }
18
+ });
19
+ const _bgcodetypes = require("./bgcode.types");
20
+ const _qoidecoder = require("./qoi-decoder");
21
+ const _pngencoder = require("./png-encoder");
22
+ function convertQoiToPng(qoiBuffer) {
23
+ const decoded = (0, _qoidecoder.decodeQOI)(qoiBuffer);
24
+ return (0, _pngencoder.encodePNG)(decoded.width, decoded.height, decoded.data);
25
+ }
26
+ function processThumbnail(data, parameters) {
27
+ switch(parameters.format){
28
+ case _bgcodetypes.BgCodeThumbnailFormats.PNG:
29
+ return {
30
+ extension: _bgcodetypes.BgCodeThumbnailFormatExtension[_bgcodetypes.BgCodeThumbnailFormats.PNG],
31
+ data: data
32
+ };
33
+ case _bgcodetypes.BgCodeThumbnailFormats.JPG:
34
+ return {
35
+ extension: _bgcodetypes.BgCodeThumbnailFormatExtension[_bgcodetypes.BgCodeThumbnailFormats.JPG],
36
+ data: data
37
+ };
38
+ case _bgcodetypes.BgCodeThumbnailFormats.QOI:
39
+ const pngData = convertQoiToPng(data);
40
+ return {
41
+ extension: _bgcodetypes.BgCodeThumbnailFormatExtension[_bgcodetypes.BgCodeThumbnailFormats.PNG],
42
+ data: pngData,
43
+ converted: true
44
+ };
45
+ default:
46
+ throw new Error(`Unsupported thumbnail format: ${parameters.format}`);
47
+ }
48
+ }
49
+
50
+ //# sourceMappingURL=bgcode-thumbnail.parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/bgcode/bgcode-thumbnail.parser.ts"],"names":["convertQoiToPng","processThumbnail","qoiBuffer","decoded","decodeQOI","encodePNG","width","height","data","parameters","format","BgCodeThumbnailFormats","PNG","extension","BgCodeThumbnailFormatExtension","JPG","QOI","pngData","converted","Error"],"mappings":";;;;;;;;;;;QAcgBA;eAAAA;;QAKAC;eAAAA;;;6BAfT;4BACmB;4BACA;AAQnB,SAASD,gBAAgBE,SAAiB;IAC/C,MAAMC,UAAUC,IAAAA,qBAAS,EAACF;IAC1B,OAAOG,IAAAA,qBAAS,EAACF,QAAQG,KAAK,EAAEH,QAAQI,MAAM,EAAEJ,QAAQK,IAAI;AAC9D;AAEO,SAASP,iBAAiBO,IAAY,EAAEC,UAAqC;IAClF,OAAQA,WAAWC,MAAM;QACvB,KAAKC,mCAAsB,CAACC,GAAG;YAC7B,OAAO;gBACLC,WAAWC,2CAA8B,CAACH,mCAAsB,CAACC,GAAG,CAAC;gBACrEJ,MAAMA;YACR;QAEF,KAAKG,mCAAsB,CAACI,GAAG;YAC7B,OAAO;gBACLF,WAAWC,2CAA8B,CAACH,mCAAsB,CAACI,GAAG,CAAC;gBACrEP,MAAMA;YACR;QAEF,KAAKG,mCAAsB,CAACK,GAAG;YAC7B,MAAMC,UAAUjB,gBAAgBQ;YAChC,OAAO;gBACLK,WAAWC,2CAA8B,CAACH,mCAAsB,CAACC,GAAG,CAAC;gBACrEJ,MAAMS;gBACNC,WAAW;YACb;QAEF;YACE,MAAM,IAAIC,MAAM,CAAC,8BAA8B,EAAEV,WAAWC,MAAM,EAAE;IACxE;AACF"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get BGCODE_EXPECTED_HEADERS () {
13
+ return BGCODE_EXPECTED_HEADERS;
14
+ },
15
+ get BGCODE_HEADER_MARKER () {
16
+ return BGCODE_HEADER_MARKER;
17
+ },
18
+ get BGCODE_HEADER_SIZE () {
19
+ return BGCODE_HEADER_SIZE;
20
+ },
21
+ get BGCODE_MAX_BLOCK_HEADER_SIZE () {
22
+ return BGCODE_MAX_BLOCK_HEADER_SIZE;
23
+ },
24
+ get BGCODE_MAX_BLOCK_TYPE () {
25
+ return BGCODE_MAX_BLOCK_TYPE;
26
+ },
27
+ get BGCODE_MAX_CHECKSUM_TYPE () {
28
+ return BGCODE_MAX_CHECKSUM_TYPE;
29
+ },
30
+ get BGCODE_MAX_COMPRESSION () {
31
+ return BGCODE_MAX_COMPRESSION;
32
+ },
33
+ get BGCODE_MIN_BLOCK_HEADER_SIZE () {
34
+ return BGCODE_MIN_BLOCK_HEADER_SIZE;
35
+ },
36
+ get BGCODE_PARAMETER_THUMBNAIL_MAX_FORMAT () {
37
+ return BGCODE_PARAMETER_THUMBNAIL_MAX_FORMAT;
38
+ }
39
+ });
40
+ const BGCODE_HEADER_SIZE = 10;
41
+ const BGCODE_MIN_BLOCK_HEADER_SIZE = 8;
42
+ const BGCODE_MAX_BLOCK_HEADER_SIZE = 12;
43
+ const BGCODE_HEADER_MARKER = "GCDE";
44
+ const BGCODE_MAX_BLOCK_TYPE = 5;
45
+ const BGCODE_MAX_COMPRESSION = 3;
46
+ const BGCODE_EXPECTED_HEADERS = [
47
+ 0,
48
+ 3,
49
+ 5,
50
+ 4,
51
+ 2,
52
+ 1
53
+ ];
54
+ const BGCODE_MAX_CHECKSUM_TYPE = 1;
55
+ const BGCODE_PARAMETER_THUMBNAIL_MAX_FORMAT = 2;
56
+
57
+ //# sourceMappingURL=bgcode.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/bgcode/bgcode.constants.ts"],"names":["BGCODE_EXPECTED_HEADERS","BGCODE_HEADER_MARKER","BGCODE_HEADER_SIZE","BGCODE_MAX_BLOCK_HEADER_SIZE","BGCODE_MAX_BLOCK_TYPE","BGCODE_MAX_CHECKSUM_TYPE","BGCODE_MAX_COMPRESSION","BGCODE_MIN_BLOCK_HEADER_SIZE","BGCODE_PARAMETER_THUMBNAIL_MAX_FORMAT"],"mappings":";;;;;;;;;;;QA4BaA;eAAAA;;QAvBAC;eAAAA;;QALAC;eAAAA;;QAIAC;eAAAA;;QASAC;eAAAA;;QAiBAC;eAAAA;;QAXAC;eAAAA;;QAhBAC;eAAAA;;QA6BAC;eAAAA;;;AAhCN,MAAMN,qBAAqB;AAG3B,MAAMK,+BAA+B;AACrC,MAAMJ,+BAA+B;AACrC,MAAMF,uBAAuB;AAQ7B,MAAMG,wBAAwB;AAM9B,MAAME,yBAAyB;AAS/B,MAAMN,0BAA0B;IAAC;IAAG;IAAG;IAAG;IAAG;IAAG;CAAE;AAElD,MAAMK,2BAA2B;AAEjC,MAAMG,wCAAwC"}