@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/state/socket-io.gateway.ts"],"names":["IO_MESSAGES","SocketIoGateway","socketIoGatewaySessions","Gauge","name","help","socketIoGatewayDisconnects","Counter","socketIoGatewayMessagesSent","socketIoGatewayMessageSentSize","logger","io","loggerFactory","eventEmitter2","settingsStore","userService","configService","attachServer","httpServer","Server","cors","origin","opts","getPassportJwtOptions","value","handshake","auth","token","use","authorize","verifyUserCallback","on","socket","onConnect","bind","debug","socketId","id","emit","socketIoConnectedEvent","inc","dec","send","event","data","payload","JSON","stringify","sizeInBytes","Buffer","byteLength","set","LegacyUpdate"],"mappings":";;;;;;;;;;;QAsFaA;eAAAA;;QArDAC;eAAAA;;;0BAjCkB;gCACQ;0BAMmB;oCAGhC;4BACK;AAE/B,MAAMC,0BAA0B,IAAIC,iBAAK,CAAC;IACxCC,MAAM;IACNC,MAAM;AACR;AAEA,MAAMC,6BAA6B,IAAIC,mBAAO,CAAC;IAC7CH,MAAM;IACNC,MAAM;AACR;AAEA,MAAMG,8BAA8B,IAAID,mBAAO,CAAC;IAC9CH,MAAM;IACNC,MAAM;AACR;AAEA,MAAMI,iCAAiC,IAAIN,iBAAK,CAAC;IAC/CC,MAAM;IACNC,MAAM;AACR;AAEO,MAAMJ;;;;;IACXS,OAAsB;IAEtBC,GAAW;IAEX,YACEC,aAA6B,EAC7B,AAAiBC,aAA4B,EAC7C,AAAiBC,aAA4B,EAC7C,AAAiBC,WAAyB,EAC1C,AAAiBC,aAA6B,CAC9C;aAJiBH,gBAAAA;aACAC,gBAAAA;aACAC,cAAAA;aACAC,gBAAAA;QAEjB,IAAI,CAACN,MAAM,GAAGE,cAAcX,gBAAgBG,IAAI;IAClD;IAEAa,aAAaC,UAAsB,EAAE;QACnC,IAAI,CAACP,EAAE,GAAG,IAAIQ,gBAAM,CAACD,YAAY;YAAEE,MAAM;gBAAEC,QAAQ;YAAI;QAAE;QACzD,MAAMC,OAAOC,IAAAA,+BAAqB,EAChC,IAAI,CAACT,aAAa,EAClB,IAAI,CAACE,aAAa,EAClB,CAACQ,QAAkBA,MAAMC,SAAS,CAACC,IAAI,CAACC,KAAK;QAE/C,IAAI,CAAChB,EAAE,CAACiB,GAAG,CAACC,IAAAA,6BAAS,EAAC,IAAI,CAACf,aAAa,EAAEQ,MAAM,IAAI,CAACZ,MAAM,EAAEoB,IAAAA,4BAAkB,EAAC,IAAI,CAACf,WAAW;QAChG,IAAI,CAACJ,EAAE,CAACoB,EAAE,CAAC,cAAc,CAACC,SAAW,IAAI,CAACC,SAAS,CAACC,IAAI,CAAC,IAAI,EAAEF;IACjE;IAEAC,UAAUD,MAAc,EAAE;QACxB,IAAI,CAACtB,MAAM,CAACyB,KAAK,CAAC,6BAA6B;YAAEC,UAAUJ,OAAOK,EAAE;QAAC;QACrE,IAAI,CAACxB,aAAa,CAACyB,IAAI,CAACC,sCAAsB,EAAEP,OAAOK,EAAE;QACzDnC,wBAAwBsC,GAAG;QAE3BR,OAAOD,EAAE,CAAC,cAAc;YACtB,IAAI,CAACrB,MAAM,CAACyB,KAAK,CAAC,gCAAgC;gBAAEC,UAAUJ,OAAOK,EAAE;YAAC;YACxEnC,wBAAwBuC,GAAG,CAAC;YAC5BnC,2BAA2BkC,GAAG;QAChC;IACF;IAEAE,KAAQC,KAAa,EAAEC,IAAO,EAAE;QAC9B,IAAI,CAAC,IAAI,CAACjC,EAAE,EAAE;YACZ,IAAI,CAACD,MAAM,CAACyB,KAAK,CAAC,CAAC,gBAAgB,EAAEQ,MAAM,wCAAwC,CAAC;YACpF;QACF;QAEA,IAAI,CAAChC,EAAE,CAAC2B,IAAI,CAACK,OAAOC;QACpBpC,4BAA4BgC,GAAG;QAE/B,MAAMK,UAAUC,KAAKC,SAAS,CAACH;QAC/B,MAAMI,cAAcC,OAAOC,UAAU,CAACL;QACtCpC,+BAA+B0C,GAAG,CAACH;IACrC;AACF;AAEO,MAAMhD,cAAc;IACzBoD,cAAc;AAChB"}
1
+ {"version":3,"sources":["../../src/state/socket-io.gateway.ts"],"names":["IO_MESSAGES","SocketIoGateway","socketIoGatewaySessions","Gauge","name","help","socketIoGatewayDisconnects","Counter","socketIoGatewayMessagesSent","socketIoGatewayMessageSentSize","logger","io","loggerFactory","eventEmitter2","settingsStore","userService","configService","attachServer","httpServer","Server","cors","origin","opts","getPassportJwtOptions","value","handshake","auth","token","use","authorize","verifyUserCallback","on","socket","onConnect","bind","debug","socketId","id","emit","socketIoConnectedEvent","inc","dec","send","event","data","payload","JSON","stringify","sizeInBytes","Buffer","byteLength","set","Update"],"mappings":";;;;;;;;;;;QAsFaA;eAAAA;;QArDAC;eAAAA;;;0BAjCkB;gCACQ;0BAMmB;oCAGhC;4BACK;AAE/B,MAAMC,0BAA0B,IAAIC,iBAAK,CAAC;IACxCC,MAAM;IACNC,MAAM;AACR;AAEA,MAAMC,6BAA6B,IAAIC,mBAAO,CAAC;IAC7CH,MAAM;IACNC,MAAM;AACR;AAEA,MAAMG,8BAA8B,IAAID,mBAAO,CAAC;IAC9CH,MAAM;IACNC,MAAM;AACR;AAEA,MAAMI,iCAAiC,IAAIN,iBAAK,CAAC;IAC/CC,MAAM;IACNC,MAAM;AACR;AAEO,MAAMJ;;;;;IACXS,OAAsB;IAEtBC,GAAW;IAEX,YACEC,aAA6B,EAC7B,AAAiBC,aAA4B,EAC7C,AAAiBC,aAA4B,EAC7C,AAAiBC,WAAyB,EAC1C,AAAiBC,aAA6B,CAC9C;aAJiBH,gBAAAA;aACAC,gBAAAA;aACAC,cAAAA;aACAC,gBAAAA;QAEjB,IAAI,CAACN,MAAM,GAAGE,cAAcX,gBAAgBG,IAAI;IAClD;IAEAa,aAAaC,UAAsB,EAAE;QACnC,IAAI,CAACP,EAAE,GAAG,IAAIQ,gBAAM,CAACD,YAAY;YAAEE,MAAM;gBAAEC,QAAQ;YAAI;QAAE;QACzD,MAAMC,OAAOC,IAAAA,+BAAqB,EAChC,IAAI,CAACT,aAAa,EAClB,IAAI,CAACE,aAAa,EAClB,CAACQ,QAAkBA,MAAMC,SAAS,CAACC,IAAI,CAACC,KAAK;QAE/C,IAAI,CAAChB,EAAE,CAACiB,GAAG,CAACC,IAAAA,6BAAS,EAAC,IAAI,CAACf,aAAa,EAAEQ,MAAM,IAAI,CAACZ,MAAM,EAAEoB,IAAAA,4BAAkB,EAAC,IAAI,CAACf,WAAW;QAChG,IAAI,CAACJ,EAAE,CAACoB,EAAE,CAAC,cAAc,CAACC,SAAW,IAAI,CAACC,SAAS,CAACC,IAAI,CAAC,IAAI,EAAEF;IACjE;IAEAC,UAAUD,MAAc,EAAE;QACxB,IAAI,CAACtB,MAAM,CAACyB,KAAK,CAAC,6BAA6B;YAAEC,UAAUJ,OAAOK,EAAE;QAAC;QACrE,IAAI,CAACxB,aAAa,CAACyB,IAAI,CAACC,sCAAsB,EAAEP,OAAOK,EAAE;QACzDnC,wBAAwBsC,GAAG;QAE3BR,OAAOD,EAAE,CAAC,cAAc;YACtB,IAAI,CAACrB,MAAM,CAACyB,KAAK,CAAC,gCAAgC;gBAAEC,UAAUJ,OAAOK,EAAE;YAAC;YACxEnC,wBAAwBuC,GAAG,CAAC;YAC5BnC,2BAA2BkC,GAAG;QAChC;IACF;IAEAE,KAAQC,KAAa,EAAEC,IAAO,EAAE;QAC9B,IAAI,CAAC,IAAI,CAACjC,EAAE,EAAE;YACZ,IAAI,CAACD,MAAM,CAACyB,KAAK,CAAC,CAAC,gBAAgB,EAAEQ,MAAM,wCAAwC,CAAC;YACpF;QACF;QAEA,IAAI,CAAChC,EAAE,CAAC2B,IAAI,CAACK,OAAOC;QACpBpC,4BAA4BgC,GAAG;QAE/B,MAAMK,UAAUC,KAAKC,SAAS,CAACH;QAC/B,MAAMI,cAAcC,OAAOC,UAAU,CAACL;QACtCpC,+BAA+B0C,GAAG,CAACH;IACrC;AACF;AAEO,MAAMhD,cAAc;IACzBoD,QAAQ;AACV"}
@@ -20,6 +20,8 @@ const _moonrakerconstants = require("../services/moonraker/constants/moonraker.c
20
20
  const _bambumqttadapter = require("../services/bambu/bambu-mqtt.adapter");
21
21
  const _prusalinkconstants = require("../services/prusa-link/constants/prusalink.constants");
22
22
  const _eventconstants = require("../constants/event.constants");
23
+ const TEST_PRINTER_ID_BASE = 100000;
24
+ let testPrinterIdCounter = 0;
23
25
  class TestPrinterSocketStore {
24
26
  socketFactory;
25
27
  socketIoGateway;
@@ -39,9 +41,10 @@ class TestPrinterSocketStore {
39
41
  }
40
42
  const validatedData = await (0, _validators.validateInput)(printer, _createtestprintervalidation.createTestPrinterSchema);
41
43
  validatedData.enabled = true;
44
+ const testPrinterId = TEST_PRINTER_ID_BASE + ++testPrinterIdCounter;
42
45
  this.testSocket = this.socketFactory.createInstance(printer.printerType);
43
46
  this.testSocket.registerCredentials({
44
- printerId: correlationToken,
47
+ printerId: testPrinterId,
45
48
  loginDto: {
46
49
  apiKey: printer.apiKey,
47
50
  username: printer.username,
@@ -73,7 +76,7 @@ class TestPrinterSocketStore {
73
76
  (0, _prusalinkconstants.prusaLinkEvent)(_octoprintwebsocketadapter.WsMessage.WS_ERROR)
74
77
  ];
75
78
  const listener = ({ event, payload, printerId })=>{
76
- if (printerId !== correlationToken) {
79
+ if (printerId !== testPrinterId) {
77
80
  return;
78
81
  }
79
82
  this.socketIoGateway.send("test-printer-state", {
@@ -123,7 +126,7 @@ class TestPrinterSocketStore {
123
126
  }
124
127
  this.eventEmitter2.emit(_eventconstants.printerEvents.printersDeleted, {
125
128
  printerIds: [
126
- correlationToken
129
+ testPrinterId
127
130
  ]
128
131
  });
129
132
  delete this.testSocket;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/state/test-printer-socket.store.ts"],"names":["TestPrinterSocketStore","testSocket","logger","loggerFactory","socketFactory","socketIoGateway","eventEmitter2","name","setupTestPrinter","correlationToken","printer","close","validatedData","validateInput","createTestPrinterSchema","enabled","createInstance","printerType","registerCredentials","printerId","loginDto","apiKey","username","password","printerURL","testEvents","octoPrintEvent","WsMessage","WS_STATE_UPDATED","API_STATE_UPDATED","WS_CLOSED","WS_OPENED","WS_ERROR","moonrakerEvent","bambuEvent","prusaLinkEvent","listener","event","payload","send","forEach","te","on","log","setupSocketSession","promise","Promise","resolve","reject","error","open","_startTime","setInterval","warn","Error","socketState","SOCKET_STATE","authenticated","race","setTimeout","AppConstants","defaultWebsocketHandshakeTimeout","e","errorSummary","captureException","disallowEmittingEvents","emit","printerEvents","printersDeleted","printerIds","off"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/state/test-printer-socket.store.ts"],"names":["TestPrinterSocketStore","TEST_PRINTER_ID_BASE","testPrinterIdCounter","testSocket","logger","loggerFactory","socketFactory","socketIoGateway","eventEmitter2","name","setupTestPrinter","correlationToken","printer","close","validatedData","validateInput","createTestPrinterSchema","enabled","testPrinterId","createInstance","printerType","registerCredentials","printerId","loginDto","apiKey","username","password","printerURL","testEvents","octoPrintEvent","WsMessage","WS_STATE_UPDATED","API_STATE_UPDATED","WS_CLOSED","WS_OPENED","WS_ERROR","moonrakerEvent","bambuEvent","prusaLinkEvent","listener","event","payload","send","forEach","te","on","log","setupSocketSession","promise","Promise","resolve","reject","error","open","_startTime","setInterval","warn","Error","socketState","SOCKET_STATE","authenticated","race","setTimeout","AppConstants","defaultWebsocketHandshakeTimeout","e","errorSummary","captureException","disallowEmittingEvents","emit","printerEvents","printersDeleted","printerIds","off"],"mappings":"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"}
@@ -8,81 +8,38 @@ Object.defineProperty(exports, "BootTask", {
8
8
  return BootTask;
9
9
  }
10
10
  });
11
- const _mongoose = /*#__PURE__*/ _interop_require_wildcard(require("mongoose"));
12
- const _serverenv = require("../server.env");
13
11
  const _containertokens = require("../container.tokens");
14
12
  const _serverconstants = require("../server.constants");
15
13
  const _tasks = require("../tasks");
16
- function _getRequireWildcardCache(nodeInterop) {
17
- if (typeof WeakMap !== "function") return null;
18
- var cacheBabelInterop = new WeakMap();
19
- var cacheNodeInterop = new WeakMap();
20
- return (_getRequireWildcardCache = function(nodeInterop) {
21
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
22
- })(nodeInterop);
23
- }
24
- function _interop_require_wildcard(obj, nodeInterop) {
25
- if (!nodeInterop && obj && obj.__esModule) {
26
- return obj;
27
- }
28
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
29
- return {
30
- default: obj
31
- };
32
- }
33
- var cache = _getRequireWildcardCache(nodeInterop);
34
- if (cache && cache.has(obj)) {
35
- return cache.get(obj);
36
- }
37
- var newObj = {
38
- __proto__: null
39
- };
40
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
41
- for(var key in obj){
42
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
43
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
44
- if (desc && (desc.get || desc.set)) {
45
- Object.defineProperty(newObj, key, desc);
46
- } else {
47
- newObj[key] = obj[key];
48
- }
49
- }
50
- }
51
- newObj.default = obj;
52
- if (cache) {
53
- cache.set(obj, newObj);
54
- }
55
- return newObj;
56
- }
57
14
  class BootTask {
58
15
  taskManagerService;
59
16
  settingsStore;
60
17
  multerService;
61
18
  printerSocketStore;
62
- printerFilesStore;
63
19
  permissionService;
64
20
  roleService;
65
21
  userService;
66
22
  floorStore;
67
23
  configService;
68
24
  typeormService;
69
- isTypeormMode;
70
25
  printerThumbnailCache;
26
+ printFileDownloaderService;
27
+ fileStorageService;
71
28
  logger;
72
- constructor(loggerFactory, taskManagerService, settingsStore, multerService, printerSocketStore, printerFilesStore, permissionService, roleService, userService, floorStore, configService, typeormService, isTypeormMode, printerThumbnailCache){
29
+ constructor(loggerFactory, taskManagerService, settingsStore, multerService, printerSocketStore, permissionService, roleService, userService, floorStore, configService, typeormService, printerThumbnailCache, printFileDownloaderService, fileStorageService){
73
30
  this.taskManagerService = taskManagerService;
74
31
  this.settingsStore = settingsStore;
75
32
  this.multerService = multerService;
76
33
  this.printerSocketStore = printerSocketStore;
77
- this.printerFilesStore = printerFilesStore;
78
34
  this.permissionService = permissionService;
79
35
  this.roleService = roleService;
80
36
  this.userService = userService;
81
37
  this.floorStore = floorStore;
82
38
  this.configService = configService;
83
39
  this.typeormService = typeormService;
84
- this.isTypeormMode = isTypeormMode;
85
40
  this.printerThumbnailCache = printerThumbnailCache;
41
+ this.printFileDownloaderService = printFileDownloaderService;
42
+ this.fileStorageService = fileStorageService;
86
43
  this.logger = loggerFactory(BootTask.name);
87
44
  }
88
45
  async runOnce() {
@@ -91,26 +48,9 @@ class BootTask {
91
48
  await this.run();
92
49
  }
93
50
  async run() {
94
- if (this.isTypeormMode) {
95
- await this.typeormService.createConnection();
96
- } else {
97
- try {
98
- await this.createConnection();
99
- await this.migrateDatabase();
100
- } catch (e) {
101
- if (e instanceof _mongoose.default.Error) {
102
- if (!e.message.includes("Can't call `openUri()` on an active connection with different connection strings.")) {
103
- if (e.message.includes("ECONNREFUSED")) {
104
- this.logger.error("Database connection timed-out. Retrying in 5000.");
105
- } else {
106
- this.logger.error(`Database connection error: ${e.message}`);
107
- }
108
- this.taskManagerService.scheduleDisabledJob(_containertokens.DITokens.bootTask, false);
109
- return;
110
- }
111
- }
112
- }
113
- }
51
+ await this.typeormService.createConnection();
52
+ this.logger.log("Ensuring file storage directories exist");
53
+ await this.fileStorageService.ensureStorageDirectories();
114
54
  this.logger.log("Loading and synchronizing Server Settings");
115
55
  await this.settingsStore.loadSettings();
116
56
  this.logger.log("Synchronizing user permission and roles definition");
@@ -142,8 +82,6 @@ class BootTask {
142
82
  this.multerService.clearUploadsFolder();
143
83
  this.logger.log("Loading printer sockets");
144
84
  await this.printerSocketStore.loadPrinterSockets();
145
- this.logger.log("Loading files store");
146
- await this.printerFilesStore.loadFilesStore();
147
85
  this.logger.log("Loading floor store");
148
86
  await this.floorStore.loadStore();
149
87
  this.logger.log("Loading printer thumbnail cache");
@@ -163,7 +101,6 @@ class BootTask {
163
101
  const demoUsername = this.configService.get(_serverconstants.AppConstants.OVERRIDE_DEMO_USERNAME, _serverconstants.AppConstants.DEFAULT_DEMO_USERNAME);
164
102
  const demoPassword = this.configService.get(_serverconstants.AppConstants.OVERRIDE_DEMO_PASSWORD, _serverconstants.AppConstants.DEFAULT_DEMO_PASSWORD);
165
103
  const demoRole = this.configService.get(_serverconstants.AppConstants.OVERRIDE_DEMO_ROLE, _serverconstants.AppConstants.DEFAULT_DEMO_ROLE);
166
- const adminRole = this.roleService.getRoleByName(demoRole);
167
104
  const demoUserId = await this.userService.getDemoUserId();
168
105
  if (!demoUserId) {
169
106
  await this.userService.register({
@@ -174,7 +111,7 @@ class BootTask {
174
111
  isRootUser: false,
175
112
  needsPasswordChange: false,
176
113
  roles: [
177
- adminRole.id
114
+ demoRole
178
115
  ]
179
116
  });
180
117
  this.logger.log("Created demo account");
@@ -182,29 +119,12 @@ class BootTask {
182
119
  await this.userService.setVerifiedById(demoUserId, true);
183
120
  await this.userService.setIsRootUserById(demoUserId, false);
184
121
  await this.userService.updatePasswordUnsafeByUsername(demoUsername, demoPassword);
185
- await this.userService.setUserRoleIds(demoUserId, [
186
- adminRole.id
122
+ await this.userService.setUserRoles(demoUserId, [
123
+ demoRole
187
124
  ]);
188
125
  this.logger.log("Updated demo account");
189
126
  }
190
127
  }
191
- async createConnection() {
192
- if (!this.isTypeormMode) {
193
- const envUrl = (0, _serverenv.fetchMongoDBConnectionString)();
194
- if (!envUrl?.length) {
195
- throw new Error("Mongodb connection string not set");
196
- }
197
- await (0, _mongoose.connect)(envUrl, {
198
- serverSelectionTimeoutMS: 1500
199
- });
200
- await (0, _mongoose.syncIndexes)();
201
- }
202
- }
203
- async migrateDatabase() {
204
- if (!this.isTypeormMode) {
205
- await (0, _serverenv.runMigrations)(_mongoose.default.connection.db, _mongoose.default.connection.getClient());
206
- }
207
- }
208
128
  }
209
129
 
210
130
  //# sourceMappingURL=boot.task.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tasks/boot.task.ts"],"names":["BootTask","logger","loggerFactory","taskManagerService","settingsStore","multerService","printerSocketStore","printerFilesStore","permissionService","roleService","userService","floorStore","configService","typeormService","isTypeormMode","printerThumbnailCache","name","runOnce","registerJobOrTask","ServerTasks","SERVER_BOOT_TASK","log","run","createConnection","migrateDatabase","e","mongoose","Error","message","includes","error","scheduleDisabledJob","DITokens","bootTask","loadSettings","syncPermissions","syncRoles","isDemoMode","warn","AppConstants","OVERRIDE_IS_DEMO_MODE","createOrUpdateDemoAccount","setLoginRequired","setRegistrationEnabled","loginRequired","get","OVERRIDE_LOGIN_REQUIRED","registrationEnabled","OVERRIDE_REGISTRATION_ENABLED","overrideJwtSecret","OVERRIDE_JWT_SECRET","overrideJwtExpiresIn","OVERRIDE_JWT_EXPIRES_IN","persistOptionalCredentialSettings","clearUploadsFolder","loadPrinterSockets","loadFilesStore","loadStore","loadCache","length","getAllValues","process","env","SAFEMODE_ENABLED","BOOT_TASKS","forEach","task","disableJob","demoUsername","OVERRIDE_DEMO_USERNAME","DEFAULT_DEMO_USERNAME","demoPassword","OVERRIDE_DEMO_PASSWORD","DEFAULT_DEMO_PASSWORD","demoRole","OVERRIDE_DEMO_ROLE","DEFAULT_DEMO_ROLE","adminRole","getRoleByName","demoUserId","getDemoUserId","register","username","password","isDemoUser","isVerified","isRootUser","needsPasswordChange","roles","id","setVerifiedById","setIsRootUserById","updatePasswordUnsafeByUsername","setUserRoleIds","envUrl","fetchMongoDBConnectionString","connect","serverSelectionTimeoutMS","syncIndexes","runMigrations","connection","db","getClient"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/tasks/boot.task.ts"],"names":["BootTask","logger","loggerFactory","taskManagerService","settingsStore","multerService","printerSocketStore","permissionService","roleService","userService","floorStore","configService","typeormService","printerThumbnailCache","printFileDownloaderService","fileStorageService","name","runOnce","registerJobOrTask","ServerTasks","SERVER_BOOT_TASK","log","run","createConnection","ensureStorageDirectories","loadSettings","syncPermissions","syncRoles","isDemoMode","warn","AppConstants","OVERRIDE_IS_DEMO_MODE","createOrUpdateDemoAccount","setLoginRequired","setRegistrationEnabled","loginRequired","get","OVERRIDE_LOGIN_REQUIRED","registrationEnabled","OVERRIDE_REGISTRATION_ENABLED","overrideJwtSecret","OVERRIDE_JWT_SECRET","overrideJwtExpiresIn","OVERRIDE_JWT_EXPIRES_IN","persistOptionalCredentialSettings","clearUploadsFolder","loadPrinterSockets","loadStore","loadCache","length","getAllValues","process","env","SAFEMODE_ENABLED","BOOT_TASKS","forEach","task","disableJob","DITokens","bootTask","demoUsername","OVERRIDE_DEMO_USERNAME","DEFAULT_DEMO_USERNAME","demoPassword","OVERRIDE_DEMO_PASSWORD","DEFAULT_DEMO_PASSWORD","demoRole","OVERRIDE_DEMO_ROLE","DEFAULT_DEMO_ROLE","demoUserId","getDemoUserId","register","username","password","isDemoUser","isVerified","isRootUser","needsPasswordChange","roles","setVerifiedById","setIsRootUserById","updatePasswordUnsafeByUsername","setUserRoles"],"mappings":";;;;+BAqBaA;;;eAAAA;;;iCArBY;iCACI;uBAGD;AAiBrB,MAAMA;;;;;;;;;;;;;;IACXC,OAAsB;IAEtB,YACEC,aAA6B,EAC7B,AAAiBC,kBAAsC,EACvD,AAAiBC,aAA4B,EAC7C,AAAiBC,aAA4B,EAC7C,AAAiBC,kBAAsC,EACvD,AAAiBC,iBAAoC,EACrD,AAAiBC,WAAwB,EACzC,AAAiBC,WAAwB,EACzC,AAAiBC,UAAsB,EACvC,AAAiBC,aAA4B,EAC7C,AAAiBC,cAA8B,EAC/C,AAAiBC,qBAA4C,EAC7D,AAAiBC,0BAAsD,EACvE,AAAiBC,kBAAsC,CACvD;aAbiBZ,qBAAAA;aACAC,gBAAAA;aACAC,gBAAAA;aACAC,qBAAAA;aACAC,oBAAAA;aACAC,cAAAA;aACAC,cAAAA;aACAC,aAAAA;aACAC,gBAAAA;aACAC,iBAAAA;aACAC,wBAAAA;aACAC,6BAAAA;aACAC,qBAAAA;QAEjB,IAAI,CAACd,MAAM,GAAGC,cAAcF,SAASgB,IAAI;IAC3C;IAEA,MAAMC,UAAU;QAEd,IAAI,CAACd,kBAAkB,CAACe,iBAAiB,CAACC,kBAAW,CAACC,gBAAgB;QAEtE,IAAI,CAACnB,MAAM,CAACoB,GAAG,CAAC;QAChB,MAAM,IAAI,CAACC,GAAG;IAChB;IAEA,MAAMA,MAAM;QACV,MAAM,IAAI,CAACV,cAAc,CAACW,gBAAgB;QAE1C,IAAI,CAACtB,MAAM,CAACoB,GAAG,CAAC;QAChB,MAAM,IAAI,CAACN,kBAAkB,CAACS,wBAAwB;QAEtD,IAAI,CAACvB,MAAM,CAACoB,GAAG,CAAC;QAChB,MAAM,IAAI,CAACjB,aAAa,CAACqB,YAAY;QAErC,IAAI,CAACxB,MAAM,CAACoB,GAAG,CAAC;QAChB,MAAM,IAAI,CAACd,iBAAiB,CAACmB,eAAe;QAC5C,MAAM,IAAI,CAAClB,WAAW,CAACmB,SAAS;QAEhC,MAAMC,aAAa,IAAI,CAACjB,aAAa,CAACiB,UAAU;QAChD,IAAIA,YAAY;YACd,IAAI,CAAC3B,MAAM,CAAC4B,IAAI,CAAC,CAAC,6BAA6B,EAAEC,6BAAY,CAACC,qBAAqB,EAAE;YACrF,MAAM,IAAI,CAACC,yBAAyB;YACpC,IAAI,CAAC/B,MAAM,CAAC4B,IAAI,CACd,CAAC,yDAAyD,EAAEC,6BAAY,CAACC,qBAAqB,EAAE;YAElG,MAAM,IAAI,CAAC3B,aAAa,CAAC6B,gBAAgB,CAAC;YAC1C,MAAM,IAAI,CAAC7B,aAAa,CAAC8B,sBAAsB,CAAC;QAClD,OAAO;YACL,MAAMC,gBAAgB,IAAI,CAACxB,aAAa,CAACyB,GAAG,CAAgBN,6BAAY,CAACO,uBAAuB,EAAE;YAClG,IAAIF,kBAAkB,MAAM;gBAC1B,IAAI,CAAClC,MAAM,CAAC4B,IAAI,CAAC,CAAC,8BAA8B,EAAEC,6BAAY,CAACO,uBAAuB,EAAE;gBACxF,MAAM,IAAI,CAACjC,aAAa,CAAC6B,gBAAgB,CAACE,kBAAkB;YAC9D;YAEA,MAAMG,sBAAsB,IAAI,CAAC3B,aAAa,CAACyB,GAAG,CAACN,6BAAY,CAACS,6BAA6B,EAAE;YAC/F,IAAID,wBAAwB,MAAM;gBAChC,IAAI,CAACrC,MAAM,CAAC4B,IAAI,CAAC,CAAC,oCAAoC,EAAEC,6BAAY,CAACS,6BAA6B,EAAE;gBACpG,MAAM,IAAI,CAACnC,aAAa,CAAC8B,sBAAsB,CAACI,wBAAwB;YAC1E;QACF;QAEA,MAAME,oBAAoB,IAAI,CAAC7B,aAAa,CAACyB,GAAG,CAASN,6BAAY,CAACW,mBAAmB;QACzF,MAAMC,uBAAuB,IAAI,CAAC/B,aAAa,CAACyB,GAAG,CAASN,6BAAY,CAACa,uBAAuB;QAChG,MAAM,IAAI,CAACvC,aAAa,CAACwC,iCAAiC,CAACJ,mBAAmBE;QAE9E,IAAI,CAACzC,MAAM,CAACoB,GAAG,CAAC;QAChB,IAAI,CAAChB,aAAa,CAACwC,kBAAkB;QACrC,IAAI,CAAC5C,MAAM,CAACoB,GAAG,CAAC;QAChB,MAAM,IAAI,CAACf,kBAAkB,CAACwC,kBAAkB;QAChD,IAAI,CAAC7C,MAAM,CAACoB,GAAG,CAAC;QAChB,MAAM,IAAI,CAACX,UAAU,CAACqC,SAAS;QAC/B,IAAI,CAAC9C,MAAM,CAACoB,GAAG,CAAC;QAChB,MAAM,IAAI,CAACR,qBAAqB,CAACmC,SAAS;QAC1C,MAAMC,SAAS,MAAM,IAAI,CAACpC,qBAAqB,CAACqC,YAAY;QAC5D,IAAI,CAACjD,MAAM,CAACoB,GAAG,CAAC,CAAC,OAAO,EAAE4B,OAAOA,MAAM,CAAC,aAAa,CAAC;QAEtD,IAAIE,QAAQC,GAAG,CAACC,gBAAgB,KAAK,QAAQ;YAC3C,IAAI,CAACpD,MAAM,CAAC4B,IAAI,CAAC;QACnB,OAAO;YACLV,kBAAW,CAACmC,UAAU,CAACC,OAAO,CAAC,CAACC;gBAC9B,IAAI,CAACrD,kBAAkB,CAACe,iBAAiB,CAACsC;YAC5C;QACF;QAGA,IAAI,CAACrD,kBAAkB,CAACsD,UAAU,CAACC,yBAAQ,CAACC,QAAQ,EAAE;IACxD;IAEA,MAAM3B,4BAA4B;QAChC,MAAM4B,eAAe,IAAI,CAACjD,aAAa,CAACyB,GAAG,CACzCN,6BAAY,CAAC+B,sBAAsB,EACnC/B,6BAAY,CAACgC,qBAAqB;QAEpC,MAAMC,eAAe,IAAI,CAACpD,aAAa,CAACyB,GAAG,CACzCN,6BAAY,CAACkC,sBAAsB,EACnClC,6BAAY,CAACmC,qBAAqB;QAEpC,MAAMC,WAAW,IAAI,CAACvD,aAAa,CAACyB,GAAG,CACrCN,6BAAY,CAACqC,kBAAkB,EAC/BrC,6BAAY,CAACsC,iBAAiB;QAGhC,MAAMC,aAAa,MAAM,IAAI,CAAC5D,WAAW,CAAC6D,aAAa;QACvD,IAAI,CAACD,YAAY;YACf,MAAM,IAAI,CAAC5D,WAAW,CAAC8D,QAAQ,CAAC;gBAC9BC,UAAUZ;gBACVa,UAAUV;gBACVW,YAAY;gBACZC,YAAY;gBACZC,YAAY;gBACZC,qBAAqB;gBACrBC,OAAO;oBAACZ;iBAAS;YACnB;YACA,IAAI,CAACjE,MAAM,CAACoB,GAAG,CAAC;QAClB,OAAO;YACL,MAAM,IAAI,CAACZ,WAAW,CAACsE,eAAe,CAACV,YAAY;YACnD,MAAM,IAAI,CAAC5D,WAAW,CAACuE,iBAAiB,CAACX,YAAY;YACrD,MAAM,IAAI,CAAC5D,WAAW,CAACwE,8BAA8B,CAACrB,cAAcG;YACpE,MAAM,IAAI,CAACtD,WAAW,CAACyE,YAAY,CAACb,YAAY;gBAACH;aAAS;YAC1D,IAAI,CAACjE,MAAM,CAACoB,GAAG,CAAC;QAClB;IACF;AACF"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "PrintJobAnalysisTask", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return PrintJobAnalysisTask;
9
+ }
10
+ });
11
+ const _printjobentity = require("../entities/print-job.entity");
12
+ class PrintJobAnalysisTask {
13
+ printJobService;
14
+ fileAnalysisService;
15
+ fileStorageService;
16
+ logger;
17
+ printJobRepository;
18
+ constructor(loggerFactory, printJobService, fileAnalysisService, fileStorageService, typeormService){
19
+ this.printJobService = printJobService;
20
+ this.fileAnalysisService = fileAnalysisService;
21
+ this.fileStorageService = fileStorageService;
22
+ this.logger = loggerFactory(PrintJobAnalysisTask.name);
23
+ this.printJobRepository = typeormService.getDataSource().getRepository(_printjobentity.PrintJob);
24
+ }
25
+ async run() {
26
+ try {
27
+ const pendingJobs = await this.printJobRepository.find({
28
+ where: [
29
+ {
30
+ analysisState: "NOT_ANALYZED",
31
+ status: "PENDING"
32
+ },
33
+ {
34
+ analysisState: "ANALYZING"
35
+ }
36
+ ],
37
+ take: 10
38
+ });
39
+ if (pendingJobs.length === 0) {
40
+ this.logger.debug("No pending print jobs to analyze");
41
+ return;
42
+ }
43
+ this.logger.log(`Found ${pendingJobs.length} print job(s) to analyze`);
44
+ for (const job of pendingJobs){
45
+ try {
46
+ await this.analyzeJob(job);
47
+ } catch (error) {
48
+ this.logger.error(`Failed to analyze job ${job.id}: ${job.fileName}`, error);
49
+ job.analysisState = "FAILED";
50
+ job.statusReason = `Analysis failed: ${error instanceof Error ? error.message : "Unknown error"}`;
51
+ await this.printJobRepository.save(job);
52
+ }
53
+ }
54
+ this.logger.log(`Completed analysis of ${pendingJobs.length} print job(s)`);
55
+ } catch (error) {
56
+ this.logger.error("Failed to run print job analysis task", error);
57
+ }
58
+ }
59
+ async analyzeJob(job) {
60
+ this.logger.log(`Analyzing print job ${job.id}: ${job.fileName}`);
61
+ job.analysisState = "ANALYZING";
62
+ await this.printJobRepository.save(job);
63
+ if (!job.fileStorageId) {
64
+ throw new Error("Job has no fileStorageId - cannot analyze");
65
+ }
66
+ const cachedMetadata = await this.fileStorageService.loadMetadata(job.fileStorageId);
67
+ let metadata;
68
+ let thumbnails = [];
69
+ if (cachedMetadata) {
70
+ this.logger.log(`Using cached metadata for job ${job.id} (storageId: ${job.fileStorageId})`);
71
+ metadata = cachedMetadata;
72
+ thumbnails = [];
73
+ } else {
74
+ const filePath = await this.resolveFilePath(job);
75
+ if (!filePath) {
76
+ throw new Error("File path could not be resolved");
77
+ }
78
+ const exists = await this.fileAnalysisService.needsAnalysis(filePath);
79
+ if (!exists) {
80
+ throw new Error(`File not found: ${filePath}`);
81
+ }
82
+ const analysisResult = await this.fileAnalysisService.analyzeFile(filePath);
83
+ metadata = analysisResult.metadata;
84
+ thumbnails = analysisResult.thumbnails;
85
+ let thumbnailMetadata = [];
86
+ if (thumbnails && thumbnails.length > 0) {
87
+ thumbnailMetadata = await this.fileStorageService.saveThumbnails(job.fileStorageId, thumbnails);
88
+ this.logger.log(`Saved ${thumbnailMetadata.length} thumbnail(s) for job ${job.id}`);
89
+ }
90
+ const fileHash = job.fileHash || undefined;
91
+ await this.fileStorageService.saveMetadata(job.fileStorageId, metadata, fileHash, job.fileName, thumbnailMetadata);
92
+ this.logger.log(`Cached metadata JSON for job ${job.id}`);
93
+ }
94
+ await this.printJobService.handleFileAnalyzed(job.id, metadata, thumbnails);
95
+ this.logger.log(`Successfully analyzed job ${job.id}: ${job.fileName}`);
96
+ }
97
+ async resolveFilePath(job) {
98
+ if (job.fileStorageId) {
99
+ try {
100
+ const exists = await this.fileStorageService.fileExists(job.fileStorageId);
101
+ if (!exists) {
102
+ this.logger.warn(`File ${job.fileStorageId} not found in storage for job ${job.id}`);
103
+ return null;
104
+ }
105
+ return this.fileStorageService.getFilePath(job.fileStorageId);
106
+ } catch (error) {
107
+ this.logger.error(`Failed to resolve file path for job ${job.id}: ${error}`);
108
+ return null;
109
+ }
110
+ }
111
+ this.logger.debug(`Job ${job.id} has no fileStorageId - cannot analyze remotely stored file`);
112
+ return null;
113
+ }
114
+ }
115
+
116
+ //# sourceMappingURL=print-job-analysis.task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/tasks/print-job-analysis.task.ts"],"names":["PrintJobAnalysisTask","logger","printJobRepository","loggerFactory","printJobService","fileAnalysisService","fileStorageService","typeormService","name","getDataSource","getRepository","PrintJob","run","pendingJobs","find","where","analysisState","status","take","length","debug","log","job","analyzeJob","error","id","fileName","statusReason","Error","message","save","fileStorageId","cachedMetadata","loadMetadata","metadata","thumbnails","filePath","resolveFilePath","exists","needsAnalysis","analysisResult","analyzeFile","thumbnailMetadata","saveThumbnails","fileHash","undefined","saveMetadata","handleFileAnalyzed","fileExists","warn","getFilePath"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "PrinterFilesLoadTask", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return PrinterFilesLoadTask;
9
+ }
10
+ });
11
+ class PrinterFilesLoadTask {
12
+ printerFilesStore;
13
+ logger;
14
+ constructor(loggerFactory, printerFilesStore){
15
+ this.printerFilesStore = printerFilesStore;
16
+ this.logger = loggerFactory(PrinterFilesLoadTask.name);
17
+ }
18
+ async run() {
19
+ this.logger.log("Loading files store in background");
20
+ try {
21
+ await this.printerFilesStore.loadFilesStore();
22
+ this.logger.log("Files store loaded successfully in background");
23
+ } catch (error) {
24
+ this.logger.error("Failed to load files store in background", error);
25
+ }
26
+ }
27
+ }
28
+
29
+ //# sourceMappingURL=printer-files-load.task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/tasks/printer-files-load.task.ts"],"names":["PrinterFilesLoadTask","logger","loggerFactory","printerFilesStore","name","run","log","loadFilesStore","error"],"mappings":";;;;+BAQaA;;;eAAAA;;;AAAN,MAAMA;;IACXC,OAAsB;IAEtB,YACEC,aAA6B,EAC7B,AAAiBC,iBAAoC,CACrD;aADiBA,oBAAAA;QAEjB,IAAI,CAACF,MAAM,GAAGC,cAAcF,qBAAqBI,IAAI;IACvD;IAEA,MAAMC,MAAM;QACV,IAAI,CAACJ,MAAM,CAACK,GAAG,CAAC;QAChB,IAAI;YACF,MAAM,IAAI,CAACH,iBAAiB,CAACI,cAAc;YAC3C,IAAI,CAACN,MAAM,CAACK,GAAG,CAAC;QAClB,EAAE,OAAOE,OAAO;YACd,IAAI,CAACP,MAAM,CAACO,KAAK,CAAC,4CAA4CA;QAChE;IACF;AACF"}
@@ -48,7 +48,7 @@ class SocketIoTask {
48
48
  printerEvents,
49
49
  trackedUploads
50
50
  };
51
- this.socketIoGateway.send(_socketiogateway.IO_MESSAGES.LegacyUpdate, socketIoData);
51
+ this.socketIoGateway.send(_socketiogateway.IO_MESSAGES.Update, socketIoData);
52
52
  }
53
53
  }
54
54
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tasks/socketio.task.ts"],"names":["SocketIoTask","logger","loggerFactory","socketIoGateway","floorStore","printerSocketStore","printerEventsCache","printerCache","fileUploadTrackerCache","eventEmitter2","name","on","socketIoConnectedEvent","sendUpdate","run","floors","listCache","printers","listCachedPrinters","socketStates","getSocketStatesById","printerEvents","getAllKeyValues","trackedUploads","getUploads","socketIoData","send","IO_MESSAGES","LegacyUpdate"],"mappings":";;;;+BAWaA;;;eAAAA;;;iCAXgC;gCACN;AAUhC,MAAMA;;;;;;;;IACXC,OAAsB;IAEtB,YACEC,aAA6B,EAC7B,AAAiBC,eAAgC,EACjD,AAAiBC,UAAsB,EACvC,AAAiBC,kBAAsC,EACvD,AAAiBC,kBAAsC,EACvD,AAAiBC,YAA0B,EAC3C,AAAiBC,sBAA8C,EAC/D,AAAiBC,aAA4B,CAC7C;aAPiBN,kBAAAA;aACAC,aAAAA;aACAC,qBAAAA;aACAC,qBAAAA;aACAC,eAAAA;aACAC,yBAAAA;aACAC,gBAAAA;QAEjB,IAAI,CAACR,MAAM,GAAGC,cAAcF,aAAaU,IAAI;QAE7C,IAAI,CAACD,aAAa,CAACE,EAAE,CAACC,sCAAsB,EAAE;YAC5C,MAAM,IAAI,CAACC,UAAU;QACvB;IACF;IAEA,MAAMC,MAAM;QACV,MAAM,IAAI,CAACD,UAAU;IACvB;IAEA,MAAMA,aAAa;QACjB,MAAME,SAAS,MAAM,IAAI,CAACX,UAAU,CAACY,SAAS;QAC9C,MAAMC,WAAW,MAAM,IAAI,CAACV,YAAY,CAACW,kBAAkB,CAAC;QAC5D,MAAMC,eAAe,IAAI,CAACd,kBAAkB,CAACe,mBAAmB;QAChE,MAAMC,gBAAgB,MAAM,IAAI,CAACf,kBAAkB,CAACgB,eAAe;QACnE,MAAMC,iBAAiB,IAAI,CAACf,sBAAsB,CAACgB,UAAU;QAE7D,MAAMC,eAAe;YACnBR;YACAF;YACAI;YACAE;YACAE;QACF;QAEA,IAAI,CAACpB,eAAe,CAACuB,IAAI,CAACC,4BAAW,CAACC,YAAY,EAAEH;IACtD;AACF"}
1
+ {"version":3,"sources":["../../src/tasks/socketio.task.ts"],"names":["SocketIoTask","logger","loggerFactory","socketIoGateway","floorStore","printerSocketStore","printerEventsCache","printerCache","fileUploadTrackerCache","eventEmitter2","name","on","socketIoConnectedEvent","sendUpdate","run","floors","listCache","printers","listCachedPrinters","socketStates","getSocketStatesById","printerEvents","getAllKeyValues","trackedUploads","getUploads","socketIoData","send","IO_MESSAGES","Update"],"mappings":";;;;+BAWaA;;;eAAAA;;;iCAXgC;gCACN;AAUhC,MAAMA;;;;;;;;IACXC,OAAsB;IAEtB,YACEC,aAA6B,EAC7B,AAAiBC,eAAgC,EACjD,AAAiBC,UAAsB,EACvC,AAAiBC,kBAAsC,EACvD,AAAiBC,kBAAsC,EACvD,AAAiBC,YAA0B,EAC3C,AAAiBC,sBAA8C,EAC/D,AAAiBC,aAA4B,CAC7C;aAPiBN,kBAAAA;aACAC,aAAAA;aACAC,qBAAAA;aACAC,qBAAAA;aACAC,eAAAA;aACAC,yBAAAA;aACAC,gBAAAA;QAEjB,IAAI,CAACR,MAAM,GAAGC,cAAcF,aAAaU,IAAI;QAE7C,IAAI,CAACD,aAAa,CAACE,EAAE,CAACC,sCAAsB,EAAE;YAC5C,MAAM,IAAI,CAACC,UAAU;QACvB;IACF;IAEA,MAAMC,MAAM;QACV,MAAM,IAAI,CAACD,UAAU;IACvB;IAEA,MAAMA,aAAa;QACjB,MAAME,SAAS,MAAM,IAAI,CAACX,UAAU,CAACY,SAAS;QAC9C,MAAMC,WAAW,MAAM,IAAI,CAACV,YAAY,CAACW,kBAAkB,CAAC;QAC5D,MAAMC,eAAe,IAAI,CAACd,kBAAkB,CAACe,mBAAmB;QAChE,MAAMC,gBAAgB,MAAM,IAAI,CAACf,kBAAkB,CAACgB,eAAe;QACnE,MAAMC,iBAAiB,IAAI,CAACf,sBAAsB,CAACgB,UAAU;QAE7D,MAAMC,eAAe;YACnBR;YACAF;YACAI;YACAE;YACAE;QACF;QAEA,IAAI,CAACpB,eAAe,CAACuB,IAAI,CAACC,4BAAW,CAACC,MAAM,EAAEH;IAChD;AACF"}
package/dist/tasks.js CHANGED
@@ -36,9 +36,10 @@ class ServerTasks {
36
36
  registerTask(_containertokens.DITokens.softwareUpdateTask, _taskpresets.TASK_PRESETS.RUNDELAYED, 1500),
37
37
  registerTask(_containertokens.DITokens.clientDistDownloadTask, _taskpresets.TASK_PRESETS.RUNONCE),
38
38
  registerTask(_containertokens.DITokens.socketIoTask, _taskpresets.TASK_PRESETS.PERIODIC, 500),
39
- registerTask(_containertokens.DITokens.printerFileCleanTask, _taskpresets.TASK_PRESETS.RUNONCE, 60 * 1000, true),
40
39
  registerTask(_containertokens.DITokens.printerWebsocketTask, _taskpresets.TASK_PRESETS.PERIODIC, 2000, true),
41
- registerTask(_containertokens.DITokens.printerWebsocketRestoreTask, _taskpresets.TASK_PRESETS.PERIODIC, 15 * 1000, false)
40
+ registerTask(_containertokens.DITokens.printerWebsocketRestoreTask, _taskpresets.TASK_PRESETS.PERIODIC, 15 * 1000, false),
41
+ registerTask(_containertokens.DITokens.printerFilesLoadTask, _taskpresets.TASK_PRESETS.RUNDELAYED, 1000),
42
+ registerTask(_containertokens.DITokens.printJobAnalysisTask, _taskpresets.TASK_PRESETS.PERIODIC, 30 * 1000, false)
42
43
  ];
43
44
  }
44
45
 
package/dist/tasks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/tasks.ts"],"names":["ServerTasks","registerTask","task","preset","milliseconds","runImmediately","timingPreset","id","name","SERVER_BOOT_TASK","DITokens","bootTask","TaskPresets","PERIODIC_DISABLED","BOOT_TASKS","softwareUpdateTask","RUNDELAYED","clientDistDownloadTask","RUNONCE","socketIoTask","PERIODIC","printerFileCleanTask","printerWebsocketTask","printerWebsocketRestoreTask"],"mappings":";;;;;;;;;;;QAkBaA;eAAAA;;QAXGC;eAAAA;;;6BAP4B;iCACnB;AAMlB,SAASA,aAAaC,IAAS,EAAEC,MAAoB,EAAEC,eAAe,CAAC,EAAEC,iBAAiB,KAAK;IACpG,IAAIC,eAAe;QAAE,GAAGH,MAAM;IAAC;IAC/BG,aAAaF,YAAY,GAAGD,OAAOC,YAAY,IAAIA;IACnDE,aAAaD,cAAc,GAAGA,kBAAkB;IAChD,OAAO;QACLE,IAAIL,KAAKM,IAAI,IAAIN;QACjBA;QACAC,QAAQG;IACV;AACF;AAEO,MAAMN;IACX,OAAcS,mBAAmBR,aAAaS,yBAAQ,CAACC,QAAQ,EAAEC,yBAAW,CAACC,iBAAiB,EAAE,MAAM,OAAO;IAC7G,OAAcC,aAAa;QACzBb,aAAaS,yBAAQ,CAACK,kBAAkB,EAAEH,yBAAW,CAACI,UAAU,EAAE;QAClEf,aAAaS,yBAAQ,CAACO,sBAAsB,EAAEL,yBAAW,CAACM,OAAO;QACjEjB,aAAaS,yBAAQ,CAACS,YAAY,EAAEP,yBAAW,CAACQ,QAAQ,EAAE;QAC1DnB,aAAaS,yBAAQ,CAACW,oBAAoB,EAAET,yBAAW,CAACM,OAAO,EAAE,KAAK,MAAM;QAE5EjB,aAAaS,yBAAQ,CAACY,oBAAoB,EAAEV,yBAAW,CAACQ,QAAQ,EAAE,MAAM;QAExEnB,aAAaS,yBAAQ,CAACa,2BAA2B,EAAEX,yBAAW,CAACQ,QAAQ,EAAE,KAAK,MAAM;KACrF,CAAC;AACJ"}
1
+ {"version":3,"sources":["../src/tasks.ts"],"names":["ServerTasks","registerTask","task","preset","milliseconds","runImmediately","timingPreset","id","name","SERVER_BOOT_TASK","DITokens","bootTask","TaskPresets","PERIODIC_DISABLED","BOOT_TASKS","softwareUpdateTask","RUNDELAYED","clientDistDownloadTask","RUNONCE","socketIoTask","PERIODIC","printerWebsocketTask","printerWebsocketRestoreTask","printerFilesLoadTask","printJobAnalysisTask"],"mappings":";;;;;;;;;;;QAkBaA;eAAAA;;QAXGC;eAAAA;;;6BAP4B;iCACnB;AAMlB,SAASA,aAAaC,IAAS,EAAEC,MAAoB,EAAEC,eAAe,CAAC,EAAEC,iBAAiB,KAAK;IACpG,IAAIC,eAAe;QAAE,GAAGH,MAAM;IAAC;IAC/BG,aAAaF,YAAY,GAAGD,OAAOC,YAAY,IAAIA;IACnDE,aAAaD,cAAc,GAAGA,kBAAkB;IAChD,OAAO;QACLE,IAAIL,KAAKM,IAAI,IAAIN;QACjBA;QACAC,QAAQG;IACV;AACF;AAEO,MAAMN;IACX,OAAuBS,mBAAmBR,aAAaS,yBAAQ,CAACC,QAAQ,EAAEC,yBAAW,CAACC,iBAAiB,EAAE,MAAM,OAAO;IACtH,OAAuBC,aAAa;QAClCb,aAAaS,yBAAQ,CAACK,kBAAkB,EAAEH,yBAAW,CAACI,UAAU,EAAE;QAClEf,aAAaS,yBAAQ,CAACO,sBAAsB,EAAEL,yBAAW,CAACM,OAAO;QACjEjB,aAAaS,yBAAQ,CAACS,YAAY,EAAEP,yBAAW,CAACQ,QAAQ,EAAE;QAE1DnB,aAAaS,yBAAQ,CAACW,oBAAoB,EAAET,yBAAW,CAACQ,QAAQ,EAAE,MAAM;QAExEnB,aAAaS,yBAAQ,CAACY,2BAA2B,EAAEV,yBAAW,CAACQ,QAAQ,EAAE,KAAK,MAAM;QAEpFnB,aAAaS,yBAAQ,CAACa,oBAAoB,EAAEX,yBAAW,CAACI,UAAU,EAAE;QAEpEf,aAAaS,yBAAQ,CAACc,oBAAoB,EAAEZ,yBAAW,CAACQ,QAAQ,EAAE,KAAK,MAAM;KAC9E,CAAC;AACJ"}
@@ -11,83 +11,43 @@ Object.defineProperty(exports, "KeyDiffCache", {
11
11
  class KeyDiffCache {
12
12
  deletedKeys = [];
13
13
  updatedKeys = [];
14
- keyValueStore = {};
14
+ keyValueStore = new Map();
15
15
  async getAllValues() {
16
- const keys = Object.keys(this.keyValueStore);
17
- return await this.getValuesBatch(keys);
16
+ return Array.from(this.keyValueStore.values());
18
17
  }
19
18
  async getAllKeyValues() {
20
- return this.keyValueStore;
19
+ return Object.fromEntries(this.keyValueStore);
21
20
  }
22
21
  async getValue(key) {
23
- const keyString = key?.toString();
24
- if (!keyString?.length) {
25
- throw new Error("Key must be a non-empty serializable string");
26
- }
27
- return this.keyValueStore[keyString];
28
- }
29
- async processStateDiffs() {
30
- const updatedKeys = [
31
- ...this.updatedKeys
32
- ];
33
- const updatedValues = await this.getValuesBatch(updatedKeys);
34
- const deletedKeys = [
35
- ...this.deletedKeys
36
- ];
37
- this.resetDiffs();
38
- return {
39
- updatedKeys,
40
- updatedValues,
41
- deletedKeys
42
- };
22
+ return this.keyValueStore.get(key);
43
23
  }
44
24
  async setKeyValuesBatch(keyValues, markUpdated = true) {
45
- keyValues.forEach(({ key, value })=>{
46
- this.setKeyValue(key, value);
47
- });
25
+ for (const { key, value } of keyValues){
26
+ await this.setKeyValue(key, value, false);
27
+ }
48
28
  if (markUpdated) {
49
29
  const updatedKeys = keyValues.map(({ key })=>key);
50
30
  this.batchMarkUpdated(updatedKeys);
51
31
  }
52
32
  }
53
33
  async deleteKeysBatch(keys, markDeleted = true) {
54
- keys.forEach((key)=>{
55
- this.deleteKeyValue(key);
56
- });
34
+ for (const key of keys){
35
+ await this.deleteKeyValue(key, false);
36
+ }
57
37
  if (markDeleted) {
58
38
  this.batchMarkDeleted(keys);
59
39
  }
60
40
  }
61
- async getValuesBatch(keys) {
62
- const keyStrings = keys.map((key)=>key?.toString());
63
- if (keyStrings.some((key)=>!key?.length)) {
64
- throw new Error("Key must be a non-empty serializable string, and one of them is not");
65
- }
66
- const values = [];
67
- for (const keyString of keyStrings){
68
- const value = await this.getValue(keyString.toString());
69
- values.push(value);
70
- }
71
- return values;
72
- }
73
41
  async setKeyValue(key, value, markUpdated = true) {
74
- const keyString = this.convertToKeyString(key);
75
- if (!keyString?.length) {
76
- throw new Error("Key must be a non-empty serializable string");
77
- }
78
- this.keyValueStore[keyString] = value;
42
+ this.keyValueStore.set(key, value);
79
43
  if (markUpdated) {
80
- this.markUpdated(keyString);
44
+ this.markUpdated(key);
81
45
  }
82
46
  }
83
47
  async deleteKeyValue(key, markDeleted = true) {
84
- const keyString = this.convertToKeyString(key);
85
- if (!keyString?.length) {
86
- throw new Error("Key must be a non-empty serializable string");
87
- }
88
- delete this.keyValueStore[keyString];
48
+ this.keyValueStore.delete(key);
89
49
  if (markDeleted) {
90
- this.markDeleted(keyString);
50
+ this.markDeleted(key);
91
51
  }
92
52
  }
93
53
  batchMarkDeleted(keys) {
@@ -96,24 +56,23 @@ class KeyDiffCache {
96
56
  }
97
57
  }
98
58
  markUpdated(key) {
99
- if (this.deletedKeys.includes(key)) {
100
- this.deletedKeys.splice(this.deletedKeys.indexOf(key), 1);
59
+ const deletedIndex = this.deletedKeys.indexOf(key);
60
+ if (deletedIndex !== -1) {
61
+ this.deletedKeys.splice(deletedIndex, 1);
101
62
  }
102
63
  if (!this.updatedKeys.includes(key)) {
103
64
  this.updatedKeys.push(key);
104
65
  }
105
66
  }
106
67
  markDeleted(key) {
107
- if (this.updatedKeys.includes(key)) {
108
- this.updatedKeys.splice(this.updatedKeys.indexOf(key), 1);
68
+ const updatedIndex = this.updatedKeys.indexOf(key);
69
+ if (updatedIndex !== -1) {
70
+ this.updatedKeys.splice(updatedIndex, 1);
109
71
  }
110
72
  if (!this.deletedKeys.includes(key)) {
111
73
  this.deletedKeys.push(key);
112
74
  }
113
75
  }
114
- convertToKeyString(key) {
115
- return key?.toString();
116
- }
117
76
  resetDiffs() {
118
77
  this.deletedKeys = [];
119
78
  this.updatedKeys = [];