@fdm-monster/server 1.5.0-rc1

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 (377) hide show
  1. package/.env +19 -0
  2. package/.env.template +43 -0
  3. package/.gitattributes +1 -0
  4. package/.idea/codeStyles/Project.xml +85 -0
  5. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  6. package/.idea/dbnavigator.xml +574 -0
  7. package/.idea/fdm-monster.iml +16 -0
  8. package/.idea/inspectionProfiles/Project_Default.xml +22 -0
  9. package/.idea/jsLibraryMappings.xml +6 -0
  10. package/.idea/modules.xml +12 -0
  11. package/.idea/prettier.xml +6 -0
  12. package/.idea/vcs.xml +17 -0
  13. package/.swcrc +33 -0
  14. package/CODE_OF_CONDUCT.md +46 -0
  15. package/CONTRIBUTING.md +134 -0
  16. package/LICENSE +661 -0
  17. package/README.md +149 -0
  18. package/SECURITY.md +16 -0
  19. package/dist/@type/express/index.d.js +7 -0
  20. package/dist/@type/express/index.d.js.map +1 -0
  21. package/dist/constants/authorization.constants.js +99 -0
  22. package/dist/constants/authorization.constants.js.map +1 -0
  23. package/dist/constants/event.constants.js +55 -0
  24. package/dist/constants/event.constants.js.map +1 -0
  25. package/dist/constants/http-status-codes.constants.js +268 -0
  26. package/dist/constants/http-status-codes.constants.js.map +1 -0
  27. package/dist/constants/server-settings.constants.js +119 -0
  28. package/dist/constants/server-settings.constants.js.map +1 -0
  29. package/dist/constants/service.constants.js +48 -0
  30. package/dist/constants/service.constants.js.map +1 -0
  31. package/dist/container.js +161 -0
  32. package/dist/container.js.map +1 -0
  33. package/dist/container.tokens.js +83 -0
  34. package/dist/container.tokens.js.map +1 -0
  35. package/dist/controllers/auth.controller.js +143 -0
  36. package/dist/controllers/auth.controller.js.map +1 -0
  37. package/dist/controllers/batch-call.controller.js +59 -0
  38. package/dist/controllers/batch-call.controller.js.map +1 -0
  39. package/dist/controllers/camera-stream.controller.js +57 -0
  40. package/dist/controllers/camera-stream.controller.js.map +1 -0
  41. package/dist/controllers/custom-gcode.controller.js +76 -0
  42. package/dist/controllers/custom-gcode.controller.js.map +1 -0
  43. package/dist/controllers/first-time-setup.controller.js +65 -0
  44. package/dist/controllers/first-time-setup.controller.js.map +1 -0
  45. package/dist/controllers/floor.controller.js +78 -0
  46. package/dist/controllers/floor.controller.js.map +1 -0
  47. package/dist/controllers/plugin-firmware-update.controller.js +140 -0
  48. package/dist/controllers/plugin-firmware-update.controller.js.map +1 -0
  49. package/dist/controllers/print-completion.controller.js +58 -0
  50. package/dist/controllers/print-completion.controller.js.map +1 -0
  51. package/dist/controllers/printer-files.controller.js +208 -0
  52. package/dist/controllers/printer-files.controller.js.map +1 -0
  53. package/dist/controllers/printer-settings.controller.js +58 -0
  54. package/dist/controllers/printer-settings.controller.js.map +1 -0
  55. package/dist/controllers/printer.controller.js +287 -0
  56. package/dist/controllers/printer.controller.js.map +1 -0
  57. package/dist/controllers/server-private.controller.js +122 -0
  58. package/dist/controllers/server-private.controller.js.map +1 -0
  59. package/dist/controllers/server-public.controller.js +140 -0
  60. package/dist/controllers/server-public.controller.js.map +1 -0
  61. package/dist/controllers/settings.controller.js +89 -0
  62. package/dist/controllers/settings.controller.js.map +1 -0
  63. package/dist/controllers/user.controller.js +137 -0
  64. package/dist/controllers/user.controller.js.map +1 -0
  65. package/dist/controllers/validation/auth-controller.validation.js +15 -0
  66. package/dist/controllers/validation/auth-controller.validation.js.map +1 -0
  67. package/dist/controllers/validation/batch-controller.validation.js +29 -0
  68. package/dist/controllers/validation/batch-controller.validation.js.map +1 -0
  69. package/dist/controllers/validation/generic.validation.js +15 -0
  70. package/dist/controllers/validation/generic.validation.js.map +1 -0
  71. package/dist/controllers/validation/printer-controller.validation.js +66 -0
  72. package/dist/controllers/validation/printer-controller.validation.js.map +1 -0
  73. package/dist/controllers/validation/printer-files-controller.validation.js +66 -0
  74. package/dist/controllers/validation/printer-files-controller.validation.js.map +1 -0
  75. package/dist/controllers/validation/printer-settings-controller.validation.js +15 -0
  76. package/dist/controllers/validation/printer-settings-controller.validation.js.map +1 -0
  77. package/dist/controllers/validation/setting.validation.js +19 -0
  78. package/dist/controllers/validation/setting.validation.js.map +1 -0
  79. package/dist/controllers/validation/user-controller.validation.js +16 -0
  80. package/dist/controllers/validation/user-controller.validation.js.map +1 -0
  81. package/dist/exceptions/job.exceptions.js +18 -0
  82. package/dist/exceptions/job.exceptions.js.map +1 -0
  83. package/dist/exceptions/runtime.exceptions.js +108 -0
  84. package/dist/exceptions/runtime.exceptions.js.map +1 -0
  85. package/dist/handlers/cache-manager.js +25 -0
  86. package/dist/handlers/cache-manager.js.map +1 -0
  87. package/dist/handlers/event-emitter.js +31 -0
  88. package/dist/handlers/event-emitter.js.map +1 -0
  89. package/dist/handlers/logger-factory.js +18 -0
  90. package/dist/handlers/logger-factory.js.map +1 -0
  91. package/dist/handlers/logger.js +85 -0
  92. package/dist/handlers/logger.js.map +1 -0
  93. package/dist/handlers/validators.js +131 -0
  94. package/dist/handlers/validators.js.map +1 -0
  95. package/dist/index.js +19 -0
  96. package/dist/index.js.map +1 -0
  97. package/dist/middleware/authenticate.js +83 -0
  98. package/dist/middleware/authenticate.js.map +1 -0
  99. package/dist/middleware/database.js +26 -0
  100. package/dist/middleware/database.js.map +1 -0
  101. package/dist/middleware/exception.handler.js +96 -0
  102. package/dist/middleware/exception.handler.js.map +1 -0
  103. package/dist/middleware/global.middleware.js +58 -0
  104. package/dist/middleware/global.middleware.js.map +1 -0
  105. package/dist/middleware/passport.js +44 -0
  106. package/dist/middleware/passport.js.map +1 -0
  107. package/dist/middleware/printer.js +49 -0
  108. package/dist/middleware/printer.js.map +1 -0
  109. package/dist/migrations/1696187882312-PrinterFile.js +40 -0
  110. package/dist/migrations/1696187882312-PrinterFile.js.map +1 -0
  111. package/dist/models/Auth/Permission.js +20 -0
  112. package/dist/models/Auth/Permission.js.map +1 -0
  113. package/dist/models/Auth/RefreshToken.js +41 -0
  114. package/dist/models/Auth/RefreshToken.js.map +1 -0
  115. package/dist/models/Auth/Role.js +20 -0
  116. package/dist/models/Auth/Role.js.map +1 -0
  117. package/dist/models/Auth/User.js +51 -0
  118. package/dist/models/Auth/User.js.map +1 -0
  119. package/dist/models/CameraStream.js +59 -0
  120. package/dist/models/CameraStream.js.map +1 -0
  121. package/dist/models/CustomGcode.js +28 -0
  122. package/dist/models/CustomGcode.js.map +1 -0
  123. package/dist/models/Floor.js +33 -0
  124. package/dist/models/Floor.js.map +1 -0
  125. package/dist/models/FloorPrinter.js +29 -0
  126. package/dist/models/FloorPrinter.js.map +1 -0
  127. package/dist/models/PrintCompletion.js +40 -0
  128. package/dist/models/PrintCompletion.js.map +1 -0
  129. package/dist/models/Printer.js +113 -0
  130. package/dist/models/Printer.js.map +1 -0
  131. package/dist/models/ServerSettings.js +168 -0
  132. package/dist/models/ServerSettings.js.map +1 -0
  133. package/dist/models/Settings.js +168 -0
  134. package/dist/models/Settings.js.map +1 -0
  135. package/dist/models/index.js +54 -0
  136. package/dist/models/index.js.map +1 -0
  137. package/dist/mongo-migrations/20210713120034-printers-settingsapperance-apikey.js +49 -0
  138. package/dist/mongo-migrations/20210713120034-printers-settingsapperance-apikey.js.map +1 -0
  139. package/dist/mongo-migrations/20210907173950-printers-enabled.js +39 -0
  140. package/dist/mongo-migrations/20210907173950-printers-enabled.js.map +1 -0
  141. package/dist/mongo-migrations/20211029110742-user-password-passwordhash.js +39 -0
  142. package/dist/mongo-migrations/20211029110742-user-password-passwordhash.js.map +1 -0
  143. package/dist/mongo-migrations/20230414141005-floor-remove-groupinfloor.js +60 -0
  144. package/dist/mongo-migrations/20230414141005-floor-remove-groupinfloor.js.map +1 -0
  145. package/dist/mongo-migrations/20230427202911-printer-remove-sortindex.js +30 -0
  146. package/dist/mongo-migrations/20230427202911-printer-remove-sortindex.js.map +1 -0
  147. package/dist/mongo-migrations/20230716065316-user-remove-name.js +30 -0
  148. package/dist/mongo-migrations/20230716065316-user-remove-name.js.map +1 -0
  149. package/dist/nodemon_restart_trigger.js +4 -0
  150. package/dist/nodemon_restart_trigger.js.map +1 -0
  151. package/dist/server.constants.js +99 -0
  152. package/dist/server.constants.js.map +1 -0
  153. package/dist/server.core.js +91 -0
  154. package/dist/server.core.js.map +1 -0
  155. package/dist/server.env.js +225 -0
  156. package/dist/server.env.js.map +1 -0
  157. package/dist/server.host.js +106 -0
  158. package/dist/server.host.js.map +1 -0
  159. package/dist/services/authentication/auth.service.js +136 -0
  160. package/dist/services/authentication/auth.service.js.map +1 -0
  161. package/dist/services/authentication/jwt.service.js +34 -0
  162. package/dist/services/authentication/jwt.service.js.map +1 -0
  163. package/dist/services/authentication/permission.service.js +73 -0
  164. package/dist/services/authentication/permission.service.js.map +1 -0
  165. package/dist/services/authentication/refresh-token.service.js +99 -0
  166. package/dist/services/authentication/refresh-token.service.js.map +1 -0
  167. package/dist/services/authentication/role.service.js +120 -0
  168. package/dist/services/authentication/role.service.js.map +1 -0
  169. package/dist/services/authentication/user.service.js +154 -0
  170. package/dist/services/authentication/user.service.js.map +1 -0
  171. package/dist/services/batch-call.service.js +148 -0
  172. package/dist/services/batch-call.service.js.map +1 -0
  173. package/dist/services/camera-stream.service.js +80 -0
  174. package/dist/services/camera-stream.service.js.map +1 -0
  175. package/dist/services/core/client-bundle.service.js +156 -0
  176. package/dist/services/core/client-bundle.service.js.map +1 -0
  177. package/dist/services/core/config.service.js +26 -0
  178. package/dist/services/core/config.service.js.map +1 -0
  179. package/dist/services/core/github.service.js +74 -0
  180. package/dist/services/core/github.service.js.map +1 -0
  181. package/dist/services/core/logs-manager.service.js +87 -0
  182. package/dist/services/core/logs-manager.service.js.map +1 -0
  183. package/dist/services/core/monsterpi.service.js +38 -0
  184. package/dist/services/core/monsterpi.service.js.map +1 -0
  185. package/dist/services/core/multer.service.js +122 -0
  186. package/dist/services/core/multer.service.js.map +1 -0
  187. package/dist/services/core/server-release.service.js +116 -0
  188. package/dist/services/core/server-release.service.js.map +1 -0
  189. package/dist/services/core/server-update.service.js +73 -0
  190. package/dist/services/core/server-update.service.js.map +1 -0
  191. package/dist/services/core/task-manager.service.js +196 -0
  192. package/dist/services/core/task-manager.service.js.map +1 -0
  193. package/dist/services/core/yaml.service.js +278 -0
  194. package/dist/services/core/yaml.service.js.map +1 -0
  195. package/dist/services/custom-gcode.service.js +48 -0
  196. package/dist/services/custom-gcode.service.js.map +1 -0
  197. package/dist/services/floor.service.js +183 -0
  198. package/dist/services/floor.service.js.map +1 -0
  199. package/dist/services/influxdb-v2/influx-db-v2-base.service.js +45 -0
  200. package/dist/services/influxdb-v2/influx-db-v2-base.service.js.map +1 -0
  201. package/dist/services/interfaces/auth.service.interface.js +6 -0
  202. package/dist/services/interfaces/auth.service.interface.js.map +1 -0
  203. package/dist/services/interfaces/camera-stream.dto.js +109 -0
  204. package/dist/services/interfaces/camera-stream.dto.js.map +1 -0
  205. package/dist/services/interfaces/camera-stream.service.interface.js +6 -0
  206. package/dist/services/interfaces/camera-stream.service.interface.js.map +1 -0
  207. package/dist/services/interfaces/custom-gcode.dto.js +18 -0
  208. package/dist/services/interfaces/custom-gcode.dto.js.map +1 -0
  209. package/dist/services/interfaces/custom-gcode.service.interface.js +6 -0
  210. package/dist/services/interfaces/custom-gcode.service.interface.js.map +1 -0
  211. package/dist/services/interfaces/floor.dto.js +61 -0
  212. package/dist/services/interfaces/floor.dto.js.map +1 -0
  213. package/dist/services/interfaces/floor.service.interface.js +6 -0
  214. package/dist/services/interfaces/floor.service.interface.js.map +1 -0
  215. package/dist/services/interfaces/gcode-analysis.dto.js +6 -0
  216. package/dist/services/interfaces/gcode-analysis.dto.js.map +1 -0
  217. package/dist/services/interfaces/jwt.service.interface.js +6 -0
  218. package/dist/services/interfaces/jwt.service.interface.js.map +1 -0
  219. package/dist/services/interfaces/login.dto.js +16 -0
  220. package/dist/services/interfaces/login.dto.js.map +1 -0
  221. package/dist/services/interfaces/page.interface.js +16 -0
  222. package/dist/services/interfaces/page.interface.js.map +1 -0
  223. package/dist/services/interfaces/permission.dto.js +16 -0
  224. package/dist/services/interfaces/permission.dto.js.map +1 -0
  225. package/dist/services/interfaces/permission.service.interface.js +6 -0
  226. package/dist/services/interfaces/permission.service.interface.js.map +1 -0
  227. package/dist/services/interfaces/printer-file.dto.js +27 -0
  228. package/dist/services/interfaces/printer-file.dto.js.map +1 -0
  229. package/dist/services/interfaces/printer-files.service.interface.js +6 -0
  230. package/dist/services/interfaces/printer-files.service.interface.js.map +1 -0
  231. package/dist/services/interfaces/printer.dto.js +18 -0
  232. package/dist/services/interfaces/printer.dto.js.map +1 -0
  233. package/dist/services/interfaces/printer.service.interface.js +6 -0
  234. package/dist/services/interfaces/printer.service.interface.js.map +1 -0
  235. package/dist/services/interfaces/role-service.interface.js +6 -0
  236. package/dist/services/interfaces/role-service.interface.js.map +1 -0
  237. package/dist/services/interfaces/settings.dto.js +34 -0
  238. package/dist/services/interfaces/settings.dto.js.map +1 -0
  239. package/dist/services/interfaces/settings.service.interface.js +6 -0
  240. package/dist/services/interfaces/settings.service.interface.js.map +1 -0
  241. package/dist/services/interfaces/user-service.interface.js +6 -0
  242. package/dist/services/interfaces/user-service.interface.js.map +1 -0
  243. package/dist/services/interfaces/user.dto.js +39 -0
  244. package/dist/services/interfaces/user.dto.js.map +1 -0
  245. package/dist/services/octoprint/constants/firmware-update-settings.constants.js +32 -0
  246. package/dist/services/octoprint/constants/firmware-update-settings.constants.js.map +1 -0
  247. package/dist/services/octoprint/constants/octoprint-service.constants.js +101 -0
  248. package/dist/services/octoprint/constants/octoprint-service.constants.js.map +1 -0
  249. package/dist/services/octoprint/constants/octoprint-websocket.constants.js +88 -0
  250. package/dist/services/octoprint/constants/octoprint-websocket.constants.js.map +1 -0
  251. package/dist/services/octoprint/octoprint-api.routes.js +192 -0
  252. package/dist/services/octoprint/octoprint-api.routes.js.map +1 -0
  253. package/dist/services/octoprint/octoprint-api.service.js +402 -0
  254. package/dist/services/octoprint/octoprint-api.service.js.map +1 -0
  255. package/dist/services/octoprint/octoprint-sockio.adapter.js +309 -0
  256. package/dist/services/octoprint/octoprint-sockio.adapter.js.map +1 -0
  257. package/dist/services/octoprint/plugin-base.service.js +102 -0
  258. package/dist/services/octoprint/plugin-base.service.js.map +1 -0
  259. package/dist/services/octoprint/plugin-firmware-update.service.js +104 -0
  260. package/dist/services/octoprint/plugin-firmware-update.service.js.map +1 -0
  261. package/dist/services/octoprint/plugin-repository.cache.js +45 -0
  262. package/dist/services/octoprint/plugin-repository.cache.js.map +1 -0
  263. package/dist/services/octoprint/socket.factory.js +22 -0
  264. package/dist/services/octoprint/socket.factory.js.map +1 -0
  265. package/dist/services/octoprint/utils/api.utils.js +72 -0
  266. package/dist/services/octoprint/utils/api.utils.js.map +1 -0
  267. package/dist/services/orm/floor.service.interface.js +73 -0
  268. package/dist/services/orm/floor.service.interface.js.map +1 -0
  269. package/dist/services/orm/printer.service.interface.js +6 -0
  270. package/dist/services/orm/printer.service.interface.js.map +1 -0
  271. package/dist/services/print-completion.service.js +162 -0
  272. package/dist/services/print-completion.service.js.map +1 -0
  273. package/dist/services/printer-files.service.js +91 -0
  274. package/dist/services/printer-files.service.js.map +1 -0
  275. package/dist/services/printer.service.js +230 -0
  276. package/dist/services/printer.service.js.map +1 -0
  277. package/dist/services/settings.service.js +158 -0
  278. package/dist/services/settings.service.js.map +1 -0
  279. package/dist/services/validators/floor-service.validation.js +60 -0
  280. package/dist/services/validators/floor-service.validation.js.map +1 -0
  281. package/dist/services/validators/print-completion-service.validation.js +20 -0
  282. package/dist/services/validators/print-completion-service.validation.js.map +1 -0
  283. package/dist/services/validators/printer-service.validation.js +48 -0
  284. package/dist/services/validators/printer-service.validation.js.map +1 -0
  285. package/dist/services/validators/settings-service.validation.js +71 -0
  286. package/dist/services/validators/settings-service.validation.js.map +1 -0
  287. package/dist/services/validators/user-service.validation.js +33 -0
  288. package/dist/services/validators/user-service.validation.js.map +1 -0
  289. package/dist/services/validators/yaml-service.validation.js +63 -0
  290. package/dist/services/validators/yaml-service.validation.js.map +1 -0
  291. package/dist/services/yaml.service.js +278 -0
  292. package/dist/services/yaml.service.js.map +1 -0
  293. package/dist/shared.constants.js +15 -0
  294. package/dist/shared.constants.js.map +1 -0
  295. package/dist/state/file-upload-tracker.cache.js +88 -0
  296. package/dist/state/file-upload-tracker.cache.js.map +1 -0
  297. package/dist/state/file.cache.js +99 -0
  298. package/dist/state/file.cache.js.map +1 -0
  299. package/dist/state/files.store.js +132 -0
  300. package/dist/state/files.store.js.map +1 -0
  301. package/dist/state/floor.store.js +99 -0
  302. package/dist/state/floor.store.js.map +1 -0
  303. package/dist/state/printer-events.cache.js +97 -0
  304. package/dist/state/printer-events.cache.js.map +1 -0
  305. package/dist/state/printer-socket.store.js +217 -0
  306. package/dist/state/printer-socket.store.js.map +1 -0
  307. package/dist/state/printer.cache.js +112 -0
  308. package/dist/state/printer.cache.js.map +1 -0
  309. package/dist/state/settings.store.js +154 -0
  310. package/dist/state/settings.store.js.map +1 -0
  311. package/dist/state/socket-io.gateway.js +66 -0
  312. package/dist/state/socket-io.gateway.js.map +1 -0
  313. package/dist/state/test-printer-socket.store.js +91 -0
  314. package/dist/state/test-printer-socket.store.js.map +1 -0
  315. package/dist/state/validation/create-test-printer.validation.js +18 -0
  316. package/dist/state/validation/create-test-printer.validation.js.map +1 -0
  317. package/dist/task.presets.js +50 -0
  318. package/dist/task.presets.js.map +1 -0
  319. package/dist/tasks/boot.task.js +198 -0
  320. package/dist/tasks/boot.task.js.map +1 -0
  321. package/dist/tasks/client-bundle.task.js +32 -0
  322. package/dist/tasks/client-bundle.task.js.map +1 -0
  323. package/dist/tasks/print-completion.socketio.task.js +85 -0
  324. package/dist/tasks/print-completion.socketio.task.js.map +1 -0
  325. package/dist/tasks/printer-file-clean.task.js +72 -0
  326. package/dist/tasks/printer-file-clean.task.js.map +1 -0
  327. package/dist/tasks/printer-websocket-restore.task.js +64 -0
  328. package/dist/tasks/printer-websocket-restore.task.js.map +1 -0
  329. package/dist/tasks/printer-websocket.task.js +43 -0
  330. package/dist/tasks/printer-websocket.task.js.map +1 -0
  331. package/dist/tasks/socketio.task.js +83 -0
  332. package/dist/tasks/socketio.task.js.map +1 -0
  333. package/dist/tasks/software-update.task.js +22 -0
  334. package/dist/tasks/software-update.task.js.map +1 -0
  335. package/dist/tasks.js +48 -0
  336. package/dist/tasks.js.map +1 -0
  337. package/dist/types/express/index.d.js +7 -0
  338. package/dist/types/express/index.d.js.map +1 -0
  339. package/dist/utils/array.util.js +27 -0
  340. package/dist/utils/array.util.js.map +1 -0
  341. package/dist/utils/benchmark.util.js +39 -0
  342. package/dist/utils/benchmark.util.js.map +1 -0
  343. package/dist/utils/cache/key-diff.cache.js +128 -0
  344. package/dist/utils/cache/key-diff.cache.js.map +1 -0
  345. package/dist/utils/correlation-token.util.js +15 -0
  346. package/dist/utils/correlation-token.util.js.map +1 -0
  347. package/dist/utils/crypto.utils.js +29 -0
  348. package/dist/utils/crypto.utils.js.map +1 -0
  349. package/dist/utils/env.utils.js +98 -0
  350. package/dist/utils/env.utils.js.map +1 -0
  351. package/dist/utils/error.utils.js +15 -0
  352. package/dist/utils/error.utils.js.map +1 -0
  353. package/dist/utils/find-predicate.utils.js +18 -0
  354. package/dist/utils/find-predicate.utils.js.map +1 -0
  355. package/dist/utils/fs.utils.js +38 -0
  356. package/dist/utils/fs.utils.js.map +1 -0
  357. package/dist/utils/is-docker.js +40 -0
  358. package/dist/utils/is-docker.js.map +1 -0
  359. package/dist/utils/mapper.utils.js +33 -0
  360. package/dist/utils/mapper.utils.js.map +1 -0
  361. package/dist/utils/metric.utils.js +35 -0
  362. package/dist/utils/metric.utils.js.map +1 -0
  363. package/dist/utils/normalize-url.js +245 -0
  364. package/dist/utils/normalize-url.js.map +1 -0
  365. package/dist/utils/semver.utils.js +18 -0
  366. package/dist/utils/semver.utils.js.map +1 -0
  367. package/dist/utils/time.utils.js +26 -0
  368. package/dist/utils/time.utils.js.map +1 -0
  369. package/dist/utils/url.utils.js +33 -0
  370. package/dist/utils/url.utils.js.map +1 -0
  371. package/dist/utils/websocket.adapter.js +105 -0
  372. package/dist/utils/websocket.adapter.js.map +1 -0
  373. package/migrate-mongo-config.js +45 -0
  374. package/nodemon_restart_trigger.js +1 -0
  375. package/package.json +149 -0
  376. package/src/index.ts +19 -0
  377. package/tsconfig.json +28 -0
@@ -0,0 +1,83 @@
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: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ authenticate: function() {
13
+ return authenticate;
14
+ },
15
+ authorizePermission: function() {
16
+ return authorizePermission;
17
+ },
18
+ authorizeRoles: function() {
19
+ return authorizeRoles;
20
+ },
21
+ withPermission: function() {
22
+ return withPermission;
23
+ }
24
+ });
25
+ const _awilixexpress = require("awilix-express");
26
+ const _runtimeexceptions = require("../exceptions/runtime.exceptions");
27
+ function authorizePermission(permission) {
28
+ return (0, _awilixexpress.inject)(({ permissionService, roleService })=>async (req, res, next)=>{
29
+ if (!req.roles?.length) {
30
+ throw new _runtimeexceptions.AuthorizationError({
31
+ permissions: [
32
+ permission
33
+ ]
34
+ });
35
+ }
36
+ const assignedPermissions = roleService.getRolesPermissions(req.roles);
37
+ if (!permissionService.authorizePermission(permission, assignedPermissions)) {
38
+ throw new _runtimeexceptions.AuthorizationError({
39
+ permissions: [
40
+ permission
41
+ ]
42
+ });
43
+ }
44
+ next();
45
+ });
46
+ }
47
+ const authenticate = ()=>(0, _awilixexpress.inject)(({ settingsStore, authService })=>async (req, res, next)=>{
48
+ const isLoginRequired = await settingsStore.getLoginRequired();
49
+ if (!isLoginRequired) {
50
+ return next();
51
+ }
52
+ // Check if a password change is required
53
+ if (req.user?.needsPasswordChange) {
54
+ throw new _runtimeexceptions.PasswordChangeRequiredError();
55
+ }
56
+ // Check if a logout was called
57
+ const bearer = req.headers.authorization?.replace("Bearer ", "") || undefined;
58
+ const isJwtBlacklisted = authService.isJwtTokenBlacklisted(bearer);
59
+ if (!!bearer?.length && isJwtBlacklisted) {
60
+ throw new _runtimeexceptions.AuthenticationError("Not authenticated");
61
+ }
62
+ if (req.isAuthenticated()) {
63
+ return next();
64
+ }
65
+ throw new _runtimeexceptions.AuthenticationError("Not authenticated");
66
+ });
67
+ const authorizeRoles = (roles, subset = true)=>(0, _awilixexpress.inject)(({ roleService })=>async (req, res, next)=>{
68
+ if (!roleService.authorizeRoles(roles, req.roles, subset)) {
69
+ throw new _runtimeexceptions.AuthorizationError({
70
+ roles
71
+ });
72
+ }
73
+ next();
74
+ });
75
+ function withPermission(permission) {
76
+ return {
77
+ before: [
78
+ authorizePermission(permission)
79
+ ]
80
+ };
81
+ }
82
+
83
+ //# sourceMappingURL=authenticate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/middleware/authenticate.ts"],"names":["authenticate","authorizePermission","authorizeRoles","withPermission","permission","inject","permissionService","roleService","req","res","next","roles","length","AuthorizationError","permissions","assignedPermissions","getRolesPermissions","settingsStore","authService","isLoginRequired","getLoginRequired","user","needsPasswordChange","PasswordChangeRequiredError","bearer","headers","authorization","replace","undefined","isJwtBlacklisted","isJwtTokenBlacklisted","AuthenticationError","isAuthenticated","subset","before"],"mappings":";;;;;;;;;;;IAmBaA,YAAY;eAAZA;;IAfGC,mBAAmB;eAAnBA;;IAwCHC,cAAc;eAAdA;;IASGC,cAAc;eAAdA;;;+BArDO;mCAC8D;AAG9E,SAASF,oBAAoBG,UAAkB;IACpD,OAAOC,IAAAA,qBAAM,EAAC,CAAC,EAAEC,iBAAiB,EAAEC,WAAW,EAAE,GAAK,OAAOC,KAAcC,KAAeC;YACxF,IAAI,CAACF,IAAIG,KAAK,EAAEC,QAAQ;gBACtB,MAAM,IAAIC,qCAAkB,CAAC;oBAAEC,aAAa;wBAACV;qBAAW;gBAAC;YAC3D;YAEA,MAAMW,sBAAsBR,YAAYS,mBAAmB,CAACR,IAAIG,KAAK;YACrE,IAAI,CAACL,kBAAkBL,mBAAmB,CAACG,YAAYW,sBAAsB;gBAC3E,MAAM,IAAIF,qCAAkB,CAAC;oBAAEC,aAAa;wBAACV;qBAAW;gBAAC;YAC3D;YAEAM;QACF;AACF;AAEO,MAAMV,eAAe,IAC1BK,IAAAA,qBAAM,EAAC,CAAC,EAAEY,aAAa,EAAEC,WAAW,EAAE,GAAK,OAAOV,KAAcC,KAAeC;YAC7E,MAAMS,kBAAkB,MAAMF,cAAcG,gBAAgB;YAC5D,IAAI,CAACD,iBAAiB;gBACpB,OAAOT;YACT;YAEA,yCAAyC;YACzC,IAAIF,IAAIa,IAAI,EAAEC,qBAAqB;gBACjC,MAAM,IAAIC,8CAA2B;YACvC;YAEA,+BAA+B;YAC/B,MAAMC,SAAShB,IAAIiB,OAAO,CAACC,aAAa,EAAEC,QAAQ,WAAW,OAAOC;YACpE,MAAMC,mBAAmBX,YAAYY,qBAAqB,CAACN;YAC3D,IAAI,CAAC,CAACA,QAAQZ,UAAUiB,kBAAkB;gBACxC,MAAM,IAAIE,sCAAmB,CAAC;YAChC;YAEA,IAAIvB,IAAIwB,eAAe,IAAI;gBACzB,OAAOtB;YACT;YAEA,MAAM,IAAIqB,sCAAmB,CAAC;QAChC;AACK,MAAM7B,iBAAiB,CAACS,OAAiBsB,SAAS,IAAI,GAC3D5B,IAAAA,qBAAM,EAAC,CAAC,EAAEE,WAAW,EAAE,GAAK,OAAOC,KAAcC,KAAeC;YAC9D,IAAI,CAACH,YAAYL,cAAc,CAACS,OAAOH,IAAIG,KAAK,EAAEsB,SAAS;gBACzD,MAAM,IAAIpB,qCAAkB,CAAC;oBAAEF;gBAAM;YACvC;YAEAD;QACF;AAEK,SAASP,eAAeC,UAAkB;IAC/C,OAAO;QACL8B,QAAQ;YAACjC,oBAAoBG;SAAY;IAC3C;AACF"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "interceptDatabaseError", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return interceptDatabaseError;
9
+ }
10
+ });
11
+ const _containertokens = require("../container.tokens");
12
+ async function interceptDatabaseError(req, res, next) {
13
+ const serverHost = req.container.resolve(_containertokens.DITokens.serverHost);
14
+ const databaseReadyState = serverHost.hasConnected();
15
+ if (databaseReadyState === 1) {
16
+ next();
17
+ } else {
18
+ res.status(500);
19
+ res.send({
20
+ databaseReadyState: serverHost.hasConnected(),
21
+ state: "Retrying mongo connection. Please contact the developer if this persists."
22
+ });
23
+ }
24
+ }
25
+
26
+ //# sourceMappingURL=database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/middleware/database.ts"],"names":["interceptDatabaseError","req","res","next","serverHost","container","resolve","DITokens","databaseReadyState","hasConnected","status","send","state"],"mappings":";;;;+BAMsBA;;;eAAAA;;;iCANG;AAMlB,eAAeA,uBAAuBC,GAAY,EAAEC,GAAa,EAAEC,IAAkB;IAC1F,MAAMC,aAAaH,IAAII,SAAS,CAACC,OAAO,CAACC,yBAAQ,CAACH,UAAU;IAE5D,MAAMI,qBAAqBJ,WAAWK,YAAY;IAClD,IAAID,uBAAuB,GAAG;QAC5BL;IACF,OAAO;QACLD,IAAIQ,MAAM,CAAC;QACXR,IAAIS,IAAI,CAAC;YACPH,oBAAoBJ,WAAWK,YAAY;YAC3CG,OAAO;QACT;IACF;AACF"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "exceptionHandler", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return exceptionHandler;
9
+ }
10
+ });
11
+ const _runtimeexceptions = require("../exceptions/runtime.exceptions");
12
+ const _serverconstants = require("../server.constants");
13
+ const _httpstatuscodesconstants = require("../constants/http-status-codes.constants");
14
+ function exceptionHandler(err, req, res, next) {
15
+ const isTest = process.env.NODE_ENV === _serverconstants.AppConstants.defaultTestEnv;
16
+ if (!isTest) {
17
+ console.error("[API Exception Handler]", err.stack || err?.response?.data);
18
+ }
19
+ if (err.isAxiosError) {
20
+ const code = err.response?.status || 500;
21
+ return res.status(code).send({
22
+ error: "External API call failed",
23
+ type: "axios-error",
24
+ data: err.response?.data
25
+ });
26
+ }
27
+ if (err instanceof _runtimeexceptions.AuthenticationError) {
28
+ const code = err.statusCode || 401;
29
+ return res.status(code).send({
30
+ error: err.message
31
+ });
32
+ }
33
+ if (err instanceof _runtimeexceptions.AuthorizationError) {
34
+ const code = err.statusCode || 403;
35
+ const permissions = err.permissions;
36
+ const roles = err.roles;
37
+ const error = err.message || "You lack permission to this resource";
38
+ const reason = err.reason;
39
+ return res.status(code).send({
40
+ error,
41
+ reason,
42
+ permissions,
43
+ roles
44
+ });
45
+ }
46
+ if (err instanceof _runtimeexceptions.PasswordChangeRequiredError) {
47
+ const code = err.statusCode || _httpstatuscodesconstants.HttpStatusCode.CONFLICT;
48
+ return res.status(code).send({
49
+ error: err.message
50
+ });
51
+ }
52
+ if (err instanceof _runtimeexceptions.NotFoundException) {
53
+ const code = err.statusCode || 404;
54
+ return res.status(code).send({
55
+ error: err.message
56
+ });
57
+ }
58
+ if (err instanceof _runtimeexceptions.BadRequestException) {
59
+ const code = err.statusCode || 400;
60
+ return res.status(code).send({
61
+ error: err.message
62
+ });
63
+ }
64
+ if (err instanceof _runtimeexceptions.ValidationException) {
65
+ const code = err.statusCode || 400;
66
+ return res.status(code).send({
67
+ error: "API could not accept this input",
68
+ type: err.name,
69
+ errors: err.errors
70
+ });
71
+ }
72
+ if (err instanceof _runtimeexceptions.InternalServerException) {
73
+ const code = err.statusCode || 500;
74
+ return res.status(code).send({
75
+ error: err.message,
76
+ type: err.name,
77
+ stack: err.stack
78
+ });
79
+ }
80
+ if (err instanceof _runtimeexceptions.ExternalServiceError) {
81
+ const code = err.error.statusCode || 500;
82
+ return res.status(code).send(err.error);
83
+ }
84
+ if (!!err) {
85
+ const code = err.statusCode || 500;
86
+ return res.status(code).send({
87
+ error: "Server experienced an internal error",
88
+ type: err.name,
89
+ stack: err.stack
90
+ });
91
+ }
92
+ // Will result in not found on API level
93
+ next();
94
+ }
95
+
96
+ //# sourceMappingURL=exception.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/middleware/exception.handler.ts"],"names":["exceptionHandler","err","req","res","next","isTest","process","env","NODE_ENV","AppConstants","defaultTestEnv","console","error","stack","response","data","isAxiosError","code","status","send","type","AuthenticationError","statusCode","message","AuthorizationError","permissions","roles","reason","PasswordChangeRequiredError","HttpStatusCode","CONFLICT","NotFoundException","BadRequestException","ValidationException","name","errors","InternalServerException","ExternalServiceError"],"mappings":";;;;+BAcgBA;;;eAAAA;;;mCALT;iCACsB;0CAEE;AAExB,SAASA,iBAAiBC,GAAG,EAAEC,GAAY,EAAEC,GAAa,EAAEC,IAAkB;IACnF,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;QACrC,OAAOf,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAC;YAC3BP,OAAO;YACPQ,MAAM;YACNL,MAAMd,IAAIa,QAAQ,EAAEC;QACtB;IACF;IACA,IAAId,eAAeoB,sCAAmB,EAAE;QACtC,MAAMJ,OAAOhB,IAAIqB,UAAU,IAAI;QAC/B,OAAOnB,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAC;YAAEP,OAAOX,IAAIsB,OAAO;QAAC;IACpD;IACA,IAAItB,eAAeuB,qCAAkB,EAAE;QACrC,MAAMP,OAAOhB,IAAIqB,UAAU,IAAI;QAC/B,MAAMG,cAAcxB,IAAIwB,WAAW;QACnC,MAAMC,QAAQzB,IAAIyB,KAAK;QACvB,MAAMd,QAAQX,IAAIsB,OAAO,IAAI;QAC7B,MAAMI,SAAS1B,IAAI0B,MAAM;QACzB,OAAOxB,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAC;YAAEP;YAAOe;YAAQF;YAAaC;QAAM;IACnE;IACA,IAAIzB,eAAe2B,8CAA2B,EAAE;QAC9C,MAAMX,OAAOhB,IAAIqB,UAAU,IAAIO,wCAAc,CAACC,QAAQ;QACtD,OAAO3B,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAC;YAAEP,OAAOX,IAAIsB,OAAO;QAAC;IACpD;IACA,IAAItB,eAAe8B,oCAAiB,EAAE;QACpC,MAAMd,OAAOhB,IAAIqB,UAAU,IAAI;QAC/B,OAAOnB,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAC;YAAEP,OAAOX,IAAIsB,OAAO;QAAC;IACpD;IACA,IAAItB,eAAe+B,sCAAmB,EAAE;QACtC,MAAMf,OAAOhB,IAAIqB,UAAU,IAAI;QAC/B,OAAOnB,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAC;YAAEP,OAAOX,IAAIsB,OAAO;QAAC;IACpD;IACA,IAAItB,eAAegC,sCAAmB,EAAE;QACtC,MAAMhB,OAAOhB,IAAIqB,UAAU,IAAI;QAC/B,OAAOnB,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAC;YAC3BP,OAAO;YACPQ,MAAMnB,IAAIiC,IAAI;YACdC,QAAQlC,IAAIkC,MAAM;QACpB;IACF;IACA,IAAIlC,eAAemC,0CAAuB,EAAE;QAC1C,MAAMnB,OAAOhB,IAAIqB,UAAU,IAAI;QAC/B,OAAOnB,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAC;YAC3BP,OAAOX,IAAIsB,OAAO;YAClBH,MAAMnB,IAAIiC,IAAI;YACdrB,OAAOZ,IAAIY,KAAK;QAClB;IACF;IACA,IAAIZ,eAAeoC,uCAAoB,EAAE;QACvC,MAAMpB,OAAOhB,IAAIW,KAAK,CAACU,UAAU,IAAI;QACrC,OAAOnB,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAClB,IAAIW,KAAK;IACxC;IACA,IAAI,CAAC,CAACX,KAAK;QACT,MAAMgB,OAAOhB,IAAIqB,UAAU,IAAI;QAC/B,OAAOnB,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAC;YAC3BP,OAAO;YACPQ,MAAMnB,IAAIiC,IAAI;YACdrB,OAAOZ,IAAIY,KAAK;QAClB;IACF;IAEA,wCAAwC;IACxCT;AACF"}
@@ -0,0 +1,58 @@
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: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ interceptRoles: function() {
13
+ return interceptRoles;
14
+ },
15
+ validateWhitelistedIp: function() {
16
+ return validateWhitelistedIp;
17
+ }
18
+ });
19
+ const _awilixexpress = require("awilix-express");
20
+ const _serversettingsconstants = require("../constants/server-settings.constants");
21
+ const _runtimeexceptions = require("../exceptions/runtime.exceptions");
22
+ const validateWhitelistedIp = (0, _awilixexpress.inject)(({ settingsStore, loggerFactory })=>async (req, res, next)=>{
23
+ const logger = loggerFactory("validateWhitelistedIp");
24
+ const serverSettings = settingsStore.getSettings();
25
+ if (!serverSettings && !serverSettings[_serversettingsconstants.serverSettingsKey] || !serverSettings[_serversettingsconstants.serverSettingsKey]?.whitelistEnabled) {
26
+ next();
27
+ return;
28
+ }
29
+ const whitelist = serverSettings[_serversettingsconstants.serverSettingsKey].whitelistedIpAddresses;
30
+ const ipAddress = req.socket.remoteAddress;
31
+ // Empty whitelist is treated as disabled as well
32
+ // Both ::ffff:127.0.0.1 and 127.0.0.1 will be accepted
33
+ if (whitelist?.length && !whitelist.includes(ipAddress) && ipAddress !== "::ffff:127.0.0.1") {
34
+ // Direct comparison did not pass - now parse wildcard subnets
35
+ const subnextMatched = whitelist.find((w)=>{
36
+ return ipAddress.startsWith(w);
37
+ });
38
+ if (!subnextMatched) {
39
+ logger.error("IP did not match whitelist filters", req.socket.remoteAddress);
40
+ throw new _runtimeexceptions.AuthenticationError("Bad IP: " + req.socket.remoteAddress);
41
+ }
42
+ }
43
+ next();
44
+ });
45
+ const interceptRoles = (0, _awilixexpress.inject)(({ settingsStore, roleService })=>async (req, res, next)=>{
46
+ const serverSettings = await settingsStore.getSettings();
47
+ req.roles = req.user?.roles;
48
+ // If server settings are not set, we can't determine the default role
49
+ if (serverSettings && !req.user) {
50
+ const roleName = await roleService.getAppDefaultRole();
51
+ req.roles = [
52
+ roleName
53
+ ];
54
+ }
55
+ next();
56
+ });
57
+
58
+ //# sourceMappingURL=global.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/middleware/global.middleware.ts"],"names":["interceptRoles","validateWhitelistedIp","inject","settingsStore","loggerFactory","req","res","next","logger","serverSettings","getSettings","serverSettingsKey","whitelistEnabled","whitelist","whitelistedIpAddresses","ipAddress","socket","remoteAddress","length","includes","subnextMatched","find","w","startsWith","error","AuthenticationError","roleService","roles","user","roleName","getAppDefaultRole"],"mappings":";;;;;;;;;;;IAmCaA,cAAc;eAAdA;;IA9BAC,qBAAqB;eAArBA;;;+BALU;yCACW;mCACE;AAG7B,MAAMA,wBAAwBC,IAAAA,qBAAM,EACzC,CAAC,EAAEC,aAAa,EAAEC,aAAa,EAAE,GAC/B,OAAOC,KAAcC,KAAeC;QAClC,MAAMC,SAASJ,cAAc;QAC7B,MAAMK,iBAAiBN,cAAcO,WAAW;QAChD,IAAI,AAAC,CAACD,kBAAkB,CAACA,cAAc,CAACE,0CAAiB,CAAC,IAAK,CAACF,cAAc,CAACE,0CAAiB,CAAC,EAAEC,kBAAkB;YACnHL;YACA;QACF;QAEA,MAAMM,YAAYJ,cAAc,CAACE,0CAAiB,CAAC,CAACG,sBAAsB;QAC1E,MAAMC,YAAYV,IAAIW,MAAM,CAACC,aAAa;QAC1C,iDAAiD;QACjD,uDAAuD;QACvD,IAAIJ,WAAWK,UAAU,CAACL,UAAUM,QAAQ,CAACJ,cAAcA,cAAc,oBAAoB;YAC3F,8DAA8D;YAC9D,MAAMK,iBAAiBP,UAAUQ,IAAI,CAAC,CAACC;gBACrC,OAAOP,UAAUQ,UAAU,CAACD;YAC9B;YAEA,IAAI,CAACF,gBAAgB;gBACnBZ,OAAOgB,KAAK,CAAC,sCAAsCnB,IAAIW,MAAM,CAACC,aAAa;gBAC3E,MAAM,IAAIQ,sCAAmB,CAAC,aAAapB,IAAIW,MAAM,CAACC,aAAa;YACrE;QACF;QAEAV;IACF;AAGG,MAAMP,iBAAiBE,IAAAA,qBAAM,EAClC,CAAC,EAAEC,aAAa,EAAEuB,WAAW,EAAE,GAC7B,OAAOrB,KAAcC,KAAeC;QAClC,MAAME,iBAAiB,MAAMN,cAAcO,WAAW;QAEtDL,IAAIsB,KAAK,GAAGtB,IAAIuB,IAAI,EAAED;QAEtB,sEAAsE;QACtE,IAAIlB,kBAAkB,CAACJ,IAAIuB,IAAI,EAAE;YAC/B,MAAMC,WAAW,MAAMH,YAAYI,iBAAiB;YACpDzB,IAAIsB,KAAK,GAAG;gBAACE;aAAS;QACxB;QAEAtB;IACF"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "initializePassportStrategies", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return initializePassportStrategies;
9
+ }
10
+ });
11
+ const _passportjwt = require("passport-jwt");
12
+ const _passportanonymous = require("passport-anonymous");
13
+ const _models = require("../models");
14
+ const _containertokens = require("../container.tokens");
15
+ const _serverconstants = require("../server.constants");
16
+ function initializePassportStrategies(passport, container) {
17
+ const settingsStore = container.resolve(_containertokens.DITokens.settingsStore);
18
+ const configService = container.resolve(_containertokens.DITokens.configService);
19
+ const opts = {
20
+ jwtFromRequest: _passportjwt.ExtractJwt.fromAuthHeaderAsBearerToken(),
21
+ secretOrKeyProvider: async (req, token, done)=>{
22
+ const { jwtSecret } = await settingsStore.getCredentialSettings();
23
+ return done(null, jwtSecret);
24
+ },
25
+ audience: configService.get(_serverconstants.AppConstants.OVERRIDE_JWT_AUDIENCE, _serverconstants.AppConstants.DEFAULT_JWT_AUDIENCE),
26
+ issuer: configService.get(_serverconstants.AppConstants.OVERRIDE_JWT_ISSUER, _serverconstants.AppConstants.DEFAULT_JWT_ISSUER)
27
+ };
28
+ passport.use(new _passportjwt.Strategy(opts, function(jwt_payload, done) {
29
+ _models.User.findById(jwt_payload.userId, function(err, user) {
30
+ if (err) {
31
+ return done(err, false);
32
+ }
33
+ if (user) {
34
+ return done(null, user);
35
+ } else {
36
+ return done(null, false);
37
+ }
38
+ });
39
+ }));
40
+ passport.use(new _passportanonymous.Strategy());
41
+ return passport;
42
+ }
43
+
44
+ //# sourceMappingURL=passport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/middleware/passport.ts"],"names":["initializePassportStrategies","passport","container","settingsStore","resolve","DITokens","configService","opts","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","use","JwtStrategy","jwt_payload","User","findById","userId","err","user","AnonymousStrategy"],"mappings":";;;;+BAWgBA;;;eAAAA;;;6BAXqD;mCACvB;wBACzB;iCACI;iCACI;AAOtB,SAASA,6BAA6BC,QAAwB,EAAEC,SAA+B;IACpG,MAAMC,gBAAgBD,UAAUE,OAAO,CAAgBC,yBAAQ,CAACF,aAAa;IAC7E,MAAMG,gBAAgBJ,UAAUE,OAAO,CAAgBC,yBAAQ,CAACC,aAAa;IAE7E,MAAMC,OAAwB;QAC5BC,gBAAgBC,uBAAU,CAACC,2BAA2B;QACtDC,qBAAqB,OAAOC,KAAKC,OAAeC;YAC9C,MAAM,EAAEC,SAAS,EAAE,GAAG,MAAMZ,cAAca,qBAAqB;YAC/D,OAAOF,KAAK,MAAMC;QACpB;QACAE,UAAUX,cAAcY,GAAG,CAACC,6BAAY,CAACC,qBAAqB,EAAED,6BAAY,CAACE,oBAAoB;QACjGC,QAAQhB,cAAcY,GAAG,CAACC,6BAAY,CAACI,mBAAmB,EAAEJ,6BAAY,CAACK,kBAAkB;IAC7F;IAEAvB,SAASwB,GAAG,CACV,IAAIC,qBAAW,CAACnB,MAAM,SAAUoB,WAAW,EAAEb,IAAI;QAC/Cc,YAAI,CAACC,QAAQ,CAACF,YAAYG,MAAM,EAAE,SAAUC,GAAQ,EAAEC,IAAW;YAC/D,IAAID,KAAK;gBACP,OAAOjB,KAAKiB,KAAK;YACnB;YACA,IAAIC,MAAM;gBACR,OAAOlB,KAAK,MAAMkB;YACpB,OAAO;gBACL,OAAOlB,KAAK,MAAM;YACpB;QACF;IACF;IAEFb,SAASwB,GAAG,CAAC,IAAIQ,2BAAiB;IAClC,OAAOhC;AACT"}
@@ -0,0 +1,49 @@
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: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ currentPrinterToken: function() {
13
+ return currentPrinterToken;
14
+ },
15
+ printerIdToken: function() {
16
+ return printerIdToken;
17
+ },
18
+ printerLoginToken: function() {
19
+ return printerLoginToken;
20
+ },
21
+ printerResolveMiddleware: function() {
22
+ return printerResolveMiddleware;
23
+ }
24
+ });
25
+ const _awilix = require("awilix");
26
+ const _containertokens = require("../container.tokens");
27
+ const printerIdToken = "currentPrinterId";
28
+ const currentPrinterToken = "currentPrinter";
29
+ const printerLoginToken = "printerLogin";
30
+ const printerResolveMiddleware = (key = "id")=>{
31
+ return (req, res, next)=>{
32
+ const printerCache = req.container.resolve(_containertokens.DITokens.printerCache);
33
+ let scopedPrinter = undefined;
34
+ let loginDto = undefined;
35
+ const printerId = req.params[key];
36
+ if (printerId) {
37
+ scopedPrinter = printerCache.getCachedPrinterOrThrow(printerId);
38
+ loginDto = printerCache.getLoginDto(printerId);
39
+ }
40
+ req.container.register({
41
+ [currentPrinterToken]: (0, _awilix.asValue)(scopedPrinter),
42
+ [printerLoginToken]: (0, _awilix.asValue)(loginDto),
43
+ [printerIdToken]: (0, _awilix.asValue)(printerId)
44
+ });
45
+ next();
46
+ };
47
+ };
48
+
49
+ //# sourceMappingURL=printer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/middleware/printer.ts"],"names":["currentPrinterToken","printerIdToken","printerLoginToken","printerResolveMiddleware","key","req","res","next","printerCache","container","resolve","DITokens","scopedPrinter","undefined","loginDto","printerId","params","getCachedPrinterOrThrow","getLoginDto","register","asValue"],"mappings":";;;;;;;;;;;IAMaA,mBAAmB;eAAnBA;;IADAC,cAAc;eAAdA;;IAEAC,iBAAiB;eAAjBA;;IAEAC,wBAAwB;eAAxBA;;;wBATW;iCACC;AAIlB,MAAMF,iBAAiB;AACvB,MAAMD,sBAAsB;AAC5B,MAAME,oBAAoB;AAE1B,MAAMC,2BAA2B,CAACC,MAAM,IAAI;IACjD,OAAO,CAACC,KAAcC,KAAeC;QACnC,MAAMC,eAAeH,IAAII,SAAS,CAACC,OAAO,CAAeC,yBAAQ,CAACH,YAAY;QAE9E,IAAII,gBAAgBC;QACpB,IAAIC,WAAWD;QAEf,MAAME,YAAYV,IAAIW,MAAM,CAACZ,IAAI;QACjC,IAAIW,WAAW;YACbH,gBAAgBJ,aAAaS,uBAAuB,CAACF;YACrDD,WAAWN,aAAaU,WAAW,CAACH;QACtC;QAEAV,IAAII,SAAS,CAACU,QAAQ,CAAC;YACrB,CAACnB,oBAAoB,EAAEoB,IAAAA,eAAO,EAACR;YAC/B,CAACV,kBAAkB,EAAEkB,IAAAA,eAAO,EAACN;YAC7B,CAACb,eAAe,EAAEmB,IAAAA,eAAO,EAACL;QAC5B;QAEAR;IACF;AACF"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "PrinterFile1696187882312", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return PrinterFile1696187882312;
9
+ }
10
+ });
11
+ class PrinterFile1696187882312 {
12
+ name = 'PrinterFile1696187882312';
13
+ async up(queryRunner) {
14
+ await queryRunner.query(`
15
+ CREATE TABLE "printer_file" (
16
+ "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
17
+ "name" varchar NOT NULL,
18
+ "date" integer NOT NULL,
19
+ "display" varchar NOT NULL,
20
+ "gcodeAnalysis" text NOT NULL,
21
+ "hash" varchar NOT NULL,
22
+ "origin" varchar NOT NULL,
23
+ "path" varchar NOT NULL,
24
+ "prints" text NOT NULL,
25
+ "refs" text NOT NULL,
26
+ "size" integer NOT NULL,
27
+ "statistics" text NOT NULL,
28
+ "type" varchar NOT NULL,
29
+ "typePath" text NOT NULL
30
+ )
31
+ `);
32
+ }
33
+ async down(queryRunner) {
34
+ await queryRunner.query(`
35
+ DROP TABLE "printer_file"
36
+ `);
37
+ }
38
+ }
39
+
40
+ //# sourceMappingURL=1696187882312-PrinterFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/migrations/1696187882312-PrinterFile.ts"],"names":["PrinterFile1696187882312","name","up","queryRunner","query","down"],"mappings":";;;;+BAEaA;;;eAAAA;;;AAAN,MAAMA;IACTC,OAAO,2BAA0B;IAEjC,MAAaC,GAAGC,WAAwB,EAAiB;QACrD,MAAMA,YAAYC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;;;;QAiBzB,CAAC;IACL;IAEA,MAAaC,KAAKF,WAAwB,EAAiB;QACvD,MAAMA,YAAYC,KAAK,CAAC,CAAC;;QAEzB,CAAC;IACL;AAEJ"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "Permission", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return Permission;
9
+ }
10
+ });
11
+ const _mongoose = require("mongoose");
12
+ const PermissionSchema = new _mongoose.Schema({
13
+ name: {
14
+ type: String,
15
+ required: true
16
+ }
17
+ });
18
+ const Permission = (0, _mongoose.model)("Permission", PermissionSchema);
19
+
20
+ //# sourceMappingURL=Permission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/models/Auth/Permission.ts"],"names":["Permission","PermissionSchema","Schema","name","type","String","required","model"],"mappings":";;;;+BAcaA;;;eAAAA;;;0BAdiB;AAO9B,MAAMC,mBAAmB,IAAIC,gBAAM,CAAc;IAC/CC,MAAM;QACJC,MAAMC;QACNC,UAAU;IACZ;AACF;AAEO,MAAMN,aAAaO,IAAAA,eAAK,EAAC,cAAcN"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "RefreshToken", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return RefreshToken;
9
+ }
10
+ });
11
+ const _mongoose = require("mongoose");
12
+ const RefreshTokenSchema = new _mongoose.Schema({
13
+ userId: {
14
+ type: _mongoose.Schema.Types.ObjectId,
15
+ ref: "User",
16
+ required: true,
17
+ unique: false
18
+ },
19
+ createdAt: {
20
+ required: true,
21
+ type: Date,
22
+ default: Date.now
23
+ },
24
+ expiresAt: {
25
+ required: true,
26
+ type: Number
27
+ },
28
+ refreshToken: {
29
+ type: String,
30
+ unique: true,
31
+ trim: true,
32
+ required: true
33
+ },
34
+ refreshAttemptsUsed: {
35
+ type: Number,
36
+ required: true
37
+ }
38
+ });
39
+ const RefreshToken = (0, _mongoose.model)("RefreshToken", RefreshTokenSchema);
40
+
41
+ //# sourceMappingURL=RefreshToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/models/Auth/RefreshToken.ts"],"names":["RefreshToken","RefreshTokenSchema","Schema","userId","type","Types","ObjectId","ref","required","unique","createdAt","Date","default","now","expiresAt","Number","refreshToken","String","trim","refreshAttemptsUsed","model"],"mappings":";;;;+BAuCaA;;;eAAAA;;;0BAvCwB;AAWrC,MAAMC,qBAAqB,IAAIC,gBAAM,CAAgB;IACnDC,QAAQ;QACNC,MAAMF,gBAAM,CAACG,KAAK,CAACC,QAAQ;QAC3BC,KAAK;QACLC,UAAU;QACVC,QAAQ;IACV;IACAC,WAAW;QACTF,UAAU;QACVJ,MAAMO;QACNC,SAASD,KAAKE,GAAG;IACnB;IACAC,WAAW;QACTN,UAAU;QACVJ,MAAMW;IACR;IACAC,cAAc;QACZZ,MAAMa;QACNR,QAAQ;QACRS,MAAM;QACNV,UAAU;IACZ;IACAW,qBAAqB;QACnBf,MAAMW;QACNP,UAAU;IACZ;AACF;AAEO,MAAMR,eAAeoB,IAAAA,eAAK,EAAC,gBAAgBnB"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "Role", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return Role;
9
+ }
10
+ });
11
+ const _mongoose = require("mongoose");
12
+ const RoleSchema = new _mongoose.Schema({
13
+ name: {
14
+ type: String,
15
+ required: true
16
+ }
17
+ });
18
+ const Role = (0, _mongoose.model)("Role", RoleSchema);
19
+
20
+ //# sourceMappingURL=Role.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/models/Auth/Role.ts"],"names":["Role","RoleSchema","Schema","name","type","String","required","model"],"mappings":";;;;+BAcaA;;;eAAAA;;;0BAdiB;AAO9B,MAAMC,aAAa,IAAIC,gBAAM,CAAQ;IACnCC,MAAM;QACJC,MAAMC;QACNC,UAAU;IACZ;AACF;AAEO,MAAMN,OAAOO,IAAAA,eAAK,EAAC,QAAQN"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "User", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return User;
9
+ }
10
+ });
11
+ const _mongoose = require("mongoose");
12
+ const UserSchema = new _mongoose.Schema({
13
+ username: {
14
+ type: String,
15
+ required: true,
16
+ unique: true
17
+ },
18
+ isDemoUser: {
19
+ type: Boolean,
20
+ default: false
21
+ },
22
+ isRootUser: {
23
+ type: Boolean,
24
+ default: false
25
+ },
26
+ // Requiring password change means that the user will be redirected to the change password page
27
+ // when they log in. The user will not be able to access any other page until they change their password.
28
+ needsPasswordChange: {
29
+ type: Boolean,
30
+ default: true
31
+ },
32
+ isVerified: {
33
+ type: Boolean,
34
+ default: false
35
+ },
36
+ passwordHash: {
37
+ type: String,
38
+ required: true
39
+ },
40
+ createdAt: {
41
+ type: Date,
42
+ default: Date.now
43
+ },
44
+ roles: {
45
+ type: Array,
46
+ required: true
47
+ }
48
+ });
49
+ const User = (0, _mongoose.model)("User", UserSchema);
50
+
51
+ //# sourceMappingURL=User.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/models/Auth/User.ts"],"names":["User","UserSchema","Schema","username","type","String","required","unique","isDemoUser","Boolean","default","isRootUser","needsPasswordChange","isVerified","passwordHash","createdAt","Date","now","roles","Array","model"],"mappings":";;;;+BAoDaA;;;eAAAA;;;0BApD2B;AAcxC,MAAMC,aAAa,IAAIC,gBAAM,CAAQ;IACnCC,UAAU;QACRC,MAAMC;QACNC,UAAU;QACVC,QAAQ;IACV;IACAC,YAAY;QACVJ,MAAMK;QACNC,SAAS;IACX;IACAC,YAAY;QACVP,MAAMK;QACNC,SAAS;IACX;IACA,+FAA+F;IAC/F,yGAAyG;IACzGE,qBAAqB;QACnBR,MAAMK;QACNC,SAAS;IACX;IACAG,YAAY;QACVT,MAAMK;QACNC,SAAS;IACX;IACAI,cAAc;QACZV,MAAMC;QACNC,UAAU;IACZ;IACAS,WAAW;QACTX,MAAMY;QACNN,SAASM,KAAKC,GAAG;IACnB;IACAC,OAAO;QACLd,MAAMe;QACNb,UAAU;IACZ;AACF;AAEO,MAAMN,OAAOoB,IAAAA,eAAK,EAAC,QAAQnB"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "CameraStream", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return CameraStream;
9
+ }
10
+ });
11
+ const _mongoose = require("mongoose");
12
+ const CameraStreamSchema = new _mongoose.Schema({
13
+ streamURL: {
14
+ type: String,
15
+ unique: true,
16
+ required: true
17
+ },
18
+ printerId: {
19
+ type: _mongoose.Schema.Types.ObjectId,
20
+ ref: "Printer",
21
+ required: false,
22
+ index: {
23
+ unique: true,
24
+ partialFilterExpression: {
25
+ printerId: {
26
+ $type: _mongoose.Schema.Types.ObjectId
27
+ }
28
+ }
29
+ }
30
+ },
31
+ settings: {
32
+ type: {
33
+ aspectRatio: {
34
+ type: String,
35
+ required: true,
36
+ default: "16:9"
37
+ },
38
+ rotationClockwise: {
39
+ type: Number,
40
+ required: true,
41
+ default: 0
42
+ },
43
+ flipHorizontal: {
44
+ type: Boolean,
45
+ required: true,
46
+ default: false
47
+ },
48
+ flipVertical: {
49
+ type: Boolean,
50
+ required: true,
51
+ default: false
52
+ }
53
+ },
54
+ required: true
55
+ }
56
+ });
57
+ const CameraStream = (0, _mongoose.model)("CameraStream", CameraStreamSchema);
58
+
59
+ //# sourceMappingURL=CameraStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/models/CameraStream.ts"],"names":["CameraStream","CameraStreamSchema","Schema","streamURL","type","String","unique","required","printerId","Types","ObjectId","ref","index","partialFilterExpression","$type","settings","aspectRatio","default","rotationClockwise","Number","flipHorizontal","Boolean","flipVertical","model"],"mappings":";;;;+BAwDaA;;;eAAAA;;;0BAxDwB;AAcrC,MAAMC,qBAAqB,IAAIC,gBAAM,CAAgB;IACnDC,WAAW;QACTC,MAAMC;QACNC,QAAQ;QACRC,UAAU;IACZ;IACAC,WAAW;QACTJ,MAAMF,gBAAM,CAACO,KAAK,CAACC,QAAQ;QAC3BC,KAAK;QACLJ,UAAU;QACVK,OAAO;YACLN,QAAQ;YACRO,yBAAyB;gBAAEL,WAAW;oBAAEM,OAAOZ,gBAAM,CAACO,KAAK,CAACC,QAAQ;gBAAC;YAAE;QACzE;IACF;IACAK,UAAU;QACRX,MAAM;YACJY,aAAa;gBACXZ,MAAMC;gBACNE,UAAU;gBACVU,SAAS;YACX;YACAC,mBAAmB;gBACjBd,MAAMe;gBACNZ,UAAU;gBACVU,SAAS;YACX;YACAG,gBAAgB;gBACdhB,MAAMiB;gBACNd,UAAU;gBACVU,SAAS;YACX;YACAK,cAAc;gBACZlB,MAAMiB;gBACNd,UAAU;gBACVU,SAAS;YACX;QACF;QACAV,UAAU;IACZ;AACF;AAEO,MAAMP,eAAeuB,IAAAA,eAAK,EAAC,gBAAgBtB"}