@fdm-monster/server 1.9.4 → 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 (393) hide show
  1. package/.env.template +8 -7
  2. package/.yarn/install-state.gz +0 -0
  3. package/CONTRIBUTING.md +5 -5
  4. package/README.md +9 -8
  5. package/RELEASE_NOTES.MD +52 -0
  6. package/SECURITY.md +1 -1
  7. package/biome.json +8 -5
  8. package/dist/consoles/download-github-releases.js +3 -3
  9. package/dist/consoles/launch-http-servers.js +4 -4
  10. package/dist/consoles/launch-http-servers.js.map +1 -1
  11. package/dist/consoles/mock-bambu.server.js +50 -30
  12. package/dist/consoles/mock-bambu.server.js.map +1 -1
  13. package/dist/consoles/mock-camera/default-image.js +13 -0
  14. package/dist/consoles/mock-camera/default-image.js.map +1 -0
  15. package/dist/consoles/mock-camera/mock-camera.server.js +160 -0
  16. package/dist/consoles/mock-camera/mock-camera.server.js.map +1 -0
  17. package/dist/consoles/mock-octoprint.server.js +281 -73
  18. package/dist/consoles/mock-octoprint.server.js.map +1 -1
  19. package/dist/consoles/mock-prusalink.server.js +17 -17
  20. package/dist/consoles/mock-prusalink.server.js.map +1 -1
  21. package/dist/consoles/typeorm-create.js +135 -0
  22. package/dist/consoles/typeorm-create.js.map +1 -0
  23. package/dist/consoles/typeorm-generate.js +8 -8
  24. package/dist/consoles/typeorm-generate.js.map +1 -1
  25. package/dist/consoles/utils/api-messages.js.map +1 -1
  26. package/dist/constants/authorization.constants.js +25 -31
  27. package/dist/constants/authorization.constants.js.map +1 -1
  28. package/dist/constants/event.constants.js.map +1 -1
  29. package/dist/constants/server-settings.constants.js +3 -19
  30. package/dist/constants/server-settings.constants.js.map +1 -1
  31. package/dist/container.js +43 -59
  32. package/dist/container.js.map +1 -1
  33. package/dist/container.tokens.js +9 -6
  34. package/dist/container.tokens.js.map +1 -1
  35. package/dist/controllers/auth.controller.js +1 -1
  36. package/dist/controllers/auth.controller.js.map +1 -1
  37. package/dist/controllers/batch-call.controller.js +7 -25
  38. package/dist/controllers/batch-call.controller.js.map +1 -1
  39. package/dist/controllers/file-storage.controller.js +248 -0
  40. package/dist/controllers/file-storage.controller.js.map +1 -0
  41. package/dist/controllers/first-time-setup.controller.js +6 -5
  42. package/dist/controllers/first-time-setup.controller.js.map +1 -1
  43. package/dist/controllers/floor.controller.js +12 -12
  44. package/dist/controllers/floor.controller.js.map +1 -1
  45. package/dist/controllers/metrics.controller.js.map +1 -1
  46. package/dist/controllers/print-job.controller.js +666 -0
  47. package/dist/controllers/print-job.controller.js.map +1 -0
  48. package/dist/controllers/print-queue.controller.js +375 -0
  49. package/dist/controllers/print-queue.controller.js.map +1 -0
  50. package/dist/controllers/printer-files.controller.js +88 -59
  51. package/dist/controllers/printer-files.controller.js.map +1 -1
  52. package/dist/controllers/printer-settings.controller.js +0 -21
  53. package/dist/controllers/printer-settings.controller.js.map +1 -1
  54. package/dist/controllers/{printer-group.controller.js → printer-tag.controller.js} +51 -34
  55. package/dist/controllers/printer-tag.controller.js.map +1 -0
  56. package/dist/controllers/printer.controller.js +21 -7
  57. package/dist/controllers/printer.controller.js.map +1 -1
  58. package/dist/controllers/server-private.controller.js +2 -1
  59. package/dist/controllers/server-private.controller.js.map +1 -1
  60. package/dist/controllers/server-public.controller.js +11 -15
  61. package/dist/controllers/server-public.controller.js.map +1 -1
  62. package/dist/controllers/settings.controller.js +0 -68
  63. package/dist/controllers/settings.controller.js.map +1 -1
  64. package/dist/controllers/slicer-compat.controller.js +216 -0
  65. package/dist/controllers/slicer-compat.controller.js.map +1 -0
  66. package/dist/controllers/user.controller.js +8 -12
  67. package/dist/controllers/user.controller.js.map +1 -1
  68. package/dist/controllers/validation/batch-controller.validation.js +13 -13
  69. package/dist/controllers/validation/batch-controller.validation.js.map +1 -1
  70. package/dist/controllers/validation/generic.validation.js +4 -8
  71. package/dist/controllers/validation/generic.validation.js.map +1 -1
  72. package/dist/controllers/validation/printer-files-controller.validation.js +2 -2
  73. package/dist/controllers/validation/user-controller.validation.js +14 -9
  74. package/dist/controllers/validation/user-controller.validation.js.map +1 -1
  75. package/dist/data-source.js +25 -12
  76. package/dist/data-source.js.map +1 -1
  77. package/dist/entities/camera-stream.entity.js +2 -1
  78. package/dist/entities/camera-stream.entity.js.map +1 -1
  79. package/dist/entities/floor.entity.js +3 -5
  80. package/dist/entities/floor.entity.js.map +1 -1
  81. package/dist/entities/index.js +15 -11
  82. package/dist/entities/index.js.map +1 -1
  83. package/dist/entities/print-job.entity.js +195 -0
  84. package/dist/entities/print-job.entity.js.map +1 -0
  85. package/dist/entities/{printer-group.entity.js → printer-tag.entity.js} +17 -17
  86. package/dist/entities/printer-tag.entity.js.map +1 -0
  87. package/dist/entities/printer.entity.js +4 -10
  88. package/dist/entities/printer.entity.js.map +1 -1
  89. package/dist/entities/settings.entity.js +3 -12
  90. package/dist/entities/settings.entity.js.map +1 -1
  91. package/dist/entities/{group.entity.js → tag.entity.js} +15 -8
  92. package/dist/entities/tag.entity.js.map +1 -0
  93. package/dist/handlers/logging/file-logging.transport.js.map +1 -1
  94. package/dist/handlers/logging/static.logger.js.map +1 -1
  95. package/dist/index.js +8 -2
  96. package/dist/index.js.map +1 -1
  97. package/dist/middleware/authenticate.js +4 -4
  98. package/dist/middleware/authenticate.js.map +1 -1
  99. package/dist/middleware/database.js +1 -1
  100. package/dist/middleware/exception.filter.js +114 -90
  101. package/dist/middleware/exception.filter.js.map +1 -1
  102. package/dist/middleware/global.middleware.js +10 -18
  103. package/dist/middleware/global.middleware.js.map +1 -1
  104. package/dist/middleware/param-converter.middleware.js +5 -13
  105. package/dist/middleware/param-converter.middleware.js.map +1 -1
  106. package/dist/middleware/passport.js +2 -2
  107. package/dist/middleware/passport.js.map +1 -1
  108. package/dist/middleware/printer-resolver.js.map +1 -1
  109. package/dist/middleware/printer.js +3 -2
  110. package/dist/middleware/printer.js.map +1 -1
  111. package/dist/middleware/socketio.middleware.js.map +1 -1
  112. package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js +1 -1
  113. package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js.map +1 -1
  114. package/dist/migrations/1766576698569-DropPermissions.js +28 -0
  115. package/dist/migrations/1766576698569-DropPermissions.js.map +1 -0
  116. package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js +186 -0
  117. package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js.map +1 -0
  118. package/dist/migrations/1767279607392-DropCustomGcode.js +31 -0
  119. package/dist/migrations/1767279607392-DropCustomGcode.js.map +1 -0
  120. package/dist/migrations/1767291804417-DropPrintCompletions.js +37 -0
  121. package/dist/migrations/1767291804417-DropPrintCompletions.js.map +1 -0
  122. package/dist/migrations/1767352862576-DropSettingsFileClean.js +88 -0
  123. package/dist/migrations/1767352862576-DropSettingsFileClean.js.map +1 -0
  124. package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js +107 -0
  125. package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js.map +1 -0
  126. package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js +62 -0
  127. package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js.map +1 -0
  128. package/dist/migrations/1767432108916-RenameGroupToTag.js +86 -0
  129. package/dist/migrations/1767432108916-RenameGroupToTag.js.map +1 -0
  130. package/dist/migrations/1767451444137-AddPrintJob.js +207 -0
  131. package/dist/migrations/1767451444137-AddPrintJob.js.map +1 -0
  132. package/dist/server.constants.js +9 -17
  133. package/dist/server.constants.js.map +1 -1
  134. package/dist/server.core.js +3 -7
  135. package/dist/server.core.js.map +1 -1
  136. package/dist/server.env.js +4 -49
  137. package/dist/server.env.js.map +1 -1
  138. package/dist/server.host.js +26 -44
  139. package/dist/server.host.js.map +1 -1
  140. package/dist/services/authentication/auth.service.js.map +1 -1
  141. package/dist/services/authentication/jwt.service.js.map +1 -1
  142. package/dist/services/bambu/bambu-ftp.adapter.js +3 -3
  143. package/dist/services/bambu/bambu-ftp.adapter.js.map +1 -1
  144. package/dist/services/bambu/bambu-mqtt.adapter.js +74 -77
  145. package/dist/services/bambu/bambu-mqtt.adapter.js.map +1 -1
  146. package/dist/services/bambu/bambu.client.js.map +1 -1
  147. package/dist/services/bambu.api.js +11 -0
  148. package/dist/services/bambu.api.js.map +1 -1
  149. package/dist/services/core/batch-call.service.js +0 -25
  150. package/dist/services/core/batch-call.service.js.map +1 -1
  151. package/dist/services/core/multer.service.js +5 -9
  152. package/dist/services/core/multer.service.js.map +1 -1
  153. package/dist/services/core/yaml.service.js +219 -187
  154. package/dist/services/core/yaml.service.js.map +1 -1
  155. package/dist/services/file-analysis.service.js +146 -0
  156. package/dist/services/file-analysis.service.js.map +1 -0
  157. package/dist/services/file-storage.service.js +386 -0
  158. package/dist/services/file-storage.service.js.map +1 -0
  159. package/dist/services/interfaces/camera-stream.dto.js +2 -2
  160. package/dist/services/interfaces/camera-stream.dto.js.map +1 -1
  161. package/dist/services/interfaces/floor.dto.js +3 -3
  162. package/dist/services/interfaces/floor.dto.js.map +1 -1
  163. package/dist/services/interfaces/{printer-group.dto.js → printer-tag.dto.js} +9 -8
  164. package/dist/services/interfaces/printer-tag.dto.js.map +1 -0
  165. package/dist/services/interfaces/{print-completion.interface.js → printer-tag.service.interface.js} +1 -1
  166. package/dist/services/interfaces/{printer-group.service.interface.js.map → printer-tag.service.interface.js.map} +1 -1
  167. package/dist/services/interfaces/printer.dto.js +2 -2
  168. package/dist/services/interfaces/printer.dto.js.map +1 -1
  169. package/dist/services/interfaces/refresh-token.dto.js.map +1 -1
  170. package/dist/services/interfaces/role.dto.js.map +1 -1
  171. package/dist/services/interfaces/settings.dto.js +0 -1
  172. package/dist/services/interfaces/settings.dto.js.map +1 -1
  173. package/dist/services/interfaces/{group.dto.js → tag.dto.js} +1 -1
  174. package/dist/services/interfaces/tag.dto.js.map +1 -0
  175. package/dist/services/interfaces/user.dto.js.map +1 -1
  176. package/dist/services/moonraker/constants/moonraker-event.dto.js.map +1 -1
  177. package/dist/services/moonraker/moonraker-websocket.adapter.js.map +1 -1
  178. package/dist/services/moonraker/moonraker.client.js.map +1 -1
  179. package/dist/services/moonraker.api.js +3 -0
  180. package/dist/services/moonraker.api.js.map +1 -1
  181. package/dist/services/octoprint/dto/files/gcode-analysis.dto.js.map +1 -0
  182. package/dist/services/octoprint/dto/octoprint-event.dto.js.map +1 -1
  183. package/dist/services/octoprint/octoprint-api.routes.js +0 -7
  184. package/dist/services/octoprint/octoprint-api.routes.js.map +1 -1
  185. package/dist/services/octoprint/octoprint-websocket.adapter.js.map +1 -1
  186. package/dist/services/octoprint/octoprint.client.js +0 -4
  187. package/dist/services/octoprint/octoprint.client.js.map +1 -1
  188. package/dist/services/octoprint.api.js +3 -0
  189. package/dist/services/octoprint.api.js.map +1 -1
  190. package/dist/services/orm/base.service.js.map +1 -1
  191. package/dist/services/orm/camera-stream.service.js.map +1 -1
  192. package/dist/services/orm/floor-position.service.js.map +1 -1
  193. package/dist/services/orm/floor.service.js +12 -19
  194. package/dist/services/orm/floor.service.js.map +1 -1
  195. package/dist/services/orm/permission.service.js +3 -54
  196. package/dist/services/orm/permission.service.js.map +1 -1
  197. package/dist/services/orm/print-job.service.js +539 -0
  198. package/dist/services/orm/print-job.service.js.map +1 -0
  199. package/dist/services/orm/printer-tag.service.js +120 -0
  200. package/dist/services/orm/printer-tag.service.js.map +1 -0
  201. package/dist/services/orm/printer.service.js.map +1 -1
  202. package/dist/services/orm/refresh-token.service.js.map +1 -1
  203. package/dist/services/orm/role.service.js +25 -39
  204. package/dist/services/orm/role.service.js.map +1 -1
  205. package/dist/services/orm/settings.service.js +4 -15
  206. package/dist/services/orm/settings.service.js.map +1 -1
  207. package/dist/services/orm/user.service.js +17 -13
  208. package/dist/services/orm/user.service.js.map +1 -1
  209. package/dist/services/print-file-downloader.service.js +169 -0
  210. package/dist/services/print-file-downloader.service.js.map +1 -0
  211. package/dist/services/print-queue.service.js +268 -0
  212. package/dist/services/print-queue.service.js.map +1 -0
  213. package/dist/services/printer-api.factory.js +1 -1
  214. package/dist/services/printer-api.factory.js.map +1 -1
  215. package/dist/services/printer-api.interface.js.map +1 -1
  216. package/dist/services/prusa-link/constants/prusalink-event.dto.js.map +1 -1
  217. package/dist/services/prusa-link/prusa-link-http-polling.adapter.js +1 -3
  218. package/dist/services/prusa-link/prusa-link-http-polling.adapter.js.map +1 -1
  219. package/dist/services/prusa-link/prusa-link.api.js +4 -1
  220. package/dist/services/prusa-link/prusa-link.api.js.map +1 -1
  221. package/dist/services/prusa-link/utils/prusa-link-http-client.builder.js.map +1 -1
  222. package/dist/services/validators/floor-service.validation.js +25 -31
  223. package/dist/services/validators/floor-service.validation.js.map +1 -1
  224. package/dist/services/validators/print-job.validation.js +31 -0
  225. package/dist/services/validators/print-job.validation.js.map +1 -0
  226. package/dist/services/validators/settings-service.validation.js +0 -22
  227. package/dist/services/validators/settings-service.validation.js.map +1 -1
  228. package/dist/services/validators/user-service.validation.js +15 -10
  229. package/dist/services/validators/user-service.validation.js.map +1 -1
  230. package/dist/services/validators/yaml-service.validation.js +8 -14
  231. package/dist/services/validators/yaml-service.validation.js.map +1 -1
  232. package/dist/shared/load-controllers.js +2 -1
  233. package/dist/shared/load-controllers.js.map +1 -1
  234. package/dist/shared/runtime-settings.migration.js +1 -11
  235. package/dist/shared/runtime-settings.migration.js.map +1 -1
  236. package/dist/shared/websocket-rpc-extended.adapter.js +13 -4
  237. package/dist/shared/websocket-rpc-extended.adapter.js.map +1 -1
  238. package/dist/shared/websocket.adapter.js.map +1 -1
  239. package/dist/state/file-upload-tracker.cache.js.map +1 -1
  240. package/dist/state/file.cache.js +6 -6
  241. package/dist/state/file.cache.js.map +1 -1
  242. package/dist/state/floor.store.js +3 -10
  243. package/dist/state/floor.store.js.map +1 -1
  244. package/dist/state/printer-events.cache.js +180 -20
  245. package/dist/state/printer-events.cache.js.map +1 -1
  246. package/dist/state/printer-files.store.js.map +1 -1
  247. package/dist/state/printer-socket.store.js +25 -20
  248. package/dist/state/printer-socket.store.js.map +1 -1
  249. package/dist/state/printer-thumbnail.cache.js +98 -188
  250. package/dist/state/printer-thumbnail.cache.js.map +1 -1
  251. package/dist/state/printer.cache.js +3 -13
  252. package/dist/state/printer.cache.js.map +1 -1
  253. package/dist/state/settings.store.js +4 -42
  254. package/dist/state/settings.store.js.map +1 -1
  255. package/dist/state/socket-io.gateway.js +1 -1
  256. package/dist/state/socket-io.gateway.js.map +1 -1
  257. package/dist/state/test-printer-socket.store.js +6 -3
  258. package/dist/state/test-printer-socket.store.js.map +1 -1
  259. package/dist/tasks/boot.task.js +11 -91
  260. package/dist/tasks/boot.task.js.map +1 -1
  261. package/dist/tasks/print-job-analysis.task.js +116 -0
  262. package/dist/tasks/print-job-analysis.task.js.map +1 -0
  263. package/dist/tasks/printer-files-load.task.js +29 -0
  264. package/dist/tasks/printer-files-load.task.js.map +1 -0
  265. package/dist/tasks/socketio.task.js +1 -1
  266. package/dist/tasks/socketio.task.js.map +1 -1
  267. package/dist/tasks.js +3 -2
  268. package/dist/tasks.js.map +1 -1
  269. package/dist/utils/cache/key-diff.cache.js +20 -61
  270. package/dist/utils/cache/key-diff.cache.js.map +1 -1
  271. package/dist/utils/parsers/3mf.parser.js +337 -0
  272. package/dist/utils/parsers/3mf.parser.js.map +1 -0
  273. package/dist/utils/parsers/bgcode.parser.js +223 -0
  274. package/dist/utils/parsers/bgcode.parser.js.map +1 -0
  275. package/dist/utils/parsers/gcode.parser.js +254 -0
  276. package/dist/utils/parsers/gcode.parser.js.map +1 -0
  277. package/dist/utils/swagger/decorators.js +39 -0
  278. package/dist/utils/swagger/decorators.js.map +1 -0
  279. package/dist/utils/swagger/generator.js +196 -0
  280. package/dist/utils/swagger/generator.js.map +1 -0
  281. package/dist/utils/swagger/swagger.js +93 -0
  282. package/dist/utils/swagger/swagger.js.map +1 -0
  283. package/package.json +24 -30
  284. package/dist/controllers/custom-gcode.controller.js +0 -150
  285. package/dist/controllers/custom-gcode.controller.js.map +0 -1
  286. package/dist/controllers/print-completion.controller.js +0 -118
  287. package/dist/controllers/print-completion.controller.js.map +0 -1
  288. package/dist/controllers/printer-group.controller.js.map +0 -1
  289. package/dist/entities/custom-gcode.entity.js +0 -49
  290. package/dist/entities/custom-gcode.entity.js.map +0 -1
  291. package/dist/entities/group.entity.js.map +0 -1
  292. package/dist/entities/permission.entity.js +0 -37
  293. package/dist/entities/permission.entity.js.map +0 -1
  294. package/dist/entities/print-completion.entity.js +0 -90
  295. package/dist/entities/print-completion.entity.js.map +0 -1
  296. package/dist/entities/printer-group.entity.js.map +0 -1
  297. package/dist/models/Auth/Permission.js +0 -20
  298. package/dist/models/Auth/Permission.js.map +0 -1
  299. package/dist/models/Auth/RefreshToken.js +0 -41
  300. package/dist/models/Auth/RefreshToken.js.map +0 -1
  301. package/dist/models/Auth/Role.js +0 -20
  302. package/dist/models/Auth/Role.js.map +0 -1
  303. package/dist/models/Auth/User.js +0 -49
  304. package/dist/models/Auth/User.js.map +0 -1
  305. package/dist/models/CameraStream.js +0 -49
  306. package/dist/models/CameraStream.js.map +0 -1
  307. package/dist/models/CustomGcode.js +0 -28
  308. package/dist/models/CustomGcode.js.map +0 -1
  309. package/dist/models/Floor.js +0 -33
  310. package/dist/models/Floor.js.map +0 -1
  311. package/dist/models/FloorPrinter.js +0 -38
  312. package/dist/models/FloorPrinter.js.map +0 -1
  313. package/dist/models/PrintCompletion.js +0 -40
  314. package/dist/models/PrintCompletion.js.map +0 -1
  315. package/dist/models/Printer.js +0 -78
  316. package/dist/models/Printer.js.map +0 -1
  317. package/dist/models/Settings.js +0 -150
  318. package/dist/models/Settings.js.map +0 -1
  319. package/dist/models/index.js +0 -54
  320. package/dist/models/index.js.map +0 -1
  321. package/dist/mongo-migrations/20210713120034-printers-settingsapperance-apikey.js +0 -45
  322. package/dist/mongo-migrations/20210713120034-printers-settingsapperance-apikey.js.map +0 -1
  323. package/dist/mongo-migrations/20210907173950-printers-enabled.js +0 -35
  324. package/dist/mongo-migrations/20210907173950-printers-enabled.js.map +0 -1
  325. package/dist/mongo-migrations/20211029110742-user-password-passwordhash.js +0 -35
  326. package/dist/mongo-migrations/20211029110742-user-password-passwordhash.js.map +0 -1
  327. package/dist/mongo-migrations/20230414141005-floor-remove-groupinfloor.js +0 -60
  328. package/dist/mongo-migrations/20230414141005-floor-remove-groupinfloor.js.map +0 -1
  329. package/dist/mongo-migrations/20230427202911-printer-remove-sortindex.js +0 -30
  330. package/dist/mongo-migrations/20230427202911-printer-remove-sortindex.js.map +0 -1
  331. package/dist/mongo-migrations/20230716065316-user-remove-name.js +0 -30
  332. package/dist/mongo-migrations/20230716065316-user-remove-name.js.map +0 -1
  333. package/dist/mongo-migrations/20231111081809-printer-flatten-name.js +0 -35
  334. package/dist/mongo-migrations/20231111081809-printer-flatten-name.js.map +0 -1
  335. package/dist/mongo-migrations/20231111082521-printer-remove-settingsappearance.js +0 -41
  336. package/dist/mongo-migrations/20231111082521-printer-remove-settingsappearance.js.map +0 -1
  337. package/dist/mongo-migrations/20231202183902-printer-files-simpler.js +0 -41
  338. package/dist/mongo-migrations/20231202183902-printer-files-simpler.js.map +0 -1
  339. package/dist/services/interfaces/custom-gcode.dto.js +0 -18
  340. package/dist/services/interfaces/custom-gcode.dto.js.map +0 -1
  341. package/dist/services/interfaces/custom-gcode.service.interface.js +0 -6
  342. package/dist/services/interfaces/custom-gcode.service.interface.js.map +0 -1
  343. package/dist/services/interfaces/gcode-analysis.dto.js.map +0 -1
  344. package/dist/services/interfaces/group.dto.js.map +0 -1
  345. package/dist/services/interfaces/permission.dto.js +0 -16
  346. package/dist/services/interfaces/permission.dto.js.map +0 -1
  347. package/dist/services/interfaces/print-completion-context.dto.js +0 -6
  348. package/dist/services/interfaces/print-completion-context.dto.js.map +0 -1
  349. package/dist/services/interfaces/print-completion.dto.js +0 -38
  350. package/dist/services/interfaces/print-completion.dto.js.map +0 -1
  351. package/dist/services/interfaces/print-completion.interface.js.map +0 -1
  352. package/dist/services/interfaces/printer-group.dto.js.map +0 -1
  353. package/dist/services/interfaces/printer-group.service.interface.js +0 -6
  354. package/dist/services/mongoose/camera-stream.service.js +0 -67
  355. package/dist/services/mongoose/camera-stream.service.js.map +0 -1
  356. package/dist/services/mongoose/custom-gcode.service.js +0 -50
  357. package/dist/services/mongoose/custom-gcode.service.js.map +0 -1
  358. package/dist/services/mongoose/floor.service.js +0 -139
  359. package/dist/services/mongoose/floor.service.js.map +0 -1
  360. package/dist/services/mongoose/permission.service.js +0 -73
  361. package/dist/services/mongoose/permission.service.js.map +0 -1
  362. package/dist/services/mongoose/print-completion.service.js +0 -134
  363. package/dist/services/mongoose/print-completion.service.js.map +0 -1
  364. package/dist/services/mongoose/print-completion.shared.js +0 -59
  365. package/dist/services/mongoose/print-completion.shared.js.map +0 -1
  366. package/dist/services/mongoose/printer.service.js +0 -216
  367. package/dist/services/mongoose/printer.service.js.map +0 -1
  368. package/dist/services/mongoose/refresh-token.service.js +0 -104
  369. package/dist/services/mongoose/refresh-token.service.js.map +0 -1
  370. package/dist/services/mongoose/role.service.js +0 -132
  371. package/dist/services/mongoose/role.service.js.map +0 -1
  372. package/dist/services/mongoose/settings.service.js +0 -124
  373. package/dist/services/mongoose/settings.service.js.map +0 -1
  374. package/dist/services/mongoose/user.service.js +0 -180
  375. package/dist/services/mongoose/user.service.js.map +0 -1
  376. package/dist/services/orm/custom-gcode.service.js +0 -42
  377. package/dist/services/orm/custom-gcode.service.js.map +0 -1
  378. package/dist/services/orm/print-completion.service.js +0 -87
  379. package/dist/services/orm/print-completion.service.js.map +0 -1
  380. package/dist/services/orm/printer-group.service.js +0 -109
  381. package/dist/services/orm/printer-group.service.js.map +0 -1
  382. package/dist/services/validators/camera-service.validation.js +0 -19
  383. package/dist/services/validators/camera-service.validation.js.map +0 -1
  384. package/dist/services/validators/print-completion-service.validation.js +0 -33
  385. package/dist/services/validators/print-completion-service.validation.js.map +0 -1
  386. package/dist/shared.constants.js +0 -15
  387. package/dist/shared.constants.js.map +0 -1
  388. package/dist/tasks/print-completion.socketio.task.js +0 -91
  389. package/dist/tasks/print-completion.socketio.task.js.map +0 -1
  390. package/dist/tasks/printer-file-clean.task.js +0 -74
  391. package/dist/tasks/printer-file-clean.task.js.map +0 -1
  392. package/migrate-mongo-config.js +0 -45
  393. /package/dist/services/{interfaces → octoprint/dto/files}/gcode-analysis.dto.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/services/core/yaml.service.ts"],"names":["YamlService","logger","loggerFactory","printerGroupService","printerService","printerCache","floorStore","floorService","userService","roleService","settingsStore","isTypeormMode","name","importYaml","yamlBuffer","importSpec","load","databaseTypeSqlite","databaseType","exportPrinters","exportFloorGrid","exportSettings","exportUsers","config","wizardCompleted","getWizardSettings","hasSystemData","validateSystemTablesEmpty","printer","printers","printerName","settingsAppearance","id","Number","parseInt","OctoprintType","MoonrakerType","includes","printerType","floor","floors","printerId","importData","validateInput","importPrintersFloorsYamlSchema","length","importPrinterPositionsSchema","log","updateByPropertyPrinters","insertPrinters","analysePrintersUpsert","printerComparisonStrategiesByPriority","updateByPropertyFloors","insertFloors","analyseFloorsUpsert","floorComparisonStrategiesByPriority","updateByNameGroups","insertGroups","analyseUpsertGroups","groups","printerIdMap","newPrinter","state","create","Error","JSON","stringify","updatePrinterSpec","updateId","updatedPrinter","value","originalPrinterId","update","floorIdMap","newFloor","originalFloorId","knownPrinterPositions","floorPosition","knownPrinterId","floorId","push","createdFloor","updateFloorSpec","updatedFloor","knownPrinters","loadStore","group","createdGroup","createGroup","addPrinterToGroup","updateGroupSpec","existingGroup","getGroupWithPrinters","groupId","existingPrinterIds","map","p","wantedTargetPrinterIds","filter","unwantedId","eid","removePrinterFromGroup","nonExistingNewId","settings","importSettings","users","importUsers","server","updateServerSettings","timeout","updateTimeoutSettings","frontend","updateFrontendSettings","printerFileClean","updateFileCleanSettings","wizard","importedWizardVersion","wizardVersion","setWizardCompleted","allRoles","roles","user","roleIds","roleNameOrId","role","find","r","undefined","register","username","password","isRootUser","isDemoUser","isVerified","needsPasswordChange","updatePasswordHashUnsafeByUsername","passwordHash","errors","existingSettings","getSettings","Object","keys","existingUsers","listUsers","join","upsertPrinters","comparisonStrategies","existingPrinters","list","names","toLowerCase","urls","printerURL","ids","toString","strategy","comparedName","foundIndex","findIndex","n","upsertFloors","comparisonStrategy","existingFloors","floorLevels","comparedProperty","upsertGroups","existingGroups","listGroups","exportYaml","options","input","exportPrintersFloorsYamlSchema","exportGroups","exportFloors","dumpedObject","version","process","env","npm_package_version","exportedAt","Date","user_roles","apiKey","getLoginDto","disabledReason","enabled","dateAdded","listCache","f","dumpedFloor","fPrinterId","x","y","g","u","userDto","toDto","userObj","createdAt","roleId","dump"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/services/core/yaml.service.ts"],"names":["YamlService","logger","loggerFactory","printerTagService","printerService","printerCache","floorStore","floorService","userService","roleService","settingsStore","name","importYaml","yamlBuffer","importSpec","load","databaseTypeSqlite","databaseType","exportPrinters","exportFloorGrid","exportSettings","exportUsers","config","normalizeYamlData","importData","validateInput","importPrintersFloorsYamlSchema","hasSystemData","validateSystemTablesEmpty","settings","log","importSettings","users","length","importUsers","floors","floor","importPrinterPositionsSchema","updateByPropertyPrinters","insertPrinters","analysePrintersUpsert","printers","printerComparisonStrategiesByPriority","updateByPropertyFloors","insertFloors","analyseFloorsUpsert","floorComparisonStrategiesByPriority","updateByNameTags","insertTags","analyseUpsertTags","tags","printerIdMap","newPrinter","state","create","id","Error","JSON","stringify","error","updatePrinterSpec","updateId","printerId","updatedPrinter","value","originalPrinterId","update","floorIdMap","newFloor","originalFloorId","knownPrinterPositions","floorPosition","knownPrinterId","floorId","push","createdFloor","updateFloorSpec","updatedFloor","knownPrinters","loadStore","tag","createdTag","createTag","color","printer","addPrinterToTag","updateTagSpec","existingTag","getPrintersByTag","tagId","existingPrinterIds","map","p","wantedTargetPrinterIds","filter","unwantedId","eid","includes","removePrinterFromTag","nonExistingNewId","server","updateServerSettings","timeout","updateTimeoutSettings","frontend","updateFrontendSettings","wizard","wizardCompleted","importedWizardVersion","wizardVersion","setWizardCompleted","loadSettings","allRoles","roles","user","Number","parseInt","roleNames","roleName","some","r","register","username","password","isRootUser","isDemoUser","isVerified","needsPasswordChange","updatePasswordHashUnsafeByUsername","passwordHash","errors","getWizardSettings","existingSettings","getSettings","Object","keys","existingUsers","listUsers","join","upsertPrinters","comparisonStrategies","existingPrinters","list","names","toLowerCase","urls","printerURL","ids","toString","strategy","comparedName","foundIndex","findIndex","n","upsertFloors","comparisonStrategy","existingFloors","floorLevels","order","comparedProperty","upsertTags","existingTags","listTags","exportYaml","options","input","exportPrintersFloorsYamlSchema","exportFloors","exportTags","dumpedObject","version","process","env","npm_package_version","exportedAt","Date","undefined","user_roles","apiKey","getLoginDto","disabledReason","enabled","printerType","dateAdded","listCache","f","dumpedFloor","fPrinterId","x","y","t","u","userDto","toDto","createdAt","dump","printerName","settingsAppearance","OctoprintType","MoonrakerType","PrusaLinkType","BambuType","groups","exportGroups"],"mappings":"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"}
@@ -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":"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"}
@@ -0,0 +1,386 @@
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
+ savedThumbnails.push({
288
+ index: i,
289
+ path: thumbPath,
290
+ filename,
291
+ width: thumb.width || 0,
292
+ height: thumb.height || 0,
293
+ format: ext,
294
+ size: buffer.length
295
+ });
296
+ this.logger.debug(`Saved thumbnail ${i} for ${fileStorageId} (${thumb.width}x${thumb.height}, ${buffer.length} bytes)`);
297
+ } catch (error) {
298
+ this.logger.warn(`Failed to save thumbnail ${i} for ${fileStorageId}: ${error}`);
299
+ }
300
+ }
301
+ return savedThumbnails;
302
+ }
303
+ async getThumbnail(fileStorageId, index) {
304
+ const filePath = await this.findFilePath(fileStorageId);
305
+ if (!filePath) return null;
306
+ const thumbnailDir = filePath.replace(/\.(gcode|3mf|bgcode)$/i, '_thumbnails');
307
+ for (const ext of [
308
+ 'png',
309
+ 'jpg',
310
+ 'jpeg',
311
+ 'qoi'
312
+ ]){
313
+ const thumbPath = (0, _nodepath.join)(thumbnailDir, `thumb_${index}.${ext}`);
314
+ try {
315
+ return await (0, _promises.readFile)(thumbPath);
316
+ } catch {}
317
+ }
318
+ return null;
319
+ }
320
+ async listThumbnails(fileStorageId) {
321
+ const filePath = await this.findFilePath(fileStorageId);
322
+ if (!filePath) return [];
323
+ const thumbnailDir = filePath.replace(/\.(gcode|3mf|bgcode)$/i, '_thumbnails');
324
+ try {
325
+ const files = await (0, _promises.readdir)(thumbnailDir);
326
+ return files.filter((f)=>f.startsWith('thumb_')).sort((a, b)=>a.localeCompare(b));
327
+ } catch {
328
+ return [];
329
+ }
330
+ }
331
+ async listAllFiles() {
332
+ const files = [];
333
+ for (const subdir of this.STORAGE_SUBDIRS){
334
+ const dirPath = (0, _nodepath.join)(this.storageBasePath, subdir);
335
+ try {
336
+ const dirFiles = await (0, _promises.readdir)(dirPath);
337
+ for (const file of dirFiles){
338
+ if (file.endsWith('_thumbnails') || file.endsWith('.json')) continue;
339
+ const fileId = _nodepath.default.parse(file).name;
340
+ const filePath = (0, _nodepath.join)(dirPath, file);
341
+ const stats = await (0, _promises.stat)(filePath);
342
+ const metadata = await this.loadMetadata(fileId);
343
+ const thumbnails = await this.listThumbnails(fileId);
344
+ files.push({
345
+ fileStorageId: fileId,
346
+ fileName: metadata?._fileName || file,
347
+ fileFormat: subdir,
348
+ fileSize: stats.size,
349
+ fileHash: metadata?._fileHash || '',
350
+ createdAt: stats.birthtime,
351
+ thumbnailCount: thumbnails.length,
352
+ metadata: metadata
353
+ });
354
+ }
355
+ } catch (error) {
356
+ this.logger.error(`Error listing files in ${subdir}`, error);
357
+ }
358
+ }
359
+ return files.sort((a, b)=>b.createdAt.getTime() - a.createdAt.getTime());
360
+ }
361
+ async getFileInfo(fileStorageId) {
362
+ const filePath = await this.findFilePath(fileStorageId);
363
+ if (!filePath) return null;
364
+ try {
365
+ const stats = await (0, _promises.stat)(filePath);
366
+ const metadata = await this.loadMetadata(fileStorageId);
367
+ const thumbnails = await this.listThumbnails(fileStorageId);
368
+ const ext = (0, _nodepath.extname)(filePath).substring(1);
369
+ return {
370
+ fileStorageId,
371
+ fileName: metadata?._fileName || (0, _nodepath.basename)(filePath),
372
+ fileFormat: ext,
373
+ fileSize: stats.size,
374
+ fileHash: metadata?._fileHash || '',
375
+ createdAt: stats.birthtime,
376
+ thumbnailCount: thumbnails.length,
377
+ metadata: metadata
378
+ };
379
+ } catch (error) {
380
+ this.logger.error(`Error getting file info for ${fileStorageId}`, error);
381
+ return null;
382
+ }
383
+ }
384
+ }
385
+
386
+ //# 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","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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"}