@fdm-monster/server 2.0.0-rc1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/.env.template +8 -3
  2. package/.yarn/install-state.gz +0 -0
  3. package/CONTRIBUTING.md +1 -1
  4. package/README.md +5 -4
  5. package/RELEASE_NOTES.MD +39 -0
  6. package/SECURITY.md +1 -1
  7. package/dist/consoles/download-github-releases.js +3 -3
  8. package/dist/consoles/launch-http-servers.js +4 -4
  9. package/dist/consoles/launch-http-servers.js.map +1 -1
  10. package/dist/consoles/mock-bambu.server.js +35 -16
  11. package/dist/consoles/mock-bambu.server.js.map +1 -1
  12. package/dist/consoles/mock-camera/default-image.js +13 -0
  13. package/dist/consoles/mock-camera/default-image.js.map +1 -0
  14. package/dist/consoles/mock-camera/mock-camera.server.js +160 -0
  15. package/dist/consoles/mock-camera/mock-camera.server.js.map +1 -0
  16. package/dist/consoles/mock-octoprint.server.js +281 -73
  17. package/dist/consoles/mock-octoprint.server.js.map +1 -1
  18. package/dist/consoles/mock-prusalink.server.js +11 -11
  19. package/dist/consoles/mock-prusalink.server.js.map +1 -1
  20. package/dist/consoles/typeorm-create.js +135 -0
  21. package/dist/consoles/typeorm-create.js.map +1 -0
  22. package/dist/consoles/typeorm-generate.js +8 -8
  23. package/dist/consoles/typeorm-generate.js.map +1 -1
  24. package/dist/constants/authorization.constants.js +13 -26
  25. package/dist/constants/authorization.constants.js.map +1 -1
  26. package/dist/constants/server-settings.constants.js +3 -18
  27. package/dist/constants/server-settings.constants.js.map +1 -1
  28. package/dist/container.js +18 -10
  29. package/dist/container.js.map +1 -1
  30. package/dist/container.tokens.js +9 -5
  31. package/dist/container.tokens.js.map +1 -1
  32. package/dist/controllers/batch-call.controller.js +0 -15
  33. package/dist/controllers/batch-call.controller.js.map +1 -1
  34. package/dist/controllers/file-storage.controller.js +248 -0
  35. package/dist/controllers/file-storage.controller.js.map +1 -0
  36. package/dist/controllers/first-time-setup.controller.js +2 -1
  37. package/dist/controllers/first-time-setup.controller.js.map +1 -1
  38. package/dist/controllers/floor.controller.js +12 -12
  39. package/dist/controllers/floor.controller.js.map +1 -1
  40. package/dist/controllers/print-job.controller.js +666 -0
  41. package/dist/controllers/print-job.controller.js.map +1 -0
  42. package/dist/controllers/print-queue.controller.js +375 -0
  43. package/dist/controllers/print-queue.controller.js.map +1 -0
  44. package/dist/controllers/printer-files.controller.js +86 -59
  45. package/dist/controllers/printer-files.controller.js.map +1 -1
  46. package/dist/controllers/printer-settings.controller.js +0 -21
  47. package/dist/controllers/printer-settings.controller.js.map +1 -1
  48. package/dist/controllers/{printer-group.controller.js → printer-tag.controller.js} +51 -34
  49. package/dist/controllers/printer-tag.controller.js.map +1 -0
  50. package/dist/controllers/printer.controller.js +15 -0
  51. package/dist/controllers/printer.controller.js.map +1 -1
  52. package/dist/controllers/server-private.controller.js +2 -1
  53. package/dist/controllers/server-private.controller.js.map +1 -1
  54. package/dist/controllers/server-public.controller.js +6 -2
  55. package/dist/controllers/server-public.controller.js.map +1 -1
  56. package/dist/controllers/settings.controller.js +0 -68
  57. package/dist/controllers/settings.controller.js.map +1 -1
  58. package/dist/controllers/slicer-compat.controller.js +216 -0
  59. package/dist/controllers/slicer-compat.controller.js.map +1 -0
  60. package/dist/data-source.js +20 -8
  61. package/dist/data-source.js.map +1 -1
  62. package/dist/entities/camera-stream.entity.js +2 -1
  63. package/dist/entities/camera-stream.entity.js.map +1 -1
  64. package/dist/entities/floor.entity.js +3 -5
  65. package/dist/entities/floor.entity.js.map +1 -1
  66. package/dist/entities/index.js +15 -7
  67. package/dist/entities/index.js.map +1 -1
  68. package/dist/entities/print-job.entity.js +195 -0
  69. package/dist/entities/print-job.entity.js.map +1 -0
  70. package/dist/entities/{printer-group.entity.js → printer-tag.entity.js} +17 -17
  71. package/dist/entities/printer-tag.entity.js.map +1 -0
  72. package/dist/entities/printer.entity.js +4 -10
  73. package/dist/entities/printer.entity.js.map +1 -1
  74. package/dist/entities/settings.entity.js +3 -12
  75. package/dist/entities/settings.entity.js.map +1 -1
  76. package/dist/entities/{group.entity.js → tag.entity.js} +15 -8
  77. package/dist/entities/tag.entity.js.map +1 -0
  78. package/dist/index.js +8 -2
  79. package/dist/index.js.map +1 -1
  80. package/dist/middleware/exception.filter.js +114 -90
  81. package/dist/middleware/exception.filter.js.map +1 -1
  82. package/dist/middleware/global.middleware.js +6 -6
  83. package/dist/middleware/global.middleware.js.map +1 -1
  84. package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js +186 -0
  85. package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js.map +1 -0
  86. package/dist/migrations/1767279607392-DropCustomGcode.js +31 -0
  87. package/dist/migrations/1767279607392-DropCustomGcode.js.map +1 -0
  88. package/dist/migrations/1767291804417-DropPrintCompletions.js +37 -0
  89. package/dist/migrations/1767291804417-DropPrintCompletions.js.map +1 -0
  90. package/dist/migrations/1767352862576-DropSettingsFileClean.js +88 -0
  91. package/dist/migrations/1767352862576-DropSettingsFileClean.js.map +1 -0
  92. package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js +107 -0
  93. package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js.map +1 -0
  94. package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js +62 -0
  95. package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js.map +1 -0
  96. package/dist/migrations/1767432108916-RenameGroupToTag.js +86 -0
  97. package/dist/migrations/1767432108916-RenameGroupToTag.js.map +1 -0
  98. package/dist/migrations/1767451444137-AddPrintJob.js +207 -0
  99. package/dist/migrations/1767451444137-AddPrintJob.js.map +1 -0
  100. package/dist/server.constants.js +9 -9
  101. package/dist/server.constants.js.map +1 -1
  102. package/dist/server.host.js +24 -32
  103. package/dist/server.host.js.map +1 -1
  104. package/dist/services/bambu/bambu-ftp.adapter.js +1 -1
  105. package/dist/services/bambu/bambu-ftp.adapter.js.map +1 -1
  106. package/dist/services/bambu/bambu-mqtt.adapter.js +73 -76
  107. package/dist/services/bambu/bambu-mqtt.adapter.js.map +1 -1
  108. package/dist/services/core/batch-call.service.js +0 -25
  109. package/dist/services/core/batch-call.service.js.map +1 -1
  110. package/dist/services/core/multer.service.js +5 -9
  111. package/dist/services/core/multer.service.js.map +1 -1
  112. package/dist/services/core/yaml.service.js +208 -153
  113. package/dist/services/core/yaml.service.js.map +1 -1
  114. package/dist/services/file-analysis.service.js +146 -0
  115. package/dist/services/file-analysis.service.js.map +1 -0
  116. package/dist/services/file-storage.service.js +386 -0
  117. package/dist/services/file-storage.service.js.map +1 -0
  118. package/dist/services/interfaces/floor.dto.js +3 -3
  119. package/dist/services/interfaces/floor.dto.js.map +1 -1
  120. package/dist/services/interfaces/{printer-group.dto.js → printer-tag.dto.js} +9 -8
  121. package/dist/services/interfaces/printer-tag.dto.js.map +1 -0
  122. package/dist/services/interfaces/{print-completion.interface.js → printer-tag.service.interface.js} +1 -1
  123. package/dist/services/interfaces/{printer-group.service.interface.js.map → printer-tag.service.interface.js.map} +1 -1
  124. package/dist/services/interfaces/settings.dto.js +0 -1
  125. package/dist/services/interfaces/settings.dto.js.map +1 -1
  126. package/dist/services/interfaces/{group.dto.js → tag.dto.js} +1 -1
  127. package/dist/services/interfaces/tag.dto.js.map +1 -0
  128. package/dist/services/octoprint/dto/files/gcode-analysis.dto.js.map +1 -0
  129. package/dist/services/octoprint/octoprint-api.routes.js +0 -7
  130. package/dist/services/octoprint/octoprint-api.routes.js.map +1 -1
  131. package/dist/services/octoprint/octoprint.client.js +0 -4
  132. package/dist/services/octoprint/octoprint.client.js.map +1 -1
  133. package/dist/services/orm/floor.service.js +9 -16
  134. package/dist/services/orm/floor.service.js.map +1 -1
  135. package/dist/services/orm/print-job.service.js +539 -0
  136. package/dist/services/orm/print-job.service.js.map +1 -0
  137. package/dist/services/orm/printer-tag.service.js +120 -0
  138. package/dist/services/orm/printer-tag.service.js.map +1 -0
  139. package/dist/services/orm/settings.service.js +0 -8
  140. package/dist/services/orm/settings.service.js.map +1 -1
  141. package/dist/services/print-file-downloader.service.js +169 -0
  142. package/dist/services/print-file-downloader.service.js.map +1 -0
  143. package/dist/services/print-queue.service.js +268 -0
  144. package/dist/services/print-queue.service.js.map +1 -0
  145. package/dist/services/prusa-link/prusa-link-http-polling.adapter.js +1 -3
  146. package/dist/services/prusa-link/prusa-link-http-polling.adapter.js.map +1 -1
  147. package/dist/services/validators/floor-service.validation.js +10 -10
  148. package/dist/services/validators/floor-service.validation.js.map +1 -1
  149. package/dist/services/validators/print-job.validation.js +31 -0
  150. package/dist/services/validators/print-job.validation.js.map +1 -0
  151. package/dist/services/validators/settings-service.validation.js +0 -22
  152. package/dist/services/validators/settings-service.validation.js.map +1 -1
  153. package/dist/services/validators/yaml-service.validation.js +7 -13
  154. package/dist/services/validators/yaml-service.validation.js.map +1 -1
  155. package/dist/shared/load-controllers.js +2 -1
  156. package/dist/shared/load-controllers.js.map +1 -1
  157. package/dist/shared/runtime-settings.migration.js +1 -11
  158. package/dist/shared/runtime-settings.migration.js.map +1 -1
  159. package/dist/state/floor.store.js +2 -9
  160. package/dist/state/floor.store.js.map +1 -1
  161. package/dist/state/printer-events.cache.js +179 -19
  162. package/dist/state/printer-events.cache.js.map +1 -1
  163. package/dist/state/printer-thumbnail.cache.js +98 -183
  164. package/dist/state/printer-thumbnail.cache.js.map +1 -1
  165. package/dist/state/settings.store.js +2 -33
  166. package/dist/state/settings.store.js.map +1 -1
  167. package/dist/state/socket-io.gateway.js +1 -1
  168. package/dist/state/socket-io.gateway.js.map +1 -1
  169. package/dist/tasks/boot.task.js +7 -5
  170. package/dist/tasks/boot.task.js.map +1 -1
  171. package/dist/tasks/print-job-analysis.task.js +116 -0
  172. package/dist/tasks/print-job-analysis.task.js.map +1 -0
  173. package/dist/tasks/printer-files-load.task.js +29 -0
  174. package/dist/tasks/printer-files-load.task.js.map +1 -0
  175. package/dist/tasks/socketio.task.js +1 -1
  176. package/dist/tasks/socketio.task.js.map +1 -1
  177. package/dist/tasks.js +3 -2
  178. package/dist/tasks.js.map +1 -1
  179. package/dist/utils/parsers/3mf.parser.js +337 -0
  180. package/dist/utils/parsers/3mf.parser.js.map +1 -0
  181. package/dist/utils/parsers/bgcode.parser.js +223 -0
  182. package/dist/utils/parsers/bgcode.parser.js.map +1 -0
  183. package/dist/utils/parsers/gcode.parser.js +254 -0
  184. package/dist/utils/parsers/gcode.parser.js.map +1 -0
  185. package/dist/utils/swagger/decorators.js +39 -0
  186. package/dist/utils/swagger/decorators.js.map +1 -0
  187. package/dist/utils/swagger/generator.js +196 -0
  188. package/dist/utils/swagger/generator.js.map +1 -0
  189. package/dist/utils/swagger/swagger.js +93 -0
  190. package/dist/utils/swagger/swagger.js.map +1 -0
  191. package/package.json +19 -15
  192. package/dist/controllers/custom-gcode.controller.js +0 -147
  193. package/dist/controllers/custom-gcode.controller.js.map +0 -1
  194. package/dist/controllers/print-completion.controller.js +0 -118
  195. package/dist/controllers/print-completion.controller.js.map +0 -1
  196. package/dist/controllers/printer-group.controller.js.map +0 -1
  197. package/dist/entities/custom-gcode.entity.js +0 -49
  198. package/dist/entities/custom-gcode.entity.js.map +0 -1
  199. package/dist/entities/group.entity.js.map +0 -1
  200. package/dist/entities/print-completion.entity.js +0 -90
  201. package/dist/entities/print-completion.entity.js.map +0 -1
  202. package/dist/entities/printer-group.entity.js.map +0 -1
  203. package/dist/services/interfaces/custom-gcode.dto.js +0 -18
  204. package/dist/services/interfaces/custom-gcode.dto.js.map +0 -1
  205. package/dist/services/interfaces/custom-gcode.service.interface.js +0 -6
  206. package/dist/services/interfaces/custom-gcode.service.interface.js.map +0 -1
  207. package/dist/services/interfaces/gcode-analysis.dto.js.map +0 -1
  208. package/dist/services/interfaces/group.dto.js.map +0 -1
  209. package/dist/services/interfaces/print-completion-context.dto.js +0 -6
  210. package/dist/services/interfaces/print-completion-context.dto.js.map +0 -1
  211. package/dist/services/interfaces/print-completion.dto.js +0 -38
  212. package/dist/services/interfaces/print-completion.dto.js.map +0 -1
  213. package/dist/services/interfaces/print-completion.interface.js.map +0 -1
  214. package/dist/services/interfaces/printer-group.dto.js.map +0 -1
  215. package/dist/services/interfaces/printer-group.service.interface.js +0 -6
  216. package/dist/services/orm/custom-gcode.service.js +0 -42
  217. package/dist/services/orm/custom-gcode.service.js.map +0 -1
  218. package/dist/services/orm/print-completion.service.js +0 -87
  219. package/dist/services/orm/print-completion.service.js.map +0 -1
  220. package/dist/services/orm/print-completion.shared.js +0 -59
  221. package/dist/services/orm/print-completion.shared.js.map +0 -1
  222. package/dist/services/orm/printer-group.service.js +0 -109
  223. package/dist/services/orm/printer-group.service.js.map +0 -1
  224. package/dist/tasks/print-completion.socketio.task.js +0 -91
  225. package/dist/tasks/print-completion.socketio.task.js.map +0 -1
  226. package/dist/tasks/printer-file-clean.task.js +0 -74
  227. package/dist/tasks/printer-file-clean.task.js.map +0 -1
  228. /package/dist/services/{interfaces → octoprint/dto/files}/gcode-analysis.dto.js +0 -0
@@ -2,215 +2,130 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
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 PrinterThumbnailCache () {
5
+ Object.defineProperty(exports, "PrinterThumbnailCache", {
6
+ enumerable: true,
7
+ get: function() {
13
8
  return PrinterThumbnailCache;
14
- },
15
- get gcodeMaxLinesToRead () {
16
- return gcodeMaxLinesToRead;
17
9
  }
18
10
  });
19
11
  const _keydiffcache = require("../utils/cache/key-diff.cache");
20
- const _path = require("path");
21
- const _fsutils = require("../utils/fs.utils");
22
- const _serverconstants = require("../server.constants");
23
- const _nodefs = require("node:fs");
24
- const _fs = require("fs");
25
- const _gcodeutils = require("../utils/gcode.utils");
26
- const _promises = require("node:readline/promises");
27
- const _promises1 = require("node:fs/promises");
28
- const _node = require("@sentry/node");
29
- const _eventconstants = require("../constants/event.constants");
30
- const gcodeMaxLinesToRead = 10000;
31
12
  class PrinterThumbnailCache extends _keydiffcache.KeyDiffCache {
32
- printerCache;
33
- printerApiFactory;
34
- eventEmitter2;
35
- settingsStore;
13
+ printJobService;
14
+ fileStorageService;
36
15
  logger;
37
- constructor(loggerFactory, printerCache, printerApiFactory, eventEmitter2, settingsStore){
38
- super(), this.printerCache = printerCache, this.printerApiFactory = printerApiFactory, this.eventEmitter2 = eventEmitter2, this.settingsStore = settingsStore;
16
+ constructor(loggerFactory, printJobService, fileStorageService){
17
+ super(), this.printJobService = printJobService, this.fileStorageService = fileStorageService;
39
18
  this.logger = loggerFactory(PrinterThumbnailCache.name);
40
- this.eventEmitter2.on(_eventconstants.printerEvents.printersDeleted, this.handlePrintersDeleted.bind(this));
41
- }
42
- async resetCache() {
43
- const keys = Array.from(this.keyValueStore.keys());
44
- await this.deleteKeysBatch(keys);
45
19
  }
46
20
  async loadCache() {
47
- if (!this.settingsStore.isThumbnailSupportEnabled()) return;
48
- const printers = await this.printerCache.listCachedPrinters();
49
- const baseFolder = (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultPrinterThumbnailsStorage);
50
- this.resetDiffs();
51
- this.keyValueStore.clear();
52
- for (const printer of printers){
53
- const thumbnailFile = (0, _path.join)(baseFolder, printer.id.toString() + ".dat");
54
- if ((0, _nodefs.existsSync)(thumbnailFile)) {
55
- const data = (0, _fs.readFileSync)(thumbnailFile, "utf8");
56
- await this.setPrinterThumbnail(printer.id, data);
21
+ this.logger.log("Loading printer thumbnail cache from print jobs...");
22
+ try {
23
+ const recentJobs = await this.printJobService.printJobRepository.createQueryBuilder("job").select("job.printerId").addSelect("MAX(job.endedAt)", "maxEndedAt").where("job.fileStorageId IS NOT NULL").andWhere("job.analysisState = :state", {
24
+ state: "ANALYZED"
25
+ }).groupBy("job.printerId").getRawMany();
26
+ let loadedCount = 0;
27
+ for (const result of recentJobs){
28
+ const printerId = result.job_printerId;
29
+ if (printerId) {
30
+ try {
31
+ await this.loadPrinterThumbnail(printerId);
32
+ loadedCount++;
33
+ } catch (error) {
34
+ this.logger.warn(`Failed to load thumbnail for printer ${printerId}: ${error}`);
35
+ }
36
+ }
57
37
  }
38
+ this.logger.log(`Loaded ${loadedCount} printer thumbnails from print jobs`);
39
+ } catch (error) {
40
+ this.logger.error("Failed to load thumbnail cache", error);
58
41
  }
59
42
  }
60
- async handlePrintersDeleted(event) {
61
- if (!this.settingsStore.isThumbnailSupportEnabled()) return;
62
- for (const printerId of event.printerIds){
63
- await this.removeThumbnailFile(printerId);
64
- await this.unsetPrinterThumbnail(printerId);
43
+ async loadPrinterThumbnail(printerId) {
44
+ try {
45
+ const job = await this.printJobService.printJobRepository.findOne({
46
+ where: {
47
+ printerId,
48
+ analysisState: "ANALYZED"
49
+ },
50
+ order: {
51
+ endedAt: "DESC",
52
+ startedAt: "DESC",
53
+ createdAt: "DESC"
54
+ }
55
+ });
56
+ if (!job || !job.fileStorageId) {
57
+ this.logger.debug(`No suitable job found for printer ${printerId}`);
58
+ return;
59
+ }
60
+ const metadata = await this.fileStorageService.loadMetadata(job.fileStorageId);
61
+ const thumbnails = metadata?._thumbnails || [];
62
+ if (thumbnails.length === 0) {
63
+ this.logger.debug(`No thumbnails found for job ${job.id}`);
64
+ return;
65
+ }
66
+ const thumbnailBuffer = await this.fileStorageService.getThumbnail(job.fileStorageId, 0);
67
+ if (!thumbnailBuffer) {
68
+ this.logger.warn(`Thumbnail file not found for job ${job.id}`);
69
+ return;
70
+ }
71
+ const thumbnailBase64 = thumbnailBuffer.toString("base64");
72
+ await this.setPrinterThumbnail(printerId, thumbnailBase64, job.id, job.fileName);
73
+ this.logger.debug(`Loaded thumbnail for printer ${printerId} from job ${job.id}`);
74
+ } catch (error) {
75
+ this.logger.error(`Failed to load thumbnail for printer ${printerId}: ${error}`);
76
+ throw error;
65
77
  }
66
78
  }
67
- async setPrinterThumbnail(id, imageData) {
68
- await this.setKeyValue(id, {
69
- id: id,
70
- thumbnailBase64: imageData
79
+ async setPrinterThumbnail(printerId, thumbnailBase64, jobId, fileName) {
80
+ await this.setKeyValue(printerId, {
81
+ printerId,
82
+ thumbnailBase64,
83
+ jobId,
84
+ fileName,
85
+ updatedAt: new Date()
71
86
  });
72
87
  }
73
- async unsetPrinterThumbnail(id) {
74
- await this.deleteKeyValue(id);
88
+ async unsetPrinterThumbnail(printerId) {
89
+ await this.deleteKeyValue(printerId);
75
90
  }
76
- async loadPrinterThumbnailRemote(login, printerId, file) {
77
- if (!this.settingsStore.isThumbnailSupportEnabled()) return;
78
- try {
79
- const thumbnailData = await this.extractRemoteThumbnailBase64(login, file);
80
- await this.writeThumbnailFile(printerId, thumbnailData);
81
- await this.setPrinterThumbnail(printerId, thumbnailData);
82
- return thumbnailData;
83
- } catch (e) {
84
- this.logger.error("Could not parse thumbnail, clearing printer thumbnail", e);
85
- (0, _node.captureException)(e);
86
- await this.removeThumbnailFile(printerId);
87
- await this.unsetPrinterThumbnail(printerId);
88
- }
91
+ async resetCache() {
92
+ this.logger.log("Resetting printer thumbnail cache");
93
+ this.keyValueStore.clear();
94
+ this.resetDiffs();
89
95
  }
90
- async loadPrinterThumbnailLocal(printerId, file) {
91
- if (!this.settingsStore.isThumbnailSupportEnabled()) return;
96
+ async handleJobCompleted(printerId, jobId) {
92
97
  try {
93
- const thumbnailData = await this.extractThumbnailBase64(file);
94
- await this.writeThumbnailFile(printerId, thumbnailData);
95
- await this.setPrinterThumbnail(printerId, thumbnailData);
96
- return thumbnailData;
97
- } catch (e) {
98
- this.logger.error("Could not parse thumbnail, clearing printer thumbnail", e);
99
- (0, _node.captureException)(e);
100
- await this.removeThumbnailFile(printerId);
101
- await this.unsetPrinterThumbnail(printerId);
98
+ this.logger.log(`Updating thumbnail for printer ${printerId} after job ${jobId} completed`);
99
+ await this.loadPrinterThumbnail(printerId);
100
+ } catch (error) {
101
+ this.logger.error(`Failed to update thumbnail after job completion: ${error}`);
102
102
  }
103
103
  }
104
- async writeThumbnailFile(printerId, thumbnailData) {
105
- if (!thumbnailData?.length) {
106
- await this.removeThumbnailFile(printerId);
107
- await this.unsetPrinterThumbnail(printerId);
108
- return;
109
- }
110
- const baseFolder = (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultPrinterThumbnailsStorage);
111
- const thumbnailPath = (0, _path.join)(baseFolder, printerId.toString() + ".dat");
112
- (0, _fsutils.ensureDirExists)(baseFolder);
113
- await (0, _promises1.writeFile)(thumbnailPath, thumbnailData);
114
- }
115
- async removeThumbnailFile(printerId) {
116
- const baseFolder = (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultPrinterThumbnailsStorage);
117
- const thumbnailPath = (0, _path.join)(baseFolder, printerId.toString() + ".dat");
118
- if ((0, _nodefs.existsSync)(thumbnailPath)) {
119
- (0, _nodefs.rmSync)(thumbnailPath);
120
- }
121
- }
122
- async extractRemoteThumbnailBase64(login, file) {
123
- const lines = await this.readRemoteGcodeLines(login, file, gcodeMaxLinesToRead);
124
- if (!lines?.length) {
125
- throw new Error("No gcode lines were returned.");
126
- }
127
- let collecting = false;
128
- let currentThumbnailBase64 = "";
129
- let index = 0;
130
- for (const line of lines){
131
- if (line.startsWith("; thumbnail begin")) {
132
- collecting = true;
133
- currentThumbnailBase64 = "";
134
- } else if (collecting && line.startsWith("; thumbnail") && line.includes("end")) {
135
- collecting = false;
136
- break;
137
- } else if (collecting) {
138
- const trim = line.trim().replace(/^;/, "").trim();
139
- currentThumbnailBase64 += trim;
140
- }
141
- if (index > gcodeMaxLinesToRead) {
142
- throw new Error("Thumbnail not found (within 10000 lines).");
143
- }
144
- index++;
145
- }
146
- return currentThumbnailBase64;
147
- }
148
- async readRemoteGcodeLines(login, file, numberOfLines, fromEnd = false, endCondition = "; thumbnail end") {
149
- const printer = this.printerApiFactory.getScopedPrinter(login);
150
- const fileData = await printer.getFile(file);
151
- const fileSize = fileData.size;
152
- let lines = [];
153
- let position = fromEnd ? fileSize : 0;
154
- let iterationsLeft = 5;
155
- while(lines.length <= numberOfLines && (fromEnd ? position > 0 : position < fileSize)){
156
- iterationsLeft--;
157
- if (iterationsLeft <= 0) {
158
- return;
159
- }
160
- const bytesToRead = Math.min(_gcodeutils.gcodeScanningChunkSize, fromEnd ? position : fileSize - position);
161
- const start = fromEnd ? position - bytesToRead : position;
162
- const end = fromEnd ? position : position + bytesToRead;
163
- position = fromEnd ? start : end;
164
- const remoteChunk = await printer.getFileChunk(file, start, end);
165
- const chunkLines = remoteChunk.data.split("\n");
166
- if (fromEnd) {
167
- lines = chunkLines.concat(lines);
168
- } else {
169
- lines = lines.concat(chunkLines);
170
- }
171
- if (endCondition) {
172
- const endIndex = lines.findIndex((line)=>line.includes(endCondition));
173
- if (endIndex !== -1) {
174
- lines = lines.slice(0, endIndex + 1);
175
- break;
104
+ async handleJobStarted(printerId, jobId) {
105
+ try {
106
+ const job = await this.printJobService.printJobRepository.findOne({
107
+ where: {
108
+ id: jobId
176
109
  }
177
- } else if (lines.length >= numberOfLines) {
178
- break;
110
+ });
111
+ if (!job || !job.fileStorageId) {
112
+ return;
179
113
  }
180
- }
181
- return fromEnd ? lines.slice(-numberOfLines) : lines.slice(0, numberOfLines);
182
- }
183
- async extractThumbnailBase64(gcodePath) {
184
- const fileStream = (0, _fs.createReadStream)(gcodePath);
185
- const rl = (0, _promises.createInterface)({
186
- input: fileStream,
187
- crlfDelay: Infinity
188
- });
189
- let collecting = false;
190
- let currentThumbnailBase64 = "";
191
- let index = 0;
192
- for await (const line of rl){
193
- if (line.startsWith("; thumbnail begin")) {
194
- collecting = true;
195
- currentThumbnailBase64 = "";
196
- } else if (collecting && line.startsWith("; thumbnail") && line.includes("end")) {
197
- collecting = false;
198
- rl.close();
199
- break;
200
- } else if (collecting) {
201
- const trim = line.trim().replace(/^;/, "").trim();
202
- currentThumbnailBase64 += trim;
114
+ const metadata = await this.fileStorageService.loadMetadata(job.fileStorageId);
115
+ const thumbnails = metadata?._thumbnails || [];
116
+ if (thumbnails.length === 0) {
117
+ return;
203
118
  }
204
- if (index > gcodeMaxLinesToRead) {
205
- throw new Error("Thumbnail not found (within 10000 lines).");
119
+ const thumbnailBuffer = await this.fileStorageService.getThumbnail(job.fileStorageId, 0);
120
+ if (!thumbnailBuffer) {
121
+ return;
206
122
  }
207
- index++;
208
- }
209
- if (!currentThumbnailBase64?.length) {
210
- throw new Error("Thumbnail not found (within 10000 lines).");
123
+ const thumbnailBase64 = thumbnailBuffer.toString("base64");
124
+ await this.setPrinterThumbnail(printerId, thumbnailBase64, job.id, job.fileName);
125
+ this.logger.debug(`Updated thumbnail for printer ${printerId} from started job ${job.id}`);
126
+ } catch (error) {
127
+ this.logger.error(`Failed to update thumbnail after job start: ${error}`);
211
128
  }
212
- Buffer.from(currentThumbnailBase64, "base64");
213
- return currentThumbnailBase64;
214
129
  }
215
130
  }
216
131
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/state/printer-thumbnail.cache.ts"],"names":["PrinterThumbnailCache","gcodeMaxLinesToRead","KeyDiffCache","logger","loggerFactory","printerCache","printerApiFactory","eventEmitter2","settingsStore","name","on","printerEvents","printersDeleted","handlePrintersDeleted","bind","resetCache","keys","Array","from","keyValueStore","deleteKeysBatch","loadCache","isThumbnailSupportEnabled","printers","listCachedPrinters","baseFolder","join","superRootPath","AppConstants","defaultPrinterThumbnailsStorage","resetDiffs","clear","printer","thumbnailFile","id","toString","existsSync","data","readFileSync","setPrinterThumbnail","event","printerId","printerIds","removeThumbnailFile","unsetPrinterThumbnail","imageData","setKeyValue","thumbnailBase64","deleteKeyValue","loadPrinterThumbnailRemote","login","file","thumbnailData","extractRemoteThumbnailBase64","writeThumbnailFile","e","error","captureException","loadPrinterThumbnailLocal","extractThumbnailBase64","length","thumbnailPath","ensureDirExists","writeFile","rmSync","lines","readRemoteGcodeLines","Error","collecting","currentThumbnailBase64","index","line","startsWith","includes","trim","replace","numberOfLines","fromEnd","endCondition","getScopedPrinter","fileData","getFile","fileSize","size","position","iterationsLeft","bytesToRead","Math","min","gcodeScanningChunkSize","start","end","remoteChunk","getFileChunk","chunkLines","split","concat","endIndex","findIndex","slice","gcodePath","fileStream","createReadStream","rl","createInterface","input","crlfDelay","Infinity","close","Buffer"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/state/printer-thumbnail.cache.ts"],"names":["PrinterThumbnailCache","KeyDiffCache","logger","loggerFactory","printJobService","fileStorageService","name","loadCache","log","recentJobs","printJobRepository","createQueryBuilder","select","addSelect","where","andWhere","state","groupBy","getRawMany","loadedCount","result","printerId","job_printerId","loadPrinterThumbnail","error","warn","job","findOne","analysisState","order","endedAt","startedAt","createdAt","fileStorageId","debug","metadata","loadMetadata","thumbnails","_thumbnails","length","id","thumbnailBuffer","getThumbnail","thumbnailBase64","toString","setPrinterThumbnail","fileName","jobId","setKeyValue","updatedAt","Date","unsetPrinterThumbnail","deleteKeyValue","resetCache","keyValueStore","clear","resetDiffs","handleJobCompleted","handleJobStarted"],"mappings":"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"}
@@ -31,13 +31,10 @@ class SettingsStore {
31
31
  sentryDiagnosticsEnabled: settings[_serversettingsconstants.serverSettingsKey].sentryDiagnosticsEnabled,
32
32
  experimentalMoonrakerSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalMoonrakerSupport,
33
33
  experimentalPrusaLinkSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalPrusaLinkSupport,
34
- experimentalBambuSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalBambuSupport,
35
- experimentalClientSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalClientSupport,
36
- experimentalThumbnailSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalThumbnailSupport
34
+ experimentalBambuSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalBambuSupport
37
35
  },
38
36
  [_serversettingsconstants.wizardSettingKey]: settings[_serversettingsconstants.wizardSettingKey],
39
37
  [_serversettingsconstants.frontendSettingKey]: settings[_serversettingsconstants.frontendSettingKey],
40
- [_serversettingsconstants.printerFileCleanSettingKey]: settings[_serversettingsconstants.printerFileCleanSettingKey],
41
38
  [_serversettingsconstants.timeoutSettingKey]: settings[_serversettingsconstants.timeoutSettingKey]
42
39
  });
43
40
  }
@@ -53,9 +50,7 @@ class SettingsStore {
53
50
  [_serversettingsconstants.serverSettingsKey]: {
54
51
  experimentalMoonrakerSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalMoonrakerSupport,
55
52
  experimentalPrusaLinkSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalPrusaLinkSupport,
56
- experimentalBambuSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalBambuSupport,
57
- experimentalClientSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalClientSupport,
58
- experimentalThumbnailSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalThumbnailSupport
53
+ experimentalBambuSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalBambuSupport
59
54
  }
60
55
  });
61
56
  }
@@ -110,22 +105,12 @@ class SettingsStore {
110
105
  this.throwIfSettingsUnset();
111
106
  return this.settings[_serversettingsconstants.serverSettingsKey].registration;
112
107
  }
113
- isThumbnailSupportEnabled() {
114
- this.throwIfSettingsUnset();
115
- return this.settings[_serversettingsconstants.serverSettingsKey].experimentalThumbnailSupport;
116
- }
117
108
  getServerSettings() {
118
109
  return this.getSettings()[_serversettingsconstants.serverSettingsKey];
119
110
  }
120
111
  getTimeoutSettings() {
121
112
  return this.getSettings()[_serversettingsconstants.timeoutSettingKey];
122
113
  }
123
- getFileCleanSettings() {
124
- return this.getSettings()[_serversettingsconstants.printerFileCleanSettingKey];
125
- }
126
- isPreUploadFileCleanEnabled() {
127
- return this.getSettings()[_serversettingsconstants.printerFileCleanSettingKey]?.autoRemoveOldFilesBeforeUpload;
128
- }
129
114
  async setWizardCompleted(version) {
130
115
  this.settings = await this.settingsService.updateWizardSettings({
131
116
  wizardCompleted: true,
@@ -157,10 +142,6 @@ class SettingsStore {
157
142
  this.settings = await this.settingsService.updateTimeoutSettings(timeoutSettings);
158
143
  return this.getSettings();
159
144
  }
160
- async updateFileCleanSettings(fileClean) {
161
- this.settings = await this.settingsService.updateFileCleanSettings(fileClean);
162
- return this.getSettings();
163
- }
164
145
  async updateCredentialSettings(credentialSettings) {
165
146
  this.settings = await this.settingsService.updateCredentialSettings(credentialSettings);
166
147
  }
@@ -195,18 +176,6 @@ class SettingsStore {
195
176
  this.settings = await this.settingsService.updateServerSettings(this.settings[_serversettingsconstants.serverSettingsKey]);
196
177
  return this.getSettings();
197
178
  }
198
- async setExperimentalThumbnailSupport(experimentalThumbnailSupport) {
199
- this.throwIfSettingsUnset();
200
- this.settings[_serversettingsconstants.serverSettingsKey].experimentalThumbnailSupport = experimentalThumbnailSupport;
201
- this.settings = await this.settingsService.updateServerSettings(this.settings[_serversettingsconstants.serverSettingsKey]);
202
- return this.getSettings();
203
- }
204
- async setExperimentalClientSupport(experimentalClientSupport) {
205
- this.throwIfSettingsUnset();
206
- this.settings[_serversettingsconstants.serverSettingsKey].experimentalClientSupport = experimentalClientSupport;
207
- this.settings = await this.settingsService.updateServerSettings(this.settings[_serversettingsconstants.serverSettingsKey]);
208
- return this.getSettings();
209
- }
210
179
  async updateFrontendSettings(frontendSettings) {
211
180
  this.settings = await this.settingsService.updateFrontendSettings(frontendSettings);
212
181
  return this.getSettings();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/state/settings.store.ts"],"names":["SettingsStore","logger","settings","loggerFactory","settingsService","name","getSettings","throwIfSettingsUnset","Object","freeze","serverSettingsKey","loginRequired","registration","sentryDiagnosticsEnabled","experimentalMoonrakerSupport","experimentalPrusaLinkSupport","experimentalBambuSupport","experimentalClientSupport","experimentalThumbnailSupport","wizardSettingKey","frontendSettingKey","printerFileCleanSettingKey","timeoutSettingKey","getSettingsSensitive","credentialSettingsKey","jwtExpiresIn","refreshTokenAttempts","refreshTokenExpiry","loadSettings","getOrCreate","processSentryEnabled","getCredentialSettings","getAnonymousDiagnosticsEnabled","persistOptionalCredentialSettings","overrideJwtSecret","overrideJwtExpiresIn","credentialSettings","length","updateJwtSecretCredentialSetting","jwtSecret","updateCredentialSettings","Number","parseInt","getWizardState","wizardCompleted","wizardVersion","latestWizardVersion","AppConstants","currentWizardVersion","isWizardCompleted","getWizardSettings","isRegistrationEnabled","isThumbnailSupportEnabled","getServerSettings","getTimeoutSettings","getFileCleanSettings","isPreUploadFileCleanEnabled","autoRemoveOldFilesBeforeUpload","setWizardCompleted","version","updateWizardSettings","wizardCompletedAt","Date","getLoginRequired","setLoginRequired","updateServerSettings","setRegistrationEnabled","serverSettings","updateTimeoutSettings","timeoutSettings","updateFileCleanSettings","fileClean","setRefreshTokenSettings","setSentryDiagnosticsEnabled","setExperimentalMoonrakerSupport","setExperimentalPrusaLinkSupport","setExperimentalBambuSupport","setExperimentalThumbnailSupport","setExperimentalClientSupport","updateFrontendSettings","frontendSettings","InternalServerException","sentryEnabled","log","isTestEnvironment","client","getClient","warn","getOptions","enabled"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/state/settings.store.ts"],"names":["SettingsStore","logger","settings","loggerFactory","settingsService","name","getSettings","throwIfSettingsUnset","Object","freeze","serverSettingsKey","loginRequired","registration","sentryDiagnosticsEnabled","experimentalMoonrakerSupport","experimentalPrusaLinkSupport","experimentalBambuSupport","wizardSettingKey","frontendSettingKey","timeoutSettingKey","getSettingsSensitive","credentialSettingsKey","jwtExpiresIn","refreshTokenAttempts","refreshTokenExpiry","loadSettings","getOrCreate","processSentryEnabled","getCredentialSettings","getAnonymousDiagnosticsEnabled","persistOptionalCredentialSettings","overrideJwtSecret","overrideJwtExpiresIn","credentialSettings","length","updateJwtSecretCredentialSetting","jwtSecret","updateCredentialSettings","Number","parseInt","getWizardState","wizardCompleted","wizardVersion","latestWizardVersion","AppConstants","currentWizardVersion","isWizardCompleted","getWizardSettings","isRegistrationEnabled","getServerSettings","getTimeoutSettings","setWizardCompleted","version","updateWizardSettings","wizardCompletedAt","Date","getLoginRequired","setLoginRequired","updateServerSettings","setRegistrationEnabled","serverSettings","updateTimeoutSettings","timeoutSettings","setRefreshTokenSettings","setSentryDiagnosticsEnabled","setExperimentalMoonrakerSupport","setExperimentalPrusaLinkSupport","setExperimentalBambuSupport","updateFrontendSettings","frontendSettings","InternalServerException","sentryEnabled","log","isTestEnvironment","client","getClient","warn","getOptions","enabled"],"mappings":"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"}
@@ -88,7 +88,7 @@ class SocketIoGateway {
88
88
  }
89
89
  }
90
90
  const IO_MESSAGES = {
91
- LegacyUpdate: "legacy-update"
91
+ Update: "update"
92
92
  };
93
93
 
94
94
  //# sourceMappingURL=socket-io.gateway.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/state/socket-io.gateway.ts"],"names":["IO_MESSAGES","SocketIoGateway","socketIoGatewaySessions","Gauge","name","help","socketIoGatewayDisconnects","Counter","socketIoGatewayMessagesSent","socketIoGatewayMessageSentSize","logger","io","loggerFactory","eventEmitter2","settingsStore","userService","configService","attachServer","httpServer","Server","cors","origin","opts","getPassportJwtOptions","value","handshake","auth","token","use","authorize","verifyUserCallback","on","socket","onConnect","bind","debug","socketId","id","emit","socketIoConnectedEvent","inc","dec","send","event","data","payload","JSON","stringify","sizeInBytes","Buffer","byteLength","set","LegacyUpdate"],"mappings":";;;;;;;;;;;QAsFaA;eAAAA;;QArDAC;eAAAA;;;0BAjCkB;gCACQ;0BAMmB;oCAGhC;4BACK;AAE/B,MAAMC,0BAA0B,IAAIC,iBAAK,CAAC;IACxCC,MAAM;IACNC,MAAM;AACR;AAEA,MAAMC,6BAA6B,IAAIC,mBAAO,CAAC;IAC7CH,MAAM;IACNC,MAAM;AACR;AAEA,MAAMG,8BAA8B,IAAID,mBAAO,CAAC;IAC9CH,MAAM;IACNC,MAAM;AACR;AAEA,MAAMI,iCAAiC,IAAIN,iBAAK,CAAC;IAC/CC,MAAM;IACNC,MAAM;AACR;AAEO,MAAMJ;;;;;IACXS,OAAsB;IAEtBC,GAAW;IAEX,YACEC,aAA6B,EAC7B,AAAiBC,aAA4B,EAC7C,AAAiBC,aAA4B,EAC7C,AAAiBC,WAAyB,EAC1C,AAAiBC,aAA6B,CAC9C;aAJiBH,gBAAAA;aACAC,gBAAAA;aACAC,cAAAA;aACAC,gBAAAA;QAEjB,IAAI,CAACN,MAAM,GAAGE,cAAcX,gBAAgBG,IAAI;IAClD;IAEAa,aAAaC,UAAsB,EAAE;QACnC,IAAI,CAACP,EAAE,GAAG,IAAIQ,gBAAM,CAACD,YAAY;YAAEE,MAAM;gBAAEC,QAAQ;YAAI;QAAE;QACzD,MAAMC,OAAOC,IAAAA,+BAAqB,EAChC,IAAI,CAACT,aAAa,EAClB,IAAI,CAACE,aAAa,EAClB,CAACQ,QAAkBA,MAAMC,SAAS,CAACC,IAAI,CAACC,KAAK;QAE/C,IAAI,CAAChB,EAAE,CAACiB,GAAG,CAACC,IAAAA,6BAAS,EAAC,IAAI,CAACf,aAAa,EAAEQ,MAAM,IAAI,CAACZ,MAAM,EAAEoB,IAAAA,4BAAkB,EAAC,IAAI,CAACf,WAAW;QAChG,IAAI,CAACJ,EAAE,CAACoB,EAAE,CAAC,cAAc,CAACC,SAAW,IAAI,CAACC,SAAS,CAACC,IAAI,CAAC,IAAI,EAAEF;IACjE;IAEAC,UAAUD,MAAc,EAAE;QACxB,IAAI,CAACtB,MAAM,CAACyB,KAAK,CAAC,6BAA6B;YAAEC,UAAUJ,OAAOK,EAAE;QAAC;QACrE,IAAI,CAACxB,aAAa,CAACyB,IAAI,CAACC,sCAAsB,EAAEP,OAAOK,EAAE;QACzDnC,wBAAwBsC,GAAG;QAE3BR,OAAOD,EAAE,CAAC,cAAc;YACtB,IAAI,CAACrB,MAAM,CAACyB,KAAK,CAAC,gCAAgC;gBAAEC,UAAUJ,OAAOK,EAAE;YAAC;YACxEnC,wBAAwBuC,GAAG,CAAC;YAC5BnC,2BAA2BkC,GAAG;QAChC;IACF;IAEAE,KAAQC,KAAa,EAAEC,IAAO,EAAE;QAC9B,IAAI,CAAC,IAAI,CAACjC,EAAE,EAAE;YACZ,IAAI,CAACD,MAAM,CAACyB,KAAK,CAAC,CAAC,gBAAgB,EAAEQ,MAAM,wCAAwC,CAAC;YACpF;QACF;QAEA,IAAI,CAAChC,EAAE,CAAC2B,IAAI,CAACK,OAAOC;QACpBpC,4BAA4BgC,GAAG;QAE/B,MAAMK,UAAUC,KAAKC,SAAS,CAACH;QAC/B,MAAMI,cAAcC,OAAOC,UAAU,CAACL;QACtCpC,+BAA+B0C,GAAG,CAACH;IACrC;AACF;AAEO,MAAMhD,cAAc;IACzBoD,cAAc;AAChB"}
1
+ {"version":3,"sources":["../../src/state/socket-io.gateway.ts"],"names":["IO_MESSAGES","SocketIoGateway","socketIoGatewaySessions","Gauge","name","help","socketIoGatewayDisconnects","Counter","socketIoGatewayMessagesSent","socketIoGatewayMessageSentSize","logger","io","loggerFactory","eventEmitter2","settingsStore","userService","configService","attachServer","httpServer","Server","cors","origin","opts","getPassportJwtOptions","value","handshake","auth","token","use","authorize","verifyUserCallback","on","socket","onConnect","bind","debug","socketId","id","emit","socketIoConnectedEvent","inc","dec","send","event","data","payload","JSON","stringify","sizeInBytes","Buffer","byteLength","set","Update"],"mappings":";;;;;;;;;;;QAsFaA;eAAAA;;QArDAC;eAAAA;;;0BAjCkB;gCACQ;0BAMmB;oCAGhC;4BACK;AAE/B,MAAMC,0BAA0B,IAAIC,iBAAK,CAAC;IACxCC,MAAM;IACNC,MAAM;AACR;AAEA,MAAMC,6BAA6B,IAAIC,mBAAO,CAAC;IAC7CH,MAAM;IACNC,MAAM;AACR;AAEA,MAAMG,8BAA8B,IAAID,mBAAO,CAAC;IAC9CH,MAAM;IACNC,MAAM;AACR;AAEA,MAAMI,iCAAiC,IAAIN,iBAAK,CAAC;IAC/CC,MAAM;IACNC,MAAM;AACR;AAEO,MAAMJ;;;;;IACXS,OAAsB;IAEtBC,GAAW;IAEX,YACEC,aAA6B,EAC7B,AAAiBC,aAA4B,EAC7C,AAAiBC,aAA4B,EAC7C,AAAiBC,WAAyB,EAC1C,AAAiBC,aAA6B,CAC9C;aAJiBH,gBAAAA;aACAC,gBAAAA;aACAC,cAAAA;aACAC,gBAAAA;QAEjB,IAAI,CAACN,MAAM,GAAGE,cAAcX,gBAAgBG,IAAI;IAClD;IAEAa,aAAaC,UAAsB,EAAE;QACnC,IAAI,CAACP,EAAE,GAAG,IAAIQ,gBAAM,CAACD,YAAY;YAAEE,MAAM;gBAAEC,QAAQ;YAAI;QAAE;QACzD,MAAMC,OAAOC,IAAAA,+BAAqB,EAChC,IAAI,CAACT,aAAa,EAClB,IAAI,CAACE,aAAa,EAClB,CAACQ,QAAkBA,MAAMC,SAAS,CAACC,IAAI,CAACC,KAAK;QAE/C,IAAI,CAAChB,EAAE,CAACiB,GAAG,CAACC,IAAAA,6BAAS,EAAC,IAAI,CAACf,aAAa,EAAEQ,MAAM,IAAI,CAACZ,MAAM,EAAEoB,IAAAA,4BAAkB,EAAC,IAAI,CAACf,WAAW;QAChG,IAAI,CAACJ,EAAE,CAACoB,EAAE,CAAC,cAAc,CAACC,SAAW,IAAI,CAACC,SAAS,CAACC,IAAI,CAAC,IAAI,EAAEF;IACjE;IAEAC,UAAUD,MAAc,EAAE;QACxB,IAAI,CAACtB,MAAM,CAACyB,KAAK,CAAC,6BAA6B;YAAEC,UAAUJ,OAAOK,EAAE;QAAC;QACrE,IAAI,CAACxB,aAAa,CAACyB,IAAI,CAACC,sCAAsB,EAAEP,OAAOK,EAAE;QACzDnC,wBAAwBsC,GAAG;QAE3BR,OAAOD,EAAE,CAAC,cAAc;YACtB,IAAI,CAACrB,MAAM,CAACyB,KAAK,CAAC,gCAAgC;gBAAEC,UAAUJ,OAAOK,EAAE;YAAC;YACxEnC,wBAAwBuC,GAAG,CAAC;YAC5BnC,2BAA2BkC,GAAG;QAChC;IACF;IAEAE,KAAQC,KAAa,EAAEC,IAAO,EAAE;QAC9B,IAAI,CAAC,IAAI,CAACjC,EAAE,EAAE;YACZ,IAAI,CAACD,MAAM,CAACyB,KAAK,CAAC,CAAC,gBAAgB,EAAEQ,MAAM,wCAAwC,CAAC;YACpF;QACF;QAEA,IAAI,CAAChC,EAAE,CAAC2B,IAAI,CAACK,OAAOC;QACpBpC,4BAA4BgC,GAAG;QAE/B,MAAMK,UAAUC,KAAKC,SAAS,CAACH;QAC/B,MAAMI,cAAcC,OAAOC,UAAU,CAACL;QACtCpC,+BAA+B0C,GAAG,CAACH;IACrC;AACF;AAEO,MAAMhD,cAAc;IACzBoD,QAAQ;AACV"}
@@ -16,7 +16,6 @@ class BootTask {
16
16
  settingsStore;
17
17
  multerService;
18
18
  printerSocketStore;
19
- printerFilesStore;
20
19
  permissionService;
21
20
  roleService;
22
21
  userService;
@@ -24,13 +23,14 @@ class BootTask {
24
23
  configService;
25
24
  typeormService;
26
25
  printerThumbnailCache;
26
+ printFileDownloaderService;
27
+ fileStorageService;
27
28
  logger;
28
- constructor(loggerFactory, taskManagerService, settingsStore, multerService, printerSocketStore, printerFilesStore, permissionService, roleService, userService, floorStore, configService, typeormService, printerThumbnailCache){
29
+ constructor(loggerFactory, taskManagerService, settingsStore, multerService, printerSocketStore, permissionService, roleService, userService, floorStore, configService, typeormService, printerThumbnailCache, printFileDownloaderService, fileStorageService){
29
30
  this.taskManagerService = taskManagerService;
30
31
  this.settingsStore = settingsStore;
31
32
  this.multerService = multerService;
32
33
  this.printerSocketStore = printerSocketStore;
33
- this.printerFilesStore = printerFilesStore;
34
34
  this.permissionService = permissionService;
35
35
  this.roleService = roleService;
36
36
  this.userService = userService;
@@ -38,6 +38,8 @@ class BootTask {
38
38
  this.configService = configService;
39
39
  this.typeormService = typeormService;
40
40
  this.printerThumbnailCache = printerThumbnailCache;
41
+ this.printFileDownloaderService = printFileDownloaderService;
42
+ this.fileStorageService = fileStorageService;
41
43
  this.logger = loggerFactory(BootTask.name);
42
44
  }
43
45
  async runOnce() {
@@ -47,6 +49,8 @@ class BootTask {
47
49
  }
48
50
  async run() {
49
51
  await this.typeormService.createConnection();
52
+ this.logger.log("Ensuring file storage directories exist");
53
+ await this.fileStorageService.ensureStorageDirectories();
50
54
  this.logger.log("Loading and synchronizing Server Settings");
51
55
  await this.settingsStore.loadSettings();
52
56
  this.logger.log("Synchronizing user permission and roles definition");
@@ -78,8 +82,6 @@ class BootTask {
78
82
  this.multerService.clearUploadsFolder();
79
83
  this.logger.log("Loading printer sockets");
80
84
  await this.printerSocketStore.loadPrinterSockets();
81
- this.logger.log("Loading files store");
82
- await this.printerFilesStore.loadFilesStore();
83
85
  this.logger.log("Loading floor store");
84
86
  await this.floorStore.loadStore();
85
87
  this.logger.log("Loading printer thumbnail cache");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tasks/boot.task.ts"],"names":["BootTask","logger","loggerFactory","taskManagerService","settingsStore","multerService","printerSocketStore","printerFilesStore","permissionService","roleService","userService","floorStore","configService","typeormService","printerThumbnailCache","name","runOnce","registerJobOrTask","ServerTasks","SERVER_BOOT_TASK","log","run","createConnection","loadSettings","syncPermissions","syncRoles","isDemoMode","warn","AppConstants","OVERRIDE_IS_DEMO_MODE","createOrUpdateDemoAccount","setLoginRequired","setRegistrationEnabled","loginRequired","get","OVERRIDE_LOGIN_REQUIRED","registrationEnabled","OVERRIDE_REGISTRATION_ENABLED","overrideJwtSecret","OVERRIDE_JWT_SECRET","overrideJwtExpiresIn","OVERRIDE_JWT_EXPIRES_IN","persistOptionalCredentialSettings","clearUploadsFolder","loadPrinterSockets","loadFilesStore","loadStore","loadCache","length","getAllValues","process","env","SAFEMODE_ENABLED","BOOT_TASKS","forEach","task","disableJob","DITokens","bootTask","demoUsername","OVERRIDE_DEMO_USERNAME","DEFAULT_DEMO_USERNAME","demoPassword","OVERRIDE_DEMO_PASSWORD","DEFAULT_DEMO_PASSWORD","demoRole","OVERRIDE_DEMO_ROLE","DEFAULT_DEMO_ROLE","demoUserId","getDemoUserId","register","username","password","isDemoUser","isVerified","isRootUser","needsPasswordChange","roles","setVerifiedById","setIsRootUserById","updatePasswordUnsafeByUsername","setUserRoles"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/tasks/boot.task.ts"],"names":["BootTask","logger","loggerFactory","taskManagerService","settingsStore","multerService","printerSocketStore","permissionService","roleService","userService","floorStore","configService","typeormService","printerThumbnailCache","printFileDownloaderService","fileStorageService","name","runOnce","registerJobOrTask","ServerTasks","SERVER_BOOT_TASK","log","run","createConnection","ensureStorageDirectories","loadSettings","syncPermissions","syncRoles","isDemoMode","warn","AppConstants","OVERRIDE_IS_DEMO_MODE","createOrUpdateDemoAccount","setLoginRequired","setRegistrationEnabled","loginRequired","get","OVERRIDE_LOGIN_REQUIRED","registrationEnabled","OVERRIDE_REGISTRATION_ENABLED","overrideJwtSecret","OVERRIDE_JWT_SECRET","overrideJwtExpiresIn","OVERRIDE_JWT_EXPIRES_IN","persistOptionalCredentialSettings","clearUploadsFolder","loadPrinterSockets","loadStore","loadCache","length","getAllValues","process","env","SAFEMODE_ENABLED","BOOT_TASKS","forEach","task","disableJob","DITokens","bootTask","demoUsername","OVERRIDE_DEMO_USERNAME","DEFAULT_DEMO_USERNAME","demoPassword","OVERRIDE_DEMO_PASSWORD","DEFAULT_DEMO_PASSWORD","demoRole","OVERRIDE_DEMO_ROLE","DEFAULT_DEMO_ROLE","demoUserId","getDemoUserId","register","username","password","isDemoUser","isVerified","isRootUser","needsPasswordChange","roles","setVerifiedById","setIsRootUserById","updatePasswordUnsafeByUsername","setUserRoles"],"mappings":"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"}