@fdm-monster/server 2.0.0-rc1 → 2.0.1

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 (230) 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 +53 -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 +7 -20
  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 +319 -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 +44 -44
  57. package/dist/controllers/settings.controller.js.map +1 -1
  58. package/dist/controllers/slicer-compat.controller.js +220 -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/middleware/slicer-api-key.middleware.js +29 -0
  85. package/dist/middleware/slicer-api-key.middleware.js.map +1 -0
  86. package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js +186 -0
  87. package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js.map +1 -0
  88. package/dist/migrations/1767279607392-DropCustomGcode.js +31 -0
  89. package/dist/migrations/1767279607392-DropCustomGcode.js.map +1 -0
  90. package/dist/migrations/1767291804417-DropPrintCompletions.js +37 -0
  91. package/dist/migrations/1767291804417-DropPrintCompletions.js.map +1 -0
  92. package/dist/migrations/1767352862576-DropSettingsFileClean.js +88 -0
  93. package/dist/migrations/1767352862576-DropSettingsFileClean.js.map +1 -0
  94. package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js +107 -0
  95. package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js.map +1 -0
  96. package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js +62 -0
  97. package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js.map +1 -0
  98. package/dist/migrations/1767432108916-RenameGroupToTag.js +86 -0
  99. package/dist/migrations/1767432108916-RenameGroupToTag.js.map +1 -0
  100. package/dist/migrations/1767451444137-AddPrintJob.js +207 -0
  101. package/dist/migrations/1767451444137-AddPrintJob.js.map +1 -0
  102. package/dist/server.constants.js +9 -9
  103. package/dist/server.constants.js.map +1 -1
  104. package/dist/server.host.js +24 -32
  105. package/dist/server.host.js.map +1 -1
  106. package/dist/services/bambu/bambu-ftp.adapter.js +1 -1
  107. package/dist/services/bambu/bambu-ftp.adapter.js.map +1 -1
  108. package/dist/services/bambu/bambu-mqtt.adapter.js +73 -76
  109. package/dist/services/bambu/bambu-mqtt.adapter.js.map +1 -1
  110. package/dist/services/core/batch-call.service.js +0 -25
  111. package/dist/services/core/batch-call.service.js.map +1 -1
  112. package/dist/services/core/multer.service.js +5 -9
  113. package/dist/services/core/multer.service.js.map +1 -1
  114. package/dist/services/core/yaml.service.js +231 -156
  115. package/dist/services/core/yaml.service.js.map +1 -1
  116. package/dist/services/file-analysis.service.js +146 -0
  117. package/dist/services/file-analysis.service.js.map +1 -0
  118. package/dist/services/file-storage.service.js +387 -0
  119. package/dist/services/file-storage.service.js.map +1 -0
  120. package/dist/services/interfaces/floor.dto.js +3 -3
  121. package/dist/services/interfaces/floor.dto.js.map +1 -1
  122. package/dist/services/interfaces/{printer-group.dto.js → printer-tag.dto.js} +9 -8
  123. package/dist/services/interfaces/printer-tag.dto.js.map +1 -0
  124. package/dist/services/interfaces/{print-completion.interface.js → printer-tag.service.interface.js} +1 -1
  125. package/dist/services/interfaces/{printer-group.service.interface.js.map → printer-tag.service.interface.js.map} +1 -1
  126. package/dist/services/interfaces/settings.dto.js +0 -1
  127. package/dist/services/interfaces/settings.dto.js.map +1 -1
  128. package/dist/services/interfaces/{group.dto.js → tag.dto.js} +1 -1
  129. package/dist/services/interfaces/tag.dto.js.map +1 -0
  130. package/dist/services/octoprint/dto/files/gcode-analysis.dto.js.map +1 -0
  131. package/dist/services/octoprint/octoprint-api.routes.js +0 -7
  132. package/dist/services/octoprint/octoprint-api.routes.js.map +1 -1
  133. package/dist/services/octoprint/octoprint.client.js +0 -4
  134. package/dist/services/octoprint/octoprint.client.js.map +1 -1
  135. package/dist/services/orm/floor.service.js +9 -16
  136. package/dist/services/orm/floor.service.js.map +1 -1
  137. package/dist/services/orm/print-job.service.js +539 -0
  138. package/dist/services/orm/print-job.service.js.map +1 -0
  139. package/dist/services/orm/printer-tag.service.js +120 -0
  140. package/dist/services/orm/printer-tag.service.js.map +1 -0
  141. package/dist/services/orm/settings.service.js +5 -6
  142. package/dist/services/orm/settings.service.js.map +1 -1
  143. package/dist/services/print-file-downloader.service.js +169 -0
  144. package/dist/services/print-file-downloader.service.js.map +1 -0
  145. package/dist/services/print-queue.service.js +268 -0
  146. package/dist/services/print-queue.service.js.map +1 -0
  147. package/dist/services/prusa-link/prusa-link-http-polling.adapter.js +1 -3
  148. package/dist/services/prusa-link/prusa-link-http-polling.adapter.js.map +1 -1
  149. package/dist/services/validators/floor-service.validation.js +10 -10
  150. package/dist/services/validators/floor-service.validation.js.map +1 -1
  151. package/dist/services/validators/print-job.validation.js +31 -0
  152. package/dist/services/validators/print-job.validation.js.map +1 -0
  153. package/dist/services/validators/settings-service.validation.js +21 -24
  154. package/dist/services/validators/settings-service.validation.js.map +1 -1
  155. package/dist/services/validators/yaml-service.validation.js +9 -13
  156. package/dist/services/validators/yaml-service.validation.js.map +1 -1
  157. package/dist/shared/load-controllers.js +2 -1
  158. package/dist/shared/load-controllers.js.map +1 -1
  159. package/dist/shared/runtime-settings.migration.js +9 -9
  160. package/dist/shared/runtime-settings.migration.js.map +1 -1
  161. package/dist/state/floor.store.js +2 -9
  162. package/dist/state/floor.store.js.map +1 -1
  163. package/dist/state/printer-events.cache.js +179 -19
  164. package/dist/state/printer-events.cache.js.map +1 -1
  165. package/dist/state/printer-thumbnail.cache.js +98 -183
  166. package/dist/state/printer-thumbnail.cache.js.map +1 -1
  167. package/dist/state/settings.store.js +39 -37
  168. package/dist/state/settings.store.js.map +1 -1
  169. package/dist/state/socket-io.gateway.js +1 -1
  170. package/dist/state/socket-io.gateway.js.map +1 -1
  171. package/dist/tasks/boot.task.js +7 -5
  172. package/dist/tasks/boot.task.js.map +1 -1
  173. package/dist/tasks/print-job-analysis.task.js +116 -0
  174. package/dist/tasks/print-job-analysis.task.js.map +1 -0
  175. package/dist/tasks/printer-files-load.task.js +29 -0
  176. package/dist/tasks/printer-files-load.task.js.map +1 -0
  177. package/dist/tasks/socketio.task.js +1 -1
  178. package/dist/tasks/socketio.task.js.map +1 -1
  179. package/dist/tasks.js +3 -2
  180. package/dist/tasks.js.map +1 -1
  181. package/dist/utils/parsers/3mf.parser.js +337 -0
  182. package/dist/utils/parsers/3mf.parser.js.map +1 -0
  183. package/dist/utils/parsers/bgcode.parser.js +223 -0
  184. package/dist/utils/parsers/bgcode.parser.js.map +1 -0
  185. package/dist/utils/parsers/gcode.parser.js +254 -0
  186. package/dist/utils/parsers/gcode.parser.js.map +1 -0
  187. package/dist/utils/swagger/decorators.js +39 -0
  188. package/dist/utils/swagger/decorators.js.map +1 -0
  189. package/dist/utils/swagger/generator.js +196 -0
  190. package/dist/utils/swagger/generator.js.map +1 -0
  191. package/dist/utils/swagger/swagger.js +93 -0
  192. package/dist/utils/swagger/swagger.js.map +1 -0
  193. package/package.json +21 -17
  194. package/dist/controllers/custom-gcode.controller.js +0 -147
  195. package/dist/controllers/custom-gcode.controller.js.map +0 -1
  196. package/dist/controllers/print-completion.controller.js +0 -118
  197. package/dist/controllers/print-completion.controller.js.map +0 -1
  198. package/dist/controllers/printer-group.controller.js.map +0 -1
  199. package/dist/entities/custom-gcode.entity.js +0 -49
  200. package/dist/entities/custom-gcode.entity.js.map +0 -1
  201. package/dist/entities/group.entity.js.map +0 -1
  202. package/dist/entities/print-completion.entity.js +0 -90
  203. package/dist/entities/print-completion.entity.js.map +0 -1
  204. package/dist/entities/printer-group.entity.js.map +0 -1
  205. package/dist/services/interfaces/custom-gcode.dto.js +0 -18
  206. package/dist/services/interfaces/custom-gcode.dto.js.map +0 -1
  207. package/dist/services/interfaces/custom-gcode.service.interface.js +0 -6
  208. package/dist/services/interfaces/custom-gcode.service.interface.js.map +0 -1
  209. package/dist/services/interfaces/gcode-analysis.dto.js.map +0 -1
  210. package/dist/services/interfaces/group.dto.js.map +0 -1
  211. package/dist/services/interfaces/print-completion-context.dto.js +0 -6
  212. package/dist/services/interfaces/print-completion-context.dto.js.map +0 -1
  213. package/dist/services/interfaces/print-completion.dto.js +0 -38
  214. package/dist/services/interfaces/print-completion.dto.js.map +0 -1
  215. package/dist/services/interfaces/print-completion.interface.js.map +0 -1
  216. package/dist/services/interfaces/printer-group.dto.js.map +0 -1
  217. package/dist/services/interfaces/printer-group.service.interface.js +0 -6
  218. package/dist/services/orm/custom-gcode.service.js +0 -42
  219. package/dist/services/orm/custom-gcode.service.js.map +0 -1
  220. package/dist/services/orm/print-completion.service.js +0 -87
  221. package/dist/services/orm/print-completion.service.js.map +0 -1
  222. package/dist/services/orm/print-completion.shared.js +0 -59
  223. package/dist/services/orm/print-completion.shared.js.map +0 -1
  224. package/dist/services/orm/printer-group.service.js +0 -109
  225. package/dist/services/orm/printer-group.service.js.map +0 -1
  226. package/dist/tasks/print-completion.socketio.task.js +0 -91
  227. package/dist/tasks/print-completion.socketio.task.js.map +0 -1
  228. package/dist/tasks/printer-file-clean.task.js +0 -74
  229. package/dist/tasks/printer-file-clean.task.js.map +0 -1
  230. /package/dist/services/{interfaces → octoprint/dto/files}/gcode-analysis.dto.js +0 -0
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "FileAnalysisService", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return FileAnalysisService;
9
+ }
10
+ });
11
+ const _gcodeparser = require("../utils/parsers/gcode.parser");
12
+ const _3mfparser = require("../utils/parsers/3mf.parser");
13
+ const _bgcodeparser = require("../utils/parsers/bgcode.parser");
14
+ const _nodepath = require("node:path");
15
+ const _promises = require("node:fs/promises");
16
+ class FileAnalysisService {
17
+ logger;
18
+ FILE_FORMATS = {
19
+ GCODE: "gcode",
20
+ THREE_MF: "3mf",
21
+ BGCODE: "bgcode"
22
+ };
23
+ EXTENSIONS = {
24
+ THREE_MF: ".3mf",
25
+ BGCODE: ".bgcode",
26
+ GCODE: ".gcode",
27
+ GCODE_SHORT: ".g",
28
+ GCODE_ALT: ".gco",
29
+ GCODE_THREE_MF: ".gcode.3mf"
30
+ };
31
+ gcodeParser;
32
+ threemfParser;
33
+ bgcodeParser;
34
+ constructor(loggerFactory){
35
+ this.logger = loggerFactory(FileAnalysisService.name);
36
+ this.gcodeParser = new _gcodeparser.GCodeParser();
37
+ this.threemfParser = new _3mfparser.ThreeMFParser();
38
+ this.bgcodeParser = new _bgcodeparser.BGCodeParser();
39
+ this.logger.log("File analysis service initialized with all parsers");
40
+ }
41
+ async analyzeFile(filePath) {
42
+ const ext = (0, _nodepath.extname)(filePath).toLowerCase();
43
+ const fileFormat = this.getFileFormat(ext, filePath);
44
+ this.logger.log(`Analyzing file: ${(0, _nodepath.basename)(filePath)} (format: ${fileFormat}, ext: ${ext})`);
45
+ let result;
46
+ try {
47
+ switch(fileFormat){
48
+ case this.FILE_FORMATS.GCODE:
49
+ result = await this.analyzeGCode(filePath);
50
+ break;
51
+ case this.FILE_FORMATS.THREE_MF:
52
+ result = await this.analyze3MF(filePath);
53
+ break;
54
+ case this.FILE_FORMATS.BGCODE:
55
+ result = await this.analyzeBGCode(filePath);
56
+ break;
57
+ default:
58
+ throw new Error(`Unsupported file format: ${fileFormat}`);
59
+ }
60
+ const thumbnails = this.extractThumbnails(result);
61
+ return {
62
+ metadata: result.normalized,
63
+ thumbnails
64
+ };
65
+ } catch (error) {
66
+ this.logger.error(`Failed to analyze file ${filePath} (ext: "${ext}"): ${error}`);
67
+ throw error;
68
+ }
69
+ }
70
+ async analyzeMultiPlate3MF(filePath) {
71
+ const result = await this.analyze3MF(filePath);
72
+ if (!result.normalized.isMultiPlate || !result.plates) {
73
+ return [
74
+ {
75
+ metadata: result.normalized,
76
+ thumbnails: this.extractThumbnails(result)
77
+ }
78
+ ];
79
+ }
80
+ return result.plates.map((plate)=>({
81
+ metadata: {
82
+ ...result.normalized,
83
+ plateNumber: plate.plateNumber,
84
+ gcodePrintTimeSeconds: plate.gcodePrintTimeSeconds,
85
+ filamentUsedGrams: plate.filamentUsedGrams,
86
+ totalLayers: plate.totalLayers
87
+ },
88
+ thumbnails: plate.thumbnails?.map((t)=>({
89
+ width: t.width || 0,
90
+ height: t.height || 0,
91
+ format: t.type || t.format || "PNG"
92
+ })) || []
93
+ }));
94
+ }
95
+ async analyzeGCode(filePath) {
96
+ return await this.gcodeParser.parse(filePath);
97
+ }
98
+ async analyze3MF(filePath) {
99
+ return await this.threemfParser.parse(filePath);
100
+ }
101
+ async analyzeBGCode(filePath) {
102
+ return await this.bgcodeParser.parse(filePath);
103
+ }
104
+ extractThumbnails(result) {
105
+ const thumbnails = [];
106
+ if (result.raw._thumbnails) {
107
+ for (const thumb of result.raw._thumbnails){
108
+ thumbnails.push({
109
+ width: thumb.width,
110
+ height: thumb.height,
111
+ format: thumb.format,
112
+ data: thumb.data
113
+ });
114
+ }
115
+ }
116
+ return thumbnails;
117
+ }
118
+ getFileFormat(ext, filePath) {
119
+ const lowerPath = filePath.toLowerCase();
120
+ if (lowerPath.endsWith(this.EXTENSIONS.GCODE_THREE_MF) || lowerPath.endsWith(this.EXTENSIONS.THREE_MF)) {
121
+ return this.FILE_FORMATS.THREE_MF;
122
+ }
123
+ if (lowerPath.endsWith(this.EXTENSIONS.BGCODE)) {
124
+ return this.FILE_FORMATS.BGCODE;
125
+ }
126
+ if (lowerPath.endsWith(this.EXTENSIONS.GCODE) || lowerPath.endsWith(this.EXTENSIONS.GCODE_SHORT) || lowerPath.endsWith(this.EXTENSIONS.GCODE_ALT)) {
127
+ return this.FILE_FORMATS.GCODE;
128
+ }
129
+ if (ext === this.EXTENSIONS.THREE_MF) return this.FILE_FORMATS.THREE_MF;
130
+ if (ext === this.EXTENSIONS.BGCODE) return this.FILE_FORMATS.BGCODE;
131
+ if (ext === this.EXTENSIONS.GCODE || ext === this.EXTENSIONS.GCODE_SHORT || ext === this.EXTENSIONS.GCODE_ALT) {
132
+ return this.FILE_FORMATS.GCODE;
133
+ }
134
+ throw new Error(`Unknown file extension: "${ext}" (path: "${filePath}")`);
135
+ }
136
+ async needsAnalysis(filePath) {
137
+ try {
138
+ await (0, _promises.access)(filePath);
139
+ return true;
140
+ } catch {
141
+ return false;
142
+ }
143
+ }
144
+ }
145
+
146
+ //# sourceMappingURL=file-analysis.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/services/file-analysis.service.ts"],"names":["FileAnalysisService","logger","FILE_FORMATS","GCODE","THREE_MF","BGCODE","EXTENSIONS","GCODE_SHORT","GCODE_ALT","GCODE_THREE_MF","gcodeParser","threemfParser","bgcodeParser","loggerFactory","name","GCodeParser","ThreeMFParser","BGCodeParser","log","analyzeFile","filePath","ext","extname","toLowerCase","fileFormat","getFileFormat","basename","result","analyzeGCode","analyze3MF","analyzeBGCode","Error","thumbnails","extractThumbnails","metadata","normalized","error","analyzeMultiPlate3MF","isMultiPlate","plates","map","plate","plateNumber","gcodePrintTimeSeconds","filamentUsedGrams","totalLayers","t","width","height","format","type","parse","raw","_thumbnails","thumb","push","data","lowerPath","endsWith","needsAnalysis","access"],"mappings":";;;;+BAmBaA;;;eAAAA;;;6BAhBe;2BACE;8BACD;0BACK;0BACX;AAYhB,MAAMA;IACMC,OAAsB;IAGtBC,eAAe;QAC9BC,OAAO;QACPC,UAAU;QACVC,QAAQ;IACV,EAAE;IAGeC,aAAa;QAC5BF,UAAU;QACVC,QAAQ;QACRF,OAAO;QACPI,aAAa;QACbC,WAAW;QACXC,gBAAgB;IAClB,EAAE;IAGeC,YAAyB;IACzBC,cAA6B;IAC7BC,aAA2B;IAE5C,YAAYC,aAA6B,CAAE;QACzC,IAAI,CAACZ,MAAM,GAAGY,cAAcb,oBAAoBc,IAAI;QACpD,IAAI,CAACJ,WAAW,GAAG,IAAIK,wBAAW;QAClC,IAAI,CAACJ,aAAa,GAAG,IAAIK,wBAAa;QACtC,IAAI,CAACJ,YAAY,GAAG,IAAIK,0BAAY;QACpC,IAAI,CAAChB,MAAM,CAACiB,GAAG,CAAC;IAClB;IAKA,MAAMC,YAAYC,QAAgB,EAG/B;QACD,MAAMC,MAAMC,IAAAA,iBAAO,EAACF,UAAUG,WAAW;QACzC,MAAMC,aAAa,IAAI,CAACC,aAAa,CAACJ,KAAKD;QAE3C,IAAI,CAACnB,MAAM,CAACiB,GAAG,CAAC,CAAC,gBAAgB,EAAEQ,IAAAA,kBAAQ,EAACN,UAAU,UAAU,EAAEI,WAAW,OAAO,EAAEH,IAAI,CAAC,CAAC;QAE5F,IAAIM;QAEJ,IAAI;YACF,OAAQH;gBACN,KAAK,IAAI,CAACtB,YAAY,CAACC,KAAK;oBAC1BwB,SAAS,MAAM,IAAI,CAACC,YAAY,CAACR;oBACjC;gBACF,KAAK,IAAI,CAAClB,YAAY,CAACE,QAAQ;oBAC7BuB,SAAS,MAAM,IAAI,CAACE,UAAU,CAACT;oBAC/B;gBACF,KAAK,IAAI,CAAClB,YAAY,CAACG,MAAM;oBAC3BsB,SAAS,MAAM,IAAI,CAACG,aAAa,CAACV;oBAClC;gBACF;oBACE,MAAM,IAAIW,MAAM,CAAC,yBAAyB,EAAEP,YAAY;YAC5D;YAGA,MAAMQ,aAAa,IAAI,CAACC,iBAAiB,CAACN;YAE1C,OAAO;gBACLO,UAAUP,OAAOQ,UAAU;gBAC3BH;YACF;QACF,EAAE,OAAOI,OAAO;YACd,IAAI,CAACnC,MAAM,CAACmC,KAAK,CAAC,CAAC,uBAAuB,EAAEhB,SAAS,QAAQ,EAAEC,IAAI,IAAI,EAAEe,OAAO;YAChF,MAAMA;QACR;IACF;IAMA,MAAMC,qBAAqBjB,QAAgB,EAGvC;QACF,MAAMO,SAAS,MAAM,IAAI,CAACE,UAAU,CAACT;QAErC,IAAI,CAACO,OAAOQ,UAAU,CAACG,YAAY,IAAI,CAACX,OAAOY,MAAM,EAAE;YAErD,OAAO;gBAAC;oBACNL,UAAUP,OAAOQ,UAAU;oBAC3BH,YAAY,IAAI,CAACC,iBAAiB,CAACN;gBACrC;aAAE;QACJ;QAGA,OAAOA,OAAOY,MAAM,CAACC,GAAG,CAAC,CAACC,QAAW,CAAA;gBACnCP,UAAU;oBACR,GAAGP,OAAOQ,UAAU;oBACpBO,aAAaD,MAAMC,WAAW;oBAC9BC,uBAAuBF,MAAME,qBAAqB;oBAClDC,mBAAmBH,MAAMG,iBAAiB;oBAC1CC,aAAaJ,MAAMI,WAAW;gBAChC;gBACAb,YAAYS,MAAMT,UAAU,EAAEQ,IAAI,CAACM,IAAY,CAAA;wBAC7CC,OAAOD,EAAEC,KAAK,IAAI;wBAClBC,QAAQF,EAAEE,MAAM,IAAI;wBACpBC,QAAQH,EAAEI,IAAI,IAAIJ,EAAEG,MAAM,IAAI;oBAChC,CAAA,MAAO,EAAE;YACX,CAAA;IACF;IAEA,MAAcrB,aAAaR,QAAgB,EAAyB;QAClE,OAAO,MAAM,IAAI,CAACV,WAAW,CAACyC,KAAK,CAAC/B;IACtC;IAEA,MAAcS,WAAWT,QAAgB,EAAyB;QAChE,OAAO,MAAM,IAAI,CAACT,aAAa,CAACwC,KAAK,CAAC/B;IACxC;IAEA,MAAcU,cAAcV,QAAgB,EAAyB;QACnE,OAAO,MAAM,IAAI,CAACR,YAAY,CAACuC,KAAK,CAAC/B;IACvC;IAEQa,kBAAkBN,MAAoB,EAAmB;QAC/D,MAAMK,aAA8B,EAAE;QAEtC,IAAIL,OAAOyB,GAAG,CAACC,WAAW,EAAE;YAC1B,KAAK,MAAMC,SAAS3B,OAAOyB,GAAG,CAACC,WAAW,CAAE;gBAC1CrB,WAAWuB,IAAI,CAAC;oBACdR,OAAOO,MAAMP,KAAK;oBAClBC,QAAQM,MAAMN,MAAM;oBACpBC,QAAQK,MAAML,MAAM;oBACpBO,MAAMF,MAAME,IAAI;gBAClB;YACF;QACF;QAEA,OAAOxB;IACT;IAEQP,cAAcJ,GAAW,EAAED,QAAgB,EAAkB;QAEnE,MAAMqC,YAAYrC,SAASG,WAAW;QACtC,IAAIkC,UAAUC,QAAQ,CAAC,IAAI,CAACpD,UAAU,CAACG,cAAc,KAAKgD,UAAUC,QAAQ,CAAC,IAAI,CAACpD,UAAU,CAACF,QAAQ,GAAG;YACtG,OAAO,IAAI,CAACF,YAAY,CAACE,QAAQ;QACnC;QACA,IAAIqD,UAAUC,QAAQ,CAAC,IAAI,CAACpD,UAAU,CAACD,MAAM,GAAG;YAC9C,OAAO,IAAI,CAACH,YAAY,CAACG,MAAM;QACjC;QACA,IAAIoD,UAAUC,QAAQ,CAAC,IAAI,CAACpD,UAAU,CAACH,KAAK,KAAKsD,UAAUC,QAAQ,CAAC,IAAI,CAACpD,UAAU,CAACC,WAAW,KAAKkD,UAAUC,QAAQ,CAAC,IAAI,CAACpD,UAAU,CAACE,SAAS,GAAG;YACjJ,OAAO,IAAI,CAACN,YAAY,CAACC,KAAK;QAChC;QAGA,IAAIkB,QAAQ,IAAI,CAACf,UAAU,CAACF,QAAQ,EAAE,OAAO,IAAI,CAACF,YAAY,CAACE,QAAQ;QACvE,IAAIiB,QAAQ,IAAI,CAACf,UAAU,CAACD,MAAM,EAAE,OAAO,IAAI,CAACH,YAAY,CAACG,MAAM;QACnE,IAAIgB,QAAQ,IAAI,CAACf,UAAU,CAACH,KAAK,IAAIkB,QAAQ,IAAI,CAACf,UAAU,CAACC,WAAW,IAAIc,QAAQ,IAAI,CAACf,UAAU,CAACE,SAAS,EAAE;YAC7G,OAAO,IAAI,CAACN,YAAY,CAACC,KAAK;QAChC;QAEA,MAAM,IAAI4B,MAAM,CAAC,yBAAyB,EAAEV,IAAI,UAAU,EAAED,SAAS,EAAE,CAAC;IAC1E;IAKA,MAAMuC,cAAcvC,QAAgB,EAAoB;QACtD,IAAI;YACF,MAAMwC,IAAAA,gBAAM,EAACxC;YACb,OAAO;QACT,EAAE,OAAM;YACN,OAAO;QACT;IACF;AACF"}
@@ -0,0 +1,387 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "FileStorageService", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return FileStorageService;
9
+ }
10
+ });
11
+ const _printjobentity = require("../entities/print-job.entity");
12
+ const _serverconstants = require("../server.constants");
13
+ const _fsutils = require("../utils/fs.utils");
14
+ const _nodepath = /*#__PURE__*/ _interop_require_wildcard(require("node:path"));
15
+ const _promises = require("node:fs/promises");
16
+ const _nodecrypto = require("node:crypto");
17
+ const _nodefs = require("node:fs");
18
+ function _getRequireWildcardCache(nodeInterop) {
19
+ if (typeof WeakMap !== "function") return null;
20
+ var cacheBabelInterop = new WeakMap();
21
+ var cacheNodeInterop = new WeakMap();
22
+ return (_getRequireWildcardCache = function(nodeInterop) {
23
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
24
+ })(nodeInterop);
25
+ }
26
+ function _interop_require_wildcard(obj, nodeInterop) {
27
+ if (!nodeInterop && obj && obj.__esModule) {
28
+ return obj;
29
+ }
30
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
31
+ return {
32
+ default: obj
33
+ };
34
+ }
35
+ var cache = _getRequireWildcardCache(nodeInterop);
36
+ if (cache && cache.has(obj)) {
37
+ return cache.get(obj);
38
+ }
39
+ var newObj = {
40
+ __proto__: null
41
+ };
42
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
43
+ for(var key in obj){
44
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
45
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
46
+ if (desc && (desc.get || desc.set)) {
47
+ Object.defineProperty(newObj, key, desc);
48
+ } else {
49
+ newObj[key] = obj[key];
50
+ }
51
+ }
52
+ }
53
+ newObj.default = obj;
54
+ if (cache) {
55
+ cache.set(obj, newObj);
56
+ }
57
+ return newObj;
58
+ }
59
+ class FileStorageService {
60
+ printJobRepository;
61
+ logger;
62
+ storageBasePath;
63
+ STORAGE_SUBDIRS = [
64
+ "gcode",
65
+ "3mf",
66
+ "bgcode"
67
+ ];
68
+ constructor(loggerFactory, typeormService){
69
+ this.printJobRepository = typeormService.getDataSource().getRepository(_printjobentity.PrintJob);
70
+ this.logger = loggerFactory(FileStorageService.name);
71
+ this.storageBasePath = (0, _nodepath.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultPrintFilesStorage);
72
+ }
73
+ async ensureStorageDirectories() {
74
+ try {
75
+ await (0, _promises.mkdir)(this.storageBasePath, {
76
+ recursive: true
77
+ });
78
+ for (const subdir of this.STORAGE_SUBDIRS){
79
+ await (0, _promises.mkdir)((0, _nodepath.join)(this.storageBasePath, subdir), {
80
+ recursive: true
81
+ });
82
+ }
83
+ } catch (error) {
84
+ this.logger.error("Failed to create storage directories", error);
85
+ }
86
+ }
87
+ readFile(fileStorageId) {
88
+ const filePath = this.getFilePath(fileStorageId);
89
+ return (0, _nodefs.readFileSync)(filePath);
90
+ }
91
+ async saveFile(file, fileHash) {
92
+ const fileExt = (0, _nodepath.extname)(file.originalname).toLowerCase();
93
+ let fileId;
94
+ if (fileHash) {
95
+ const nameHash = (0, _nodecrypto.createHash)('sha256').update(fileHash + file.originalname).digest('hex').substring(0, 32);
96
+ fileId = `${nameHash.substring(0, 8)}-${nameHash.substring(8, 12)}-${nameHash.substring(12, 16)}-${nameHash.substring(16, 20)}-${nameHash.substring(20, 32)}`;
97
+ } else {
98
+ fileId = crypto.randomUUID();
99
+ }
100
+ let subdir = "gcode";
101
+ if (fileExt === ".3mf" || file.originalname.includes(".gcode.3mf")) {
102
+ subdir = "3mf";
103
+ } else if (fileExt === ".bgcode") {
104
+ subdir = "bgcode";
105
+ }
106
+ const targetDir = (0, _nodepath.join)(this.storageBasePath, subdir);
107
+ const targetPath = (0, _nodepath.join)(targetDir, `${fileId}${fileExt}`);
108
+ if (file.path) {
109
+ await (0, _promises.rename)(file.path, targetPath);
110
+ } else if (file.buffer) {
111
+ await (0, _promises.writeFile)(targetPath, file.buffer);
112
+ } else {
113
+ throw new Error("File has no path or buffer");
114
+ }
115
+ this.logger.log(`Saved file ${file.originalname} as ${fileId}`);
116
+ return fileId;
117
+ }
118
+ async getFile(fileStorageId) {
119
+ const filePath = await this.findFilePath(fileStorageId);
120
+ if (!filePath) {
121
+ throw new Error(`File ${fileStorageId} not found in storage`);
122
+ }
123
+ return (0, _promises.readFile)(filePath);
124
+ }
125
+ async deleteFile(fileStorageId) {
126
+ const filePath = await this.findFilePath(fileStorageId);
127
+ if (!filePath) {
128
+ this.logger.warn(`File ${fileStorageId} not found, cannot delete`);
129
+ return;
130
+ }
131
+ await (0, _promises.unlink)(filePath);
132
+ const metadataPath = filePath + ".json";
133
+ try {
134
+ await (0, _promises.unlink)(metadataPath);
135
+ this.logger.debug(`Deleted metadata JSON for ${fileStorageId}`);
136
+ } catch {}
137
+ const thumbnailDir = filePath.replace(/\.(gcode|3mf|bgcode)$/i, '_thumbnails');
138
+ try {
139
+ await (0, _promises.rm)(thumbnailDir, {
140
+ recursive: true,
141
+ force: true
142
+ });
143
+ this.logger.debug(`Deleted thumbnails for ${fileStorageId}`);
144
+ } catch {}
145
+ this.logger.log(`Deleted file ${fileStorageId}`);
146
+ }
147
+ getFilePath(fileStorageId) {
148
+ for (const subdir of this.STORAGE_SUBDIRS){
149
+ for (const ext of [
150
+ ".gcode",
151
+ ".3mf",
152
+ ".bgcode",
153
+ ""
154
+ ]){
155
+ const fullPath = (0, _nodepath.join)(this.storageBasePath, subdir, fileStorageId + ext);
156
+ if ((0, _nodefs.existsSync)(fullPath)) {
157
+ return fullPath;
158
+ }
159
+ }
160
+ }
161
+ return (0, _nodepath.join)(this.storageBasePath, "gcode", fileStorageId);
162
+ }
163
+ async calculateFileHash(filePath) {
164
+ const fileBuffer = await (0, _promises.readFile)(filePath);
165
+ const hashSum = (0, _nodecrypto.createHash)("sha256");
166
+ hashSum.update(fileBuffer);
167
+ return hashSum.digest("hex");
168
+ }
169
+ getDeterministicId(fileHash, fileName) {
170
+ const nameHash = (0, _nodecrypto.createHash)('sha256').update(fileHash + fileName).digest('hex').substring(0, 32);
171
+ return `${nameHash.substring(0, 8)}-${nameHash.substring(8, 12)}-${nameHash.substring(12, 16)}-${nameHash.substring(16, 20)}-${nameHash.substring(20, 32)}`;
172
+ }
173
+ async findFilePath(fileStorageId) {
174
+ for (const subdir of this.STORAGE_SUBDIRS){
175
+ const dirPath = (0, _nodepath.join)(this.storageBasePath, subdir);
176
+ try {
177
+ const files = await (0, _promises.readdir)(dirPath);
178
+ const matchingFile = files.find((f)=>f.startsWith(fileStorageId));
179
+ if (matchingFile) {
180
+ return (0, _nodepath.join)(dirPath, matchingFile);
181
+ }
182
+ } catch {}
183
+ }
184
+ return null;
185
+ }
186
+ async fileExists(fileStorageId) {
187
+ const filePath = await this.findFilePath(fileStorageId);
188
+ return filePath !== null;
189
+ }
190
+ async findDuplicateByHash(fileHash) {
191
+ return this.printJobRepository.findOne({
192
+ where: {
193
+ fileHash
194
+ },
195
+ order: {
196
+ createdAt: "DESC"
197
+ }
198
+ });
199
+ }
200
+ async saveMetadata(fileStorageId, metadata, fileHash, originalFileName, thumbnailMetadata) {
201
+ const filePath = await this.findFilePath(fileStorageId);
202
+ if (!filePath) {
203
+ this.logger.warn(`Cannot save metadata - file ${fileStorageId} not found`);
204
+ return;
205
+ }
206
+ const metadataPath = filePath + ".json";
207
+ let existingOriginalFileName = originalFileName;
208
+ let existingThumbnails = thumbnailMetadata;
209
+ try {
210
+ const existingContent = await (0, _promises.readFile)(metadataPath, "utf8");
211
+ const existing = JSON.parse(existingContent);
212
+ if (existing._originalFileName && !originalFileName) {
213
+ existingOriginalFileName = existing._originalFileName;
214
+ }
215
+ if (existing._thumbnails && !thumbnailMetadata) {
216
+ existingThumbnails = existing._thumbnails;
217
+ }
218
+ } catch {}
219
+ const metadataWithMeta = {
220
+ ...metadata,
221
+ _fileHash: fileHash || null,
222
+ _analyzedAt: new Date().toISOString(),
223
+ _fileStorageId: fileStorageId,
224
+ _originalFileName: existingOriginalFileName || metadata.fileName || null,
225
+ _thumbnails: existingThumbnails || []
226
+ };
227
+ await (0, _promises.writeFile)(metadataPath, JSON.stringify(metadataWithMeta, null, 2), "utf8");
228
+ const thumbnailMeta = thumbnailMetadata ? ` with ${thumbnailMetadata.length} thumbnail(s)` : '';
229
+ this.logger.debug(`Saved metadata for ${fileStorageId}${thumbnailMeta}`);
230
+ }
231
+ async loadMetadata(fileStorageId) {
232
+ const filePath = await this.findFilePath(fileStorageId);
233
+ if (!filePath) {
234
+ return null;
235
+ }
236
+ const metadataPath = filePath + ".json";
237
+ try {
238
+ const content = await (0, _promises.readFile)(metadataPath, "utf8");
239
+ return JSON.parse(content);
240
+ } catch (error) {
241
+ return null;
242
+ }
243
+ }
244
+ async hasMetadata(fileStorageId) {
245
+ const filePath = await this.findFilePath(fileStorageId);
246
+ if (!filePath) {
247
+ return false;
248
+ }
249
+ const metadataPath = filePath + ".json";
250
+ try {
251
+ await (0, _promises.access)(metadataPath);
252
+ return true;
253
+ } catch {
254
+ return false;
255
+ }
256
+ }
257
+ async saveThumbnails(fileStorageId, thumbnails) {
258
+ const savedThumbnails = [];
259
+ if (!thumbnails || thumbnails.length === 0) {
260
+ return savedThumbnails;
261
+ }
262
+ const filePath = await this.findFilePath(fileStorageId);
263
+ if (!filePath) {
264
+ this.logger.warn(`Cannot save thumbnails - file ${fileStorageId} not found`);
265
+ return savedThumbnails;
266
+ }
267
+ const thumbnailDir = filePath.replace(/\.(gcode|3mf|bgcode)$/i, '_thumbnails');
268
+ try {
269
+ await (0, _promises.rm)(thumbnailDir, {
270
+ recursive: true,
271
+ force: true
272
+ });
273
+ this.logger.debug(`Cleared old thumbnails for ${fileStorageId}`);
274
+ } catch {}
275
+ await (0, _promises.mkdir)(thumbnailDir, {
276
+ recursive: true
277
+ });
278
+ for(let i = 0; i < thumbnails.length; i++){
279
+ const thumb = thumbnails[i];
280
+ if (!thumb.data) continue;
281
+ const ext = thumb.format?.toLowerCase() || 'png';
282
+ const filename = `thumb_${i}.${ext}`;
283
+ const thumbPath = (0, _nodepath.join)(thumbnailDir, filename);
284
+ try {
285
+ const buffer = Buffer.from(thumb.data, 'base64');
286
+ await (0, _promises.writeFile)(thumbPath, buffer);
287
+ const relativePath = _nodepath.default.relative(this.storageBasePath, thumbPath);
288
+ savedThumbnails.push({
289
+ index: i,
290
+ path: relativePath,
291
+ filename,
292
+ width: thumb.width || 0,
293
+ height: thumb.height || 0,
294
+ format: ext,
295
+ size: buffer.length
296
+ });
297
+ this.logger.debug(`Saved thumbnail ${i} for ${fileStorageId} (${thumb.width}x${thumb.height}, ${buffer.length} bytes)`);
298
+ } catch (error) {
299
+ this.logger.warn(`Failed to save thumbnail ${i} for ${fileStorageId}: ${error}`);
300
+ }
301
+ }
302
+ return savedThumbnails;
303
+ }
304
+ async getThumbnail(fileStorageId, index) {
305
+ const filePath = await this.findFilePath(fileStorageId);
306
+ if (!filePath) return null;
307
+ const thumbnailDir = filePath.replace(/\.(gcode|3mf|bgcode)$/i, '_thumbnails');
308
+ for (const ext of [
309
+ 'png',
310
+ 'jpg',
311
+ 'jpeg',
312
+ 'qoi'
313
+ ]){
314
+ const thumbPath = (0, _nodepath.join)(thumbnailDir, `thumb_${index}.${ext}`);
315
+ try {
316
+ return await (0, _promises.readFile)(thumbPath);
317
+ } catch {}
318
+ }
319
+ return null;
320
+ }
321
+ async listThumbnails(fileStorageId) {
322
+ const filePath = await this.findFilePath(fileStorageId);
323
+ if (!filePath) return [];
324
+ const thumbnailDir = filePath.replace(/\.(gcode|3mf|bgcode)$/i, '_thumbnails');
325
+ try {
326
+ const files = await (0, _promises.readdir)(thumbnailDir);
327
+ return files.filter((f)=>f.startsWith('thumb_')).sort((a, b)=>a.localeCompare(b));
328
+ } catch {
329
+ return [];
330
+ }
331
+ }
332
+ async listAllFiles() {
333
+ const files = [];
334
+ for (const subdir of this.STORAGE_SUBDIRS){
335
+ const dirPath = (0, _nodepath.join)(this.storageBasePath, subdir);
336
+ try {
337
+ const dirFiles = await (0, _promises.readdir)(dirPath);
338
+ for (const file of dirFiles){
339
+ if (file.endsWith('_thumbnails') || file.endsWith('.json')) continue;
340
+ const fileId = _nodepath.default.parse(file).name;
341
+ const filePath = (0, _nodepath.join)(dirPath, file);
342
+ const stats = await (0, _promises.stat)(filePath);
343
+ const metadata = await this.loadMetadata(fileId);
344
+ const thumbnails = await this.listThumbnails(fileId);
345
+ files.push({
346
+ fileStorageId: fileId,
347
+ fileName: metadata?._fileName || file,
348
+ fileFormat: subdir,
349
+ fileSize: stats.size,
350
+ fileHash: metadata?._fileHash || '',
351
+ createdAt: stats.birthtime,
352
+ thumbnailCount: thumbnails.length,
353
+ metadata: metadata
354
+ });
355
+ }
356
+ } catch (error) {
357
+ this.logger.error(`Error listing files in ${subdir}`, error);
358
+ }
359
+ }
360
+ return files.sort((a, b)=>b.createdAt.getTime() - a.createdAt.getTime());
361
+ }
362
+ async getFileInfo(fileStorageId) {
363
+ const filePath = await this.findFilePath(fileStorageId);
364
+ if (!filePath) return null;
365
+ try {
366
+ const stats = await (0, _promises.stat)(filePath);
367
+ const metadata = await this.loadMetadata(fileStorageId);
368
+ const thumbnails = await this.listThumbnails(fileStorageId);
369
+ const ext = (0, _nodepath.extname)(filePath).substring(1);
370
+ return {
371
+ fileStorageId,
372
+ fileName: metadata?._originalFileName || (0, _nodepath.basename)(filePath),
373
+ fileFormat: ext,
374
+ fileSize: stats.size,
375
+ fileHash: metadata?._fileHash || '',
376
+ createdAt: stats.birthtime,
377
+ thumbnailCount: thumbnails.length,
378
+ metadata: metadata
379
+ };
380
+ } catch (error) {
381
+ this.logger.error(`Error getting file info for ${fileStorageId}`, error);
382
+ return null;
383
+ }
384
+ }
385
+ }
386
+
387
+ //# sourceMappingURL=file-storage.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/services/file-storage.service.ts"],"names":["FileStorageService","printJobRepository","logger","storageBasePath","STORAGE_SUBDIRS","loggerFactory","typeormService","getDataSource","getRepository","PrintJob","name","join","superRootPath","AppConstants","defaultPrintFilesStorage","ensureStorageDirectories","mkdir","recursive","subdir","error","readFile","fileStorageId","filePath","getFilePath","readFileSync","saveFile","file","fileHash","fileExt","extname","originalname","toLowerCase","fileId","nameHash","createHash","update","digest","substring","crypto","randomUUID","includes","targetDir","targetPath","path","rename","buffer","writeFile","Error","log","getFile","findFilePath","deleteFile","warn","unlink","metadataPath","debug","thumbnailDir","replace","rm","force","ext","fullPath","existsSync","calculateFileHash","fileBuffer","hashSum","getDeterministicId","fileName","dirPath","files","readdir","matchingFile","find","f","startsWith","fileExists","findDuplicateByHash","findOne","where","order","createdAt","saveMetadata","metadata","originalFileName","thumbnailMetadata","existingOriginalFileName","existingThumbnails","existingContent","existing","JSON","parse","_originalFileName","_thumbnails","metadataWithMeta","_fileHash","_analyzedAt","Date","toISOString","_fileStorageId","stringify","thumbnailMeta","length","loadMetadata","content","hasMetadata","access","saveThumbnails","thumbnails","savedThumbnails","i","thumb","data","format","filename","thumbPath","Buffer","from","relativePath","relative","push","index","width","height","size","getThumbnail","listThumbnails","filter","sort","a","b","localeCompare","listAllFiles","dirFiles","endsWith","stats","stat","_fileName","fileFormat","fileSize","birthtime","thumbnailCount","getTime","getFileInfo","basename"],"mappings":"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"}
@@ -40,18 +40,18 @@ class CreatePositionDto {
40
40
  class FloorDto {
41
41
  id;
42
42
  name;
43
- floor;
43
+ order;
44
44
  printers;
45
45
  }
46
46
  class CreateFloorDto {
47
47
  printers;
48
48
  name;
49
- floor;
49
+ order;
50
50
  }
51
51
  class UpdateFloorDto {
52
52
  printers;
53
53
  name;
54
- floor;
54
+ order;
55
55
  }
56
56
 
57
57
  //# sourceMappingURL=floor.dto.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/services/interfaces/floor.dto.ts"],"names":["CreateFloorDto","CreatePositionDto","FloorDto","PositionDto","UpdateFloorDto","x","y","printerId","floorId","id","name","floor","printers"],"mappings":";;;;;;;;;;;QAqBaA;eAAAA;;QAdAC;eAAAA;;QAOAC;eAAAA;;QAdAC;eAAAA;;QA2BAC;eAAAA;;;AA3BN,MAAMD;IACXE,EAAU;IACVC,EAAU;IACVC,UAAkB;IAClBC,QAAgB;AAClB;AAEO,MAAMP;IACXI,EAAU;IACVC,EAAU;IACVC,UAAkB;IAClBC,QAAiB;AACnB;AAEO,MAAMN;IACXO,GAAW;IACXC,KAAa;IACbC,MAAc;IACdC,SAAwB;AAC1B;AAEO,MAAMZ;IACXY,SAA+B;IAC/BF,KAAa;IACbC,MAAc;AAChB;AAEO,MAAMP;IACXQ,SAAyB;IACzBF,KAAc;IACdC,MAAe;AACjB"}
1
+ {"version":3,"sources":["../../../src/services/interfaces/floor.dto.ts"],"names":["CreateFloorDto","CreatePositionDto","FloorDto","PositionDto","UpdateFloorDto","x","y","printerId","floorId","id","name","order","printers"],"mappings":";;;;;;;;;;;QAqBaA;eAAAA;;QAdAC;eAAAA;;QAOAC;eAAAA;;QAdAC;eAAAA;;QA2BAC;eAAAA;;;AA3BN,MAAMD;IACXE,EAAU;IACVC,EAAU;IACVC,UAAkB;IAClBC,QAAgB;AAClB;AAEO,MAAMP;IACXI,EAAU;IACVC,EAAU;IACVC,UAAkB;IAClBC,QAAiB;AACnB;AAEO,MAAMN;IACXO,GAAW;IACXC,KAAa;IACbC,MAAc;IACdC,SAAwB;AAC1B;AAEO,MAAMZ;IACXY,SAA+B;IAC/BF,KAAa;IACbC,MAAc;AAChB;AAEO,MAAMP;IACXQ,SAAyB;IACzBF,KAAc;IACdC,MAAe;AACjB"}
@@ -9,19 +9,20 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- get CreateGroupDto () {
13
- return CreateGroupDto;
12
+ get CreateTagDto () {
13
+ return CreateTagDto;
14
14
  },
15
- get PrinterGroupDto () {
16
- return PrinterGroupDto;
15
+ get PrinterTagDto () {
16
+ return PrinterTagDto;
17
17
  }
18
18
  });
19
- class PrinterGroupDto {
19
+ class PrinterTagDto {
20
20
  printerId;
21
- groupId;
21
+ tagId;
22
22
  }
23
- class CreateGroupDto {
23
+ class CreateTagDto {
24
24
  name;
25
+ color;
25
26
  }
26
27
 
27
- //# sourceMappingURL=printer-group.dto.js.map
28
+ //# sourceMappingURL=printer-tag.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/services/interfaces/printer-tag.dto.ts"],"names":["CreateTagDto","PrinterTagDto","printerId","tagId","name","color"],"mappings":";;;;;;;;;;;QAKaA;eAAAA;;QALAC;eAAAA;;;AAAN,MAAMA;IACXC,UAAkB;IAClBC,MAAc;AAChB;AAEO,MAAMH;IACXI,KAAa;IACbC,MAAe;AACjB"}
@@ -3,4 +3,4 @@ Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
5
 
6
- //# sourceMappingURL=print-completion.interface.js.map
6
+ //# sourceMappingURL=printer-tag.service.interface.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/services/interfaces/printer-group.service.interface.ts"],"names":[],"mappings":""}
1
+ {"version":3,"sources":["../../../src/services/interfaces/printer-tag.service.interface.ts"],"names":[],"mappings":""}
@@ -13,7 +13,6 @@ class SettingsDto {
13
13
  [_serversettingsconstants.serverSettingsKey];
14
14
  [_serversettingsconstants.wizardSettingKey];
15
15
  [_serversettingsconstants.frontendSettingKey];
16
- [_serversettingsconstants.printerFileCleanSettingKey];
17
16
  [_serversettingsconstants.timeoutSettingKey];
18
17
  }
19
18
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/services/interfaces/settings.dto.ts"],"names":["SettingsDto","serverSettingsKey","wizardSettingKey","frontendSettingKey","printerFileCleanSettingKey","timeoutSettingKey"],"mappings":";;;;+BAqCaA;;;eAAAA;;;yCA/BN;AA+BA,MAAMA;IACX,CAACC,0CAAiB,CAAC,CAAoB;IACvC,CAACC,yCAAgB,CAAC,CAAoB;IACtC,CAACC,2CAAkB,CAAC,CAAsB;IAE1C,CAACC,mDAA0B,CAAC,CAAuB;IACnD,CAACC,0CAAiB,CAAC,CAAqB;AAC1C"}
1
+ {"version":3,"sources":["../../../src/services/interfaces/settings.dto.ts"],"names":["SettingsDto","serverSettingsKey","wizardSettingKey","frontendSettingKey","timeoutSettingKey"],"mappings":";;;;+BA+BaA;;;eAAAA;;;yCA1BN;AA0BA,MAAMA;IACX,CAACC,0CAAiB,CAAC,CAAoB;IACvC,CAACC,yCAAgB,CAAC,CAAoB;IACtC,CAACC,2CAAkB,CAAC,CAAsB;IAE1C,CAACC,0CAAiB,CAAC,CAAqB;AAC1C"}
@@ -3,4 +3,4 @@ Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
5
 
6
- //# sourceMappingURL=group.dto.js.map
6
+ //# sourceMappingURL=tag.dto.js.map