@fdm-monster/server 2.0.10 → 2.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (929) hide show
  1. package/.claude/CLAUDE.md +76 -0
  2. package/.vite-hooks/pre-commit +1 -0
  3. package/.yarn/install-state.gz +0 -0
  4. package/.yarn/releases/yarn-4.13.0.cjs +940 -0
  5. package/.yarnrc.yml +1 -1
  6. package/README.md +1 -1
  7. package/RELEASE_NOTES.MD +14 -0
  8. package/dist/_virtual/_@oxc-project_runtime@0.127.0/helpers/decorate.js +9 -0
  9. package/dist/_virtual/_@oxc-project_runtime@0.127.0/helpers/decorateMetadata.js +6 -0
  10. package/dist/_virtual/_rolldown/runtime.js +13 -0
  11. package/dist/_virtual/_virtual_controllers.js +43 -0
  12. package/dist/consoles/typeorm-create.js +51 -112
  13. package/dist/consoles/typeorm-create.js.map +1 -1
  14. package/dist/consoles/typeorm-generate.js +99 -165
  15. package/dist/consoles/typeorm-generate.js.map +1 -1
  16. package/dist/consoles/typeorm-migrate.js +35 -43
  17. package/dist/consoles/typeorm-migrate.js.map +1 -1
  18. package/dist/constants/authorization.constants.js +75 -97
  19. package/dist/constants/authorization.constants.js.map +1 -1
  20. package/dist/constants/event.constants.js +11 -41
  21. package/dist/constants/event.constants.js.map +1 -1
  22. package/dist/constants/http-status-codes.constants.js +319 -71
  23. package/dist/constants/http-status-codes.constants.js.map +1 -1
  24. package/dist/constants/server-settings.constants.js +45 -87
  25. package/dist/constants/server-settings.constants.js.map +1 -1
  26. package/dist/constants/service.constants.js +3 -21
  27. package/dist/constants/service.constants.js.map +1 -1
  28. package/dist/container.js +167 -181
  29. package/dist/container.js.map +1 -1
  30. package/dist/container.tokens.js +78 -85
  31. package/dist/container.tokens.js.map +1 -1
  32. package/dist/controllers/auth.controller.js +156 -225
  33. package/dist/controllers/auth.controller.js.map +1 -1
  34. package/dist/controllers/batch-call.controller.js +79 -116
  35. package/dist/controllers/batch-call.controller.js.map +1 -1
  36. package/dist/controllers/camera-stream.controller.js +74 -119
  37. package/dist/controllers/camera-stream.controller.js.map +1 -1
  38. package/dist/controllers/dto/update-client-dist.dto.js +8 -15
  39. package/dist/controllers/dto/update-client-dist.dto.js.map +1 -1
  40. package/dist/controllers/file-storage.controller.js +251 -312
  41. package/dist/controllers/file-storage.controller.js.map +1 -1
  42. package/dist/controllers/first-time-setup.controller.js +83 -135
  43. package/dist/controllers/first-time-setup.controller.js.map +1 -1
  44. package/dist/controllers/floor.controller.js +111 -175
  45. package/dist/controllers/floor.controller.js.map +1 -1
  46. package/dist/controllers/metrics.controller.js +27 -53
  47. package/dist/controllers/metrics.controller.js.map +1 -1
  48. package/dist/controllers/print-job.controller.js +366 -451
  49. package/dist/controllers/print-job.controller.js.map +1 -1
  50. package/dist/controllers/print-queue.controller.js +329 -427
  51. package/dist/controllers/print-queue.controller.js.map +1 -1
  52. package/dist/controllers/printer-files.controller.js +244 -305
  53. package/dist/controllers/printer-files.controller.js.map +1 -1
  54. package/dist/controllers/printer-maintenance-log.controller.js +109 -165
  55. package/dist/controllers/printer-maintenance-log.controller.js.map +1 -1
  56. package/dist/controllers/printer-settings.controller.js +50 -81
  57. package/dist/controllers/printer-settings.controller.js.map +1 -1
  58. package/dist/controllers/printer-tag.controller.js +104 -166
  59. package/dist/controllers/printer-tag.controller.js.map +1 -1
  60. package/dist/controllers/printer.controller.js +352 -469
  61. package/dist/controllers/printer.controller.js.map +1 -1
  62. package/dist/controllers/server-private.controller.js +182 -239
  63. package/dist/controllers/server-private.controller.js.map +1 -1
  64. package/dist/controllers/server-public.controller.js +104 -158
  65. package/dist/controllers/server-public.controller.js.map +1 -1
  66. package/dist/controllers/settings.controller.js +229 -364
  67. package/dist/controllers/settings.controller.js.map +1 -1
  68. package/dist/controllers/slicer-compat.controller.js +179 -206
  69. package/dist/controllers/slicer-compat.controller.js.map +1 -1
  70. package/dist/controllers/user.controller.js +226 -348
  71. package/dist/controllers/user.controller.js.map +1 -1
  72. package/dist/controllers/validation/auth-controller.validation.js +5 -14
  73. package/dist/controllers/validation/auth-controller.validation.js.map +1 -1
  74. package/dist/controllers/validation/batch-controller.validation.js +13 -35
  75. package/dist/controllers/validation/batch-controller.validation.js.map +1 -1
  76. package/dist/controllers/validation/generic.validation.js +6 -23
  77. package/dist/controllers/validation/generic.validation.js.map +1 -1
  78. package/dist/controllers/validation/printer-completion-controller.validation.js +5 -14
  79. package/dist/controllers/validation/printer-completion-controller.validation.js.map +1 -1
  80. package/dist/controllers/validation/printer-controller.validation.js +16 -48
  81. package/dist/controllers/validation/printer-controller.validation.js.map +1 -1
  82. package/dist/controllers/validation/printer-files-controller.validation.js +12 -47
  83. package/dist/controllers/validation/printer-files-controller.validation.js.map +1 -1
  84. package/dist/controllers/validation/printer-settings-controller.validation.js +5 -14
  85. package/dist/controllers/validation/printer-settings-controller.validation.js.map +1 -1
  86. package/dist/controllers/validation/server-private.validation.js +7 -14
  87. package/dist/controllers/validation/server-private.validation.js.map +1 -1
  88. package/dist/controllers/validation/setting.validation.js +12 -34
  89. package/dist/controllers/validation/setting.validation.js.map +1 -1
  90. package/dist/controllers/validation/user-controller.validation.js +27 -65
  91. package/dist/controllers/validation/user-controller.validation.js.map +1 -1
  92. package/dist/data-source.js +74 -79
  93. package/dist/data-source.js.map +1 -1
  94. package/dist/entities/camera-stream.entity.js +49 -91
  95. package/dist/entities/camera-stream.entity.js.map +1 -1
  96. package/dist/entities/floor-position.entity.js +38 -75
  97. package/dist/entities/floor-position.entity.js.map +1 -1
  98. package/dist/entities/floor.entity.js +18 -48
  99. package/dist/entities/floor.entity.js.map +1 -1
  100. package/dist/entities/index.js +14 -66
  101. package/dist/entities/print-job.entity.js +114 -196
  102. package/dist/entities/print-job.entity.js.map +1 -1
  103. package/dist/entities/printer-maintenance-log.entity.js +61 -140
  104. package/dist/entities/printer-maintenance-log.entity.js.map +1 -1
  105. package/dist/entities/printer-tag.entity.js +33 -66
  106. package/dist/entities/printer-tag.entity.js.map +1 -1
  107. package/dist/entities/printer.entity.js +67 -124
  108. package/dist/entities/printer.entity.js.map +1 -1
  109. package/dist/entities/refresh-token.entity.js +31 -66
  110. package/dist/entities/refresh-token.entity.js.map +1 -1
  111. package/dist/entities/role.entity.js +16 -45
  112. package/dist/entities/role.entity.js.map +1 -1
  113. package/dist/entities/settings.entity.js +38 -77
  114. package/dist/entities/settings.entity.js.map +1 -1
  115. package/dist/entities/tag.entity.js +19 -43
  116. package/dist/entities/tag.entity.js.map +1 -1
  117. package/dist/entities/user-role.entity.js +30 -67
  118. package/dist/entities/user-role.entity.js.map +1 -1
  119. package/dist/entities/user.entity.js +32 -87
  120. package/dist/entities/user.entity.js.map +1 -1
  121. package/dist/exceptions/failed-dependency.exception.js +11 -18
  122. package/dist/exceptions/failed-dependency.exception.js.map +1 -1
  123. package/dist/exceptions/job.exceptions.js +9 -16
  124. package/dist/exceptions/job.exceptions.js.map +1 -1
  125. package/dist/exceptions/runtime.exceptions.js +82 -121
  126. package/dist/exceptions/runtime.exceptions.js.map +1 -1
  127. package/dist/handlers/event-emitter.js +13 -20
  128. package/dist/handlers/event-emitter.js.map +1 -1
  129. package/dist/handlers/logger-factory.js +7 -14
  130. package/dist/handlers/logger-factory.js.map +1 -1
  131. package/dist/handlers/logger.js +26 -36
  132. package/dist/handlers/logger.js.map +1 -1
  133. package/dist/handlers/logging/file-logging.transport.js +17 -31
  134. package/dist/handlers/logging/file-logging.transport.js.map +1 -1
  135. package/dist/handlers/logging/loki-logging.transport.js +34 -50
  136. package/dist/handlers/logging/loki-logging.transport.js.map +1 -1
  137. package/dist/handlers/logging/static.logger.js +83 -124
  138. package/dist/handlers/logging/static.logger.js.map +1 -1
  139. package/dist/handlers/validators.js +8 -25
  140. package/dist/handlers/validators.js.map +1 -1
  141. package/dist/index.js +23 -26
  142. package/dist/index.js.map +1 -1
  143. package/dist/middleware/authenticate.js +26 -69
  144. package/dist/middleware/authenticate.js.map +1 -1
  145. package/dist/middleware/database.js +16 -22
  146. package/dist/middleware/database.js.map +1 -1
  147. package/dist/middleware/demo.middleware.js +19 -27
  148. package/dist/middleware/demo.middleware.js.map +1 -1
  149. package/dist/middleware/exception.filter.js +109 -133
  150. package/dist/middleware/exception.filter.js.map +1 -1
  151. package/dist/middleware/global.middleware.js +28 -47
  152. package/dist/middleware/global.middleware.js.map +1 -1
  153. package/dist/middleware/param-converter.middleware.js +31 -69
  154. package/dist/middleware/param-converter.middleware.js.map +1 -1
  155. package/dist/middleware/passport.js +38 -64
  156. package/dist/middleware/passport.js.map +1 -1
  157. package/dist/middleware/printer-resolver.js +26 -33
  158. package/dist/middleware/printer-resolver.js.map +1 -1
  159. package/dist/middleware/printer.js +56 -94
  160. package/dist/middleware/printer.js.map +1 -1
  161. package/dist/middleware/slicer-api-key.middleware.js +23 -26
  162. package/dist/middleware/slicer-api-key.middleware.js.map +1 -1
  163. package/dist/middleware/socketio.middleware.js +21 -32
  164. package/dist/middleware/socketio.middleware.js.map +1 -1
  165. package/dist/migrations/1706829146617-InitSqlite.js +84 -91
  166. package/dist/migrations/1706829146617-InitSqlite.js.map +1 -1
  167. package/dist/migrations/1707494762198-PrinterGroup.js +22 -29
  168. package/dist/migrations/1707494762198-PrinterGroup.js.map +1 -1
  169. package/dist/migrations/1708465930665-ChangePrintCompletionDeletePrinterCascade.js +26 -33
  170. package/dist/migrations/1708465930665-ChangePrintCompletionDeletePrinterCascade.js.map +1 -1
  171. package/dist/migrations/1713300747465-ChangeRoleNameUnique.js +27 -34
  172. package/dist/migrations/1713300747465-ChangeRoleNameUnique.js.map +1 -1
  173. package/dist/migrations/1713897879622-AddPrinterType.js +34 -41
  174. package/dist/migrations/1713897879622-AddPrinterType.js.map +1 -1
  175. package/dist/migrations/1720338804844-RemovePrinterFile.js +12 -19
  176. package/dist/migrations/1720338804844-RemovePrinterFile.js.map +1 -1
  177. package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js +26 -33
  178. package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js.map +1 -1
  179. package/dist/migrations/1766576698569-DropPermissions.js +11 -18
  180. package/dist/migrations/1766576698569-DropPermissions.js.map +1 -1
  181. package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js +26 -33
  182. package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js.map +1 -1
  183. package/dist/migrations/1767279607392-DropCustomGcode.js +12 -19
  184. package/dist/migrations/1767279607392-DropCustomGcode.js.map +1 -1
  185. package/dist/migrations/1767291804417-DropPrintCompletions.js +12 -19
  186. package/dist/migrations/1767291804417-DropPrintCompletions.js.map +1 -1
  187. package/dist/migrations/1767352862576-DropSettingsFileClean.js +18 -25
  188. package/dist/migrations/1767352862576-DropSettingsFileClean.js.map +1 -1
  189. package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js +26 -33
  190. package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js.map +1 -1
  191. package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js +18 -25
  192. package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js.map +1 -1
  193. package/dist/migrations/1767432108916-RenameGroupToTag.js +22 -29
  194. package/dist/migrations/1767432108916-RenameGroupToTag.js.map +1 -1
  195. package/dist/migrations/1767451444137-AddPrintJob.js +20 -27
  196. package/dist/migrations/1767451444137-AddPrintJob.js.map +1 -1
  197. package/dist/migrations/1767909428129-AddPrinterMaintenanceLog.js +14 -21
  198. package/dist/migrations/1767909428129-AddPrinterMaintenanceLog.js.map +1 -1
  199. package/dist/plugins/controllers-plugin.js +21 -0
  200. package/dist/plugins/controllers-plugin.js.map +1 -0
  201. package/dist/server.constants.js +79 -91
  202. package/dist/server.constants.js.map +1 -1
  203. package/dist/server.core.js +56 -122
  204. package/dist/server.core.js.map +1 -1
  205. package/dist/server.env.js +56 -121
  206. package/dist/server.env.js.map +1 -1
  207. package/dist/server.host.js +66 -99
  208. package/dist/server.host.js.map +1 -1
  209. package/dist/services/authentication/auth.service.js +103 -126
  210. package/dist/services/authentication/auth.service.js.map +1 -1
  211. package/dist/services/authentication/jwt.service.js +23 -32
  212. package/dist/services/authentication/jwt.service.js.map +1 -1
  213. package/dist/services/bambu/bambu-ftp.adapter.js +194 -236
  214. package/dist/services/bambu/bambu-ftp.adapter.js.map +1 -1
  215. package/dist/services/bambu/bambu-mqtt.adapter.js +394 -449
  216. package/dist/services/bambu/bambu-mqtt.adapter.js.map +1 -1
  217. package/dist/services/bambu/bambu.client.js +64 -65
  218. package/dist/services/bambu/bambu.client.js.map +1 -1
  219. package/dist/services/bambu/mqtt-message.types.js +1 -6
  220. package/dist/services/bambu.api.js +230 -247
  221. package/dist/services/bambu.api.js.map +1 -1
  222. package/dist/services/core/batch-call.service.js +139 -163
  223. package/dist/services/core/batch-call.service.js.map +1 -1
  224. package/dist/services/core/client-bundle.service.js +126 -165
  225. package/dist/services/core/client-bundle.service.js.map +1 -1
  226. package/dist/services/core/config.service.js +16 -26
  227. package/dist/services/core/config.service.js.map +1 -1
  228. package/dist/services/core/cradle.service.js +11 -19
  229. package/dist/services/core/cradle.service.js.map +1 -1
  230. package/dist/services/core/github.service.js +59 -79
  231. package/dist/services/core/github.service.js.map +1 -1
  232. package/dist/services/core/http-client.factory.js +30 -38
  233. package/dist/services/core/http-client.factory.js.map +1 -1
  234. package/dist/services/core/logs-manager.service.js +61 -84
  235. package/dist/services/core/logs-manager.service.js.map +1 -1
  236. package/dist/services/core/monsterpi.service.js +26 -36
  237. package/dist/services/core/monsterpi.service.js.map +1 -1
  238. package/dist/services/core/multer.service.js +69 -129
  239. package/dist/services/core/multer.service.js.map +1 -1
  240. package/dist/services/core/server-release.service.js +77 -99
  241. package/dist/services/core/server-release.service.js.map +1 -1
  242. package/dist/services/core/yaml.service.js +443 -573
  243. package/dist/services/core/yaml.service.js.map +1 -1
  244. package/dist/services/file-analysis.service.js +134 -144
  245. package/dist/services/file-analysis.service.js.map +1 -1
  246. package/dist/services/file-storage.service.js +324 -423
  247. package/dist/services/file-storage.service.js.map +1 -1
  248. package/dist/services/interfaces/auth.service.interface.js +1 -6
  249. package/dist/services/interfaces/camera-stream.dto.js +23 -41
  250. package/dist/services/interfaces/camera-stream.dto.js.map +1 -1
  251. package/dist/services/interfaces/camera-stream.service.interface.js +1 -6
  252. package/dist/services/interfaces/file-upload-tracker.interface.js +1 -6
  253. package/dist/services/interfaces/floor.dto.js +31 -55
  254. package/dist/services/interfaces/floor.dto.js.map +1 -1
  255. package/dist/services/interfaces/floor.service.interface.js +1 -6
  256. package/dist/services/interfaces/jwt.service.interface.js +1 -6
  257. package/dist/services/interfaces/login.dto.js +10 -17
  258. package/dist/services/interfaces/login.dto.js.map +1 -1
  259. package/dist/services/interfaces/page.interface.js +5 -12
  260. package/dist/services/interfaces/page.interface.js.map +1 -1
  261. package/dist/services/interfaces/permission.service.interface.js +1 -6
  262. package/dist/services/interfaces/printer-file.dto.js +1 -6
  263. package/dist/services/interfaces/printer-maintenance-log.dto.js +1 -6
  264. package/dist/services/interfaces/printer-tag.dto.js +11 -26
  265. package/dist/services/interfaces/printer-tag.dto.js.map +1 -1
  266. package/dist/services/interfaces/printer-tag.service.interface.js +1 -6
  267. package/dist/services/interfaces/printer.dto.js +21 -36
  268. package/dist/services/interfaces/printer.dto.js.map +1 -1
  269. package/dist/services/interfaces/printer.service.interface.js +1 -6
  270. package/dist/services/interfaces/refresh-token.dto.js +9 -16
  271. package/dist/services/interfaces/refresh-token.dto.js.map +1 -1
  272. package/dist/services/interfaces/refresh-token.service.interface.js +1 -6
  273. package/dist/services/interfaces/role-service.interface.js +1 -6
  274. package/dist/services/interfaces/role.dto.js +7 -14
  275. package/dist/services/interfaces/role.dto.js.map +1 -1
  276. package/dist/services/interfaces/settings.dto.js +10 -17
  277. package/dist/services/interfaces/settings.dto.js.map +1 -1
  278. package/dist/services/interfaces/settings.service.interface.js +1 -6
  279. package/dist/services/interfaces/tag.dto.js +1 -6
  280. package/dist/services/interfaces/task.interfaces.js +1 -6
  281. package/dist/services/interfaces/user-role.dto.js +9 -16
  282. package/dist/services/interfaces/user-role.dto.js.map +1 -1
  283. package/dist/services/interfaces/user-service.interface.js +1 -6
  284. package/dist/services/interfaces/user.dto.js +22 -37
  285. package/dist/services/interfaces/user.dto.js.map +1 -1
  286. package/dist/services/moonraker/constants/moonraker-event.dto.js +16 -31
  287. package/dist/services/moonraker/constants/moonraker-event.dto.js.map +1 -1
  288. package/dist/services/moonraker/constants/moonraker.constants.js +4 -11
  289. package/dist/services/moonraker/constants/moonraker.constants.js.map +1 -1
  290. package/dist/services/moonraker/dto/access/access-info.dto.js +1 -6
  291. package/dist/services/moonraker/dto/access/access-login-refresh.dto.js +1 -6
  292. package/dist/services/moonraker/dto/access/access-login-result.dto.js +1 -6
  293. package/dist/services/moonraker/dto/access/access-user-result.dto.js +1 -6
  294. package/dist/services/moonraker/dto/access/access-user.dto.js +1 -6
  295. package/dist/services/moonraker/dto/database/database-namespace-item.dto.js +1 -6
  296. package/dist/services/moonraker/dto/database/database-namespace-list.dto.js +1 -6
  297. package/dist/services/moonraker/dto/gcode-help.dto.js +1 -6
  298. package/dist/services/moonraker/dto/gcode-store.dto.js +1 -6
  299. package/dist/services/moonraker/dto/job-queue/enqueue-job.dto.js +1 -6
  300. package/dist/services/moonraker/dto/job-queue/job-queue-status.dto.js +1 -6
  301. package/dist/services/moonraker/dto/machine/machine-device-power-device-state.dto.js +1 -6
  302. package/dist/services/moonraker/dto/machine/machine-device-power-devices.dto.js +1 -6
  303. package/dist/services/moonraker/dto/machine/machine-peripherals-canbus.dto.js +1 -6
  304. package/dist/services/moonraker/dto/machine/machine-peripherals-serial.dto.js +1 -6
  305. package/dist/services/moonraker/dto/machine/machine-peripherals-usb.dto.js +1 -6
  306. package/dist/services/moonraker/dto/machine/machine-peripherals-video.dto.js +1 -6
  307. package/dist/services/moonraker/dto/machine/machine-system-info.dto.js +1 -6
  308. package/dist/services/moonraker/dto/machine/machine-update-status.dto.js +1 -6
  309. package/dist/services/moonraker/dto/machine/machine-wled-strips.dto.js +1 -6
  310. package/dist/services/moonraker/dto/notifier-list.dto.js +1 -6
  311. package/dist/services/moonraker/dto/objects/bed-mesh.dto.js +1 -6
  312. package/dist/services/moonraker/dto/objects/configfile.dto.js +1 -6
  313. package/dist/services/moonraker/dto/objects/display-status.dto.js +1 -6
  314. package/dist/services/moonraker/dto/objects/extruder.dto.js +1 -6
  315. package/dist/services/moonraker/dto/objects/fan.dto.js +1 -6
  316. package/dist/services/moonraker/dto/objects/filament-motion-sensor.dto.js +1 -6
  317. package/dist/services/moonraker/dto/objects/filament-switch-sensor.dto.js +1 -6
  318. package/dist/services/moonraker/dto/objects/gcode-move.dto.js +1 -6
  319. package/dist/services/moonraker/dto/objects/gcode.dto.js +1 -6
  320. package/dist/services/moonraker/dto/objects/heater-bed.dto.js +1 -6
  321. package/dist/services/moonraker/dto/objects/heaters.dto.js +1 -6
  322. package/dist/services/moonraker/dto/objects/idle-timeout.dto.js +6 -21
  323. package/dist/services/moonraker/dto/objects/idle-timeout.dto.js.map +1 -1
  324. package/dist/services/moonraker/dto/objects/mcu.dto.js +1 -6
  325. package/dist/services/moonraker/dto/objects/motion-report.dto.js +1 -6
  326. package/dist/services/moonraker/dto/objects/output-pin.dto.js +1 -6
  327. package/dist/services/moonraker/dto/objects/pause-resume.dto.js +1 -6
  328. package/dist/services/moonraker/dto/objects/print-stats.dto.js +9 -24
  329. package/dist/services/moonraker/dto/objects/print-stats.dto.js.map +1 -1
  330. package/dist/services/moonraker/dto/objects/printer-object.dto.js +1 -6
  331. package/dist/services/moonraker/dto/objects/printer-object.types.js +1 -6
  332. package/dist/services/moonraker/dto/objects/printer-objects-list.dto.js +28 -43
  333. package/dist/services/moonraker/dto/objects/printer-objects-list.dto.js.map +1 -1
  334. package/dist/services/moonraker/dto/objects/printer-objects-query.dto.js +1 -6
  335. package/dist/services/moonraker/dto/objects/stepper-enable.dto.js +1 -6
  336. package/dist/services/moonraker/dto/objects/system-stats.dto.js +1 -6
  337. package/dist/services/moonraker/dto/objects/temperature-fan.dto.js +1 -6
  338. package/dist/services/moonraker/dto/objects/temperature-sensor.dto.js +1 -6
  339. package/dist/services/moonraker/dto/objects/toolhead.dto.js +1 -6
  340. package/dist/services/moonraker/dto/objects/virtual-sdcard.dto.js +1 -6
  341. package/dist/services/moonraker/dto/objects/webhooks.dto.js +1 -6
  342. package/dist/services/moonraker/dto/octoprint-compat/api-job.dto.js +1 -6
  343. package/dist/services/moonraker/dto/octoprint-compat/api-login.dto.js +1 -6
  344. package/dist/services/moonraker/dto/octoprint-compat/api-printer.dto.js +1 -6
  345. package/dist/services/moonraker/dto/octoprint-compat/api-profiles.dto.js +1 -6
  346. package/dist/services/moonraker/dto/octoprint-compat/api-settings.dto.js +1 -6
  347. package/dist/services/moonraker/dto/octoprint-compat/api-version.dto.js +1 -6
  348. package/dist/services/moonraker/dto/octoprint-compat/server-version.dto.js +1 -6
  349. package/dist/services/moonraker/dto/printer-info.dto.js +7 -22
  350. package/dist/services/moonraker/dto/printer-info.dto.js.map +1 -1
  351. package/dist/services/moonraker/dto/printer-query-endstops.dto.js +1 -6
  352. package/dist/services/moonraker/dto/process-stats.dto.js +1 -6
  353. package/dist/services/moonraker/dto/rest/action-result.dto.js +1 -6
  354. package/dist/services/moonraker/dto/rest/error.dto.js +1 -6
  355. package/dist/services/moonraker/dto/rest/result.dto.js +6 -13
  356. package/dist/services/moonraker/dto/rest/result.dto.js.map +1 -1
  357. package/dist/services/moonraker/dto/rollover-logs.dto.js +1 -6
  358. package/dist/services/moonraker/dto/rpc/json-rpc-error.dto.js +1 -6
  359. package/dist/services/moonraker/dto/rpc/json-rpc-request.dto.js +1 -6
  360. package/dist/services/moonraker/dto/rpc/json-rpc-response.dto.js +1 -6
  361. package/dist/services/moonraker/dto/server/server-config.dto.js +1 -6
  362. package/dist/services/moonraker/dto/server/server-info.dto.js +7 -14
  363. package/dist/services/moonraker/dto/server/server-info.dto.js.map +1 -1
  364. package/dist/services/moonraker/dto/server-announcements/announcement-action.dto.js +1 -6
  365. package/dist/services/moonraker/dto/server-announcements/announcement-entry-id.dto.js +1 -6
  366. package/dist/services/moonraker/dto/server-announcements/announcement-feeds.dto.js +1 -6
  367. package/dist/services/moonraker/dto/server-announcements/announcement-list.dto.js +1 -6
  368. package/dist/services/moonraker/dto/server-files/server-file-directory-action.dto.js +1 -6
  369. package/dist/services/moonraker/dto/server-files/server-file-directory-info.dto.js +1 -6
  370. package/dist/services/moonraker/dto/server-files/server-file-metadata.dto.js +1 -6
  371. package/dist/services/moonraker/dto/server-files/server-file-root.dto.js +1 -6
  372. package/dist/services/moonraker/dto/server-files/server-file-thumbnail.dto.js +1 -6
  373. package/dist/services/moonraker/dto/server-files/server-file-zip-action.dto.js +1 -6
  374. package/dist/services/moonraker/dto/server-files/server-file.dto.js +1 -6
  375. package/dist/services/moonraker/dto/server-history/history-job.dto.js +1 -6
  376. package/dist/services/moonraker/dto/server-history/history-last-totals.dto.js +1 -6
  377. package/dist/services/moonraker/dto/server-history/history-list.dto.js +1 -6
  378. package/dist/services/moonraker/dto/server-history/history-totals.dto.js +1 -6
  379. package/dist/services/moonraker/dto/server-history/job.dto.js +6 -21
  380. package/dist/services/moonraker/dto/server-history/job.dto.js.map +1 -1
  381. package/dist/services/moonraker/dto/server-sensors/sensor-info.dto.js +1 -6
  382. package/dist/services/moonraker/dto/server-sensors/sensor-list.dto.js +1 -6
  383. package/dist/services/moonraker/dto/server-sensors/sensor-measurements.dto.js +1 -6
  384. package/dist/services/moonraker/dto/server-webcams/webcam-item.dto.js +1 -6
  385. package/dist/services/moonraker/dto/server-webcams/webcam-list.dto.js +1 -6
  386. package/dist/services/moonraker/dto/server-webcams/webcam-test.dto.js +1 -6
  387. package/dist/services/moonraker/dto/spoolman/spoolman-active-spool.dto.js +1 -6
  388. package/dist/services/moonraker/dto/spoolman/spoolman-proxy-request.dto.js +1 -6
  389. package/dist/services/moonraker/dto/spoolman/spoolman-response.dto.js +1 -6
  390. package/dist/services/moonraker/dto/spoolman/spoolman-status.dto.js +1 -6
  391. package/dist/services/moonraker/dto/sudo-info.dto.js +1 -6
  392. package/dist/services/moonraker/dto/sudo-response.dto.js +1 -6
  393. package/dist/services/moonraker/dto/temperature-store.dto.js +1 -6
  394. package/dist/services/moonraker/dto/websocket/connection-identify-response.dto.js +1 -6
  395. package/dist/services/moonraker/dto/websocket/connection-identify.dto.js +1 -6
  396. package/dist/services/moonraker/dto/websocket/json-rpc-event.dto.js +1 -6
  397. package/dist/services/moonraker/dto/websocket/message.types.js +1 -6
  398. package/dist/services/moonraker/dto/websocket/methods.js +29 -44
  399. package/dist/services/moonraker/dto/websocket/methods.js.map +1 -1
  400. package/dist/services/moonraker/dto/websocket/notify-active-spool-set.params.js +1 -6
  401. package/dist/services/moonraker/dto/websocket/notify-agent-event.params.js +1 -6
  402. package/dist/services/moonraker/dto/websocket/notify-announcement-update.params.js +1 -6
  403. package/dist/services/moonraker/dto/websocket/notify-announcement.params.js +1 -6
  404. package/dist/services/moonraker/dto/websocket/notify-button-event.params.js +1 -6
  405. package/dist/services/moonraker/dto/websocket/notify-filelist-changed.params.js +11 -18
  406. package/dist/services/moonraker/dto/websocket/notify-filelist-changed.params.js.map +1 -1
  407. package/dist/services/moonraker/dto/websocket/notify-history-changed.params.js +1 -6
  408. package/dist/services/moonraker/dto/websocket/notify-job-queue-changed.params.js +1 -6
  409. package/dist/services/moonraker/dto/websocket/notify-proc-stat-update.params.js +1 -6
  410. package/dist/services/moonraker/dto/websocket/notify-sensor-update.params.js +1 -6
  411. package/dist/services/moonraker/dto/websocket/notify-service-state-changed.params.js +1 -6
  412. package/dist/services/moonraker/dto/websocket/notify-spoolman-status-changed.js +1 -6
  413. package/dist/services/moonraker/dto/websocket/notify-sudo-alert.params.js +1 -6
  414. package/dist/services/moonraker/dto/websocket/notify-update-response.params.js +7 -22
  415. package/dist/services/moonraker/dto/websocket/notify-update-response.params.js.map +1 -1
  416. package/dist/services/moonraker/dto/websocket/notify-user-change.params.js +1 -6
  417. package/dist/services/moonraker/moonraker-websocket.adapter.js +313 -348
  418. package/dist/services/moonraker/moonraker-websocket.adapter.js.map +1 -1
  419. package/dist/services/moonraker/moonraker.client.js +536 -559
  420. package/dist/services/moonraker/moonraker.client.js.map +1 -1
  421. package/dist/services/moonraker.api.js +167 -192
  422. package/dist/services/moonraker.api.js.map +1 -1
  423. package/dist/services/octoprint/constants/firmware-update-settings.constants.js +19 -28
  424. package/dist/services/octoprint/constants/firmware-update-settings.constants.js.map +1 -1
  425. package/dist/services/octoprint/constants/octoprint-service.constants.js +3 -30
  426. package/dist/services/octoprint/constants/octoprint-service.constants.js.map +1 -1
  427. package/dist/services/octoprint/constants/octoprint-websocket.constants.js +41 -56
  428. package/dist/services/octoprint/constants/octoprint-websocket.constants.js.map +1 -1
  429. package/dist/services/octoprint/dto/access/user-list.dto.js +1 -6
  430. package/dist/services/octoprint/dto/access/user.dto.js +1 -6
  431. package/dist/services/octoprint/dto/auth/current-user.dto.js +1 -6
  432. package/dist/services/octoprint/dto/auth/login.dto.js +1 -6
  433. package/dist/services/octoprint/dto/connection/connection-state.type.js +23 -30
  434. package/dist/services/octoprint/dto/connection/connection-state.type.js.map +1 -1
  435. package/dist/services/octoprint/dto/connection/connection.dto.js +1 -6
  436. package/dist/services/octoprint/dto/events/client-authed.dto.js +1 -6
  437. package/dist/services/octoprint/dto/events/client-closed.dto.js +1 -6
  438. package/dist/services/octoprint/dto/events/client-opened.dto.js +1 -6
  439. package/dist/services/octoprint/dto/events/dwelling.dto.js +1 -6
  440. package/dist/services/octoprint/dto/events/file-added.dto.js +1 -6
  441. package/dist/services/octoprint/dto/events/file-deselected.dto.js +1 -6
  442. package/dist/services/octoprint/dto/events/file-removed.dto.js +1 -6
  443. package/dist/services/octoprint/dto/events/folder-added.dto.js +1 -6
  444. package/dist/services/octoprint/dto/events/home.dto.js +1 -6
  445. package/dist/services/octoprint/dto/events/metadata-analysis-finished.dto.js +1 -6
  446. package/dist/services/octoprint/dto/events/metadata-analysis-started.dto.js +1 -6
  447. package/dist/services/octoprint/dto/events/metadata-statistics-updated.dto.js +1 -6
  448. package/dist/services/octoprint/dto/events/position-update.dto.js +1 -6
  449. package/dist/services/octoprint/dto/events/print-cancelled.dto.js +1 -6
  450. package/dist/services/octoprint/dto/events/print-cancelling.dto.js +1 -6
  451. package/dist/services/octoprint/dto/events/print-done.dto.js +1 -6
  452. package/dist/services/octoprint/dto/events/print-failed.dto.js +1 -6
  453. package/dist/services/octoprint/dto/events/print-paused.dto.js +1 -6
  454. package/dist/services/octoprint/dto/events/print-resumed.dto.js +1 -6
  455. package/dist/services/octoprint/dto/events/print-started.dto.js +1 -6
  456. package/dist/services/octoprint/dto/events/printer-state-changed.dto.js +1 -6
  457. package/dist/services/octoprint/dto/events/transfer-done.dto.js +1 -6
  458. package/dist/services/octoprint/dto/events/transfer-started.dto.js +1 -6
  459. package/dist/services/octoprint/dto/events/updated-files.dto.js +1 -6
  460. package/dist/services/octoprint/dto/events/upload.dto.js +1 -6
  461. package/dist/services/octoprint/dto/events/user-logged-in.dto.js +1 -6
  462. package/dist/services/octoprint/dto/events/z-change.dto.js +1 -6
  463. package/dist/services/octoprint/dto/files/gcode-analysis.dto.js +1 -6
  464. package/dist/services/octoprint/dto/files/octoprint-file.dto.js +1 -6
  465. package/dist/services/octoprint/dto/files/octoprint-files-response.dto.js +1 -6
  466. package/dist/services/octoprint/dto/job/current-job.dto.js +8 -15
  467. package/dist/services/octoprint/dto/job/current-job.dto.js.map +1 -1
  468. package/dist/services/octoprint/dto/job/job.dto.js +1 -6
  469. package/dist/services/octoprint/dto/octoprint-event.dto.js +21 -39
  470. package/dist/services/octoprint/dto/octoprint-event.dto.js.map +1 -1
  471. package/dist/services/octoprint/dto/printer/busy-file.dto.js +1 -6
  472. package/dist/services/octoprint/dto/printer/current-printer-state.dto.js +1 -6
  473. package/dist/services/octoprint/dto/printer/flags.dto.js +1 -6
  474. package/dist/services/octoprint/dto/printer/markings.dto.js +1 -6
  475. package/dist/services/octoprint/dto/printer/progress.dto.js +1 -6
  476. package/dist/services/octoprint/dto/printer/resends.dto.js +1 -6
  477. package/dist/services/octoprint/dto/printer/state.dto.js +1 -6
  478. package/dist/services/octoprint/dto/printer/temps.dto.js +1 -6
  479. package/dist/services/octoprint/dto/rest/error.dto.js +1 -6
  480. package/dist/services/octoprint/dto/server/server.dto.js +1 -6
  481. package/dist/services/octoprint/dto/server/version.dto.js +1 -6
  482. package/dist/services/octoprint/dto/settings/serial-settings.dto.js +1 -6
  483. package/dist/services/octoprint/dto/settings/settings-parts.type.js +1 -6
  484. package/dist/services/octoprint/dto/settings/settings.dto.js +1 -6
  485. package/dist/services/octoprint/dto/settings/virtual-printer-settings.dto.js +1 -6
  486. package/dist/services/octoprint/dto/system/system-info.dto.js +32 -39
  487. package/dist/services/octoprint/dto/system/system-info.dto.js.map +1 -1
  488. package/dist/services/octoprint/dto/websocket/connection-message.dto.js +1 -6
  489. package/dist/services/octoprint/dto/websocket/current-message.dto.js +1 -6
  490. package/dist/services/octoprint/dto/websocket/event-message.dto.js +1 -6
  491. package/dist/services/octoprint/dto/websocket/event.type.js +42 -49
  492. package/dist/services/octoprint/dto/websocket/event.type.js.map +1 -1
  493. package/dist/services/octoprint/dto/websocket/history-message.dto.js +1 -6
  494. package/dist/services/octoprint/dto/websocket/plugin-message.dto.js +1 -6
  495. package/dist/services/octoprint/dto/websocket/timelapse-message.dto.js +1 -6
  496. package/dist/services/octoprint/octoprint-api.routes.js +77 -94
  497. package/dist/services/octoprint/octoprint-api.routes.js.map +1 -1
  498. package/dist/services/octoprint/octoprint-websocket.adapter.js +265 -315
  499. package/dist/services/octoprint/octoprint-websocket.adapter.js.map +1 -1
  500. package/dist/services/octoprint/octoprint.client.js +220 -261
  501. package/dist/services/octoprint/octoprint.client.js.map +1 -1
  502. package/dist/services/octoprint/utils/api.utils.js +15 -32
  503. package/dist/services/octoprint/utils/api.utils.js.map +1 -1
  504. package/dist/services/octoprint/utils/file.utils.js +44 -67
  505. package/dist/services/octoprint/utils/file.utils.js.map +1 -1
  506. package/dist/services/octoprint/utils/octoprint-http-client.builder.js +16 -29
  507. package/dist/services/octoprint/utils/octoprint-http-client.builder.js.map +1 -1
  508. package/dist/services/octoprint.api.js +113 -128
  509. package/dist/services/octoprint.api.js.map +1 -1
  510. package/dist/services/orm/base.interface.js +1 -6
  511. package/dist/services/orm/base.service.js +57 -73
  512. package/dist/services/orm/base.service.js.map +1 -1
  513. package/dist/services/orm/camera-stream.service.js +21 -27
  514. package/dist/services/orm/camera-stream.service.js.map +1 -1
  515. package/dist/services/orm/floor-position.service.js +42 -49
  516. package/dist/services/orm/floor-position.service.js.map +1 -1
  517. package/dist/services/orm/floor.service.js +110 -138
  518. package/dist/services/orm/floor.service.js.map +1 -1
  519. package/dist/services/orm/permission.service.js +16 -23
  520. package/dist/services/orm/permission.service.js.map +1 -1
  521. package/dist/services/orm/print-job.service.js +443 -545
  522. package/dist/services/orm/print-job.service.js.map +1 -1
  523. package/dist/services/orm/printer-maintenance-log.service.js +102 -149
  524. package/dist/services/orm/printer-maintenance-log.service.js.map +1 -1
  525. package/dist/services/orm/printer-tag.service.js +93 -118
  526. package/dist/services/orm/printer-tag.service.js.map +1 -1
  527. package/dist/services/orm/printer.service.js +110 -158
  528. package/dist/services/orm/printer.service.js.map +1 -1
  529. package/dist/services/orm/refresh-token.service.js +69 -99
  530. package/dist/services/orm/refresh-token.service.js.map +1 -1
  531. package/dist/services/orm/role.service.js +99 -116
  532. package/dist/services/orm/role.service.js.map +1 -1
  533. package/dist/services/orm/settings.service.js +84 -94
  534. package/dist/services/orm/settings.service.js.map +1 -1
  535. package/dist/services/orm/user-role.service.js +39 -53
  536. package/dist/services/orm/user-role.service.js.map +1 -1
  537. package/dist/services/orm/user.service.js +142 -189
  538. package/dist/services/orm/user.service.js.map +1 -1
  539. package/dist/services/print-file-downloader.service.js +153 -167
  540. package/dist/services/print-file-downloader.service.js.map +1 -1
  541. package/dist/services/print-queue.service.js +240 -326
  542. package/dist/services/print-queue.service.js.map +1 -1
  543. package/dist/services/printer-api.factory.js +26 -43
  544. package/dist/services/printer-api.factory.js.map +1 -1
  545. package/dist/services/printer-api.interface.js +23 -53
  546. package/dist/services/printer-api.interface.js.map +1 -1
  547. package/dist/services/prusa-link/constants/prusalink-event.dto.js +9 -16
  548. package/dist/services/prusa-link/constants/prusalink-event.dto.js.map +1 -1
  549. package/dist/services/prusa-link/constants/prusalink.constants.js +4 -11
  550. package/dist/services/prusa-link/constants/prusalink.constants.js.map +1 -1
  551. package/dist/services/prusa-link/dto/file-response.dto.js +1 -6
  552. package/dist/services/prusa-link/dto/file.dto.js +1 -6
  553. package/dist/services/prusa-link/dto/job-state.dto.js +1 -6
  554. package/dist/services/prusa-link/dto/printer-state.dto.js +1 -6
  555. package/dist/services/prusa-link/dto/status.dto.js +1 -6
  556. package/dist/services/prusa-link/dto/version.dto.js +1 -6
  557. package/dist/services/prusa-link/prusa-link-http-polling.adapter.js +141 -157
  558. package/dist/services/prusa-link/prusa-link-http-polling.adapter.js.map +1 -1
  559. package/dist/services/prusa-link/prusa-link.api.js +206 -240
  560. package/dist/services/prusa-link/prusa-link.api.js.map +1 -1
  561. package/dist/services/prusa-link/utils/digest-auth.params.js +1 -6
  562. package/dist/services/prusa-link/utils/digest-auth.util.js +17 -24
  563. package/dist/services/prusa-link/utils/digest-auth.util.js.map +1 -1
  564. package/dist/services/prusa-link/utils/prusa-link-http-client.builder.js +92 -129
  565. package/dist/services/prusa-link/utils/prusa-link-http-client.builder.js.map +1 -1
  566. package/dist/services/socket.factory.js +21 -36
  567. package/dist/services/socket.factory.js.map +1 -1
  568. package/dist/services/task-manager.service.js +190 -174
  569. package/dist/services/task-manager.service.js.map +1 -1
  570. package/dist/services/typeorm/typeorm.service.js +31 -46
  571. package/dist/services/typeorm/typeorm.service.js.map +1 -1
  572. package/dist/services/validators/floor-service.validation.js +26 -63
  573. package/dist/services/validators/floor-service.validation.js.map +1 -1
  574. package/dist/services/validators/print-job.validation.js +11 -26
  575. package/dist/services/validators/print-job.validation.js.map +1 -1
  576. package/dist/services/validators/printer-maintenance-log.validation.js +17 -37
  577. package/dist/services/validators/printer-maintenance-log.validation.js.map +1 -1
  578. package/dist/services/validators/printer-service.validation.js +60 -125
  579. package/dist/services/validators/printer-service.validation.js.map +1 -1
  580. package/dist/services/validators/settings-service.validation.js +46 -106
  581. package/dist/services/validators/settings-service.validation.js.map +1 -1
  582. package/dist/services/validators/user-service.validation.js +19 -36
  583. package/dist/services/validators/user-service.validation.js.map +1 -1
  584. package/dist/services/validators/yaml-service.validation.js +96 -132
  585. package/dist/services/validators/yaml-service.validation.js.map +1 -1
  586. package/dist/services/websocket-adapter.interface.js +1 -6
  587. package/dist/shared/default-http-client.builder.js +74 -92
  588. package/dist/shared/default-http-client.builder.js.map +1 -1
  589. package/dist/shared/dtos/api-state.type.js +8 -15
  590. package/dist/shared/dtos/api-state.type.js.map +1 -1
  591. package/dist/shared/dtos/socket-login.dto.js +1 -6
  592. package/dist/shared/dtos/socket-state.type.js +11 -18
  593. package/dist/shared/dtos/socket-state.type.js.map +1 -1
  594. package/dist/shared/load-controllers.js +41 -19
  595. package/dist/shared/load-controllers.js.map +1 -1
  596. package/dist/shared/runtime-settings.migration.js +43 -50
  597. package/dist/shared/runtime-settings.migration.js.map +1 -1
  598. package/dist/shared/websocket-rpc-extended.adapter.js +74 -75
  599. package/dist/shared/websocket-rpc-extended.adapter.js.map +1 -1
  600. package/dist/shared/websocket.adapter.js +78 -63
  601. package/dist/shared/websocket.adapter.js.map +1 -1
  602. package/dist/state/file-upload-tracker.cache.js +63 -75
  603. package/dist/state/file-upload-tracker.cache.js.map +1 -1
  604. package/dist/state/floor.store.js +77 -89
  605. package/dist/state/floor.store.js.map +1 -1
  606. package/dist/state/printer-events.cache.js +237 -295
  607. package/dist/state/printer-events.cache.js.map +1 -1
  608. package/dist/state/printer-socket.store.js +156 -174
  609. package/dist/state/printer-socket.store.js.map +1 -1
  610. package/dist/state/printer-thumbnail.cache.js +129 -130
  611. package/dist/state/printer-thumbnail.cache.js.map +1 -1
  612. package/dist/state/printer.cache.js +87 -102
  613. package/dist/state/printer.cache.js.map +1 -1
  614. package/dist/state/settings.store.js +211 -234
  615. package/dist/state/settings.store.js.map +1 -1
  616. package/dist/state/socket-io.gateway.js +58 -87
  617. package/dist/state/socket-io.gateway.js.map +1 -1
  618. package/dist/state/test-printer-socket.store.js +116 -137
  619. package/dist/state/test-printer-socket.store.js.map +1 -1
  620. package/dist/state/validation/create-test-printer.validation.js +14 -21
  621. package/dist/state/validation/create-test-printer.validation.js.map +1 -1
  622. package/dist/task.presets.js +30 -37
  623. package/dist/task.presets.js.map +1 -1
  624. package/dist/tasks/boot.task.js +100 -128
  625. package/dist/tasks/boot.task.js.map +1 -1
  626. package/dist/tasks/client-bundle.task.js +20 -28
  627. package/dist/tasks/client-bundle.task.js.map +1 -1
  628. package/dist/tasks/print-job-analysis.task.js +88 -113
  629. package/dist/tasks/print-job-analysis.task.js.map +1 -1
  630. package/dist/tasks/printer-websocket-restore.task.js +41 -54
  631. package/dist/tasks/printer-websocket-restore.task.js.map +1 -1
  632. package/dist/tasks/printer-websocket.task.js +11 -19
  633. package/dist/tasks/printer-websocket.task.js.map +1 -1
  634. package/dist/tasks/socketio.task.js +35 -53
  635. package/dist/tasks/socketio.task.js.map +1 -1
  636. package/dist/tasks/software-update.task.js +12 -20
  637. package/dist/tasks/software-update.task.js.map +1 -1
  638. package/dist/tasks.js +27 -41
  639. package/dist/tasks.js.map +1 -1
  640. package/dist/types/express/index.d.js +1 -6
  641. package/dist/types/virtual-modules.d.js +1 -0
  642. package/dist/utils/array.util.js +9 -24
  643. package/dist/utils/array.util.js.map +1 -1
  644. package/dist/utils/bgcode/bgcode-thumbnail.parser.js +26 -44
  645. package/dist/utils/bgcode/bgcode-thumbnail.parser.js.map +1 -1
  646. package/dist/utils/bgcode/bgcode.constants.js +9 -45
  647. package/dist/utils/bgcode/bgcode.constants.js.map +1 -1
  648. package/dist/utils/bgcode/bgcode.types.js +57 -106
  649. package/dist/utils/bgcode/bgcode.types.js.map +1 -1
  650. package/dist/utils/bgcode/bgcode.utils.js +167 -256
  651. package/dist/utils/bgcode/bgcode.utils.js.map +1 -1
  652. package/dist/utils/bgcode/heatshrink-decoder.js +130 -170
  653. package/dist/utils/bgcode/heatshrink-decoder.js.map +1 -1
  654. package/dist/utils/bgcode/png-encoder.js +53 -66
  655. package/dist/utils/bgcode/png-encoder.js.map +1 -1
  656. package/dist/utils/bgcode/qoi-decoder.js +116 -135
  657. package/dist/utils/bgcode/qoi-decoder.js.map +1 -1
  658. package/dist/utils/cache/key-diff.cache.js +56 -85
  659. package/dist/utils/cache/key-diff.cache.js.map +1 -1
  660. package/dist/utils/correlation-token.util.js +4 -11
  661. package/dist/utils/correlation-token.util.js.map +1 -1
  662. package/dist/utils/crypto.utils.js +7 -23
  663. package/dist/utils/crypto.utils.js.map +1 -1
  664. package/dist/utils/env.utils.js +14 -49
  665. package/dist/utils/env.utils.js.map +1 -1
  666. package/dist/utils/error.utils.js +4 -11
  667. package/dist/utils/error.utils.js.map +1 -1
  668. package/dist/utils/fs.utils.js +26 -49
  669. package/dist/utils/fs.utils.js.map +1 -1
  670. package/dist/utils/gcode.utils.js +30 -43
  671. package/dist/utils/gcode.utils.js.map +1 -1
  672. package/dist/utils/image-dimensions.js +39 -54
  673. package/dist/utils/image-dimensions.js.map +1 -1
  674. package/dist/utils/job-stats.util.js +41 -72
  675. package/dist/utils/job-stats.util.js.map +1 -1
  676. package/dist/utils/normalize-url.js +135 -203
  677. package/dist/utils/normalize-url.js.map +1 -1
  678. package/dist/utils/parsers/3mf.parser.js +298 -365
  679. package/dist/utils/parsers/3mf.parser.js.map +1 -1
  680. package/dist/utils/parsers/bgcode.parser.js +149 -202
  681. package/dist/utils/parsers/bgcode.parser.js.map +1 -1
  682. package/dist/utils/parsers/gcode.parser.js +200 -263
  683. package/dist/utils/parsers/gcode.parser.js.map +1 -1
  684. package/dist/utils/parsers/parser.types.js +1 -6
  685. package/dist/utils/pretty-print.utils.js +5 -20
  686. package/dist/utils/pretty-print.utils.js.map +1 -1
  687. package/dist/utils/semver.utils.js +10 -26
  688. package/dist/utils/semver.utils.js.map +1 -1
  689. package/dist/utils/swagger/decorators.js +14 -32
  690. package/dist/utils/swagger/decorators.js.map +1 -1
  691. package/dist/utils/swagger/generator.js +151 -194
  692. package/dist/utils/swagger/generator.js.map +1 -1
  693. package/dist/utils/swagger/swagger.js +40 -51
  694. package/dist/utils/swagger/swagger.js.map +1 -1
  695. package/dist/utils/thumbnail.util.js +11 -20
  696. package/dist/utils/thumbnail.util.js.map +1 -1
  697. package/dist/utils/time.utils.js +4 -12
  698. package/dist/utils/time.utils.js.map +1 -1
  699. package/dist/utils/url.utils.js +9 -27
  700. package/dist/utils/url.utils.js.map +1 -1
  701. package/package.json +79 -90
  702. package/packages/consoles/package.json +44 -0
  703. package/packages/consoles/tsconfig.json +23 -0
  704. package/packages/consoles/vite.config.ts +15 -0
  705. package/tsconfig.json +10 -6
  706. package/vite.config.ts +62 -0
  707. package/.swcrc +0 -33
  708. package/.yarn/releases/yarn-4.12.0.cjs +0 -942
  709. package/biome.json +0 -36
  710. package/dist/consoles/bambu-mqtt-diagnostic.console.js +0 -565
  711. package/dist/consoles/bambu-mqtt-diagnostic.console.js.map +0 -1
  712. package/dist/consoles/download-github-releases.js +0 -50
  713. package/dist/consoles/download-github-releases.js.map +0 -1
  714. package/dist/consoles/gcode-scanner-poc.console.js +0 -52
  715. package/dist/consoles/gcode-scanner-poc.console.js.map +0 -1
  716. package/dist/consoles/launch-http-servers.js +0 -31
  717. package/dist/consoles/launch-http-servers.js.map +0 -1
  718. package/dist/consoles/mock-bambu.server.js +0 -319
  719. package/dist/consoles/mock-bambu.server.js.map +0 -1
  720. package/dist/consoles/mock-camera/default-image.js +0 -13
  721. package/dist/consoles/mock-camera/default-image.js.map +0 -1
  722. package/dist/consoles/mock-camera/mock-camera.server.js +0 -160
  723. package/dist/consoles/mock-camera/mock-camera.server.js.map +0 -1
  724. package/dist/consoles/mock-octoprint.server.js +0 -499
  725. package/dist/consoles/mock-octoprint.server.js.map +0 -1
  726. package/dist/consoles/mock-prusalink.server.js +0 -57
  727. package/dist/consoles/mock-prusalink.server.js.map +0 -1
  728. package/dist/consoles/moonraker-test.console.js +0 -3
  729. package/dist/consoles/moonraker-test.console.js.map +0 -1
  730. package/dist/consoles/utils/api-messages.js +0 -856
  731. package/dist/consoles/utils/api-messages.js.map +0 -1
  732. package/dist/consoles/utils/delayed-memory.storage.js +0 -42
  733. package/dist/consoles/utils/delayed-memory.storage.js.map +0 -1
  734. package/dist/consoles/utils/ws-messages.js +0 -88
  735. package/dist/consoles/utils/ws-messages.js.map +0 -1
  736. package/dist/entities/index.js.map +0 -1
  737. package/dist/services/bambu/mqtt-message.types.js.map +0 -1
  738. package/dist/services/interfaces/auth.service.interface.js.map +0 -1
  739. package/dist/services/interfaces/camera-stream.service.interface.js.map +0 -1
  740. package/dist/services/interfaces/file-upload-tracker.interface.js.map +0 -1
  741. package/dist/services/interfaces/floor.service.interface.js.map +0 -1
  742. package/dist/services/interfaces/jwt.service.interface.js.map +0 -1
  743. package/dist/services/interfaces/permission.service.interface.js.map +0 -1
  744. package/dist/services/interfaces/printer-file.dto.js.map +0 -1
  745. package/dist/services/interfaces/printer-maintenance-log.dto.js.map +0 -1
  746. package/dist/services/interfaces/printer-tag.service.interface.js.map +0 -1
  747. package/dist/services/interfaces/printer.service.interface.js.map +0 -1
  748. package/dist/services/interfaces/refresh-token.service.interface.js.map +0 -1
  749. package/dist/services/interfaces/role-service.interface.js.map +0 -1
  750. package/dist/services/interfaces/settings.service.interface.js.map +0 -1
  751. package/dist/services/interfaces/tag.dto.js.map +0 -1
  752. package/dist/services/interfaces/task.interfaces.js.map +0 -1
  753. package/dist/services/interfaces/user-service.interface.js.map +0 -1
  754. package/dist/services/moonraker/dto/access/access-info.dto.js.map +0 -1
  755. package/dist/services/moonraker/dto/access/access-login-refresh.dto.js.map +0 -1
  756. package/dist/services/moonraker/dto/access/access-login-result.dto.js.map +0 -1
  757. package/dist/services/moonraker/dto/access/access-user-result.dto.js.map +0 -1
  758. package/dist/services/moonraker/dto/access/access-user.dto.js.map +0 -1
  759. package/dist/services/moonraker/dto/database/database-namespace-item.dto.js.map +0 -1
  760. package/dist/services/moonraker/dto/database/database-namespace-list.dto.js.map +0 -1
  761. package/dist/services/moonraker/dto/gcode-help.dto.js.map +0 -1
  762. package/dist/services/moonraker/dto/gcode-store.dto.js.map +0 -1
  763. package/dist/services/moonraker/dto/job-queue/enqueue-job.dto.js.map +0 -1
  764. package/dist/services/moonraker/dto/job-queue/job-queue-status.dto.js.map +0 -1
  765. package/dist/services/moonraker/dto/machine/machine-device-power-device-state.dto.js.map +0 -1
  766. package/dist/services/moonraker/dto/machine/machine-device-power-devices.dto.js.map +0 -1
  767. package/dist/services/moonraker/dto/machine/machine-peripherals-canbus.dto.js.map +0 -1
  768. package/dist/services/moonraker/dto/machine/machine-peripherals-serial.dto.js.map +0 -1
  769. package/dist/services/moonraker/dto/machine/machine-peripherals-usb.dto.js.map +0 -1
  770. package/dist/services/moonraker/dto/machine/machine-peripherals-video.dto.js.map +0 -1
  771. package/dist/services/moonraker/dto/machine/machine-system-info.dto.js.map +0 -1
  772. package/dist/services/moonraker/dto/machine/machine-update-status.dto.js.map +0 -1
  773. package/dist/services/moonraker/dto/machine/machine-wled-strips.dto.js.map +0 -1
  774. package/dist/services/moonraker/dto/notifier-list.dto.js.map +0 -1
  775. package/dist/services/moonraker/dto/objects/bed-mesh.dto.js.map +0 -1
  776. package/dist/services/moonraker/dto/objects/configfile.dto.js.map +0 -1
  777. package/dist/services/moonraker/dto/objects/display-status.dto.js.map +0 -1
  778. package/dist/services/moonraker/dto/objects/extruder.dto.js.map +0 -1
  779. package/dist/services/moonraker/dto/objects/fan.dto.js.map +0 -1
  780. package/dist/services/moonraker/dto/objects/filament-motion-sensor.dto.js.map +0 -1
  781. package/dist/services/moonraker/dto/objects/filament-switch-sensor.dto.js.map +0 -1
  782. package/dist/services/moonraker/dto/objects/gcode-move.dto.js.map +0 -1
  783. package/dist/services/moonraker/dto/objects/gcode.dto.js.map +0 -1
  784. package/dist/services/moonraker/dto/objects/heater-bed.dto.js.map +0 -1
  785. package/dist/services/moonraker/dto/objects/heaters.dto.js.map +0 -1
  786. package/dist/services/moonraker/dto/objects/mcu.dto.js.map +0 -1
  787. package/dist/services/moonraker/dto/objects/motion-report.dto.js.map +0 -1
  788. package/dist/services/moonraker/dto/objects/output-pin.dto.js.map +0 -1
  789. package/dist/services/moonraker/dto/objects/pause-resume.dto.js.map +0 -1
  790. package/dist/services/moonraker/dto/objects/printer-object.dto.js.map +0 -1
  791. package/dist/services/moonraker/dto/objects/printer-object.types.js.map +0 -1
  792. package/dist/services/moonraker/dto/objects/printer-objects-query.dto.js.map +0 -1
  793. package/dist/services/moonraker/dto/objects/stepper-enable.dto.js.map +0 -1
  794. package/dist/services/moonraker/dto/objects/system-stats.dto.js.map +0 -1
  795. package/dist/services/moonraker/dto/objects/temperature-fan.dto.js.map +0 -1
  796. package/dist/services/moonraker/dto/objects/temperature-sensor.dto.js.map +0 -1
  797. package/dist/services/moonraker/dto/objects/toolhead.dto.js.map +0 -1
  798. package/dist/services/moonraker/dto/objects/virtual-sdcard.dto.js.map +0 -1
  799. package/dist/services/moonraker/dto/objects/webhooks.dto.js.map +0 -1
  800. package/dist/services/moonraker/dto/octoprint-compat/api-job.dto.js.map +0 -1
  801. package/dist/services/moonraker/dto/octoprint-compat/api-login.dto.js.map +0 -1
  802. package/dist/services/moonraker/dto/octoprint-compat/api-printer.dto.js.map +0 -1
  803. package/dist/services/moonraker/dto/octoprint-compat/api-profiles.dto.js.map +0 -1
  804. package/dist/services/moonraker/dto/octoprint-compat/api-settings.dto.js.map +0 -1
  805. package/dist/services/moonraker/dto/octoprint-compat/api-version.dto.js.map +0 -1
  806. package/dist/services/moonraker/dto/octoprint-compat/server-version.dto.js.map +0 -1
  807. package/dist/services/moonraker/dto/printer-query-endstops.dto.js.map +0 -1
  808. package/dist/services/moonraker/dto/process-stats.dto.js.map +0 -1
  809. package/dist/services/moonraker/dto/rest/action-result.dto.js.map +0 -1
  810. package/dist/services/moonraker/dto/rest/error.dto.js.map +0 -1
  811. package/dist/services/moonraker/dto/rollover-logs.dto.js.map +0 -1
  812. package/dist/services/moonraker/dto/rpc/json-rpc-error.dto.js.map +0 -1
  813. package/dist/services/moonraker/dto/rpc/json-rpc-request.dto.js.map +0 -1
  814. package/dist/services/moonraker/dto/rpc/json-rpc-response.dto.js.map +0 -1
  815. package/dist/services/moonraker/dto/server/server-config.dto.js.map +0 -1
  816. package/dist/services/moonraker/dto/server-announcements/announcement-action.dto.js.map +0 -1
  817. package/dist/services/moonraker/dto/server-announcements/announcement-entry-id.dto.js.map +0 -1
  818. package/dist/services/moonraker/dto/server-announcements/announcement-feeds.dto.js.map +0 -1
  819. package/dist/services/moonraker/dto/server-announcements/announcement-list.dto.js.map +0 -1
  820. package/dist/services/moonraker/dto/server-files/server-file-directory-action.dto.js.map +0 -1
  821. package/dist/services/moonraker/dto/server-files/server-file-directory-info.dto.js.map +0 -1
  822. package/dist/services/moonraker/dto/server-files/server-file-metadata.dto.js.map +0 -1
  823. package/dist/services/moonraker/dto/server-files/server-file-root.dto.js.map +0 -1
  824. package/dist/services/moonraker/dto/server-files/server-file-thumbnail.dto.js.map +0 -1
  825. package/dist/services/moonraker/dto/server-files/server-file-zip-action.dto.js.map +0 -1
  826. package/dist/services/moonraker/dto/server-files/server-file.dto.js.map +0 -1
  827. package/dist/services/moonraker/dto/server-history/history-job.dto.js.map +0 -1
  828. package/dist/services/moonraker/dto/server-history/history-last-totals.dto.js.map +0 -1
  829. package/dist/services/moonraker/dto/server-history/history-list.dto.js.map +0 -1
  830. package/dist/services/moonraker/dto/server-history/history-totals.dto.js.map +0 -1
  831. package/dist/services/moonraker/dto/server-sensors/sensor-info.dto.js.map +0 -1
  832. package/dist/services/moonraker/dto/server-sensors/sensor-list.dto.js.map +0 -1
  833. package/dist/services/moonraker/dto/server-sensors/sensor-measurements.dto.js.map +0 -1
  834. package/dist/services/moonraker/dto/server-webcams/webcam-item.dto.js.map +0 -1
  835. package/dist/services/moonraker/dto/server-webcams/webcam-list.dto.js.map +0 -1
  836. package/dist/services/moonraker/dto/server-webcams/webcam-test.dto.js.map +0 -1
  837. package/dist/services/moonraker/dto/spoolman/spoolman-active-spool.dto.js.map +0 -1
  838. package/dist/services/moonraker/dto/spoolman/spoolman-proxy-request.dto.js.map +0 -1
  839. package/dist/services/moonraker/dto/spoolman/spoolman-response.dto.js.map +0 -1
  840. package/dist/services/moonraker/dto/spoolman/spoolman-status.dto.js.map +0 -1
  841. package/dist/services/moonraker/dto/sudo-info.dto.js.map +0 -1
  842. package/dist/services/moonraker/dto/sudo-response.dto.js.map +0 -1
  843. package/dist/services/moonraker/dto/temperature-store.dto.js.map +0 -1
  844. package/dist/services/moonraker/dto/websocket/connection-identify-response.dto.js.map +0 -1
  845. package/dist/services/moonraker/dto/websocket/connection-identify.dto.js.map +0 -1
  846. package/dist/services/moonraker/dto/websocket/json-rpc-event.dto.js.map +0 -1
  847. package/dist/services/moonraker/dto/websocket/message.types.js.map +0 -1
  848. package/dist/services/moonraker/dto/websocket/notify-active-spool-set.params.js.map +0 -1
  849. package/dist/services/moonraker/dto/websocket/notify-agent-event.params.js.map +0 -1
  850. package/dist/services/moonraker/dto/websocket/notify-announcement-update.params.js.map +0 -1
  851. package/dist/services/moonraker/dto/websocket/notify-announcement.params.js.map +0 -1
  852. package/dist/services/moonraker/dto/websocket/notify-button-event.params.js.map +0 -1
  853. package/dist/services/moonraker/dto/websocket/notify-history-changed.params.js.map +0 -1
  854. package/dist/services/moonraker/dto/websocket/notify-job-queue-changed.params.js.map +0 -1
  855. package/dist/services/moonraker/dto/websocket/notify-proc-stat-update.params.js.map +0 -1
  856. package/dist/services/moonraker/dto/websocket/notify-sensor-update.params.js.map +0 -1
  857. package/dist/services/moonraker/dto/websocket/notify-service-state-changed.params.js.map +0 -1
  858. package/dist/services/moonraker/dto/websocket/notify-spoolman-status-changed.js.map +0 -1
  859. package/dist/services/moonraker/dto/websocket/notify-sudo-alert.params.js.map +0 -1
  860. package/dist/services/moonraker/dto/websocket/notify-user-change.params.js.map +0 -1
  861. package/dist/services/octoprint/dto/access/user-list.dto.js.map +0 -1
  862. package/dist/services/octoprint/dto/access/user.dto.js.map +0 -1
  863. package/dist/services/octoprint/dto/auth/current-user.dto.js.map +0 -1
  864. package/dist/services/octoprint/dto/auth/login.dto.js.map +0 -1
  865. package/dist/services/octoprint/dto/connection/connection.dto.js.map +0 -1
  866. package/dist/services/octoprint/dto/events/client-authed.dto.js.map +0 -1
  867. package/dist/services/octoprint/dto/events/client-closed.dto.js.map +0 -1
  868. package/dist/services/octoprint/dto/events/client-opened.dto.js.map +0 -1
  869. package/dist/services/octoprint/dto/events/dwelling.dto.js.map +0 -1
  870. package/dist/services/octoprint/dto/events/file-added.dto.js.map +0 -1
  871. package/dist/services/octoprint/dto/events/file-deselected.dto.js.map +0 -1
  872. package/dist/services/octoprint/dto/events/file-removed.dto.js.map +0 -1
  873. package/dist/services/octoprint/dto/events/folder-added.dto.js.map +0 -1
  874. package/dist/services/octoprint/dto/events/home.dto.js.map +0 -1
  875. package/dist/services/octoprint/dto/events/metadata-analysis-finished.dto.js.map +0 -1
  876. package/dist/services/octoprint/dto/events/metadata-analysis-started.dto.js.map +0 -1
  877. package/dist/services/octoprint/dto/events/metadata-statistics-updated.dto.js.map +0 -1
  878. package/dist/services/octoprint/dto/events/position-update.dto.js.map +0 -1
  879. package/dist/services/octoprint/dto/events/print-cancelled.dto.js.map +0 -1
  880. package/dist/services/octoprint/dto/events/print-cancelling.dto.js.map +0 -1
  881. package/dist/services/octoprint/dto/events/print-done.dto.js.map +0 -1
  882. package/dist/services/octoprint/dto/events/print-failed.dto.js.map +0 -1
  883. package/dist/services/octoprint/dto/events/print-paused.dto.js.map +0 -1
  884. package/dist/services/octoprint/dto/events/print-resumed.dto.js.map +0 -1
  885. package/dist/services/octoprint/dto/events/print-started.dto.js.map +0 -1
  886. package/dist/services/octoprint/dto/events/printer-state-changed.dto.js.map +0 -1
  887. package/dist/services/octoprint/dto/events/transfer-done.dto.js.map +0 -1
  888. package/dist/services/octoprint/dto/events/transfer-started.dto.js.map +0 -1
  889. package/dist/services/octoprint/dto/events/updated-files.dto.js.map +0 -1
  890. package/dist/services/octoprint/dto/events/upload.dto.js.map +0 -1
  891. package/dist/services/octoprint/dto/events/user-logged-in.dto.js.map +0 -1
  892. package/dist/services/octoprint/dto/events/z-change.dto.js.map +0 -1
  893. package/dist/services/octoprint/dto/files/gcode-analysis.dto.js.map +0 -1
  894. package/dist/services/octoprint/dto/files/octoprint-file.dto.js.map +0 -1
  895. package/dist/services/octoprint/dto/files/octoprint-files-response.dto.js.map +0 -1
  896. package/dist/services/octoprint/dto/job/job.dto.js.map +0 -1
  897. package/dist/services/octoprint/dto/printer/busy-file.dto.js.map +0 -1
  898. package/dist/services/octoprint/dto/printer/current-printer-state.dto.js.map +0 -1
  899. package/dist/services/octoprint/dto/printer/flags.dto.js.map +0 -1
  900. package/dist/services/octoprint/dto/printer/markings.dto.js.map +0 -1
  901. package/dist/services/octoprint/dto/printer/progress.dto.js.map +0 -1
  902. package/dist/services/octoprint/dto/printer/resends.dto.js.map +0 -1
  903. package/dist/services/octoprint/dto/printer/state.dto.js.map +0 -1
  904. package/dist/services/octoprint/dto/printer/temps.dto.js.map +0 -1
  905. package/dist/services/octoprint/dto/rest/error.dto.js.map +0 -1
  906. package/dist/services/octoprint/dto/server/server.dto.js.map +0 -1
  907. package/dist/services/octoprint/dto/server/version.dto.js.map +0 -1
  908. package/dist/services/octoprint/dto/settings/serial-settings.dto.js.map +0 -1
  909. package/dist/services/octoprint/dto/settings/settings-parts.type.js.map +0 -1
  910. package/dist/services/octoprint/dto/settings/settings.dto.js.map +0 -1
  911. package/dist/services/octoprint/dto/settings/virtual-printer-settings.dto.js.map +0 -1
  912. package/dist/services/octoprint/dto/websocket/connection-message.dto.js.map +0 -1
  913. package/dist/services/octoprint/dto/websocket/current-message.dto.js.map +0 -1
  914. package/dist/services/octoprint/dto/websocket/event-message.dto.js.map +0 -1
  915. package/dist/services/octoprint/dto/websocket/history-message.dto.js.map +0 -1
  916. package/dist/services/octoprint/dto/websocket/plugin-message.dto.js.map +0 -1
  917. package/dist/services/octoprint/dto/websocket/timelapse-message.dto.js.map +0 -1
  918. package/dist/services/orm/base.interface.js.map +0 -1
  919. package/dist/services/prusa-link/dto/file-response.dto.js.map +0 -1
  920. package/dist/services/prusa-link/dto/file.dto.js.map +0 -1
  921. package/dist/services/prusa-link/dto/job-state.dto.js.map +0 -1
  922. package/dist/services/prusa-link/dto/printer-state.dto.js.map +0 -1
  923. package/dist/services/prusa-link/dto/status.dto.js.map +0 -1
  924. package/dist/services/prusa-link/dto/version.dto.js.map +0 -1
  925. package/dist/services/prusa-link/utils/digest-auth.params.js.map +0 -1
  926. package/dist/services/websocket-adapter.interface.js.map +0 -1
  927. package/dist/shared/dtos/socket-login.dto.js.map +0 -1
  928. package/dist/types/express/index.d.js.map +0 -1
  929. package/dist/utils/parsers/parser.types.js.map +0 -1
@@ -1,39 +1,21 @@
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 API_METADATA_KEY () {
13
- return API_METADATA_KEY;
14
- },
15
- get ApiOperation () {
16
- return ApiOperation;
17
- },
18
- get ApiProperty () {
19
- return ApiProperty;
20
- }
21
- });
22
- require("reflect-metadata");
1
+ import "reflect-metadata";
2
+ //#region src/utils/swagger/decorators.ts
23
3
  const API_METADATA_KEY = "Router Config";
24
4
  function ApiProperty(options = {}) {
25
- return function(target, propertyKey) {
26
- const metadata = Reflect.getMetadata(API_METADATA_KEY, target.constructor) || {};
27
- metadata[propertyKey] = options;
28
- Reflect.defineMetadata(API_METADATA_KEY, metadata, target.constructor);
29
- };
5
+ return function(target, propertyKey) {
6
+ const metadata = Reflect.getMetadata("Router Config", target.constructor) || {};
7
+ metadata[propertyKey] = options;
8
+ Reflect.defineMetadata(API_METADATA_KEY, metadata, target.constructor);
9
+ };
30
10
  }
31
11
  function ApiOperation(options = {}) {
32
- return function(target, propertyKey, descriptor) {
33
- const metadata = Reflect.getMetadata(API_METADATA_KEY, target.constructor) || {};
34
- metadata[`${propertyKey}:operation`] = options;
35
- Reflect.defineMetadata(API_METADATA_KEY, metadata, target.constructor);
36
- };
12
+ return function(target, propertyKey, descriptor) {
13
+ const metadata = Reflect.getMetadata("Router Config", target.constructor) || {};
14
+ metadata[`${propertyKey}:operation`] = options;
15
+ Reflect.defineMetadata(API_METADATA_KEY, metadata, target.constructor);
16
+ };
37
17
  }
18
+ //#endregion
19
+ export { API_METADATA_KEY, ApiOperation, ApiProperty };
38
20
 
39
21
  //# sourceMappingURL=decorators.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/swagger/decorators.ts"],"names":["API_METADATA_KEY","ApiOperation","ApiProperty","options","target","propertyKey","metadata","Reflect","getMetadata","defineMetadata","descriptor"],"mappings":";;;;;;;;;;;QAGaA;eAAAA;;QAwBGC;eAAAA;;QARAC;eAAAA;;;QAlBT;AAEA,MAAMF,mBAAmB;AAgBzB,SAASE,YAAYC,UAA8B,CAAC,CAAC;IAC1D,OAAO,SAAUC,MAAW,EAAEC,WAAmB;QAC/C,MAAMC,WAAWC,QAAQC,WAAW,CAACR,kBAAkBI,OAAO,WAAW,KAAK,CAAC;QAC/EE,QAAQ,CAACD,YAAY,GAAGF;QACxBI,QAAQE,cAAc,CAACT,kBAAkBM,UAAUF,OAAO,WAAW;IACvE;AACF;AAEO,SAASH,aAAaE,UAA+B,CAAC,CAAC;IAC5D,OAAO,SAAUC,MAAW,EAAEC,WAAmB,EAAEK,UAA8B;QAC/E,MAAMJ,WAAWC,QAAQC,WAAW,CAACR,kBAAkBI,OAAO,WAAW,KAAK,CAAC;QAC/EE,QAAQ,CAAC,GAAGD,YAAY,UAAU,CAAC,CAAC,GAAGF;QACvCI,QAAQE,cAAc,CAACT,kBAAkBM,UAAUF,OAAO,WAAW;IACvE;AACF"}
1
+ {"version":3,"file":"decorators.js","names":[],"sources":["../../../src/utils/swagger/decorators.ts"],"sourcesContent":["// src/decorators/api.decorator.ts\nimport \"reflect-metadata\";\n\nexport const API_METADATA_KEY = \"Router Config\";\n\nexport interface ApiPropertyOptions {\n description?: string;\n required?: boolean;\n type?: any;\n isArray?: boolean;\n example?: any;\n}\n\nexport interface ApiOperationOptions {\n summary?: string;\n description?: string;\n responses?: Record<string, any>;\n}\n\nexport function ApiProperty(options: ApiPropertyOptions = {}) {\n return function (target: any, propertyKey: string) {\n const metadata = Reflect.getMetadata(API_METADATA_KEY, target.constructor) || {};\n metadata[propertyKey] = options;\n Reflect.defineMetadata(API_METADATA_KEY, metadata, target.constructor);\n };\n}\n\nexport function ApiOperation(options: ApiOperationOptions = {}) {\n return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n const metadata = Reflect.getMetadata(API_METADATA_KEY, target.constructor) || {};\n metadata[`${propertyKey}:operation`] = options;\n Reflect.defineMetadata(API_METADATA_KEY, metadata, target.constructor);\n };\n}\n"],"mappings":";;AAGA,MAAa,mBAAmB;AAgBhC,SAAgB,YAAY,UAA8B,EAAE,EAAE;AAC5D,QAAO,SAAU,QAAa,aAAqB;EACjD,MAAM,WAAW,QAAQ,YAAA,iBAA8B,OAAO,YAAY,IAAI,EAAE;AAChF,WAAS,eAAe;AACxB,UAAQ,eAAe,kBAAkB,UAAU,OAAO,YAAY;;;AAI1E,SAAgB,aAAa,UAA+B,EAAE,EAAE;AAC9D,QAAO,SAAU,QAAa,aAAqB,YAAgC;EACjF,MAAM,WAAW,QAAQ,YAAA,iBAA8B,OAAO,YAAY,IAAI,EAAE;AAChF,WAAS,GAAG,YAAY,eAAe;AACvC,UAAQ,eAAe,kBAAkB,UAAU,OAAO,YAAY"}
@@ -1,196 +1,153 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "SwaggerGenerator", {
6
- enumerable: true,
7
- get: function() {
8
- return SwaggerGenerator;
9
- }
10
- });
11
- const _decorators = require("./decorators");
12
- const _awilixexpress = require("awilix-express");
13
- class SwaggerGenerator {
14
- logger;
15
- constructor(logger){
16
- this.logger = logger;
17
- }
18
- openApiDoc = {
19
- openapi: "3.1.0",
20
- info: {
21
- title: "FDM Monster API",
22
- version: process.env.npm_package_version || "2.0.0",
23
- description: "FDM Monster is a bulk OctoPrint, Klipper, PrusaLink and BambuLab manager to set up, configure and monitor 3D printers. Our aim is to provide neat overview over your farm.",
24
- license: {
25
- name: "AGPL-3.0-or-later",
26
- url: "https://www.gnu.org/licenses/agpl-3.0.en.html"
27
- },
28
- contact: {
29
- name: "FDM Monster GitHub",
30
- url: "https://github.com/fdm-monster/fdm-monster"
31
- }
32
- },
33
- servers: [
34
- {
35
- url: "/api",
36
- description: "API Server"
37
- }
38
- ],
39
- paths: {},
40
- components: {
41
- schemas: {},
42
- securitySchemes: {
43
- bearerAuth: {
44
- type: "http",
45
- scheme: "bearer",
46
- bearerFormat: "JWT",
47
- description: "Enter your JWT token"
48
- }
49
- }
50
- },
51
- security: [
52
- {
53
- bearerAuth: []
54
- }
55
- ]
56
- };
57
- async generate() {
58
- try {
59
- const routePath = "../../controllers";
60
- const discoveredControllers = (0, _awilixexpress.findControllers)(`${routePath}/*.controller.js`, {
61
- cwd: __dirname,
62
- ignore: [
63
- "**/*.map",
64
- "**/*.d.ts"
65
- ],
66
- absolute: true
67
- });
68
- for (const registration of discoveredControllers){
69
- await this.processController(registration);
70
- }
71
- this.logger.log(`Generated OpenAPI spec with ${Object.keys(this.openApiDoc.paths || {}).length} paths`);
72
- } catch (error) {
73
- this.logger.error("Failed to generate swagger specification", error);
74
- }
75
- return this.openApiDoc;
76
- }
77
- async processController(prototype) {
78
- for (const [methodName, methodConfig] of prototype.state.methods){
79
- if (methodConfig.paths.length > 0) {
80
- await this.processMethod(prototype, prototype.state.root, methodName, methodConfig);
81
- }
82
- }
83
- }
84
- async processMethod(controller, root, methodName, methodConfig) {
85
- if (!methodName) return;
86
- const method = methodName.toString();
87
- const name = method.toLowerCase();
88
- for (let methodPath of methodConfig.paths){
89
- methodPath = root.paths[0] + methodPath;
90
- methodPath = methodPath.replaceAll(/:([a-zA-Z0-9_]+)/g, "{$1}");
91
- const metadata = Reflect.getMetadata(_decorators.API_METADATA_KEY, controller.target);
92
- for (const verb of methodConfig.verbs){
93
- const key = `${name}:operation`;
94
- const description = metadata?.hasOwnProperty(key) ? metadata[key] : null;
95
- const httpMethod = verb.toLowerCase();
96
- const operationObject = {
97
- tags: [
98
- controller.target.name
99
- ],
100
- summary: description?.summary ?? method,
101
- description: description?.description ?? "",
102
- responses: description?.responses ?? {
103
- "200": {
104
- description: "Successful response"
105
- }
106
- }
107
- };
108
- operationObject.parameters = this.extractPathParameters(methodPath);
109
- const paramTypes = Reflect.getMetadata("design:paramtypes", controller.target, name);
110
- const returnType = Reflect.getMetadata("design:returntype", controller.target, name);
111
- if (paramTypes) {
112
- const additionalParams = this.processParameterTypes(paramTypes);
113
- operationObject.parameters = [
114
- ...operationObject.parameters,
115
- ...additionalParams
116
- ];
117
- }
118
- if (returnType && operationObject.responses?.["200"]) {
119
- operationObject.responses["200"].content = {
120
- "application/json": {
121
- schema: this.processReturnType(returnType)
122
- }
123
- };
124
- }
125
- const operation = {
126
- [httpMethod]: operationObject
127
- };
128
- this.openApiDoc.paths ??= {};
129
- this.openApiDoc.paths[methodPath] = {
130
- ...this.openApiDoc.paths[methodPath] || {},
131
- ...operation
132
- };
133
- }
134
- }
135
- }
136
- extractPathParameters(path) {
137
- const paramRegex = /\{([a-zA-Z0-9_]+)\}/g;
138
- const params = [];
139
- let match;
140
- while((match = paramRegex.exec(path)) !== null){
141
- const paramName = match[1];
142
- params.push({
143
- name: paramName,
144
- in: "path",
145
- required: true,
146
- schema: {
147
- type: "string"
148
- },
149
- description: `The ${paramName} parameter`
150
- });
151
- }
152
- return params;
153
- }
154
- processParameterTypes(types) {
155
- return types.map((type)=>this.createParameterDefinition(type));
156
- }
157
- processReturnType(type) {
158
- return this.createSchemaDefinition(type);
159
- }
160
- createSchemaDefinition(type) {
161
- return {
162
- type: "object",
163
- properties: this.getTypeProperties(type)
164
- };
165
- }
166
- createParameterDefinition(type) {
167
- return {
168
- in: "body",
169
- schema: this.createSchemaDefinition(type)
170
- };
171
- }
172
- getTypeProperties(type) {
173
- const properties = {};
174
- const metadata = Reflect.getMetadata(_decorators.API_METADATA_KEY, type) || {};
175
- Object.keys(metadata).forEach((key)=>{
176
- properties[key] = {
177
- type: this.getPropertyType(metadata[key].type),
178
- description: metadata[key].description,
179
- example: metadata[key].example
180
- };
181
- });
182
- return properties;
183
- }
184
- getPropertyType(type) {
185
- const typeMap = {
186
- String: "string",
187
- Number: "number",
188
- Boolean: "boolean",
189
- Object: "object",
190
- Array: "array"
191
- };
192
- return typeMap[type?.name] || "string";
193
- }
194
- }
1
+ import { getDirname } from "../fs.utils.js";
2
+ import { API_METADATA_KEY } from "./decorators.js";
3
+ import { findControllers } from "awilix-express";
4
+ //#region src/utils/swagger/generator.ts
5
+ var SwaggerGenerator = class {
6
+ logger;
7
+ constructor(logger) {
8
+ this.logger = logger;
9
+ }
10
+ openApiDoc = {
11
+ openapi: "3.1.0",
12
+ info: {
13
+ title: "FDM Monster API",
14
+ version: process.env.npm_package_version || "2.0.0",
15
+ description: "FDM Monster is a bulk OctoPrint, Klipper, PrusaLink and BambuLab manager to set up, configure and monitor 3D printers. Our aim is to provide neat overview over your farm.",
16
+ license: {
17
+ name: "AGPL-3.0-or-later",
18
+ url: "https://www.gnu.org/licenses/agpl-3.0.en.html"
19
+ },
20
+ contact: {
21
+ name: "FDM Monster GitHub",
22
+ url: "https://github.com/fdm-monster/fdm-monster"
23
+ }
24
+ },
25
+ servers: [{
26
+ url: "/api",
27
+ description: "API Server"
28
+ }],
29
+ paths: {},
30
+ components: {
31
+ schemas: {},
32
+ securitySchemes: { bearerAuth: {
33
+ type: "http",
34
+ scheme: "bearer",
35
+ bearerFormat: "JWT",
36
+ description: "Enter your JWT token"
37
+ } }
38
+ },
39
+ security: [{ bearerAuth: [] }]
40
+ };
41
+ async generate() {
42
+ try {
43
+ const discoveredControllers = await findControllers(`../../controllers/*.controller.js`, {
44
+ cwd: getDirname(import.meta.url),
45
+ ignore: ["**/*.map", "**/*.d.ts"],
46
+ absolute: true,
47
+ esModules: true
48
+ });
49
+ for (const registration of discoveredControllers) await this.processController(registration);
50
+ this.logger.log(`Generated OpenAPI spec with ${Object.keys(this.openApiDoc.paths || {}).length} paths`);
51
+ } catch (error) {
52
+ this.logger.error("Failed to generate swagger specification", error);
53
+ }
54
+ return this.openApiDoc;
55
+ }
56
+ async processController(prototype) {
57
+ for (const [methodName, methodConfig] of prototype.state.methods) if (methodConfig.paths.length > 0) await this.processMethod(prototype, prototype.state.root, methodName, methodConfig);
58
+ }
59
+ async processMethod(controller, root, methodName, methodConfig) {
60
+ if (!methodName) return;
61
+ const method = methodName.toString();
62
+ const name = method.toLowerCase();
63
+ for (let methodPath of methodConfig.paths) {
64
+ methodPath = root.paths[0] + methodPath;
65
+ methodPath = methodPath.replaceAll(/:([a-zA-Z0-9_]+)/g, "{$1}");
66
+ const metadata = Reflect.getMetadata(API_METADATA_KEY, controller.target);
67
+ for (const verb of methodConfig.verbs) {
68
+ const key = `${name}:operation`;
69
+ const description = metadata?.hasOwnProperty(key) ? metadata[key] : null;
70
+ const httpMethod = verb.toLowerCase();
71
+ const operationObject = {
72
+ tags: [controller.target.name],
73
+ summary: description?.summary ?? method,
74
+ description: description?.description ?? "",
75
+ responses: description?.responses ?? { "200": { description: "Successful response" } }
76
+ };
77
+ operationObject.parameters = this.extractPathParameters(methodPath);
78
+ const paramTypes = Reflect.getMetadata("design:paramtypes", controller.target, name);
79
+ const returnType = Reflect.getMetadata("design:returntype", controller.target, name);
80
+ if (paramTypes) {
81
+ const additionalParams = this.processParameterTypes(paramTypes);
82
+ operationObject.parameters = [...operationObject.parameters, ...additionalParams];
83
+ }
84
+ if (returnType && operationObject.responses?.["200"]) operationObject.responses["200"].content = { "application/json": { schema: this.processReturnType(returnType) } };
85
+ const operation = { [httpMethod]: operationObject };
86
+ this.openApiDoc.paths ??= {};
87
+ this.openApiDoc.paths[methodPath] = {
88
+ ...this.openApiDoc.paths[methodPath],
89
+ ...operation
90
+ };
91
+ }
92
+ }
93
+ }
94
+ extractPathParameters(path) {
95
+ const paramRegex = /\{([a-zA-Z0-9_]+)\}/g;
96
+ const params = [];
97
+ let match;
98
+ while ((match = paramRegex.exec(path)) !== null) {
99
+ const paramName = match[1];
100
+ params.push({
101
+ name: paramName,
102
+ in: "path",
103
+ required: true,
104
+ schema: { type: "string" },
105
+ description: `The ${paramName} parameter`
106
+ });
107
+ }
108
+ return params;
109
+ }
110
+ processParameterTypes(types) {
111
+ return types.map((type) => this.createParameterDefinition(type));
112
+ }
113
+ processReturnType(type) {
114
+ return this.createSchemaDefinition(type);
115
+ }
116
+ createSchemaDefinition(type) {
117
+ return {
118
+ type: "object",
119
+ properties: this.getTypeProperties(type)
120
+ };
121
+ }
122
+ createParameterDefinition(type) {
123
+ return {
124
+ in: "body",
125
+ schema: this.createSchemaDefinition(type)
126
+ };
127
+ }
128
+ getTypeProperties(type) {
129
+ const properties = {};
130
+ const metadata = Reflect.getMetadata("Router Config", type) || {};
131
+ Object.keys(metadata).forEach((key) => {
132
+ properties[key] = {
133
+ type: this.getPropertyType(metadata[key].type),
134
+ description: metadata[key].description,
135
+ example: metadata[key].example
136
+ };
137
+ });
138
+ return properties;
139
+ }
140
+ getPropertyType(type) {
141
+ return {
142
+ String: "string",
143
+ Number: "number",
144
+ Boolean: "boolean",
145
+ Object: "object",
146
+ Array: "array"
147
+ }[type?.name] || "string";
148
+ }
149
+ };
150
+ //#endregion
151
+ export { SwaggerGenerator };
195
152
 
196
153
  //# sourceMappingURL=generator.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/swagger/generator.ts"],"names":["SwaggerGenerator","logger","openApiDoc","openapi","info","title","version","process","env","npm_package_version","description","license","name","url","contact","servers","paths","components","schemas","securitySchemes","bearerAuth","type","scheme","bearerFormat","security","generate","routePath","discoveredControllers","findControllers","cwd","__dirname","ignore","absolute","registration","processController","log","Object","keys","length","error","prototype","methodName","methodConfig","state","methods","processMethod","root","controller","method","toString","toLowerCase","methodPath","replaceAll","metadata","Reflect","getMetadata","API_METADATA_KEY","target","verb","verbs","key","hasOwnProperty","httpMethod","operationObject","tags","summary","responses","parameters","extractPathParameters","paramTypes","returnType","additionalParams","processParameterTypes","content","schema","processReturnType","operation","path","paramRegex","params","match","exec","paramName","push","in","required","types","map","createParameterDefinition","createSchemaDefinition","properties","getTypeProperties","forEach","getPropertyType","example","typeMap","String","Number","Boolean","Array"],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","names":[],"sources":["../../../src/utils/swagger/generator.ts"],"sourcesContent":["import { OpenAPIObject, PathItemObject, SchemaObject } from \"openapi3-ts/oas31\";\nimport { API_METADATA_KEY } from \"@/utils/swagger/decorators\";\nimport { findControllers, FindControllersResult } from \"awilix-express\";\nimport { MethodName, type IRouteConfig } from \"awilix-router-core/lib/state-util\";\nimport { LoggerService } from \"@/handlers/logger\";\nimport { getDirname } from \"@/utils/fs.utils\";\n\nexport class SwaggerGenerator {\n private readonly logger: LoggerService;\n\n constructor(logger: LoggerService) {\n this.logger = logger;\n }\n private readonly openApiDoc: OpenAPIObject = {\n openapi: \"3.1.0\",\n info: {\n title: \"FDM Monster API\",\n version: process.env.npm_package_version || \"2.0.0\",\n description:\n \"FDM Monster is a bulk OctoPrint, Klipper, PrusaLink and BambuLab manager to set up, configure and monitor 3D printers. Our aim is to provide neat overview over your farm.\",\n license: {\n name: \"AGPL-3.0-or-later\",\n url: \"https://www.gnu.org/licenses/agpl-3.0.en.html\",\n },\n contact: {\n name: \"FDM Monster GitHub\",\n url: \"https://github.com/fdm-monster/fdm-monster\",\n },\n },\n servers: [\n {\n url: \"/api\",\n description: \"API Server\",\n },\n ],\n paths: {},\n components: {\n schemas: {},\n securitySchemes: {\n bearerAuth: {\n type: \"http\",\n scheme: \"bearer\",\n bearerFormat: \"JWT\",\n description: \"Enter your JWT token\",\n },\n },\n },\n security: [\n {\n bearerAuth: [],\n },\n ],\n };\n\n public async generate(): Promise<OpenAPIObject> {\n try {\n const routePath = \"../../controllers\";\n const discoveredControllers = await findControllers(`${routePath}/*.controller.js`, {\n cwd: getDirname(import.meta.url),\n ignore: [\"**/*.map\", \"**/*.d.ts\"],\n absolute: true,\n esModules: true,\n });\n for (const registration of discoveredControllers) {\n await this.processController(registration);\n }\n this.logger.log(`Generated OpenAPI spec with ${Object.keys(this.openApiDoc.paths || {}).length} paths`);\n } catch (error) {\n this.logger.error(\"Failed to generate swagger specification\", error);\n }\n\n return this.openApiDoc;\n }\n\n private async processController(prototype: Awaited<FindControllersResult>[number]) {\n for (const [methodName, methodConfig] of prototype.state.methods) {\n if (methodConfig.paths.length > 0) {\n await this.processMethod(prototype, prototype.state.root, methodName, methodConfig);\n }\n }\n }\n\n private async processMethod(\n controller: Awaited<FindControllersResult>[number],\n root: IRouteConfig,\n methodName: MethodName,\n methodConfig: IRouteConfig,\n ) {\n if (!methodName) return;\n\n const method = methodName.toString();\n const name = method.toLowerCase();\n for (let methodPath of methodConfig.paths) {\n methodPath = root.paths[0] + methodPath;\n // Convert Express path format (:id) to OpenAPI format ({id})\n methodPath = methodPath.replaceAll(/:([a-zA-Z0-9_]+)/g, \"{$1}\");\n\n const metadata = Reflect.getMetadata(API_METADATA_KEY, controller.target);\n for (const verb of methodConfig.verbs) {\n const key = `${name}:operation`;\n const description = metadata?.hasOwnProperty(key) ? metadata[key] : null;\n\n const httpMethod = verb.toLowerCase() as\n | \"get\"\n | \"post\"\n | \"put\"\n | \"delete\"\n | \"patch\"\n | \"options\"\n | \"head\"\n | \"trace\";\n\n const operationObject = {\n tags: [controller.target.name],\n summary: description?.summary ?? method,\n description: description?.description ?? \"\",\n responses: description?.responses ?? {\n \"200\": {\n description: \"Successful response\",\n },\n },\n } as any;\n\n // Extract path parameters from the path (e.g., {id}, {userId}, etc.)\n operationObject.parameters = this.extractPathParameters(methodPath);\n\n // Process method parameters and response type\n const paramTypes = Reflect.getMetadata(\"design:paramtypes\", controller.target, name);\n const returnType = Reflect.getMetadata(\"design:returntype\", controller.target, name);\n\n if (paramTypes) {\n const additionalParams = this.processParameterTypes(paramTypes);\n operationObject.parameters = [...operationObject.parameters, ...additionalParams];\n }\n\n if (returnType && operationObject.responses?.[\"200\"]) {\n operationObject.responses[\"200\"].content = {\n \"application/json\": {\n schema: this.processReturnType(returnType),\n },\n };\n }\n\n const operation: PathItemObject = {\n [httpMethod]: operationObject,\n };\n\n this.openApiDoc.paths ??= {};\n\n this.openApiDoc.paths[methodPath] = {\n ...this.openApiDoc.paths[methodPath],\n ...operation,\n };\n }\n }\n }\n\n private extractPathParameters(path: string): any[] {\n const paramRegex = /\\{([a-zA-Z0-9_]+)\\}/g;\n const params: any[] = [];\n let match;\n\n while ((match = paramRegex.exec(path)) !== null) {\n const paramName = match[1];\n params.push({\n name: paramName,\n in: \"path\",\n required: true,\n schema: {\n type: \"string\",\n },\n description: `The ${paramName} parameter`,\n });\n }\n\n return params;\n }\n\n private processParameterTypes(types: any[]): any[] {\n return types.map((type) => this.createParameterDefinition(type));\n }\n\n private processReturnType(type: any): SchemaObject {\n return this.createSchemaDefinition(type);\n }\n\n private createSchemaDefinition(type: any): SchemaObject {\n // Implementation for creating OpenAPI schema from TypeScript type\n // This is a simplified version - you'll want to expand this\n return {\n type: \"object\",\n properties: this.getTypeProperties(type),\n };\n }\n\n private createParameterDefinition(type: any): any {\n // Implementation for creating parameter definitions\n return {\n in: \"body\",\n schema: this.createSchemaDefinition(type),\n };\n }\n\n private getTypeProperties(type: any): Record<string, any> {\n const properties: Record<string, any> = {};\n const metadata = Reflect.getMetadata(API_METADATA_KEY, type) || {};\n\n Object.keys(metadata).forEach((key) => {\n properties[key] = {\n type: this.getPropertyType(metadata[key].type),\n description: metadata[key].description,\n example: metadata[key].example,\n };\n });\n\n return properties;\n }\n\n private getPropertyType(type: any): string {\n const typeMap: Record<string, string> = {\n String: \"string\",\n Number: \"number\",\n Boolean: \"boolean\",\n Object: \"object\",\n Array: \"array\",\n };\n\n return typeMap[type?.name] || \"string\";\n }\n}\n"],"mappings":"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"}
@@ -1,28 +1,20 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "setupSwagger", {
6
- enumerable: true,
7
- get: function() {
8
- return setupSwagger;
9
- }
10
- });
11
- const _generator = require("./generator");
12
- const _express = require("express");
13
- const _nodepath = require("node:path");
14
- const _serverconstants = require("../../server.constants");
15
- const _fsutils = require("../fs.utils");
16
- const _promises = require("node:fs/promises");
1
+ import { AppConstants } from "../../server.constants.js";
2
+ import { ensureDirExists, getMediaPath } from "../fs.utils.js";
3
+ import { SwaggerGenerator } from "./generator.js";
4
+ import { dirname, join } from "node:path";
5
+ import { fileURLToPath } from "node:url";
6
+ import { static as static$1 } from "express";
7
+ import { writeFile } from "node:fs/promises";
8
+ //#region src/utils/swagger/swagger.ts
17
9
  function getSwaggerUiDistPath() {
18
- try {
19
- return (0, _nodepath.dirname)(require.resolve("swagger-ui-dist/package.json"));
20
- } catch {
21
- return (0, _nodepath.join)(process.cwd(), "node_modules", "swagger-ui-dist");
22
- }
10
+ try {
11
+ return dirname(fileURLToPath(import.meta.resolve("swagger-ui-dist/package.json")));
12
+ } catch {
13
+ return join(process.cwd(), "node_modules", "swagger-ui-dist");
14
+ }
23
15
  }
24
16
  function generateSwaggerHTML() {
25
- return `
17
+ return `
26
18
  <!DOCTYPE html>
27
19
  <html lang="en">
28
20
  <head>
@@ -38,8 +30,8 @@ function generateSwaggerHTML() {
38
30
  </head>
39
31
  <body>
40
32
  <div id="swagger-ui"></div>
41
- <script src="/api-docs/static/swagger-ui-bundle.js"></script>
42
- <script src="/api-docs/static/swagger-ui-standalone-preset.js"></script>
33
+ <script src="/api-docs/static/swagger-ui-bundle.js"><\/script>
34
+ <script src="/api-docs/static/swagger-ui-standalone-preset.js"><\/script>
43
35
  <script>
44
36
  window.onload = function() {
45
37
  window.ui = SwaggerUIBundle({
@@ -56,38 +48,35 @@ function generateSwaggerHTML() {
56
48
  layout: "StandaloneLayout"
57
49
  });
58
50
  };
59
- </script>
51
+ <\/script>
60
52
  </body>
61
53
  </html>
62
54
  `.trim();
63
55
  }
64
56
  async function setupSwagger(app, logger) {
65
- const generator = new _generator.SwaggerGenerator(logger);
66
- const specification = await generator.generate();
67
- const generateJsonFile = process.env[_serverconstants.AppConstants.GENERATE_SWAGGER_JSON] === "true";
68
- if (generateJsonFile) {
69
- try {
70
- const mediaPath = (0, _fsutils.getMediaPath)();
71
- (0, _fsutils.ensureDirExists)(mediaPath);
72
- const swaggerJsonPath = (0, _nodepath.join)(mediaPath, "swagger.json");
73
- const jsonContent = JSON.stringify(specification, null, 2);
74
- await (0, _promises.writeFile)(swaggerJsonPath, jsonContent, "utf-8");
75
- logger.log(`Swagger JSON file generated at: ${swaggerJsonPath}`);
76
- } catch (error) {
77
- logger.error("Failed to generate swagger.json file", error);
78
- }
79
- }
80
- const swaggerUiPath = getSwaggerUiDistPath();
81
- app.use("/api-docs/static", (0, _express.static)(swaggerUiPath));
82
- app.get("/api-docs/swagger.json", (_req, res)=>{
83
- res.setHeader("Content-Type", "application/json");
84
- res.send(specification);
85
- });
86
- app.get("/api-docs", (_req, res)=>{
87
- res.setHeader("Content-Type", "text/html");
88
- res.send(generateSwaggerHTML());
89
- });
90
- return specification;
57
+ const specification = await new SwaggerGenerator(logger).generate();
58
+ if (process.env[AppConstants.GENERATE_SWAGGER_JSON] === "true") try {
59
+ const mediaPath = getMediaPath();
60
+ ensureDirExists(mediaPath);
61
+ const swaggerJsonPath = join(mediaPath, "swagger.json");
62
+ await writeFile(swaggerJsonPath, JSON.stringify(specification, null, 2), "utf-8");
63
+ logger.log(`Swagger JSON file generated at: ${swaggerJsonPath}`);
64
+ } catch (error) {
65
+ logger.error("Failed to generate swagger.json file", error);
66
+ }
67
+ const swaggerUiPath = getSwaggerUiDistPath();
68
+ app.use("/api-docs/static", static$1(swaggerUiPath));
69
+ app.get("/api-docs/swagger.json", (_req, res) => {
70
+ res.setHeader("Content-Type", "application/json");
71
+ res.send(specification);
72
+ });
73
+ app.get("/api-docs", (_req, res) => {
74
+ res.setHeader("Content-Type", "text/html");
75
+ res.send(generateSwaggerHTML());
76
+ });
77
+ return specification;
91
78
  }
79
+ //#endregion
80
+ export { setupSwagger };
92
81
 
93
82
  //# sourceMappingURL=swagger.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/swagger/swagger.ts"],"names":["setupSwagger","getSwaggerUiDistPath","dirname","require","resolve","join","process","cwd","generateSwaggerHTML","trim","app","logger","generator","SwaggerGenerator","specification","generate","generateJsonFile","env","AppConstants","GENERATE_SWAGGER_JSON","mediaPath","getMediaPath","ensureDirExists","swaggerJsonPath","jsonContent","JSON","stringify","writeFile","log","error","swaggerUiPath","use","expressStatic","get","_req","res","setHeader","send"],"mappings":";;;;+BA6DsBA;;;eAAAA;;;2BA7DW;yBACoB;0BACvB;iCACD;yBACiB;0BAEpB;AAG1B,SAASC;IACP,IAAI;QAEF,OAAOC,IAAAA,iBAAO,EAACC,QAAQC,OAAO,CAAC;IACjC,EAAE,OAAM;QAEN,OAAOC,IAAAA,cAAI,EAACC,QAAQC,GAAG,IAAI,gBAAgB;IAC7C;AACF;AAGA,SAASC;IACP,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCR,CAAC,CAACC,IAAI;AACR;AAEO,eAAeT,aAAaU,GAAgB,EAAEC,MAAqB;IACxE,MAAMC,YAAY,IAAIC,2BAAgB,CAACF;IACvC,MAAMG,gBAAgB,MAAMF,UAAUG,QAAQ;IAG9C,MAAMC,mBAAmBV,QAAQW,GAAG,CAACC,6BAAY,CAACC,qBAAqB,CAAC,KAAK;IAE7E,IAAIH,kBAAkB;QACpB,IAAI;YACF,MAAMI,YAAYC,IAAAA,qBAAY;YAC9BC,IAAAA,wBAAe,EAACF;YAEhB,MAAMG,kBAAkBlB,IAAAA,cAAI,EAACe,WAAW;YACxC,MAAMI,cAAcC,KAAKC,SAAS,CAACZ,eAAe,MAAM;YAExD,MAAMa,IAAAA,mBAAS,EAACJ,iBAAiBC,aAAa;YAC9Cb,OAAOiB,GAAG,CAAC,CAAC,gCAAgC,EAAEL,iBAAiB;QACjE,EAAE,OAAOM,OAAO;YACdlB,OAAOkB,KAAK,CAAC,wCAAwCA;QACvD;IACF;IAGA,MAAMC,gBAAgB7B;IACtBS,IAAIqB,GAAG,CAAC,oBAAoBC,IAAAA,eAAa,EAACF;IAG1CpB,IAAIuB,GAAG,CAAC,0BAA0B,CAACC,MAAMC;QACvCA,IAAIC,SAAS,CAAC,gBAAgB;QAC9BD,IAAIE,IAAI,CAACvB;IACX;IAGAJ,IAAIuB,GAAG,CAAC,aAAa,CAACC,MAAMC;QAC1BA,IAAIC,SAAS,CAAC,gBAAgB;QAC9BD,IAAIE,IAAI,CAAC7B;IACX;IAEA,OAAOM;AACT"}
1
+ {"version":3,"file":"swagger.js","names":["expressStatic"],"sources":["../../../src/utils/swagger/swagger.ts"],"sourcesContent":["import { SwaggerGenerator } from \"./generator\";\nimport { Application, static as expressStatic } from \"express\";\nimport { join, dirname } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { AppConstants } from \"@/server.constants\";\nimport { ensureDirExists, getMediaPath } from \"@/utils/fs.utils\";\nimport { LoggerService } from \"@/handlers/logger\";\nimport { writeFile } from \"node:fs/promises\";\n\nfunction getSwaggerUiDistPath(): string {\n try {\n const resolved = import.meta.resolve(\"swagger-ui-dist/package.json\");\n return dirname(fileURLToPath(resolved));\n } catch {\n return join(process.cwd(), \"node_modules\", \"swagger-ui-dist\");\n }\n}\n\nfunction generateSwaggerHTML(): string {\n return `\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>FDM Monster API Documentation</title>\n <link rel=\"stylesheet\" href=\"/api-docs/static/swagger-ui.css\" />\n <style>\n html { box-sizing: border-box; overflow: -moz-scrollbars-vertical; overflow-y: scroll; }\n *, *:before, *:after { box-sizing: inherit; }\n body { margin: 0; padding: 0; }\n </style>\n</head>\n<body>\n <div id=\"swagger-ui\"></div>\n <script src=\"/api-docs/static/swagger-ui-bundle.js\"></script>\n <script src=\"/api-docs/static/swagger-ui-standalone-preset.js\"></script>\n <script>\n window.onload = function() {\n window.ui = SwaggerUIBundle({\n url: '/api-docs/swagger.json',\n dom_id: '#swagger-ui',\n deepLinking: true,\n presets: [\n SwaggerUIBundle.presets.apis,\n SwaggerUIStandalonePreset\n ],\n plugins: [\n SwaggerUIBundle.plugins.DownloadUrl\n ],\n layout: \"StandaloneLayout\"\n });\n };\n </script>\n</body>\n</html>\n `.trim();\n}\n\nexport async function setupSwagger(app: Application, logger: LoggerService) {\n const generator = new SwaggerGenerator(logger);\n const specification = await generator.generate();\n\n const generateJsonFile = process.env[AppConstants.GENERATE_SWAGGER_JSON] === \"true\";\n if (generateJsonFile) {\n try {\n const mediaPath = getMediaPath();\n ensureDirExists(mediaPath);\n\n const swaggerJsonPath = join(mediaPath, \"swagger.json\");\n const jsonContent = JSON.stringify(specification, null, 2);\n\n await writeFile(swaggerJsonPath, jsonContent, \"utf-8\");\n logger.log(`Swagger JSON file generated at: ${swaggerJsonPath}`);\n } catch (error) {\n logger.error(\"Failed to generate swagger.json file\", error);\n }\n }\n\n const swaggerUiPath = getSwaggerUiDistPath();\n app.use(\"/api-docs/static\", expressStatic(swaggerUiPath));\n app.get(\"/api-docs/swagger.json\", (_req, res) => {\n res.setHeader(\"Content-Type\", \"application/json\");\n res.send(specification);\n });\n app.get(\"/api-docs\", (_req, res) => {\n res.setHeader(\"Content-Type\", \"text/html\");\n res.send(generateSwaggerHTML());\n });\n\n return specification;\n}\n"],"mappings":";;;;;;;;AASA,SAAS,uBAA+B;AACtC,KAAI;AAEF,SAAO,QAAQ,cADE,OAAO,KAAK,QAAQ,+BACA,CAAC,CAAC;SACjC;AACN,SAAO,KAAK,QAAQ,KAAK,EAAE,gBAAgB,kBAAkB;;;AAIjE,SAAS,sBAA8B;AACrC,QAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqCL,MAAM;;AAGV,eAAsB,aAAa,KAAkB,QAAuB;CAE1E,MAAM,gBAAgB,MAAM,IADN,iBAAiB,OACF,CAAC,UAAU;AAGhD,KADyB,QAAQ,IAAI,aAAa,2BAA2B,OAE3E,KAAI;EACF,MAAM,YAAY,cAAc;AAChC,kBAAgB,UAAU;EAE1B,MAAM,kBAAkB,KAAK,WAAW,eAAe;AAGvD,QAAM,UAAU,iBAFI,KAAK,UAAU,eAAe,MAAM,EAEZ,EAAE,QAAQ;AACtD,SAAO,IAAI,mCAAmC,kBAAkB;UACzD,OAAO;AACd,SAAO,MAAM,wCAAwC,MAAM;;CAI/D,MAAM,gBAAgB,sBAAsB;AAC5C,KAAI,IAAI,oBAAoBA,SAAc,cAAc,CAAC;AACzD,KAAI,IAAI,2BAA2B,MAAM,QAAQ;AAC/C,MAAI,UAAU,gBAAgB,mBAAmB;AACjD,MAAI,KAAK,cAAc;GACvB;AACF,KAAI,IAAI,cAAc,MAAM,QAAQ;AAClC,MAAI,UAAU,gBAAgB,YAAY;AAC1C,MAAI,KAAK,qBAAqB,CAAC;GAC/B;AAEF,QAAO"}