@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
@@ -1,92 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "PrinterFilesStore", {
6
- enumerable: true,
7
- get: function() {
8
- return PrinterFilesStore;
9
- }
10
- });
11
- const _runtimeexceptions = require("../exceptions/runtime.exceptions");
12
- const _node = require("@sentry/node");
13
- class PrinterFilesStore {
14
- printerCache;
15
- fileCache;
16
- printerApiFactory;
17
- logger;
18
- constructor(loggerFactory, printerCache, fileCache, printerApiFactory){
19
- this.printerCache = printerCache;
20
- this.fileCache = fileCache;
21
- this.printerApiFactory = printerApiFactory;
22
- this.logger = loggerFactory(PrinterFilesStore.name);
23
- }
24
- async loadFilesStore() {
25
- const printers = await this.printerCache.listCachedPrinters(true);
26
- for (const printer of printers.filter((p)=>p.enabled)){
27
- try {
28
- const printerFiles = await this.loadFiles(printer.id);
29
- this.fileCache.cachePrinterFiles(printer.id, printerFiles);
30
- } catch (e) {
31
- (0, _node.captureException)(e);
32
- this.logger.error(`Files store failed to load file list for printer ${printer.name}`);
33
- }
34
- }
35
- }
36
- async loadFiles(printerId) {
37
- const loginDto = await this.printerCache.getLoginDtoAsync(printerId);
38
- const printerApi = this.printerApiFactory.getScopedPrinter(loginDto);
39
- const files = await printerApi.getFiles();
40
- this.fileCache.cachePrinterFiles(printerId, files);
41
- return files;
42
- }
43
- getFiles(printerId) {
44
- return this.fileCache.getPrinterFiles(printerId);
45
- }
46
- getOutdatedFiles(printerId, ageDaysMax) {
47
- if (!ageDaysMax) throw new _runtimeexceptions.ValidationException("ageDaysMax property is required to get printer's outdated files");
48
- const printerFiles = this.getFiles(printerId);
49
- if (!printerFiles?.length) return [];
50
- const nowTimestampSeconds = Date.now() / 1000;
51
- return printerFiles.filter((file)=>!!file.date && file.date + ageDaysMax * 86400 < nowTimestampSeconds);
52
- }
53
- async deleteOutdatedFiles(printerId, ageDaysMax) {
54
- const printerApi = this.printerApiFactory.getById(printerId);
55
- const failedFiles = [];
56
- const succeededFiles = [];
57
- const nonRecursiveFiles = this.getOutdatedFiles(printerId, ageDaysMax);
58
- const name = (await this.printerCache.getCachedPrinterOrThrowAsync(printerId)).name;
59
- for (let file of nonRecursiveFiles){
60
- try {
61
- await printerApi.deleteFile(file.path);
62
- succeededFiles.push(file);
63
- } catch (e) {
64
- failedFiles.push(file);
65
- }
66
- }
67
- this.logger.log(`Deleted ${succeededFiles.length} successfully and ${failedFiles.length} with failure for printer ${name}.`);
68
- return {
69
- failedFiles,
70
- succeededFiles
71
- };
72
- }
73
- async purgePrinterFiles(printerId) {
74
- const printerState = await this.printerCache.getCachedPrinterOrThrowAsync(printerId);
75
- this.logger.log(`Purging file cache from printer`);
76
- this.fileCache.purgePrinterId(printerState.id);
77
- this.logger.log(`Clearing printer files successful`);
78
- }
79
- async purgeFiles() {
80
- const allPrinters = await this.printerCache.listCachedPrinters();
81
- this.logger.log(`Clearing file caches`);
82
- for (let printer of allPrinters){
83
- this.fileCache.purgePrinterId(printer.id);
84
- }
85
- this.logger.log(`Clearing caches successful.`);
86
- }
87
- async deleteFile(printerId, filePath) {
88
- this.fileCache.purgeFile(printerId, filePath);
89
- }
90
- }
91
-
92
- //# sourceMappingURL=printer-files.store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/state/printer-files.store.ts"],"names":["PrinterFilesStore","logger","loggerFactory","printerCache","fileCache","printerApiFactory","name","loadFilesStore","printers","listCachedPrinters","printer","filter","p","enabled","printerFiles","loadFiles","id","cachePrinterFiles","e","captureException","error","printerId","loginDto","getLoginDtoAsync","printerApi","getScopedPrinter","files","getFiles","getPrinterFiles","getOutdatedFiles","ageDaysMax","ValidationException","length","nowTimestampSeconds","Date","now","file","date","deleteOutdatedFiles","getById","failedFiles","succeededFiles","nonRecursiveFiles","getCachedPrinterOrThrowAsync","deleteFile","path","push","log","purgePrinterFiles","printerState","purgePrinterId","purgeFiles","allPrinters","filePath","purgeFile"],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "PrinterFilesLoadTask", {
6
- enumerable: true,
7
- get: function() {
8
- return PrinterFilesLoadTask;
9
- }
10
- });
11
- class PrinterFilesLoadTask {
12
- printerFilesStore;
13
- logger;
14
- constructor(loggerFactory, printerFilesStore){
15
- this.printerFilesStore = printerFilesStore;
16
- this.logger = loggerFactory(PrinterFilesLoadTask.name);
17
- }
18
- async run() {
19
- this.logger.log("Loading files store in background");
20
- try {
21
- await this.printerFilesStore.loadFilesStore();
22
- this.logger.log("Files store loaded successfully in background");
23
- } catch (error) {
24
- this.logger.error("Failed to load files store in background", error);
25
- }
26
- }
27
- }
28
-
29
- //# sourceMappingURL=printer-files-load.task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/tasks/printer-files-load.task.ts"],"names":["PrinterFilesLoadTask","logger","loggerFactory","printerFilesStore","name","run","log","loadFilesStore","error"],"mappings":";;;;+BAQaA;;;eAAAA;;;AAAN,MAAMA;;IACXC,OAAsB;IAEtB,YACEC,aAA6B,EAC7B,AAAiBC,iBAAoC,CACrD;aADiBA,oBAAAA;QAEjB,IAAI,CAACF,MAAM,GAAGC,cAAcF,qBAAqBI,IAAI;IACvD;IAEA,MAAMC,MAAM;QACV,IAAI,CAACJ,MAAM,CAACK,GAAG,CAAC;QAChB,IAAI;YACF,MAAM,IAAI,CAACH,iBAAiB,CAACI,cAAc;YAC3C,IAAI,CAACN,MAAM,CAACK,GAAG,CAAC;QAClB,EAAE,OAAOE,OAAO;YACd,IAAI,CAACP,MAAM,CAACO,KAAK,CAAC,4CAA4CA;QAChE;IACF;AACF"}