@fdm-monster/server 1.8.2 → 1.9.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 (460) hide show
  1. package/.env.template +5 -3
  2. package/.gitattributes +4 -2
  3. package/.yarn/install-state.gz +0 -0
  4. package/.yarn/releases/yarn-4.9.1.cjs +948 -0
  5. package/.yarnrc.yml +1 -1
  6. package/README.md +25 -26
  7. package/RELEASE_NOTES.MD +69 -7
  8. package/biome.json +33 -0
  9. package/dist/consoles/download-github-releases.js.map +1 -1
  10. package/dist/consoles/launch-http-servers.js +31 -0
  11. package/dist/consoles/launch-http-servers.js.map +1 -0
  12. package/dist/consoles/mock-octoprint.server.js +291 -0
  13. package/dist/consoles/mock-octoprint.server.js.map +1 -0
  14. package/dist/consoles/mock-prusalink.server.js +57 -0
  15. package/dist/consoles/mock-prusalink.server.js.map +1 -0
  16. package/dist/consoles/utils/api-messages.js +856 -0
  17. package/dist/consoles/utils/api-messages.js.map +1 -0
  18. package/dist/consoles/utils/delayed-memory.storage.js +42 -0
  19. package/dist/consoles/utils/delayed-memory.storage.js.map +1 -0
  20. package/dist/consoles/utils/ws-messages.js +88 -0
  21. package/dist/consoles/utils/ws-messages.js.map +1 -0
  22. package/dist/constants/event.constants.js +11 -19
  23. package/dist/constants/event.constants.js.map +1 -1
  24. package/dist/constants/server-settings.constants.js +6 -11
  25. package/dist/constants/server-settings.constants.js.map +1 -1
  26. package/dist/container.js +15 -24
  27. package/dist/container.js.map +1 -1
  28. package/dist/container.tokens.js +4 -5
  29. package/dist/container.tokens.js.map +1 -1
  30. package/dist/controllers/auth.controller.js +114 -24
  31. package/dist/controllers/auth.controller.js.map +1 -1
  32. package/dist/controllers/batch-call.controller.js +95 -24
  33. package/dist/controllers/batch-call.controller.js.map +1 -1
  34. package/dist/controllers/camera-stream.controller.js +16 -12
  35. package/dist/controllers/camera-stream.controller.js.map +1 -1
  36. package/dist/controllers/custom-gcode.controller.js +116 -40
  37. package/dist/controllers/custom-gcode.controller.js.map +1 -1
  38. package/dist/controllers/dto/update-client-dist.dto.js +0 -21
  39. package/dist/controllers/dto/update-client-dist.dto.js.map +1 -1
  40. package/dist/controllers/first-time-setup.controller.js +54 -18
  41. package/dist/controllers/first-time-setup.controller.js.map +1 -1
  42. package/dist/controllers/floor.controller.js +154 -43
  43. package/dist/controllers/floor.controller.js.map +1 -1
  44. package/dist/controllers/metrics.controller.js +56 -0
  45. package/dist/controllers/metrics.controller.js.map +1 -0
  46. package/dist/controllers/print-completion.controller.js +81 -18
  47. package/dist/controllers/print-completion.controller.js.map +1 -1
  48. package/dist/controllers/printer-files.controller.js +61 -50
  49. package/dist/controllers/printer-files.controller.js.map +1 -1
  50. package/dist/controllers/printer-group.controller.js +123 -33
  51. package/dist/controllers/printer-group.controller.js.map +1 -1
  52. package/dist/controllers/printer-settings.controller.js +76 -29
  53. package/dist/controllers/printer-settings.controller.js.map +1 -1
  54. package/dist/controllers/printer.controller.js +62 -197
  55. package/dist/controllers/printer.controller.js.map +1 -1
  56. package/dist/controllers/server-private.controller.js +153 -39
  57. package/dist/controllers/server-private.controller.js.map +1 -1
  58. package/dist/controllers/server-public.controller.js +79 -84
  59. package/dist/controllers/server-public.controller.js.map +1 -1
  60. package/dist/controllers/settings.controller.js +222 -79
  61. package/dist/controllers/settings.controller.js.map +1 -1
  62. package/dist/controllers/user.controller.js +67 -57
  63. package/dist/controllers/user.controller.js.map +1 -1
  64. package/dist/controllers/validation/auth-controller.validation.js +6 -5
  65. package/dist/controllers/validation/auth-controller.validation.js.map +1 -1
  66. package/dist/controllers/validation/batch-controller.validation.js +17 -18
  67. package/dist/controllers/validation/batch-controller.validation.js.map +1 -1
  68. package/dist/controllers/validation/generic.validation.js +8 -3
  69. package/dist/controllers/validation/generic.validation.js.map +1 -1
  70. package/dist/controllers/validation/printer-completion-controller.validation.js +16 -0
  71. package/dist/controllers/validation/printer-completion-controller.validation.js.map +1 -0
  72. package/dist/controllers/validation/printer-controller.validation.js +31 -50
  73. package/dist/controllers/validation/printer-controller.validation.js.map +1 -1
  74. package/dist/controllers/validation/printer-files-controller.validation.js +16 -15
  75. package/dist/controllers/validation/printer-files-controller.validation.js.map +1 -1
  76. package/dist/controllers/validation/printer-settings-controller.validation.js +6 -5
  77. package/dist/controllers/validation/printer-settings-controller.validation.js.map +1 -1
  78. package/dist/controllers/validation/server-private.validation.js +17 -0
  79. package/dist/controllers/validation/server-private.validation.js.map +1 -0
  80. package/dist/controllers/validation/setting.validation.js +28 -10
  81. package/dist/controllers/validation/setting.validation.js.map +1 -1
  82. package/dist/controllers/validation/user-controller.validation.js +44 -13
  83. package/dist/controllers/validation/user-controller.validation.js.map +1 -1
  84. package/dist/data-source.js +10 -6
  85. package/dist/data-source.js.map +1 -1
  86. package/dist/entities/camera-stream.entity.js +2 -3
  87. package/dist/entities/camera-stream.entity.js.map +1 -1
  88. package/dist/entities/custom-gcode.entity.js +1 -2
  89. package/dist/entities/custom-gcode.entity.js.map +1 -1
  90. package/dist/entities/floor-position.entity.js.map +1 -1
  91. package/dist/entities/floor.entity.js +1 -2
  92. package/dist/entities/floor.entity.js.map +1 -1
  93. package/dist/entities/group.entity.js +6 -2
  94. package/dist/entities/group.entity.js.map +1 -1
  95. package/dist/entities/permission.entity.js +1 -2
  96. package/dist/entities/permission.entity.js.map +1 -1
  97. package/dist/entities/print-completion.entity.js +1 -2
  98. package/dist/entities/print-completion.entity.js.map +1 -1
  99. package/dist/entities/printer-group.entity.js +6 -2
  100. package/dist/entities/printer-group.entity.js.map +1 -1
  101. package/dist/entities/printer.entity.js +22 -4
  102. package/dist/entities/printer.entity.js.map +1 -1
  103. package/dist/entities/refresh-token.entity.js +1 -2
  104. package/dist/entities/refresh-token.entity.js.map +1 -1
  105. package/dist/entities/role.entity.js +1 -2
  106. package/dist/entities/role.entity.js.map +1 -1
  107. package/dist/entities/settings.entity.js +1 -2
  108. package/dist/entities/settings.entity.js.map +1 -1
  109. package/dist/entities/user-role.entity.js +1 -2
  110. package/dist/entities/user-role.entity.js.map +1 -1
  111. package/dist/entities/user.entity.js +1 -2
  112. package/dist/entities/user.entity.js.map +1 -1
  113. package/dist/exceptions/runtime.exceptions.js.map +1 -1
  114. package/dist/handlers/logger.js +131 -36
  115. package/dist/handlers/logger.js.map +1 -1
  116. package/dist/handlers/validators.js +7 -113
  117. package/dist/handlers/validators.js.map +1 -1
  118. package/dist/index.js.map +1 -1
  119. package/dist/middleware/authenticate.js +11 -22
  120. package/dist/middleware/authenticate.js.map +1 -1
  121. package/dist/middleware/database.js.map +1 -1
  122. package/dist/middleware/demo.middleware.js +4 -17
  123. package/dist/middleware/demo.middleware.js.map +1 -1
  124. package/dist/middleware/exception.filter.js +23 -23
  125. package/dist/middleware/exception.filter.js.map +1 -1
  126. package/dist/middleware/global.middleware.js +4 -4
  127. package/dist/middleware/global.middleware.js.map +1 -1
  128. package/dist/middleware/param-converter.middleware.js +81 -0
  129. package/dist/middleware/param-converter.middleware.js.map +1 -0
  130. package/dist/middleware/passport.js +3 -5
  131. package/dist/middleware/passport.js.map +1 -1
  132. package/dist/middleware/printer-resolver.js +37 -0
  133. package/dist/middleware/printer-resolver.js.map +1 -0
  134. package/dist/middleware/printer.js +22 -10
  135. package/dist/middleware/printer.js.map +1 -1
  136. package/dist/middleware/socketio.middleware.js +27 -0
  137. package/dist/middleware/socketio.middleware.js.map +1 -0
  138. package/dist/migrations/1706829146617-InitSqlite.js +1 -1
  139. package/dist/migrations/1706829146617-InitSqlite.js.map +1 -1
  140. package/dist/migrations/1707494762198-PrinterGroup.js +1 -1
  141. package/dist/migrations/1707494762198-PrinterGroup.js.map +1 -1
  142. package/dist/migrations/1708465930665-ChangePrintCompletionDeletePrinterCascade.js +1 -1
  143. package/dist/migrations/1708465930665-ChangePrintCompletionDeletePrinterCascade.js.map +1 -1
  144. package/dist/migrations/1713897879622-AddPrinterType.js +1 -1
  145. package/dist/migrations/1713897879622-AddPrinterType.js.map +1 -1
  146. package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js +229 -0
  147. package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js.map +1 -0
  148. package/dist/models/Auth/Permission.js.map +1 -1
  149. package/dist/models/Auth/RefreshToken.js +1 -1
  150. package/dist/models/Auth/RefreshToken.js.map +1 -1
  151. package/dist/models/Auth/Role.js.map +1 -1
  152. package/dist/models/Auth/User.js.map +1 -1
  153. package/dist/models/CameraStream.js +20 -0
  154. package/dist/models/CameraStream.js.map +1 -1
  155. package/dist/models/CustomGcode.js.map +1 -1
  156. package/dist/models/Floor.js.map +1 -1
  157. package/dist/models/FloorPrinter.js +10 -1
  158. package/dist/models/FloorPrinter.js.map +1 -1
  159. package/dist/models/PrintCompletion.js.map +1 -1
  160. package/dist/models/Printer.js +12 -5
  161. package/dist/models/Printer.js.map +1 -1
  162. package/dist/models/Settings.js +5 -42
  163. package/dist/models/Settings.js.map +1 -1
  164. package/dist/models/index.js +0 -4
  165. package/dist/models/index.js.map +1 -1
  166. package/dist/mongo-migrations/20210713120034-printers-settingsapperance-apikey.js.map +1 -1
  167. package/dist/mongo-migrations/20210907173950-printers-enabled.js.map +1 -1
  168. package/dist/mongo-migrations/20211029110742-user-password-passwordhash.js.map +1 -1
  169. package/dist/mongo-migrations/20230414141005-floor-remove-groupinfloor.js.map +1 -1
  170. package/dist/mongo-migrations/20230427202911-printer-remove-sortindex.js.map +1 -1
  171. package/dist/mongo-migrations/20230716065316-user-remove-name.js.map +1 -1
  172. package/dist/mongo-migrations/20231111081809-printer-flatten-name.js.map +1 -1
  173. package/dist/mongo-migrations/20231111082521-printer-remove-settingsappearance.js.map +1 -1
  174. package/dist/mongo-migrations/20231202183902-printer-files-simpler.js.map +1 -1
  175. package/dist/server.constants.js +7 -4
  176. package/dist/server.constants.js.map +1 -1
  177. package/dist/server.core.js +29 -2
  178. package/dist/server.core.js.map +1 -1
  179. package/dist/server.env.js +13 -8
  180. package/dist/server.env.js.map +1 -1
  181. package/dist/server.host.js +24 -31
  182. package/dist/server.host.js.map +1 -1
  183. package/dist/services/authentication/auth.service.js +15 -20
  184. package/dist/services/authentication/auth.service.js.map +1 -1
  185. package/dist/services/authentication/jwt.service.js +1 -1
  186. package/dist/services/authentication/jwt.service.js.map +1 -1
  187. package/dist/services/core/batch-call.service.js +23 -25
  188. package/dist/services/core/batch-call.service.js.map +1 -1
  189. package/dist/services/core/client-bundle.service.js +78 -136
  190. package/dist/services/core/client-bundle.service.js.map +1 -1
  191. package/dist/services/core/config.service.js.map +1 -1
  192. package/dist/services/core/cradle.service.js +21 -0
  193. package/dist/services/core/cradle.service.js.map +1 -0
  194. package/dist/services/core/github.service.js +2 -2
  195. package/dist/services/core/github.service.js.map +1 -1
  196. package/dist/services/core/http-client.factory.js +40 -0
  197. package/dist/services/core/http-client.factory.js.map +1 -0
  198. package/dist/services/core/logs-manager.service.js +7 -6
  199. package/dist/services/core/logs-manager.service.js.map +1 -1
  200. package/dist/services/core/monsterpi.service.js +1 -1
  201. package/dist/services/core/monsterpi.service.js.map +1 -1
  202. package/dist/services/core/multer.service.js +79 -28
  203. package/dist/services/core/multer.service.js.map +1 -1
  204. package/dist/services/core/server-release.service.js +14 -8
  205. package/dist/services/core/server-release.service.js.map +1 -1
  206. package/dist/services/core/yaml.service.js +16 -17
  207. package/dist/services/core/yaml.service.js.map +1 -1
  208. package/dist/services/interfaces/camera-stream.dto.js +4 -34
  209. package/dist/services/interfaces/camera-stream.dto.js.map +1 -1
  210. package/dist/services/interfaces/custom-gcode.dto.js.map +1 -1
  211. package/dist/services/interfaces/file-upload-tracker.interface.js +6 -0
  212. package/dist/services/interfaces/file-upload-tracker.interface.js.map +1 -0
  213. package/dist/services/interfaces/floor.dto.js +5 -47
  214. package/dist/services/interfaces/floor.dto.js.map +1 -1
  215. package/dist/services/interfaces/login.dto.js +2 -0
  216. package/dist/services/interfaces/login.dto.js.map +1 -1
  217. package/dist/services/interfaces/print-completion.dto.js.map +1 -1
  218. package/dist/services/interfaces/printer-group.dto.js +0 -14
  219. package/dist/services/interfaces/printer-group.dto.js.map +1 -1
  220. package/dist/services/interfaces/printer.dto.js +11 -5
  221. package/dist/services/interfaces/printer.dto.js.map +1 -1
  222. package/dist/services/interfaces/settings.dto.js.map +1 -1
  223. package/dist/services/interfaces/task.interfaces.js +6 -0
  224. package/dist/services/interfaces/task.interfaces.js.map +1 -0
  225. package/dist/services/mongoose/camera-stream.service.js +17 -15
  226. package/dist/services/mongoose/camera-stream.service.js.map +1 -1
  227. package/dist/services/mongoose/custom-gcode.service.js +4 -2
  228. package/dist/services/mongoose/custom-gcode.service.js.map +1 -1
  229. package/dist/services/mongoose/floor.service.js +37 -30
  230. package/dist/services/mongoose/floor.service.js.map +1 -1
  231. package/dist/services/mongoose/permission.service.js +1 -1
  232. package/dist/services/mongoose/permission.service.js.map +1 -1
  233. package/dist/services/mongoose/print-completion.service.js +2 -2
  234. package/dist/services/mongoose/print-completion.service.js.map +1 -1
  235. package/dist/services/mongoose/print-completion.shared.js +2 -2
  236. package/dist/services/mongoose/print-completion.shared.js.map +1 -1
  237. package/dist/services/mongoose/printer.service.js +40 -45
  238. package/dist/services/mongoose/printer.service.js.map +1 -1
  239. package/dist/services/mongoose/refresh-token.service.js +5 -8
  240. package/dist/services/mongoose/refresh-token.service.js.map +1 -1
  241. package/dist/services/mongoose/role.service.js +14 -5
  242. package/dist/services/mongoose/role.service.js.map +1 -1
  243. package/dist/services/mongoose/settings.service.js +35 -62
  244. package/dist/services/mongoose/settings.service.js.map +1 -1
  245. package/dist/services/mongoose/user.service.js +8 -7
  246. package/dist/services/mongoose/user.service.js.map +1 -1
  247. package/dist/services/moonraker/constants/{websocket.constants.js → moonraker.constants.js} +1 -1
  248. package/dist/services/moonraker/constants/{websocket.constants.js.map → moonraker.constants.js.map} +1 -1
  249. package/dist/services/moonraker/moonraker-websocket.adapter.js +108 -96
  250. package/dist/services/moonraker/moonraker-websocket.adapter.js.map +1 -1
  251. package/dist/services/moonraker/moonraker.client.js +212 -167
  252. package/dist/services/moonraker/moonraker.client.js.map +1 -1
  253. package/dist/services/moonraker.api.js +3 -5
  254. package/dist/services/moonraker.api.js.map +1 -1
  255. package/dist/services/octoprint/constants/octoprint-service.constants.js +7 -36
  256. package/dist/services/octoprint/constants/octoprint-service.constants.js.map +1 -1
  257. package/dist/services/octoprint/constants/octoprint-websocket.constants.js +12 -3
  258. package/dist/services/octoprint/constants/octoprint-websocket.constants.js.map +1 -1
  259. package/dist/services/octoprint/dto/octoprint-event.dto.js +2 -1
  260. package/dist/services/octoprint/dto/octoprint-event.dto.js.map +1 -1
  261. package/dist/services/octoprint/octoprint-api.routes.js +0 -98
  262. package/dist/services/octoprint/octoprint-api.routes.js.map +1 -1
  263. package/dist/services/octoprint/octoprint-websocket.adapter.js +72 -72
  264. package/dist/services/octoprint/octoprint-websocket.adapter.js.map +1 -1
  265. package/dist/services/octoprint/octoprint.client.js +87 -343
  266. package/dist/services/octoprint/octoprint.client.js.map +1 -1
  267. package/dist/services/octoprint/utils/octoprint-http-client.builder.js +31 -0
  268. package/dist/services/octoprint/utils/octoprint-http-client.builder.js.map +1 -0
  269. package/dist/services/octoprint.api.js +14 -18
  270. package/dist/services/octoprint.api.js.map +1 -1
  271. package/dist/services/orm/base.service.js +11 -12
  272. package/dist/services/orm/base.service.js.map +1 -1
  273. package/dist/services/orm/camera-stream.service.js +5 -1
  274. package/dist/services/orm/camera-stream.service.js.map +1 -1
  275. package/dist/services/orm/custom-gcode.service.js +2 -2
  276. package/dist/services/orm/custom-gcode.service.js.map +1 -1
  277. package/dist/services/orm/floor-position.service.js +0 -5
  278. package/dist/services/orm/floor-position.service.js.map +1 -1
  279. package/dist/services/orm/floor.service.js +43 -39
  280. package/dist/services/orm/floor.service.js.map +1 -1
  281. package/dist/services/orm/permission.service.js +3 -4
  282. package/dist/services/orm/permission.service.js.map +1 -1
  283. package/dist/services/orm/print-completion.service.js +2 -4
  284. package/dist/services/orm/print-completion.service.js.map +1 -1
  285. package/dist/services/orm/printer-group.service.js +2 -7
  286. package/dist/services/orm/printer-group.service.js.map +1 -1
  287. package/dist/services/orm/printer.service.js +29 -39
  288. package/dist/services/orm/printer.service.js.map +1 -1
  289. package/dist/services/orm/refresh-token.service.js +5 -11
  290. package/dist/services/orm/refresh-token.service.js.map +1 -1
  291. package/dist/services/orm/role.service.js +11 -10
  292. package/dist/services/orm/role.service.js.map +1 -1
  293. package/dist/services/orm/settings.service.js +37 -133
  294. package/dist/services/orm/settings.service.js.map +1 -1
  295. package/dist/services/orm/user.service.js +13 -15
  296. package/dist/services/orm/user.service.js.map +1 -1
  297. package/dist/services/printer-api.factory.js +9 -6
  298. package/dist/services/printer-api.factory.js.map +1 -1
  299. package/dist/services/printer-api.interface.js +13 -6
  300. package/dist/services/printer-api.interface.js.map +1 -1
  301. package/dist/services/prusa-link/constants/prusalink-event.dto.js +18 -0
  302. package/dist/services/prusa-link/constants/prusalink-event.dto.js.map +1 -0
  303. package/dist/services/prusa-link/constants/prusalink.constants.js +13 -0
  304. package/dist/services/prusa-link/constants/prusalink.constants.js.map +1 -0
  305. package/dist/services/prusa-link/dto/file-response.dto.js +6 -0
  306. package/dist/services/prusa-link/dto/file-response.dto.js.map +1 -0
  307. package/dist/services/prusa-link/dto/file.dto.js +6 -0
  308. package/dist/services/prusa-link/dto/file.dto.js.map +1 -0
  309. package/dist/services/prusa-link/dto/job-state.dto.js +6 -0
  310. package/dist/services/prusa-link/dto/job-state.dto.js.map +1 -0
  311. package/dist/services/prusa-link/dto/printer-state.dto.js +6 -0
  312. package/dist/services/prusa-link/dto/printer-state.dto.js.map +1 -0
  313. package/dist/services/prusa-link/dto/status.dto.js +6 -0
  314. package/dist/services/prusa-link/dto/status.dto.js.map +1 -0
  315. package/dist/services/prusa-link/dto/version.dto.js +6 -0
  316. package/dist/services/prusa-link/dto/version.dto.js.map +1 -0
  317. package/dist/services/prusa-link/prusa-link-http-polling.adapter.js +142 -0
  318. package/dist/services/prusa-link/prusa-link-http-polling.adapter.js.map +1 -0
  319. package/dist/services/prusa-link/prusa-link.api.js +233 -0
  320. package/dist/services/prusa-link/prusa-link.api.js.map +1 -0
  321. package/dist/services/prusa-link/utils/digest-auth.params.js +6 -0
  322. package/dist/services/prusa-link/utils/digest-auth.params.js.map +1 -0
  323. package/dist/services/prusa-link/utils/digest-auth.util.js +28 -0
  324. package/dist/services/prusa-link/utils/digest-auth.util.js.map +1 -0
  325. package/dist/services/prusa-link/utils/prusa-link-http-client.builder.js +131 -0
  326. package/dist/services/prusa-link/utils/prusa-link-http-client.builder.js.map +1 -0
  327. package/dist/services/socket.factory.js +9 -6
  328. package/dist/services/socket.factory.js.map +1 -1
  329. package/dist/services/{core/task-manager.service.js → task-manager.service.js} +72 -78
  330. package/dist/services/task-manager.service.js.map +1 -0
  331. package/dist/services/validators/camera-service.validation.js +19 -0
  332. package/dist/services/validators/camera-service.validation.js.map +1 -0
  333. package/dist/services/validators/floor-service.validation.js +47 -36
  334. package/dist/services/validators/floor-service.validation.js.map +1 -1
  335. package/dist/services/validators/print-completion-service.validation.js +22 -9
  336. package/dist/services/validators/print-completion-service.validation.js.map +1 -1
  337. package/dist/services/validators/printer-service.validation.js +112 -29
  338. package/dist/services/validators/printer-service.validation.js.map +1 -1
  339. package/dist/services/validators/settings-service.validation.js +78 -66
  340. package/dist/services/validators/settings-service.validation.js.map +1 -1
  341. package/dist/services/validators/user-service.validation.js +17 -16
  342. package/dist/services/validators/user-service.validation.js.map +1 -1
  343. package/dist/services/validators/yaml-service.validation.js +94 -51
  344. package/dist/services/validators/yaml-service.validation.js.map +1 -1
  345. package/dist/shared/default-http-client.builder.js +94 -0
  346. package/dist/shared/default-http-client.builder.js.map +1 -0
  347. package/dist/shared/load-controllers.js +20 -0
  348. package/dist/shared/load-controllers.js.map +1 -0
  349. package/dist/shared/runtime-settings.migration.js +46 -0
  350. package/dist/shared/runtime-settings.migration.js.map +1 -0
  351. package/dist/shared/websocket-rpc-extended.adapter.js +15 -14
  352. package/dist/shared/websocket-rpc-extended.adapter.js.map +1 -1
  353. package/dist/shared/websocket.adapter.js +4 -5
  354. package/dist/shared/websocket.adapter.js.map +1 -1
  355. package/dist/state/file-upload-tracker.cache.js +33 -42
  356. package/dist/state/file-upload-tracker.cache.js.map +1 -1
  357. package/dist/state/file.cache.js +1 -1
  358. package/dist/state/file.cache.js.map +1 -1
  359. package/dist/state/floor.store.js +6 -6
  360. package/dist/state/floor.store.js.map +1 -1
  361. package/dist/state/printer-events.cache.js +21 -22
  362. package/dist/state/printer-events.cache.js.map +1 -1
  363. package/dist/state/printer-files.store.js +6 -8
  364. package/dist/state/printer-files.store.js.map +1 -1
  365. package/dist/state/printer-socket.store.js +27 -50
  366. package/dist/state/printer-socket.store.js.map +1 -1
  367. package/dist/state/printer-thumbnail.cache.js +5 -9
  368. package/dist/state/printer-thumbnail.cache.js.map +1 -1
  369. package/dist/state/printer.cache.js +14 -12
  370. package/dist/state/printer.cache.js.map +1 -1
  371. package/dist/state/settings.store.js +78 -51
  372. package/dist/state/settings.store.js.map +1 -1
  373. package/dist/state/socket-io.gateway.js +39 -36
  374. package/dist/state/socket-io.gateway.js.map +1 -1
  375. package/dist/state/test-printer-socket.store.js +20 -15
  376. package/dist/state/test-printer-socket.store.js.map +1 -1
  377. package/dist/state/validation/create-test-printer.validation.js +13 -10
  378. package/dist/state/validation/create-test-printer.validation.js.map +1 -1
  379. package/dist/task.presets.js.map +1 -1
  380. package/dist/tasks/boot.task.js +14 -19
  381. package/dist/tasks/boot.task.js.map +1 -1
  382. package/dist/tasks/client-bundle.task.js +1 -3
  383. package/dist/tasks/client-bundle.task.js.map +1 -1
  384. package/dist/tasks/print-completion.socketio.task.js +27 -28
  385. package/dist/tasks/print-completion.socketio.task.js.map +1 -1
  386. package/dist/tasks/printer-file-clean.task.js +6 -10
  387. package/dist/tasks/printer-file-clean.task.js.map +1 -1
  388. package/dist/tasks/printer-websocket-restore.task.js +4 -15
  389. package/dist/tasks/printer-websocket-restore.task.js.map +1 -1
  390. package/dist/tasks/printer-websocket.task.js +2 -14
  391. package/dist/tasks/printer-websocket.task.js.map +1 -1
  392. package/dist/tasks/socketio.task.js +8 -35
  393. package/dist/tasks/socketio.task.js.map +1 -1
  394. package/dist/tasks/software-update.task.js +1 -1
  395. package/dist/tasks/software-update.task.js.map +1 -1
  396. package/dist/tasks.js +3 -3
  397. package/dist/tasks.js.map +1 -1
  398. package/dist/utils/array.util.js.map +1 -1
  399. package/dist/utils/cache/key-diff.cache.js.map +1 -1
  400. package/dist/utils/env.utils.js +0 -2
  401. package/dist/utils/env.utils.js.map +1 -1
  402. package/dist/utils/normalize-url.js +6 -3
  403. package/dist/utils/normalize-url.js.map +1 -1
  404. package/dist/utils/pretty-print.utils.js +1 -1
  405. package/dist/utils/pretty-print.utils.js.map +1 -1
  406. package/dist/utils/printer-type.utils.js.map +1 -1
  407. package/dist/utils/time.utils.js +7 -17
  408. package/dist/utils/time.utils.js.map +1 -1
  409. package/dist/utils/url.utils.js +11 -14
  410. package/dist/utils/url.utils.js.map +1 -1
  411. package/package.json +53 -55
  412. package/tsconfig.json +2 -1
  413. package/.yarn/releases/yarn-4.6.0.cjs +0 -934
  414. package/dist/consoles/check-ports.js +0 -170
  415. package/dist/consoles/check-ports.js.map +0 -1
  416. package/dist/consoles/sqlite-torm.js +0 -31
  417. package/dist/consoles/sqlite-torm.js.map +0 -1
  418. package/dist/consoles/upload-test.js +0 -52
  419. package/dist/consoles/upload-test.js.map +0 -1
  420. package/dist/controllers/plugin-firmware-update.controller.js +0 -236
  421. package/dist/controllers/plugin-firmware-update.controller.js.map +0 -1
  422. package/dist/entities/base.entity.js +0 -29
  423. package/dist/entities/base.entity.js.map +0 -1
  424. package/dist/entities/printer-file.entity.js +0 -140
  425. package/dist/entities/printer-file.entity.js.map +0 -1
  426. package/dist/handlers/cache-manager.js +0 -18
  427. package/dist/handlers/cache-manager.js.map +0 -1
  428. package/dist/models/PrinterFile.js +0 -44
  429. package/dist/models/PrinterFile.js.map +0 -1
  430. package/dist/services/core/task-manager.service.js.map +0 -1
  431. package/dist/services/octoprint/plugin-base.service.js +0 -101
  432. package/dist/services/octoprint/plugin-base.service.js.map +0 -1
  433. package/dist/services/octoprint/plugin-firmware-update.service.js +0 -100
  434. package/dist/services/octoprint/plugin-firmware-update.service.js.map +0 -1
  435. package/dist/services/octoprint/plugin-repository.cache.js +0 -45
  436. package/dist/services/octoprint/plugin-repository.cache.js.map +0 -1
  437. package/dist/utils/benchmark.util.js +0 -39
  438. package/dist/utils/benchmark.util.js.map +0 -1
  439. package/dist/utils/is-docker.js +0 -40
  440. package/dist/utils/is-docker.js.map +0 -1
  441. package/dist/utils/metric.utils.js +0 -35
  442. package/dist/utils/metric.utils.js.map +0 -1
  443. package/requests/moonraker/api_job.http +0 -5
  444. package/requests/moonraker/api_printer.http +0 -5
  445. package/requests/moonraker/api_settings.http +0 -5
  446. package/requests/moonraker/printer_info.http +0 -5
  447. package/requests/moonraker/printer_objects_list.http +0 -6
  448. package/requests/moonraker/printer_objects_pause_resume.http +0 -6
  449. package/requests/moonraker/printer_objects_print_stats.http +0 -6
  450. package/requests/moonraker/printer_objects_webhooks.http +0 -6
  451. package/requests/moonraker/server_info.http +0 -5
  452. package/requests/octoprint/octoprint-api-printer-current.http +0 -7
  453. package/requests/octoprint/octoprint-pluginmanager-plugins.http +0 -7
  454. package/requests/printer-file/get-partial-file-moonraker.http +0 -5
  455. package/requests/printer-file/get-thumbnails.http +0 -5
  456. package/requests/printer-file/reload-printer-thumbnails.http +0 -10
  457. package/requests/printer-file/testfile.gcode +0 -5665
  458. package/requests/printer-file/upload-file.http +0 -11
  459. package/requests/printer-file/upload-slicer-file.http +0 -11
  460. package/requests/printers/list.http +0 -5
@@ -8,44 +8,47 @@ Object.defineProperty(exports, "MoonrakerClient", {
8
8
  return MoonrakerClient;
9
9
  }
10
10
  });
11
- const _axios = /*#__PURE__*/ _interop_require_default(require("axios"));
12
11
  const _formdata = /*#__PURE__*/ _interop_require_default(require("form-data"));
13
12
  const _fs = require("fs");
14
13
  const _eventconstants = require("../../constants/event.constants");
14
+ const _defaulthttpclientbuilder = require("../../shared/default-http-client.builder");
15
+ const _runtimeexceptions = require("../../exceptions/runtime.exceptions");
15
16
  function _interop_require_default(obj) {
16
17
  return obj && obj.__esModule ? obj : {
17
18
  default: obj
18
19
  };
19
20
  }
20
21
  class MoonrakerClient {
21
- httpClient;
22
+ httpClientFactory;
22
23
  eventEmitter2;
23
- constructor({ httpClient, eventEmitter2 }){
24
- this.httpClient = httpClient;
24
+ logger;
25
+ constructor(loggerFactory, httpClientFactory, eventEmitter2){
26
+ this.httpClientFactory = httpClientFactory;
25
27
  this.eventEmitter2 = eventEmitter2;
28
+ this.logger = loggerFactory(MoonrakerClient.name);
26
29
  }
27
30
  async getServerInfo(login) {
28
- return this.httpClient.get(`${login.printerURL}/server/info`);
31
+ return this.createClient(login).get("/server/info");
29
32
  }
30
33
  async getServerConfig(login) {
31
- return this.httpClient.get(`${login.printerURL}/server/config`);
34
+ return this.createClient(login).get("/server/config");
32
35
  }
33
36
  async getTemperatureStore(login, includeMonitors = false) {
34
- return this.httpClient.get(`${login.printerURL}/server/temperature_store?include_monitors=${!!includeMonitors}`);
37
+ return this.createClient(login).get(`/server/temperature_store?include_monitors=${!!includeMonitors}`);
35
38
  }
36
39
  async getGcodeStore(login, count = 100) {
37
- return this.httpClient.get(`${login.printerURL}/server/gcode_store?count=${count}`);
40
+ return this.createClient(login).get(`/server/gcode_store?count=${count}`);
38
41
  }
39
42
  async postRolloverLogs(login, application = "") {
40
- return this.httpClient.post(`${login.printerURL}/server/logs/rollover`, {
43
+ return this.createClient(login).post(`server/logs/rollover`, {
41
44
  application
42
45
  });
43
46
  }
44
47
  async postRestartServer(login) {
45
- return this.httpClient.post(`${login.printerURL}/server/restart`);
48
+ return this.createClient(login).post(`server/restart`);
46
49
  }
47
50
  async postJsonRpc(login, method, params, id) {
48
- return this.httpClient.post(`${login.printerURL}/server/jsonrpc`, {
51
+ return this.createClient(login).post(`server/jsonrpc`, {
49
52
  jsonrpc: "2.0",
50
53
  id: id ? id : 0,
51
54
  method,
@@ -53,150 +56,140 @@ class MoonrakerClient {
53
56
  });
54
57
  }
55
58
  async getPrinterInfo(login) {
56
- return this.httpClient.post(`${login.printerURL}/printer/info`);
59
+ return this.createClient(login).post(`printer/info`);
57
60
  }
58
61
  async postQuickStop(login) {
59
- return this.httpClient.post(`${login.printerURL}/printer/emergency_stop`);
62
+ return this.createClient(login).post(`printer/emergency_stop`);
60
63
  }
61
64
  async postHostRestart(login) {
62
- return this.httpClient.post(`${login.printerURL}/printer/restart`);
65
+ return this.createClient(login).post(`printer/restart`);
63
66
  }
64
67
  async postFirmwareRestart(login) {
65
- return this.httpClient.post(`${login.printerURL}/printer/firmware_restart`);
68
+ return this.createClient(login).post(`printer/firmware_restart`);
66
69
  }
67
70
  async getPrinterObjectsList(login) {
68
- return this.httpClient.get(`${login.printerURL}/printer/objects/list`);
71
+ return this.createClient(login).get(`printer/objects/list`);
69
72
  }
70
73
  async getPrinterObjectsQuery(login, query) {
71
74
  const queryString = this.convertToQueryString(query);
72
- return this.httpClient.get(`${login.printerURL}/printer/objects/query?${queryString}`);
75
+ return this.createClient(login).get(`printer/objects/query?${queryString}`);
73
76
  }
74
77
  postSubscribePrinterObjects(login, connectionId, query) {
75
78
  const queryString = this.convertToQueryString(query);
76
- return this.httpClient.post(`${login.printerURL}/printer/objects/subscribe?connection_id=${connectionId}&${queryString}`);
77
- }
78
- convertToQueryString(query) {
79
- return Object.entries(query).reduce((acc, [key, value])=>{
80
- if (value.length > 0) {
81
- acc.push(`${key}=${value.join(",")}`);
82
- } else {
83
- acc.push(key);
84
- }
85
- return acc;
86
- }, []).join("&");
79
+ return this.createClient(login).post(`printer/objects/subscribe?connection_id=${connectionId}&${queryString}`);
87
80
  }
88
81
  async getPrinterQueryEndstops(login) {
89
- return this.httpClient.get(`${login.printerURL}/printer/query-endstops`);
82
+ return this.createClient(login).get(`printer/query-endstops`);
90
83
  }
91
84
  async postGcodeScript(login, script = "G28") {
92
- return this.httpClient.get(`${login.printerURL}/printer/gcode/script?script=${script}`);
85
+ return this.createClient(login).get(`printer/gcode/script?script=${script}`);
93
86
  }
94
87
  async getGcodeHelp(login) {
95
- return this.httpClient.get(`${login.printerURL}/printer/gcode/help`);
88
+ return this.createClient(login).get(`printer/gcode/help`);
96
89
  }
97
90
  async postPrintStart(login, filename) {
98
- return this.httpClient.post(`${login.printerURL}/printer/print/start?filename=${filename}`);
91
+ return this.createClient(login).post(`printer/print/start?filename=${filename}`);
99
92
  }
100
93
  async postPrintPause(login) {
101
- return this.httpClient.post(`${login.printerURL}/printer/print/pause`);
94
+ return this.createClient(login).post(`printer/print/pause`);
102
95
  }
103
96
  async postPrintResume(login) {
104
- return this.httpClient.post(`${login.printerURL}/printer/print/resume`);
97
+ return this.createClient(login).post(`printer/print/resume`);
105
98
  }
106
99
  async postPrintCancel(login) {
107
- return this.httpClient.post(`${login.printerURL}/printer/print/cancel`);
100
+ return this.createClient(login).post(`printer/print/cancel`);
108
101
  }
109
102
  async getMachineSystemInfo(login) {
110
- return this.httpClient.get(`${login.printerURL}/machine/system_info`);
103
+ return this.createClient(login).get(`machine/system_info`);
111
104
  }
112
105
  async postMachineShutdown(login) {
113
- return this.httpClient.post(`${login.printerURL}/machine/shutdown`);
106
+ return this.createClient(login).post(`machine/shutdown`);
114
107
  }
115
108
  async postMachineReboot(login) {
116
- return this.httpClient.post(`${login.printerURL}/machine/reboot`);
109
+ return this.createClient(login).post(`machine/reboot`);
117
110
  }
118
111
  async postMachineRestartService(login, service) {
119
- return this.httpClient.post(`${login.printerURL}/machine/services/restart?service=${service}`);
112
+ return this.createClient(login).post(`machine/services/restart?service=${service}`);
120
113
  }
121
114
  async postMachineStartService(login, service) {
122
- return this.httpClient.post(`${login.printerURL}/machine/services/restart?service=${service}`);
115
+ return this.createClient(login).post(`machine/services/restart?service=${service}`);
123
116
  }
124
117
  async postMachineProcessStats(login) {
125
- return this.httpClient.post(`${login.printerURL}/machine/proc_stats`);
118
+ return this.createClient(login).post(`machine/proc_stats`);
126
119
  }
127
120
  async getMachineSudoInfo(login, checkAccess = false) {
128
- return this.httpClient.get(`${login.printerURL}/machine/sudo/info?check_access=${checkAccess}`);
121
+ return this.createClient(login).get(`machine/sudo/info?check_access=${checkAccess}`);
129
122
  }
130
123
  async postMachineSetSudoPassword(login, password) {
131
- return this.httpClient.post(`${login.printerURL}/machine/sudo/password`, {
124
+ return this.createClient(login).post(`machine/sudo/password`, {
132
125
  password
133
126
  });
134
127
  }
135
128
  async getMachineListPeripheralsUsb(login) {
136
- return this.httpClient.get(`${login.printerURL}/machine/peripherals/usb`);
129
+ return this.createClient(login).get(`machine/peripherals/usb`);
137
130
  }
138
131
  async getMachineListPeripheralsSerial(login) {
139
- return this.httpClient.get(`${login.printerURL}/machine/peripherals/serial`);
132
+ return this.createClient(login).get(`machine/peripherals/serial`);
140
133
  }
141
134
  async getMachineListPeripheralsVideo(login) {
142
- return this.httpClient.get(`${login.printerURL}/machine/peripherals/video`);
135
+ return this.createClient(login).get(`machine/peripherals/video`);
143
136
  }
144
137
  async getMachineListPeripheralsCanbus(login, canInterface = "can0") {
145
- return this.httpClient.get(`${login.printerURL}/machine/peripherals/canbus?interface=${canInterface}`);
138
+ return this.createClient(login).get(`machine/peripherals/canbus?interface=${canInterface}`);
146
139
  }
147
140
  async getServerFilesList(login, rootFolder = "") {
148
141
  const paramString = rootFolder?.length ? `?root=${rootFolder}` : "";
149
- return this.httpClient.get(`${login.printerURL}/server/files/list${paramString}`);
142
+ return this.createClient(login).get(`server/files/list${paramString}`);
150
143
  }
151
144
  async getServerFilesRoots(login) {
152
- return this.httpClient.get(`${login.printerURL}/server/files/roots`);
145
+ return this.createClient(login).get(`server/files/roots`);
153
146
  }
154
147
  async getServerFileMetadata(login, filename) {
155
- return this.httpClient.get(`${login.printerURL}/server/files/metadata?filename=${filename}`);
148
+ return this.createClient(login).get(`server/files/metadata?filename=${filename}`);
156
149
  }
157
150
  async getServerFileMetadataScan(login, filename) {
158
- return this.httpClient.get(`${login.printerURL}/server/files/metascan?filename=${filename}`);
151
+ return this.createClient(login).get(`server/files/metascan?filename=${filename}`);
159
152
  }
160
153
  async getServerFilesThumbnails(login, filename) {
161
- return this.httpClient.get(`${login.printerURL}/server/files/thumbnails?filename=${filename}`);
154
+ return this.createClient(login).get(`server/files/thumbnails?filename=${filename}`);
162
155
  }
163
156
  async getServerFilesDirectoryInfo(login, path, extended) {
164
- return this.httpClient.get(`${login.printerURL}/server/files/directory?path=${path}&extended=${extended}`);
157
+ return this.createClient(login).get(`server/files/directory?path=${path}&extended=${extended}`);
165
158
  }
166
159
  async postServerFilesDirectory(login, path) {
167
- return this.httpClient.post(`${login.printerURL}/server/files/directory`, {
160
+ return this.createClient(login).post(`server/files/directory`, {
168
161
  path
169
162
  });
170
163
  }
171
164
  async deleteServerFilesDirectory(login, path, force) {
172
- return this.httpClient.delete(`${login.printerURL}/server/files/directory?path=${path}&force=${!!force}`);
165
+ return this.createClient(login).delete(`server/files/directory?path=${path}&force=${!!force}`);
173
166
  }
174
167
  async postServerFilesMove(login, source, dest) {
175
- return this.httpClient.post(`${login.printerURL}/server/files/directory`, {
168
+ return this.createClient(login).post(`server/files/directory`, {
176
169
  source,
177
170
  dest
178
171
  });
179
172
  }
180
173
  async postServerFilesCopy(login, source, dest) {
181
- return this.httpClient.post(`${login.printerURL}/server/files/copy`, {
174
+ return this.createClient(login).post(`server/files/copy`, {
182
175
  source,
183
176
  dest
184
177
  });
185
178
  }
186
179
  async postServerFilesZip(login, items, dest, store_only) {
187
- return this.httpClient.post(`${login.printerURL}/server/files/zip`, {
180
+ return this.createClient(login).post(`server/files/zip`, {
188
181
  items,
189
182
  store_only,
190
183
  dest
191
184
  });
192
185
  }
193
186
  async getServerFilesDownload(login, root, filename) {
194
- return await this.httpClient.get(`${login.printerURL}/server/files/${root}/${filename}`, {
187
+ return await this.createClient(login).get(`server/files/${root}/${filename}`, {
195
188
  responseType: "stream"
196
189
  });
197
190
  }
198
191
  async getServerFilesDownloadChunk(login, root, filename, startBytes, endBytes) {
199
- return await this.httpClient.get(`${login.printerURL}/server/files/${root}/${filename}`, {
192
+ return await this.createClient(login).get(`server/files/${root}/${filename}`, {
200
193
  headers: {
201
194
  Range: `bytes=${startBytes}-${endBytes}`
202
195
  }
@@ -213,287 +206,313 @@ class MoonrakerClient {
213
206
  if (checksum?.length) {
214
207
  formData.append("checksum", checksum);
215
208
  }
216
- let source = multerFileOrBuffer.buffer;
217
- const isPhysicalFile = !source;
218
- if (isPhysicalFile) {
219
- source = (0, _fs.createReadStream)(multerFileOrBuffer.path);
209
+ formData.append("print", "true");
210
+ let fileBuffer = multerFileOrBuffer.buffer;
211
+ const filename = multerFileOrBuffer.originalname;
212
+ if (fileBuffer) {
213
+ this.logger.log("Attaching file from memory buffer to formdata for upload");
214
+ formData.append("file", fileBuffer, {
215
+ filename
216
+ });
217
+ } else {
218
+ const filePath = multerFileOrBuffer.path;
219
+ const fileStream = (0, _fs.createReadStream)(filePath);
220
+ this.logger.log(`Attaching file from disk to formdata for upload`);
221
+ formData.append("file", fileStream, {
222
+ filename
223
+ });
220
224
  }
221
- formData.append("file", source, {
222
- filename: multerFileOrBuffer.originalname
223
- });
224
225
  const result = await new Promise((resolve, reject)=>{
225
226
  return formData.getLength((err, length)=>{
226
- if (err) resolve(null);
227
+ if (err) reject(new Error("Could not retrieve formData length"));
227
228
  resolve(length);
228
229
  });
229
230
  });
230
- const headers = {
231
- ...formData.getHeaders(),
232
- "Content-Length": result
233
- };
234
- return await _axios.default.request({
235
- method: "POST",
236
- url: `${login.printerURL}/server/files/upload`,
237
- data: formData,
238
- headers,
239
- onUploadProgress: (p)=>{
240
- if (progressToken) {
241
- this.eventEmitter2.emit(`${(0, _eventconstants.uploadProgressEvent)(progressToken)}`, progressToken, p);
242
- }
231
+ try {
232
+ const response = await this.createClient(login, (b)=>{
233
+ b.withMultiPartFormData().withHeaders({
234
+ ...formData.getHeaders(),
235
+ "Content-Length": result.toString()
236
+ }).withOnUploadProgress((p)=>{
237
+ if (progressToken) {
238
+ this.eventEmitter2.emit(`${(0, _eventconstants.uploadProgressEvent)(progressToken)}`, progressToken, p);
239
+ }
240
+ });
241
+ }).post(`server/files/upload`, formData);
242
+ if (progressToken) {
243
+ this.eventEmitter2.emit(`${(0, _eventconstants.uploadDoneEvent)(progressToken)}`, progressToken);
243
244
  }
244
- });
245
+ return response.data;
246
+ } catch (e) {
247
+ if (progressToken) {
248
+ this.eventEmitter2.emit(`${(0, _eventconstants.uploadFailedEvent)(progressToken)}`, progressToken, e?.message);
249
+ }
250
+ let data;
251
+ try {
252
+ data = JSON.parse(e.response?.body);
253
+ } catch {
254
+ data = e.response?.body;
255
+ }
256
+ throw new _runtimeexceptions.ExternalServiceError({
257
+ error: e.message,
258
+ statusCode: e.response?.statusCode,
259
+ data,
260
+ success: false,
261
+ stack: e.stack
262
+ }, "Moonraker");
263
+ }
245
264
  }
246
265
  async deleteServerFile(login, root, path) {
247
- const url = `${login.printerURL}/server/files/${root}/${path}`;
248
- return this.httpClient.delete(url);
266
+ const url = `server/files/${root}/${path}`;
267
+ return this.createClient(login).delete(url);
249
268
  }
250
269
  async getServerFileKlippyLogDownload(login) {
251
- return this.httpClient.get(`${login.printerURL}/server/files/klippy.log`);
270
+ return this.createClient(login).get(`server/files/klippy.log`);
252
271
  }
253
272
  async getServerFileMoonrakerLogDownload(login) {
254
- return this.httpClient.get(`${login.printerURL}/server/files/moonraker.log`);
273
+ return this.createClient(login).get(`server/files/moonraker.log`);
255
274
  }
256
275
  async postAccessLoginUser(login, username, password, source = "moonraker") {
257
- return this.httpClient.post("/access/login", {
276
+ return this.createClient(login).post("/access/login", {
258
277
  username,
259
278
  password,
260
279
  source
261
280
  });
262
281
  }
263
282
  async postAccessLogoutUser(login) {
264
- return this.httpClient.post(`${login.printerURL}/access/logout`);
283
+ return this.createClient(login).post(`access/logout`);
265
284
  }
266
285
  async getAccessUser(login) {
267
- return this.httpClient.get(`${login.printerURL}/access/user`);
286
+ return this.createClient(login).get(`access/user`);
268
287
  }
269
288
  async postAccessCreateUser(login, username, password) {
270
- return this.httpClient.post(`${login.printerURL}/access/login`, {
289
+ return this.createClient(login).post(`access/login`, {
271
290
  username,
272
291
  password
273
292
  });
274
293
  }
275
294
  async deleteAccessUser(login, username) {
276
- return this.httpClient.delete(`${login.printerURL}/access/user`, {
295
+ return this.createClient(login).delete(`access/user`, {
277
296
  data: {
278
297
  username
279
298
  }
280
299
  });
281
300
  }
282
301
  async listAccessUsers(login) {
283
- return this.httpClient.get(`${login.printerURL}/access/user/list`);
302
+ return this.createClient(login).get(`access/user/list`);
284
303
  }
285
304
  async postAccessResetPassword(login, refresh_token) {
286
- return this.httpClient.post(`${login.printerURL}/access/refresh_jwt`, {
305
+ return this.createClient(login).post(`access/refresh_jwt`, {
287
306
  refresh_token
288
307
  });
289
308
  }
290
309
  async getAccessOneshotToken(login) {
291
- return this.httpClient.get(`${login.printerURL}/access/oneshot_token`);
310
+ return this.createClient(login).get(`access/oneshot_token`);
292
311
  }
293
312
  async getAccessInfo(login) {
294
- return this.httpClient.get(`${login.printerURL}/access/info`);
313
+ return this.createClient(login).get(`access/info`);
295
314
  }
296
315
  async getAccessApiKey(login) {
297
- return this.httpClient.get(`${login.printerURL}/access/api_key`);
316
+ return this.createClient(login).get(`access/api_key`);
298
317
  }
299
318
  async postAccessApiKeyCreate(login) {
300
- return this.httpClient.post(`${login.printerURL}/access/api_key`);
319
+ return this.createClient(login).post(`access/api_key`);
301
320
  }
302
321
  async getDatabaseNamespaceList(login) {
303
- return this.httpClient.get(`${login.printerURL}/database/list`);
322
+ return this.createClient(login).get(`database/list`);
304
323
  }
305
324
  async getDatabaseNamespaceItem(login, namespace, key) {
306
- return this.httpClient.get(`${login.printerURL}/database/item?namespace=${namespace}&key=${key}`);
325
+ return this.createClient(login).get(`database/item?namespace=${namespace}&key=${key}`);
307
326
  }
308
327
  async postDatabaseNamespaceItem(login, namespace, key, value, typeHint) {
309
328
  const typeHintParam = typeHint?.length ? `:${typeHint}` : "";
310
- return this.httpClient.post(`${login.printerURL}/database/item?namespace=${namespace}&key=${key}&value${typeHintParam}=${value}`);
329
+ return this.createClient(login).post(`database/item?namespace=${namespace}&key=${key}&value${typeHintParam}=${value}`);
311
330
  }
312
331
  async deleteDatabaseNamespaceItem(login, namespace, key) {
313
- return this.httpClient.delete(`${login.printerURL}/database/item?namespace=${namespace}&key=${key}`);
332
+ return this.createClient(login).delete(`database/item?namespace=${namespace}&key=${key}`);
314
333
  }
315
334
  async getJobQueueStatus(login) {
316
- return this.httpClient.get(`${login.printerURL}/job_queue/status`);
335
+ return this.createClient(login).get(`job_queue/status`);
317
336
  }
318
337
  async postJobQueueJob(login, filenames, reset) {
319
- return this.httpClient.post(`${login.printerURL}/job_queue/job`, {
338
+ return this.createClient(login).post(`job_queue/job`, {
320
339
  filenames,
321
340
  reset
322
341
  });
323
342
  }
324
343
  async deleteJobQueueJob(login, jobIds, all) {
325
- const base = `${login.printerURL}/job_queue/job`;
344
+ const base = `job_queue/job`;
326
345
  const url = !!all ? `${base}?all=true` : `${base}?job_ids=${jobIds.join(",")}`;
327
- return this.httpClient.delete(url);
346
+ return this.createClient(login).delete(url);
328
347
  }
329
348
  async postJobQueuePause(login) {
330
- return this.httpClient.post(`${login.printerURL}/job_queue/pause`);
349
+ return this.createClient(login).post(`job_queue/pause`);
331
350
  }
332
351
  async postJobQueueStart(login) {
333
- return this.httpClient.post(`${login.printerURL}/job_queue/start`);
352
+ return this.createClient(login).post(`job_queue/start`);
334
353
  }
335
354
  async postJobQueueJump(login, jobId) {
336
- return this.httpClient.post(`${login.printerURL}/job_queue/jump?job_id=${jobId}`);
355
+ return this.createClient(login).post(`job_queue/jump?job_id=${jobId}`);
337
356
  }
338
357
  async getAnnouncementsList(login, includeDismissed) {
339
- return this.httpClient.get(`${login.printerURL}/server/announcements/list?include_dismissed=${includeDismissed}`);
358
+ return this.createClient(login).get(`server/announcements/list?include_dismissed=${includeDismissed}`);
340
359
  }
341
360
  async postAnnouncementsUpdate(login) {
342
- return this.httpClient.post(`${login.printerURL}/server/announcements/update`);
361
+ return this.createClient(login).post(`server/announcements/update`);
343
362
  }
344
363
  async postAnnouncementsDismiss(login, entryId, wakeTime) {
345
- return this.httpClient.post(`${login.printerURL}/server/announcements/dismiss?entry_id=${encodeURIComponent(entryId)}&wake_time=${wakeTime}`);
364
+ return this.createClient(login).post(`server/announcements/dismiss?entry_id=${encodeURIComponent(entryId)}&wake_time=${wakeTime}`);
346
365
  }
347
366
  async getAnnouncementsFeeds(login) {
348
- return this.httpClient.get(`${login.printerURL}/server/announcements/feeds`);
367
+ return this.createClient(login).get(`server/announcements/feeds`);
349
368
  }
350
369
  async postAnnouncementsFeedAdd(login, name) {
351
- return this.httpClient.get(`${login.printerURL}/server/announcements/feeds?name=${name}`);
370
+ return this.createClient(login).get(`server/announcements/feeds?name=${name}`);
352
371
  }
353
372
  async deleteAnnouncementsFeedRemove(login, name) {
354
- return this.httpClient.delete(`${login.printerURL}/server/announcements/feeds?name=${name}`);
373
+ return this.createClient(login).delete(`server/announcements/feeds?name=${name}`);
355
374
  }
356
375
  async getWebcamList(login) {
357
- return this.httpClient.get(`${login.printerURL}/server/webcams/list`);
376
+ return this.createClient(login).get(`server/webcams/list`);
358
377
  }
359
378
  async getWebcamItem(login, uid, name) {
360
- const base = `${login.printerURL}/server/webcams/get_item`;
379
+ const base = `server/webcams/get_item`;
361
380
  const url = !!uid?.length ? `${base}?uid=${uid}` : `${base}?name=${name}`;
362
- return this.httpClient.get(url);
381
+ return this.createClient(login).get(url);
363
382
  }
364
383
  async postWebcamItemUpdate(login, webcam) {
365
- return this.httpClient.post(`${login.printerURL}/server/webcams/post_item`, webcam);
384
+ return this.createClient(login).post(`server/webcams/post_item`, webcam);
366
385
  }
367
386
  async deleteWebcamItem(login, uid, name) {
368
- const base = `${login.printerURL}/server/webcams/delete_item`;
387
+ const base = `server/webcams/delete_item`;
369
388
  const url = !!uid?.length ? `${base}?uid=${uid}` : `${base}?name=${name}`;
370
- return this.httpClient.get(url);
389
+ return this.createClient(login).get(url);
371
390
  }
372
391
  async postWebcamTest(login, uid, name) {
373
- const base = `${login.printerURL}/server/webcams/test`;
392
+ const base = `server/webcams/test`;
374
393
  const url = !!uid?.length ? `${base}?uid=${uid}` : `${base}?name=${name}`;
375
- return this.httpClient.get(url);
394
+ return this.createClient(login).get(url);
376
395
  }
377
396
  async getNotifierList(login) {
378
- return this.httpClient.get(`${login.printerURL}/server/notifiers/list`);
397
+ return this.createClient(login).get(`server/notifiers/list`);
379
398
  }
380
399
  async postMachineUpdateStatus(login) {
381
- return this.httpClient.post(`${login.printerURL}/machine/update/status`);
400
+ return this.createClient(login).post(`machine/update/status`);
382
401
  }
383
402
  async postMachineUpdateRefresh(login, name) {
384
- const base = `${login.printerURL}/machine/update/refresh`;
403
+ const base = `machine/update/refresh`;
385
404
  const url = !!name ? `${base}` : `${base}?name=${name}`;
386
- return this.httpClient.post(url);
405
+ return this.createClient(login).post(url);
387
406
  }
388
407
  async postMachineUpdateFull(login) {
389
- return this.httpClient.post(`${login.printerURL}/machine/update/full`);
408
+ return this.createClient(login).post(`machine/update/full`);
390
409
  }
391
410
  async postMachineUpdateMoonraker(login) {
392
- return this.httpClient.post(`${login.printerURL}/machine/update/moonraker`);
411
+ return this.createClient(login).post(`machine/update/moonraker`);
393
412
  }
394
413
  async postMachineUpdateKlipper(login) {
395
- return this.httpClient.post(`${login.printerURL}/machine/update/klipper`);
414
+ return this.createClient(login).post(`machine/update/klipper`);
396
415
  }
397
416
  async postMachineUpdateClient(login, name) {
398
- return this.httpClient.post(`${login.printerURL}/machine/update/client?name=${name}`);
417
+ return this.createClient(login).post(`machine/update/client?name=${name}`);
399
418
  }
400
419
  async postMachineUpdateSystem(login) {
401
- return this.httpClient.post(`${login.printerURL}/machine/update/system`);
420
+ return this.createClient(login).post(`machine/update/system`);
402
421
  }
403
422
  async postMachineUpdateRecover(login, name, hard = false) {
404
- return this.httpClient.post(`${login.printerURL}/machine/update/recover?name=${name}&hard=${hard}`);
423
+ return this.createClient(login).post(`machine/update/recover?name=${name}&hard=${hard}`);
405
424
  }
406
425
  async postMachineUpdateRollback(login, name) {
407
- return this.httpClient.post(`${login.printerURL}/machine/update/rollback?name=${name}`);
426
+ return this.createClient(login).post(`machine/update/rollback?name=${name}`);
408
427
  }
409
428
  async getMachineDevicePowerDevices(login) {
410
- return this.httpClient.get(`${login.printerURL}/machine/device_power/devices`);
429
+ return this.createClient(login).get(`machine/device_power/devices`);
411
430
  }
412
431
  async getMachineDevicePowerDeviceState(login, device) {
413
- return this.httpClient.get(`${login.printerURL}/machine/device_power/device?device=${device}`);
432
+ return this.createClient(login).get(`machine/device_power/device?device=${device}`);
414
433
  }
415
434
  async postMachineDevicePowerDeviceState(login, device, action) {
416
- return this.httpClient.post(`${login.printerURL}/machine/device_power/device?device=${device}&action=${action}`);
435
+ return this.createClient(login).post(`machine/device_power/device?device=${device}&action=${action}`);
417
436
  }
418
437
  async getMachineDevicePowerBatchDeviceState(login, devices) {
419
- return this.httpClient.get(`${login.printerURL}/machine/device_power/status?${devices.join("&")}`);
438
+ return this.createClient(login).get(`machine/device_power/status?${devices.join("&")}`);
420
439
  }
421
440
  async postMachineDevicePowerBatchPowerOn(login, device) {
422
- return this.httpClient.post(`${login.printerURL}/machine/device_power/on?device=${device}`);
441
+ return this.createClient(login).post(`machine/device_power/on?device=${device}`);
423
442
  }
424
443
  async postMachineDevicePowerBatchPowerOff(login, device) {
425
- return this.httpClient.post(`${login.printerURL}/machine/device_power/off?device=${device}`);
444
+ return this.createClient(login).post(`machine/device_power/off?device=${device}`);
426
445
  }
427
446
  async getMachineWledStrips(login) {
428
- return this.httpClient.get(`${login.printerURL}/machine/wled/strips`);
447
+ return this.createClient(login).get(`machine/wled/strips`);
429
448
  }
430
449
  async getMachineWledStatuses(login, strips) {
431
- return this.httpClient.get(`${login.printerURL}/machine/wled/status?${strips.join("&")}`);
450
+ return this.createClient(login).get(`machine/wled/status?${strips.join("&")}`);
432
451
  }
433
452
  async postMachineWledPowerOn(login, strips) {
434
- return this.httpClient.post(`${login.printerURL}/machine/wled/on?${strips.join("&")}`);
453
+ return this.createClient(login).post(`machine/wled/on?${strips.join("&")}`);
435
454
  }
436
455
  async postMachineWledPowerOff(login, strips) {
437
- return this.httpClient.post(`${login.printerURL}/machine/wled/off?${strips.join("&")}`);
456
+ return this.createClient(login).post(`machine/wled/off?${strips.join("&")}`);
438
457
  }
439
458
  async postMachineWledPowerStripAction(login, strips) {
440
- return this.httpClient.post(`${login.printerURL}/machine/wled/toggle?${strips.join("&")}`);
459
+ return this.createClient(login).post(`machine/wled/toggle?${strips.join("&")}`);
441
460
  }
442
461
  async getMachineWledStripAction(login, strip, action, controlParams) {
443
462
  const queryParams = Object.entries(controlParams).map(([k, v])=>`${k}=${v}`).join("&");
444
- return this.httpClient.get(`${login.printerURL}/machine/wled/strip?strip=${strip}&action=${action}&${queryParams}`);
463
+ return this.createClient(login).get(`machine/wled/strip?strip=${strip}&action=${action}&${queryParams}`);
445
464
  }
446
465
  async getServerSensorsList(login) {
447
- return this.httpClient.get(`${login.printerURL}/server/sensors/list`);
466
+ return this.createClient(login).get(`server/sensors/list`);
448
467
  }
449
468
  async getServerSensorItem(login, sensor) {
450
- return this.httpClient.get(`${login.printerURL}/server/sensors/info?sensor=${sensor}`);
469
+ return this.createClient(login).get(`server/sensors/info?sensor=${sensor}`);
451
470
  }
452
471
  async getServerSensorMeasurements(login, sensor) {
453
- return this.httpClient.get(`${login.printerURL}/server/sensors/measurements?sensor=${sensor}`);
472
+ return this.createClient(login).get(`server/sensors/measurements?sensor=${sensor}`);
454
473
  }
455
474
  async getServerSensorMeasurementsBatch(login) {
456
- return this.httpClient.get(`${login.printerURL}/server/sensors/measurements`);
475
+ return this.createClient(login).get(`server/sensors/measurements`);
457
476
  }
458
477
  async getServerSpoolmanStatus(login) {
459
- return this.httpClient.get(`${login.printerURL}/server/spoolman/status`);
478
+ return this.createClient(login).get(`server/spoolman/status`);
460
479
  }
461
480
  async postServerSpoolmanActiveSpool(login, spoolId) {
462
- return this.httpClient.post(`${login.printerURL}/server/spoolman/spool_id`, {
481
+ return this.createClient(login).post(`server/spoolman/spool_id`, {
463
482
  spool_id: spoolId
464
483
  });
465
484
  }
466
485
  async getServerSpoolmanActiveSpool(login) {
467
- return this.httpClient.get(`${login.printerURL}/server/spoolman/spool_id`);
486
+ return this.createClient(login).get(`server/spoolman/spool_id`);
468
487
  }
469
488
  async postServerSpoolmanProxyRequest(login, body) {
470
- return this.httpClient.post(`${login.printerURL}/server/spoolman/proxy`, body);
489
+ return this.createClient(login).post(`server/spoolman/proxy`, body);
471
490
  }
472
491
  async getApiVersion(login) {
473
- return this.httpClient.get(`${login.printerURL}/api/version`);
492
+ return this.createClient(login).get(`api/version`);
474
493
  }
475
494
  async getServerVersion(login) {
476
- return this.httpClient.get(`${login.printerURL}/api/server`);
495
+ return this.createClient(login).get(`api/server`);
477
496
  }
478
497
  async getApiLogin(login) {
479
- return this.httpClient.get(`${login.printerURL}/api/login`);
498
+ return this.createClient(login).get(`api/login`);
480
499
  }
481
500
  async getApiSettings(login) {
482
- return this.httpClient.get(`${login.printerURL}/api/settings`);
501
+ return this.createClient(login).get(`api/settings`);
483
502
  }
484
503
  async getApiJob(login) {
485
- return this.httpClient.get(`${login.printerURL}/api/job`);
504
+ return this.createClient(login).get(`api/job`);
486
505
  }
487
506
  async getApiPrinter(login) {
488
- return this.httpClient.get(`${login.printerURL}/api/printer`);
507
+ return this.createClient(login).get(`api/printer`);
489
508
  }
490
509
  async postApiPrinterCommand(login, commands) {
491
- return this.httpClient.post(`${login.printerURL}/api/command`, {
510
+ return this.createClient(login).post(`api/command`, {
492
511
  commands
493
512
  });
494
513
  }
495
514
  async getApiProfiles(login) {
496
- return this.httpClient.get(`${login.printerURL}/api/printerprofiles`);
515
+ return this.createClient(login).get(`api/printerprofiles`);
497
516
  }
498
517
  async getServerHistoryList(login, limit, start, since, before, order = "desc") {
499
518
  let params = `limit=${limit}&start=${start}&order=${order}`;
@@ -503,21 +522,47 @@ class MoonrakerClient {
503
522
  if (!!since || since === 0) {
504
523
  params += "&since=" + since;
505
524
  }
506
- return this.httpClient.get(`${login.printerURL}/server/history/list?${params}`);
525
+ return this.createClient(login).get(`server/history/list?${params}`);
507
526
  }
508
527
  async getServerHistoryTotals(login) {
509
- return this.httpClient.get(`${login.printerURL}/server/history/totals`);
528
+ return this.createClient(login).get(`server/history/totals`);
510
529
  }
511
530
  async postServerHistoryResetTotals(login) {
512
- return this.httpClient.post(`${login.printerURL}/server/history/reset_totals`);
531
+ return this.createClient(login).post(`server/history/reset_totals`);
513
532
  }
514
533
  async getServerHistoryJob(login, uid) {
515
- return this.httpClient.get(`${login.printerURL}/server/history/job?uid=${uid}`);
534
+ return this.createClient(login).get(`server/history/job?uid=${uid}`);
516
535
  }
517
536
  async deleteServerHistoryJob(login, uid) {
518
- const base = `${login.printerURL}/server/history/job`;
537
+ const base = `server/history/job`;
519
538
  const url = !!uid?.length ? `${base}?uid=${uid}` : `${base}?all=true`;
520
- return this.httpClient.get(url);
539
+ return this.createClient(login).get(url);
540
+ }
541
+ convertToQueryString(query) {
542
+ return Object.entries(query).reduce((acc, [key, value])=>{
543
+ if (value.length > 0) {
544
+ acc.push(`${key}=${value.join(",")}`);
545
+ } else {
546
+ acc.push(key);
547
+ }
548
+ return acc;
549
+ }, []).join("&");
550
+ }
551
+ createClient(login, buildFluentOptions) {
552
+ const baseAddress = login.printerURL;
553
+ return this.createAnonymousClient(baseAddress, (o)=>{
554
+ if (buildFluentOptions) {
555
+ buildFluentOptions(o);
556
+ }
557
+ });
558
+ }
559
+ createAnonymousClient(baseAddress, buildFluentOptions) {
560
+ const builder = new _defaulthttpclientbuilder.DefaultHttpClientBuilder();
561
+ return this.httpClientFactory.createClientWithBaseUrl(builder, baseAddress, (b)=>{
562
+ if (buildFluentOptions) {
563
+ buildFluentOptions(b);
564
+ }
565
+ });
521
566
  }
522
567
  }
523
568