@fdm-monster/server 2.0.10 → 2.0.11

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 (929) hide show
  1. package/.claude/CLAUDE.md +76 -0
  2. package/.vite-hooks/pre-commit +1 -0
  3. package/.yarn/install-state.gz +0 -0
  4. package/.yarn/releases/yarn-4.13.0.cjs +940 -0
  5. package/.yarnrc.yml +1 -1
  6. package/README.md +1 -1
  7. package/RELEASE_NOTES.MD +14 -0
  8. package/dist/_virtual/_@oxc-project_runtime@0.127.0/helpers/decorate.js +9 -0
  9. package/dist/_virtual/_@oxc-project_runtime@0.127.0/helpers/decorateMetadata.js +6 -0
  10. package/dist/_virtual/_rolldown/runtime.js +13 -0
  11. package/dist/_virtual/_virtual_controllers.js +43 -0
  12. package/dist/consoles/typeorm-create.js +51 -112
  13. package/dist/consoles/typeorm-create.js.map +1 -1
  14. package/dist/consoles/typeorm-generate.js +99 -165
  15. package/dist/consoles/typeorm-generate.js.map +1 -1
  16. package/dist/consoles/typeorm-migrate.js +35 -43
  17. package/dist/consoles/typeorm-migrate.js.map +1 -1
  18. package/dist/constants/authorization.constants.js +75 -97
  19. package/dist/constants/authorization.constants.js.map +1 -1
  20. package/dist/constants/event.constants.js +11 -41
  21. package/dist/constants/event.constants.js.map +1 -1
  22. package/dist/constants/http-status-codes.constants.js +319 -71
  23. package/dist/constants/http-status-codes.constants.js.map +1 -1
  24. package/dist/constants/server-settings.constants.js +45 -87
  25. package/dist/constants/server-settings.constants.js.map +1 -1
  26. package/dist/constants/service.constants.js +3 -21
  27. package/dist/constants/service.constants.js.map +1 -1
  28. package/dist/container.js +167 -181
  29. package/dist/container.js.map +1 -1
  30. package/dist/container.tokens.js +78 -85
  31. package/dist/container.tokens.js.map +1 -1
  32. package/dist/controllers/auth.controller.js +156 -225
  33. package/dist/controllers/auth.controller.js.map +1 -1
  34. package/dist/controllers/batch-call.controller.js +79 -116
  35. package/dist/controllers/batch-call.controller.js.map +1 -1
  36. package/dist/controllers/camera-stream.controller.js +74 -119
  37. package/dist/controllers/camera-stream.controller.js.map +1 -1
  38. package/dist/controllers/dto/update-client-dist.dto.js +8 -15
  39. package/dist/controllers/dto/update-client-dist.dto.js.map +1 -1
  40. package/dist/controllers/file-storage.controller.js +251 -312
  41. package/dist/controllers/file-storage.controller.js.map +1 -1
  42. package/dist/controllers/first-time-setup.controller.js +83 -135
  43. package/dist/controllers/first-time-setup.controller.js.map +1 -1
  44. package/dist/controllers/floor.controller.js +111 -175
  45. package/dist/controllers/floor.controller.js.map +1 -1
  46. package/dist/controllers/metrics.controller.js +27 -53
  47. package/dist/controllers/metrics.controller.js.map +1 -1
  48. package/dist/controllers/print-job.controller.js +366 -451
  49. package/dist/controllers/print-job.controller.js.map +1 -1
  50. package/dist/controllers/print-queue.controller.js +329 -427
  51. package/dist/controllers/print-queue.controller.js.map +1 -1
  52. package/dist/controllers/printer-files.controller.js +244 -305
  53. package/dist/controllers/printer-files.controller.js.map +1 -1
  54. package/dist/controllers/printer-maintenance-log.controller.js +109 -165
  55. package/dist/controllers/printer-maintenance-log.controller.js.map +1 -1
  56. package/dist/controllers/printer-settings.controller.js +50 -81
  57. package/dist/controllers/printer-settings.controller.js.map +1 -1
  58. package/dist/controllers/printer-tag.controller.js +104 -166
  59. package/dist/controllers/printer-tag.controller.js.map +1 -1
  60. package/dist/controllers/printer.controller.js +352 -469
  61. package/dist/controllers/printer.controller.js.map +1 -1
  62. package/dist/controllers/server-private.controller.js +182 -239
  63. package/dist/controllers/server-private.controller.js.map +1 -1
  64. package/dist/controllers/server-public.controller.js +104 -158
  65. package/dist/controllers/server-public.controller.js.map +1 -1
  66. package/dist/controllers/settings.controller.js +229 -364
  67. package/dist/controllers/settings.controller.js.map +1 -1
  68. package/dist/controllers/slicer-compat.controller.js +179 -206
  69. package/dist/controllers/slicer-compat.controller.js.map +1 -1
  70. package/dist/controllers/user.controller.js +226 -348
  71. package/dist/controllers/user.controller.js.map +1 -1
  72. package/dist/controllers/validation/auth-controller.validation.js +5 -14
  73. package/dist/controllers/validation/auth-controller.validation.js.map +1 -1
  74. package/dist/controllers/validation/batch-controller.validation.js +13 -35
  75. package/dist/controllers/validation/batch-controller.validation.js.map +1 -1
  76. package/dist/controllers/validation/generic.validation.js +6 -23
  77. package/dist/controllers/validation/generic.validation.js.map +1 -1
  78. package/dist/controllers/validation/printer-completion-controller.validation.js +5 -14
  79. package/dist/controllers/validation/printer-completion-controller.validation.js.map +1 -1
  80. package/dist/controllers/validation/printer-controller.validation.js +16 -48
  81. package/dist/controllers/validation/printer-controller.validation.js.map +1 -1
  82. package/dist/controllers/validation/printer-files-controller.validation.js +12 -47
  83. package/dist/controllers/validation/printer-files-controller.validation.js.map +1 -1
  84. package/dist/controllers/validation/printer-settings-controller.validation.js +5 -14
  85. package/dist/controllers/validation/printer-settings-controller.validation.js.map +1 -1
  86. package/dist/controllers/validation/server-private.validation.js +7 -14
  87. package/dist/controllers/validation/server-private.validation.js.map +1 -1
  88. package/dist/controllers/validation/setting.validation.js +12 -34
  89. package/dist/controllers/validation/setting.validation.js.map +1 -1
  90. package/dist/controllers/validation/user-controller.validation.js +27 -65
  91. package/dist/controllers/validation/user-controller.validation.js.map +1 -1
  92. package/dist/data-source.js +74 -79
  93. package/dist/data-source.js.map +1 -1
  94. package/dist/entities/camera-stream.entity.js +49 -91
  95. package/dist/entities/camera-stream.entity.js.map +1 -1
  96. package/dist/entities/floor-position.entity.js +38 -75
  97. package/dist/entities/floor-position.entity.js.map +1 -1
  98. package/dist/entities/floor.entity.js +18 -48
  99. package/dist/entities/floor.entity.js.map +1 -1
  100. package/dist/entities/index.js +14 -66
  101. package/dist/entities/print-job.entity.js +114 -196
  102. package/dist/entities/print-job.entity.js.map +1 -1
  103. package/dist/entities/printer-maintenance-log.entity.js +61 -140
  104. package/dist/entities/printer-maintenance-log.entity.js.map +1 -1
  105. package/dist/entities/printer-tag.entity.js +33 -66
  106. package/dist/entities/printer-tag.entity.js.map +1 -1
  107. package/dist/entities/printer.entity.js +67 -124
  108. package/dist/entities/printer.entity.js.map +1 -1
  109. package/dist/entities/refresh-token.entity.js +31 -66
  110. package/dist/entities/refresh-token.entity.js.map +1 -1
  111. package/dist/entities/role.entity.js +16 -45
  112. package/dist/entities/role.entity.js.map +1 -1
  113. package/dist/entities/settings.entity.js +38 -77
  114. package/dist/entities/settings.entity.js.map +1 -1
  115. package/dist/entities/tag.entity.js +19 -43
  116. package/dist/entities/tag.entity.js.map +1 -1
  117. package/dist/entities/user-role.entity.js +30 -67
  118. package/dist/entities/user-role.entity.js.map +1 -1
  119. package/dist/entities/user.entity.js +32 -87
  120. package/dist/entities/user.entity.js.map +1 -1
  121. package/dist/exceptions/failed-dependency.exception.js +11 -18
  122. package/dist/exceptions/failed-dependency.exception.js.map +1 -1
  123. package/dist/exceptions/job.exceptions.js +9 -16
  124. package/dist/exceptions/job.exceptions.js.map +1 -1
  125. package/dist/exceptions/runtime.exceptions.js +82 -121
  126. package/dist/exceptions/runtime.exceptions.js.map +1 -1
  127. package/dist/handlers/event-emitter.js +13 -20
  128. package/dist/handlers/event-emitter.js.map +1 -1
  129. package/dist/handlers/logger-factory.js +7 -14
  130. package/dist/handlers/logger-factory.js.map +1 -1
  131. package/dist/handlers/logger.js +26 -36
  132. package/dist/handlers/logger.js.map +1 -1
  133. package/dist/handlers/logging/file-logging.transport.js +17 -31
  134. package/dist/handlers/logging/file-logging.transport.js.map +1 -1
  135. package/dist/handlers/logging/loki-logging.transport.js +34 -50
  136. package/dist/handlers/logging/loki-logging.transport.js.map +1 -1
  137. package/dist/handlers/logging/static.logger.js +83 -124
  138. package/dist/handlers/logging/static.logger.js.map +1 -1
  139. package/dist/handlers/validators.js +8 -25
  140. package/dist/handlers/validators.js.map +1 -1
  141. package/dist/index.js +23 -26
  142. package/dist/index.js.map +1 -1
  143. package/dist/middleware/authenticate.js +26 -69
  144. package/dist/middleware/authenticate.js.map +1 -1
  145. package/dist/middleware/database.js +16 -22
  146. package/dist/middleware/database.js.map +1 -1
  147. package/dist/middleware/demo.middleware.js +19 -27
  148. package/dist/middleware/demo.middleware.js.map +1 -1
  149. package/dist/middleware/exception.filter.js +109 -133
  150. package/dist/middleware/exception.filter.js.map +1 -1
  151. package/dist/middleware/global.middleware.js +28 -47
  152. package/dist/middleware/global.middleware.js.map +1 -1
  153. package/dist/middleware/param-converter.middleware.js +31 -69
  154. package/dist/middleware/param-converter.middleware.js.map +1 -1
  155. package/dist/middleware/passport.js +38 -64
  156. package/dist/middleware/passport.js.map +1 -1
  157. package/dist/middleware/printer-resolver.js +26 -33
  158. package/dist/middleware/printer-resolver.js.map +1 -1
  159. package/dist/middleware/printer.js +56 -94
  160. package/dist/middleware/printer.js.map +1 -1
  161. package/dist/middleware/slicer-api-key.middleware.js +23 -26
  162. package/dist/middleware/slicer-api-key.middleware.js.map +1 -1
  163. package/dist/middleware/socketio.middleware.js +21 -32
  164. package/dist/middleware/socketio.middleware.js.map +1 -1
  165. package/dist/migrations/1706829146617-InitSqlite.js +84 -91
  166. package/dist/migrations/1706829146617-InitSqlite.js.map +1 -1
  167. package/dist/migrations/1707494762198-PrinterGroup.js +22 -29
  168. package/dist/migrations/1707494762198-PrinterGroup.js.map +1 -1
  169. package/dist/migrations/1708465930665-ChangePrintCompletionDeletePrinterCascade.js +26 -33
  170. package/dist/migrations/1708465930665-ChangePrintCompletionDeletePrinterCascade.js.map +1 -1
  171. package/dist/migrations/1713300747465-ChangeRoleNameUnique.js +27 -34
  172. package/dist/migrations/1713300747465-ChangeRoleNameUnique.js.map +1 -1
  173. package/dist/migrations/1713897879622-AddPrinterType.js +34 -41
  174. package/dist/migrations/1713897879622-AddPrinterType.js.map +1 -1
  175. package/dist/migrations/1720338804844-RemovePrinterFile.js +12 -19
  176. package/dist/migrations/1720338804844-RemovePrinterFile.js.map +1 -1
  177. package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js +26 -33
  178. package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js.map +1 -1
  179. package/dist/migrations/1766576698569-DropPermissions.js +11 -18
  180. package/dist/migrations/1766576698569-DropPermissions.js.map +1 -1
  181. package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js +26 -33
  182. package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js.map +1 -1
  183. package/dist/migrations/1767279607392-DropCustomGcode.js +12 -19
  184. package/dist/migrations/1767279607392-DropCustomGcode.js.map +1 -1
  185. package/dist/migrations/1767291804417-DropPrintCompletions.js +12 -19
  186. package/dist/migrations/1767291804417-DropPrintCompletions.js.map +1 -1
  187. package/dist/migrations/1767352862576-DropSettingsFileClean.js +18 -25
  188. package/dist/migrations/1767352862576-DropSettingsFileClean.js.map +1 -1
  189. package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js +26 -33
  190. package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js.map +1 -1
  191. package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js +18 -25
  192. package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js.map +1 -1
  193. package/dist/migrations/1767432108916-RenameGroupToTag.js +22 -29
  194. package/dist/migrations/1767432108916-RenameGroupToTag.js.map +1 -1
  195. package/dist/migrations/1767451444137-AddPrintJob.js +20 -27
  196. package/dist/migrations/1767451444137-AddPrintJob.js.map +1 -1
  197. package/dist/migrations/1767909428129-AddPrinterMaintenanceLog.js +14 -21
  198. package/dist/migrations/1767909428129-AddPrinterMaintenanceLog.js.map +1 -1
  199. package/dist/plugins/controllers-plugin.js +21 -0
  200. package/dist/plugins/controllers-plugin.js.map +1 -0
  201. package/dist/server.constants.js +79 -91
  202. package/dist/server.constants.js.map +1 -1
  203. package/dist/server.core.js +56 -122
  204. package/dist/server.core.js.map +1 -1
  205. package/dist/server.env.js +56 -121
  206. package/dist/server.env.js.map +1 -1
  207. package/dist/server.host.js +66 -99
  208. package/dist/server.host.js.map +1 -1
  209. package/dist/services/authentication/auth.service.js +103 -126
  210. package/dist/services/authentication/auth.service.js.map +1 -1
  211. package/dist/services/authentication/jwt.service.js +23 -32
  212. package/dist/services/authentication/jwt.service.js.map +1 -1
  213. package/dist/services/bambu/bambu-ftp.adapter.js +194 -236
  214. package/dist/services/bambu/bambu-ftp.adapter.js.map +1 -1
  215. package/dist/services/bambu/bambu-mqtt.adapter.js +394 -449
  216. package/dist/services/bambu/bambu-mqtt.adapter.js.map +1 -1
  217. package/dist/services/bambu/bambu.client.js +64 -65
  218. package/dist/services/bambu/bambu.client.js.map +1 -1
  219. package/dist/services/bambu/mqtt-message.types.js +1 -6
  220. package/dist/services/bambu.api.js +230 -247
  221. package/dist/services/bambu.api.js.map +1 -1
  222. package/dist/services/core/batch-call.service.js +139 -163
  223. package/dist/services/core/batch-call.service.js.map +1 -1
  224. package/dist/services/core/client-bundle.service.js +126 -165
  225. package/dist/services/core/client-bundle.service.js.map +1 -1
  226. package/dist/services/core/config.service.js +16 -26
  227. package/dist/services/core/config.service.js.map +1 -1
  228. package/dist/services/core/cradle.service.js +11 -19
  229. package/dist/services/core/cradle.service.js.map +1 -1
  230. package/dist/services/core/github.service.js +59 -79
  231. package/dist/services/core/github.service.js.map +1 -1
  232. package/dist/services/core/http-client.factory.js +30 -38
  233. package/dist/services/core/http-client.factory.js.map +1 -1
  234. package/dist/services/core/logs-manager.service.js +61 -84
  235. package/dist/services/core/logs-manager.service.js.map +1 -1
  236. package/dist/services/core/monsterpi.service.js +26 -36
  237. package/dist/services/core/monsterpi.service.js.map +1 -1
  238. package/dist/services/core/multer.service.js +69 -129
  239. package/dist/services/core/multer.service.js.map +1 -1
  240. package/dist/services/core/server-release.service.js +77 -99
  241. package/dist/services/core/server-release.service.js.map +1 -1
  242. package/dist/services/core/yaml.service.js +443 -573
  243. package/dist/services/core/yaml.service.js.map +1 -1
  244. package/dist/services/file-analysis.service.js +134 -144
  245. package/dist/services/file-analysis.service.js.map +1 -1
  246. package/dist/services/file-storage.service.js +324 -423
  247. package/dist/services/file-storage.service.js.map +1 -1
  248. package/dist/services/interfaces/auth.service.interface.js +1 -6
  249. package/dist/services/interfaces/camera-stream.dto.js +23 -41
  250. package/dist/services/interfaces/camera-stream.dto.js.map +1 -1
  251. package/dist/services/interfaces/camera-stream.service.interface.js +1 -6
  252. package/dist/services/interfaces/file-upload-tracker.interface.js +1 -6
  253. package/dist/services/interfaces/floor.dto.js +31 -55
  254. package/dist/services/interfaces/floor.dto.js.map +1 -1
  255. package/dist/services/interfaces/floor.service.interface.js +1 -6
  256. package/dist/services/interfaces/jwt.service.interface.js +1 -6
  257. package/dist/services/interfaces/login.dto.js +10 -17
  258. package/dist/services/interfaces/login.dto.js.map +1 -1
  259. package/dist/services/interfaces/page.interface.js +5 -12
  260. package/dist/services/interfaces/page.interface.js.map +1 -1
  261. package/dist/services/interfaces/permission.service.interface.js +1 -6
  262. package/dist/services/interfaces/printer-file.dto.js +1 -6
  263. package/dist/services/interfaces/printer-maintenance-log.dto.js +1 -6
  264. package/dist/services/interfaces/printer-tag.dto.js +11 -26
  265. package/dist/services/interfaces/printer-tag.dto.js.map +1 -1
  266. package/dist/services/interfaces/printer-tag.service.interface.js +1 -6
  267. package/dist/services/interfaces/printer.dto.js +21 -36
  268. package/dist/services/interfaces/printer.dto.js.map +1 -1
  269. package/dist/services/interfaces/printer.service.interface.js +1 -6
  270. package/dist/services/interfaces/refresh-token.dto.js +9 -16
  271. package/dist/services/interfaces/refresh-token.dto.js.map +1 -1
  272. package/dist/services/interfaces/refresh-token.service.interface.js +1 -6
  273. package/dist/services/interfaces/role-service.interface.js +1 -6
  274. package/dist/services/interfaces/role.dto.js +7 -14
  275. package/dist/services/interfaces/role.dto.js.map +1 -1
  276. package/dist/services/interfaces/settings.dto.js +10 -17
  277. package/dist/services/interfaces/settings.dto.js.map +1 -1
  278. package/dist/services/interfaces/settings.service.interface.js +1 -6
  279. package/dist/services/interfaces/tag.dto.js +1 -6
  280. package/dist/services/interfaces/task.interfaces.js +1 -6
  281. package/dist/services/interfaces/user-role.dto.js +9 -16
  282. package/dist/services/interfaces/user-role.dto.js.map +1 -1
  283. package/dist/services/interfaces/user-service.interface.js +1 -6
  284. package/dist/services/interfaces/user.dto.js +22 -37
  285. package/dist/services/interfaces/user.dto.js.map +1 -1
  286. package/dist/services/moonraker/constants/moonraker-event.dto.js +16 -31
  287. package/dist/services/moonraker/constants/moonraker-event.dto.js.map +1 -1
  288. package/dist/services/moonraker/constants/moonraker.constants.js +4 -11
  289. package/dist/services/moonraker/constants/moonraker.constants.js.map +1 -1
  290. package/dist/services/moonraker/dto/access/access-info.dto.js +1 -6
  291. package/dist/services/moonraker/dto/access/access-login-refresh.dto.js +1 -6
  292. package/dist/services/moonraker/dto/access/access-login-result.dto.js +1 -6
  293. package/dist/services/moonraker/dto/access/access-user-result.dto.js +1 -6
  294. package/dist/services/moonraker/dto/access/access-user.dto.js +1 -6
  295. package/dist/services/moonraker/dto/database/database-namespace-item.dto.js +1 -6
  296. package/dist/services/moonraker/dto/database/database-namespace-list.dto.js +1 -6
  297. package/dist/services/moonraker/dto/gcode-help.dto.js +1 -6
  298. package/dist/services/moonraker/dto/gcode-store.dto.js +1 -6
  299. package/dist/services/moonraker/dto/job-queue/enqueue-job.dto.js +1 -6
  300. package/dist/services/moonraker/dto/job-queue/job-queue-status.dto.js +1 -6
  301. package/dist/services/moonraker/dto/machine/machine-device-power-device-state.dto.js +1 -6
  302. package/dist/services/moonraker/dto/machine/machine-device-power-devices.dto.js +1 -6
  303. package/dist/services/moonraker/dto/machine/machine-peripherals-canbus.dto.js +1 -6
  304. package/dist/services/moonraker/dto/machine/machine-peripherals-serial.dto.js +1 -6
  305. package/dist/services/moonraker/dto/machine/machine-peripherals-usb.dto.js +1 -6
  306. package/dist/services/moonraker/dto/machine/machine-peripherals-video.dto.js +1 -6
  307. package/dist/services/moonraker/dto/machine/machine-system-info.dto.js +1 -6
  308. package/dist/services/moonraker/dto/machine/machine-update-status.dto.js +1 -6
  309. package/dist/services/moonraker/dto/machine/machine-wled-strips.dto.js +1 -6
  310. package/dist/services/moonraker/dto/notifier-list.dto.js +1 -6
  311. package/dist/services/moonraker/dto/objects/bed-mesh.dto.js +1 -6
  312. package/dist/services/moonraker/dto/objects/configfile.dto.js +1 -6
  313. package/dist/services/moonraker/dto/objects/display-status.dto.js +1 -6
  314. package/dist/services/moonraker/dto/objects/extruder.dto.js +1 -6
  315. package/dist/services/moonraker/dto/objects/fan.dto.js +1 -6
  316. package/dist/services/moonraker/dto/objects/filament-motion-sensor.dto.js +1 -6
  317. package/dist/services/moonraker/dto/objects/filament-switch-sensor.dto.js +1 -6
  318. package/dist/services/moonraker/dto/objects/gcode-move.dto.js +1 -6
  319. package/dist/services/moonraker/dto/objects/gcode.dto.js +1 -6
  320. package/dist/services/moonraker/dto/objects/heater-bed.dto.js +1 -6
  321. package/dist/services/moonraker/dto/objects/heaters.dto.js +1 -6
  322. package/dist/services/moonraker/dto/objects/idle-timeout.dto.js +6 -21
  323. package/dist/services/moonraker/dto/objects/idle-timeout.dto.js.map +1 -1
  324. package/dist/services/moonraker/dto/objects/mcu.dto.js +1 -6
  325. package/dist/services/moonraker/dto/objects/motion-report.dto.js +1 -6
  326. package/dist/services/moonraker/dto/objects/output-pin.dto.js +1 -6
  327. package/dist/services/moonraker/dto/objects/pause-resume.dto.js +1 -6
  328. package/dist/services/moonraker/dto/objects/print-stats.dto.js +9 -24
  329. package/dist/services/moonraker/dto/objects/print-stats.dto.js.map +1 -1
  330. package/dist/services/moonraker/dto/objects/printer-object.dto.js +1 -6
  331. package/dist/services/moonraker/dto/objects/printer-object.types.js +1 -6
  332. package/dist/services/moonraker/dto/objects/printer-objects-list.dto.js +28 -43
  333. package/dist/services/moonraker/dto/objects/printer-objects-list.dto.js.map +1 -1
  334. package/dist/services/moonraker/dto/objects/printer-objects-query.dto.js +1 -6
  335. package/dist/services/moonraker/dto/objects/stepper-enable.dto.js +1 -6
  336. package/dist/services/moonraker/dto/objects/system-stats.dto.js +1 -6
  337. package/dist/services/moonraker/dto/objects/temperature-fan.dto.js +1 -6
  338. package/dist/services/moonraker/dto/objects/temperature-sensor.dto.js +1 -6
  339. package/dist/services/moonraker/dto/objects/toolhead.dto.js +1 -6
  340. package/dist/services/moonraker/dto/objects/virtual-sdcard.dto.js +1 -6
  341. package/dist/services/moonraker/dto/objects/webhooks.dto.js +1 -6
  342. package/dist/services/moonraker/dto/octoprint-compat/api-job.dto.js +1 -6
  343. package/dist/services/moonraker/dto/octoprint-compat/api-login.dto.js +1 -6
  344. package/dist/services/moonraker/dto/octoprint-compat/api-printer.dto.js +1 -6
  345. package/dist/services/moonraker/dto/octoprint-compat/api-profiles.dto.js +1 -6
  346. package/dist/services/moonraker/dto/octoprint-compat/api-settings.dto.js +1 -6
  347. package/dist/services/moonraker/dto/octoprint-compat/api-version.dto.js +1 -6
  348. package/dist/services/moonraker/dto/octoprint-compat/server-version.dto.js +1 -6
  349. package/dist/services/moonraker/dto/printer-info.dto.js +7 -22
  350. package/dist/services/moonraker/dto/printer-info.dto.js.map +1 -1
  351. package/dist/services/moonraker/dto/printer-query-endstops.dto.js +1 -6
  352. package/dist/services/moonraker/dto/process-stats.dto.js +1 -6
  353. package/dist/services/moonraker/dto/rest/action-result.dto.js +1 -6
  354. package/dist/services/moonraker/dto/rest/error.dto.js +1 -6
  355. package/dist/services/moonraker/dto/rest/result.dto.js +6 -13
  356. package/dist/services/moonraker/dto/rest/result.dto.js.map +1 -1
  357. package/dist/services/moonraker/dto/rollover-logs.dto.js +1 -6
  358. package/dist/services/moonraker/dto/rpc/json-rpc-error.dto.js +1 -6
  359. package/dist/services/moonraker/dto/rpc/json-rpc-request.dto.js +1 -6
  360. package/dist/services/moonraker/dto/rpc/json-rpc-response.dto.js +1 -6
  361. package/dist/services/moonraker/dto/server/server-config.dto.js +1 -6
  362. package/dist/services/moonraker/dto/server/server-info.dto.js +7 -14
  363. package/dist/services/moonraker/dto/server/server-info.dto.js.map +1 -1
  364. package/dist/services/moonraker/dto/server-announcements/announcement-action.dto.js +1 -6
  365. package/dist/services/moonraker/dto/server-announcements/announcement-entry-id.dto.js +1 -6
  366. package/dist/services/moonraker/dto/server-announcements/announcement-feeds.dto.js +1 -6
  367. package/dist/services/moonraker/dto/server-announcements/announcement-list.dto.js +1 -6
  368. package/dist/services/moonraker/dto/server-files/server-file-directory-action.dto.js +1 -6
  369. package/dist/services/moonraker/dto/server-files/server-file-directory-info.dto.js +1 -6
  370. package/dist/services/moonraker/dto/server-files/server-file-metadata.dto.js +1 -6
  371. package/dist/services/moonraker/dto/server-files/server-file-root.dto.js +1 -6
  372. package/dist/services/moonraker/dto/server-files/server-file-thumbnail.dto.js +1 -6
  373. package/dist/services/moonraker/dto/server-files/server-file-zip-action.dto.js +1 -6
  374. package/dist/services/moonraker/dto/server-files/server-file.dto.js +1 -6
  375. package/dist/services/moonraker/dto/server-history/history-job.dto.js +1 -6
  376. package/dist/services/moonraker/dto/server-history/history-last-totals.dto.js +1 -6
  377. package/dist/services/moonraker/dto/server-history/history-list.dto.js +1 -6
  378. package/dist/services/moonraker/dto/server-history/history-totals.dto.js +1 -6
  379. package/dist/services/moonraker/dto/server-history/job.dto.js +6 -21
  380. package/dist/services/moonraker/dto/server-history/job.dto.js.map +1 -1
  381. package/dist/services/moonraker/dto/server-sensors/sensor-info.dto.js +1 -6
  382. package/dist/services/moonraker/dto/server-sensors/sensor-list.dto.js +1 -6
  383. package/dist/services/moonraker/dto/server-sensors/sensor-measurements.dto.js +1 -6
  384. package/dist/services/moonraker/dto/server-webcams/webcam-item.dto.js +1 -6
  385. package/dist/services/moonraker/dto/server-webcams/webcam-list.dto.js +1 -6
  386. package/dist/services/moonraker/dto/server-webcams/webcam-test.dto.js +1 -6
  387. package/dist/services/moonraker/dto/spoolman/spoolman-active-spool.dto.js +1 -6
  388. package/dist/services/moonraker/dto/spoolman/spoolman-proxy-request.dto.js +1 -6
  389. package/dist/services/moonraker/dto/spoolman/spoolman-response.dto.js +1 -6
  390. package/dist/services/moonraker/dto/spoolman/spoolman-status.dto.js +1 -6
  391. package/dist/services/moonraker/dto/sudo-info.dto.js +1 -6
  392. package/dist/services/moonraker/dto/sudo-response.dto.js +1 -6
  393. package/dist/services/moonraker/dto/temperature-store.dto.js +1 -6
  394. package/dist/services/moonraker/dto/websocket/connection-identify-response.dto.js +1 -6
  395. package/dist/services/moonraker/dto/websocket/connection-identify.dto.js +1 -6
  396. package/dist/services/moonraker/dto/websocket/json-rpc-event.dto.js +1 -6
  397. package/dist/services/moonraker/dto/websocket/message.types.js +1 -6
  398. package/dist/services/moonraker/dto/websocket/methods.js +29 -44
  399. package/dist/services/moonraker/dto/websocket/methods.js.map +1 -1
  400. package/dist/services/moonraker/dto/websocket/notify-active-spool-set.params.js +1 -6
  401. package/dist/services/moonraker/dto/websocket/notify-agent-event.params.js +1 -6
  402. package/dist/services/moonraker/dto/websocket/notify-announcement-update.params.js +1 -6
  403. package/dist/services/moonraker/dto/websocket/notify-announcement.params.js +1 -6
  404. package/dist/services/moonraker/dto/websocket/notify-button-event.params.js +1 -6
  405. package/dist/services/moonraker/dto/websocket/notify-filelist-changed.params.js +11 -18
  406. package/dist/services/moonraker/dto/websocket/notify-filelist-changed.params.js.map +1 -1
  407. package/dist/services/moonraker/dto/websocket/notify-history-changed.params.js +1 -6
  408. package/dist/services/moonraker/dto/websocket/notify-job-queue-changed.params.js +1 -6
  409. package/dist/services/moonraker/dto/websocket/notify-proc-stat-update.params.js +1 -6
  410. package/dist/services/moonraker/dto/websocket/notify-sensor-update.params.js +1 -6
  411. package/dist/services/moonraker/dto/websocket/notify-service-state-changed.params.js +1 -6
  412. package/dist/services/moonraker/dto/websocket/notify-spoolman-status-changed.js +1 -6
  413. package/dist/services/moonraker/dto/websocket/notify-sudo-alert.params.js +1 -6
  414. package/dist/services/moonraker/dto/websocket/notify-update-response.params.js +7 -22
  415. package/dist/services/moonraker/dto/websocket/notify-update-response.params.js.map +1 -1
  416. package/dist/services/moonraker/dto/websocket/notify-user-change.params.js +1 -6
  417. package/dist/services/moonraker/moonraker-websocket.adapter.js +313 -348
  418. package/dist/services/moonraker/moonraker-websocket.adapter.js.map +1 -1
  419. package/dist/services/moonraker/moonraker.client.js +536 -559
  420. package/dist/services/moonraker/moonraker.client.js.map +1 -1
  421. package/dist/services/moonraker.api.js +167 -192
  422. package/dist/services/moonraker.api.js.map +1 -1
  423. package/dist/services/octoprint/constants/firmware-update-settings.constants.js +19 -28
  424. package/dist/services/octoprint/constants/firmware-update-settings.constants.js.map +1 -1
  425. package/dist/services/octoprint/constants/octoprint-service.constants.js +3 -30
  426. package/dist/services/octoprint/constants/octoprint-service.constants.js.map +1 -1
  427. package/dist/services/octoprint/constants/octoprint-websocket.constants.js +41 -56
  428. package/dist/services/octoprint/constants/octoprint-websocket.constants.js.map +1 -1
  429. package/dist/services/octoprint/dto/access/user-list.dto.js +1 -6
  430. package/dist/services/octoprint/dto/access/user.dto.js +1 -6
  431. package/dist/services/octoprint/dto/auth/current-user.dto.js +1 -6
  432. package/dist/services/octoprint/dto/auth/login.dto.js +1 -6
  433. package/dist/services/octoprint/dto/connection/connection-state.type.js +23 -30
  434. package/dist/services/octoprint/dto/connection/connection-state.type.js.map +1 -1
  435. package/dist/services/octoprint/dto/connection/connection.dto.js +1 -6
  436. package/dist/services/octoprint/dto/events/client-authed.dto.js +1 -6
  437. package/dist/services/octoprint/dto/events/client-closed.dto.js +1 -6
  438. package/dist/services/octoprint/dto/events/client-opened.dto.js +1 -6
  439. package/dist/services/octoprint/dto/events/dwelling.dto.js +1 -6
  440. package/dist/services/octoprint/dto/events/file-added.dto.js +1 -6
  441. package/dist/services/octoprint/dto/events/file-deselected.dto.js +1 -6
  442. package/dist/services/octoprint/dto/events/file-removed.dto.js +1 -6
  443. package/dist/services/octoprint/dto/events/folder-added.dto.js +1 -6
  444. package/dist/services/octoprint/dto/events/home.dto.js +1 -6
  445. package/dist/services/octoprint/dto/events/metadata-analysis-finished.dto.js +1 -6
  446. package/dist/services/octoprint/dto/events/metadata-analysis-started.dto.js +1 -6
  447. package/dist/services/octoprint/dto/events/metadata-statistics-updated.dto.js +1 -6
  448. package/dist/services/octoprint/dto/events/position-update.dto.js +1 -6
  449. package/dist/services/octoprint/dto/events/print-cancelled.dto.js +1 -6
  450. package/dist/services/octoprint/dto/events/print-cancelling.dto.js +1 -6
  451. package/dist/services/octoprint/dto/events/print-done.dto.js +1 -6
  452. package/dist/services/octoprint/dto/events/print-failed.dto.js +1 -6
  453. package/dist/services/octoprint/dto/events/print-paused.dto.js +1 -6
  454. package/dist/services/octoprint/dto/events/print-resumed.dto.js +1 -6
  455. package/dist/services/octoprint/dto/events/print-started.dto.js +1 -6
  456. package/dist/services/octoprint/dto/events/printer-state-changed.dto.js +1 -6
  457. package/dist/services/octoprint/dto/events/transfer-done.dto.js +1 -6
  458. package/dist/services/octoprint/dto/events/transfer-started.dto.js +1 -6
  459. package/dist/services/octoprint/dto/events/updated-files.dto.js +1 -6
  460. package/dist/services/octoprint/dto/events/upload.dto.js +1 -6
  461. package/dist/services/octoprint/dto/events/user-logged-in.dto.js +1 -6
  462. package/dist/services/octoprint/dto/events/z-change.dto.js +1 -6
  463. package/dist/services/octoprint/dto/files/gcode-analysis.dto.js +1 -6
  464. package/dist/services/octoprint/dto/files/octoprint-file.dto.js +1 -6
  465. package/dist/services/octoprint/dto/files/octoprint-files-response.dto.js +1 -6
  466. package/dist/services/octoprint/dto/job/current-job.dto.js +8 -15
  467. package/dist/services/octoprint/dto/job/current-job.dto.js.map +1 -1
  468. package/dist/services/octoprint/dto/job/job.dto.js +1 -6
  469. package/dist/services/octoprint/dto/octoprint-event.dto.js +21 -39
  470. package/dist/services/octoprint/dto/octoprint-event.dto.js.map +1 -1
  471. package/dist/services/octoprint/dto/printer/busy-file.dto.js +1 -6
  472. package/dist/services/octoprint/dto/printer/current-printer-state.dto.js +1 -6
  473. package/dist/services/octoprint/dto/printer/flags.dto.js +1 -6
  474. package/dist/services/octoprint/dto/printer/markings.dto.js +1 -6
  475. package/dist/services/octoprint/dto/printer/progress.dto.js +1 -6
  476. package/dist/services/octoprint/dto/printer/resends.dto.js +1 -6
  477. package/dist/services/octoprint/dto/printer/state.dto.js +1 -6
  478. package/dist/services/octoprint/dto/printer/temps.dto.js +1 -6
  479. package/dist/services/octoprint/dto/rest/error.dto.js +1 -6
  480. package/dist/services/octoprint/dto/server/server.dto.js +1 -6
  481. package/dist/services/octoprint/dto/server/version.dto.js +1 -6
  482. package/dist/services/octoprint/dto/settings/serial-settings.dto.js +1 -6
  483. package/dist/services/octoprint/dto/settings/settings-parts.type.js +1 -6
  484. package/dist/services/octoprint/dto/settings/settings.dto.js +1 -6
  485. package/dist/services/octoprint/dto/settings/virtual-printer-settings.dto.js +1 -6
  486. package/dist/services/octoprint/dto/system/system-info.dto.js +32 -39
  487. package/dist/services/octoprint/dto/system/system-info.dto.js.map +1 -1
  488. package/dist/services/octoprint/dto/websocket/connection-message.dto.js +1 -6
  489. package/dist/services/octoprint/dto/websocket/current-message.dto.js +1 -6
  490. package/dist/services/octoprint/dto/websocket/event-message.dto.js +1 -6
  491. package/dist/services/octoprint/dto/websocket/event.type.js +42 -49
  492. package/dist/services/octoprint/dto/websocket/event.type.js.map +1 -1
  493. package/dist/services/octoprint/dto/websocket/history-message.dto.js +1 -6
  494. package/dist/services/octoprint/dto/websocket/plugin-message.dto.js +1 -6
  495. package/dist/services/octoprint/dto/websocket/timelapse-message.dto.js +1 -6
  496. package/dist/services/octoprint/octoprint-api.routes.js +77 -94
  497. package/dist/services/octoprint/octoprint-api.routes.js.map +1 -1
  498. package/dist/services/octoprint/octoprint-websocket.adapter.js +265 -315
  499. package/dist/services/octoprint/octoprint-websocket.adapter.js.map +1 -1
  500. package/dist/services/octoprint/octoprint.client.js +220 -261
  501. package/dist/services/octoprint/octoprint.client.js.map +1 -1
  502. package/dist/services/octoprint/utils/api.utils.js +15 -32
  503. package/dist/services/octoprint/utils/api.utils.js.map +1 -1
  504. package/dist/services/octoprint/utils/file.utils.js +44 -67
  505. package/dist/services/octoprint/utils/file.utils.js.map +1 -1
  506. package/dist/services/octoprint/utils/octoprint-http-client.builder.js +16 -29
  507. package/dist/services/octoprint/utils/octoprint-http-client.builder.js.map +1 -1
  508. package/dist/services/octoprint.api.js +113 -128
  509. package/dist/services/octoprint.api.js.map +1 -1
  510. package/dist/services/orm/base.interface.js +1 -6
  511. package/dist/services/orm/base.service.js +57 -73
  512. package/dist/services/orm/base.service.js.map +1 -1
  513. package/dist/services/orm/camera-stream.service.js +21 -27
  514. package/dist/services/orm/camera-stream.service.js.map +1 -1
  515. package/dist/services/orm/floor-position.service.js +42 -49
  516. package/dist/services/orm/floor-position.service.js.map +1 -1
  517. package/dist/services/orm/floor.service.js +110 -138
  518. package/dist/services/orm/floor.service.js.map +1 -1
  519. package/dist/services/orm/permission.service.js +16 -23
  520. package/dist/services/orm/permission.service.js.map +1 -1
  521. package/dist/services/orm/print-job.service.js +443 -545
  522. package/dist/services/orm/print-job.service.js.map +1 -1
  523. package/dist/services/orm/printer-maintenance-log.service.js +102 -149
  524. package/dist/services/orm/printer-maintenance-log.service.js.map +1 -1
  525. package/dist/services/orm/printer-tag.service.js +93 -118
  526. package/dist/services/orm/printer-tag.service.js.map +1 -1
  527. package/dist/services/orm/printer.service.js +110 -158
  528. package/dist/services/orm/printer.service.js.map +1 -1
  529. package/dist/services/orm/refresh-token.service.js +69 -99
  530. package/dist/services/orm/refresh-token.service.js.map +1 -1
  531. package/dist/services/orm/role.service.js +99 -116
  532. package/dist/services/orm/role.service.js.map +1 -1
  533. package/dist/services/orm/settings.service.js +84 -94
  534. package/dist/services/orm/settings.service.js.map +1 -1
  535. package/dist/services/orm/user-role.service.js +39 -53
  536. package/dist/services/orm/user-role.service.js.map +1 -1
  537. package/dist/services/orm/user.service.js +142 -189
  538. package/dist/services/orm/user.service.js.map +1 -1
  539. package/dist/services/print-file-downloader.service.js +153 -167
  540. package/dist/services/print-file-downloader.service.js.map +1 -1
  541. package/dist/services/print-queue.service.js +240 -326
  542. package/dist/services/print-queue.service.js.map +1 -1
  543. package/dist/services/printer-api.factory.js +26 -43
  544. package/dist/services/printer-api.factory.js.map +1 -1
  545. package/dist/services/printer-api.interface.js +23 -53
  546. package/dist/services/printer-api.interface.js.map +1 -1
  547. package/dist/services/prusa-link/constants/prusalink-event.dto.js +9 -16
  548. package/dist/services/prusa-link/constants/prusalink-event.dto.js.map +1 -1
  549. package/dist/services/prusa-link/constants/prusalink.constants.js +4 -11
  550. package/dist/services/prusa-link/constants/prusalink.constants.js.map +1 -1
  551. package/dist/services/prusa-link/dto/file-response.dto.js +1 -6
  552. package/dist/services/prusa-link/dto/file.dto.js +1 -6
  553. package/dist/services/prusa-link/dto/job-state.dto.js +1 -6
  554. package/dist/services/prusa-link/dto/printer-state.dto.js +1 -6
  555. package/dist/services/prusa-link/dto/status.dto.js +1 -6
  556. package/dist/services/prusa-link/dto/version.dto.js +1 -6
  557. package/dist/services/prusa-link/prusa-link-http-polling.adapter.js +141 -157
  558. package/dist/services/prusa-link/prusa-link-http-polling.adapter.js.map +1 -1
  559. package/dist/services/prusa-link/prusa-link.api.js +206 -240
  560. package/dist/services/prusa-link/prusa-link.api.js.map +1 -1
  561. package/dist/services/prusa-link/utils/digest-auth.params.js +1 -6
  562. package/dist/services/prusa-link/utils/digest-auth.util.js +17 -24
  563. package/dist/services/prusa-link/utils/digest-auth.util.js.map +1 -1
  564. package/dist/services/prusa-link/utils/prusa-link-http-client.builder.js +92 -129
  565. package/dist/services/prusa-link/utils/prusa-link-http-client.builder.js.map +1 -1
  566. package/dist/services/socket.factory.js +21 -36
  567. package/dist/services/socket.factory.js.map +1 -1
  568. package/dist/services/task-manager.service.js +190 -174
  569. package/dist/services/task-manager.service.js.map +1 -1
  570. package/dist/services/typeorm/typeorm.service.js +31 -46
  571. package/dist/services/typeorm/typeorm.service.js.map +1 -1
  572. package/dist/services/validators/floor-service.validation.js +26 -63
  573. package/dist/services/validators/floor-service.validation.js.map +1 -1
  574. package/dist/services/validators/print-job.validation.js +11 -26
  575. package/dist/services/validators/print-job.validation.js.map +1 -1
  576. package/dist/services/validators/printer-maintenance-log.validation.js +17 -37
  577. package/dist/services/validators/printer-maintenance-log.validation.js.map +1 -1
  578. package/dist/services/validators/printer-service.validation.js +60 -125
  579. package/dist/services/validators/printer-service.validation.js.map +1 -1
  580. package/dist/services/validators/settings-service.validation.js +46 -106
  581. package/dist/services/validators/settings-service.validation.js.map +1 -1
  582. package/dist/services/validators/user-service.validation.js +19 -36
  583. package/dist/services/validators/user-service.validation.js.map +1 -1
  584. package/dist/services/validators/yaml-service.validation.js +96 -132
  585. package/dist/services/validators/yaml-service.validation.js.map +1 -1
  586. package/dist/services/websocket-adapter.interface.js +1 -6
  587. package/dist/shared/default-http-client.builder.js +74 -92
  588. package/dist/shared/default-http-client.builder.js.map +1 -1
  589. package/dist/shared/dtos/api-state.type.js +8 -15
  590. package/dist/shared/dtos/api-state.type.js.map +1 -1
  591. package/dist/shared/dtos/socket-login.dto.js +1 -6
  592. package/dist/shared/dtos/socket-state.type.js +11 -18
  593. package/dist/shared/dtos/socket-state.type.js.map +1 -1
  594. package/dist/shared/load-controllers.js +41 -19
  595. package/dist/shared/load-controllers.js.map +1 -1
  596. package/dist/shared/runtime-settings.migration.js +43 -50
  597. package/dist/shared/runtime-settings.migration.js.map +1 -1
  598. package/dist/shared/websocket-rpc-extended.adapter.js +74 -75
  599. package/dist/shared/websocket-rpc-extended.adapter.js.map +1 -1
  600. package/dist/shared/websocket.adapter.js +78 -63
  601. package/dist/shared/websocket.adapter.js.map +1 -1
  602. package/dist/state/file-upload-tracker.cache.js +63 -75
  603. package/dist/state/file-upload-tracker.cache.js.map +1 -1
  604. package/dist/state/floor.store.js +77 -89
  605. package/dist/state/floor.store.js.map +1 -1
  606. package/dist/state/printer-events.cache.js +237 -295
  607. package/dist/state/printer-events.cache.js.map +1 -1
  608. package/dist/state/printer-socket.store.js +156 -174
  609. package/dist/state/printer-socket.store.js.map +1 -1
  610. package/dist/state/printer-thumbnail.cache.js +129 -130
  611. package/dist/state/printer-thumbnail.cache.js.map +1 -1
  612. package/dist/state/printer.cache.js +87 -102
  613. package/dist/state/printer.cache.js.map +1 -1
  614. package/dist/state/settings.store.js +211 -234
  615. package/dist/state/settings.store.js.map +1 -1
  616. package/dist/state/socket-io.gateway.js +58 -87
  617. package/dist/state/socket-io.gateway.js.map +1 -1
  618. package/dist/state/test-printer-socket.store.js +116 -137
  619. package/dist/state/test-printer-socket.store.js.map +1 -1
  620. package/dist/state/validation/create-test-printer.validation.js +14 -21
  621. package/dist/state/validation/create-test-printer.validation.js.map +1 -1
  622. package/dist/task.presets.js +30 -37
  623. package/dist/task.presets.js.map +1 -1
  624. package/dist/tasks/boot.task.js +100 -128
  625. package/dist/tasks/boot.task.js.map +1 -1
  626. package/dist/tasks/client-bundle.task.js +20 -28
  627. package/dist/tasks/client-bundle.task.js.map +1 -1
  628. package/dist/tasks/print-job-analysis.task.js +88 -113
  629. package/dist/tasks/print-job-analysis.task.js.map +1 -1
  630. package/dist/tasks/printer-websocket-restore.task.js +41 -54
  631. package/dist/tasks/printer-websocket-restore.task.js.map +1 -1
  632. package/dist/tasks/printer-websocket.task.js +11 -19
  633. package/dist/tasks/printer-websocket.task.js.map +1 -1
  634. package/dist/tasks/socketio.task.js +35 -53
  635. package/dist/tasks/socketio.task.js.map +1 -1
  636. package/dist/tasks/software-update.task.js +12 -20
  637. package/dist/tasks/software-update.task.js.map +1 -1
  638. package/dist/tasks.js +27 -41
  639. package/dist/tasks.js.map +1 -1
  640. package/dist/types/express/index.d.js +1 -6
  641. package/dist/types/virtual-modules.d.js +1 -0
  642. package/dist/utils/array.util.js +9 -24
  643. package/dist/utils/array.util.js.map +1 -1
  644. package/dist/utils/bgcode/bgcode-thumbnail.parser.js +26 -44
  645. package/dist/utils/bgcode/bgcode-thumbnail.parser.js.map +1 -1
  646. package/dist/utils/bgcode/bgcode.constants.js +9 -45
  647. package/dist/utils/bgcode/bgcode.constants.js.map +1 -1
  648. package/dist/utils/bgcode/bgcode.types.js +57 -106
  649. package/dist/utils/bgcode/bgcode.types.js.map +1 -1
  650. package/dist/utils/bgcode/bgcode.utils.js +167 -256
  651. package/dist/utils/bgcode/bgcode.utils.js.map +1 -1
  652. package/dist/utils/bgcode/heatshrink-decoder.js +130 -170
  653. package/dist/utils/bgcode/heatshrink-decoder.js.map +1 -1
  654. package/dist/utils/bgcode/png-encoder.js +53 -66
  655. package/dist/utils/bgcode/png-encoder.js.map +1 -1
  656. package/dist/utils/bgcode/qoi-decoder.js +116 -135
  657. package/dist/utils/bgcode/qoi-decoder.js.map +1 -1
  658. package/dist/utils/cache/key-diff.cache.js +56 -85
  659. package/dist/utils/cache/key-diff.cache.js.map +1 -1
  660. package/dist/utils/correlation-token.util.js +4 -11
  661. package/dist/utils/correlation-token.util.js.map +1 -1
  662. package/dist/utils/crypto.utils.js +7 -23
  663. package/dist/utils/crypto.utils.js.map +1 -1
  664. package/dist/utils/env.utils.js +14 -49
  665. package/dist/utils/env.utils.js.map +1 -1
  666. package/dist/utils/error.utils.js +4 -11
  667. package/dist/utils/error.utils.js.map +1 -1
  668. package/dist/utils/fs.utils.js +26 -49
  669. package/dist/utils/fs.utils.js.map +1 -1
  670. package/dist/utils/gcode.utils.js +30 -43
  671. package/dist/utils/gcode.utils.js.map +1 -1
  672. package/dist/utils/image-dimensions.js +39 -54
  673. package/dist/utils/image-dimensions.js.map +1 -1
  674. package/dist/utils/job-stats.util.js +41 -72
  675. package/dist/utils/job-stats.util.js.map +1 -1
  676. package/dist/utils/normalize-url.js +135 -203
  677. package/dist/utils/normalize-url.js.map +1 -1
  678. package/dist/utils/parsers/3mf.parser.js +298 -365
  679. package/dist/utils/parsers/3mf.parser.js.map +1 -1
  680. package/dist/utils/parsers/bgcode.parser.js +149 -202
  681. package/dist/utils/parsers/bgcode.parser.js.map +1 -1
  682. package/dist/utils/parsers/gcode.parser.js +200 -263
  683. package/dist/utils/parsers/gcode.parser.js.map +1 -1
  684. package/dist/utils/parsers/parser.types.js +1 -6
  685. package/dist/utils/pretty-print.utils.js +5 -20
  686. package/dist/utils/pretty-print.utils.js.map +1 -1
  687. package/dist/utils/semver.utils.js +10 -26
  688. package/dist/utils/semver.utils.js.map +1 -1
  689. package/dist/utils/swagger/decorators.js +14 -32
  690. package/dist/utils/swagger/decorators.js.map +1 -1
  691. package/dist/utils/swagger/generator.js +151 -194
  692. package/dist/utils/swagger/generator.js.map +1 -1
  693. package/dist/utils/swagger/swagger.js +40 -51
  694. package/dist/utils/swagger/swagger.js.map +1 -1
  695. package/dist/utils/thumbnail.util.js +11 -20
  696. package/dist/utils/thumbnail.util.js.map +1 -1
  697. package/dist/utils/time.utils.js +4 -12
  698. package/dist/utils/time.utils.js.map +1 -1
  699. package/dist/utils/url.utils.js +9 -27
  700. package/dist/utils/url.utils.js.map +1 -1
  701. package/package.json +79 -90
  702. package/packages/consoles/package.json +44 -0
  703. package/packages/consoles/tsconfig.json +23 -0
  704. package/packages/consoles/vite.config.ts +15 -0
  705. package/tsconfig.json +10 -6
  706. package/vite.config.ts +62 -0
  707. package/.swcrc +0 -33
  708. package/.yarn/releases/yarn-4.12.0.cjs +0 -942
  709. package/biome.json +0 -36
  710. package/dist/consoles/bambu-mqtt-diagnostic.console.js +0 -565
  711. package/dist/consoles/bambu-mqtt-diagnostic.console.js.map +0 -1
  712. package/dist/consoles/download-github-releases.js +0 -50
  713. package/dist/consoles/download-github-releases.js.map +0 -1
  714. package/dist/consoles/gcode-scanner-poc.console.js +0 -52
  715. package/dist/consoles/gcode-scanner-poc.console.js.map +0 -1
  716. package/dist/consoles/launch-http-servers.js +0 -31
  717. package/dist/consoles/launch-http-servers.js.map +0 -1
  718. package/dist/consoles/mock-bambu.server.js +0 -319
  719. package/dist/consoles/mock-bambu.server.js.map +0 -1
  720. package/dist/consoles/mock-camera/default-image.js +0 -13
  721. package/dist/consoles/mock-camera/default-image.js.map +0 -1
  722. package/dist/consoles/mock-camera/mock-camera.server.js +0 -160
  723. package/dist/consoles/mock-camera/mock-camera.server.js.map +0 -1
  724. package/dist/consoles/mock-octoprint.server.js +0 -499
  725. package/dist/consoles/mock-octoprint.server.js.map +0 -1
  726. package/dist/consoles/mock-prusalink.server.js +0 -57
  727. package/dist/consoles/mock-prusalink.server.js.map +0 -1
  728. package/dist/consoles/moonraker-test.console.js +0 -3
  729. package/dist/consoles/moonraker-test.console.js.map +0 -1
  730. package/dist/consoles/utils/api-messages.js +0 -856
  731. package/dist/consoles/utils/api-messages.js.map +0 -1
  732. package/dist/consoles/utils/delayed-memory.storage.js +0 -42
  733. package/dist/consoles/utils/delayed-memory.storage.js.map +0 -1
  734. package/dist/consoles/utils/ws-messages.js +0 -88
  735. package/dist/consoles/utils/ws-messages.js.map +0 -1
  736. package/dist/entities/index.js.map +0 -1
  737. package/dist/services/bambu/mqtt-message.types.js.map +0 -1
  738. package/dist/services/interfaces/auth.service.interface.js.map +0 -1
  739. package/dist/services/interfaces/camera-stream.service.interface.js.map +0 -1
  740. package/dist/services/interfaces/file-upload-tracker.interface.js.map +0 -1
  741. package/dist/services/interfaces/floor.service.interface.js.map +0 -1
  742. package/dist/services/interfaces/jwt.service.interface.js.map +0 -1
  743. package/dist/services/interfaces/permission.service.interface.js.map +0 -1
  744. package/dist/services/interfaces/printer-file.dto.js.map +0 -1
  745. package/dist/services/interfaces/printer-maintenance-log.dto.js.map +0 -1
  746. package/dist/services/interfaces/printer-tag.service.interface.js.map +0 -1
  747. package/dist/services/interfaces/printer.service.interface.js.map +0 -1
  748. package/dist/services/interfaces/refresh-token.service.interface.js.map +0 -1
  749. package/dist/services/interfaces/role-service.interface.js.map +0 -1
  750. package/dist/services/interfaces/settings.service.interface.js.map +0 -1
  751. package/dist/services/interfaces/tag.dto.js.map +0 -1
  752. package/dist/services/interfaces/task.interfaces.js.map +0 -1
  753. package/dist/services/interfaces/user-service.interface.js.map +0 -1
  754. package/dist/services/moonraker/dto/access/access-info.dto.js.map +0 -1
  755. package/dist/services/moonraker/dto/access/access-login-refresh.dto.js.map +0 -1
  756. package/dist/services/moonraker/dto/access/access-login-result.dto.js.map +0 -1
  757. package/dist/services/moonraker/dto/access/access-user-result.dto.js.map +0 -1
  758. package/dist/services/moonraker/dto/access/access-user.dto.js.map +0 -1
  759. package/dist/services/moonraker/dto/database/database-namespace-item.dto.js.map +0 -1
  760. package/dist/services/moonraker/dto/database/database-namespace-list.dto.js.map +0 -1
  761. package/dist/services/moonraker/dto/gcode-help.dto.js.map +0 -1
  762. package/dist/services/moonraker/dto/gcode-store.dto.js.map +0 -1
  763. package/dist/services/moonraker/dto/job-queue/enqueue-job.dto.js.map +0 -1
  764. package/dist/services/moonraker/dto/job-queue/job-queue-status.dto.js.map +0 -1
  765. package/dist/services/moonraker/dto/machine/machine-device-power-device-state.dto.js.map +0 -1
  766. package/dist/services/moonraker/dto/machine/machine-device-power-devices.dto.js.map +0 -1
  767. package/dist/services/moonraker/dto/machine/machine-peripherals-canbus.dto.js.map +0 -1
  768. package/dist/services/moonraker/dto/machine/machine-peripherals-serial.dto.js.map +0 -1
  769. package/dist/services/moonraker/dto/machine/machine-peripherals-usb.dto.js.map +0 -1
  770. package/dist/services/moonraker/dto/machine/machine-peripherals-video.dto.js.map +0 -1
  771. package/dist/services/moonraker/dto/machine/machine-system-info.dto.js.map +0 -1
  772. package/dist/services/moonraker/dto/machine/machine-update-status.dto.js.map +0 -1
  773. package/dist/services/moonraker/dto/machine/machine-wled-strips.dto.js.map +0 -1
  774. package/dist/services/moonraker/dto/notifier-list.dto.js.map +0 -1
  775. package/dist/services/moonraker/dto/objects/bed-mesh.dto.js.map +0 -1
  776. package/dist/services/moonraker/dto/objects/configfile.dto.js.map +0 -1
  777. package/dist/services/moonraker/dto/objects/display-status.dto.js.map +0 -1
  778. package/dist/services/moonraker/dto/objects/extruder.dto.js.map +0 -1
  779. package/dist/services/moonraker/dto/objects/fan.dto.js.map +0 -1
  780. package/dist/services/moonraker/dto/objects/filament-motion-sensor.dto.js.map +0 -1
  781. package/dist/services/moonraker/dto/objects/filament-switch-sensor.dto.js.map +0 -1
  782. package/dist/services/moonraker/dto/objects/gcode-move.dto.js.map +0 -1
  783. package/dist/services/moonraker/dto/objects/gcode.dto.js.map +0 -1
  784. package/dist/services/moonraker/dto/objects/heater-bed.dto.js.map +0 -1
  785. package/dist/services/moonraker/dto/objects/heaters.dto.js.map +0 -1
  786. package/dist/services/moonraker/dto/objects/mcu.dto.js.map +0 -1
  787. package/dist/services/moonraker/dto/objects/motion-report.dto.js.map +0 -1
  788. package/dist/services/moonraker/dto/objects/output-pin.dto.js.map +0 -1
  789. package/dist/services/moonraker/dto/objects/pause-resume.dto.js.map +0 -1
  790. package/dist/services/moonraker/dto/objects/printer-object.dto.js.map +0 -1
  791. package/dist/services/moonraker/dto/objects/printer-object.types.js.map +0 -1
  792. package/dist/services/moonraker/dto/objects/printer-objects-query.dto.js.map +0 -1
  793. package/dist/services/moonraker/dto/objects/stepper-enable.dto.js.map +0 -1
  794. package/dist/services/moonraker/dto/objects/system-stats.dto.js.map +0 -1
  795. package/dist/services/moonraker/dto/objects/temperature-fan.dto.js.map +0 -1
  796. package/dist/services/moonraker/dto/objects/temperature-sensor.dto.js.map +0 -1
  797. package/dist/services/moonraker/dto/objects/toolhead.dto.js.map +0 -1
  798. package/dist/services/moonraker/dto/objects/virtual-sdcard.dto.js.map +0 -1
  799. package/dist/services/moonraker/dto/objects/webhooks.dto.js.map +0 -1
  800. package/dist/services/moonraker/dto/octoprint-compat/api-job.dto.js.map +0 -1
  801. package/dist/services/moonraker/dto/octoprint-compat/api-login.dto.js.map +0 -1
  802. package/dist/services/moonraker/dto/octoprint-compat/api-printer.dto.js.map +0 -1
  803. package/dist/services/moonraker/dto/octoprint-compat/api-profiles.dto.js.map +0 -1
  804. package/dist/services/moonraker/dto/octoprint-compat/api-settings.dto.js.map +0 -1
  805. package/dist/services/moonraker/dto/octoprint-compat/api-version.dto.js.map +0 -1
  806. package/dist/services/moonraker/dto/octoprint-compat/server-version.dto.js.map +0 -1
  807. package/dist/services/moonraker/dto/printer-query-endstops.dto.js.map +0 -1
  808. package/dist/services/moonraker/dto/process-stats.dto.js.map +0 -1
  809. package/dist/services/moonraker/dto/rest/action-result.dto.js.map +0 -1
  810. package/dist/services/moonraker/dto/rest/error.dto.js.map +0 -1
  811. package/dist/services/moonraker/dto/rollover-logs.dto.js.map +0 -1
  812. package/dist/services/moonraker/dto/rpc/json-rpc-error.dto.js.map +0 -1
  813. package/dist/services/moonraker/dto/rpc/json-rpc-request.dto.js.map +0 -1
  814. package/dist/services/moonraker/dto/rpc/json-rpc-response.dto.js.map +0 -1
  815. package/dist/services/moonraker/dto/server/server-config.dto.js.map +0 -1
  816. package/dist/services/moonraker/dto/server-announcements/announcement-action.dto.js.map +0 -1
  817. package/dist/services/moonraker/dto/server-announcements/announcement-entry-id.dto.js.map +0 -1
  818. package/dist/services/moonraker/dto/server-announcements/announcement-feeds.dto.js.map +0 -1
  819. package/dist/services/moonraker/dto/server-announcements/announcement-list.dto.js.map +0 -1
  820. package/dist/services/moonraker/dto/server-files/server-file-directory-action.dto.js.map +0 -1
  821. package/dist/services/moonraker/dto/server-files/server-file-directory-info.dto.js.map +0 -1
  822. package/dist/services/moonraker/dto/server-files/server-file-metadata.dto.js.map +0 -1
  823. package/dist/services/moonraker/dto/server-files/server-file-root.dto.js.map +0 -1
  824. package/dist/services/moonraker/dto/server-files/server-file-thumbnail.dto.js.map +0 -1
  825. package/dist/services/moonraker/dto/server-files/server-file-zip-action.dto.js.map +0 -1
  826. package/dist/services/moonraker/dto/server-files/server-file.dto.js.map +0 -1
  827. package/dist/services/moonraker/dto/server-history/history-job.dto.js.map +0 -1
  828. package/dist/services/moonraker/dto/server-history/history-last-totals.dto.js.map +0 -1
  829. package/dist/services/moonraker/dto/server-history/history-list.dto.js.map +0 -1
  830. package/dist/services/moonraker/dto/server-history/history-totals.dto.js.map +0 -1
  831. package/dist/services/moonraker/dto/server-sensors/sensor-info.dto.js.map +0 -1
  832. package/dist/services/moonraker/dto/server-sensors/sensor-list.dto.js.map +0 -1
  833. package/dist/services/moonraker/dto/server-sensors/sensor-measurements.dto.js.map +0 -1
  834. package/dist/services/moonraker/dto/server-webcams/webcam-item.dto.js.map +0 -1
  835. package/dist/services/moonraker/dto/server-webcams/webcam-list.dto.js.map +0 -1
  836. package/dist/services/moonraker/dto/server-webcams/webcam-test.dto.js.map +0 -1
  837. package/dist/services/moonraker/dto/spoolman/spoolman-active-spool.dto.js.map +0 -1
  838. package/dist/services/moonraker/dto/spoolman/spoolman-proxy-request.dto.js.map +0 -1
  839. package/dist/services/moonraker/dto/spoolman/spoolman-response.dto.js.map +0 -1
  840. package/dist/services/moonraker/dto/spoolman/spoolman-status.dto.js.map +0 -1
  841. package/dist/services/moonraker/dto/sudo-info.dto.js.map +0 -1
  842. package/dist/services/moonraker/dto/sudo-response.dto.js.map +0 -1
  843. package/dist/services/moonraker/dto/temperature-store.dto.js.map +0 -1
  844. package/dist/services/moonraker/dto/websocket/connection-identify-response.dto.js.map +0 -1
  845. package/dist/services/moonraker/dto/websocket/connection-identify.dto.js.map +0 -1
  846. package/dist/services/moonraker/dto/websocket/json-rpc-event.dto.js.map +0 -1
  847. package/dist/services/moonraker/dto/websocket/message.types.js.map +0 -1
  848. package/dist/services/moonraker/dto/websocket/notify-active-spool-set.params.js.map +0 -1
  849. package/dist/services/moonraker/dto/websocket/notify-agent-event.params.js.map +0 -1
  850. package/dist/services/moonraker/dto/websocket/notify-announcement-update.params.js.map +0 -1
  851. package/dist/services/moonraker/dto/websocket/notify-announcement.params.js.map +0 -1
  852. package/dist/services/moonraker/dto/websocket/notify-button-event.params.js.map +0 -1
  853. package/dist/services/moonraker/dto/websocket/notify-history-changed.params.js.map +0 -1
  854. package/dist/services/moonraker/dto/websocket/notify-job-queue-changed.params.js.map +0 -1
  855. package/dist/services/moonraker/dto/websocket/notify-proc-stat-update.params.js.map +0 -1
  856. package/dist/services/moonraker/dto/websocket/notify-sensor-update.params.js.map +0 -1
  857. package/dist/services/moonraker/dto/websocket/notify-service-state-changed.params.js.map +0 -1
  858. package/dist/services/moonraker/dto/websocket/notify-spoolman-status-changed.js.map +0 -1
  859. package/dist/services/moonraker/dto/websocket/notify-sudo-alert.params.js.map +0 -1
  860. package/dist/services/moonraker/dto/websocket/notify-user-change.params.js.map +0 -1
  861. package/dist/services/octoprint/dto/access/user-list.dto.js.map +0 -1
  862. package/dist/services/octoprint/dto/access/user.dto.js.map +0 -1
  863. package/dist/services/octoprint/dto/auth/current-user.dto.js.map +0 -1
  864. package/dist/services/octoprint/dto/auth/login.dto.js.map +0 -1
  865. package/dist/services/octoprint/dto/connection/connection.dto.js.map +0 -1
  866. package/dist/services/octoprint/dto/events/client-authed.dto.js.map +0 -1
  867. package/dist/services/octoprint/dto/events/client-closed.dto.js.map +0 -1
  868. package/dist/services/octoprint/dto/events/client-opened.dto.js.map +0 -1
  869. package/dist/services/octoprint/dto/events/dwelling.dto.js.map +0 -1
  870. package/dist/services/octoprint/dto/events/file-added.dto.js.map +0 -1
  871. package/dist/services/octoprint/dto/events/file-deselected.dto.js.map +0 -1
  872. package/dist/services/octoprint/dto/events/file-removed.dto.js.map +0 -1
  873. package/dist/services/octoprint/dto/events/folder-added.dto.js.map +0 -1
  874. package/dist/services/octoprint/dto/events/home.dto.js.map +0 -1
  875. package/dist/services/octoprint/dto/events/metadata-analysis-finished.dto.js.map +0 -1
  876. package/dist/services/octoprint/dto/events/metadata-analysis-started.dto.js.map +0 -1
  877. package/dist/services/octoprint/dto/events/metadata-statistics-updated.dto.js.map +0 -1
  878. package/dist/services/octoprint/dto/events/position-update.dto.js.map +0 -1
  879. package/dist/services/octoprint/dto/events/print-cancelled.dto.js.map +0 -1
  880. package/dist/services/octoprint/dto/events/print-cancelling.dto.js.map +0 -1
  881. package/dist/services/octoprint/dto/events/print-done.dto.js.map +0 -1
  882. package/dist/services/octoprint/dto/events/print-failed.dto.js.map +0 -1
  883. package/dist/services/octoprint/dto/events/print-paused.dto.js.map +0 -1
  884. package/dist/services/octoprint/dto/events/print-resumed.dto.js.map +0 -1
  885. package/dist/services/octoprint/dto/events/print-started.dto.js.map +0 -1
  886. package/dist/services/octoprint/dto/events/printer-state-changed.dto.js.map +0 -1
  887. package/dist/services/octoprint/dto/events/transfer-done.dto.js.map +0 -1
  888. package/dist/services/octoprint/dto/events/transfer-started.dto.js.map +0 -1
  889. package/dist/services/octoprint/dto/events/updated-files.dto.js.map +0 -1
  890. package/dist/services/octoprint/dto/events/upload.dto.js.map +0 -1
  891. package/dist/services/octoprint/dto/events/user-logged-in.dto.js.map +0 -1
  892. package/dist/services/octoprint/dto/events/z-change.dto.js.map +0 -1
  893. package/dist/services/octoprint/dto/files/gcode-analysis.dto.js.map +0 -1
  894. package/dist/services/octoprint/dto/files/octoprint-file.dto.js.map +0 -1
  895. package/dist/services/octoprint/dto/files/octoprint-files-response.dto.js.map +0 -1
  896. package/dist/services/octoprint/dto/job/job.dto.js.map +0 -1
  897. package/dist/services/octoprint/dto/printer/busy-file.dto.js.map +0 -1
  898. package/dist/services/octoprint/dto/printer/current-printer-state.dto.js.map +0 -1
  899. package/dist/services/octoprint/dto/printer/flags.dto.js.map +0 -1
  900. package/dist/services/octoprint/dto/printer/markings.dto.js.map +0 -1
  901. package/dist/services/octoprint/dto/printer/progress.dto.js.map +0 -1
  902. package/dist/services/octoprint/dto/printer/resends.dto.js.map +0 -1
  903. package/dist/services/octoprint/dto/printer/state.dto.js.map +0 -1
  904. package/dist/services/octoprint/dto/printer/temps.dto.js.map +0 -1
  905. package/dist/services/octoprint/dto/rest/error.dto.js.map +0 -1
  906. package/dist/services/octoprint/dto/server/server.dto.js.map +0 -1
  907. package/dist/services/octoprint/dto/server/version.dto.js.map +0 -1
  908. package/dist/services/octoprint/dto/settings/serial-settings.dto.js.map +0 -1
  909. package/dist/services/octoprint/dto/settings/settings-parts.type.js.map +0 -1
  910. package/dist/services/octoprint/dto/settings/settings.dto.js.map +0 -1
  911. package/dist/services/octoprint/dto/settings/virtual-printer-settings.dto.js.map +0 -1
  912. package/dist/services/octoprint/dto/websocket/connection-message.dto.js.map +0 -1
  913. package/dist/services/octoprint/dto/websocket/current-message.dto.js.map +0 -1
  914. package/dist/services/octoprint/dto/websocket/event-message.dto.js.map +0 -1
  915. package/dist/services/octoprint/dto/websocket/history-message.dto.js.map +0 -1
  916. package/dist/services/octoprint/dto/websocket/plugin-message.dto.js.map +0 -1
  917. package/dist/services/octoprint/dto/websocket/timelapse-message.dto.js.map +0 -1
  918. package/dist/services/orm/base.interface.js.map +0 -1
  919. package/dist/services/prusa-link/dto/file-response.dto.js.map +0 -1
  920. package/dist/services/prusa-link/dto/file.dto.js.map +0 -1
  921. package/dist/services/prusa-link/dto/job-state.dto.js.map +0 -1
  922. package/dist/services/prusa-link/dto/printer-state.dto.js.map +0 -1
  923. package/dist/services/prusa-link/dto/status.dto.js.map +0 -1
  924. package/dist/services/prusa-link/dto/version.dto.js.map +0 -1
  925. package/dist/services/prusa-link/utils/digest-auth.params.js.map +0 -1
  926. package/dist/services/websocket-adapter.interface.js.map +0 -1
  927. package/dist/shared/dtos/socket-login.dto.js.map +0 -1
  928. package/dist/types/express/index.d.js.map +0 -1
  929. package/dist/utils/parsers/parser.types.js.map +0 -1
@@ -1,176 +1,192 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "TaskManagerService", {
6
- enumerable: true,
7
- get: function() {
8
- return TaskManagerService;
9
- }
10
- });
11
- const _toadscheduler = require("toad-scheduler");
12
- const _awilix = require("awilix");
13
- const _jobexceptions = require("../exceptions/job.exceptions");
14
- const _errorutils = require("../utils/error.utils");
15
- class TaskManagerService {
16
- cradleService;
17
- toadScheduler;
18
- taskStates = {};
19
- logger;
20
- constructor(loggerFactory, cradleService, toadScheduler){
21
- this.cradleService = cradleService;
22
- this.toadScheduler = toadScheduler;
23
- this.logger = loggerFactory(TaskManagerService.name);
24
- }
25
- registerJobOrTask(registration) {
26
- const { id: taskId, task: serviceIdentifier, preset: schedulerOptions } = registration;
27
- try {
28
- this.validateInput(taskId, serviceIdentifier, schedulerOptions);
29
- } catch (e) {
30
- this.logger.error((0, _errorutils.errorSummary)(e), schedulerOptions);
31
- return;
32
- }
33
- const timedTask = this.getSafeTimedTask(taskId, serviceIdentifier);
34
- this.taskStates[taskId] = {
35
- options: schedulerOptions,
36
- timedTask
37
- };
38
- if (schedulerOptions.runOnce) {
39
- timedTask.execute();
40
- } else if (schedulerOptions.runDelayed) {
41
- const delay = (schedulerOptions.milliseconds ?? 0) + (schedulerOptions.seconds ?? 0) * 1000;
42
- this.runTimeoutTaskInstance(taskId, delay);
43
- } else {
44
- this.scheduleEnabledPeriodicJob(taskId);
45
- }
46
- }
47
- scheduleDisabledJob(taskId, failIfEnabled = true) {
48
- const taskState = this.getTaskState(taskId);
49
- const schedulerOptions = taskState?.options;
50
- if (schedulerOptions?.disabled !== true) {
51
- if (failIfEnabled) {
52
- throw new _jobexceptions.JobValidationException(`The requested task with ID ${taskId} was not explicitly disabled and must be running already.`, taskId);
53
- }
54
- return;
55
- }
56
- taskState.options.disabled = false;
57
- this.scheduleEnabledPeriodicJob(taskId);
58
- }
59
- disableJob(taskId, failIfDisabled = true) {
60
- if (this.isTaskDisabled(taskId)) {
61
- if (failIfDisabled) {
62
- throw new _jobexceptions.JobValidationException("Can't disable a job which is already disabled", taskId);
63
- }
64
- return;
65
- }
66
- const taskState = this.getTaskState(taskId);
67
- taskState.options.disabled = true;
68
- taskState.job?.stop();
69
- }
70
- isTaskDisabled(taskId) {
71
- return !!this.getTaskState(taskId).options.disabled;
72
- }
73
- deregisterTask(taskId) {
74
- this.getTaskState(taskId);
75
- delete this.taskStates[taskId];
76
- this.toadScheduler.removeById(taskId);
77
- }
78
- getTaskState(taskId) {
79
- const taskState = this.taskStates[taskId];
80
- if (!taskState) {
81
- throw new _jobexceptions.JobValidationException(`The requested task with ID ${taskId} was not registered`, taskId);
82
- }
83
- return taskState;
84
- }
85
- runTimeoutTaskInstance(taskId, timeoutMs) {
86
- const taskState = this.getTaskState(taskId);
87
- this.logger.log(`Running delayed task '${taskId}' in ${timeoutMs}ms`);
88
- setTimeout(()=>taskState.timedTask.execute(), timeoutMs);
89
- }
90
- stopSchedulerTasks() {
91
- this.toadScheduler.stop();
92
- }
93
- validateInput(taskId, serviceIdentifier, schedulerOptions) {
94
- if (!taskId) {
95
- throw new _jobexceptions.JobValidationException("Task ID was not provided. Can't register task or schedule job.", taskId);
96
- }
97
- const serviceName = serviceIdentifier || "unknown";
98
- const prefix = `Job '${schedulerOptions?.name ?? serviceName}' with ID '${taskId}'`;
99
- if (this.taskStates[taskId]) {
100
- throw new _jobexceptions.JobValidationException(`${prefix} was already registered. Can't register a key twice.`, taskId);
101
- }
102
- let resolvedService;
103
- try {
104
- resolvedService = this.cradleService.resolve(serviceIdentifier);
105
- } catch (e) {
106
- if (e instanceof _awilix.AwilixResolutionError) {
107
- throw new _jobexceptions.JobValidationException(`${prefix} had an awilix dependency resolution error. It can't be scheduled without fixing this problem. Inner error:\n` + e.stack, taskId);
108
- } else {
109
- throw new _jobexceptions.JobValidationException(`${prefix} is not a registered awilix dependency. It can't be scheduled. Error:\n` + e.stack, taskId);
110
- }
111
- }
112
- if (typeof resolvedService?.run !== "function") {
113
- throw new _jobexceptions.JobValidationException(`${prefix} was resolved but it doesn't have a 'run()' method to call.`, taskId);
114
- }
115
- if (!schedulerOptions?.periodic && !schedulerOptions?.runOnce && !schedulerOptions?.runDelayed) {
116
- throw new _jobexceptions.JobValidationException(`${prefix} Provide 'periodic', 'runOnce', or 'runDelayed' option.`, taskId);
117
- }
118
- if (!schedulerOptions?.periodic && !!schedulerOptions.disabled) {
119
- throw new _jobexceptions.JobValidationException(`${prefix} Only tasks of type 'periodic' can be disabled at boot.`, taskId);
120
- }
121
- if (schedulerOptions?.runDelayed && !schedulerOptions.milliseconds && !schedulerOptions.seconds) {
122
- throw new _jobexceptions.JobValidationException(`${prefix} Provide a delayed timing parameter (milliseconds|seconds)`, taskId);
123
- }
124
- if (schedulerOptions?.periodic && !schedulerOptions.milliseconds && !schedulerOptions.seconds && !schedulerOptions.minutes && !schedulerOptions.hours && !schedulerOptions.days) {
125
- throw new _jobexceptions.JobValidationException(`${prefix} Provide a periodic timing parameter (milliseconds|seconds|minutes|hours|days)`, taskId);
126
- }
127
- }
128
- getSafeTimedTask(taskId, serviceIdentifier) {
129
- const asyncHandler = async ()=>{
130
- await this.timeTask(taskId, serviceIdentifier);
131
- };
132
- return new _toadscheduler.AsyncTask(taskId, asyncHandler, this.getErrorHandler(taskId));
133
- }
134
- async timeTask(taskId, serviceIdentifier) {
135
- const taskState = this.taskStates[taskId];
136
- taskState.started = Date.now();
137
- const taskService = this.cradleService.resolve(serviceIdentifier);
138
- await taskService.run();
139
- taskState.duration = Date.now() - taskState.started;
140
- if (taskState.options?.logFirstCompletion !== false && !taskState?.firstCompletion) {
141
- this.logger.log(`Task '${taskId}' first completion. Duration ${taskState.duration}ms`);
142
- taskState.firstCompletion = Date.now();
143
- }
144
- }
145
- getErrorHandler(taskId) {
146
- return (error)=>{
147
- const taskState = this.taskStates[taskId];
148
- taskState.lastError ??= {
149
- time: Date.now(),
150
- error
151
- };
152
- this.logger.error(`Task '${taskId}' threw an exception: ${error.stack}`);
153
- };
154
- }
155
- scheduleEnabledPeriodicJob(taskId) {
156
- const taskState = this.getTaskState(taskId);
157
- if (!taskState?.timedTask || !taskState?.options) {
158
- throw new _jobexceptions.JobValidationException(`The requested task with ID ${taskId} was not registered properly ('timedTask' or 'options' missing).`, taskId);
159
- }
160
- const schedulerOptions = taskState.options;
161
- const timedTask = taskState.timedTask;
162
- if (!schedulerOptions?.periodic) {
163
- throw new _jobexceptions.JobValidationException(`The requested task with ID ${taskId} is not periodic and cannot be enabled.`, taskId);
164
- }
165
- if (!schedulerOptions.disabled) {
166
- this.logger.log(`Task '${taskId}' was scheduled (runImmediately: ${!!schedulerOptions.runImmediately}).`);
167
- const job = new _toadscheduler.SimpleIntervalJob(schedulerOptions, timedTask);
168
- taskState.job = job;
169
- this.toadScheduler.addSimpleIntervalJob(job);
170
- } else {
171
- this.logger.log(`Task '${taskId}' was marked as disabled (deferred execution).`);
172
- }
173
- }
174
- }
1
+ import { JobValidationException } from "../exceptions/job.exceptions.js";
2
+ import { errorSummary } from "../utils/error.utils.js";
3
+ import { AwilixResolutionError } from "awilix";
4
+ import { AsyncTask, SimpleIntervalJob } from "toad-scheduler";
5
+ //#region src/services/task-manager.service.ts
6
+ var TaskManagerService = class TaskManagerService {
7
+ taskStates = {};
8
+ logger;
9
+ constructor(loggerFactory, cradleService, toadScheduler) {
10
+ this.cradleService = cradleService;
11
+ this.toadScheduler = toadScheduler;
12
+ this.logger = loggerFactory(TaskManagerService.name);
13
+ }
14
+ /**
15
+ * Create a recurring job or one-time task
16
+ * @param registration Task registration parameters
17
+ */
18
+ registerJobOrTask(registration) {
19
+ const { id: taskId, task: serviceIdentifier, preset: schedulerOptions } = registration;
20
+ try {
21
+ this.validateInput(taskId, serviceIdentifier, schedulerOptions);
22
+ } catch (e) {
23
+ this.logger.error(errorSummary(e), schedulerOptions);
24
+ return;
25
+ }
26
+ const timedTask = this.getSafeTimedTask(taskId, serviceIdentifier);
27
+ this.taskStates[taskId] = {
28
+ options: schedulerOptions,
29
+ timedTask
30
+ };
31
+ if (schedulerOptions.runOnce) timedTask.execute();
32
+ else if (schedulerOptions.runDelayed) {
33
+ const delay = (schedulerOptions.milliseconds ?? 0) + (schedulerOptions.seconds ?? 0) * 1e3;
34
+ this.runTimeoutTaskInstance(taskId, delay);
35
+ } else this.scheduleEnabledPeriodicJob(taskId);
36
+ }
37
+ /**
38
+ * Enable the job which must be disabled at boot. Handy for conditional, heavy or long-running non-critical tasks
39
+ * @param taskId Task identifier
40
+ * @param failIfEnabled throws when the job is already running
41
+ */
42
+ scheduleDisabledJob(taskId, failIfEnabled = true) {
43
+ const taskState = this.getTaskState(taskId);
44
+ if ((taskState?.options)?.disabled !== true) {
45
+ if (failIfEnabled) throw new JobValidationException(`The requested task with ID ${taskId} was not explicitly disabled and must be running already.`, taskId);
46
+ return;
47
+ }
48
+ taskState.options.disabled = false;
49
+ this.scheduleEnabledPeriodicJob(taskId);
50
+ }
51
+ /**
52
+ * Disable a running job
53
+ * @param taskId Task identifier
54
+ * @param failIfDisabled throws when the job is already disabled
55
+ */
56
+ disableJob(taskId, failIfDisabled = true) {
57
+ if (this.isTaskDisabled(taskId)) {
58
+ if (failIfDisabled) throw new JobValidationException("Can't disable a job which is already disabled", taskId);
59
+ return;
60
+ }
61
+ const taskState = this.getTaskState(taskId);
62
+ taskState.options.disabled = true;
63
+ taskState.job?.stop();
64
+ }
65
+ /**
66
+ * Check if a task is currently disabled
67
+ * @param taskId Task identifier
68
+ * @returns true if task is disabled
69
+ */
70
+ isTaskDisabled(taskId) {
71
+ return !!this.getTaskState(taskId).options.disabled;
72
+ }
73
+ /**
74
+ * Remove a task from the scheduler and internal registry
75
+ * @param taskId Task identifier
76
+ */
77
+ deregisterTask(taskId) {
78
+ this.getTaskState(taskId);
79
+ delete this.taskStates[taskId];
80
+ this.toadScheduler.removeById(taskId);
81
+ }
82
+ /**
83
+ * Get the internal state of a task
84
+ * @param taskId Task identifier
85
+ * @returns Task state
86
+ */
87
+ getTaskState(taskId) {
88
+ const taskState = this.taskStates[taskId];
89
+ if (!taskState) throw new JobValidationException(`The requested task with ID ${taskId} was not registered`, taskId);
90
+ return taskState;
91
+ }
92
+ /**
93
+ * Execute a task after a delay
94
+ * @param taskId Task identifier
95
+ * @param timeoutMs Delay in milliseconds
96
+ */
97
+ runTimeoutTaskInstance(taskId, timeoutMs) {
98
+ const taskState = this.getTaskState(taskId);
99
+ this.logger.log(`Running delayed task '${taskId}' in ${timeoutMs}ms`);
100
+ setTimeout(() => taskState.timedTask.execute(), timeoutMs);
101
+ }
102
+ /**
103
+ * Stop all scheduled tasks
104
+ */
105
+ stopSchedulerTasks() {
106
+ this.toadScheduler.stop();
107
+ }
108
+ /**
109
+ * Validates task registration inputs
110
+ */
111
+ validateInput(taskId, serviceIdentifier, schedulerOptions) {
112
+ if (!taskId) throw new JobValidationException("Task ID was not provided. Can't register task or schedule job.", taskId);
113
+ const serviceName = serviceIdentifier || "unknown";
114
+ const prefix = `Job '${schedulerOptions?.name ?? serviceName}' with ID '${taskId}'`;
115
+ if (this.taskStates[taskId]) throw new JobValidationException(`${prefix} was already registered. Can't register a key twice.`, taskId);
116
+ let resolvedService;
117
+ try {
118
+ resolvedService = this.cradleService.resolve(serviceIdentifier);
119
+ } catch (e) {
120
+ if (e instanceof AwilixResolutionError) throw new JobValidationException(`${prefix} had an awilix dependency resolution error. It can't be scheduled without fixing this problem. Inner error:\n` + e.stack, taskId);
121
+ else throw new JobValidationException(`${prefix} is not a registered awilix dependency. It can't be scheduled. Error:\n` + e.stack, taskId);
122
+ }
123
+ if (typeof resolvedService?.run !== "function") throw new JobValidationException(`${prefix} was resolved but it doesn't have a 'run()' method to call.`, taskId);
124
+ if (!schedulerOptions?.periodic && !schedulerOptions?.runOnce && !schedulerOptions?.runDelayed) throw new JobValidationException(`${prefix} Provide 'periodic', 'runOnce', or 'runDelayed' option.`, taskId);
125
+ if (!schedulerOptions?.periodic && !!schedulerOptions.disabled) throw new JobValidationException(`${prefix} Only tasks of type 'periodic' can be disabled at boot.`, taskId);
126
+ if (schedulerOptions?.runDelayed && !schedulerOptions.milliseconds && !schedulerOptions.seconds) throw new JobValidationException(`${prefix} Provide a delayed timing parameter (milliseconds|seconds)`, taskId);
127
+ if (schedulerOptions?.periodic && !schedulerOptions.milliseconds && !schedulerOptions.seconds && !schedulerOptions.minutes && !schedulerOptions.hours && !schedulerOptions.days) throw new JobValidationException(`${prefix} Provide a periodic timing parameter (milliseconds|seconds|minutes|hours|days)`, taskId);
128
+ }
129
+ /**
130
+ * Create a safe timed task with error handling
131
+ * @param taskId Task identifier
132
+ * @param serviceIdentifier Service to resolve and execute
133
+ * @returns AsyncTask instance
134
+ */
135
+ getSafeTimedTask(taskId, serviceIdentifier) {
136
+ const asyncHandler = async () => {
137
+ await this.timeTask(taskId, serviceIdentifier);
138
+ };
139
+ return new AsyncTask(taskId, asyncHandler, this.getErrorHandler(taskId));
140
+ }
141
+ /**
142
+ * Execute a task and measure its execution time
143
+ * @param taskId Task identifier
144
+ * @param serviceIdentifier Service to resolve and execute
145
+ */
146
+ async timeTask(taskId, serviceIdentifier) {
147
+ const taskState = this.taskStates[taskId];
148
+ taskState.started = Date.now();
149
+ await this.cradleService.resolve(serviceIdentifier).run();
150
+ taskState.duration = Date.now() - taskState.started;
151
+ if (taskState.options?.logFirstCompletion !== false && !taskState?.firstCompletion) {
152
+ this.logger.log(`Task '${taskId}' first completion. Duration ${taskState.duration}ms`);
153
+ taskState.firstCompletion = Date.now();
154
+ }
155
+ }
156
+ /**
157
+ * Create an error handler for a task
158
+ * @param taskId Task identifier
159
+ * @returns Error handler function
160
+ */
161
+ getErrorHandler(taskId) {
162
+ return (error) => {
163
+ const taskState = this.taskStates[taskId];
164
+ taskState.lastError ??= {
165
+ time: Date.now(),
166
+ error
167
+ };
168
+ this.logger.error(`Task '${taskId}' threw an exception: ${error.stack}`);
169
+ };
170
+ }
171
+ /**
172
+ * Schedule a periodic job that's not disabled
173
+ * @param taskId Task identifier
174
+ */
175
+ scheduleEnabledPeriodicJob(taskId) {
176
+ const taskState = this.getTaskState(taskId);
177
+ if (!taskState?.timedTask || !taskState?.options) throw new JobValidationException(`The requested task with ID ${taskId} was not registered properly ('timedTask' or 'options' missing).`, taskId);
178
+ const schedulerOptions = taskState.options;
179
+ const timedTask = taskState.timedTask;
180
+ if (!schedulerOptions?.periodic) throw new JobValidationException(`The requested task with ID ${taskId} is not periodic and cannot be enabled.`, taskId);
181
+ if (!schedulerOptions.disabled) {
182
+ this.logger.log(`Task '${taskId}' was scheduled (runImmediately: ${!!schedulerOptions.runImmediately}).`);
183
+ const job = new SimpleIntervalJob(schedulerOptions, timedTask);
184
+ taskState.job = job;
185
+ this.toadScheduler.addSimpleIntervalJob(job);
186
+ } else this.logger.log(`Task '${taskId}' was marked as disabled (deferred execution).`);
187
+ }
188
+ };
189
+ //#endregion
190
+ export { TaskManagerService };
175
191
 
176
192
  //# sourceMappingURL=task-manager.service.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/services/task-manager.service.ts"],"names":["TaskManagerService","taskStates","logger","loggerFactory","cradleService","toadScheduler","name","registerJobOrTask","registration","id","taskId","task","serviceIdentifier","preset","schedulerOptions","validateInput","e","error","errorSummary","timedTask","getSafeTimedTask","options","runOnce","execute","runDelayed","delay","milliseconds","seconds","runTimeoutTaskInstance","scheduleEnabledPeriodicJob","scheduleDisabledJob","failIfEnabled","taskState","getTaskState","disabled","JobValidationException","disableJob","failIfDisabled","isTaskDisabled","job","stop","deregisterTask","removeById","timeoutMs","log","setTimeout","stopSchedulerTasks","serviceName","prefix","resolvedService","resolve","AwilixResolutionError","stack","run","periodic","minutes","hours","days","asyncHandler","timeTask","AsyncTask","getErrorHandler","started","Date","now","taskService","duration","logFirstCompletion","firstCompletion","lastError","time","runImmediately","SimpleIntervalJob","addSimpleIntervalJob"],"mappings":"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"}
1
+ {"version":3,"file":"task-manager.service.js","names":[],"sources":["../../src/services/task-manager.service.ts"],"sourcesContent":["import { AsyncTask, SimpleIntervalJob, ToadScheduler } from \"toad-scheduler\";\nimport { AwilixResolutionError } from \"awilix\";\nimport { JobValidationException } from \"@/exceptions/job.exceptions\";\nimport { LoggerService } from \"@/handlers/logger\";\nimport { CradleService } from \"@/services/core/cradle.service\";\nimport type { ILoggerFactory } from \"@/handlers/logger-factory\";\nimport { TaskRegistration, TaskSchedulerOptions, TaskService } from \"./interfaces/task.interfaces\";\nimport { DITokens } from \"@/container.tokens\";\nimport { errorSummary } from \"@/utils/error.utils\";\n\n/**\n * Internal state of a registered task\n */\ninterface TaskState {\n options: TaskSchedulerOptions;\n timedTask: AsyncTask;\n job?: SimpleIntervalJob;\n started?: number;\n duration?: number;\n firstCompletion?: number;\n lastError?: {\n time: number;\n error: Error;\n };\n}\n\nexport class TaskManagerService {\n private taskStates: Record<string, TaskState> = {};\n private readonly logger: LoggerService;\n\n constructor(\n loggerFactory: ILoggerFactory,\n private readonly cradleService: CradleService,\n private readonly toadScheduler: ToadScheduler,\n ) {\n this.logger = loggerFactory(TaskManagerService.name);\n }\n\n /**\n * Create a recurring job or one-time task\n * @param registration Task registration parameters\n */\n registerJobOrTask(registration: TaskRegistration): void {\n const { id: taskId, task: serviceIdentifier, preset: schedulerOptions } = registration;\n\n try {\n this.validateInput(taskId, serviceIdentifier, schedulerOptions);\n } catch (e) {\n this.logger.error(errorSummary(e), schedulerOptions);\n return;\n }\n\n const timedTask = this.getSafeTimedTask(taskId, serviceIdentifier);\n\n this.taskStates[taskId] = {\n options: schedulerOptions,\n timedTask,\n };\n\n if (schedulerOptions.runOnce) {\n timedTask.execute();\n } else if (schedulerOptions.runDelayed) {\n const delay = (schedulerOptions.milliseconds ?? 0) + (schedulerOptions.seconds ?? 0) * 1000;\n this.runTimeoutTaskInstance(taskId, delay);\n } else {\n // This must be 'periodic'\n this.scheduleEnabledPeriodicJob(taskId);\n }\n }\n\n /**\n * Enable the job which must be disabled at boot. Handy for conditional, heavy or long-running non-critical tasks\n * @param taskId Task identifier\n * @param failIfEnabled throws when the job is already running\n */\n scheduleDisabledJob(taskId: string, failIfEnabled = true): void {\n const taskState = this.getTaskState(taskId);\n const schedulerOptions = taskState?.options;\n\n if (schedulerOptions?.disabled !== true) {\n if (failIfEnabled) {\n throw new JobValidationException(\n `The requested task with ID ${taskId} was not explicitly disabled and must be running already.`,\n taskId,\n );\n }\n return;\n }\n\n taskState.options.disabled = false;\n this.scheduleEnabledPeriodicJob(taskId);\n }\n\n /**\n * Disable a running job\n * @param taskId Task identifier\n * @param failIfDisabled throws when the job is already disabled\n */\n disableJob(taskId: string, failIfDisabled = true): void {\n if (this.isTaskDisabled(taskId)) {\n if (failIfDisabled) {\n throw new JobValidationException(\"Can't disable a job which is already disabled\", taskId);\n }\n return;\n }\n\n const taskState = this.getTaskState(taskId);\n taskState.options.disabled = true;\n taskState.job?.stop();\n }\n\n /**\n * Check if a task is currently disabled\n * @param taskId Task identifier\n * @returns true if task is disabled\n */\n isTaskDisabled(taskId: string): boolean {\n return !!this.getTaskState(taskId).options.disabled;\n }\n\n /**\n * Remove a task from the scheduler and internal registry\n * @param taskId Task identifier\n */\n deregisterTask(taskId: string): void {\n this.getTaskState(taskId); // Validates task exists\n delete this.taskStates[taskId];\n this.toadScheduler.removeById(taskId);\n }\n\n /**\n * Get the internal state of a task\n * @param taskId Task identifier\n * @returns Task state\n */\n getTaskState(taskId: string): TaskState {\n const taskState = this.taskStates[taskId];\n if (!taskState) {\n throw new JobValidationException(`The requested task with ID ${taskId} was not registered`, taskId);\n }\n return taskState;\n }\n\n /**\n * Execute a task after a delay\n * @param taskId Task identifier\n * @param timeoutMs Delay in milliseconds\n */\n runTimeoutTaskInstance(taskId: string, timeoutMs: number): void {\n const taskState = this.getTaskState(taskId);\n this.logger.log(`Running delayed task '${taskId}' in ${timeoutMs}ms`);\n setTimeout(() => taskState.timedTask.execute(), timeoutMs);\n }\n\n /**\n * Stop all scheduled tasks\n */\n stopSchedulerTasks(): void {\n this.toadScheduler.stop();\n }\n\n /**\n * Validates task registration inputs\n */\n validateInput(taskId: string, serviceIdentifier: string, schedulerOptions: TaskSchedulerOptions): void {\n if (!taskId) {\n throw new JobValidationException(\"Task ID was not provided. Can't register task or schedule job.\", taskId);\n }\n\n const serviceName = serviceIdentifier || \"unknown\";\n const prefix = `Job '${schedulerOptions?.name ?? serviceName}' with ID '${taskId}'`;\n\n if (this.taskStates[taskId]) {\n throw new JobValidationException(`${prefix} was already registered. Can't register a key twice.`, taskId);\n }\n\n let resolvedService: TaskService;\n try {\n resolvedService = this.cradleService.resolve<TaskService>(serviceIdentifier as keyof typeof DITokens);\n } catch (e) {\n if (e instanceof AwilixResolutionError) {\n throw new JobValidationException(\n `${prefix} had an awilix dependency resolution error. It can't be scheduled without fixing this problem. Inner error:\\n` +\n e.stack,\n taskId,\n );\n } else {\n throw new JobValidationException(\n `${prefix} is not a registered awilix dependency. It can't be scheduled. Error:\\n` + (e as Error).stack,\n taskId,\n );\n }\n }\n\n if (typeof resolvedService?.run !== \"function\") {\n throw new JobValidationException(`${prefix} was resolved but it doesn't have a 'run()' method to call.`, taskId);\n }\n\n if (!schedulerOptions?.periodic && !schedulerOptions?.runOnce && !schedulerOptions?.runDelayed) {\n throw new JobValidationException(`${prefix} Provide 'periodic', 'runOnce', or 'runDelayed' option.`, taskId);\n }\n\n if (!schedulerOptions?.periodic && !!schedulerOptions.disabled) {\n throw new JobValidationException(`${prefix} Only tasks of type 'periodic' can be disabled at boot.`, taskId);\n }\n\n if (schedulerOptions?.runDelayed && !schedulerOptions.milliseconds && !schedulerOptions.seconds) {\n throw new JobValidationException(`${prefix} Provide a delayed timing parameter (milliseconds|seconds)`, taskId);\n }\n\n if (\n schedulerOptions?.periodic &&\n !schedulerOptions.milliseconds &&\n !schedulerOptions.seconds &&\n !schedulerOptions.minutes &&\n !schedulerOptions.hours &&\n !schedulerOptions.days\n ) {\n throw new JobValidationException(\n `${prefix} Provide a periodic timing parameter (milliseconds|seconds|minutes|hours|days)`,\n taskId,\n );\n }\n }\n\n /**\n * Create a safe timed task with error handling\n * @param taskId Task identifier\n * @param serviceIdentifier Service to resolve and execute\n * @returns AsyncTask instance\n */\n private getSafeTimedTask(taskId: string, serviceIdentifier: string): AsyncTask {\n const asyncHandler = async (): Promise<void> => {\n await this.timeTask(taskId, serviceIdentifier);\n };\n\n return new AsyncTask(taskId, asyncHandler, this.getErrorHandler(taskId));\n }\n\n /**\n * Execute a task and measure its execution time\n * @param taskId Task identifier\n * @param serviceIdentifier Service to resolve and execute\n */\n private async timeTask(taskId: string, serviceIdentifier: string): Promise<void> {\n const taskState = this.taskStates[taskId];\n taskState.started = Date.now();\n\n const taskService = this.cradleService.resolve<TaskService>(serviceIdentifier as keyof typeof DITokens);\n await taskService.run();\n\n taskState.duration = Date.now() - taskState.started;\n\n if (taskState.options?.logFirstCompletion !== false && !taskState?.firstCompletion) {\n this.logger.log(`Task '${taskId}' first completion. Duration ${taskState.duration}ms`);\n taskState.firstCompletion = Date.now();\n }\n }\n\n /**\n * Create an error handler for a task\n * @param taskId Task identifier\n * @returns Error handler function\n */\n private getErrorHandler(taskId: string): (error: Error) => void {\n return (error: Error): void => {\n const taskState = this.taskStates[taskId];\n\n taskState.lastError ??= {\n time: Date.now(),\n error,\n };\n\n this.logger.error(`Task '${taskId}' threw an exception: ${error.stack}`);\n };\n }\n\n /**\n * Schedule a periodic job that's not disabled\n * @param taskId Task identifier\n */\n private scheduleEnabledPeriodicJob(taskId: string): void {\n const taskState = this.getTaskState(taskId);\n\n if (!taskState?.timedTask || !taskState?.options) {\n throw new JobValidationException(\n `The requested task with ID ${taskId} was not registered properly ('timedTask' or 'options' missing).`,\n taskId,\n );\n }\n\n const schedulerOptions = taskState.options;\n const timedTask = taskState.timedTask;\n\n if (!schedulerOptions?.periodic) {\n throw new JobValidationException(\n `The requested task with ID ${taskId} is not periodic and cannot be enabled.`,\n taskId,\n );\n }\n\n if (!schedulerOptions.disabled) {\n this.logger.log(`Task '${taskId}' was scheduled (runImmediately: ${!!schedulerOptions.runImmediately}).`);\n const job = new SimpleIntervalJob(schedulerOptions, timedTask);\n taskState.job = job;\n this.toadScheduler.addSimpleIntervalJob(job);\n } else {\n this.logger.log(`Task '${taskId}' was marked as disabled (deferred execution).`);\n }\n }\n}\n"],"mappings":";;;;;AA0BA,IAAa,qBAAb,MAAa,mBAAmB;CAC9B,aAAgD,EAAE;CAClD;CAEA,YACE,eACA,eACA,eACA;AAFiB,OAAA,gBAAA;AACA,OAAA,gBAAA;AAEjB,OAAK,SAAS,cAAc,mBAAmB,KAAK;;;;;;CAOtD,kBAAkB,cAAsC;EACtD,MAAM,EAAE,IAAI,QAAQ,MAAM,mBAAmB,QAAQ,qBAAqB;AAE1E,MAAI;AACF,QAAK,cAAc,QAAQ,mBAAmB,iBAAiB;WACxD,GAAG;AACV,QAAK,OAAO,MAAM,aAAa,EAAE,EAAE,iBAAiB;AACpD;;EAGF,MAAM,YAAY,KAAK,iBAAiB,QAAQ,kBAAkB;AAElE,OAAK,WAAW,UAAU;GACxB,SAAS;GACT;GACD;AAED,MAAI,iBAAiB,QACnB,WAAU,SAAS;WACV,iBAAiB,YAAY;GACtC,MAAM,SAAS,iBAAiB,gBAAgB,MAAM,iBAAiB,WAAW,KAAK;AACvF,QAAK,uBAAuB,QAAQ,MAAM;QAG1C,MAAK,2BAA2B,OAAO;;;;;;;CAS3C,oBAAoB,QAAgB,gBAAgB,MAAY;EAC9D,MAAM,YAAY,KAAK,aAAa,OAAO;AAG3C,OAFyB,WAAW,UAEd,aAAa,MAAM;AACvC,OAAI,cACF,OAAM,IAAI,uBACR,8BAA8B,OAAO,4DACrC,OACD;AAEH;;AAGF,YAAU,QAAQ,WAAW;AAC7B,OAAK,2BAA2B,OAAO;;;;;;;CAQzC,WAAW,QAAgB,iBAAiB,MAAY;AACtD,MAAI,KAAK,eAAe,OAAO,EAAE;AAC/B,OAAI,eACF,OAAM,IAAI,uBAAuB,iDAAiD,OAAO;AAE3F;;EAGF,MAAM,YAAY,KAAK,aAAa,OAAO;AAC3C,YAAU,QAAQ,WAAW;AAC7B,YAAU,KAAK,MAAM;;;;;;;CAQvB,eAAe,QAAyB;AACtC,SAAO,CAAC,CAAC,KAAK,aAAa,OAAO,CAAC,QAAQ;;;;;;CAO7C,eAAe,QAAsB;AACnC,OAAK,aAAa,OAAO;AACzB,SAAO,KAAK,WAAW;AACvB,OAAK,cAAc,WAAW,OAAO;;;;;;;CAQvC,aAAa,QAA2B;EACtC,MAAM,YAAY,KAAK,WAAW;AAClC,MAAI,CAAC,UACH,OAAM,IAAI,uBAAuB,8BAA8B,OAAO,sBAAsB,OAAO;AAErG,SAAO;;;;;;;CAQT,uBAAuB,QAAgB,WAAyB;EAC9D,MAAM,YAAY,KAAK,aAAa,OAAO;AAC3C,OAAK,OAAO,IAAI,yBAAyB,OAAO,OAAO,UAAU,IAAI;AACrE,mBAAiB,UAAU,UAAU,SAAS,EAAE,UAAU;;;;;CAM5D,qBAA2B;AACzB,OAAK,cAAc,MAAM;;;;;CAM3B,cAAc,QAAgB,mBAA2B,kBAA8C;AACrG,MAAI,CAAC,OACH,OAAM,IAAI,uBAAuB,kEAAkE,OAAO;EAG5G,MAAM,cAAc,qBAAqB;EACzC,MAAM,SAAS,QAAQ,kBAAkB,QAAQ,YAAY,aAAa,OAAO;AAEjF,MAAI,KAAK,WAAW,QAClB,OAAM,IAAI,uBAAuB,GAAG,OAAO,uDAAuD,OAAO;EAG3G,IAAI;AACJ,MAAI;AACF,qBAAkB,KAAK,cAAc,QAAqB,kBAA2C;WAC9F,GAAG;AACV,OAAI,aAAa,sBACf,OAAM,IAAI,uBACR,GAAG,OAAO,iHACR,EAAE,OACJ,OACD;OAED,OAAM,IAAI,uBACR,GAAG,OAAO,2EAA4E,EAAY,OAClG,OACD;;AAIL,MAAI,OAAO,iBAAiB,QAAQ,WAClC,OAAM,IAAI,uBAAuB,GAAG,OAAO,8DAA8D,OAAO;AAGlH,MAAI,CAAC,kBAAkB,YAAY,CAAC,kBAAkB,WAAW,CAAC,kBAAkB,WAClF,OAAM,IAAI,uBAAuB,GAAG,OAAO,0DAA0D,OAAO;AAG9G,MAAI,CAAC,kBAAkB,YAAY,CAAC,CAAC,iBAAiB,SACpD,OAAM,IAAI,uBAAuB,GAAG,OAAO,0DAA0D,OAAO;AAG9G,MAAI,kBAAkB,cAAc,CAAC,iBAAiB,gBAAgB,CAAC,iBAAiB,QACtF,OAAM,IAAI,uBAAuB,GAAG,OAAO,6DAA6D,OAAO;AAGjH,MACE,kBAAkB,YAClB,CAAC,iBAAiB,gBAClB,CAAC,iBAAiB,WAClB,CAAC,iBAAiB,WAClB,CAAC,iBAAiB,SAClB,CAAC,iBAAiB,KAElB,OAAM,IAAI,uBACR,GAAG,OAAO,iFACV,OACD;;;;;;;;CAUL,iBAAyB,QAAgB,mBAAsC;EAC7E,MAAM,eAAe,YAA2B;AAC9C,SAAM,KAAK,SAAS,QAAQ,kBAAkB;;AAGhD,SAAO,IAAI,UAAU,QAAQ,cAAc,KAAK,gBAAgB,OAAO,CAAC;;;;;;;CAQ1E,MAAc,SAAS,QAAgB,mBAA0C;EAC/E,MAAM,YAAY,KAAK,WAAW;AAClC,YAAU,UAAU,KAAK,KAAK;AAG9B,QADoB,KAAK,cAAc,QAAqB,kBAC3C,CAAC,KAAK;AAEvB,YAAU,WAAW,KAAK,KAAK,GAAG,UAAU;AAE5C,MAAI,UAAU,SAAS,uBAAuB,SAAS,CAAC,WAAW,iBAAiB;AAClF,QAAK,OAAO,IAAI,SAAS,OAAO,+BAA+B,UAAU,SAAS,IAAI;AACtF,aAAU,kBAAkB,KAAK,KAAK;;;;;;;;CAS1C,gBAAwB,QAAwC;AAC9D,UAAQ,UAAuB;GAC7B,MAAM,YAAY,KAAK,WAAW;AAElC,aAAU,cAAc;IACtB,MAAM,KAAK,KAAK;IAChB;IACD;AAED,QAAK,OAAO,MAAM,SAAS,OAAO,wBAAwB,MAAM,QAAQ;;;;;;;CAQ5E,2BAAmC,QAAsB;EACvD,MAAM,YAAY,KAAK,aAAa,OAAO;AAE3C,MAAI,CAAC,WAAW,aAAa,CAAC,WAAW,QACvC,OAAM,IAAI,uBACR,8BAA8B,OAAO,mEACrC,OACD;EAGH,MAAM,mBAAmB,UAAU;EACnC,MAAM,YAAY,UAAU;AAE5B,MAAI,CAAC,kBAAkB,SACrB,OAAM,IAAI,uBACR,8BAA8B,OAAO,0CACrC,OACD;AAGH,MAAI,CAAC,iBAAiB,UAAU;AAC9B,QAAK,OAAO,IAAI,SAAS,OAAO,mCAAmC,CAAC,CAAC,iBAAiB,eAAe,IAAI;GACzG,MAAM,MAAM,IAAI,kBAAkB,kBAAkB,UAAU;AAC9D,aAAU,MAAM;AAChB,QAAK,cAAc,qBAAqB,IAAI;QAE5C,MAAK,OAAO,IAAI,SAAS,OAAO,gDAAgD"}
@@ -1,48 +1,33 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "TypeormService", {
6
- enumerable: true,
7
- get: function() {
8
- return TypeormService;
9
- }
10
- });
11
- const _logger = require("../../handlers/logger");
12
- const _datasource = require("../../data-source");
13
- class TypeormService {
14
- loaded = false;
15
- dataSource;
16
- logger = new _logger.LoggerService(TypeormService.name);
17
- hasConnected() {
18
- if (!this.dataSource) {
19
- this.loadDataSources();
20
- }
21
- return this.dataSource.isInitialized ? 1 : 0;
22
- }
23
- getDataSource() {
24
- if (!this.dataSource) {
25
- this.loadDataSources();
26
- }
27
- return this.dataSource;
28
- }
29
- async createConnection() {
30
- const dataSource = this.loadDataSources();
31
- if (dataSource.isInitialized) {
32
- this.logger.log("Typeorm connection already initialized, skipping");
33
- } else {
34
- const connection = await dataSource.initialize();
35
- const migrations = await connection.runMigrations({
36
- transaction: "all"
37
- });
38
- this.logger.log(`Typeorm connection initialized - ${migrations.length} migrations executed`);
39
- }
40
- this.loaded = true;
41
- }
42
- loadDataSources() {
43
- this.dataSource = _datasource.AppDataSource;
44
- return this.dataSource;
45
- }
46
- }
1
+ import { LoggerService } from "../../handlers/logger.js";
2
+ import { AppDataSource } from "../../data-source.js";
3
+ //#region src/services/typeorm/typeorm.service.ts
4
+ var TypeormService = class TypeormService {
5
+ loaded = false;
6
+ dataSource;
7
+ logger = new LoggerService(TypeormService.name);
8
+ hasConnected() {
9
+ if (!this.dataSource) this.loadDataSources();
10
+ return this.dataSource.isInitialized ? 1 : 0;
11
+ }
12
+ getDataSource() {
13
+ if (!this.dataSource) this.loadDataSources();
14
+ return this.dataSource;
15
+ }
16
+ async createConnection() {
17
+ const dataSource = this.loadDataSources();
18
+ if (dataSource.isInitialized) this.logger.log("Typeorm connection already initialized, skipping");
19
+ else {
20
+ const migrations = await (await dataSource.initialize()).runMigrations({ transaction: "all" });
21
+ this.logger.log(`Typeorm connection initialized - ${migrations.length} migrations executed`);
22
+ }
23
+ this.loaded = true;
24
+ }
25
+ loadDataSources() {
26
+ this.dataSource = AppDataSource;
27
+ return this.dataSource;
28
+ }
29
+ };
30
+ //#endregion
31
+ export { TypeormService };
47
32
 
48
33
  //# sourceMappingURL=typeorm.service.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/services/typeorm/typeorm.service.ts"],"names":["TypeormService","loaded","dataSource","logger","LoggerService","name","hasConnected","loadDataSources","isInitialized","getDataSource","createConnection","log","connection","initialize","migrations","runMigrations","transaction","length","AppDataSource"],"mappings":";;;;+BAIaA;;;eAAAA;;;wBAHiB;4BACA;AAEvB,MAAMA;IACXC,SAAS,MAAM;IACPC,WAAwB;IACfC,SAAS,IAAIC,qBAAa,CAACJ,eAAeK,IAAI,EAAE;IAE1DC,eAAe;QACpB,IAAI,CAAC,IAAI,CAACJ,UAAU,EAAE;YACpB,IAAI,CAACK,eAAe;QACtB;QAEA,OAAO,IAAI,CAACL,UAAU,CAAEM,aAAa,GAAG,IAAI;IAC9C;IAEOC,gBAAgB;QACrB,IAAI,CAAC,IAAI,CAACP,UAAU,EAAE;YACpB,IAAI,CAACK,eAAe;QACtB;QAEA,OAAO,IAAI,CAACL,UAAU;IACxB;IAEA,MAAaQ,mBAAmB;QAC9B,MAAMR,aAAa,IAAI,CAACK,eAAe;QACvC,IAAIL,WAAWM,aAAa,EAAE;YAC5B,IAAI,CAACL,MAAM,CAACQ,GAAG,CAAC;QAClB,OAAO;YACL,MAAMC,aAAa,MAAMV,WAAWW,UAAU;YAC9C,MAAMC,aAAa,MAAMF,WAAWG,aAAa,CAAC;gBAAEC,aAAa;YAAM;YACvE,IAAI,CAACb,MAAM,CAACQ,GAAG,CAAC,CAAC,iCAAiC,EAAEG,WAAWG,MAAM,CAAC,oBAAoB,CAAC;QAC7F;QACA,IAAI,CAAChB,MAAM,GAAG;IAChB;IAEQM,kBAAkB;QACxB,IAAI,CAACL,UAAU,GAAGgB,yBAAa;QAC/B,OAAO,IAAI,CAAChB,UAAU;IACxB;AACF"}
1
+ {"version":3,"file":"typeorm.service.js","names":[],"sources":["../../../src/services/typeorm/typeorm.service.ts"],"sourcesContent":["import { DataSource } from \"typeorm\";\nimport { LoggerService } from \"@/handlers/logger\";\nimport { AppDataSource } from \"@/data-source\";\n\nexport class TypeormService {\n loaded = false;\n private dataSource?: DataSource;\n private readonly logger = new LoggerService(TypeormService.name);\n\n public hasConnected() {\n if (!this.dataSource) {\n this.loadDataSources();\n }\n\n return this.dataSource!.isInitialized ? 1 : 0;\n }\n\n public getDataSource() {\n if (!this.dataSource) {\n this.loadDataSources();\n }\n\n return this.dataSource!;\n }\n\n public async createConnection() {\n const dataSource = this.loadDataSources();\n if (dataSource.isInitialized) {\n this.logger.log(\"Typeorm connection already initialized, skipping\");\n } else {\n const connection = await dataSource.initialize();\n const migrations = await connection.runMigrations({ transaction: \"all\" });\n this.logger.log(`Typeorm connection initialized - ${migrations.length} migrations executed`);\n }\n this.loaded = true;\n }\n\n private loadDataSources() {\n this.dataSource = AppDataSource;\n return this.dataSource!;\n }\n}\n"],"mappings":";;;AAIA,IAAa,iBAAb,MAAa,eAAe;CAC1B,SAAS;CACT;CACA,SAA0B,IAAI,cAAc,eAAe,KAAK;CAEhE,eAAsB;AACpB,MAAI,CAAC,KAAK,WACR,MAAK,iBAAiB;AAGxB,SAAO,KAAK,WAAY,gBAAgB,IAAI;;CAG9C,gBAAuB;AACrB,MAAI,CAAC,KAAK,WACR,MAAK,iBAAiB;AAGxB,SAAO,KAAK;;CAGd,MAAa,mBAAmB;EAC9B,MAAM,aAAa,KAAK,iBAAiB;AACzC,MAAI,WAAW,cACb,MAAK,OAAO,IAAI,mDAAmD;OAC9D;GAEL,MAAM,aAAa,OAAM,MADA,WAAW,YAAY,EACZ,cAAc,EAAE,aAAa,OAAO,CAAC;AACzE,QAAK,OAAO,IAAI,oCAAoC,WAAW,OAAO,sBAAsB;;AAE9F,OAAK,SAAS;;CAGhB,kBAA0B;AACxB,OAAK,aAAa;AAClB,SAAO,KAAK"}
@@ -1,67 +1,30 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
1
+ import "../../constants/service.constants.js";
2
+ import { idRuleV2 } from "../../controllers/validation/generic.validation.js";
3
+ import { z } from "zod";
4
+ //#region src/services/validators/floor-service.validation.ts
5
+ const xValidator = z.number().int().min(0).max(12);
6
+ const yValidator = z.number().int().min(0).max(12);
7
+ const floorOrderValidator = z.number().int();
8
+ const floorNameValidator = z.string().min(3);
9
+ const printerInFloorSchema = z.object({
10
+ printerId: idRuleV2,
11
+ floorId: idRuleV2,
12
+ x: xValidator,
13
+ y: yValidator
4
14
  });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get createOrUpdateFloorSchema () {
13
- return createOrUpdateFloorSchema;
14
- },
15
- get floorNameValidator () {
16
- return floorNameValidator;
17
- },
18
- get floorOrderValidator () {
19
- return floorOrderValidator;
20
- },
21
- get printerInFloorSchema () {
22
- return printerInFloorSchema;
23
- },
24
- get updateFloorNameSchema () {
25
- return updateFloorNameSchema;
26
- },
27
- get updateFloorOrderSchema () {
28
- return updateFloorOrderSchema;
29
- },
30
- get xValidator () {
31
- return xValidator;
32
- },
33
- get yValidator () {
34
- return yValidator;
35
- }
36
- });
37
- const _zod = require("zod");
38
- const _serviceconstants = require("../../constants/service.constants");
39
- const _genericvalidation = require("../../controllers/validation/generic.validation");
40
- const xValidator = _zod.z.number().int().min(0).max(12);
41
- const yValidator = _zod.z.number().int().min(0).max(12);
42
- const floorOrderValidator = _zod.z.number().int();
43
- const floorNameValidator = _zod.z.string().min(_serviceconstants.minFloorNameLength);
44
- const printerInFloorSchema = _zod.z.object({
45
- printerId: _genericvalidation.idRuleV2,
46
- floorId: _genericvalidation.idRuleV2,
47
- x: xValidator,
48
- y: yValidator
49
- });
50
- const updateFloorNameSchema = _zod.z.object({
51
- name: floorNameValidator
52
- });
53
- const updateFloorOrderSchema = _zod.z.object({
54
- order: floorOrderValidator
55
- });
56
- const createOrUpdateFloorSchema = _zod.z.object({
57
- name: floorNameValidator,
58
- order: floorOrderValidator,
59
- printers: _zod.z.array(_zod.z.object({
60
- printerId: _genericvalidation.idRuleV2,
61
- floorId: _genericvalidation.idRuleV2.optional(),
62
- x: xValidator,
63
- y: yValidator
64
- })).optional()
15
+ const updateFloorNameSchema = z.object({ name: floorNameValidator });
16
+ const updateFloorOrderSchema = z.object({ order: floorOrderValidator });
17
+ const createOrUpdateFloorSchema = z.object({
18
+ name: floorNameValidator,
19
+ order: floorOrderValidator,
20
+ printers: z.array(z.object({
21
+ printerId: idRuleV2,
22
+ floorId: idRuleV2.optional(),
23
+ x: xValidator,
24
+ y: yValidator
25
+ })).optional()
65
26
  });
27
+ //#endregion
28
+ export { createOrUpdateFloorSchema, floorNameValidator, floorOrderValidator, printerInFloorSchema, updateFloorNameSchema, updateFloorOrderSchema, xValidator, yValidator };
66
29
 
67
30
  //# sourceMappingURL=floor-service.validation.js.map