@fdm-monster/server 1.9.4 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. package/.env.template +8 -7
  2. package/.yarn/install-state.gz +0 -0
  3. package/CONTRIBUTING.md +5 -5
  4. package/README.md +9 -8
  5. package/RELEASE_NOTES.MD +52 -0
  6. package/SECURITY.md +1 -1
  7. package/biome.json +8 -5
  8. package/dist/consoles/download-github-releases.js +3 -3
  9. package/dist/consoles/launch-http-servers.js +4 -4
  10. package/dist/consoles/launch-http-servers.js.map +1 -1
  11. package/dist/consoles/mock-bambu.server.js +50 -30
  12. package/dist/consoles/mock-bambu.server.js.map +1 -1
  13. package/dist/consoles/mock-camera/default-image.js +13 -0
  14. package/dist/consoles/mock-camera/default-image.js.map +1 -0
  15. package/dist/consoles/mock-camera/mock-camera.server.js +160 -0
  16. package/dist/consoles/mock-camera/mock-camera.server.js.map +1 -0
  17. package/dist/consoles/mock-octoprint.server.js +281 -73
  18. package/dist/consoles/mock-octoprint.server.js.map +1 -1
  19. package/dist/consoles/mock-prusalink.server.js +17 -17
  20. package/dist/consoles/mock-prusalink.server.js.map +1 -1
  21. package/dist/consoles/typeorm-create.js +135 -0
  22. package/dist/consoles/typeorm-create.js.map +1 -0
  23. package/dist/consoles/typeorm-generate.js +8 -8
  24. package/dist/consoles/typeorm-generate.js.map +1 -1
  25. package/dist/consoles/utils/api-messages.js.map +1 -1
  26. package/dist/constants/authorization.constants.js +25 -31
  27. package/dist/constants/authorization.constants.js.map +1 -1
  28. package/dist/constants/event.constants.js.map +1 -1
  29. package/dist/constants/server-settings.constants.js +3 -19
  30. package/dist/constants/server-settings.constants.js.map +1 -1
  31. package/dist/container.js +43 -59
  32. package/dist/container.js.map +1 -1
  33. package/dist/container.tokens.js +9 -6
  34. package/dist/container.tokens.js.map +1 -1
  35. package/dist/controllers/auth.controller.js +1 -1
  36. package/dist/controllers/auth.controller.js.map +1 -1
  37. package/dist/controllers/batch-call.controller.js +7 -25
  38. package/dist/controllers/batch-call.controller.js.map +1 -1
  39. package/dist/controllers/file-storage.controller.js +248 -0
  40. package/dist/controllers/file-storage.controller.js.map +1 -0
  41. package/dist/controllers/first-time-setup.controller.js +6 -5
  42. package/dist/controllers/first-time-setup.controller.js.map +1 -1
  43. package/dist/controllers/floor.controller.js +12 -12
  44. package/dist/controllers/floor.controller.js.map +1 -1
  45. package/dist/controllers/metrics.controller.js.map +1 -1
  46. package/dist/controllers/print-job.controller.js +666 -0
  47. package/dist/controllers/print-job.controller.js.map +1 -0
  48. package/dist/controllers/print-queue.controller.js +375 -0
  49. package/dist/controllers/print-queue.controller.js.map +1 -0
  50. package/dist/controllers/printer-files.controller.js +88 -59
  51. package/dist/controllers/printer-files.controller.js.map +1 -1
  52. package/dist/controllers/printer-settings.controller.js +0 -21
  53. package/dist/controllers/printer-settings.controller.js.map +1 -1
  54. package/dist/controllers/{printer-group.controller.js → printer-tag.controller.js} +51 -34
  55. package/dist/controllers/printer-tag.controller.js.map +1 -0
  56. package/dist/controllers/printer.controller.js +21 -7
  57. package/dist/controllers/printer.controller.js.map +1 -1
  58. package/dist/controllers/server-private.controller.js +2 -1
  59. package/dist/controllers/server-private.controller.js.map +1 -1
  60. package/dist/controllers/server-public.controller.js +11 -15
  61. package/dist/controllers/server-public.controller.js.map +1 -1
  62. package/dist/controllers/settings.controller.js +0 -68
  63. package/dist/controllers/settings.controller.js.map +1 -1
  64. package/dist/controllers/slicer-compat.controller.js +216 -0
  65. package/dist/controllers/slicer-compat.controller.js.map +1 -0
  66. package/dist/controllers/user.controller.js +8 -12
  67. package/dist/controllers/user.controller.js.map +1 -1
  68. package/dist/controllers/validation/batch-controller.validation.js +13 -13
  69. package/dist/controllers/validation/batch-controller.validation.js.map +1 -1
  70. package/dist/controllers/validation/generic.validation.js +4 -8
  71. package/dist/controllers/validation/generic.validation.js.map +1 -1
  72. package/dist/controllers/validation/printer-files-controller.validation.js +2 -2
  73. package/dist/controllers/validation/user-controller.validation.js +14 -9
  74. package/dist/controllers/validation/user-controller.validation.js.map +1 -1
  75. package/dist/data-source.js +25 -12
  76. package/dist/data-source.js.map +1 -1
  77. package/dist/entities/camera-stream.entity.js +2 -1
  78. package/dist/entities/camera-stream.entity.js.map +1 -1
  79. package/dist/entities/floor.entity.js +3 -5
  80. package/dist/entities/floor.entity.js.map +1 -1
  81. package/dist/entities/index.js +15 -11
  82. package/dist/entities/index.js.map +1 -1
  83. package/dist/entities/print-job.entity.js +195 -0
  84. package/dist/entities/print-job.entity.js.map +1 -0
  85. package/dist/entities/{printer-group.entity.js → printer-tag.entity.js} +17 -17
  86. package/dist/entities/printer-tag.entity.js.map +1 -0
  87. package/dist/entities/printer.entity.js +4 -10
  88. package/dist/entities/printer.entity.js.map +1 -1
  89. package/dist/entities/settings.entity.js +3 -12
  90. package/dist/entities/settings.entity.js.map +1 -1
  91. package/dist/entities/{group.entity.js → tag.entity.js} +15 -8
  92. package/dist/entities/tag.entity.js.map +1 -0
  93. package/dist/handlers/logging/file-logging.transport.js.map +1 -1
  94. package/dist/handlers/logging/static.logger.js.map +1 -1
  95. package/dist/index.js +8 -2
  96. package/dist/index.js.map +1 -1
  97. package/dist/middleware/authenticate.js +4 -4
  98. package/dist/middleware/authenticate.js.map +1 -1
  99. package/dist/middleware/database.js +1 -1
  100. package/dist/middleware/exception.filter.js +114 -90
  101. package/dist/middleware/exception.filter.js.map +1 -1
  102. package/dist/middleware/global.middleware.js +10 -18
  103. package/dist/middleware/global.middleware.js.map +1 -1
  104. package/dist/middleware/param-converter.middleware.js +5 -13
  105. package/dist/middleware/param-converter.middleware.js.map +1 -1
  106. package/dist/middleware/passport.js +2 -2
  107. package/dist/middleware/passport.js.map +1 -1
  108. package/dist/middleware/printer-resolver.js.map +1 -1
  109. package/dist/middleware/printer.js +3 -2
  110. package/dist/middleware/printer.js.map +1 -1
  111. package/dist/middleware/socketio.middleware.js.map +1 -1
  112. package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js +1 -1
  113. package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js.map +1 -1
  114. package/dist/migrations/1766576698569-DropPermissions.js +28 -0
  115. package/dist/migrations/1766576698569-DropPermissions.js.map +1 -0
  116. package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js +186 -0
  117. package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js.map +1 -0
  118. package/dist/migrations/1767279607392-DropCustomGcode.js +31 -0
  119. package/dist/migrations/1767279607392-DropCustomGcode.js.map +1 -0
  120. package/dist/migrations/1767291804417-DropPrintCompletions.js +37 -0
  121. package/dist/migrations/1767291804417-DropPrintCompletions.js.map +1 -0
  122. package/dist/migrations/1767352862576-DropSettingsFileClean.js +88 -0
  123. package/dist/migrations/1767352862576-DropSettingsFileClean.js.map +1 -0
  124. package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js +107 -0
  125. package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js.map +1 -0
  126. package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js +62 -0
  127. package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js.map +1 -0
  128. package/dist/migrations/1767432108916-RenameGroupToTag.js +86 -0
  129. package/dist/migrations/1767432108916-RenameGroupToTag.js.map +1 -0
  130. package/dist/migrations/1767451444137-AddPrintJob.js +207 -0
  131. package/dist/migrations/1767451444137-AddPrintJob.js.map +1 -0
  132. package/dist/server.constants.js +9 -17
  133. package/dist/server.constants.js.map +1 -1
  134. package/dist/server.core.js +3 -7
  135. package/dist/server.core.js.map +1 -1
  136. package/dist/server.env.js +4 -49
  137. package/dist/server.env.js.map +1 -1
  138. package/dist/server.host.js +26 -44
  139. package/dist/server.host.js.map +1 -1
  140. package/dist/services/authentication/auth.service.js.map +1 -1
  141. package/dist/services/authentication/jwt.service.js.map +1 -1
  142. package/dist/services/bambu/bambu-ftp.adapter.js +3 -3
  143. package/dist/services/bambu/bambu-ftp.adapter.js.map +1 -1
  144. package/dist/services/bambu/bambu-mqtt.adapter.js +74 -77
  145. package/dist/services/bambu/bambu-mqtt.adapter.js.map +1 -1
  146. package/dist/services/bambu/bambu.client.js.map +1 -1
  147. package/dist/services/bambu.api.js +11 -0
  148. package/dist/services/bambu.api.js.map +1 -1
  149. package/dist/services/core/batch-call.service.js +0 -25
  150. package/dist/services/core/batch-call.service.js.map +1 -1
  151. package/dist/services/core/multer.service.js +5 -9
  152. package/dist/services/core/multer.service.js.map +1 -1
  153. package/dist/services/core/yaml.service.js +219 -187
  154. package/dist/services/core/yaml.service.js.map +1 -1
  155. package/dist/services/file-analysis.service.js +146 -0
  156. package/dist/services/file-analysis.service.js.map +1 -0
  157. package/dist/services/file-storage.service.js +386 -0
  158. package/dist/services/file-storage.service.js.map +1 -0
  159. package/dist/services/interfaces/camera-stream.dto.js +2 -2
  160. package/dist/services/interfaces/camera-stream.dto.js.map +1 -1
  161. package/dist/services/interfaces/floor.dto.js +3 -3
  162. package/dist/services/interfaces/floor.dto.js.map +1 -1
  163. package/dist/services/interfaces/{printer-group.dto.js → printer-tag.dto.js} +9 -8
  164. package/dist/services/interfaces/printer-tag.dto.js.map +1 -0
  165. package/dist/services/interfaces/{print-completion.interface.js → printer-tag.service.interface.js} +1 -1
  166. package/dist/services/interfaces/{printer-group.service.interface.js.map → printer-tag.service.interface.js.map} +1 -1
  167. package/dist/services/interfaces/printer.dto.js +2 -2
  168. package/dist/services/interfaces/printer.dto.js.map +1 -1
  169. package/dist/services/interfaces/refresh-token.dto.js.map +1 -1
  170. package/dist/services/interfaces/role.dto.js.map +1 -1
  171. package/dist/services/interfaces/settings.dto.js +0 -1
  172. package/dist/services/interfaces/settings.dto.js.map +1 -1
  173. package/dist/services/interfaces/{group.dto.js → tag.dto.js} +1 -1
  174. package/dist/services/interfaces/tag.dto.js.map +1 -0
  175. package/dist/services/interfaces/user.dto.js.map +1 -1
  176. package/dist/services/moonraker/constants/moonraker-event.dto.js.map +1 -1
  177. package/dist/services/moonraker/moonraker-websocket.adapter.js.map +1 -1
  178. package/dist/services/moonraker/moonraker.client.js.map +1 -1
  179. package/dist/services/moonraker.api.js +3 -0
  180. package/dist/services/moonraker.api.js.map +1 -1
  181. package/dist/services/octoprint/dto/files/gcode-analysis.dto.js.map +1 -0
  182. package/dist/services/octoprint/dto/octoprint-event.dto.js.map +1 -1
  183. package/dist/services/octoprint/octoprint-api.routes.js +0 -7
  184. package/dist/services/octoprint/octoprint-api.routes.js.map +1 -1
  185. package/dist/services/octoprint/octoprint-websocket.adapter.js.map +1 -1
  186. package/dist/services/octoprint/octoprint.client.js +0 -4
  187. package/dist/services/octoprint/octoprint.client.js.map +1 -1
  188. package/dist/services/octoprint.api.js +3 -0
  189. package/dist/services/octoprint.api.js.map +1 -1
  190. package/dist/services/orm/base.service.js.map +1 -1
  191. package/dist/services/orm/camera-stream.service.js.map +1 -1
  192. package/dist/services/orm/floor-position.service.js.map +1 -1
  193. package/dist/services/orm/floor.service.js +12 -19
  194. package/dist/services/orm/floor.service.js.map +1 -1
  195. package/dist/services/orm/permission.service.js +3 -54
  196. package/dist/services/orm/permission.service.js.map +1 -1
  197. package/dist/services/orm/print-job.service.js +539 -0
  198. package/dist/services/orm/print-job.service.js.map +1 -0
  199. package/dist/services/orm/printer-tag.service.js +120 -0
  200. package/dist/services/orm/printer-tag.service.js.map +1 -0
  201. package/dist/services/orm/printer.service.js.map +1 -1
  202. package/dist/services/orm/refresh-token.service.js.map +1 -1
  203. package/dist/services/orm/role.service.js +25 -39
  204. package/dist/services/orm/role.service.js.map +1 -1
  205. package/dist/services/orm/settings.service.js +4 -15
  206. package/dist/services/orm/settings.service.js.map +1 -1
  207. package/dist/services/orm/user.service.js +17 -13
  208. package/dist/services/orm/user.service.js.map +1 -1
  209. package/dist/services/print-file-downloader.service.js +169 -0
  210. package/dist/services/print-file-downloader.service.js.map +1 -0
  211. package/dist/services/print-queue.service.js +268 -0
  212. package/dist/services/print-queue.service.js.map +1 -0
  213. package/dist/services/printer-api.factory.js +1 -1
  214. package/dist/services/printer-api.factory.js.map +1 -1
  215. package/dist/services/printer-api.interface.js.map +1 -1
  216. package/dist/services/prusa-link/constants/prusalink-event.dto.js.map +1 -1
  217. package/dist/services/prusa-link/prusa-link-http-polling.adapter.js +1 -3
  218. package/dist/services/prusa-link/prusa-link-http-polling.adapter.js.map +1 -1
  219. package/dist/services/prusa-link/prusa-link.api.js +4 -1
  220. package/dist/services/prusa-link/prusa-link.api.js.map +1 -1
  221. package/dist/services/prusa-link/utils/prusa-link-http-client.builder.js.map +1 -1
  222. package/dist/services/validators/floor-service.validation.js +25 -31
  223. package/dist/services/validators/floor-service.validation.js.map +1 -1
  224. package/dist/services/validators/print-job.validation.js +31 -0
  225. package/dist/services/validators/print-job.validation.js.map +1 -0
  226. package/dist/services/validators/settings-service.validation.js +0 -22
  227. package/dist/services/validators/settings-service.validation.js.map +1 -1
  228. package/dist/services/validators/user-service.validation.js +15 -10
  229. package/dist/services/validators/user-service.validation.js.map +1 -1
  230. package/dist/services/validators/yaml-service.validation.js +8 -14
  231. package/dist/services/validators/yaml-service.validation.js.map +1 -1
  232. package/dist/shared/load-controllers.js +2 -1
  233. package/dist/shared/load-controllers.js.map +1 -1
  234. package/dist/shared/runtime-settings.migration.js +1 -11
  235. package/dist/shared/runtime-settings.migration.js.map +1 -1
  236. package/dist/shared/websocket-rpc-extended.adapter.js +13 -4
  237. package/dist/shared/websocket-rpc-extended.adapter.js.map +1 -1
  238. package/dist/shared/websocket.adapter.js.map +1 -1
  239. package/dist/state/file-upload-tracker.cache.js.map +1 -1
  240. package/dist/state/file.cache.js +6 -6
  241. package/dist/state/file.cache.js.map +1 -1
  242. package/dist/state/floor.store.js +3 -10
  243. package/dist/state/floor.store.js.map +1 -1
  244. package/dist/state/printer-events.cache.js +180 -20
  245. package/dist/state/printer-events.cache.js.map +1 -1
  246. package/dist/state/printer-files.store.js.map +1 -1
  247. package/dist/state/printer-socket.store.js +25 -20
  248. package/dist/state/printer-socket.store.js.map +1 -1
  249. package/dist/state/printer-thumbnail.cache.js +98 -188
  250. package/dist/state/printer-thumbnail.cache.js.map +1 -1
  251. package/dist/state/printer.cache.js +3 -13
  252. package/dist/state/printer.cache.js.map +1 -1
  253. package/dist/state/settings.store.js +4 -42
  254. package/dist/state/settings.store.js.map +1 -1
  255. package/dist/state/socket-io.gateway.js +1 -1
  256. package/dist/state/socket-io.gateway.js.map +1 -1
  257. package/dist/state/test-printer-socket.store.js +6 -3
  258. package/dist/state/test-printer-socket.store.js.map +1 -1
  259. package/dist/tasks/boot.task.js +11 -91
  260. package/dist/tasks/boot.task.js.map +1 -1
  261. package/dist/tasks/print-job-analysis.task.js +116 -0
  262. package/dist/tasks/print-job-analysis.task.js.map +1 -0
  263. package/dist/tasks/printer-files-load.task.js +29 -0
  264. package/dist/tasks/printer-files-load.task.js.map +1 -0
  265. package/dist/tasks/socketio.task.js +1 -1
  266. package/dist/tasks/socketio.task.js.map +1 -1
  267. package/dist/tasks.js +3 -2
  268. package/dist/tasks.js.map +1 -1
  269. package/dist/utils/cache/key-diff.cache.js +20 -61
  270. package/dist/utils/cache/key-diff.cache.js.map +1 -1
  271. package/dist/utils/parsers/3mf.parser.js +337 -0
  272. package/dist/utils/parsers/3mf.parser.js.map +1 -0
  273. package/dist/utils/parsers/bgcode.parser.js +223 -0
  274. package/dist/utils/parsers/bgcode.parser.js.map +1 -0
  275. package/dist/utils/parsers/gcode.parser.js +254 -0
  276. package/dist/utils/parsers/gcode.parser.js.map +1 -0
  277. package/dist/utils/swagger/decorators.js +39 -0
  278. package/dist/utils/swagger/decorators.js.map +1 -0
  279. package/dist/utils/swagger/generator.js +196 -0
  280. package/dist/utils/swagger/generator.js.map +1 -0
  281. package/dist/utils/swagger/swagger.js +93 -0
  282. package/dist/utils/swagger/swagger.js.map +1 -0
  283. package/package.json +24 -30
  284. package/dist/controllers/custom-gcode.controller.js +0 -150
  285. package/dist/controllers/custom-gcode.controller.js.map +0 -1
  286. package/dist/controllers/print-completion.controller.js +0 -118
  287. package/dist/controllers/print-completion.controller.js.map +0 -1
  288. package/dist/controllers/printer-group.controller.js.map +0 -1
  289. package/dist/entities/custom-gcode.entity.js +0 -49
  290. package/dist/entities/custom-gcode.entity.js.map +0 -1
  291. package/dist/entities/group.entity.js.map +0 -1
  292. package/dist/entities/permission.entity.js +0 -37
  293. package/dist/entities/permission.entity.js.map +0 -1
  294. package/dist/entities/print-completion.entity.js +0 -90
  295. package/dist/entities/print-completion.entity.js.map +0 -1
  296. package/dist/entities/printer-group.entity.js.map +0 -1
  297. package/dist/models/Auth/Permission.js +0 -20
  298. package/dist/models/Auth/Permission.js.map +0 -1
  299. package/dist/models/Auth/RefreshToken.js +0 -41
  300. package/dist/models/Auth/RefreshToken.js.map +0 -1
  301. package/dist/models/Auth/Role.js +0 -20
  302. package/dist/models/Auth/Role.js.map +0 -1
  303. package/dist/models/Auth/User.js +0 -49
  304. package/dist/models/Auth/User.js.map +0 -1
  305. package/dist/models/CameraStream.js +0 -49
  306. package/dist/models/CameraStream.js.map +0 -1
  307. package/dist/models/CustomGcode.js +0 -28
  308. package/dist/models/CustomGcode.js.map +0 -1
  309. package/dist/models/Floor.js +0 -33
  310. package/dist/models/Floor.js.map +0 -1
  311. package/dist/models/FloorPrinter.js +0 -38
  312. package/dist/models/FloorPrinter.js.map +0 -1
  313. package/dist/models/PrintCompletion.js +0 -40
  314. package/dist/models/PrintCompletion.js.map +0 -1
  315. package/dist/models/Printer.js +0 -78
  316. package/dist/models/Printer.js.map +0 -1
  317. package/dist/models/Settings.js +0 -150
  318. package/dist/models/Settings.js.map +0 -1
  319. package/dist/models/index.js +0 -54
  320. package/dist/models/index.js.map +0 -1
  321. package/dist/mongo-migrations/20210713120034-printers-settingsapperance-apikey.js +0 -45
  322. package/dist/mongo-migrations/20210713120034-printers-settingsapperance-apikey.js.map +0 -1
  323. package/dist/mongo-migrations/20210907173950-printers-enabled.js +0 -35
  324. package/dist/mongo-migrations/20210907173950-printers-enabled.js.map +0 -1
  325. package/dist/mongo-migrations/20211029110742-user-password-passwordhash.js +0 -35
  326. package/dist/mongo-migrations/20211029110742-user-password-passwordhash.js.map +0 -1
  327. package/dist/mongo-migrations/20230414141005-floor-remove-groupinfloor.js +0 -60
  328. package/dist/mongo-migrations/20230414141005-floor-remove-groupinfloor.js.map +0 -1
  329. package/dist/mongo-migrations/20230427202911-printer-remove-sortindex.js +0 -30
  330. package/dist/mongo-migrations/20230427202911-printer-remove-sortindex.js.map +0 -1
  331. package/dist/mongo-migrations/20230716065316-user-remove-name.js +0 -30
  332. package/dist/mongo-migrations/20230716065316-user-remove-name.js.map +0 -1
  333. package/dist/mongo-migrations/20231111081809-printer-flatten-name.js +0 -35
  334. package/dist/mongo-migrations/20231111081809-printer-flatten-name.js.map +0 -1
  335. package/dist/mongo-migrations/20231111082521-printer-remove-settingsappearance.js +0 -41
  336. package/dist/mongo-migrations/20231111082521-printer-remove-settingsappearance.js.map +0 -1
  337. package/dist/mongo-migrations/20231202183902-printer-files-simpler.js +0 -41
  338. package/dist/mongo-migrations/20231202183902-printer-files-simpler.js.map +0 -1
  339. package/dist/services/interfaces/custom-gcode.dto.js +0 -18
  340. package/dist/services/interfaces/custom-gcode.dto.js.map +0 -1
  341. package/dist/services/interfaces/custom-gcode.service.interface.js +0 -6
  342. package/dist/services/interfaces/custom-gcode.service.interface.js.map +0 -1
  343. package/dist/services/interfaces/gcode-analysis.dto.js.map +0 -1
  344. package/dist/services/interfaces/group.dto.js.map +0 -1
  345. package/dist/services/interfaces/permission.dto.js +0 -16
  346. package/dist/services/interfaces/permission.dto.js.map +0 -1
  347. package/dist/services/interfaces/print-completion-context.dto.js +0 -6
  348. package/dist/services/interfaces/print-completion-context.dto.js.map +0 -1
  349. package/dist/services/interfaces/print-completion.dto.js +0 -38
  350. package/dist/services/interfaces/print-completion.dto.js.map +0 -1
  351. package/dist/services/interfaces/print-completion.interface.js.map +0 -1
  352. package/dist/services/interfaces/printer-group.dto.js.map +0 -1
  353. package/dist/services/interfaces/printer-group.service.interface.js +0 -6
  354. package/dist/services/mongoose/camera-stream.service.js +0 -67
  355. package/dist/services/mongoose/camera-stream.service.js.map +0 -1
  356. package/dist/services/mongoose/custom-gcode.service.js +0 -50
  357. package/dist/services/mongoose/custom-gcode.service.js.map +0 -1
  358. package/dist/services/mongoose/floor.service.js +0 -139
  359. package/dist/services/mongoose/floor.service.js.map +0 -1
  360. package/dist/services/mongoose/permission.service.js +0 -73
  361. package/dist/services/mongoose/permission.service.js.map +0 -1
  362. package/dist/services/mongoose/print-completion.service.js +0 -134
  363. package/dist/services/mongoose/print-completion.service.js.map +0 -1
  364. package/dist/services/mongoose/print-completion.shared.js +0 -59
  365. package/dist/services/mongoose/print-completion.shared.js.map +0 -1
  366. package/dist/services/mongoose/printer.service.js +0 -216
  367. package/dist/services/mongoose/printer.service.js.map +0 -1
  368. package/dist/services/mongoose/refresh-token.service.js +0 -104
  369. package/dist/services/mongoose/refresh-token.service.js.map +0 -1
  370. package/dist/services/mongoose/role.service.js +0 -132
  371. package/dist/services/mongoose/role.service.js.map +0 -1
  372. package/dist/services/mongoose/settings.service.js +0 -124
  373. package/dist/services/mongoose/settings.service.js.map +0 -1
  374. package/dist/services/mongoose/user.service.js +0 -180
  375. package/dist/services/mongoose/user.service.js.map +0 -1
  376. package/dist/services/orm/custom-gcode.service.js +0 -42
  377. package/dist/services/orm/custom-gcode.service.js.map +0 -1
  378. package/dist/services/orm/print-completion.service.js +0 -87
  379. package/dist/services/orm/print-completion.service.js.map +0 -1
  380. package/dist/services/orm/printer-group.service.js +0 -109
  381. package/dist/services/orm/printer-group.service.js.map +0 -1
  382. package/dist/services/validators/camera-service.validation.js +0 -19
  383. package/dist/services/validators/camera-service.validation.js.map +0 -1
  384. package/dist/services/validators/print-completion-service.validation.js +0 -33
  385. package/dist/services/validators/print-completion-service.validation.js.map +0 -1
  386. package/dist/shared.constants.js +0 -15
  387. package/dist/shared.constants.js.map +0 -1
  388. package/dist/tasks/print-completion.socketio.task.js +0 -91
  389. package/dist/tasks/print-completion.socketio.task.js.map +0 -1
  390. package/dist/tasks/printer-file-clean.task.js +0 -74
  391. package/dist/tasks/printer-file-clean.task.js.map +0 -1
  392. package/migrate-mongo-config.js +0 -45
  393. /package/dist/services/{interfaces → octoprint/dto/files}/gcode-analysis.dto.js +0 -0
@@ -18,7 +18,7 @@ async function interceptDatabaseError(req, res, next) {
18
18
  res.status(500);
19
19
  res.send({
20
20
  databaseReadyState: serverHost.hasConnected(),
21
- state: "Retrying mongo connection. Please contact the developer if this persists."
21
+ state: "Retrying database connection. Please contact the developer if this persists."
22
22
  });
23
23
  }
24
24
  }
@@ -2,9 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- Object.defineProperty(exports, "exceptionFilter", {
6
- enumerable: true,
7
- get: function() {
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 ExceptionFilter () {
13
+ return ExceptionFilter;
14
+ },
15
+ get exceptionFilter () {
8
16
  return exceptionFilter;
9
17
  }
10
18
  });
@@ -12,95 +20,111 @@ const _runtimeexceptions = require("../exceptions/runtime.exceptions");
12
20
  const _serverconstants = require("../server.constants");
13
21
  const _typeorm = require("typeorm");
14
22
  const _faileddependencyexception = require("../exceptions/failed-dependency.exception");
15
- function exceptionFilter(err, _req, res, next) {
16
- const isTest = process.env.NODE_ENV === _serverconstants.AppConstants.defaultTestEnv;
17
- if (!isTest) {
18
- console.error("[API Exception Handler]", err.stack || err?.response?.data);
19
- }
20
- if (err.isAxiosError) {
21
- const code = err.response?.status || 500;
22
- res.status(code).send({
23
- error: "External API call failed",
24
- type: "axios-error",
25
- data: err.response?.data?._readableState ? null : err.response?.data
26
- });
27
- return;
28
- }
29
- if (err instanceof _runtimeexceptions.AuthenticationError) {
30
- res.status(401).send({
31
- error: err.message,
32
- reasonCode: err.reasonCode
33
- });
34
- return;
35
- }
36
- if (err instanceof _runtimeexceptions.AuthorizationError) {
37
- const permissions = err.permissions;
38
- const roles = err.roles;
39
- const error = err.message || "You lack permission to this resource";
40
- const reason = err.reason;
41
- res.status(403).send({
42
- error,
43
- reason,
44
- permissions,
45
- roles
46
- });
47
- return;
48
- }
49
- if (err instanceof _runtimeexceptions.ForbiddenError) {
50
- res.status(403).send({
51
- error: err.message
52
- });
53
- return;
54
- }
55
- if (err instanceof _runtimeexceptions.NotFoundException || err instanceof _typeorm.EntityNotFoundError) {
56
- res.status(404).send({
57
- error: err.message
58
- });
59
- return;
23
+ class ExceptionFilter {
24
+ logger;
25
+ constructor(loggerFactory){
26
+ this.logger = loggerFactory(ExceptionFilter.name);
60
27
  }
61
- if (err instanceof _runtimeexceptions.BadRequestException) {
62
- res.status(400).send({
63
- error: err.message
64
- });
65
- return;
28
+ handle(err, _req, res, next) {
29
+ const isTest = process.env.NODE_ENV === _serverconstants.AppConstants.defaultTestEnv;
30
+ if (!isTest) {
31
+ this.logger.error("API Exception occurred", {
32
+ message: err.message,
33
+ stack: err.stack || err?.response?.data,
34
+ url: _req?.url,
35
+ method: _req?.method,
36
+ userAgent: _req?.headers?.['user-agent'],
37
+ errorType: err.constructor.name
38
+ });
39
+ }
40
+ if (err.isAxiosError) {
41
+ const code = err.response?.status || 500;
42
+ res.status(code).send({
43
+ error: "External API call failed",
44
+ type: "axios-error",
45
+ data: err.response?.data?._readableState ? null : err.response?.data
46
+ });
47
+ return;
48
+ }
49
+ if (err instanceof _runtimeexceptions.AuthenticationError) {
50
+ res.status(401).send({
51
+ error: err.message,
52
+ reasonCode: err.reasonCode
53
+ });
54
+ return;
55
+ }
56
+ if (err instanceof _runtimeexceptions.AuthorizationError) {
57
+ const permissions = err.permissions;
58
+ const roles = err.roles;
59
+ const error = err.message || "You lack permission to this resource";
60
+ const reason = err.reason;
61
+ res.status(403).send({
62
+ error,
63
+ reason,
64
+ permissions,
65
+ roles
66
+ });
67
+ return;
68
+ }
69
+ if (err instanceof _runtimeexceptions.ForbiddenError) {
70
+ res.status(403).send({
71
+ error: err.message
72
+ });
73
+ return;
74
+ }
75
+ if (err instanceof _runtimeexceptions.NotFoundException || err instanceof _typeorm.EntityNotFoundError) {
76
+ res.status(404).send({
77
+ error: err.message
78
+ });
79
+ return;
80
+ }
81
+ if (err instanceof _runtimeexceptions.BadRequestException) {
82
+ res.status(400).send({
83
+ error: err.message
84
+ });
85
+ return;
86
+ }
87
+ if (err instanceof _runtimeexceptions.ValidationException) {
88
+ res.status(400).send({
89
+ error: "API could not accept this input",
90
+ type: err.name,
91
+ errors: err.errors
92
+ });
93
+ return;
94
+ }
95
+ if (err instanceof _faileddependencyexception.FailedDependencyException) {
96
+ res.status(424).send({
97
+ error: err.message,
98
+ serviceCode: err.serviceCode,
99
+ type: err.name
100
+ });
101
+ return;
102
+ }
103
+ if (err instanceof _runtimeexceptions.InternalServerException) {
104
+ res.status(500).send({
105
+ error: err.message,
106
+ type: err.name,
107
+ stack: err.stack
108
+ });
109
+ return;
110
+ }
111
+ if (err instanceof _runtimeexceptions.ExternalServiceError) {
112
+ res.status(500).send(err.error);
113
+ return;
114
+ }
115
+ if (err) {
116
+ res.status(500).send({
117
+ error: "Server experienced an internal error",
118
+ type: err.name,
119
+ stack: err.stack
120
+ });
121
+ return;
122
+ }
123
+ next();
66
124
  }
67
- if (err instanceof _runtimeexceptions.ValidationException) {
68
- res.status(400).send({
69
- error: "API could not accept this input",
70
- type: err.name,
71
- errors: err.errors
72
- });
73
- return;
74
- }
75
- if (err instanceof _faileddependencyexception.FailedDependencyException) {
76
- res.status(424).send({
77
- error: err.message,
78
- serviceCode: err.serviceCode,
79
- type: err.name
80
- });
81
- return;
82
- }
83
- if (err instanceof _runtimeexceptions.InternalServerException) {
84
- res.status(500).send({
85
- error: err.message,
86
- type: err.name,
87
- stack: err.stack
88
- });
89
- return;
90
- }
91
- if (err instanceof _runtimeexceptions.ExternalServiceError) {
92
- res.status(500).send(err.error);
93
- return;
94
- }
95
- if (!!err) {
96
- res.status(500).send({
97
- error: "Server experienced an internal error",
98
- type: err.name,
99
- stack: err.stack
100
- });
101
- return;
102
- }
103
- next();
125
+ }
126
+ function exceptionFilter(_err, _req, _res, _next) {
127
+ throw new Error("Use ExceptionFilter class instead of exceptionFilter function. Please inject ExceptionFilter and use .handle method.");
104
128
  }
105
129
 
106
130
  //# sourceMappingURL=exception.filter.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/middleware/exception.filter.ts"],"names":["exceptionFilter","err","_req","res","next","isTest","process","env","NODE_ENV","AppConstants","defaultTestEnv","console","error","stack","response","data","isAxiosError","code","status","send","type","_readableState","AuthenticationError","message","reasonCode","AuthorizationError","permissions","roles","reason","ForbiddenError","NotFoundException","EntityNotFoundError","BadRequestException","ValidationException","name","errors","FailedDependencyException","serviceCode","InternalServerException","ExternalServiceError"],"mappings":";;;;+BAgBgBA;;;eAAAA;;;mCAPT;iCACsB;yBAGO;2CACM;AAEnC,SAASA,gBAAgBC,GAAqB,EAAEC,IAAmB,EAAEC,GAAa,EAAEC,IAAkB;IAC3G,MAAMC,SAASC,QAAQC,GAAG,CAACC,QAAQ,KAAKC,6BAAY,CAACC,cAAc;IACnE,IAAI,CAACL,QAAQ;QACXM,QAAQC,KAAK,CAAC,2BAA2BX,IAAIY,KAAK,IAAIZ,KAAKa,UAAUC;IACvE;IACA,IAAId,IAAIe,YAAY,EAAE;QACpB,MAAMC,OAAOhB,IAAIa,QAAQ,EAAEI,UAAU;QACrCf,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAC;YACpBP,OAAO;YACPQ,MAAM;YACNL,MAAMd,IAAIa,QAAQ,EAAEC,MAAMM,iBAAiB,OAAOpB,IAAIa,QAAQ,EAAEC;QAClE;QACA;IACF;IACA,IAAId,eAAeqB,sCAAmB,EAAE;QACtCnB,IAAIe,MAAM,CAAC,KAAKC,IAAI,CAAC;YAAEP,OAAOX,IAAIsB,OAAO;YAAEC,YAAYvB,IAAIuB,UAAU;QAAC;QACtE;IACF;IACA,IAAIvB,eAAewB,qCAAkB,EAAE;QACrC,MAAMC,cAAczB,IAAIyB,WAAW;QACnC,MAAMC,QAAQ1B,IAAI0B,KAAK;QACvB,MAAMf,QAAQX,IAAIsB,OAAO,IAAI;QAC7B,MAAMK,SAAS3B,IAAI2B,MAAM;QACzBzB,IAAIe,MAAM,CAAC,KAAKC,IAAI,CAAC;YAAEP;YAAOgB;YAAQF;YAAaC;QAAM;QACzD;IACF;IACA,IAAI1B,eAAe4B,iCAAc,EAAE;QACjC1B,IAAIe,MAAM,CAAC,KAAKC,IAAI,CAAC;YAAEP,OAAOX,IAAIsB,OAAO;QAAC;QAC1C;IACF;IACA,IAAItB,eAAe6B,oCAAiB,IAAI7B,eAAe8B,4BAAmB,EAAE;QAC1E5B,IAAIe,MAAM,CAAC,KAAKC,IAAI,CAAC;YAAEP,OAAOX,IAAIsB,OAAO;QAAC;QAC1C;IACF;IACA,IAAItB,eAAe+B,sCAAmB,EAAE;QACtC7B,IAAIe,MAAM,CAAC,KAAKC,IAAI,CAAC;YAAEP,OAAOX,IAAIsB,OAAO;QAAC;QAC1C;IACF;IACA,IAAItB,eAAegC,sCAAmB,EAAE;QACtC9B,IAAIe,MAAM,CAAC,KAAKC,IAAI,CAAC;YACnBP,OAAO;YACPQ,MAAMnB,IAAIiC,IAAI;YACdC,QAAQlC,IAAIkC,MAAM;QACpB;QACA;IACF;IACA,IAAIlC,eAAemC,oDAAyB,EAAE;QAC5CjC,IAAIe,MAAM,CAAC,KAAKC,IAAI,CAAC;YACnBP,OAAOX,IAAIsB,OAAO;YAClBc,aAAapC,IAAIoC,WAAW;YAC5BjB,MAAMnB,IAAIiC,IAAI;QAChB;QACA;IACF;IACA,IAAIjC,eAAeqC,0CAAuB,EAAE;QAC1CnC,IAAIe,MAAM,CAAC,KAAKC,IAAI,CAAC;YACnBP,OAAOX,IAAIsB,OAAO;YAClBH,MAAMnB,IAAIiC,IAAI;YACdrB,OAAOZ,IAAIY,KAAK;QAClB;QACA;IACF;IACA,IAAIZ,eAAesC,uCAAoB,EAAE;QACvCpC,IAAIe,MAAM,CAAC,KAAKC,IAAI,CAAClB,IAAIW,KAAK;QAC9B;IACF;IACA,IAAI,CAAC,CAACX,KAAK;QACTE,IAAIe,MAAM,CAAC,KAAKC,IAAI,CAAC;YACnBP,OAAO;YACPQ,MAAMnB,IAAIiC,IAAI;YACdrB,OAAOZ,IAAIY,KAAK;QAClB;QACA;IACF;IAGAT;AACF"}
1
+ {"version":3,"sources":["../../src/middleware/exception.filter.ts"],"names":["ExceptionFilter","exceptionFilter","logger","loggerFactory","name","handle","err","_req","res","next","isTest","process","env","NODE_ENV","AppConstants","defaultTestEnv","error","message","stack","response","data","url","method","userAgent","headers","errorType","isAxiosError","code","status","send","type","_readableState","AuthenticationError","reasonCode","AuthorizationError","permissions","roles","reason","ForbiddenError","NotFoundException","EntityNotFoundError","BadRequestException","ValidationException","errors","FailedDependencyException","serviceCode","InternalServerException","ExternalServiceError","_err","_res","_next","Error"],"mappings":";;;;;;;;;;;QAkBaA;eAAAA;;QA+FGC;eAAAA;;;mCAxGT;iCACsB;yBAGO;2CACM;AAInC,MAAMD;IACME,OAAsB;IAEvC,YAAYC,aAA6B,CAAE;QACzC,IAAI,CAACD,MAAM,GAAGC,cAAcH,gBAAgBI,IAAI;IAClD;IAEAC,OAAOC,GAAqB,EAAEC,IAAmB,EAAEC,GAAa,EAAEC,IAAkB,EAAQ;QAC1F,MAAMC,SAASC,QAAQC,GAAG,CAACC,QAAQ,KAAKC,6BAAY,CAACC,cAAc;QACnE,IAAI,CAACL,QAAQ;YACX,IAAI,CAACR,MAAM,CAACc,KAAK,CAAC,0BAA0B;gBAC1CC,SAASX,IAAIW,OAAO;gBACpBC,OAAOZ,IAAIY,KAAK,IAAIZ,KAAKa,UAAUC;gBACnCC,KAAKd,MAAMc;gBACXC,QAAQf,MAAMe;gBACdC,WAAWhB,MAAMiB,SAAS,CAAC,aAAa;gBACxCC,WAAWnB,IAAI,WAAW,CAACF,IAAI;YACjC;QACF;QACA,IAAIE,IAAIoB,YAAY,EAAE;YACpB,MAAMC,OAAOrB,IAAIa,QAAQ,EAAES,UAAU;YACrCpB,IAAIoB,MAAM,CAACD,MAAME,IAAI,CAAC;gBACpBb,OAAO;gBACPc,MAAM;gBACNV,MAAMd,IAAIa,QAAQ,EAAEC,MAAMW,iBAAiB,OAAOzB,IAAIa,QAAQ,EAAEC;YAClE;YACA;QACF;QACA,IAAId,eAAe0B,sCAAmB,EAAE;YACtCxB,IAAIoB,MAAM,CAAC,KAAKC,IAAI,CAAC;gBAAEb,OAAOV,IAAIW,OAAO;gBAAEgB,YAAY3B,IAAI2B,UAAU;YAAC;YACtE;QACF;QACA,IAAI3B,eAAe4B,qCAAkB,EAAE;YACrC,MAAMC,cAAc7B,IAAI6B,WAAW;YACnC,MAAMC,QAAQ9B,IAAI8B,KAAK;YACvB,MAAMpB,QAAQV,IAAIW,OAAO,IAAI;YAC7B,MAAMoB,SAAS/B,IAAI+B,MAAM;YACzB7B,IAAIoB,MAAM,CAAC,KAAKC,IAAI,CAAC;gBAAEb;gBAAOqB;gBAAQF;gBAAaC;YAAM;YACzD;QACF;QACA,IAAI9B,eAAegC,iCAAc,EAAE;YACjC9B,IAAIoB,MAAM,CAAC,KAAKC,IAAI,CAAC;gBAAEb,OAAOV,IAAIW,OAAO;YAAC;YAC1C;QACF;QACA,IAAIX,eAAeiC,oCAAiB,IAAIjC,eAAekC,4BAAmB,EAAE;YAC1EhC,IAAIoB,MAAM,CAAC,KAAKC,IAAI,CAAC;gBAAEb,OAAOV,IAAIW,OAAO;YAAC;YAC1C;QACF;QACA,IAAIX,eAAemC,sCAAmB,EAAE;YACtCjC,IAAIoB,MAAM,CAAC,KAAKC,IAAI,CAAC;gBAAEb,OAAOV,IAAIW,OAAO;YAAC;YAC1C;QACF;QACA,IAAIX,eAAeoC,sCAAmB,EAAE;YACtClC,IAAIoB,MAAM,CAAC,KAAKC,IAAI,CAAC;gBACnBb,OAAO;gBACPc,MAAMxB,IAAIF,IAAI;gBACduC,QAAQrC,IAAIqC,MAAM;YACpB;YACA;QACF;QACA,IAAIrC,eAAesC,oDAAyB,EAAE;YAC5CpC,IAAIoB,MAAM,CAAC,KAAKC,IAAI,CAAC;gBACnBb,OAAOV,IAAIW,OAAO;gBAClB4B,aAAavC,IAAIuC,WAAW;gBAC5Bf,MAAMxB,IAAIF,IAAI;YAChB;YACA;QACF;QACA,IAAIE,eAAewC,0CAAuB,EAAE;YAC1CtC,IAAIoB,MAAM,CAAC,KAAKC,IAAI,CAAC;gBACnBb,OAAOV,IAAIW,OAAO;gBAClBa,MAAMxB,IAAIF,IAAI;gBACdc,OAAOZ,IAAIY,KAAK;YAClB;YACA;QACF;QACA,IAAIZ,eAAeyC,uCAAoB,EAAE;YACvCvC,IAAIoB,MAAM,CAAC,KAAKC,IAAI,CAACvB,IAAIU,KAAK;YAC9B;QACF;QACA,IAAIV,KAAK;YACPE,IAAIoB,MAAM,CAAC,KAAKC,IAAI,CAAC;gBACnBb,OAAO;gBACPc,MAAMxB,IAAIF,IAAI;gBACdc,OAAOZ,IAAIY,KAAK;YAClB;YACA;QACF;QAGAT;IACF;AACF;AAGO,SAASR,gBAAgB+C,IAAsB,EAAEzC,IAAmB,EAAE0C,IAAc,EAAEC,KAAmB;IAC9G,MAAM,IAAIC,MAAM;AAClB"}
@@ -18,7 +18,7 @@ _export(exports, {
18
18
  });
19
19
  const _awilixexpress = require("awilix-express");
20
20
  const _runtimeexceptions = require("../exceptions/runtime.exceptions");
21
- const validateWizardCompleted = (0, _awilixexpress.inject)((configService, settingsStore, loggerFactory)=>async (req, res, next)=>{
21
+ const validateWizardCompleted = (0, _awilixexpress.inject)((configService, settingsStore, loggerFactory)=>async (req, _res, next)=>{
22
22
  const logger = loggerFactory(validateWizardCompleted.name);
23
23
  const isDemoMode = configService.isDemoMode();
24
24
  if (isDemoMode || !!settingsStore.getWizardSettings()?.wizardCompleted) {
@@ -26,32 +26,24 @@ const validateWizardCompleted = (0, _awilixexpress.inject)((configService, setti
26
26
  return;
27
27
  }
28
28
  const allowedPaths = [
29
- "/api/first-time-setup/complete",
30
- "/api/first-time-setup/validate",
31
- "/api/first-time-setup/yaml-import",
32
- "/api/test",
33
- "/api/auth/login-required"
29
+ "/api/v2/first-time-setup/complete",
30
+ "/api/v2/first-time-setup/validate",
31
+ "/api/v2/first-time-setup/yaml-import",
32
+ "/api/v2/test",
33
+ "/api/v2/auth/login-required"
34
34
  ];
35
- if (allowedPaths.includes(req.path) || !req.path.startsWith("/api")) {
35
+ if (allowedPaths.includes(req.path) || !req.path.startsWith("/api/v2") || req.path.startsWith("/api-docs")) {
36
36
  next();
37
- return;
38
37
  } else {
39
38
  logger.error("Wizard not completed", req.path);
40
39
  throw new _runtimeexceptions.ForbiddenError(`First-time-setup not completed, these api paths are enabled: ${allowedPaths.join(", ")}`);
41
40
  }
42
41
  });
43
- const interceptRoles = (0, _awilixexpress.inject)((settingsStore, roleService, isTypeormMode)=>async (req, res, next)=>{
42
+ const interceptRoles = (0, _awilixexpress.inject)((settingsStore, roleService)=>async (req, _res, next)=>{
44
43
  const serverSettings = settingsStore.getSettings();
45
- if (isTypeormMode) {
46
- req.roles = (req.user?.roles ?? []).map((r)=>r.roleId);
47
- } else {
48
- req.roles = req.user?.roles;
49
- }
44
+ req.roles = req.user?.roles ?? [];
50
45
  if (serverSettings && !req.user) {
51
- const roleName = await roleService.getAppDefaultRole();
52
- req.roles = [
53
- roleName
54
- ];
46
+ req.roles = await roleService.getAppDefaultRoleNames();
55
47
  }
56
48
  next();
57
49
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/middleware/global.middleware.ts"],"names":["interceptRoles","validateWizardCompleted","inject","configService","settingsStore","loggerFactory","req","res","next","logger","name","isDemoMode","getWizardSettings","wizardCompleted","allowedPaths","includes","path","startsWith","error","ForbiddenError","join","roleService","isTypeormMode","serverSettings","getSettings","roles","user","map","r","roleId","roleName","getAppDefaultRole"],"mappings":";;;;;;;;;;;QAuCaA;eAAAA;;QA7BAC;eAAAA;;;+BAVU;mCACQ;AASxB,MAAMA,0BAA0BC,IAAAA,qBAAM,EAC3C,CAACC,eAA+BC,eAA8BC,gBAC5D,OAAOC,KAAcC,KAAeC;QAClC,MAAMC,SAASJ,cAAcJ,wBAAwBS,IAAI;QACzD,MAAMC,aAAaR,cAAcQ,UAAU;QAC3C,IAAIA,cAAc,CAAC,CAACP,cAAcQ,iBAAiB,IAAIC,iBAAiB;YACtEL;YACA;QACF;QAEA,MAAMM,eAAe;YACnB;YACA;YACA;YACA;YACA;SACD;QACD,IAAIA,aAAaC,QAAQ,CAACT,IAAIU,IAAI,KAAK,CAACV,IAAIU,IAAI,CAACC,UAAU,CAAC,SAAS;YACnET;YACA;QACF,OAAO;YACLC,OAAOS,KAAK,CAAC,wBAAwBZ,IAAIU,IAAI;YAC7C,MAAM,IAAIG,iCAAc,CACtB,CAAC,6DAA6D,EAAEL,aAAaM,IAAI,CAAC,OAAO;QAE7F;IACF;AAGG,MAAMpB,iBAAiBE,IAAAA,qBAAM,EAClC,CAACE,eAA8BiB,aAA2BC,gBACxD,OAAOhB,KAAcC,KAAeC;QAClC,MAAMe,iBAAiBnB,cAAcoB,WAAW;QAEhD,IAAIF,eAAe;YACjBhB,IAAImB,KAAK,GAAG,AAACnB,CAAAA,IAAIoB,IAAI,EAAED,SAAuB,EAAE,AAAD,EAAGE,GAAG,CAAC,CAACC,IAAgBA,EAAEC,MAAM;QACjF,OAAO;YACLvB,IAAImB,KAAK,GAAGnB,IAAIoB,IAAI,EAAED;QACxB;QAGA,IAAIF,kBAAkB,CAACjB,IAAIoB,IAAI,EAAE;YAC/B,MAAMI,WAAW,MAAMT,YAAYU,iBAAiB;YACpDzB,IAAImB,KAAK,GAAG;gBAACK;aAAS;QACxB;QAEAtB;IACF"}
1
+ {"version":3,"sources":["../../src/middleware/global.middleware.ts"],"names":["interceptRoles","validateWizardCompleted","inject","configService","settingsStore","loggerFactory","req","_res","next","logger","name","isDemoMode","getWizardSettings","wizardCompleted","allowedPaths","includes","path","startsWith","error","ForbiddenError","join","roleService","serverSettings","getSettings","roles","user","getAppDefaultRoleNames"],"mappings":";;;;;;;;;;;QAoCaA;eAAAA;;QA5BAC;eAAAA;;;+BARU;mCACQ;AAOxB,MAAMA,0BAA0BC,IAAAA,qBAAM,EAC3C,CAACC,eAA+BC,eAA8BC,gBAC5D,OAAOC,KAAcC,MAAgBC;QACnC,MAAMC,SAASJ,cAAcJ,wBAAwBS,IAAI;QACzD,MAAMC,aAAaR,cAAcQ,UAAU;QAC3C,IAAIA,cAAc,CAAC,CAACP,cAAcQ,iBAAiB,IAAIC,iBAAiB;YACtEL;YACA;QACF;QAEA,MAAMM,eAAe;YACnB;YACA;YACA;YACA;YACA;SACD;QACD,IAAIA,aAAaC,QAAQ,CAACT,IAAIU,IAAI,KAAK,CAACV,IAAIU,IAAI,CAACC,UAAU,CAAC,cAAcX,IAAIU,IAAI,CAACC,UAAU,CAAC,cAAc;YAC1GT;QACF,OAAO;YACLC,OAAOS,KAAK,CAAC,wBAAwBZ,IAAIU,IAAI;YAC7C,MAAM,IAAIG,iCAAc,CACtB,CAAC,6DAA6D,EAAEL,aAAaM,IAAI,CAAC,OAAO;QAE7F;IACF;AAGG,MAAMpB,iBAAiBE,IAAAA,qBAAM,EAClC,CAACE,eAA8BiB,cAC7B,OAAOf,KAAcC,MAAgBC;QACnC,MAAMc,iBAAiBlB,cAAcmB,WAAW;QAEhDjB,IAAIkB,KAAK,GAAGlB,IAAImB,IAAI,EAAED,SAAS,EAAE;QAGjC,IAAIF,kBAAkB,CAAChB,IAAImB,IAAI,EAAE;YAC/BnB,IAAIkB,KAAK,GAAG,MAAMH,YAAYK,sBAAsB;QACtD;QAEAlB;IACF"}
@@ -22,10 +22,8 @@ _export(exports, {
22
22
  return ParamString;
23
23
  }
24
24
  });
25
- const _containertokens = require("../container.tokens");
26
25
  const _validators = require("../handlers/validators");
27
26
  const _genericvalidation = require("../controllers/validation/generic.validation");
28
- const _lodash = require("lodash");
29
27
  const ParamInt = (paramName)=>createParamDecorator(paramName, Number);
30
28
  const ParamBool = (paramName)=>createParamDecorator(paramName, Boolean);
31
29
  const ParamString = (paramName)=>createParamDecorator(paramName, String);
@@ -37,10 +35,9 @@ function createParamDecorator(paramName, type) {
37
35
  return res.status(400).send(`Missing parameter: ${paramName}`);
38
36
  }
39
37
  let convertedValue;
40
- const isTypeormMode = req.container?.resolve(_containertokens.DITokens.isTypeormMode);
41
38
  let validateIdAsType = null;
42
39
  if (type === "id") {
43
- validateIdAsType = isTypeormMode ? Number : String;
40
+ validateIdAsType = Number;
44
41
  }
45
42
  if (type === Boolean) {
46
43
  if (paramValue.toLowerCase() === "true") {
@@ -51,23 +48,18 @@ function createParamDecorator(paramName, type) {
51
48
  return res.status(400).send(`Invalid boolean: ${paramName}`);
52
49
  }
53
50
  } else if (type === Number || validateIdAsType === Number) {
54
- convertedValue = parseInt(paramValue, 10);
55
- if (isNaN(convertedValue)) {
51
+ convertedValue = Number.parseInt(paramValue, 10);
52
+ if (Number.isNaN(convertedValue)) {
56
53
  return res.status(400).send(`Invalid number: ${paramName}`);
57
54
  }
58
- } else if (type === String || validateIdAsType === String) {
59
- convertedValue = paramValue;
60
- if (!(0, _lodash.isString)(convertedValue)) {
61
- return res.status(400).send(`Invalid string: ${paramName}`);
62
- }
63
55
  } else {
64
56
  return res.status(400).send(`Unknown type of: ${paramName}`);
65
57
  }
66
- if (validateIdAsType === String || validateIdAsType === Number) {
58
+ if (validateIdAsType === Number) {
67
59
  try {
68
60
  await (0, _validators.validateInput)({
69
61
  id: convertedValue
70
- }, (0, _genericvalidation.idRulesV2)(isTypeormMode));
62
+ }, _genericvalidation.idRulesV2);
71
63
  } catch (e) {
72
64
  return next(e);
73
65
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/middleware/param-converter.middleware.ts"],"names":["ParamBool","ParamId","ParamInt","ParamString","paramName","createParamDecorator","Number","Boolean","String","type","req","res","next","paramValue","params","undefined","status","send","convertedValue","isTypeormMode","container","resolve","DITokens","validateIdAsType","toLowerCase","parseInt","isNaN","isString","validateInput","id","idRulesV2","e","local"],"mappings":";;;;;;;;;;;QAOaA;eAAAA;;QAEAC;eAAAA;;QAHAC;eAAAA;;QAEAC;eAAAA;;;iCAPY;4BACK;mCACJ;wBACD;AAElB,MAAMD,WAAW,CAACE,YAAsBC,qBAAqBD,WAAWE;AACxE,MAAMN,YAAY,CAACI,YAAsBC,qBAAqBD,WAAWG;AACzE,MAAMJ,cAAc,CAACC,YAAsBC,qBAAqBD,WAAWI;AAC3E,MAAMP,UAAU,CAACG,YAAsBC,qBAAqBD,WAAW;AAE9E,SAASC,qBACPD,SAAiB,EACjBK,IAAuE;IAEvE,OAAO,OAAOC,KAAgDC,KAAeC;QAC3E,MAAMC,aAAaH,IAAII,MAAM,CAACV,UAAU;QAExC,IAAIS,eAAeE,WAAW;YAC5B,OAAOJ,IAAIK,MAAM,CAAC,KAAKC,IAAI,CAAC,CAAC,mBAAmB,EAAEb,WAAW;QAC/D;QAEA,IAAIc;QAGJ,MAAMC,gBAAgBT,IAAIU,SAAS,EAAEC,QAAQC,yBAAQ,CAACH,aAAa;QACnE,IAAII,mBAAmB;QACvB,IAAId,SAAS,MAAM;YACjBc,mBAAmBJ,gBAAgBb,SAASE;QAC9C;QAEA,IAAIC,SAASF,SAAS;YACpB,IAAIM,WAAWW,WAAW,OAAO,QAAQ;gBACvCN,iBAAiB;YACnB,OAAO,IAAIL,WAAWW,WAAW,OAAO,SAAS;gBAC/CN,iBAAiB;YACnB,OAAO;gBACL,OAAOP,IAAIK,MAAM,CAAC,KAAKC,IAAI,CAAC,CAAC,iBAAiB,EAAEb,WAAW;YAC7D;QACF,OAAO,IAAIK,SAASH,UAAUiB,qBAAqBjB,QAAQ;YACzDY,iBAAiBO,SAASZ,YAAY;YACtC,IAAIa,MAAMR,iBAAiB;gBACzB,OAAOP,IAAIK,MAAM,CAAC,KAAKC,IAAI,CAAC,CAAC,gBAAgB,EAAEb,WAAW;YAC5D;QACF,OAAO,IAAIK,SAASD,UAAUe,qBAAqBf,QAAQ;YACzDU,iBAAiBL;YACjB,IAAI,CAACc,IAAAA,gBAAQ,EAACT,iBAAiB;gBAC7B,OAAOP,IAAIK,MAAM,CAAC,KAAKC,IAAI,CAAC,CAAC,gBAAgB,EAAEb,WAAW;YAC5D;QACF,OAAO;YAEL,OAAOO,IAAIK,MAAM,CAAC,KAAKC,IAAI,CAAC,CAAC,iBAAiB,EAAEb,WAAW;QAC7D;QAGA,IAAImB,qBAAqBf,UAAUe,qBAAqBjB,QAAQ;YAC9D,IAAI;gBACF,MAAMsB,IAAAA,yBAAa,EAAC;oBAAEC,IAAIX;gBAAe,GAAGY,IAAAA,4BAAS,EAACX;YACxD,EAAE,OAAOY,GAAG;gBACV,OAAOnB,KAAKmB;YACd;QACF;QAEArB,IAAIsB,KAAK,GAAGtB,IAAIsB,KAAK,IAAI,CAAC;QAC1BtB,IAAIsB,KAAK,CAAC5B,UAAU,GAAGc;QAEvBN;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/middleware/param-converter.middleware.ts"],"names":["ParamBool","ParamId","ParamInt","ParamString","paramName","createParamDecorator","Number","Boolean","String","type","req","res","next","paramValue","params","undefined","status","send","convertedValue","validateIdAsType","toLowerCase","parseInt","isNaN","validateInput","id","idRulesV2","e","local"],"mappings":";;;;;;;;;;;QAKaA;eAAAA;;QAEAC;eAAAA;;QAHAC;eAAAA;;QAEAC;eAAAA;;;4BALiB;mCACJ;AAEnB,MAAMD,WAAW,CAACE,YAAsBC,qBAAqBD,WAAWE;AACxE,MAAMN,YAAY,CAACI,YAAsBC,qBAAqBD,WAAWG;AACzE,MAAMJ,cAAc,CAACC,YAAsBC,qBAAqBD,WAAWI;AAC3E,MAAMP,UAAU,CAACG,YAAsBC,qBAAqBD,WAAW;AAE9E,SAASC,qBACPD,SAAiB,EACjBK,IAAuE;IAEvE,OAAO,OAAOC,KAAgDC,KAAeC;QAC3E,MAAMC,aAAaH,IAAII,MAAM,CAACV,UAAU;QAExC,IAAIS,eAAeE,WAAW;YAC5B,OAAOJ,IAAIK,MAAM,CAAC,KAAKC,IAAI,CAAC,CAAC,mBAAmB,EAAEb,WAAW;QAC/D;QAEA,IAAIc;QAEJ,IAAIC,mBAAmB;QACvB,IAAIV,SAAS,MAAM;YACjBU,mBAAmBb;QACrB;QAEA,IAAIG,SAASF,SAAS;YACpB,IAAIM,WAAWO,WAAW,OAAO,QAAQ;gBACvCF,iBAAiB;YACnB,OAAO,IAAIL,WAAWO,WAAW,OAAO,SAAS;gBAC/CF,iBAAiB;YACnB,OAAO;gBACL,OAAOP,IAAIK,MAAM,CAAC,KAAKC,IAAI,CAAC,CAAC,iBAAiB,EAAEb,WAAW;YAC7D;QACF,OAAO,IAAIK,SAASH,UAAUa,qBAAqBb,QAAQ;YACzDY,iBAAiBZ,OAAOe,QAAQ,CAACR,YAAY;YAC7C,IAAIP,OAAOgB,KAAK,CAACJ,iBAAiB;gBAChC,OAAOP,IAAIK,MAAM,CAAC,KAAKC,IAAI,CAAC,CAAC,gBAAgB,EAAEb,WAAW;YAC5D;QACF,OAAO;YAEL,OAAOO,IAAIK,MAAM,CAAC,KAAKC,IAAI,CAAC,CAAC,iBAAiB,EAAEb,WAAW;QAC7D;QAGA,IAAIe,qBAAqBb,QAAQ;YAC/B,IAAI;gBACF,MAAMiB,IAAAA,yBAAa,EAAC;oBAAEC,IAAIN;gBAAe,GAAGO,4BAAS;YACvD,EAAE,OAAOC,GAAG;gBACV,OAAOd,KAAKc;YACd;QACF;QAEAhB,IAAIiB,KAAK,GAAGjB,IAAIiB,KAAK,IAAI,CAAC;QAC1BjB,IAAIiB,KAAK,CAACvB,UAAU,GAAGc;QAEvBN;IACF;AACF"}
@@ -39,8 +39,8 @@ function getPassportJwtOptions(settingsStore, configService, jwtFromRequest = _p
39
39
  function verifyUserCallback(userService) {
40
40
  return function(jwt_payload, done) {
41
41
  userService.getUser(jwt_payload.userId).then((user)=>{
42
- if (user && user.isVerified && !user.needsPasswordChange) {
43
- return done(null, user);
42
+ if (user?.isVerified && !user.needsPasswordChange) {
43
+ return done(null, userService.toDto(user));
44
44
  }
45
45
  if (user?.needsPasswordChange) {
46
46
  return done(new _runtimeexceptions.AuthenticationError("Password change required", _authorizationconstants.AUTH_ERROR_REASON.PasswordChangeRequired), false);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/middleware/passport.ts"],"names":["getPassportJwtOptions","initializePassportStrategies","verifyUserCallback","settingsStore","configService","jwtFromRequest","ExtractJwt","fromAuthHeaderAsBearerToken","secretOrKeyProvider","_req","_token","done","jwtSecret","getCredentialSettings","audience","get","AppConstants","OVERRIDE_JWT_AUDIENCE","DEFAULT_JWT_AUDIENCE","issuer","OVERRIDE_JWT_ISSUER","DEFAULT_JWT_ISSUER","userService","jwt_payload","getUser","userId","then","user","isVerified","needsPasswordChange","AuthenticationError","AUTH_ERROR_REASON","PasswordChangeRequired","AccountNotVerified","catch","err","passport","container","resolve","DITokens","opts","use","JwtStrategy","AnonymousStrategy"],"mappings":";;;;;;;;;;;QAuBgBA;eAAAA;;QA4CAC;eAAAA;;QA5BAC;eAAAA;;;6BAjCT;mCACuC;iCACrB;iCACI;mCAQO;wCACF;AAK3B,SAASF,sBACdG,aAA4B,EAC5BC,aAA4B,EAC5BC,iBAAiEC,uBAAU,CAACC,2BAA2B,EAAE;IAEzG,OAAO;QACLF,gBAAgBA;QAChBG,qBAAqB,OAAOC,MAAMC,QAAgBC;YAChD,MAAM,EAAEC,SAAS,EAAE,GAAG,MAAMT,cAAcU,qBAAqB;YAC/D,OAAOF,KAAK,MAAMC;QACpB;QACAE,UAAUV,cAAcW,GAAG,CAACC,6BAAY,CAACC,qBAAqB,EAAED,6BAAY,CAACE,oBAAoB;QACjGC,QAAQf,cAAcW,GAAG,CAACC,6BAAY,CAACI,mBAAmB,EAAEJ,6BAAY,CAACK,kBAAkB;IAC7F;AACF;AAEO,SAASnB,mBAAmBoB,WAAyB;IAC1D,OAAO,SAAUC,WAAgB,EAAEZ,IAAsB;QACvDW,YACGE,OAAO,CAACD,YAAYE,MAAM,EAC1BC,IAAI,CAAC,CAACC;YACL,IAAIA,QAAQA,KAAKC,UAAU,IAAI,CAACD,KAAKE,mBAAmB,EAAE;gBACxD,OAAOlB,KAAK,MAAMgB;YACpB;YACA,IAAIA,MAAME,qBAAqB;gBAC7B,OAAOlB,KACL,IAAImB,sCAAmB,CAAC,4BAA4BC,yCAAiB,CAACC,sBAAsB,GAC5F;YAEJ;YACA,IAAI,CAACL,MAAMC,YAAY;gBACrB,OAAOjB,KAAK,IAAImB,sCAAmB,CAAC,qBAAqBC,yCAAiB,CAACE,kBAAkB,GAAG;YAClG;YAEA,OAAOtB,KAAK,MAAM;QACpB,GACCuB,KAAK,CAAC,CAACC;YACN,IAAIA,KAAK;gBACP,OAAOxB,KAAKwB,KAAK;YACnB;QACF;IACJ;AACF;AAEO,SAASlC,6BAA6BmC,QAAwB,EAAEC,SAA0B;IAC/F,MAAMlC,gBAAgBkC,UAAUC,OAAO,CAAgBC,yBAAQ,CAACpC,aAAa;IAC7E,MAAMC,gBAAgBiC,UAAUC,OAAO,CAAgBC,yBAAQ,CAACnC,aAAa;IAC7E,MAAMkB,cAAce,UAAUC,OAAO,CAAeC,yBAAQ,CAACjB,WAAW;IAExE,MAAMkB,OAAOxC,sBAAsBG,eAAeC,eAAeE,uBAAU,CAACC,2BAA2B;IAEvG6B,SAASK,GAAG,CACV,IAAIC,qBAAW,CAACF,MAAM,SAAUjB,WAAgB,EAAEZ,IAAsB;QACtET,mBAAmBoB,aAAaC,aAAaZ;IAC/C;IAEFyB,SAASK,GAAG,CAAC,IAAIE,2BAAiB;IAClC,OAAOP;AACT"}
1
+ {"version":3,"sources":["../../src/middleware/passport.ts"],"names":["getPassportJwtOptions","initializePassportStrategies","verifyUserCallback","settingsStore","configService","jwtFromRequest","ExtractJwt","fromAuthHeaderAsBearerToken","secretOrKeyProvider","_req","_token","done","jwtSecret","getCredentialSettings","audience","get","AppConstants","OVERRIDE_JWT_AUDIENCE","DEFAULT_JWT_AUDIENCE","issuer","OVERRIDE_JWT_ISSUER","DEFAULT_JWT_ISSUER","userService","jwt_payload","getUser","userId","then","user","isVerified","needsPasswordChange","toDto","AuthenticationError","AUTH_ERROR_REASON","PasswordChangeRequired","AccountNotVerified","catch","err","passport","container","resolve","DITokens","opts","use","JwtStrategy","AnonymousStrategy"],"mappings":";;;;;;;;;;;QAsBgBA;eAAAA;;QA4CAC;eAAAA;;QA5BAC;eAAAA;;;6BAhCT;mCACuC;iCACrB;iCACI;mCAOO;wCACF;AAK3B,SAASF,sBACdG,aAA4B,EAC5BC,aAA4B,EAC5BC,iBAAiEC,uBAAU,CAACC,2BAA2B,EAAE;IAEzG,OAAO;QACLF,gBAAgBA;QAChBG,qBAAqB,OAAOC,MAAMC,QAAgBC;YAChD,MAAM,EAAEC,SAAS,EAAE,GAAG,MAAMT,cAAcU,qBAAqB;YAC/D,OAAOF,KAAK,MAAMC;QACpB;QACAE,UAAUV,cAAcW,GAAG,CAACC,6BAAY,CAACC,qBAAqB,EAAED,6BAAY,CAACE,oBAAoB;QACjGC,QAAQf,cAAcW,GAAG,CAACC,6BAAY,CAACI,mBAAmB,EAAEJ,6BAAY,CAACK,kBAAkB;IAC7F;AACF;AAEO,SAASnB,mBAAmBoB,WAAyB;IAC1D,OAAO,SAAUC,WAAgB,EAAEZ,IAAsB;QACvDW,YACGE,OAAO,CAACD,YAAYE,MAAM,EAC1BC,IAAI,CAAC,CAACC;YACL,IAAIA,MAAMC,cAAc,CAACD,KAAKE,mBAAmB,EAAE;gBACjD,OAAOlB,KAAK,MAAMW,YAAYQ,KAAK,CAACH;YACtC;YACA,IAAIA,MAAME,qBAAqB;gBAC7B,OAAOlB,KACL,IAAIoB,sCAAmB,CAAC,4BAA4BC,yCAAiB,CAACC,sBAAsB,GAC5F;YAEJ;YACA,IAAI,CAACN,MAAMC,YAAY;gBACrB,OAAOjB,KAAK,IAAIoB,sCAAmB,CAAC,qBAAqBC,yCAAiB,CAACE,kBAAkB,GAAG;YAClG;YAEA,OAAOvB,KAAK,MAAM;QACpB,GACCwB,KAAK,CAAC,CAACC;YACN,IAAIA,KAAK;gBACP,OAAOzB,KAAKyB,KAAK;YACnB;QACF;IACJ;AACF;AAEO,SAASnC,6BAA6BoC,QAAwB,EAAEC,SAA0B;IAC/F,MAAMnC,gBAAgBmC,UAAUC,OAAO,CAAgBC,yBAAQ,CAACrC,aAAa;IAC7E,MAAMC,gBAAgBkC,UAAUC,OAAO,CAAgBC,yBAAQ,CAACpC,aAAa;IAC7E,MAAMkB,cAAcgB,UAAUC,OAAO,CAAeC,yBAAQ,CAAClB,WAAW;IAExE,MAAMmB,OAAOzC,sBAAsBG,eAAeC,eAAeE,uBAAU,CAACC,2BAA2B;IAEvG8B,SAASK,GAAG,CACV,IAAIC,qBAAW,CAACF,MAAM,SAAUlB,WAAgB,EAAEZ,IAAsB;QACtET,mBAAmBoB,aAAaC,aAAaZ;IAC/C;IAEF0B,SAASK,GAAG,CAAC,IAAIE,2BAAiB;IAClC,OAAOP;AACT"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/middleware/printer-resolver.ts"],"names":["getScopedPrinter","req","errors","resolve","token","dep","container","push","InternalServerException","printerApi","printerApiToken","loginDto","printerLoginToken","printerDto","currentPrinterToken","printerId","printerIdToken","length","ValidationException"],"mappings":";;;;+BASgBA;;;eAAAA;;;yBARwE;mCAI3B;AAItD,SAASA,iBAAiBC,GAAY;IAC3C,MAAMC,SAAmB,EAAE;IAE3B,MAAMC,UAAU,CAAIC;QAClB,IAAI;YACF,MAAMC,MAAMJ,IAAIK,SAAS,CAACH,OAAO,CAAIC;YACrC,IAAI,CAACC,KAAKH,OAAOK,IAAI,CAAC,CAAC,mBAAmB,EAAEH,MAAM,mBAAmB,CAAC;YACtE,OAAOC;QACT,EAAE,OAAM;YACN,MAAM,IAAIG,0CAAuB,CAAC,CAAC,WAAW,EAAEJ,MAAM,wCAAwC,CAAC;QACjG;IACF;IAEA,MAAMK,aAAaN,QAAqBO,wBAAe;IACvD,MAAMC,WAAWR,QAAkBS,0BAAiB;IACpD,MAAMC,aAAaV,QAA4BW,4BAAmB;IAClE,MAAMC,YAAYZ,QAAgBa,uBAAc;IAEhD,IAAId,OAAOe,MAAM,EAAE,MAAM,IAAIC,sCAAmB,CAAChB;IAEjD,OAAO;QACL,CAACQ,wBAAe,CAAC,EAAED;QACnB,CAACG,0BAAiB,CAAC,EAAED;QACrB,CAACG,4BAAmB,CAAC,EAAED;QACvB,CAACG,uBAAc,CAAC,EAAED;IACpB;AACF"}
1
+ {"version":3,"sources":["../../src/middleware/printer-resolver.ts"],"names":["getScopedPrinter","req","errors","resolve","token","dep","container","push","InternalServerException","printerApi","printerApiToken","loginDto","printerLoginToken","printerDto","currentPrinterToken","printerId","printerIdToken","length","ValidationException"],"mappings":";;;;+BAOgBA;;;eAAAA;;;yBANwE;mCAG3B;AAGtD,SAASA,iBAAiBC,GAAY;IAC3C,MAAMC,SAAmB,EAAE;IAE3B,MAAMC,UAAU,CAAIC;QAClB,IAAI;YACF,MAAMC,MAAMJ,IAAIK,SAAS,CAACH,OAAO,CAAIC;YACrC,IAAI,CAACC,KAAKH,OAAOK,IAAI,CAAC,CAAC,mBAAmB,EAAEH,MAAM,mBAAmB,CAAC;YACtE,OAAOC;QACT,EAAE,OAAM;YACN,MAAM,IAAIG,0CAAuB,CAAC,CAAC,WAAW,EAAEJ,MAAM,wCAAwC,CAAC;QACjG;IACF;IAEA,MAAMK,aAAaN,QAAqBO,wBAAe;IACvD,MAAMC,WAAWR,QAAkBS,0BAAiB;IACpD,MAAMC,aAAaV,QAAoBW,4BAAmB;IAC1D,MAAMC,YAAYZ,QAAgBa,uBAAc;IAEhD,IAAId,OAAOe,MAAM,EAAE,MAAM,IAAIC,sCAAmB,CAAChB;IAEjD,OAAO;QACL,CAACQ,wBAAe,CAAC,EAAED;QACnB,CAACG,0BAAiB,CAAC,EAAED;QACrB,CAACG,4BAAmB,CAAC,EAAED;QACvB,CAACG,uBAAc,CAAC,EAAED;IACpB;AACF"}
@@ -41,8 +41,9 @@ const printerResolveMiddleware = (key = "id")=>{
41
41
  const bambuEnabled = settingsService.getServerSettings().experimentalBambuSupport;
42
42
  let scopedPrinter = undefined;
43
43
  let loginDto = undefined;
44
- const printerId = req.params[key];
45
- if (printerId) {
44
+ const printerIdParam = req.params[key];
45
+ if (printerIdParam) {
46
+ const printerId = Number.parseInt(printerIdParam, 10);
46
47
  scopedPrinter = printerCache.getCachedPrinterOrThrow(printerId);
47
48
  loginDto = printerCache.getLoginDto(printerId);
48
49
  req.container.register({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/middleware/printer.ts"],"names":["currentPrinterToken","printerApiToken","printerIdToken","printerLoginToken","printerResolveMiddleware","key","req","res","next","printerCache","container","resolve","DITokens","settingsService","settingsStore","moonrakerEnabled","getServerSettings","experimentalMoonrakerSupport","prusaLinkEnabled","experimentalPrusaLinkSupport","bambuEnabled","experimentalBambuSupport","scopedPrinter","undefined","loginDto","printerId","params","getCachedPrinterOrThrow","getLoginDto","register","asValue","printerType","OctoprintType","octoprintApiInstance","octoprintApi","MoonrakerType","moonrakerInstance","moonrakerApi","PrusaLinkType","prusaLinkInstance","prusaLinkApi","BambuType","bambuInstance","bambuApi","setPrinterId"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/middleware/printer.ts"],"names":["currentPrinterToken","printerApiToken","printerIdToken","printerLoginToken","printerResolveMiddleware","key","req","res","next","printerCache","container","resolve","DITokens","settingsService","settingsStore","moonrakerEnabled","getServerSettings","experimentalMoonrakerSupport","prusaLinkEnabled","experimentalPrusaLinkSupport","bambuEnabled","experimentalBambuSupport","scopedPrinter","undefined","loginDto","printerIdParam","params","printerId","Number","parseInt","getCachedPrinterOrThrow","getLoginDto","register","asValue","printerType","OctoprintType","octoprintApiInstance","octoprintApi","MoonrakerType","moonrakerInstance","moonrakerApi","PrusaLinkType","prusaLinkInstance","prusaLinkApi","BambuType","bambuInstance","bambuApi","setPrinterId"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/middleware/socketio.middleware.ts"],"names":["authorize","settingsStore","options","logger","verify","strategy","PassportJwtStrategy","authorizeCallback","socket","next","getLoginRequired","success","_user","fail","info","warn","reason","Error","error","authenticate"],"mappings":";;;;+BAQaA;;;eAAAA;;;6BAPkF;AAOxF,MAAMA,YAAY,CACvBC,eACAC,SACAC,QACAC;IAEA,MAAMC,WAAW,IAAIC,qBAAmB,CAACJ,SAASE;IAElD,OAAO,eAAeG,kBACpBC,MAAkD,EAClDC,IAAmC;QAEnC,IAAI,CAAE,MAAMR,cAAcS,gBAAgB,IAAK;YAE7C,OAAOD;QACT;QAEAJ,SAASM,OAAO,GAAG,SAASA,QAAQC,KAAY;YAG9CH;QACF;QACAJ,SAASQ,IAAI,GAAG,CAACC;YACfX,OAAOY,IAAI,CAAC,CAAC,+CAA+C,EAAED,KAAK,CAAC,CAAC,EAAE;gBAAEE,QAAQF;YAAK;YACtFL,KAAK,IAAIQ,MAAMH;QACjB;QACAT,SAASa,KAAK,GAAG,CAACA;YAChBf,OAAOY,IAAI,CAAC;YACZN,KAAKS;QACP;QAEAb,SAASc,YAAY,CAACX,QAAe,CAAC;IACxC;AACF"}
1
+ {"version":3,"sources":["../../src/middleware/socketio.middleware.ts"],"names":["authorize","settingsStore","options","logger","verify","strategy","PassportJwtStrategy","authorizeCallback","socket","next","getLoginRequired","success","_user","fail","info","warn","reason","Error","error","authenticate"],"mappings":";;;;+BAQaA;;;eAAAA;;;6BAPkF;AAOxF,MAAMA,YAAY,CACvBC,eACAC,SACAC,QACAC;IAEA,MAAMC,WAAW,IAAIC,qBAAmB,CAACJ,SAASE;IAElD,OAAO,eAAeG,kBACpBC,MAAkD,EAClDC,IAAmC;QAEnC,IAAI,CAAE,MAAMR,cAAcS,gBAAgB,IAAK;YAE7C,OAAOD;QACT;QAEAJ,SAASM,OAAO,GAAG,SAASA,QAAQC,KAAW;YAG7CH;QACF;QACAJ,SAASQ,IAAI,GAAG,CAACC;YACfX,OAAOY,IAAI,CAAC,CAAC,+CAA+C,EAAED,KAAK,CAAC,CAAC,EAAE;gBAAEE,QAAQF;YAAK;YACtFL,KAAK,IAAIQ,MAAMH;QACjB;QACAT,SAASa,KAAK,GAAG,CAACA;YAChBf,OAAOY,IAAI,CAAC;YACZN,KAAKS;QACP;QAEAb,SAASc,YAAY,CAACX,QAAe,CAAC;IACxC;AACF"}
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "AddPrinterUsernamePassword1745141688926", {
9
9
  }
10
10
  });
11
11
  class AddPrinterUsernamePassword1745141688926 {
12
- name = 'AddPrinterUsernamePassword1745141688926';
12
+ name = "AddPrinterUsernamePassword1745141688926";
13
13
  async up(queryRunner) {
14
14
  await queryRunner.query(`
15
15
  CREATE TABLE "temporary_printer" (
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/migrations/1745141688926-AddPrinterUsernamePassword.ts"],"names":["AddPrinterUsernamePassword1745141688926","name","up","queryRunner","query","down"],"mappings":";;;;+BAEaA;;;eAAAA;;;AAAN,MAAMA;IACXC,OAAO,0CAAyC;IAEhD,MAAaC,GAAGC,WAAwB,EAAiB;QACvD,MAAMA,YAAYC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;;;IAgBzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;IA0BzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;IAEzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;IAGzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;;;IAgBzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8BzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;QAErB,CAAC;QACL,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;QAGrB,CAAC;IACP;IAEA,MAAaC,KAAKF,WAAwB,EAAiB;QACzD,MAAMA,YAAYC,KAAK,CAAC,CAAC;;;IAGzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;;;IAgBzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8BzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;IAEzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;QAGrB,CAAC;QACL,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;QAcrB,CAAC;QACL,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;QA0BrB,CAAC;QACL,MAAMD,YAAYC,KAAK,CAAC,CAAC;;QAErB,CAAC;IACP;AAEF"}
1
+ {"version":3,"sources":["../../src/migrations/1745141688926-AddPrinterUsernamePassword.ts"],"names":["AddPrinterUsernamePassword1745141688926","name","up","queryRunner","query","down"],"mappings":";;;;+BAEaA;;;eAAAA;;;AAAN,MAAMA;IACXC,OAAO,0CAA0C;IAEjD,MAAaC,GAAGC,WAAwB,EAAiB;QACvD,MAAMA,YAAYC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;;;IAgBzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;IA0BzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;IAEzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;IAGzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;;;IAgBzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8BzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;QAErB,CAAC;QACL,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;QAGrB,CAAC;IACP;IAEA,MAAaC,KAAKF,WAAwB,EAAiB;QACzD,MAAMA,YAAYC,KAAK,CAAC,CAAC;;;IAGzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;;;IAgBzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8BzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;IAEzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;QAGrB,CAAC;QACL,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;QAcrB,CAAC;QACL,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;QA0BrB,CAAC;QACL,MAAMD,YAAYC,KAAK,CAAC,CAAC;;QAErB,CAAC;IACP;AACF"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "DropPermissions1766576698569", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return DropPermissions1766576698569;
9
+ }
10
+ });
11
+ class DropPermissions1766576698569 {
12
+ async up(queryRunner) {
13
+ await queryRunner.query(`
14
+ DROP TABLE permission
15
+ `);
16
+ }
17
+ async down(queryRunner) {
18
+ await queryRunner.query(`
19
+ CREATE TABLE "permission"
20
+ (
21
+ "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
22
+ "name" varchar NOT NULL
23
+ )
24
+ `);
25
+ }
26
+ }
27
+
28
+ //# sourceMappingURL=1766576698569-DropPermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/migrations/1766576698569-DropPermissions.ts"],"names":["DropPermissions1766576698569","up","queryRunner","query","down"],"mappings":";;;;+BAEaA;;;eAAAA;;;AAAN,MAAMA;IACX,MAAaC,GAAGC,WAAwB,EAAiB;QACvD,MAAMA,YAAYC,KAAK,CAAC,CAAC;;IAEzB,CAAC;IACH;IAEA,MAAaC,KAAKF,WAAwB,EAAiB;QACzD,MAAMA,YAAYC,KAAK,CAAC,CAAC;;;;;;IAMzB,CAAC;IACH;AACF"}