@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 +1 @@
1
- {"version":3,"sources":["../../../src/handlers/logging/loki-logging.transport.ts"],"names":["createLokiLoggingTransport","lokiValidationSchema","z","object","lokiEnabled","boolean","lokiAddress","string","url","lokiTimeoutSeconds","coerce","number","positive","default","lokiInterval","options","lokiConfigValidationResult","safeParse","process","env","AppConstants","ENABLE_LOKI_LOGGING","LOKI_TIMEOUT_SECONDS","LOKI_ADDRESS","LOKI_INTERVAL","success","data","LokiTransport","level","logLevel","host","interval","timeout","handleExceptions","onConnectionError","error","console","debug","labels","app","json","useWinstonMetaAsLabels","format","winston"],"mappings":";;;;+BAiBgBA;;;eAAAA;;;oEAjBU;gEACN;oEACA;iCACS;qBACX;;;;;;AAMlB,MAAMC,uBAAuBC,MAAC,CAACC,MAAM,CAAC;IACpCC,aAAaF,MAAC,CAACG,OAAO;IACtBC,aAAaJ,MAAC,CAACK,MAAM,GAAGC,GAAG;IAC3BC,oBAAoBP,MAAC,CAACQ,MAAM,CAACC,MAAM,GAAGC,QAAQ,GAAGC,OAAO,CAAC;IACzDC,cAAcZ,MAAC,CAACQ,MAAM,CAACC,MAAM,GAAGC,QAAQ,GAAGC,OAAO,CAAC;AACrD;AAEO,SAASb,2BAA2Be,OAA0B;IACnE,MAAMC,6BAA6Bf,qBAAqBgB,SAAS,CAAC;QAChEb,aAAac,oBAAO,CAACC,GAAG,CAACC,6BAAY,CAACC,mBAAmB,CAAC,KAAK;QAC/DZ,oBAAoBS,oBAAO,CAACC,GAAG,CAACC,6BAAY,CAACE,oBAAoB,CAAC;QAClEhB,aAAaY,oBAAO,CAACC,GAAG,CAACC,6BAAY,CAACG,YAAY,CAAC;QACnDT,cAAcI,oBAAO,CAACC,GAAG,CAACC,6BAAY,CAACI,aAAa,CAAC;IACvD;IAEA,IAAI,CAACR,2BAA2BS,OAAO,IAAI,CAACT,2BAA2BU,IAAI,CAACtB,WAAW,EAAE;QACvF;IACF;IAEA,OAAO,IAAIuB,oBAAa,CAAC;QACvBC,OAAOb,QAAQc,QAAQ,IAAI;QAC3BC,MAAMd,2BAA2BU,IAAI,CAACpB,WAAW;QACjDyB,UAAUf,2BAA2BU,IAAI,CAACZ,YAAY;QACtDkB,SAAShB,2BAA2BU,IAAI,CAACjB,kBAAkB;QAC3DwB,kBAAkB;QAClBC,mBAAkBC,KAAc;YAC9BC,QAAQC,KAAK,CAAC,CAAC,4CAA4C,EAAEF,OAAO;QACtE;QAEAG,QAAQ;YACNC,KAAK;QACP;QAEAC,MAAM;QAENC,wBAAwB;QAExBC,QAAQC,gBAAO,CAACD,MAAM,CAACF,IAAI;IAC7B;AACF"}
1
+ {"version":3,"file":"loki-logging.transport.js","names":[],"sources":["../../../src/handlers/logging/loki-logging.transport.ts"],"sourcesContent":["import LokiTransport from \"winston-loki\";\nimport winston from \"winston\";\nimport process from \"node:process\";\nimport { AppConstants } from \"@/server.constants\";\nimport { z } from \"zod\";\n\nexport interface LokiLoggerOptions {\n logLevel: string;\n}\n\nconst lokiValidationSchema = z.object({\n lokiEnabled: z.boolean(),\n lokiAddress: z.string().url(),\n lokiTimeoutSeconds: z.coerce.number().positive().default(30),\n lokiInterval: z.coerce.number().positive().default(15),\n});\n\nexport function createLokiLoggingTransport(options: LokiLoggerOptions) {\n const lokiConfigValidationResult = lokiValidationSchema.safeParse({\n lokiEnabled: process.env[AppConstants.ENABLE_LOKI_LOGGING] === \"true\",\n lokiTimeoutSeconds: process.env[AppConstants.LOKI_TIMEOUT_SECONDS],\n lokiAddress: process.env[AppConstants.LOKI_ADDRESS],\n lokiInterval: process.env[AppConstants.LOKI_INTERVAL],\n });\n\n if (!lokiConfigValidationResult.success || !lokiConfigValidationResult.data.lokiEnabled) {\n return;\n }\n\n return new LokiTransport({\n level: options.logLevel ?? \"info\",\n host: lokiConfigValidationResult.data.lokiAddress,\n interval: lokiConfigValidationResult.data.lokiInterval,\n timeout: lokiConfigValidationResult.data.lokiTimeoutSeconds,\n handleExceptions: true,\n onConnectionError(error: unknown) {\n console.debug(`Loki logger enabled, but connection failed. ${error}`);\n },\n // The labels,json, useWinstonMetaAsLabels, format settings plays well with Loki + Grafana\n labels: {\n app: \"fdm-monster-server\",\n },\n // When set to false, uses protobuf\n json: false,\n // When set to false, the labels column cardinality is kept low (better for performance)\n useWinstonMetaAsLabels: false,\n // Other formats like simple cause string + json, and are thus harder to work with\n format: winston.format.json(),\n });\n}\n"],"mappings":";;;;;;AAUA,MAAM,uBAAuB,EAAE,OAAO;CACpC,aAAa,EAAE,SAAS;CACxB,aAAa,EAAE,QAAQ,CAAC,KAAK;CAC7B,oBAAoB,EAAE,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,GAAG;CAC5D,cAAc,EAAE,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,GAAG;CACvD,CAAC;AAEF,SAAgB,2BAA2B,SAA4B;CACrE,MAAM,6BAA6B,qBAAqB,UAAU;EAChE,aAAa,QAAQ,IAAI,aAAa,yBAAyB;EAC/D,oBAAoB,QAAQ,IAAI,aAAa;EAC7C,aAAa,QAAQ,IAAI,aAAa;EACtC,cAAc,QAAQ,IAAI,aAAa;EACxC,CAAC;AAEF,KAAI,CAAC,2BAA2B,WAAW,CAAC,2BAA2B,KAAK,YAC1E;AAGF,QAAO,IAAI,cAAc;EACvB,OAAO,QAAQ,YAAY;EAC3B,MAAM,2BAA2B,KAAK;EACtC,UAAU,2BAA2B,KAAK;EAC1C,SAAS,2BAA2B,KAAK;EACzC,kBAAkB;EAClB,kBAAkB,OAAgB;AAChC,WAAQ,MAAM,+CAA+C,QAAQ;;EAGvE,QAAQ,EACN,KAAK,sBACN;EAED,MAAM;EAEN,wBAAwB;EAExB,QAAQ,QAAQ,OAAO,MAAM;EAC9B,CAAC"}
@@ -1,134 +1,93 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
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 createStaticLogger () {
13
- return createStaticLogger;
14
- },
15
- get getStaticLogger () {
16
- return getStaticLogger;
17
- },
18
- get logContextClassProperty () {
19
- return logContextClassProperty;
20
- }
21
- });
22
- const _winston = /*#__PURE__*/ _interop_require_default(require("winston"));
23
- const _nodeprocess = /*#__PURE__*/ _interop_require_default(require("node:process"));
24
- const _serverconstants = require("../../server.constants");
25
- const _lokiloggingtransport = require("./loki-logging.transport");
26
- const _fileloggingtransport = require("./file-logging.transport");
27
- const _envutils = require("../../utils/env.utils");
28
- function _interop_require_default(obj) {
29
- return obj && obj.__esModule ? obj : {
30
- default: obj
31
- };
32
- }
1
+ import { AppConstants } from "../../server.constants.js";
2
+ import { isDevelopmentEnvironment } from "../../utils/env.utils.js";
3
+ import { createLokiLoggingTransport } from "./loki-logging.transport.js";
4
+ import { createFileLoggingTransport } from "./file-logging.transport.js";
5
+ import winston from "winston";
6
+ import process from "node:process";
7
+ //#region src/handlers/logging/static.logger.ts
33
8
  let staticLogger = null;
34
9
  const levelMap = {
35
- error: "ERR",
36
- warn: "WRN",
37
- info: "INF",
38
- debug: "DBG",
39
- http: "HTT",
40
- verbose: "VRB",
41
- silly: "SLY"
10
+ error: "ERR",
11
+ warn: "WRN",
12
+ info: "INF",
13
+ debug: "DBG",
14
+ http: "HTT",
15
+ verbose: "VRB",
16
+ silly: "SLY"
42
17
  };
43
18
  const logContextClassProperty = "class";
44
19
  function getStaticLogger() {
45
- if (!staticLogger) {
46
- throw new Error("Logger not yet initialized.");
47
- }
48
- return staticLogger;
20
+ if (!staticLogger) throw new Error("Logger not yet initialized.");
21
+ return staticLogger;
49
22
  }
50
23
  function createStaticLogger(config) {
51
- if (staticLogger) {
52
- return;
53
- }
54
- const isProd = _nodeprocess.default.env[_serverconstants.AppConstants.NODE_ENV_KEY] === _serverconstants.AppConstants.defaultProductionEnv;
55
- const isTest = _nodeprocess.default.env[_serverconstants.AppConstants.NODE_ENV_KEY] === _serverconstants.AppConstants.defaultTestEnv;
56
- const effectiveLogLevel = isProd || isTest ? "warn" : "debug";
57
- const lokiTransport = (0, _lokiloggingtransport.createLokiLoggingTransport)({
58
- logLevel: effectiveLogLevel
59
- });
60
- const extraWinstonTransports = [];
61
- if (lokiTransport) {
62
- extraWinstonTransports.push(lokiTransport);
63
- }
64
- const fileLoggerTransport = (0, _fileloggingtransport.createFileLoggingTransport)({
65
- enabled: config.enableFileLogs,
66
- isTest
67
- });
68
- if (fileLoggerTransport) {
69
- extraWinstonTransports.push(fileLoggerTransport);
70
- }
71
- staticLogger = _winston.default.createLogger({
72
- transports: [
73
- ...extraWinstonTransports,
74
- new _winston.default.transports.Console({
75
- level: effectiveLogLevel,
76
- format: _winston.default.format.combine(...(0, _envutils.isDevelopmentEnvironment)() && _nodeprocess.default.env[_serverconstants.AppConstants.ENABLE_COLORED_LOGS_KEY] == "true" ? [
77
- _winston.default.format((info)=>{
78
- info.rawLevel = info.level;
79
- return info;
80
- })(),
81
- _winston.default.format.colorize({
82
- colors: {
83
- error: "red",
84
- warn: "yellow",
85
- info: "white",
86
- debug: "gray",
87
- http: "magenta",
88
- verbose: "cyan",
89
- silly: "gray"
90
- },
91
- level: true,
92
- message: true,
93
- all: false
94
- }),
95
- _winston.default.format.printf((info)=>{
96
- const now = new Date();
97
- const timestamp = `${now.toISOString().split("T")[0]} ${now.toTimeString().split(" ")[0]}.${now.getMilliseconds().toString().padStart(3, "0")}`;
98
- const levelAbbr = levelMap[info.rawLevel] ?? info.rawLevel.substring(0, 3).toUpperCase();
99
- const gray = "\x1b[90m";
100
- const reset = info.message.substring(0, 5) ?? "\x1b[0m";
101
- const numberRegex = /\b\d+\b/g;
102
- const coloredMessage = info.message.replace(numberRegex, (match)=>`\x1b[35m${match}${reset}`);
103
- const serviceName = info[logContextClassProperty] ?? "unknown";
104
- let logEntry = `${gray}[${timestamp} ${reset}${levelAbbr}${reset}${gray}]${reset} ${gray}[${reset}${serviceName}${gray}]${reset} ${coloredMessage}`;
105
- if (info.meta) {
106
- const metaString = JSON.stringify(info.meta);
107
- const coloredMeta = metaString.replace(numberRegex, (match)=>`\x1b[35m${match}${reset}`);
108
- logEntry += ` ${coloredMeta}`;
109
- }
110
- return logEntry;
111
- })
112
- ] : [])
113
- })
114
- ],
115
- format: _winston.default.format.printf((info)=>{
116
- const now = new Date();
117
- const timestamp = `${now.toISOString().split("T")[0]} ${now.toTimeString().split(" ")[0]}.${now.getMilliseconds().toString().padStart(3, "0")}`;
118
- const levelAbbr = levelMap[info.level] || `[${info.level.substring(0, 3).toUpperCase()}]`;
119
- const serviceName = info[logContextClassProperty] ?? "unknown";
120
- let message = `[${timestamp} ${levelAbbr}] [${serviceName}] ${info.message}`;
121
- if (info.meta) {
122
- const pascalCaseMeta = Object.entries(info.meta).reduce((acc, [key, value])=>{
123
- const pascalKey = key.charAt(0).toUpperCase() + key.slice(1);
124
- acc[pascalKey] = value;
125
- return acc;
126
- }, {});
127
- message += ` ${JSON.stringify(pascalCaseMeta)}`;
128
- }
129
- return message;
130
- })
131
- });
24
+ if (staticLogger) return;
25
+ const isProd = process.env[AppConstants.NODE_ENV_KEY] === AppConstants.defaultProductionEnv;
26
+ const isTest = process.env[AppConstants.NODE_ENV_KEY] === AppConstants.defaultTestEnv;
27
+ const effectiveLogLevel = isProd || isTest ? "warn" : "debug";
28
+ const lokiTransport = createLokiLoggingTransport({ logLevel: effectiveLogLevel });
29
+ const extraWinstonTransports = [];
30
+ if (lokiTransport) extraWinstonTransports.push(lokiTransport);
31
+ const fileLoggerTransport = createFileLoggingTransport({
32
+ enabled: config.enableFileLogs,
33
+ isTest
34
+ });
35
+ if (fileLoggerTransport) extraWinstonTransports.push(fileLoggerTransport);
36
+ staticLogger = winston.createLogger({
37
+ transports: [...extraWinstonTransports, new winston.transports.Console({
38
+ level: effectiveLogLevel,
39
+ format: winston.format.combine(...isDevelopmentEnvironment() && process.env[AppConstants.ENABLE_COLORED_LOGS_KEY] == "true" ? [
40
+ winston.format((info) => {
41
+ info.rawLevel = info.level;
42
+ return info;
43
+ })(),
44
+ winston.format.colorize({
45
+ colors: {
46
+ error: "red",
47
+ warn: "yellow",
48
+ info: "white",
49
+ debug: "gray",
50
+ http: "magenta",
51
+ verbose: "cyan",
52
+ silly: "gray"
53
+ },
54
+ level: true,
55
+ message: true,
56
+ all: false
57
+ }),
58
+ winston.format.printf((info) => {
59
+ const now = /* @__PURE__ */ new Date();
60
+ const timestamp = `${now.toISOString().split("T")[0]} ${now.toTimeString().split(" ")[0]}.${now.getMilliseconds().toString().padStart(3, "0")}`;
61
+ const levelAbbr = levelMap[info.rawLevel] ?? info.rawLevel.substring(0, 3).toUpperCase();
62
+ const gray = "\x1B[90m";
63
+ const reset = info.message.substring(0, 5) ?? "\x1B[0m";
64
+ const numberRegex = /\b\d+\b/g;
65
+ const coloredMessage = info.message.replace(numberRegex, (match) => `\x1b[35m${match}${reset}`);
66
+ let logEntry = `${gray}[${timestamp} ${reset}${levelAbbr}${reset}${gray}]${reset} ${gray}[${reset}${info["class"] ?? "unknown"}${gray}]${reset} ${coloredMessage}`;
67
+ if (info.meta) {
68
+ const coloredMeta = JSON.stringify(info.meta).replace(numberRegex, (match) => `\x1b[35m${match}${reset}`);
69
+ logEntry += ` ${coloredMeta}`;
70
+ }
71
+ return logEntry;
72
+ })
73
+ ] : [])
74
+ })],
75
+ format: winston.format.printf((info) => {
76
+ const now = /* @__PURE__ */ new Date();
77
+ let message = `[${`${now.toISOString().split("T")[0]} ${now.toTimeString().split(" ")[0]}.${now.getMilliseconds().toString().padStart(3, "0")}`} ${levelMap[info.level] || `[${info.level.substring(0, 3).toUpperCase()}]`}] [${info["class"] ?? "unknown"}] ${info.message}`;
78
+ if (info.meta) {
79
+ const pascalCaseMeta = Object.entries(info.meta).reduce((acc, [key, value]) => {
80
+ const pascalKey = key.charAt(0).toUpperCase() + key.slice(1);
81
+ acc[pascalKey] = value;
82
+ return acc;
83
+ }, {});
84
+ message += ` ${JSON.stringify(pascalCaseMeta)}`;
85
+ }
86
+ return message;
87
+ })
88
+ });
132
89
  }
90
+ //#endregion
91
+ export { createStaticLogger, getStaticLogger, logContextClassProperty };
133
92
 
134
93
  //# sourceMappingURL=static.logger.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/handlers/logging/static.logger.ts"],"names":["createStaticLogger","getStaticLogger","logContextClassProperty","staticLogger","levelMap","error","warn","info","debug","http","verbose","silly","Error","config","isProd","process","env","AppConstants","NODE_ENV_KEY","defaultProductionEnv","isTest","defaultTestEnv","effectiveLogLevel","lokiTransport","createLokiLoggingTransport","logLevel","extraWinstonTransports","push","fileLoggerTransport","createFileLoggingTransport","enabled","enableFileLogs","winston","createLogger","transports","Console","level","format","combine","isDevelopmentEnvironment","ENABLE_COLORED_LOGS_KEY","rawLevel","colorize","colors","message","all","printf","now","Date","timestamp","toISOString","split","toTimeString","getMilliseconds","toString","padStart","levelAbbr","substring","toUpperCase","gray","reset","numberRegex","coloredMessage","replace","match","serviceName","logEntry","meta","metaString","JSON","stringify","coloredMeta","pascalCaseMeta","Object","entries","reduce","acc","key","value","pascalKey","charAt","slice"],"mappings":";;;;;;;;;;;QAiCgBA;eAAAA;;QARAC;eAAAA;;QAFHC;eAAAA;;;gEAvBO;oEACA;iCACS;sCACc;sCACA;0BACF;;;;;;AAEzC,IAAIC,eAAsC;AAM1C,MAAMC,WAAmC;IACvCC,OAAO;IACPC,MAAM;IACNC,MAAM;IACNC,OAAO;IACPC,MAAM;IACNC,SAAS;IACTC,OAAO;AACT;AAEO,MAAMT,0BAA0B;AAEhC,SAASD;IACd,IAAI,CAACE,cAAc;QACjB,MAAM,IAAIS,MAAM;IAClB;IAEA,OAAOT;AACT;AAEO,SAASH,mBAAmBa,MAA0B;IAC3D,IAAIV,cAAc;QAChB;IACF;IAEA,MAAMW,SAASC,oBAAO,CAACC,GAAG,CAACC,6BAAY,CAACC,YAAY,CAAC,KAAKD,6BAAY,CAACE,oBAAoB;IAC3F,MAAMC,SAASL,oBAAO,CAACC,GAAG,CAACC,6BAAY,CAACC,YAAY,CAAC,KAAKD,6BAAY,CAACI,cAAc;IAErF,MAAMC,oBAAoBR,UAAUM,SAAS,SAAS;IAEtD,MAAMG,gBAAgBC,IAAAA,gDAA0B,EAAC;QAC/CC,UAAUH;IACZ;IAEA,MAAMI,yBAA8C,EAAE;IACtD,IAAIH,eAAe;QACjBG,uBAAuBC,IAAI,CAACJ;IAC9B;IAEA,MAAMK,sBAAsBC,IAAAA,gDAA0B,EAAC;QACrDC,SAASjB,OAAOkB,cAAc;QAC9BX;IACF;IACA,IAAIQ,qBAAqB;QACvBF,uBAAuBC,IAAI,CAACC;IAC9B;IAEAzB,eAAe6B,gBAAO,CAACC,YAAY,CAAC;QAClCC,YAAY;eACPR;YAEH,IAAIM,gBAAO,CAACE,UAAU,CAACC,OAAO,CAAC;gBAC7BC,OAAOd;gBACPe,QAAQL,gBAAO,CAACK,MAAM,CAACC,OAAO,IACxBC,IAAAA,kCAAwB,OAAMxB,oBAAO,CAACC,GAAG,CAACC,6BAAY,CAACuB,uBAAuB,CAAC,IAAI,SACnF;oBAEER,gBAAO,CAACK,MAAM,CAAC,CAAC9B;wBACdA,KAAKkC,QAAQ,GAAGlC,KAAK6B,KAAK;wBAC1B,OAAO7B;oBACT;oBACAyB,gBAAO,CAACK,MAAM,CAACK,QAAQ,CAAC;wBACtBC,QAAQ;4BACNtC,OAAO;4BACPC,MAAM;4BACNC,MAAM;4BACNC,OAAO;4BACPC,MAAM;4BACNC,SAAS;4BACTC,OAAO;wBACT;wBACAyB,OAAO;wBACPQ,SAAS;wBACTC,KAAK;oBACP;oBACAb,gBAAO,CAACK,MAAM,CAACS,MAAM,CAAC,CAACvC;wBAErB,MAAMwC,MAAM,IAAIC;wBAChB,MAAMC,YAAY,GAAGF,IAAIG,WAAW,GAAGC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAEJ,IAAIK,YAAY,GAAGD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAEJ,IAAIM,eAAe,GAAGC,QAAQ,GAAGC,QAAQ,CAAC,GAAG,MAAM;wBAI/I,MAAMC,YAAYpD,QAAQ,CAACG,KAAKkC,QAAQ,CAAC,IAAIlC,KAAKkC,QAAQ,CAACgB,SAAS,CAAC,GAAG,GAAGC,WAAW;wBAGtF,MAAMC,OAAO;wBACb,MAAMC,QAAQ,AAACrD,KAAKqC,OAAO,CAAYa,SAAS,CAAC,GAAG,MAAM;wBAC1D,MAAMI,cAAc;wBAGpB,MAAMC,iBAAiB,AAACvD,KAAKqC,OAAO,CAAYmB,OAAO,CACrDF,aACA,CAACG,QAAU,CAAC,QAAQ,EAAEA,QAAQJ,OAAO;wBAGvC,MAAMK,cAAc1D,IAAI,CAACL,wBAAwB,IAAI;wBAGrD,IAAIgE,WAAW,GAAGP,KAAK,CAAC,EAAEV,UAAU,CAAC,EAAEW,QAAQJ,YAAYI,QAAQD,KAAK,CAAC,EAAEC,MAAM,CAAC,EAAED,KAAK,CAAC,EAAEC,QAAQK,cAAcN,KAAK,CAAC,EAAEC,MAAM,CAAC,EAAEE,gBAAgB;wBAGnJ,IAAIvD,KAAK4D,IAAI,EAAE;4BAEb,MAAMC,aAAaC,KAAKC,SAAS,CAAC/D,KAAK4D,IAAI;4BAC3C,MAAMI,cAAcH,WAAWL,OAAO,CAACF,aAAa,CAACG,QAAU,CAAC,QAAQ,EAAEA,QAAQJ,OAAO;4BACzFM,YAAY,CAAC,CAAC,EAAEK,aAAa;wBAC/B;wBAEA,OAAOL;oBACT;iBACD,GACD,EAAE;YAEV;SACD;QACD7B,QAAQL,gBAAO,CAACK,MAAM,CAACS,MAAM,CAAC,CAACvC;YAE7B,MAAMwC,MAAM,IAAIC;YAChB,MAAMC,YAAY,GAAGF,IAAIG,WAAW,GAAGC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAEJ,IAAIK,YAAY,GAAGD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAEJ,IAAIM,eAAe,GAAGC,QAAQ,GAAGC,QAAQ,CAAC,GAAG,MAAM;YAE/I,MAAMC,YAAYpD,QAAQ,CAACG,KAAK6B,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE7B,KAAK6B,KAAK,CAACqB,SAAS,CAAC,GAAG,GAAGC,WAAW,GAAG,CAAC,CAAC;YAEzF,MAAMO,cAAc1D,IAAI,CAACL,wBAAwB,IAAI;YACrD,IAAI0C,UAAU,CAAC,CAAC,EAAEK,UAAU,CAAC,EAAEO,UAAU,GAAG,EAAES,YAAY,EAAE,EAAE1D,KAAKqC,OAAO,EAAE;YAG5E,IAAIrC,KAAK4D,IAAI,EAAE;gBAEb,MAAMK,iBAAiBC,OAAOC,OAAO,CAACnE,KAAK4D,IAAI,EAAEQ,MAAM,CACrD,CAACC,KAAK,CAACC,KAAKC,MAAM;oBAChB,MAAMC,YAAYF,IAAIG,MAAM,CAAC,GAAGtB,WAAW,KAAKmB,IAAII,KAAK,CAAC;oBAC1DL,GAAG,CAACG,UAAU,GAAGD;oBACjB,OAAOF;gBACT,GACA,CAAC;gBAGHhC,WAAW,CAAC,CAAC,EAAEyB,KAAKC,SAAS,CAACE,iBAAiB;YACjD;YAEA,OAAO5B;QACT;IACF;AACF"}
1
+ {"version":3,"file":"static.logger.js","names":[],"sources":["../../../src/handlers/logging/static.logger.ts"],"sourcesContent":["import winston from \"winston\";\nimport process from \"node:process\";\nimport { AppConstants } from \"@/server.constants\";\nimport { createLokiLoggingTransport } from \"@/handlers/logging/loki-logging.transport\";\nimport { createFileLoggingTransport } from \"@/handlers/logging/file-logging.transport\";\nimport { isDevelopmentEnvironment } from \"@/utils/env.utils\";\n\nlet staticLogger: winston.Logger | null = null;\n\nexport interface StaticLoggerConfig {\n enableFileLogs: boolean;\n}\n\nconst levelMap: Record<string, string> = {\n error: \"ERR\",\n warn: \"WRN\",\n info: \"INF\",\n debug: \"DBG\",\n http: \"HTT\",\n verbose: \"VRB\",\n silly: \"SLY\",\n};\n\nexport const logContextClassProperty = \"class\";\n\nexport function getStaticLogger() {\n if (!staticLogger) {\n throw new Error(\"Logger not yet initialized.\");\n }\n\n return staticLogger;\n}\n\nexport function createStaticLogger(config: StaticLoggerConfig) {\n if (staticLogger) {\n return;\n }\n\n const isProd = process.env[AppConstants.NODE_ENV_KEY] === AppConstants.defaultProductionEnv;\n const isTest = process.env[AppConstants.NODE_ENV_KEY] === AppConstants.defaultTestEnv;\n\n const effectiveLogLevel = isProd || isTest ? \"warn\" : \"debug\";\n\n const lokiTransport = createLokiLoggingTransport({\n logLevel: effectiveLogLevel,\n });\n\n const extraWinstonTransports: winston.transport[] = [];\n if (lokiTransport) {\n extraWinstonTransports.push(lokiTransport);\n }\n\n const fileLoggerTransport = createFileLoggingTransport({\n enabled: config.enableFileLogs,\n isTest,\n });\n if (fileLoggerTransport) {\n extraWinstonTransports.push(fileLoggerTransport);\n }\n\n staticLogger = winston.createLogger({\n transports: [\n ...extraWinstonTransports,\n // Always include console transport\n new winston.transports.Console({\n level: effectiveLogLevel,\n format: winston.format.combine(\n ...(isDevelopmentEnvironment() && process.env[AppConstants.ENABLE_COLORED_LOGS_KEY] == \"true\"\n ? [\n // Store the original level before colorization\n winston.format((info) => {\n info.rawLevel = info.level;\n return info;\n })(),\n winston.format.colorize({\n colors: {\n error: \"red\",\n warn: \"yellow\",\n info: \"white\",\n debug: \"gray\",\n http: \"magenta\",\n verbose: \"cyan\",\n silly: \"gray\",\n },\n level: true,\n message: true, // Don't colorize the whole message\n all: false,\n }),\n winston.format.printf((info) => {\n // Format timestamp similar to Serilog (ISO with milliseconds)\n const now = new Date();\n const timestamp = `${now.toISOString().split(\"T\")[0]} ${now.toTimeString().split(\" \")[0]}.${now.getMilliseconds().toString().padStart(3, \"0\")}`;\n\n // Get colored level from winston\n // @ts-ignore\n const levelAbbr = levelMap[info.rawLevel] ?? info.rawLevel.substring(0, 3).toUpperCase();\n\n // Apply custom coloring using ANSI color codes\n const gray = \"\\x1b[90m\"; // Dim/gray\n const reset = (info.message as string).substring(0, 5) ?? \"\\x1b[0m\"; // Reset\n const numberRegex = /\\b\\d+\\b/g;\n\n // Apply purple color to numbers in the message\n const coloredMessage = (info.message as string).replace(\n numberRegex,\n (match) => `\\x1b[35m${match}${reset}`,\n );\n\n const serviceName = info[logContextClassProperty] ?? \"unknown\";\n\n // Format the log entry with gray timestamp and brackets, colored level, and message with purple numbers\n let logEntry = `${gray}[${timestamp} ${reset}${levelAbbr}${reset}${gray}]${reset} ${gray}[${reset}${serviceName}${gray}]${reset} ${coloredMessage}`;\n\n // Add metadata if present\n if (info.meta) {\n // Add metadata with numbers colorized in purple\n const metaString = JSON.stringify(info.meta);\n const coloredMeta = metaString.replace(numberRegex, (match) => `\\x1b[35m${match}${reset}`);\n logEntry += ` ${coloredMeta}`;\n }\n\n return logEntry;\n }),\n ]\n : []),\n ),\n }),\n ],\n format: winston.format.printf((info) => {\n // Format timestamp similar to Serilog (ISO with milliseconds)\n const now = new Date();\n const timestamp = `${now.toISOString().split(\"T\")[0]} ${now.toTimeString().split(\" \")[0]}.${now.getMilliseconds().toString().padStart(3, \"0\")}`;\n\n const levelAbbr = levelMap[info.level] || `[${info.level.substring(0, 3).toUpperCase()}]`;\n\n const serviceName = info[logContextClassProperty] ?? \"unknown\";\n let message = `[${timestamp} ${levelAbbr}] [${serviceName}] ${info.message}`;\n\n // Add metadata if present, without dash separator\n if (info.meta) {\n // Convert camelCase to PascalCase for C# style\n const pascalCaseMeta = Object.entries(info.meta).reduce(\n (acc, [key, value]) => {\n const pascalKey = key.charAt(0).toUpperCase() + key.slice(1);\n acc[pascalKey] = value;\n return acc;\n },\n {} as Record<string, any>,\n );\n\n message += ` ${JSON.stringify(pascalCaseMeta)}`;\n }\n\n return message;\n }),\n });\n}\n"],"mappings":"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"}
@@ -1,31 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
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 validateInput () {
13
- return validateInput;
14
- },
15
- get validateMiddleware () {
16
- return validateMiddleware;
17
- }
18
- });
19
- const _runtimeexceptions = require("../exceptions/runtime.exceptions");
1
+ import { ValidationException } from "../exceptions/runtime.exceptions.js";
2
+ //#region src/handlers/validators.ts
20
3
  async function validateInput(data, zodSchema) {
21
- const result = await zodSchema.safeParseAsync(data);
22
- if (!result.success) {
23
- throw new _runtimeexceptions.ValidationException(result.error);
24
- }
25
- return result.data;
4
+ const result = await zodSchema.safeParseAsync(data);
5
+ if (!result.success) throw new ValidationException(result.error);
6
+ return result.data;
26
7
  }
27
8
  async function validateMiddleware(req, zodSchema) {
28
- return validateInput(req.body, zodSchema);
9
+ return validateInput(req.body, zodSchema);
29
10
  }
11
+ //#endregion
12
+ export { validateInput, validateMiddleware };
30
13
 
31
14
  //# sourceMappingURL=validators.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/handlers/validators.ts"],"names":["validateInput","validateMiddleware","data","zodSchema","result","safeParseAsync","success","ValidationException","error","req","body"],"mappings":";;;;;;;;;;;QAIsBA;eAAAA;;QASAC;eAAAA;;;mCAZc;AAG7B,eAAeD,cAAoBE,IAAO,EAAEC,SAAuB;IACxE,MAAMC,SAAS,MAAMD,UAAUE,cAAc,CAACH;IAE9C,IAAI,CAACE,OAAOE,OAAO,EAAE;QACnB,MAAM,IAAIC,sCAAmB,CAACH,OAAOI,KAAK;IAC5C;IACA,OAAOJ,OAAOF,IAAI;AACpB;AAEO,eAAeD,mBAAyBQ,GAAe,EAAEN,SAAuB;IACrF,OAAOH,cAAcS,IAAIC,IAAI,EAAEP;AACjC"}
1
+ {"version":3,"file":"validators.js","names":[],"sources":["../../src/handlers/validators.ts"],"sourcesContent":["import type { Request } from \"express\";\nimport { ValidationException } from \"@/exceptions/runtime.exceptions\";\nimport { ZodSchema } from \"zod\";\n\nexport async function validateInput<I, S>(data: I, zodSchema: ZodSchema<S>): Promise<S> {\n const result = await zodSchema.safeParseAsync(data);\n\n if (!result.success) {\n throw new ValidationException(result.error);\n }\n return result.data;\n}\n\nexport async function validateMiddleware<I, S>(req: Request<I>, zodSchema: ZodSchema<S>): Promise<S> {\n return validateInput(req.body, zodSchema);\n}\n"],"mappings":";;AAIA,eAAsB,cAAoB,MAAS,WAAqC;CACtF,MAAM,SAAS,MAAM,UAAU,eAAe,KAAK;AAEnD,KAAI,CAAC,OAAO,QACV,OAAM,IAAI,oBAAoB,OAAO,MAAM;AAE7C,QAAO,OAAO;;AAGhB,eAAsB,mBAAyB,KAAiB,WAAqC;AACnG,QAAO,cAAc,IAAI,MAAM,UAAU"}
package/dist/index.js CHANGED
@@ -1,32 +1,29 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _node = require("@sentry/node");
6
- const _serverenv = require("./server.env");
7
- const _servercore = require("./server.core");
8
- const _containertokens = require("./container.tokens");
9
- const _logger = require("./handlers/logger");
10
- const _staticlogger = require("./handlers/logging/static.logger");
11
- (0, _staticlogger.createStaticLogger)({
12
- enableFileLogs: true
13
- });
14
- const logger = new _logger.LoggerService("FDM-Environment");
1
+ import { DITokens } from "./container.tokens.js";
2
+ import { createStaticLogger } from "./handlers/logging/static.logger.js";
3
+ import { LoggerService } from "./handlers/logger.js";
4
+ import { setupEnvConfig } from "./server.env.js";
5
+ import { setupServer } from "./server.core.js";
6
+ import { captureException, flush } from "@sentry/node";
7
+ //#region src/index.ts
8
+ createStaticLogger({ enableFileLogs: true });
9
+ const logger = new LoggerService("FDM-Environment");
15
10
  logger.log("✓ Parsed environment with (optional) .env file, created static logger");
16
- (0, _serverenv.setupEnvConfig)();
17
- process.on("uncaughtException", (err)=>{
18
- logger.error("Uncaught exception", err);
11
+ setupEnvConfig();
12
+ process.on("uncaughtException", (err) => {
13
+ logger.error("Uncaught exception", err);
19
14
  });
20
- process.on("unhandledRejection", (reason)=>{
21
- logger.error("Unhandled promise rejection", reason);
15
+ process.on("unhandledRejection", (reason) => {
16
+ logger.error("Unhandled promise rejection", reason);
22
17
  });
23
- (0, _servercore.setupServer)().then(({ httpServer, container })=>{
24
- container.resolve(_containertokens.DITokens.serverHost).boot(httpServer).catch(async (e)=>{
25
- console.error("Server has crashed unintentionally - please report this", e);
26
- (0, _node.captureException)(e);
27
- await (0, _node.flush)(0);
28
- process.exit(1);
29
- });
18
+ setupServer().then(({ httpServer, container }) => {
19
+ container.resolve(DITokens.serverHost).boot(httpServer).catch(async (e) => {
20
+ console.error("Server has crashed unintentionally - please report this", e);
21
+ captureException(e);
22
+ await flush(0);
23
+ process.exit(1);
24
+ });
30
25
  });
26
+ //#endregion
27
+ export {};
31
28
 
32
29
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["createStaticLogger","enableFileLogs","logger","Logger","log","setupEnvConfig","process","on","err","error","reason","setupServer","then","httpServer","container","resolve","DITokens","serverHost","boot","catch","e","console","captureException","flush","exit"],"mappings":";;;;sBAEwC;2BACT;4BACH;iCACH;wBAEe;8BACL;AAGnCA,IAAAA,gCAAkB,EAAC;IAAEC,gBAAgB;AAAK;AAC1C,MAAMC,SAAS,IAAIC,qBAAM,CAAC;AAC1BD,OAAOE,GAAG,CAAC;AAEXC,IAAAA,yBAAc;AAEdC,QAAQC,EAAE,CAAC,qBAAqB,CAACC;IAC/BN,OAAOO,KAAK,CAAC,sBAAsBD;AACrC;AAEAF,QAAQC,EAAE,CAAC,sBAAsB,CAACG;IAChCR,OAAOO,KAAK,CAAC,+BAA+BC;AAC9C;AAEAC,IAAAA,uBAAW,IAAGC,IAAI,CAAC,CAAC,EAAEC,UAAU,EAAEC,SAAS,EAAE;IAC3CA,UACGC,OAAO,CAAaC,yBAAQ,CAACC,UAAU,EACvCC,IAAI,CAACL,YACLM,KAAK,CAAC,OAAOC;QACZC,QAAQZ,KAAK,CAAC,2DAA2DW;QAEzEE,IAAAA,sBAAgB,EAACF;QACjB,MAAMG,IAAAA,WAAK,EAAC;QACZjB,QAAQkB,IAAI,CAAC;IACf;AACJ"}
1
+ {"version":3,"file":"index.js","names":["Logger"],"sources":["../src/index.ts"],"sourcesContent":["import { captureException, flush } from \"@sentry/node\";\nimport { setupEnvConfig } from \"./server.env\";\nimport { setupServer } from \"./server.core\";\nimport { DITokens } from \"./container.tokens\";\nimport { ServerHost } from \"@/server.host\";\nimport { LoggerService as Logger } from \"@/handlers/logger\";\nimport { createStaticLogger } from \"@/handlers/logging/static.logger\";\n\ncreateStaticLogger({ enableFileLogs: true });\nconst logger = new Logger(\"FDM-Environment\");\nlogger.log(\"✓ Parsed environment with (optional) .env file, created static logger\");\n\nsetupEnvConfig();\n\nprocess.on(\"uncaughtException\", (err) => {\n logger.error(\"Uncaught exception\", err);\n});\n\nprocess.on(\"unhandledRejection\", (reason) => {\n logger.error(\"Unhandled promise rejection\", reason);\n});\n\nsetupServer().then(({ httpServer, container }) => {\n container\n .resolve<ServerHost>(DITokens.serverHost)\n .boot(httpServer)\n .catch(async (e: Error) => {\n console.error(\"Server has crashed unintentionally - please report this\", e);\n\n captureException(e);\n await flush(0);\n process.exit(1);\n });\n});\n"],"mappings":";;;;;;;AAQA,mBAAmB,EAAE,gBAAgB,MAAM,CAAC;AAC5C,MAAM,SAAS,IAAIA,cAAO,kBAAkB;AAC5C,OAAO,IAAI,wEAAwE;AAEnF,gBAAgB;AAEhB,QAAQ,GAAG,sBAAsB,QAAQ;AACvC,QAAO,MAAM,sBAAsB,IAAI;EACvC;AAEF,QAAQ,GAAG,uBAAuB,WAAW;AAC3C,QAAO,MAAM,+BAA+B,OAAO;EACnD;AAEF,aAAa,CAAC,MAAM,EAAE,YAAY,gBAAgB;AAChD,WACG,QAAoB,SAAS,WAAW,CACxC,KAAK,WAAW,CAChB,MAAM,OAAO,MAAa;AACzB,UAAQ,MAAM,2DAA2D,EAAE;AAE3E,mBAAiB,EAAE;AACnB,QAAM,MAAM,EAAE;AACd,UAAQ,KAAK,EAAE;GACf;EACJ"}
@@ -0,0 +1,45 @@
1
+ import { Strategy } from "passport";
2
+ //#region src/middleware/api-key.strategy.ts
3
+ /**
4
+ * Passport strategy for API-key bearer auth. Slotted between JWT and Anonymous
5
+ * so a request with no auth header still falls through to anonymous.
6
+ *
7
+ * Important: we do NOT look up the bound user. The api_key_role join is the
8
+ * sole permission source for the request — keys are self-contained credentials,
9
+ * not user impersonation. `req.user.isApiKey === true` and `req.user.id = -1`
10
+ * are how downstream audit/branching code can detect an api-key principal.
11
+ */
12
+ var ApiKeyStrategy = class extends Strategy {
13
+ name = "api-key";
14
+ constructor(apiKeyService) {
15
+ super();
16
+ this.apiKeyService = apiKeyService;
17
+ }
18
+ async authenticate(req, _options) {
19
+ const header = req.headers.authorization;
20
+ const token = header?.startsWith("Bearer ") ? header.slice(7) : void 0;
21
+ if (!token || !this.apiKeyService.looksLikeApiKey(token)) return this.pass();
22
+ try {
23
+ const apiKey = await this.apiKeyService.verify(token);
24
+ if (!apiKey) return this.fail({ message: "Invalid API key" }, 401);
25
+ const principal = {
26
+ id: -1,
27
+ username: `api-key:${apiKey.id}`,
28
+ isDemoUser: false,
29
+ isRootUser: false,
30
+ isVerified: true,
31
+ needsPasswordChange: false,
32
+ createdAt: apiKey.createdAt,
33
+ roles: (apiKey.roles ?? []).map((r) => r.name),
34
+ isApiKey: true
35
+ };
36
+ return this.success(principal);
37
+ } catch (err) {
38
+ return this.error(err instanceof Error ? err : new Error(String(err)));
39
+ }
40
+ }
41
+ };
42
+ //#endregion
43
+ export { ApiKeyStrategy };
44
+
45
+ //# sourceMappingURL=api-key.strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-key.strategy.js","names":[],"sources":["../../src/middleware/api-key.strategy.ts"],"sourcesContent":["import { Strategy } from \"passport\";\nimport type { Request } from \"express\";\nimport type { IApiKeyService } from \"@/services/interfaces/api-key.service.interface\";\nimport type { UserDto } from \"@/services/interfaces/user.dto\";\nimport type { RoleName } from \"@/constants/authorization.constants\";\n\n/**\n * Passport strategy for API-key bearer auth. Slotted between JWT and Anonymous\n * so a request with no auth header still falls through to anonymous.\n *\n * Important: we do NOT look up the bound user. The api_key_role join is the\n * sole permission source for the request — keys are self-contained credentials,\n * not user impersonation. `req.user.isApiKey === true` and `req.user.id = -1`\n * are how downstream audit/branching code can detect an api-key principal.\n */\nexport class ApiKeyStrategy extends Strategy {\n name = \"api-key\";\n\n constructor(private readonly apiKeyService: IApiKeyService) {\n super();\n }\n\n async authenticate(req: Request, _options?: any): Promise<void> {\n const header = req.headers.authorization;\n const token = header?.startsWith(\"Bearer \") ? header.slice(\"Bearer \".length) : undefined;\n if (!token || !this.apiKeyService.looksLikeApiKey(token)) {\n return this.pass();\n }\n\n try {\n const apiKey = await this.apiKeyService.verify(token);\n if (!apiKey) {\n return this.fail({ message: \"Invalid API key\" }, 401);\n }\n const principal: UserDto = {\n id: -1,\n username: `api-key:${apiKey.id}`,\n isDemoUser: false,\n isRootUser: false,\n isVerified: true,\n needsPasswordChange: false,\n createdAt: apiKey.createdAt,\n roles: (apiKey.roles ?? []).map((r) => r.name as RoleName),\n isApiKey: true,\n };\n return this.success(principal);\n } catch (err) {\n return this.error(err instanceof Error ? err : new Error(String(err)));\n }\n }\n}\n"],"mappings":";;;;;;;;;;;AAeA,IAAa,iBAAb,cAAoC,SAAS;CAC3C,OAAO;CAEP,YAAY,eAAgD;AAC1D,SAAO;AADoB,OAAA,gBAAA;;CAI7B,MAAM,aAAa,KAAc,UAA+B;EAC9D,MAAM,SAAS,IAAI,QAAQ;EAC3B,MAAM,QAAQ,QAAQ,WAAW,UAAU,GAAG,OAAO,MAAM,EAAiB,GAAG,KAAA;AAC/E,MAAI,CAAC,SAAS,CAAC,KAAK,cAAc,gBAAgB,MAAM,CACtD,QAAO,KAAK,MAAM;AAGpB,MAAI;GACF,MAAM,SAAS,MAAM,KAAK,cAAc,OAAO,MAAM;AACrD,OAAI,CAAC,OACH,QAAO,KAAK,KAAK,EAAE,SAAS,mBAAmB,EAAE,IAAI;GAEvD,MAAM,YAAqB;IACzB,IAAI;IACJ,UAAU,WAAW,OAAO;IAC5B,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,qBAAqB;IACrB,WAAW,OAAO;IAClB,QAAQ,OAAO,SAAS,EAAE,EAAE,KAAK,MAAM,EAAE,KAAiB;IAC1D,UAAU;IACX;AACD,UAAO,KAAK,QAAQ,UAAU;WACvB,KAAK;AACZ,UAAO,KAAK,MAAM,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,IAAI,CAAC,CAAC"}
@@ -1,74 +1,31 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
1
+ import { AuthenticationError, AuthorizationError } from "../exceptions/runtime.exceptions.js";
2
+ import { AUTH_ERROR_REASON } from "../constants/authorization.constants.js";
3
+ import { inject } from "awilix-express";
4
+ //#region src/middleware/authenticate.ts
5
+ const authenticate = () => inject((authService, loggerFactory, settingsStore) => async (req, res, next) => {
6
+ const logger = loggerFactory("Middleware:authenticate");
7
+ if (!await settingsStore.getLoginRequired()) return next();
8
+ if (req.user?.needsPasswordChange) throw new AuthenticationError("Password change required", AUTH_ERROR_REASON.PasswordChangeRequired);
9
+ const bearer = req.headers.authorization?.replace("Bearer ", "") || void 0;
10
+ if (!!bearer?.length && authService.isJwtTokenBlacklisted(bearer)) throw new AuthenticationError("Not authenticated", AUTH_ERROR_REASON.LoginRequired);
11
+ if (req.isAuthenticated()) return next();
12
+ logger.log(`Not authenticated for route: ${req.originalUrl}`);
13
+ throw new AuthenticationError("Not authenticated", AUTH_ERROR_REASON.InvalidOrExpiredAuthToken);
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 authenticate () {
13
- return authenticate;
14
- },
15
- get authorizeRoles () {
16
- return authorizeRoles;
17
- },
18
- get permission () {
19
- return permission;
20
- }
21
- });
22
- const _awilixexpress = require("awilix-express");
23
- const _runtimeexceptions = require("../exceptions/runtime.exceptions");
24
- const _authorizationconstants = require("../constants/authorization.constants");
25
- const authenticate = ()=>(0, _awilixexpress.inject)((authService, loggerFactory, settingsStore)=>async (req, res, next)=>{
26
- const logger = loggerFactory("Middleware:authenticate");
27
- const isLoginRequired = await settingsStore.getLoginRequired();
28
- if (!isLoginRequired) {
29
- return next();
30
- }
31
- if (req.user?.needsPasswordChange) {
32
- throw new _runtimeexceptions.AuthenticationError("Password change required", _authorizationconstants.AUTH_ERROR_REASON.PasswordChangeRequired);
33
- }
34
- const bearer = req.headers.authorization?.replace("Bearer ", "") || undefined;
35
- if (!!bearer?.length && authService.isJwtTokenBlacklisted(bearer)) {
36
- throw new _runtimeexceptions.AuthenticationError("Not authenticated", _authorizationconstants.AUTH_ERROR_REASON.LoginRequired);
37
- }
38
- if (req.isAuthenticated()) {
39
- return next();
40
- }
41
- logger.log(`Not authenticated for route: ${req.originalUrl}`);
42
- throw new _runtimeexceptions.AuthenticationError("Not authenticated", _authorizationconstants.AUTH_ERROR_REASON.InvalidOrExpiredAuthToken);
43
- });
44
15
  function permission(requiredPermission) {
45
- return (0, _awilixexpress.inject)((permissionService, roleService)=>async (req, _res, next)=>{
46
- const userRoles = req.roles;
47
- if (!userRoles?.length) {
48
- throw new _runtimeexceptions.AuthorizationError({
49
- permissions: [
50
- requiredPermission
51
- ]
52
- });
53
- }
54
- const assignedPermissions = roleService.getRolesPermissions(userRoles);
55
- if (!permissionService.authorizePermission(requiredPermission, assignedPermissions)) {
56
- throw new _runtimeexceptions.AuthorizationError({
57
- permissions: [
58
- requiredPermission
59
- ]
60
- });
61
- }
62
- next();
63
- });
16
+ return inject((permissionService, roleService) => async (req, _res, next) => {
17
+ const userRoles = req.roles;
18
+ if (!userRoles?.length) throw new AuthorizationError({ permissions: [requiredPermission] });
19
+ const assignedPermissions = roleService.getRolesPermissions(userRoles);
20
+ if (!permissionService.authorizePermission(requiredPermission, assignedPermissions)) throw new AuthorizationError({ permissions: [requiredPermission] });
21
+ next();
22
+ });
64
23
  }
65
- const authorizeRoles = (requiredRoles, subset = true)=>(0, _awilixexpress.inject)((roleService)=>async (req, res, next)=>{
66
- if (!req.roles?.length || !roleService.authorizeRoles(requiredRoles, req.roles, subset)) {
67
- throw new _runtimeexceptions.AuthorizationError({
68
- roles: requiredRoles
69
- });
70
- }
71
- next();
72
- });
24
+ const authorizeRoles = (requiredRoles, subset = true) => inject((roleService) => async (req, res, next) => {
25
+ if (!req.roles?.length || !roleService.authorizeRoles(requiredRoles, req.roles, subset)) throw new AuthorizationError({ roles: requiredRoles });
26
+ next();
27
+ });
28
+ //#endregion
29
+ export { authenticate, authorizeRoles, permission };
73
30
 
74
31
  //# sourceMappingURL=authenticate.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/middleware/authenticate.ts"],"names":["authenticate","authorizeRoles","permission","inject","authService","loggerFactory","settingsStore","req","res","next","logger","isLoginRequired","getLoginRequired","user","needsPasswordChange","AuthenticationError","AUTH_ERROR_REASON","PasswordChangeRequired","bearer","headers","authorization","replace","undefined","length","isJwtTokenBlacklisted","LoginRequired","isAuthenticated","log","originalUrl","InvalidOrExpiredAuthToken","requiredPermission","permissionService","roleService","_res","userRoles","roles","AuthorizationError","permissions","assignedPermissions","getRolesPermissions","authorizePermission","requiredRoles","subset"],"mappings":";;;;;;;;;;;QAUaA;eAAAA;;QAkDAC;eAAAA;;QAnBGC;eAAAA;;;+BAzCO;mCACiC;wCAEI;AAOrD,MAAMF,eAAe,IAC1BG,IAAAA,qBAAM,EACJ,CAACC,aAA0BC,eAA+BC,gBACxD,OAAOC,KAAcC,KAAeC;YAClC,MAAMC,SAASL,cAAc;YAE7B,MAAMM,kBAAkB,MAAML,cAAcM,gBAAgB;YAC5D,IAAI,CAACD,iBAAiB;gBACpB,OAAOF;YACT;YAGA,IAAIF,IAAIM,IAAI,EAAEC,qBAAqB;gBACjC,MAAM,IAAIC,sCAAmB,CAAC,4BAA4BC,yCAAiB,CAACC,sBAAsB;YACpG;YAGA,MAAMC,SAASX,IAAIY,OAAO,CAACC,aAAa,EAAEC,QAAQ,WAAW,OAAOC;YACpE,IAAI,CAAC,CAACJ,QAAQK,UAAUnB,YAAYoB,qBAAqB,CAACN,SAAS;gBACjE,MAAM,IAAIH,sCAAmB,CAAC,qBAAqBC,yCAAiB,CAACS,aAAa;YACpF;YAEA,IAAIlB,IAAImB,eAAe,IAAI;gBACzB,OAAOjB;YACT;YAEAC,OAAOiB,GAAG,CAAC,CAAC,6BAA6B,EAAEpB,IAAIqB,WAAW,EAAE;YAC5D,MAAM,IAAIb,sCAAmB,CAAC,qBAAqBC,yCAAiB,CAACa,yBAAyB;QAChG;AAGC,SAAS3B,WAAW4B,kBAAkC;IAC3D,OAAO3B,IAAAA,qBAAM,EACX,CAAC4B,mBAAuCC,cACtC,OAAOzB,KAAc0B,MAAgBxB;YACnC,MAAMyB,YAAY3B,IAAI4B,KAAK;YAC3B,IAAI,CAACD,WAAWX,QAAQ;gBACtB,MAAM,IAAIa,qCAAkB,CAAC;oBAAEC,aAAa;wBAACP;qBAAmB;gBAAC;YACnE;YAEA,MAAMQ,sBAAsBN,YAAYO,mBAAmB,CAACL;YAC5D,IAAI,CAACH,kBAAkBS,mBAAmB,CAACV,oBAAoBQ,sBAAsB;gBACnF,MAAM,IAAIF,qCAAkB,CAAC;oBAAEC,aAAa;wBAACP;qBAAmB;gBAAC;YACnE;YAEArB;QACF;AAEN;AAEO,MAAMR,iBAAiB,CAACwC,eAA2BC,SAAS,IAAI,GACrEvC,IAAAA,qBAAM,EAAC,CAAC6B,cAA8B,OAAOzB,KAAcC,KAAeC;YACxE,IAAI,CAACF,IAAI4B,KAAK,EAAEZ,UAAU,CAACS,YAAY/B,cAAc,CAACwC,eAAelC,IAAI4B,KAAK,EAAEO,SAAS;gBACvF,MAAM,IAAIN,qCAAkB,CAAC;oBAAED,OAAOM;gBAAc;YACtD;YAEAhC;QACF"}
1
+ {"version":3,"file":"authenticate.js","names":[],"sources":["../../src/middleware/authenticate.ts"],"sourcesContent":["import { inject } from \"awilix-express\";\nimport { AuthenticationError, AuthorizationError } from \"@/exceptions/runtime.exceptions\";\nimport type { NextFunction, Request, Response } from \"express\";\nimport { AUTH_ERROR_REASON, type PermissionName, type RoleName } from \"@/constants/authorization.constants\";\nimport { SettingsStore } from \"@/state/settings.store\";\nimport { AuthService } from \"@/services/authentication/auth.service\";\nimport type { ILoggerFactory } from \"@/handlers/logger-factory\";\nimport type { IRoleService } from \"@/services/interfaces/role-service.interface\";\nimport type { IPermissionService } from \"@/services/interfaces/permission.service.interface\";\n\nexport const authenticate = () =>\n inject(\n (authService: AuthService, loggerFactory: ILoggerFactory, settingsStore: SettingsStore) =>\n async (req: Request, res: Response, next: NextFunction) => {\n const logger = loggerFactory(\"Middleware:authenticate\");\n\n const isLoginRequired = await settingsStore.getLoginRequired();\n if (!isLoginRequired) {\n return next();\n }\n\n // Check if a password change is required\n if (req.user?.needsPasswordChange) {\n throw new AuthenticationError(\"Password change required\", AUTH_ERROR_REASON.PasswordChangeRequired);\n }\n\n // Check if a logout was called\n const bearer = req.headers.authorization?.replace(\"Bearer \", \"\") || undefined;\n if (!!bearer?.length && authService.isJwtTokenBlacklisted(bearer)) {\n throw new AuthenticationError(\"Not authenticated\", AUTH_ERROR_REASON.LoginRequired);\n }\n\n if (req.isAuthenticated()) {\n return next();\n }\n\n logger.log(`Not authenticated for route: ${req.originalUrl}`);\n throw new AuthenticationError(\"Not authenticated\", AUTH_ERROR_REASON.InvalidOrExpiredAuthToken);\n },\n );\n\nexport function permission(requiredPermission: PermissionName) {\n return inject(\n (permissionService: IPermissionService, roleService: IRoleService) =>\n async (req: Request, _res: Response, next: NextFunction) => {\n const userRoles = req.roles;\n if (!userRoles?.length) {\n throw new AuthorizationError({ permissions: [requiredPermission] });\n }\n\n const assignedPermissions = roleService.getRolesPermissions(userRoles);\n if (!permissionService.authorizePermission(requiredPermission, assignedPermissions)) {\n throw new AuthorizationError({ permissions: [requiredPermission] });\n }\n\n next();\n },\n );\n}\n\nexport const authorizeRoles = (requiredRoles: RoleName[], subset = true) =>\n inject((roleService: IRoleService) => async (req: Request, res: Response, next: NextFunction) => {\n if (!req.roles?.length || !roleService.authorizeRoles(requiredRoles, req.roles, subset)) {\n throw new AuthorizationError({ roles: requiredRoles });\n }\n\n next();\n });\n"],"mappings":";;;;AAUA,MAAa,qBACX,QACG,aAA0B,eAA+B,kBACxD,OAAO,KAAc,KAAe,SAAuB;CACzD,MAAM,SAAS,cAAc,0BAA0B;AAGvD,KAAI,CAAC,MADyB,cAAc,kBAAkB,CAE5D,QAAO,MAAM;AAIf,KAAI,IAAI,MAAM,oBACZ,OAAM,IAAI,oBAAoB,4BAA4B,kBAAkB,uBAAuB;CAIrG,MAAM,SAAS,IAAI,QAAQ,eAAe,QAAQ,WAAW,GAAG,IAAI,KAAA;AACpE,KAAI,CAAC,CAAC,QAAQ,UAAU,YAAY,sBAAsB,OAAO,CAC/D,OAAM,IAAI,oBAAoB,qBAAqB,kBAAkB,cAAc;AAGrF,KAAI,IAAI,iBAAiB,CACvB,QAAO,MAAM;AAGf,QAAO,IAAI,gCAAgC,IAAI,cAAc;AAC7D,OAAM,IAAI,oBAAoB,qBAAqB,kBAAkB,0BAA0B;EAEpG;AAEH,SAAgB,WAAW,oBAAoC;AAC7D,QAAO,QACJ,mBAAuC,gBACtC,OAAO,KAAc,MAAgB,SAAuB;EAC1D,MAAM,YAAY,IAAI;AACtB,MAAI,CAAC,WAAW,OACd,OAAM,IAAI,mBAAmB,EAAE,aAAa,CAAC,mBAAmB,EAAE,CAAC;EAGrE,MAAM,sBAAsB,YAAY,oBAAoB,UAAU;AACtE,MAAI,CAAC,kBAAkB,oBAAoB,oBAAoB,oBAAoB,CACjF,OAAM,IAAI,mBAAmB,EAAE,aAAa,CAAC,mBAAmB,EAAE,CAAC;AAGrE,QAAM;GAEX;;AAGH,MAAa,kBAAkB,eAA2B,SAAS,SACjE,QAAQ,gBAA8B,OAAO,KAAc,KAAe,SAAuB;AAC/F,KAAI,CAAC,IAAI,OAAO,UAAU,CAAC,YAAY,eAAe,eAAe,IAAI,OAAO,OAAO,CACrF,OAAM,IAAI,mBAAmB,EAAE,OAAO,eAAe,CAAC;AAGxD,OAAM;EACN"}