@fdm-monster/server 2.0.10 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (944) 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 +3 -2
  7. package/RELEASE_NOTES.MD +152 -1
  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 +45 -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 +169 -181
  29. package/dist/container.js.map +1 -1
  30. package/dist/container.tokens.js +79 -85
  31. package/dist/container.tokens.js.map +1 -1
  32. package/dist/controllers/api-key.controller.js +72 -0
  33. package/dist/controllers/api-key.controller.js.map +1 -0
  34. package/dist/controllers/auth.controller.js +156 -225
  35. package/dist/controllers/auth.controller.js.map +1 -1
  36. package/dist/controllers/batch-call.controller.js +79 -116
  37. package/dist/controllers/batch-call.controller.js.map +1 -1
  38. package/dist/controllers/camera-stream.controller.js +74 -119
  39. package/dist/controllers/camera-stream.controller.js.map +1 -1
  40. package/dist/controllers/dto/update-client-dist.dto.js +8 -15
  41. package/dist/controllers/dto/update-client-dist.dto.js.map +1 -1
  42. package/dist/controllers/file-storage.controller.js +251 -312
  43. package/dist/controllers/file-storage.controller.js.map +1 -1
  44. package/dist/controllers/first-time-setup.controller.js +83 -135
  45. package/dist/controllers/first-time-setup.controller.js.map +1 -1
  46. package/dist/controllers/floor.controller.js +111 -175
  47. package/dist/controllers/floor.controller.js.map +1 -1
  48. package/dist/controllers/metrics.controller.js +27 -53
  49. package/dist/controllers/metrics.controller.js.map +1 -1
  50. package/dist/controllers/print-job.controller.js +366 -451
  51. package/dist/controllers/print-job.controller.js.map +1 -1
  52. package/dist/controllers/print-queue.controller.js +329 -427
  53. package/dist/controllers/print-queue.controller.js.map +1 -1
  54. package/dist/controllers/printer-files.controller.js +244 -305
  55. package/dist/controllers/printer-files.controller.js.map +1 -1
  56. package/dist/controllers/printer-maintenance-log.controller.js +109 -165
  57. package/dist/controllers/printer-maintenance-log.controller.js.map +1 -1
  58. package/dist/controllers/printer-settings.controller.js +50 -81
  59. package/dist/controllers/printer-settings.controller.js.map +1 -1
  60. package/dist/controllers/printer-tag.controller.js +104 -166
  61. package/dist/controllers/printer-tag.controller.js.map +1 -1
  62. package/dist/controllers/printer.controller.js +352 -469
  63. package/dist/controllers/printer.controller.js.map +1 -1
  64. package/dist/controllers/server-private.controller.js +182 -239
  65. package/dist/controllers/server-private.controller.js.map +1 -1
  66. package/dist/controllers/server-public.controller.js +104 -158
  67. package/dist/controllers/server-public.controller.js.map +1 -1
  68. package/dist/controllers/settings.controller.js +229 -364
  69. package/dist/controllers/settings.controller.js.map +1 -1
  70. package/dist/controllers/slicer-compat.controller.js +179 -206
  71. package/dist/controllers/slicer-compat.controller.js.map +1 -1
  72. package/dist/controllers/user.controller.js +226 -348
  73. package/dist/controllers/user.controller.js.map +1 -1
  74. package/dist/controllers/validation/api-key-controller.validation.js +11 -0
  75. package/dist/controllers/validation/api-key-controller.validation.js.map +1 -0
  76. package/dist/controllers/validation/auth-controller.validation.js +5 -14
  77. package/dist/controllers/validation/auth-controller.validation.js.map +1 -1
  78. package/dist/controllers/validation/batch-controller.validation.js +13 -35
  79. package/dist/controllers/validation/batch-controller.validation.js.map +1 -1
  80. package/dist/controllers/validation/generic.validation.js +6 -23
  81. package/dist/controllers/validation/generic.validation.js.map +1 -1
  82. package/dist/controllers/validation/printer-completion-controller.validation.js +5 -14
  83. package/dist/controllers/validation/printer-completion-controller.validation.js.map +1 -1
  84. package/dist/controllers/validation/printer-controller.validation.js +16 -48
  85. package/dist/controllers/validation/printer-controller.validation.js.map +1 -1
  86. package/dist/controllers/validation/printer-files-controller.validation.js +12 -47
  87. package/dist/controllers/validation/printer-files-controller.validation.js.map +1 -1
  88. package/dist/controllers/validation/printer-settings-controller.validation.js +5 -14
  89. package/dist/controllers/validation/printer-settings-controller.validation.js.map +1 -1
  90. package/dist/controllers/validation/server-private.validation.js +7 -14
  91. package/dist/controllers/validation/server-private.validation.js.map +1 -1
  92. package/dist/controllers/validation/setting.validation.js +12 -34
  93. package/dist/controllers/validation/setting.validation.js.map +1 -1
  94. package/dist/controllers/validation/user-controller.validation.js +27 -65
  95. package/dist/controllers/validation/user-controller.validation.js.map +1 -1
  96. package/dist/data-source.js +78 -79
  97. package/dist/data-source.js.map +1 -1
  98. package/dist/entities/api-key.entity.js +60 -0
  99. package/dist/entities/api-key.entity.js.map +1 -0
  100. package/dist/entities/camera-stream.entity.js +49 -91
  101. package/dist/entities/camera-stream.entity.js.map +1 -1
  102. package/dist/entities/floor-position.entity.js +38 -75
  103. package/dist/entities/floor-position.entity.js.map +1 -1
  104. package/dist/entities/floor.entity.js +18 -48
  105. package/dist/entities/floor.entity.js.map +1 -1
  106. package/dist/entities/index.js +15 -66
  107. package/dist/entities/print-job.entity.js +114 -196
  108. package/dist/entities/print-job.entity.js.map +1 -1
  109. package/dist/entities/printer-maintenance-log.entity.js +61 -140
  110. package/dist/entities/printer-maintenance-log.entity.js.map +1 -1
  111. package/dist/entities/printer-tag.entity.js +33 -66
  112. package/dist/entities/printer-tag.entity.js.map +1 -1
  113. package/dist/entities/printer.entity.js +67 -124
  114. package/dist/entities/printer.entity.js.map +1 -1
  115. package/dist/entities/refresh-token.entity.js +31 -66
  116. package/dist/entities/refresh-token.entity.js.map +1 -1
  117. package/dist/entities/role.entity.js +16 -45
  118. package/dist/entities/role.entity.js.map +1 -1
  119. package/dist/entities/settings.entity.js +38 -77
  120. package/dist/entities/settings.entity.js.map +1 -1
  121. package/dist/entities/tag.entity.js +19 -43
  122. package/dist/entities/tag.entity.js.map +1 -1
  123. package/dist/entities/user-role.entity.js +30 -67
  124. package/dist/entities/user-role.entity.js.map +1 -1
  125. package/dist/entities/user.entity.js +32 -87
  126. package/dist/entities/user.entity.js.map +1 -1
  127. package/dist/exceptions/failed-dependency.exception.js +11 -18
  128. package/dist/exceptions/failed-dependency.exception.js.map +1 -1
  129. package/dist/exceptions/job.exceptions.js +9 -16
  130. package/dist/exceptions/job.exceptions.js.map +1 -1
  131. package/dist/exceptions/runtime.exceptions.js +82 -121
  132. package/dist/exceptions/runtime.exceptions.js.map +1 -1
  133. package/dist/handlers/event-emitter.js +13 -20
  134. package/dist/handlers/event-emitter.js.map +1 -1
  135. package/dist/handlers/logger-factory.js +7 -14
  136. package/dist/handlers/logger-factory.js.map +1 -1
  137. package/dist/handlers/logger.js +26 -36
  138. package/dist/handlers/logger.js.map +1 -1
  139. package/dist/handlers/logging/file-logging.transport.js +17 -31
  140. package/dist/handlers/logging/file-logging.transport.js.map +1 -1
  141. package/dist/handlers/logging/loki-logging.transport.js +34 -50
  142. package/dist/handlers/logging/loki-logging.transport.js.map +1 -1
  143. package/dist/handlers/logging/static.logger.js +83 -124
  144. package/dist/handlers/logging/static.logger.js.map +1 -1
  145. package/dist/handlers/validators.js +8 -25
  146. package/dist/handlers/validators.js.map +1 -1
  147. package/dist/index.js +23 -26
  148. package/dist/index.js.map +1 -1
  149. package/dist/middleware/api-key.strategy.js +45 -0
  150. package/dist/middleware/api-key.strategy.js.map +1 -0
  151. package/dist/middleware/authenticate.js +26 -69
  152. package/dist/middleware/authenticate.js.map +1 -1
  153. package/dist/middleware/database.js +16 -22
  154. package/dist/middleware/database.js.map +1 -1
  155. package/dist/middleware/demo.middleware.js +19 -27
  156. package/dist/middleware/demo.middleware.js.map +1 -1
  157. package/dist/middleware/exception.filter.js +109 -133
  158. package/dist/middleware/exception.filter.js.map +1 -1
  159. package/dist/middleware/global.middleware.js +28 -47
  160. package/dist/middleware/global.middleware.js.map +1 -1
  161. package/dist/middleware/param-converter.middleware.js +31 -69
  162. package/dist/middleware/param-converter.middleware.js.map +1 -1
  163. package/dist/middleware/passport.js +41 -64
  164. package/dist/middleware/passport.js.map +1 -1
  165. package/dist/middleware/printer-resolver.js +26 -33
  166. package/dist/middleware/printer-resolver.js.map +1 -1
  167. package/dist/middleware/printer.js +56 -94
  168. package/dist/middleware/printer.js.map +1 -1
  169. package/dist/middleware/slicer-api-key.middleware.js +23 -26
  170. package/dist/middleware/slicer-api-key.middleware.js.map +1 -1
  171. package/dist/middleware/socketio.middleware.js +21 -32
  172. package/dist/middleware/socketio.middleware.js.map +1 -1
  173. package/dist/migrations/1706829146617-InitSqlite.js +84 -91
  174. package/dist/migrations/1706829146617-InitSqlite.js.map +1 -1
  175. package/dist/migrations/1707494762198-PrinterGroup.js +22 -29
  176. package/dist/migrations/1707494762198-PrinterGroup.js.map +1 -1
  177. package/dist/migrations/1708465930665-ChangePrintCompletionDeletePrinterCascade.js +26 -33
  178. package/dist/migrations/1708465930665-ChangePrintCompletionDeletePrinterCascade.js.map +1 -1
  179. package/dist/migrations/1713300747465-ChangeRoleNameUnique.js +27 -34
  180. package/dist/migrations/1713300747465-ChangeRoleNameUnique.js.map +1 -1
  181. package/dist/migrations/1713897879622-AddPrinterType.js +34 -41
  182. package/dist/migrations/1713897879622-AddPrinterType.js.map +1 -1
  183. package/dist/migrations/1720338804844-RemovePrinterFile.js +12 -19
  184. package/dist/migrations/1720338804844-RemovePrinterFile.js.map +1 -1
  185. package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js +26 -33
  186. package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js.map +1 -1
  187. package/dist/migrations/1766576698569-DropPermissions.js +11 -18
  188. package/dist/migrations/1766576698569-DropPermissions.js.map +1 -1
  189. package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js +26 -33
  190. package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js.map +1 -1
  191. package/dist/migrations/1767279607392-DropCustomGcode.js +12 -19
  192. package/dist/migrations/1767279607392-DropCustomGcode.js.map +1 -1
  193. package/dist/migrations/1767291804417-DropPrintCompletions.js +12 -19
  194. package/dist/migrations/1767291804417-DropPrintCompletions.js.map +1 -1
  195. package/dist/migrations/1767352862576-DropSettingsFileClean.js +18 -25
  196. package/dist/migrations/1767352862576-DropSettingsFileClean.js.map +1 -1
  197. package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js +26 -33
  198. package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js.map +1 -1
  199. package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js +18 -25
  200. package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js.map +1 -1
  201. package/dist/migrations/1767432108916-RenameGroupToTag.js +22 -29
  202. package/dist/migrations/1767432108916-RenameGroupToTag.js.map +1 -1
  203. package/dist/migrations/1767451444137-AddPrintJob.js +20 -27
  204. package/dist/migrations/1767451444137-AddPrintJob.js.map +1 -1
  205. package/dist/migrations/1767909428129-AddPrinterMaintenanceLog.js +14 -21
  206. package/dist/migrations/1767909428129-AddPrinterMaintenanceLog.js.map +1 -1
  207. package/dist/migrations/1778446203015-AddApiKey.js +49 -0
  208. package/dist/migrations/1778446203015-AddApiKey.js.map +1 -0
  209. package/dist/plugins/controllers-plugin.js +21 -0
  210. package/dist/plugins/controllers-plugin.js.map +1 -0
  211. package/dist/server.constants.js +79 -91
  212. package/dist/server.constants.js.map +1 -1
  213. package/dist/server.core.js +60 -122
  214. package/dist/server.core.js.map +1 -1
  215. package/dist/server.env.js +56 -121
  216. package/dist/server.env.js.map +1 -1
  217. package/dist/server.host.js +66 -99
  218. package/dist/server.host.js.map +1 -1
  219. package/dist/services/authentication/auth.service.js +103 -126
  220. package/dist/services/authentication/auth.service.js.map +1 -1
  221. package/dist/services/authentication/jwt.service.js +23 -32
  222. package/dist/services/authentication/jwt.service.js.map +1 -1
  223. package/dist/services/bambu/bambu-ftp.adapter.js +194 -236
  224. package/dist/services/bambu/bambu-ftp.adapter.js.map +1 -1
  225. package/dist/services/bambu/bambu-mqtt.adapter.js +394 -449
  226. package/dist/services/bambu/bambu-mqtt.adapter.js.map +1 -1
  227. package/dist/services/bambu/bambu.client.js +64 -65
  228. package/dist/services/bambu/bambu.client.js.map +1 -1
  229. package/dist/services/bambu/mqtt-message.types.js +1 -6
  230. package/dist/services/bambu.api.js +230 -247
  231. package/dist/services/bambu.api.js.map +1 -1
  232. package/dist/services/core/batch-call.service.js +139 -163
  233. package/dist/services/core/batch-call.service.js.map +1 -1
  234. package/dist/services/core/client-bundle.service.js +126 -165
  235. package/dist/services/core/client-bundle.service.js.map +1 -1
  236. package/dist/services/core/config.service.js +16 -26
  237. package/dist/services/core/config.service.js.map +1 -1
  238. package/dist/services/core/cradle.service.js +11 -19
  239. package/dist/services/core/cradle.service.js.map +1 -1
  240. package/dist/services/core/github.service.js +59 -79
  241. package/dist/services/core/github.service.js.map +1 -1
  242. package/dist/services/core/http-client.factory.js +30 -38
  243. package/dist/services/core/http-client.factory.js.map +1 -1
  244. package/dist/services/core/logs-manager.service.js +61 -84
  245. package/dist/services/core/logs-manager.service.js.map +1 -1
  246. package/dist/services/core/monsterpi.service.js +26 -36
  247. package/dist/services/core/monsterpi.service.js.map +1 -1
  248. package/dist/services/core/multer.service.js +69 -129
  249. package/dist/services/core/multer.service.js.map +1 -1
  250. package/dist/services/core/server-release.service.js +77 -99
  251. package/dist/services/core/server-release.service.js.map +1 -1
  252. package/dist/services/core/yaml.service.js +443 -573
  253. package/dist/services/core/yaml.service.js.map +1 -1
  254. package/dist/services/file-analysis.service.js +134 -144
  255. package/dist/services/file-analysis.service.js.map +1 -1
  256. package/dist/services/file-storage.service.js +324 -423
  257. package/dist/services/file-storage.service.js.map +1 -1
  258. package/dist/services/interfaces/api-key.dto.js +19 -0
  259. package/dist/services/interfaces/api-key.dto.js.map +1 -0
  260. package/dist/services/interfaces/api-key.service.interface.js +1 -0
  261. package/dist/services/interfaces/auth.service.interface.js +1 -6
  262. package/dist/services/interfaces/camera-stream.dto.js +23 -41
  263. package/dist/services/interfaces/camera-stream.dto.js.map +1 -1
  264. package/dist/services/interfaces/camera-stream.service.interface.js +1 -6
  265. package/dist/services/interfaces/file-upload-tracker.interface.js +1 -6
  266. package/dist/services/interfaces/floor.dto.js +31 -55
  267. package/dist/services/interfaces/floor.dto.js.map +1 -1
  268. package/dist/services/interfaces/floor.service.interface.js +1 -6
  269. package/dist/services/interfaces/jwt.service.interface.js +1 -6
  270. package/dist/services/interfaces/login.dto.js +10 -17
  271. package/dist/services/interfaces/login.dto.js.map +1 -1
  272. package/dist/services/interfaces/page.interface.js +5 -12
  273. package/dist/services/interfaces/page.interface.js.map +1 -1
  274. package/dist/services/interfaces/permission.service.interface.js +1 -6
  275. package/dist/services/interfaces/printer-file.dto.js +1 -6
  276. package/dist/services/interfaces/printer-maintenance-log.dto.js +1 -6
  277. package/dist/services/interfaces/printer-tag.dto.js +11 -26
  278. package/dist/services/interfaces/printer-tag.dto.js.map +1 -1
  279. package/dist/services/interfaces/printer-tag.service.interface.js +1 -6
  280. package/dist/services/interfaces/printer.dto.js +21 -36
  281. package/dist/services/interfaces/printer.dto.js.map +1 -1
  282. package/dist/services/interfaces/printer.service.interface.js +1 -6
  283. package/dist/services/interfaces/refresh-token.dto.js +9 -16
  284. package/dist/services/interfaces/refresh-token.dto.js.map +1 -1
  285. package/dist/services/interfaces/refresh-token.service.interface.js +1 -6
  286. package/dist/services/interfaces/role-service.interface.js +1 -6
  287. package/dist/services/interfaces/role.dto.js +7 -14
  288. package/dist/services/interfaces/role.dto.js.map +1 -1
  289. package/dist/services/interfaces/settings.dto.js +10 -17
  290. package/dist/services/interfaces/settings.dto.js.map +1 -1
  291. package/dist/services/interfaces/settings.service.interface.js +1 -6
  292. package/dist/services/interfaces/tag.dto.js +1 -6
  293. package/dist/services/interfaces/task.interfaces.js +1 -6
  294. package/dist/services/interfaces/user-role.dto.js +9 -16
  295. package/dist/services/interfaces/user-role.dto.js.map +1 -1
  296. package/dist/services/interfaces/user-service.interface.js +1 -6
  297. package/dist/services/interfaces/user.dto.js +24 -37
  298. package/dist/services/interfaces/user.dto.js.map +1 -1
  299. package/dist/services/moonraker/constants/moonraker-event.dto.js +16 -31
  300. package/dist/services/moonraker/constants/moonraker-event.dto.js.map +1 -1
  301. package/dist/services/moonraker/constants/moonraker.constants.js +4 -11
  302. package/dist/services/moonraker/constants/moonraker.constants.js.map +1 -1
  303. package/dist/services/moonraker/dto/access/access-info.dto.js +1 -6
  304. package/dist/services/moonraker/dto/access/access-login-refresh.dto.js +1 -6
  305. package/dist/services/moonraker/dto/access/access-login-result.dto.js +1 -6
  306. package/dist/services/moonraker/dto/access/access-user-result.dto.js +1 -6
  307. package/dist/services/moonraker/dto/access/access-user.dto.js +1 -6
  308. package/dist/services/moonraker/dto/database/database-namespace-item.dto.js +1 -6
  309. package/dist/services/moonraker/dto/database/database-namespace-list.dto.js +1 -6
  310. package/dist/services/moonraker/dto/gcode-help.dto.js +1 -6
  311. package/dist/services/moonraker/dto/gcode-store.dto.js +1 -6
  312. package/dist/services/moonraker/dto/job-queue/enqueue-job.dto.js +1 -6
  313. package/dist/services/moonraker/dto/job-queue/job-queue-status.dto.js +1 -6
  314. package/dist/services/moonraker/dto/machine/machine-device-power-device-state.dto.js +1 -6
  315. package/dist/services/moonraker/dto/machine/machine-device-power-devices.dto.js +1 -6
  316. package/dist/services/moonraker/dto/machine/machine-peripherals-canbus.dto.js +1 -6
  317. package/dist/services/moonraker/dto/machine/machine-peripherals-serial.dto.js +1 -6
  318. package/dist/services/moonraker/dto/machine/machine-peripherals-usb.dto.js +1 -6
  319. package/dist/services/moonraker/dto/machine/machine-peripherals-video.dto.js +1 -6
  320. package/dist/services/moonraker/dto/machine/machine-system-info.dto.js +1 -6
  321. package/dist/services/moonraker/dto/machine/machine-update-status.dto.js +1 -6
  322. package/dist/services/moonraker/dto/machine/machine-wled-strips.dto.js +1 -6
  323. package/dist/services/moonraker/dto/notifier-list.dto.js +1 -6
  324. package/dist/services/moonraker/dto/objects/bed-mesh.dto.js +1 -6
  325. package/dist/services/moonraker/dto/objects/configfile.dto.js +1 -6
  326. package/dist/services/moonraker/dto/objects/display-status.dto.js +1 -6
  327. package/dist/services/moonraker/dto/objects/extruder.dto.js +1 -6
  328. package/dist/services/moonraker/dto/objects/fan.dto.js +1 -6
  329. package/dist/services/moonraker/dto/objects/filament-motion-sensor.dto.js +1 -6
  330. package/dist/services/moonraker/dto/objects/filament-switch-sensor.dto.js +1 -6
  331. package/dist/services/moonraker/dto/objects/gcode-move.dto.js +1 -6
  332. package/dist/services/moonraker/dto/objects/gcode.dto.js +1 -6
  333. package/dist/services/moonraker/dto/objects/heater-bed.dto.js +1 -6
  334. package/dist/services/moonraker/dto/objects/heaters.dto.js +1 -6
  335. package/dist/services/moonraker/dto/objects/idle-timeout.dto.js +6 -21
  336. package/dist/services/moonraker/dto/objects/idle-timeout.dto.js.map +1 -1
  337. package/dist/services/moonraker/dto/objects/mcu.dto.js +1 -6
  338. package/dist/services/moonraker/dto/objects/motion-report.dto.js +1 -6
  339. package/dist/services/moonraker/dto/objects/output-pin.dto.js +1 -6
  340. package/dist/services/moonraker/dto/objects/pause-resume.dto.js +1 -6
  341. package/dist/services/moonraker/dto/objects/print-stats.dto.js +9 -24
  342. package/dist/services/moonraker/dto/objects/print-stats.dto.js.map +1 -1
  343. package/dist/services/moonraker/dto/objects/printer-object.dto.js +1 -6
  344. package/dist/services/moonraker/dto/objects/printer-object.types.js +1 -6
  345. package/dist/services/moonraker/dto/objects/printer-objects-list.dto.js +28 -43
  346. package/dist/services/moonraker/dto/objects/printer-objects-list.dto.js.map +1 -1
  347. package/dist/services/moonraker/dto/objects/printer-objects-query.dto.js +1 -6
  348. package/dist/services/moonraker/dto/objects/stepper-enable.dto.js +1 -6
  349. package/dist/services/moonraker/dto/objects/system-stats.dto.js +1 -6
  350. package/dist/services/moonraker/dto/objects/temperature-fan.dto.js +1 -6
  351. package/dist/services/moonraker/dto/objects/temperature-sensor.dto.js +1 -6
  352. package/dist/services/moonraker/dto/objects/toolhead.dto.js +1 -6
  353. package/dist/services/moonraker/dto/objects/virtual-sdcard.dto.js +1 -6
  354. package/dist/services/moonraker/dto/objects/webhooks.dto.js +1 -6
  355. package/dist/services/moonraker/dto/octoprint-compat/api-job.dto.js +1 -6
  356. package/dist/services/moonraker/dto/octoprint-compat/api-login.dto.js +1 -6
  357. package/dist/services/moonraker/dto/octoprint-compat/api-printer.dto.js +1 -6
  358. package/dist/services/moonraker/dto/octoprint-compat/api-profiles.dto.js +1 -6
  359. package/dist/services/moonraker/dto/octoprint-compat/api-settings.dto.js +1 -6
  360. package/dist/services/moonraker/dto/octoprint-compat/api-version.dto.js +1 -6
  361. package/dist/services/moonraker/dto/octoprint-compat/server-version.dto.js +1 -6
  362. package/dist/services/moonraker/dto/printer-info.dto.js +7 -22
  363. package/dist/services/moonraker/dto/printer-info.dto.js.map +1 -1
  364. package/dist/services/moonraker/dto/printer-query-endstops.dto.js +1 -6
  365. package/dist/services/moonraker/dto/process-stats.dto.js +1 -6
  366. package/dist/services/moonraker/dto/rest/action-result.dto.js +1 -6
  367. package/dist/services/moonraker/dto/rest/error.dto.js +1 -6
  368. package/dist/services/moonraker/dto/rest/result.dto.js +6 -13
  369. package/dist/services/moonraker/dto/rest/result.dto.js.map +1 -1
  370. package/dist/services/moonraker/dto/rollover-logs.dto.js +1 -6
  371. package/dist/services/moonraker/dto/rpc/json-rpc-error.dto.js +1 -6
  372. package/dist/services/moonraker/dto/rpc/json-rpc-request.dto.js +1 -6
  373. package/dist/services/moonraker/dto/rpc/json-rpc-response.dto.js +1 -6
  374. package/dist/services/moonraker/dto/server/server-config.dto.js +1 -6
  375. package/dist/services/moonraker/dto/server/server-info.dto.js +7 -14
  376. package/dist/services/moonraker/dto/server/server-info.dto.js.map +1 -1
  377. package/dist/services/moonraker/dto/server-announcements/announcement-action.dto.js +1 -6
  378. package/dist/services/moonraker/dto/server-announcements/announcement-entry-id.dto.js +1 -6
  379. package/dist/services/moonraker/dto/server-announcements/announcement-feeds.dto.js +1 -6
  380. package/dist/services/moonraker/dto/server-announcements/announcement-list.dto.js +1 -6
  381. package/dist/services/moonraker/dto/server-files/server-file-directory-action.dto.js +1 -6
  382. package/dist/services/moonraker/dto/server-files/server-file-directory-info.dto.js +1 -6
  383. package/dist/services/moonraker/dto/server-files/server-file-metadata.dto.js +1 -6
  384. package/dist/services/moonraker/dto/server-files/server-file-root.dto.js +1 -6
  385. package/dist/services/moonraker/dto/server-files/server-file-thumbnail.dto.js +1 -6
  386. package/dist/services/moonraker/dto/server-files/server-file-zip-action.dto.js +1 -6
  387. package/dist/services/moonraker/dto/server-files/server-file.dto.js +1 -6
  388. package/dist/services/moonraker/dto/server-history/history-job.dto.js +1 -6
  389. package/dist/services/moonraker/dto/server-history/history-last-totals.dto.js +1 -6
  390. package/dist/services/moonraker/dto/server-history/history-list.dto.js +1 -6
  391. package/dist/services/moonraker/dto/server-history/history-totals.dto.js +1 -6
  392. package/dist/services/moonraker/dto/server-history/job.dto.js +6 -21
  393. package/dist/services/moonraker/dto/server-history/job.dto.js.map +1 -1
  394. package/dist/services/moonraker/dto/server-sensors/sensor-info.dto.js +1 -6
  395. package/dist/services/moonraker/dto/server-sensors/sensor-list.dto.js +1 -6
  396. package/dist/services/moonraker/dto/server-sensors/sensor-measurements.dto.js +1 -6
  397. package/dist/services/moonraker/dto/server-webcams/webcam-item.dto.js +1 -6
  398. package/dist/services/moonraker/dto/server-webcams/webcam-list.dto.js +1 -6
  399. package/dist/services/moonraker/dto/server-webcams/webcam-test.dto.js +1 -6
  400. package/dist/services/moonraker/dto/spoolman/spoolman-active-spool.dto.js +1 -6
  401. package/dist/services/moonraker/dto/spoolman/spoolman-proxy-request.dto.js +1 -6
  402. package/dist/services/moonraker/dto/spoolman/spoolman-response.dto.js +1 -6
  403. package/dist/services/moonraker/dto/spoolman/spoolman-status.dto.js +1 -6
  404. package/dist/services/moonraker/dto/sudo-info.dto.js +1 -6
  405. package/dist/services/moonraker/dto/sudo-response.dto.js +1 -6
  406. package/dist/services/moonraker/dto/temperature-store.dto.js +1 -6
  407. package/dist/services/moonraker/dto/websocket/connection-identify-response.dto.js +1 -6
  408. package/dist/services/moonraker/dto/websocket/connection-identify.dto.js +1 -6
  409. package/dist/services/moonraker/dto/websocket/json-rpc-event.dto.js +1 -6
  410. package/dist/services/moonraker/dto/websocket/message.types.js +1 -6
  411. package/dist/services/moonraker/dto/websocket/methods.js +29 -44
  412. package/dist/services/moonraker/dto/websocket/methods.js.map +1 -1
  413. package/dist/services/moonraker/dto/websocket/notify-active-spool-set.params.js +1 -6
  414. package/dist/services/moonraker/dto/websocket/notify-agent-event.params.js +1 -6
  415. package/dist/services/moonraker/dto/websocket/notify-announcement-update.params.js +1 -6
  416. package/dist/services/moonraker/dto/websocket/notify-announcement.params.js +1 -6
  417. package/dist/services/moonraker/dto/websocket/notify-button-event.params.js +1 -6
  418. package/dist/services/moonraker/dto/websocket/notify-filelist-changed.params.js +11 -18
  419. package/dist/services/moonraker/dto/websocket/notify-filelist-changed.params.js.map +1 -1
  420. package/dist/services/moonraker/dto/websocket/notify-history-changed.params.js +1 -6
  421. package/dist/services/moonraker/dto/websocket/notify-job-queue-changed.params.js +1 -6
  422. package/dist/services/moonraker/dto/websocket/notify-proc-stat-update.params.js +1 -6
  423. package/dist/services/moonraker/dto/websocket/notify-sensor-update.params.js +1 -6
  424. package/dist/services/moonraker/dto/websocket/notify-service-state-changed.params.js +1 -6
  425. package/dist/services/moonraker/dto/websocket/notify-spoolman-status-changed.js +1 -6
  426. package/dist/services/moonraker/dto/websocket/notify-sudo-alert.params.js +1 -6
  427. package/dist/services/moonraker/dto/websocket/notify-update-response.params.js +7 -22
  428. package/dist/services/moonraker/dto/websocket/notify-update-response.params.js.map +1 -1
  429. package/dist/services/moonraker/dto/websocket/notify-user-change.params.js +1 -6
  430. package/dist/services/moonraker/moonraker-websocket.adapter.js +313 -348
  431. package/dist/services/moonraker/moonraker-websocket.adapter.js.map +1 -1
  432. package/dist/services/moonraker/moonraker.client.js +536 -559
  433. package/dist/services/moonraker/moonraker.client.js.map +1 -1
  434. package/dist/services/moonraker.api.js +167 -192
  435. package/dist/services/moonraker.api.js.map +1 -1
  436. package/dist/services/octoprint/constants/firmware-update-settings.constants.js +19 -28
  437. package/dist/services/octoprint/constants/firmware-update-settings.constants.js.map +1 -1
  438. package/dist/services/octoprint/constants/octoprint-service.constants.js +3 -30
  439. package/dist/services/octoprint/constants/octoprint-service.constants.js.map +1 -1
  440. package/dist/services/octoprint/constants/octoprint-websocket.constants.js +41 -56
  441. package/dist/services/octoprint/constants/octoprint-websocket.constants.js.map +1 -1
  442. package/dist/services/octoprint/dto/access/user-list.dto.js +1 -6
  443. package/dist/services/octoprint/dto/access/user.dto.js +1 -6
  444. package/dist/services/octoprint/dto/auth/current-user.dto.js +1 -6
  445. package/dist/services/octoprint/dto/auth/login.dto.js +1 -6
  446. package/dist/services/octoprint/dto/connection/connection-state.type.js +23 -30
  447. package/dist/services/octoprint/dto/connection/connection-state.type.js.map +1 -1
  448. package/dist/services/octoprint/dto/connection/connection.dto.js +1 -6
  449. package/dist/services/octoprint/dto/events/client-authed.dto.js +1 -6
  450. package/dist/services/octoprint/dto/events/client-closed.dto.js +1 -6
  451. package/dist/services/octoprint/dto/events/client-opened.dto.js +1 -6
  452. package/dist/services/octoprint/dto/events/dwelling.dto.js +1 -6
  453. package/dist/services/octoprint/dto/events/file-added.dto.js +1 -6
  454. package/dist/services/octoprint/dto/events/file-deselected.dto.js +1 -6
  455. package/dist/services/octoprint/dto/events/file-removed.dto.js +1 -6
  456. package/dist/services/octoprint/dto/events/folder-added.dto.js +1 -6
  457. package/dist/services/octoprint/dto/events/home.dto.js +1 -6
  458. package/dist/services/octoprint/dto/events/metadata-analysis-finished.dto.js +1 -6
  459. package/dist/services/octoprint/dto/events/metadata-analysis-started.dto.js +1 -6
  460. package/dist/services/octoprint/dto/events/metadata-statistics-updated.dto.js +1 -6
  461. package/dist/services/octoprint/dto/events/position-update.dto.js +1 -6
  462. package/dist/services/octoprint/dto/events/print-cancelled.dto.js +1 -6
  463. package/dist/services/octoprint/dto/events/print-cancelling.dto.js +1 -6
  464. package/dist/services/octoprint/dto/events/print-done.dto.js +1 -6
  465. package/dist/services/octoprint/dto/events/print-failed.dto.js +1 -6
  466. package/dist/services/octoprint/dto/events/print-paused.dto.js +1 -6
  467. package/dist/services/octoprint/dto/events/print-resumed.dto.js +1 -6
  468. package/dist/services/octoprint/dto/events/print-started.dto.js +1 -6
  469. package/dist/services/octoprint/dto/events/printer-state-changed.dto.js +1 -6
  470. package/dist/services/octoprint/dto/events/transfer-done.dto.js +1 -6
  471. package/dist/services/octoprint/dto/events/transfer-started.dto.js +1 -6
  472. package/dist/services/octoprint/dto/events/updated-files.dto.js +1 -6
  473. package/dist/services/octoprint/dto/events/upload.dto.js +1 -6
  474. package/dist/services/octoprint/dto/events/user-logged-in.dto.js +1 -6
  475. package/dist/services/octoprint/dto/events/z-change.dto.js +1 -6
  476. package/dist/services/octoprint/dto/files/gcode-analysis.dto.js +1 -6
  477. package/dist/services/octoprint/dto/files/octoprint-file.dto.js +1 -6
  478. package/dist/services/octoprint/dto/files/octoprint-files-response.dto.js +1 -6
  479. package/dist/services/octoprint/dto/job/current-job.dto.js +8 -15
  480. package/dist/services/octoprint/dto/job/current-job.dto.js.map +1 -1
  481. package/dist/services/octoprint/dto/job/job.dto.js +1 -6
  482. package/dist/services/octoprint/dto/octoprint-event.dto.js +21 -39
  483. package/dist/services/octoprint/dto/octoprint-event.dto.js.map +1 -1
  484. package/dist/services/octoprint/dto/printer/busy-file.dto.js +1 -6
  485. package/dist/services/octoprint/dto/printer/current-printer-state.dto.js +1 -6
  486. package/dist/services/octoprint/dto/printer/flags.dto.js +1 -6
  487. package/dist/services/octoprint/dto/printer/markings.dto.js +1 -6
  488. package/dist/services/octoprint/dto/printer/progress.dto.js +1 -6
  489. package/dist/services/octoprint/dto/printer/resends.dto.js +1 -6
  490. package/dist/services/octoprint/dto/printer/state.dto.js +1 -6
  491. package/dist/services/octoprint/dto/printer/temps.dto.js +1 -6
  492. package/dist/services/octoprint/dto/rest/error.dto.js +1 -6
  493. package/dist/services/octoprint/dto/server/server.dto.js +1 -6
  494. package/dist/services/octoprint/dto/server/version.dto.js +1 -6
  495. package/dist/services/octoprint/dto/settings/serial-settings.dto.js +1 -6
  496. package/dist/services/octoprint/dto/settings/settings-parts.type.js +1 -6
  497. package/dist/services/octoprint/dto/settings/settings.dto.js +1 -6
  498. package/dist/services/octoprint/dto/settings/virtual-printer-settings.dto.js +1 -6
  499. package/dist/services/octoprint/dto/system/system-info.dto.js +32 -39
  500. package/dist/services/octoprint/dto/system/system-info.dto.js.map +1 -1
  501. package/dist/services/octoprint/dto/websocket/connection-message.dto.js +1 -6
  502. package/dist/services/octoprint/dto/websocket/current-message.dto.js +1 -6
  503. package/dist/services/octoprint/dto/websocket/event-message.dto.js +1 -6
  504. package/dist/services/octoprint/dto/websocket/event.type.js +42 -49
  505. package/dist/services/octoprint/dto/websocket/event.type.js.map +1 -1
  506. package/dist/services/octoprint/dto/websocket/history-message.dto.js +1 -6
  507. package/dist/services/octoprint/dto/websocket/plugin-message.dto.js +1 -6
  508. package/dist/services/octoprint/dto/websocket/timelapse-message.dto.js +1 -6
  509. package/dist/services/octoprint/octoprint-api.routes.js +77 -94
  510. package/dist/services/octoprint/octoprint-api.routes.js.map +1 -1
  511. package/dist/services/octoprint/octoprint-websocket.adapter.js +265 -315
  512. package/dist/services/octoprint/octoprint-websocket.adapter.js.map +1 -1
  513. package/dist/services/octoprint/octoprint.client.js +220 -261
  514. package/dist/services/octoprint/octoprint.client.js.map +1 -1
  515. package/dist/services/octoprint/utils/api.utils.js +15 -32
  516. package/dist/services/octoprint/utils/api.utils.js.map +1 -1
  517. package/dist/services/octoprint/utils/file.utils.js +44 -67
  518. package/dist/services/octoprint/utils/file.utils.js.map +1 -1
  519. package/dist/services/octoprint/utils/octoprint-http-client.builder.js +16 -29
  520. package/dist/services/octoprint/utils/octoprint-http-client.builder.js.map +1 -1
  521. package/dist/services/octoprint.api.js +113 -128
  522. package/dist/services/octoprint.api.js.map +1 -1
  523. package/dist/services/orm/api-key.service.js +90 -0
  524. package/dist/services/orm/api-key.service.js.map +1 -0
  525. package/dist/services/orm/base.interface.js +1 -6
  526. package/dist/services/orm/base.service.js +57 -73
  527. package/dist/services/orm/base.service.js.map +1 -1
  528. package/dist/services/orm/camera-stream.service.js +21 -27
  529. package/dist/services/orm/camera-stream.service.js.map +1 -1
  530. package/dist/services/orm/floor-position.service.js +42 -49
  531. package/dist/services/orm/floor-position.service.js.map +1 -1
  532. package/dist/services/orm/floor.service.js +110 -138
  533. package/dist/services/orm/floor.service.js.map +1 -1
  534. package/dist/services/orm/permission.service.js +16 -23
  535. package/dist/services/orm/permission.service.js.map +1 -1
  536. package/dist/services/orm/print-job.service.js +443 -545
  537. package/dist/services/orm/print-job.service.js.map +1 -1
  538. package/dist/services/orm/printer-maintenance-log.service.js +102 -149
  539. package/dist/services/orm/printer-maintenance-log.service.js.map +1 -1
  540. package/dist/services/orm/printer-tag.service.js +93 -118
  541. package/dist/services/orm/printer-tag.service.js.map +1 -1
  542. package/dist/services/orm/printer.service.js +110 -158
  543. package/dist/services/orm/printer.service.js.map +1 -1
  544. package/dist/services/orm/refresh-token.service.js +69 -99
  545. package/dist/services/orm/refresh-token.service.js.map +1 -1
  546. package/dist/services/orm/role.service.js +99 -116
  547. package/dist/services/orm/role.service.js.map +1 -1
  548. package/dist/services/orm/settings.service.js +84 -94
  549. package/dist/services/orm/settings.service.js.map +1 -1
  550. package/dist/services/orm/user-role.service.js +39 -53
  551. package/dist/services/orm/user-role.service.js.map +1 -1
  552. package/dist/services/orm/user.service.js +142 -189
  553. package/dist/services/orm/user.service.js.map +1 -1
  554. package/dist/services/print-file-downloader.service.js +153 -167
  555. package/dist/services/print-file-downloader.service.js.map +1 -1
  556. package/dist/services/print-queue.service.js +240 -326
  557. package/dist/services/print-queue.service.js.map +1 -1
  558. package/dist/services/printer-api.factory.js +26 -43
  559. package/dist/services/printer-api.factory.js.map +1 -1
  560. package/dist/services/printer-api.interface.js +23 -53
  561. package/dist/services/printer-api.interface.js.map +1 -1
  562. package/dist/services/prusa-link/constants/prusalink-event.dto.js +9 -16
  563. package/dist/services/prusa-link/constants/prusalink-event.dto.js.map +1 -1
  564. package/dist/services/prusa-link/constants/prusalink.constants.js +4 -11
  565. package/dist/services/prusa-link/constants/prusalink.constants.js.map +1 -1
  566. package/dist/services/prusa-link/dto/file-response.dto.js +1 -6
  567. package/dist/services/prusa-link/dto/file.dto.js +1 -6
  568. package/dist/services/prusa-link/dto/job-state.dto.js +1 -6
  569. package/dist/services/prusa-link/dto/printer-state.dto.js +1 -6
  570. package/dist/services/prusa-link/dto/status.dto.js +1 -6
  571. package/dist/services/prusa-link/dto/version.dto.js +1 -6
  572. package/dist/services/prusa-link/prusa-link-http-polling.adapter.js +141 -157
  573. package/dist/services/prusa-link/prusa-link-http-polling.adapter.js.map +1 -1
  574. package/dist/services/prusa-link/prusa-link.api.js +206 -240
  575. package/dist/services/prusa-link/prusa-link.api.js.map +1 -1
  576. package/dist/services/prusa-link/utils/digest-auth.params.js +1 -6
  577. package/dist/services/prusa-link/utils/digest-auth.util.js +17 -24
  578. package/dist/services/prusa-link/utils/digest-auth.util.js.map +1 -1
  579. package/dist/services/prusa-link/utils/prusa-link-http-client.builder.js +92 -129
  580. package/dist/services/prusa-link/utils/prusa-link-http-client.builder.js.map +1 -1
  581. package/dist/services/socket.factory.js +21 -36
  582. package/dist/services/socket.factory.js.map +1 -1
  583. package/dist/services/task-manager.service.js +190 -174
  584. package/dist/services/task-manager.service.js.map +1 -1
  585. package/dist/services/typeorm/typeorm.service.js +31 -46
  586. package/dist/services/typeorm/typeorm.service.js.map +1 -1
  587. package/dist/services/validators/floor-service.validation.js +26 -63
  588. package/dist/services/validators/floor-service.validation.js.map +1 -1
  589. package/dist/services/validators/print-job.validation.js +11 -26
  590. package/dist/services/validators/print-job.validation.js.map +1 -1
  591. package/dist/services/validators/printer-maintenance-log.validation.js +17 -37
  592. package/dist/services/validators/printer-maintenance-log.validation.js.map +1 -1
  593. package/dist/services/validators/printer-service.validation.js +60 -125
  594. package/dist/services/validators/printer-service.validation.js.map +1 -1
  595. package/dist/services/validators/settings-service.validation.js +46 -106
  596. package/dist/services/validators/settings-service.validation.js.map +1 -1
  597. package/dist/services/validators/user-service.validation.js +19 -36
  598. package/dist/services/validators/user-service.validation.js.map +1 -1
  599. package/dist/services/validators/yaml-service.validation.js +96 -132
  600. package/dist/services/validators/yaml-service.validation.js.map +1 -1
  601. package/dist/services/websocket-adapter.interface.js +1 -6
  602. package/dist/shared/default-http-client.builder.js +74 -92
  603. package/dist/shared/default-http-client.builder.js.map +1 -1
  604. package/dist/shared/dtos/api-state.type.js +8 -15
  605. package/dist/shared/dtos/api-state.type.js.map +1 -1
  606. package/dist/shared/dtos/socket-login.dto.js +1 -6
  607. package/dist/shared/dtos/socket-state.type.js +11 -18
  608. package/dist/shared/dtos/socket-state.type.js.map +1 -1
  609. package/dist/shared/load-controllers.js +41 -19
  610. package/dist/shared/load-controllers.js.map +1 -1
  611. package/dist/shared/runtime-settings.migration.js +43 -50
  612. package/dist/shared/runtime-settings.migration.js.map +1 -1
  613. package/dist/shared/websocket-rpc-extended.adapter.js +74 -75
  614. package/dist/shared/websocket-rpc-extended.adapter.js.map +1 -1
  615. package/dist/shared/websocket.adapter.js +78 -63
  616. package/dist/shared/websocket.adapter.js.map +1 -1
  617. package/dist/state/file-upload-tracker.cache.js +63 -75
  618. package/dist/state/file-upload-tracker.cache.js.map +1 -1
  619. package/dist/state/floor.store.js +77 -89
  620. package/dist/state/floor.store.js.map +1 -1
  621. package/dist/state/printer-events.cache.js +237 -295
  622. package/dist/state/printer-events.cache.js.map +1 -1
  623. package/dist/state/printer-socket.store.js +156 -174
  624. package/dist/state/printer-socket.store.js.map +1 -1
  625. package/dist/state/printer-thumbnail.cache.js +129 -130
  626. package/dist/state/printer-thumbnail.cache.js.map +1 -1
  627. package/dist/state/printer.cache.js +87 -102
  628. package/dist/state/printer.cache.js.map +1 -1
  629. package/dist/state/settings.store.js +211 -234
  630. package/dist/state/settings.store.js.map +1 -1
  631. package/dist/state/socket-io.gateway.js +58 -87
  632. package/dist/state/socket-io.gateway.js.map +1 -1
  633. package/dist/state/test-printer-socket.store.js +116 -137
  634. package/dist/state/test-printer-socket.store.js.map +1 -1
  635. package/dist/state/validation/create-test-printer.validation.js +14 -21
  636. package/dist/state/validation/create-test-printer.validation.js.map +1 -1
  637. package/dist/task.presets.js +30 -37
  638. package/dist/task.presets.js.map +1 -1
  639. package/dist/tasks/boot.task.js +100 -128
  640. package/dist/tasks/boot.task.js.map +1 -1
  641. package/dist/tasks/client-bundle.task.js +20 -28
  642. package/dist/tasks/client-bundle.task.js.map +1 -1
  643. package/dist/tasks/print-job-analysis.task.js +88 -113
  644. package/dist/tasks/print-job-analysis.task.js.map +1 -1
  645. package/dist/tasks/printer-websocket-restore.task.js +41 -54
  646. package/dist/tasks/printer-websocket-restore.task.js.map +1 -1
  647. package/dist/tasks/printer-websocket.task.js +11 -19
  648. package/dist/tasks/printer-websocket.task.js.map +1 -1
  649. package/dist/tasks/socketio.task.js +35 -53
  650. package/dist/tasks/socketio.task.js.map +1 -1
  651. package/dist/tasks/software-update.task.js +12 -20
  652. package/dist/tasks/software-update.task.js.map +1 -1
  653. package/dist/tasks.js +27 -41
  654. package/dist/tasks.js.map +1 -1
  655. package/dist/types/express/index.d.js +1 -6
  656. package/dist/types/virtual-modules.d.js +1 -0
  657. package/dist/utils/array.util.js +9 -24
  658. package/dist/utils/array.util.js.map +1 -1
  659. package/dist/utils/bgcode/bgcode-thumbnail.parser.js +26 -44
  660. package/dist/utils/bgcode/bgcode-thumbnail.parser.js.map +1 -1
  661. package/dist/utils/bgcode/bgcode.constants.js +9 -45
  662. package/dist/utils/bgcode/bgcode.constants.js.map +1 -1
  663. package/dist/utils/bgcode/bgcode.types.js +57 -106
  664. package/dist/utils/bgcode/bgcode.types.js.map +1 -1
  665. package/dist/utils/bgcode/bgcode.utils.js +167 -256
  666. package/dist/utils/bgcode/bgcode.utils.js.map +1 -1
  667. package/dist/utils/bgcode/heatshrink-decoder.js +130 -170
  668. package/dist/utils/bgcode/heatshrink-decoder.js.map +1 -1
  669. package/dist/utils/bgcode/png-encoder.js +53 -66
  670. package/dist/utils/bgcode/png-encoder.js.map +1 -1
  671. package/dist/utils/bgcode/qoi-decoder.js +116 -135
  672. package/dist/utils/bgcode/qoi-decoder.js.map +1 -1
  673. package/dist/utils/cache/key-diff.cache.js +56 -85
  674. package/dist/utils/cache/key-diff.cache.js.map +1 -1
  675. package/dist/utils/correlation-token.util.js +4 -11
  676. package/dist/utils/correlation-token.util.js.map +1 -1
  677. package/dist/utils/crypto.utils.js +7 -23
  678. package/dist/utils/crypto.utils.js.map +1 -1
  679. package/dist/utils/env.utils.js +14 -49
  680. package/dist/utils/env.utils.js.map +1 -1
  681. package/dist/utils/error.utils.js +4 -11
  682. package/dist/utils/error.utils.js.map +1 -1
  683. package/dist/utils/fs.utils.js +26 -49
  684. package/dist/utils/fs.utils.js.map +1 -1
  685. package/dist/utils/gcode.utils.js +30 -43
  686. package/dist/utils/gcode.utils.js.map +1 -1
  687. package/dist/utils/image-dimensions.js +39 -54
  688. package/dist/utils/image-dimensions.js.map +1 -1
  689. package/dist/utils/job-stats.util.js +41 -72
  690. package/dist/utils/job-stats.util.js.map +1 -1
  691. package/dist/utils/normalize-url.js +135 -203
  692. package/dist/utils/normalize-url.js.map +1 -1
  693. package/dist/utils/parsers/3mf.parser.js +298 -365
  694. package/dist/utils/parsers/3mf.parser.js.map +1 -1
  695. package/dist/utils/parsers/bgcode.parser.js +149 -202
  696. package/dist/utils/parsers/bgcode.parser.js.map +1 -1
  697. package/dist/utils/parsers/gcode.parser.js +200 -263
  698. package/dist/utils/parsers/gcode.parser.js.map +1 -1
  699. package/dist/utils/parsers/parser.types.js +1 -6
  700. package/dist/utils/pretty-print.utils.js +5 -20
  701. package/dist/utils/pretty-print.utils.js.map +1 -1
  702. package/dist/utils/semver.utils.js +10 -26
  703. package/dist/utils/semver.utils.js.map +1 -1
  704. package/dist/utils/swagger/decorators.js +14 -32
  705. package/dist/utils/swagger/decorators.js.map +1 -1
  706. package/dist/utils/swagger/generator.js +151 -194
  707. package/dist/utils/swagger/generator.js.map +1 -1
  708. package/dist/utils/swagger/swagger.js +40 -51
  709. package/dist/utils/swagger/swagger.js.map +1 -1
  710. package/dist/utils/thumbnail.util.js +11 -20
  711. package/dist/utils/thumbnail.util.js.map +1 -1
  712. package/dist/utils/time.utils.js +4 -12
  713. package/dist/utils/time.utils.js.map +1 -1
  714. package/dist/utils/url.utils.js +9 -27
  715. package/dist/utils/url.utils.js.map +1 -1
  716. package/package.json +80 -91
  717. package/packages/consoles/package.json +44 -0
  718. package/packages/consoles/tsconfig.json +23 -0
  719. package/packages/consoles/vite.config.ts +15 -0
  720. package/tsconfig.json +10 -6
  721. package/vite.config.ts +62 -0
  722. package/.swcrc +0 -33
  723. package/.yarn/releases/yarn-4.12.0.cjs +0 -942
  724. package/biome.json +0 -36
  725. package/dist/consoles/bambu-mqtt-diagnostic.console.js +0 -565
  726. package/dist/consoles/bambu-mqtt-diagnostic.console.js.map +0 -1
  727. package/dist/consoles/download-github-releases.js +0 -50
  728. package/dist/consoles/download-github-releases.js.map +0 -1
  729. package/dist/consoles/gcode-scanner-poc.console.js +0 -52
  730. package/dist/consoles/gcode-scanner-poc.console.js.map +0 -1
  731. package/dist/consoles/launch-http-servers.js +0 -31
  732. package/dist/consoles/launch-http-servers.js.map +0 -1
  733. package/dist/consoles/mock-bambu.server.js +0 -319
  734. package/dist/consoles/mock-bambu.server.js.map +0 -1
  735. package/dist/consoles/mock-camera/default-image.js +0 -13
  736. package/dist/consoles/mock-camera/default-image.js.map +0 -1
  737. package/dist/consoles/mock-camera/mock-camera.server.js +0 -160
  738. package/dist/consoles/mock-camera/mock-camera.server.js.map +0 -1
  739. package/dist/consoles/mock-octoprint.server.js +0 -499
  740. package/dist/consoles/mock-octoprint.server.js.map +0 -1
  741. package/dist/consoles/mock-prusalink.server.js +0 -57
  742. package/dist/consoles/mock-prusalink.server.js.map +0 -1
  743. package/dist/consoles/moonraker-test.console.js +0 -3
  744. package/dist/consoles/moonraker-test.console.js.map +0 -1
  745. package/dist/consoles/utils/api-messages.js +0 -856
  746. package/dist/consoles/utils/api-messages.js.map +0 -1
  747. package/dist/consoles/utils/delayed-memory.storage.js +0 -42
  748. package/dist/consoles/utils/delayed-memory.storage.js.map +0 -1
  749. package/dist/consoles/utils/ws-messages.js +0 -88
  750. package/dist/consoles/utils/ws-messages.js.map +0 -1
  751. package/dist/entities/index.js.map +0 -1
  752. package/dist/services/bambu/mqtt-message.types.js.map +0 -1
  753. package/dist/services/interfaces/auth.service.interface.js.map +0 -1
  754. package/dist/services/interfaces/camera-stream.service.interface.js.map +0 -1
  755. package/dist/services/interfaces/file-upload-tracker.interface.js.map +0 -1
  756. package/dist/services/interfaces/floor.service.interface.js.map +0 -1
  757. package/dist/services/interfaces/jwt.service.interface.js.map +0 -1
  758. package/dist/services/interfaces/permission.service.interface.js.map +0 -1
  759. package/dist/services/interfaces/printer-file.dto.js.map +0 -1
  760. package/dist/services/interfaces/printer-maintenance-log.dto.js.map +0 -1
  761. package/dist/services/interfaces/printer-tag.service.interface.js.map +0 -1
  762. package/dist/services/interfaces/printer.service.interface.js.map +0 -1
  763. package/dist/services/interfaces/refresh-token.service.interface.js.map +0 -1
  764. package/dist/services/interfaces/role-service.interface.js.map +0 -1
  765. package/dist/services/interfaces/settings.service.interface.js.map +0 -1
  766. package/dist/services/interfaces/tag.dto.js.map +0 -1
  767. package/dist/services/interfaces/task.interfaces.js.map +0 -1
  768. package/dist/services/interfaces/user-service.interface.js.map +0 -1
  769. package/dist/services/moonraker/dto/access/access-info.dto.js.map +0 -1
  770. package/dist/services/moonraker/dto/access/access-login-refresh.dto.js.map +0 -1
  771. package/dist/services/moonraker/dto/access/access-login-result.dto.js.map +0 -1
  772. package/dist/services/moonraker/dto/access/access-user-result.dto.js.map +0 -1
  773. package/dist/services/moonraker/dto/access/access-user.dto.js.map +0 -1
  774. package/dist/services/moonraker/dto/database/database-namespace-item.dto.js.map +0 -1
  775. package/dist/services/moonraker/dto/database/database-namespace-list.dto.js.map +0 -1
  776. package/dist/services/moonraker/dto/gcode-help.dto.js.map +0 -1
  777. package/dist/services/moonraker/dto/gcode-store.dto.js.map +0 -1
  778. package/dist/services/moonraker/dto/job-queue/enqueue-job.dto.js.map +0 -1
  779. package/dist/services/moonraker/dto/job-queue/job-queue-status.dto.js.map +0 -1
  780. package/dist/services/moonraker/dto/machine/machine-device-power-device-state.dto.js.map +0 -1
  781. package/dist/services/moonraker/dto/machine/machine-device-power-devices.dto.js.map +0 -1
  782. package/dist/services/moonraker/dto/machine/machine-peripherals-canbus.dto.js.map +0 -1
  783. package/dist/services/moonraker/dto/machine/machine-peripherals-serial.dto.js.map +0 -1
  784. package/dist/services/moonraker/dto/machine/machine-peripherals-usb.dto.js.map +0 -1
  785. package/dist/services/moonraker/dto/machine/machine-peripherals-video.dto.js.map +0 -1
  786. package/dist/services/moonraker/dto/machine/machine-system-info.dto.js.map +0 -1
  787. package/dist/services/moonraker/dto/machine/machine-update-status.dto.js.map +0 -1
  788. package/dist/services/moonraker/dto/machine/machine-wled-strips.dto.js.map +0 -1
  789. package/dist/services/moonraker/dto/notifier-list.dto.js.map +0 -1
  790. package/dist/services/moonraker/dto/objects/bed-mesh.dto.js.map +0 -1
  791. package/dist/services/moonraker/dto/objects/configfile.dto.js.map +0 -1
  792. package/dist/services/moonraker/dto/objects/display-status.dto.js.map +0 -1
  793. package/dist/services/moonraker/dto/objects/extruder.dto.js.map +0 -1
  794. package/dist/services/moonraker/dto/objects/fan.dto.js.map +0 -1
  795. package/dist/services/moonraker/dto/objects/filament-motion-sensor.dto.js.map +0 -1
  796. package/dist/services/moonraker/dto/objects/filament-switch-sensor.dto.js.map +0 -1
  797. package/dist/services/moonraker/dto/objects/gcode-move.dto.js.map +0 -1
  798. package/dist/services/moonraker/dto/objects/gcode.dto.js.map +0 -1
  799. package/dist/services/moonraker/dto/objects/heater-bed.dto.js.map +0 -1
  800. package/dist/services/moonraker/dto/objects/heaters.dto.js.map +0 -1
  801. package/dist/services/moonraker/dto/objects/mcu.dto.js.map +0 -1
  802. package/dist/services/moonraker/dto/objects/motion-report.dto.js.map +0 -1
  803. package/dist/services/moonraker/dto/objects/output-pin.dto.js.map +0 -1
  804. package/dist/services/moonraker/dto/objects/pause-resume.dto.js.map +0 -1
  805. package/dist/services/moonraker/dto/objects/printer-object.dto.js.map +0 -1
  806. package/dist/services/moonraker/dto/objects/printer-object.types.js.map +0 -1
  807. package/dist/services/moonraker/dto/objects/printer-objects-query.dto.js.map +0 -1
  808. package/dist/services/moonraker/dto/objects/stepper-enable.dto.js.map +0 -1
  809. package/dist/services/moonraker/dto/objects/system-stats.dto.js.map +0 -1
  810. package/dist/services/moonraker/dto/objects/temperature-fan.dto.js.map +0 -1
  811. package/dist/services/moonraker/dto/objects/temperature-sensor.dto.js.map +0 -1
  812. package/dist/services/moonraker/dto/objects/toolhead.dto.js.map +0 -1
  813. package/dist/services/moonraker/dto/objects/virtual-sdcard.dto.js.map +0 -1
  814. package/dist/services/moonraker/dto/objects/webhooks.dto.js.map +0 -1
  815. package/dist/services/moonraker/dto/octoprint-compat/api-job.dto.js.map +0 -1
  816. package/dist/services/moonraker/dto/octoprint-compat/api-login.dto.js.map +0 -1
  817. package/dist/services/moonraker/dto/octoprint-compat/api-printer.dto.js.map +0 -1
  818. package/dist/services/moonraker/dto/octoprint-compat/api-profiles.dto.js.map +0 -1
  819. package/dist/services/moonraker/dto/octoprint-compat/api-settings.dto.js.map +0 -1
  820. package/dist/services/moonraker/dto/octoprint-compat/api-version.dto.js.map +0 -1
  821. package/dist/services/moonraker/dto/octoprint-compat/server-version.dto.js.map +0 -1
  822. package/dist/services/moonraker/dto/printer-query-endstops.dto.js.map +0 -1
  823. package/dist/services/moonraker/dto/process-stats.dto.js.map +0 -1
  824. package/dist/services/moonraker/dto/rest/action-result.dto.js.map +0 -1
  825. package/dist/services/moonraker/dto/rest/error.dto.js.map +0 -1
  826. package/dist/services/moonraker/dto/rollover-logs.dto.js.map +0 -1
  827. package/dist/services/moonraker/dto/rpc/json-rpc-error.dto.js.map +0 -1
  828. package/dist/services/moonraker/dto/rpc/json-rpc-request.dto.js.map +0 -1
  829. package/dist/services/moonraker/dto/rpc/json-rpc-response.dto.js.map +0 -1
  830. package/dist/services/moonraker/dto/server/server-config.dto.js.map +0 -1
  831. package/dist/services/moonraker/dto/server-announcements/announcement-action.dto.js.map +0 -1
  832. package/dist/services/moonraker/dto/server-announcements/announcement-entry-id.dto.js.map +0 -1
  833. package/dist/services/moonraker/dto/server-announcements/announcement-feeds.dto.js.map +0 -1
  834. package/dist/services/moonraker/dto/server-announcements/announcement-list.dto.js.map +0 -1
  835. package/dist/services/moonraker/dto/server-files/server-file-directory-action.dto.js.map +0 -1
  836. package/dist/services/moonraker/dto/server-files/server-file-directory-info.dto.js.map +0 -1
  837. package/dist/services/moonraker/dto/server-files/server-file-metadata.dto.js.map +0 -1
  838. package/dist/services/moonraker/dto/server-files/server-file-root.dto.js.map +0 -1
  839. package/dist/services/moonraker/dto/server-files/server-file-thumbnail.dto.js.map +0 -1
  840. package/dist/services/moonraker/dto/server-files/server-file-zip-action.dto.js.map +0 -1
  841. package/dist/services/moonraker/dto/server-files/server-file.dto.js.map +0 -1
  842. package/dist/services/moonraker/dto/server-history/history-job.dto.js.map +0 -1
  843. package/dist/services/moonraker/dto/server-history/history-last-totals.dto.js.map +0 -1
  844. package/dist/services/moonraker/dto/server-history/history-list.dto.js.map +0 -1
  845. package/dist/services/moonraker/dto/server-history/history-totals.dto.js.map +0 -1
  846. package/dist/services/moonraker/dto/server-sensors/sensor-info.dto.js.map +0 -1
  847. package/dist/services/moonraker/dto/server-sensors/sensor-list.dto.js.map +0 -1
  848. package/dist/services/moonraker/dto/server-sensors/sensor-measurements.dto.js.map +0 -1
  849. package/dist/services/moonraker/dto/server-webcams/webcam-item.dto.js.map +0 -1
  850. package/dist/services/moonraker/dto/server-webcams/webcam-list.dto.js.map +0 -1
  851. package/dist/services/moonraker/dto/server-webcams/webcam-test.dto.js.map +0 -1
  852. package/dist/services/moonraker/dto/spoolman/spoolman-active-spool.dto.js.map +0 -1
  853. package/dist/services/moonraker/dto/spoolman/spoolman-proxy-request.dto.js.map +0 -1
  854. package/dist/services/moonraker/dto/spoolman/spoolman-response.dto.js.map +0 -1
  855. package/dist/services/moonraker/dto/spoolman/spoolman-status.dto.js.map +0 -1
  856. package/dist/services/moonraker/dto/sudo-info.dto.js.map +0 -1
  857. package/dist/services/moonraker/dto/sudo-response.dto.js.map +0 -1
  858. package/dist/services/moonraker/dto/temperature-store.dto.js.map +0 -1
  859. package/dist/services/moonraker/dto/websocket/connection-identify-response.dto.js.map +0 -1
  860. package/dist/services/moonraker/dto/websocket/connection-identify.dto.js.map +0 -1
  861. package/dist/services/moonraker/dto/websocket/json-rpc-event.dto.js.map +0 -1
  862. package/dist/services/moonraker/dto/websocket/message.types.js.map +0 -1
  863. package/dist/services/moonraker/dto/websocket/notify-active-spool-set.params.js.map +0 -1
  864. package/dist/services/moonraker/dto/websocket/notify-agent-event.params.js.map +0 -1
  865. package/dist/services/moonraker/dto/websocket/notify-announcement-update.params.js.map +0 -1
  866. package/dist/services/moonraker/dto/websocket/notify-announcement.params.js.map +0 -1
  867. package/dist/services/moonraker/dto/websocket/notify-button-event.params.js.map +0 -1
  868. package/dist/services/moonraker/dto/websocket/notify-history-changed.params.js.map +0 -1
  869. package/dist/services/moonraker/dto/websocket/notify-job-queue-changed.params.js.map +0 -1
  870. package/dist/services/moonraker/dto/websocket/notify-proc-stat-update.params.js.map +0 -1
  871. package/dist/services/moonraker/dto/websocket/notify-sensor-update.params.js.map +0 -1
  872. package/dist/services/moonraker/dto/websocket/notify-service-state-changed.params.js.map +0 -1
  873. package/dist/services/moonraker/dto/websocket/notify-spoolman-status-changed.js.map +0 -1
  874. package/dist/services/moonraker/dto/websocket/notify-sudo-alert.params.js.map +0 -1
  875. package/dist/services/moonraker/dto/websocket/notify-user-change.params.js.map +0 -1
  876. package/dist/services/octoprint/dto/access/user-list.dto.js.map +0 -1
  877. package/dist/services/octoprint/dto/access/user.dto.js.map +0 -1
  878. package/dist/services/octoprint/dto/auth/current-user.dto.js.map +0 -1
  879. package/dist/services/octoprint/dto/auth/login.dto.js.map +0 -1
  880. package/dist/services/octoprint/dto/connection/connection.dto.js.map +0 -1
  881. package/dist/services/octoprint/dto/events/client-authed.dto.js.map +0 -1
  882. package/dist/services/octoprint/dto/events/client-closed.dto.js.map +0 -1
  883. package/dist/services/octoprint/dto/events/client-opened.dto.js.map +0 -1
  884. package/dist/services/octoprint/dto/events/dwelling.dto.js.map +0 -1
  885. package/dist/services/octoprint/dto/events/file-added.dto.js.map +0 -1
  886. package/dist/services/octoprint/dto/events/file-deselected.dto.js.map +0 -1
  887. package/dist/services/octoprint/dto/events/file-removed.dto.js.map +0 -1
  888. package/dist/services/octoprint/dto/events/folder-added.dto.js.map +0 -1
  889. package/dist/services/octoprint/dto/events/home.dto.js.map +0 -1
  890. package/dist/services/octoprint/dto/events/metadata-analysis-finished.dto.js.map +0 -1
  891. package/dist/services/octoprint/dto/events/metadata-analysis-started.dto.js.map +0 -1
  892. package/dist/services/octoprint/dto/events/metadata-statistics-updated.dto.js.map +0 -1
  893. package/dist/services/octoprint/dto/events/position-update.dto.js.map +0 -1
  894. package/dist/services/octoprint/dto/events/print-cancelled.dto.js.map +0 -1
  895. package/dist/services/octoprint/dto/events/print-cancelling.dto.js.map +0 -1
  896. package/dist/services/octoprint/dto/events/print-done.dto.js.map +0 -1
  897. package/dist/services/octoprint/dto/events/print-failed.dto.js.map +0 -1
  898. package/dist/services/octoprint/dto/events/print-paused.dto.js.map +0 -1
  899. package/dist/services/octoprint/dto/events/print-resumed.dto.js.map +0 -1
  900. package/dist/services/octoprint/dto/events/print-started.dto.js.map +0 -1
  901. package/dist/services/octoprint/dto/events/printer-state-changed.dto.js.map +0 -1
  902. package/dist/services/octoprint/dto/events/transfer-done.dto.js.map +0 -1
  903. package/dist/services/octoprint/dto/events/transfer-started.dto.js.map +0 -1
  904. package/dist/services/octoprint/dto/events/updated-files.dto.js.map +0 -1
  905. package/dist/services/octoprint/dto/events/upload.dto.js.map +0 -1
  906. package/dist/services/octoprint/dto/events/user-logged-in.dto.js.map +0 -1
  907. package/dist/services/octoprint/dto/events/z-change.dto.js.map +0 -1
  908. package/dist/services/octoprint/dto/files/gcode-analysis.dto.js.map +0 -1
  909. package/dist/services/octoprint/dto/files/octoprint-file.dto.js.map +0 -1
  910. package/dist/services/octoprint/dto/files/octoprint-files-response.dto.js.map +0 -1
  911. package/dist/services/octoprint/dto/job/job.dto.js.map +0 -1
  912. package/dist/services/octoprint/dto/printer/busy-file.dto.js.map +0 -1
  913. package/dist/services/octoprint/dto/printer/current-printer-state.dto.js.map +0 -1
  914. package/dist/services/octoprint/dto/printer/flags.dto.js.map +0 -1
  915. package/dist/services/octoprint/dto/printer/markings.dto.js.map +0 -1
  916. package/dist/services/octoprint/dto/printer/progress.dto.js.map +0 -1
  917. package/dist/services/octoprint/dto/printer/resends.dto.js.map +0 -1
  918. package/dist/services/octoprint/dto/printer/state.dto.js.map +0 -1
  919. package/dist/services/octoprint/dto/printer/temps.dto.js.map +0 -1
  920. package/dist/services/octoprint/dto/rest/error.dto.js.map +0 -1
  921. package/dist/services/octoprint/dto/server/server.dto.js.map +0 -1
  922. package/dist/services/octoprint/dto/server/version.dto.js.map +0 -1
  923. package/dist/services/octoprint/dto/settings/serial-settings.dto.js.map +0 -1
  924. package/dist/services/octoprint/dto/settings/settings-parts.type.js.map +0 -1
  925. package/dist/services/octoprint/dto/settings/settings.dto.js.map +0 -1
  926. package/dist/services/octoprint/dto/settings/virtual-printer-settings.dto.js.map +0 -1
  927. package/dist/services/octoprint/dto/websocket/connection-message.dto.js.map +0 -1
  928. package/dist/services/octoprint/dto/websocket/current-message.dto.js.map +0 -1
  929. package/dist/services/octoprint/dto/websocket/event-message.dto.js.map +0 -1
  930. package/dist/services/octoprint/dto/websocket/history-message.dto.js.map +0 -1
  931. package/dist/services/octoprint/dto/websocket/plugin-message.dto.js.map +0 -1
  932. package/dist/services/octoprint/dto/websocket/timelapse-message.dto.js.map +0 -1
  933. package/dist/services/orm/base.interface.js.map +0 -1
  934. package/dist/services/prusa-link/dto/file-response.dto.js.map +0 -1
  935. package/dist/services/prusa-link/dto/file.dto.js.map +0 -1
  936. package/dist/services/prusa-link/dto/job-state.dto.js.map +0 -1
  937. package/dist/services/prusa-link/dto/printer-state.dto.js.map +0 -1
  938. package/dist/services/prusa-link/dto/status.dto.js.map +0 -1
  939. package/dist/services/prusa-link/dto/version.dto.js.map +0 -1
  940. package/dist/services/prusa-link/utils/digest-auth.params.js.map +0 -1
  941. package/dist/services/websocket-adapter.interface.js.map +0 -1
  942. package/dist/shared/dtos/socket-login.dto.js.map +0 -1
  943. package/dist/types/express/index.d.js.map +0 -1
  944. 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":"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"}
@@ -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