@fdm-monster/server 2.0.0-rc1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/.env.template +8 -3
  2. package/.yarn/install-state.gz +0 -0
  3. package/CONTRIBUTING.md +1 -1
  4. package/README.md +5 -4
  5. package/RELEASE_NOTES.MD +39 -0
  6. package/SECURITY.md +1 -1
  7. package/dist/consoles/download-github-releases.js +3 -3
  8. package/dist/consoles/launch-http-servers.js +4 -4
  9. package/dist/consoles/launch-http-servers.js.map +1 -1
  10. package/dist/consoles/mock-bambu.server.js +35 -16
  11. package/dist/consoles/mock-bambu.server.js.map +1 -1
  12. package/dist/consoles/mock-camera/default-image.js +13 -0
  13. package/dist/consoles/mock-camera/default-image.js.map +1 -0
  14. package/dist/consoles/mock-camera/mock-camera.server.js +160 -0
  15. package/dist/consoles/mock-camera/mock-camera.server.js.map +1 -0
  16. package/dist/consoles/mock-octoprint.server.js +281 -73
  17. package/dist/consoles/mock-octoprint.server.js.map +1 -1
  18. package/dist/consoles/mock-prusalink.server.js +11 -11
  19. package/dist/consoles/mock-prusalink.server.js.map +1 -1
  20. package/dist/consoles/typeorm-create.js +135 -0
  21. package/dist/consoles/typeorm-create.js.map +1 -0
  22. package/dist/consoles/typeorm-generate.js +8 -8
  23. package/dist/consoles/typeorm-generate.js.map +1 -1
  24. package/dist/constants/authorization.constants.js +13 -26
  25. package/dist/constants/authorization.constants.js.map +1 -1
  26. package/dist/constants/server-settings.constants.js +3 -18
  27. package/dist/constants/server-settings.constants.js.map +1 -1
  28. package/dist/container.js +18 -10
  29. package/dist/container.js.map +1 -1
  30. package/dist/container.tokens.js +9 -5
  31. package/dist/container.tokens.js.map +1 -1
  32. package/dist/controllers/batch-call.controller.js +0 -15
  33. package/dist/controllers/batch-call.controller.js.map +1 -1
  34. package/dist/controllers/file-storage.controller.js +248 -0
  35. package/dist/controllers/file-storage.controller.js.map +1 -0
  36. package/dist/controllers/first-time-setup.controller.js +2 -1
  37. package/dist/controllers/first-time-setup.controller.js.map +1 -1
  38. package/dist/controllers/floor.controller.js +12 -12
  39. package/dist/controllers/floor.controller.js.map +1 -1
  40. package/dist/controllers/print-job.controller.js +666 -0
  41. package/dist/controllers/print-job.controller.js.map +1 -0
  42. package/dist/controllers/print-queue.controller.js +375 -0
  43. package/dist/controllers/print-queue.controller.js.map +1 -0
  44. package/dist/controllers/printer-files.controller.js +86 -59
  45. package/dist/controllers/printer-files.controller.js.map +1 -1
  46. package/dist/controllers/printer-settings.controller.js +0 -21
  47. package/dist/controllers/printer-settings.controller.js.map +1 -1
  48. package/dist/controllers/{printer-group.controller.js → printer-tag.controller.js} +51 -34
  49. package/dist/controllers/printer-tag.controller.js.map +1 -0
  50. package/dist/controllers/printer.controller.js +15 -0
  51. package/dist/controllers/printer.controller.js.map +1 -1
  52. package/dist/controllers/server-private.controller.js +2 -1
  53. package/dist/controllers/server-private.controller.js.map +1 -1
  54. package/dist/controllers/server-public.controller.js +6 -2
  55. package/dist/controllers/server-public.controller.js.map +1 -1
  56. package/dist/controllers/settings.controller.js +0 -68
  57. package/dist/controllers/settings.controller.js.map +1 -1
  58. package/dist/controllers/slicer-compat.controller.js +216 -0
  59. package/dist/controllers/slicer-compat.controller.js.map +1 -0
  60. package/dist/data-source.js +20 -8
  61. package/dist/data-source.js.map +1 -1
  62. package/dist/entities/camera-stream.entity.js +2 -1
  63. package/dist/entities/camera-stream.entity.js.map +1 -1
  64. package/dist/entities/floor.entity.js +3 -5
  65. package/dist/entities/floor.entity.js.map +1 -1
  66. package/dist/entities/index.js +15 -7
  67. package/dist/entities/index.js.map +1 -1
  68. package/dist/entities/print-job.entity.js +195 -0
  69. package/dist/entities/print-job.entity.js.map +1 -0
  70. package/dist/entities/{printer-group.entity.js → printer-tag.entity.js} +17 -17
  71. package/dist/entities/printer-tag.entity.js.map +1 -0
  72. package/dist/entities/printer.entity.js +4 -10
  73. package/dist/entities/printer.entity.js.map +1 -1
  74. package/dist/entities/settings.entity.js +3 -12
  75. package/dist/entities/settings.entity.js.map +1 -1
  76. package/dist/entities/{group.entity.js → tag.entity.js} +15 -8
  77. package/dist/entities/tag.entity.js.map +1 -0
  78. package/dist/index.js +8 -2
  79. package/dist/index.js.map +1 -1
  80. package/dist/middleware/exception.filter.js +114 -90
  81. package/dist/middleware/exception.filter.js.map +1 -1
  82. package/dist/middleware/global.middleware.js +6 -6
  83. package/dist/middleware/global.middleware.js.map +1 -1
  84. package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js +186 -0
  85. package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js.map +1 -0
  86. package/dist/migrations/1767279607392-DropCustomGcode.js +31 -0
  87. package/dist/migrations/1767279607392-DropCustomGcode.js.map +1 -0
  88. package/dist/migrations/1767291804417-DropPrintCompletions.js +37 -0
  89. package/dist/migrations/1767291804417-DropPrintCompletions.js.map +1 -0
  90. package/dist/migrations/1767352862576-DropSettingsFileClean.js +88 -0
  91. package/dist/migrations/1767352862576-DropSettingsFileClean.js.map +1 -0
  92. package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js +107 -0
  93. package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js.map +1 -0
  94. package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js +62 -0
  95. package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js.map +1 -0
  96. package/dist/migrations/1767432108916-RenameGroupToTag.js +86 -0
  97. package/dist/migrations/1767432108916-RenameGroupToTag.js.map +1 -0
  98. package/dist/migrations/1767451444137-AddPrintJob.js +207 -0
  99. package/dist/migrations/1767451444137-AddPrintJob.js.map +1 -0
  100. package/dist/server.constants.js +9 -9
  101. package/dist/server.constants.js.map +1 -1
  102. package/dist/server.host.js +24 -32
  103. package/dist/server.host.js.map +1 -1
  104. package/dist/services/bambu/bambu-ftp.adapter.js +1 -1
  105. package/dist/services/bambu/bambu-ftp.adapter.js.map +1 -1
  106. package/dist/services/bambu/bambu-mqtt.adapter.js +73 -76
  107. package/dist/services/bambu/bambu-mqtt.adapter.js.map +1 -1
  108. package/dist/services/core/batch-call.service.js +0 -25
  109. package/dist/services/core/batch-call.service.js.map +1 -1
  110. package/dist/services/core/multer.service.js +5 -9
  111. package/dist/services/core/multer.service.js.map +1 -1
  112. package/dist/services/core/yaml.service.js +208 -153
  113. package/dist/services/core/yaml.service.js.map +1 -1
  114. package/dist/services/file-analysis.service.js +146 -0
  115. package/dist/services/file-analysis.service.js.map +1 -0
  116. package/dist/services/file-storage.service.js +386 -0
  117. package/dist/services/file-storage.service.js.map +1 -0
  118. package/dist/services/interfaces/floor.dto.js +3 -3
  119. package/dist/services/interfaces/floor.dto.js.map +1 -1
  120. package/dist/services/interfaces/{printer-group.dto.js → printer-tag.dto.js} +9 -8
  121. package/dist/services/interfaces/printer-tag.dto.js.map +1 -0
  122. package/dist/services/interfaces/{print-completion.interface.js → printer-tag.service.interface.js} +1 -1
  123. package/dist/services/interfaces/{printer-group.service.interface.js.map → printer-tag.service.interface.js.map} +1 -1
  124. package/dist/services/interfaces/settings.dto.js +0 -1
  125. package/dist/services/interfaces/settings.dto.js.map +1 -1
  126. package/dist/services/interfaces/{group.dto.js → tag.dto.js} +1 -1
  127. package/dist/services/interfaces/tag.dto.js.map +1 -0
  128. package/dist/services/octoprint/dto/files/gcode-analysis.dto.js.map +1 -0
  129. package/dist/services/octoprint/octoprint-api.routes.js +0 -7
  130. package/dist/services/octoprint/octoprint-api.routes.js.map +1 -1
  131. package/dist/services/octoprint/octoprint.client.js +0 -4
  132. package/dist/services/octoprint/octoprint.client.js.map +1 -1
  133. package/dist/services/orm/floor.service.js +9 -16
  134. package/dist/services/orm/floor.service.js.map +1 -1
  135. package/dist/services/orm/print-job.service.js +539 -0
  136. package/dist/services/orm/print-job.service.js.map +1 -0
  137. package/dist/services/orm/printer-tag.service.js +120 -0
  138. package/dist/services/orm/printer-tag.service.js.map +1 -0
  139. package/dist/services/orm/settings.service.js +0 -8
  140. package/dist/services/orm/settings.service.js.map +1 -1
  141. package/dist/services/print-file-downloader.service.js +169 -0
  142. package/dist/services/print-file-downloader.service.js.map +1 -0
  143. package/dist/services/print-queue.service.js +268 -0
  144. package/dist/services/print-queue.service.js.map +1 -0
  145. package/dist/services/prusa-link/prusa-link-http-polling.adapter.js +1 -3
  146. package/dist/services/prusa-link/prusa-link-http-polling.adapter.js.map +1 -1
  147. package/dist/services/validators/floor-service.validation.js +10 -10
  148. package/dist/services/validators/floor-service.validation.js.map +1 -1
  149. package/dist/services/validators/print-job.validation.js +31 -0
  150. package/dist/services/validators/print-job.validation.js.map +1 -0
  151. package/dist/services/validators/settings-service.validation.js +0 -22
  152. package/dist/services/validators/settings-service.validation.js.map +1 -1
  153. package/dist/services/validators/yaml-service.validation.js +7 -13
  154. package/dist/services/validators/yaml-service.validation.js.map +1 -1
  155. package/dist/shared/load-controllers.js +2 -1
  156. package/dist/shared/load-controllers.js.map +1 -1
  157. package/dist/shared/runtime-settings.migration.js +1 -11
  158. package/dist/shared/runtime-settings.migration.js.map +1 -1
  159. package/dist/state/floor.store.js +2 -9
  160. package/dist/state/floor.store.js.map +1 -1
  161. package/dist/state/printer-events.cache.js +179 -19
  162. package/dist/state/printer-events.cache.js.map +1 -1
  163. package/dist/state/printer-thumbnail.cache.js +98 -183
  164. package/dist/state/printer-thumbnail.cache.js.map +1 -1
  165. package/dist/state/settings.store.js +2 -33
  166. package/dist/state/settings.store.js.map +1 -1
  167. package/dist/state/socket-io.gateway.js +1 -1
  168. package/dist/state/socket-io.gateway.js.map +1 -1
  169. package/dist/tasks/boot.task.js +7 -5
  170. package/dist/tasks/boot.task.js.map +1 -1
  171. package/dist/tasks/print-job-analysis.task.js +116 -0
  172. package/dist/tasks/print-job-analysis.task.js.map +1 -0
  173. package/dist/tasks/printer-files-load.task.js +29 -0
  174. package/dist/tasks/printer-files-load.task.js.map +1 -0
  175. package/dist/tasks/socketio.task.js +1 -1
  176. package/dist/tasks/socketio.task.js.map +1 -1
  177. package/dist/tasks.js +3 -2
  178. package/dist/tasks.js.map +1 -1
  179. package/dist/utils/parsers/3mf.parser.js +337 -0
  180. package/dist/utils/parsers/3mf.parser.js.map +1 -0
  181. package/dist/utils/parsers/bgcode.parser.js +223 -0
  182. package/dist/utils/parsers/bgcode.parser.js.map +1 -0
  183. package/dist/utils/parsers/gcode.parser.js +254 -0
  184. package/dist/utils/parsers/gcode.parser.js.map +1 -0
  185. package/dist/utils/swagger/decorators.js +39 -0
  186. package/dist/utils/swagger/decorators.js.map +1 -0
  187. package/dist/utils/swagger/generator.js +196 -0
  188. package/dist/utils/swagger/generator.js.map +1 -0
  189. package/dist/utils/swagger/swagger.js +93 -0
  190. package/dist/utils/swagger/swagger.js.map +1 -0
  191. package/package.json +19 -15
  192. package/dist/controllers/custom-gcode.controller.js +0 -147
  193. package/dist/controllers/custom-gcode.controller.js.map +0 -1
  194. package/dist/controllers/print-completion.controller.js +0 -118
  195. package/dist/controllers/print-completion.controller.js.map +0 -1
  196. package/dist/controllers/printer-group.controller.js.map +0 -1
  197. package/dist/entities/custom-gcode.entity.js +0 -49
  198. package/dist/entities/custom-gcode.entity.js.map +0 -1
  199. package/dist/entities/group.entity.js.map +0 -1
  200. package/dist/entities/print-completion.entity.js +0 -90
  201. package/dist/entities/print-completion.entity.js.map +0 -1
  202. package/dist/entities/printer-group.entity.js.map +0 -1
  203. package/dist/services/interfaces/custom-gcode.dto.js +0 -18
  204. package/dist/services/interfaces/custom-gcode.dto.js.map +0 -1
  205. package/dist/services/interfaces/custom-gcode.service.interface.js +0 -6
  206. package/dist/services/interfaces/custom-gcode.service.interface.js.map +0 -1
  207. package/dist/services/interfaces/gcode-analysis.dto.js.map +0 -1
  208. package/dist/services/interfaces/group.dto.js.map +0 -1
  209. package/dist/services/interfaces/print-completion-context.dto.js +0 -6
  210. package/dist/services/interfaces/print-completion-context.dto.js.map +0 -1
  211. package/dist/services/interfaces/print-completion.dto.js +0 -38
  212. package/dist/services/interfaces/print-completion.dto.js.map +0 -1
  213. package/dist/services/interfaces/print-completion.interface.js.map +0 -1
  214. package/dist/services/interfaces/printer-group.dto.js.map +0 -1
  215. package/dist/services/interfaces/printer-group.service.interface.js +0 -6
  216. package/dist/services/orm/custom-gcode.service.js +0 -42
  217. package/dist/services/orm/custom-gcode.service.js.map +0 -1
  218. package/dist/services/orm/print-completion.service.js +0 -87
  219. package/dist/services/orm/print-completion.service.js.map +0 -1
  220. package/dist/services/orm/print-completion.shared.js +0 -59
  221. package/dist/services/orm/print-completion.shared.js.map +0 -1
  222. package/dist/services/orm/printer-group.service.js +0 -109
  223. package/dist/services/orm/printer-group.service.js.map +0 -1
  224. package/dist/tasks/print-completion.socketio.task.js +0 -91
  225. package/dist/tasks/print-completion.socketio.task.js.map +0 -1
  226. package/dist/tasks/printer-file-clean.task.js +0 -74
  227. package/dist/tasks/printer-file-clean.task.js.map +0 -1
  228. /package/dist/services/{interfaces → octoprint/dto/files}/gcode-analysis.dto.js +0 -0
package/.env.template CHANGED
@@ -24,7 +24,7 @@ OVERRIDE_JWT_EXPIRES_IN=3600
24
24
  # Optional, changing this will invalidate all existing logins
25
25
  OVERRIDE_JWT_ISSUER=fdm-monster-server-2023
26
26
  # Optional, changing this will invalidate all existing logins
27
- OVERRIDE_JWT_AUDIENCE=fdm-monster-client-2023
27
+ OVERRIDE_JWT_AUDIENCE=fdm-monster-client-next-2026
28
28
 
29
29
  # Demo mode, will set wizard to completed
30
30
  OVERRIDE_IS_DEMO_MODE=true
@@ -35,8 +35,7 @@ OVERRIDE_DEMO_PASSWORD=demo2023
35
35
  # Optional, default: ADMIN, logical values: "ADMIN", "OPERATOR"
36
36
  OVERRIDE_DEMO_ROLE=ADMIN
37
37
 
38
- # Debug express routes
39
- DEBUG_ROUTES=false
38
+ # Debug socket states
40
39
  DEBUG_SOCKET_STATES=false
41
40
 
42
41
  # Saves SQLite database to ./database/fdm-monster.sqlite
@@ -48,3 +47,9 @@ ENABLE_PROMETHEUS=false
48
47
  ENABLE_LOKI=false
49
48
  LOKI_ADDRESS=
50
49
  ENABLE_PROMETHEUS_METRICS=false
50
+
51
+ # Swagger/OpenAPI Documentation
52
+ # Optional, default: false. Set to true to disable Swagger UI and OpenAPI documentation endpoints
53
+ DISABLE_SWAGGER_OPENAPI=false
54
+ # Optional, default: false. Set to true to generate swagger.json file in media folder
55
+ GENERATE_SWAGGER_JSON=false
Binary file
package/CONTRIBUTING.md CHANGED
@@ -35,7 +35,7 @@ Sorry we do not have a documentation with F.A.Q. yet. Please visit us on discord
35
35
  FDM Monster currently consists of two active repositories:
36
36
 
37
37
  - [FDM Monster](https://github.com/fdm-monster/fdm-monster) - the server
38
- - [FDM Monster Client](https://github.com/fdm-monster/fdm-monster-client) - the client UI
38
+ - [FDM Monster Client](https://github.com/fdm-monster/fdm-monster-client-next) - the client UI
39
39
  - [FDM Connector](https://github.com/fdm-monster/fdm-connector) - the OctoPrint plugin (not in use yet)
40
40
 
41
41
  ### Design decisions
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <p align="center" style="margin-bottom: 0">
2
2
  <a href="https://docs.fdm-monster.net/" target="_blank" rel="noopener noreferrer">
3
- <img width="150" src="https://github.com/fdm-monster/fdm-monster-client/blob/main/public/img/logo.png?raw=true" alt="FDM Monster">
3
+ <img width="150" src="https://github.com/fdm-monster/fdm-monster-client-next/blob/main/public/img/logo.png?raw=true" alt="FDM Monster">
4
4
  </a>
5
5
  </p>
6
6
  <h1 align="center" style="padding-top: 0; margin-top: 10px">FDM Monster</h1>
@@ -158,13 +158,14 @@ the [CONTRIBUTING](CONTRIBUTING.md) file.
158
158
  - [x] 🔌 Raspberry Pi image (https://github.com/fdm-monster/MonsterPi)
159
159
  - [x] :rocket: Documentation (https://docs.fdm-monster.net)
160
160
  - [x] 🛡️ Login and user management
161
- - [x] OctoFarm export
161
+ - [x] OctoFarm printer import
162
162
  - [x] Klipper and Moonraker API integration
163
163
  - [x] GCode Thumbnail support
164
164
  - [x] `.bgcode` support
165
165
  - [x] Modernized UI layout and tile design
166
- - [ ] History and statistics
167
- - [ ] Extended webcam integration
166
+ - [x] History and statistics
167
+ - [x] Print Queue
168
+ - [x] Extended webcam integration
168
169
  - [ ] Spoolman integration
169
170
 
170
171
  ## License
package/RELEASE_NOTES.MD CHANGED
@@ -1,5 +1,44 @@
1
1
  # Develop
2
2
 
3
+ # FDM Monster 2.0.0
4
+
5
+ ## Feat
6
+
7
+ - All UI features in https://github.com/fdm-monster/fdm-monster-client-next/blob/main/RELEASE_NOTES.MD
8
+ - Add mock camera console to project (for development)
9
+ - Add swagger and OpenAPI integration
10
+ - UI Client is now fdm-monster-client-next at v2.0.0
11
+ - Add color option to tag
12
+ - Add API to upload from slicer
13
+ - Change API to /api/v2
14
+ - Queue
15
+ - PrintJob
16
+ - File Analysis
17
+
18
+ ## Fixes
19
+
20
+ - Renames PrinterFloors permission group to Floors
21
+ - Load printer files in background instead of synchronously
22
+ - BambuLab connection rejections cannot cause server crashes anymore
23
+ - Default grid size is now 4 by 2 (which is less overwhelming)
24
+ - Floor service wouldn't update printer position, comparison was x==x, y==x
25
+ - ExceptionFilter now logs using loggerFactory
26
+ - YAML import service was brittle against printer type failures, added robustness
27
+ - Camera should tolerate printer deletion: SET NULL applied to Foreign Key
28
+ - Quick stop API endpoint moved to printer controller, removing the need for custom gcode api controller.
29
+ - Drop printer file clean task, outdated concept
30
+ - File uploads now go to media/file-uploads instead of media
31
+ - First-time-setup api filter now allows swagger endpoints
32
+ - Floor order change not properly implemented in API service
33
+ - Remove experimental thumbnail support
34
+
35
+ ## Chore
36
+ - Remove batch/single set gcode analysis to false
37
+ - Removed client next experimental setting
38
+ - Drop unused Custom Gcode table
39
+ - Drop broken PrintCompletion table
40
+ - Rename PrinterGroup to PrinterTag, and Group to Tag
41
+
3
42
  # FDM Monster 2.0.0-rc1
4
43
 
5
44
  ## Features
package/SECURITY.md CHANGED
@@ -7,7 +7,7 @@ currently being supported with security updates.
7
7
 
8
8
  | Version | Supported |
9
9
  | ------- | ------------------ |
10
- | 1.3.x | :white_check_mark: |
10
+ | 1.9.x | :white_check_mark: |
11
11
  | 1.0.0 | :x: |
12
12
  | < 1.0 | :x: |
13
13
 
@@ -12,7 +12,7 @@ function _interop_require_default(obj) {
12
12
  }
13
13
  const fetchReleases = async ()=>{
14
14
  try {
15
- const response = await _axios.default.get("https://api.github.com/repos/fdm-monster/fdm-monster-client/releases");
15
+ const response = await _axios.default.get("https://api.github.com/repos/fdm-monster/fdm-monster-client-next/releases");
16
16
  const releases = response.data;
17
17
  const releaseData = releases.map((release)=>({
18
18
  tag_name: release.tag_name,
@@ -29,7 +29,7 @@ const fetchReleases = async ()=>{
29
29
  };
30
30
  const fetchLatest = async ()=>{
31
31
  try {
32
- const response = await _axios.default.get("https://api.github.com/repos/fdm-monster/fdm-monster-client/releases/latest");
32
+ const response = await _axios.default.get("https://api.github.com/repos/fdm-monster/fdm-monster-client-next/releases/latest");
33
33
  const release = response.data;
34
34
  const releaseData = {
35
35
  tag_name: release.tag_name,
@@ -37,7 +37,7 @@ const fetchLatest = async ()=>{
37
37
  published_at: release.published_at,
38
38
  body: release.body
39
39
  };
40
- const outputPath = _path.default.join(__dirname, "github-releases-latest-client-slim-oct-2024.data.json");
40
+ const outputPath = _path.default.join(__dirname, "github-releases-latest-client-slim.data.json");
41
41
  _fs.default.writeFileSync(outputPath, JSON.stringify(releaseData, null, 2));
42
42
  console.log(`Releases data written to ${outputPath}`);
43
43
  } catch (error) {
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- const _child_process = require("child_process");
6
- const _path = /*#__PURE__*/ _interop_require_default(require("path"));
5
+ const _nodechild_process = require("node:child_process");
6
+ const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
7
7
  function _interop_require_default(obj) {
8
8
  return obj && obj.__esModule ? obj : {
9
9
  default: obj
@@ -14,8 +14,8 @@ const instanceCount = 10;
14
14
  console.log(`Starting ${instanceCount} fake OctoPrint servers...`);
15
15
  for(let i = 0; i < instanceCount; i++){
16
16
  const port = startPort + i;
17
- const process = (0, _child_process.spawn)("node", [
18
- _path.default.join(__dirname, "./mock-octoprint.server.js"),
17
+ const process = (0, _nodechild_process.spawn)("node", [
18
+ _nodepath.default.join(__dirname, "./mock-octoprint.server.js"),
19
19
  port.toString()
20
20
  ]);
21
21
  process.stdout.on("data", (data)=>{
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/consoles/launch-http-servers.ts"],"names":["startPort","instanceCount","console","log","i","port","process","spawn","path","join","__dirname","toString","stdout","on","data","trim","stderr","error"],"mappings":";;;;+BAAsB;6DACL;;;;;;AAEjB,MAAMA,YAAY;AAClB,MAAMC,gBAAgB;AAEtBC,QAAQC,GAAG,CAAC,CAAC,SAAS,EAAEF,cAAc,0BAA0B,CAAC;AAEjE,IAAK,IAAIG,IAAI,GAAGA,IAAIH,eAAeG,IAAK;IACtC,MAAMC,OAAOL,YAAYI;IACzB,MAAME,UAAUC,IAAAA,oBAAK,EAAC,QAAQ;QAACC,aAAI,CAACC,IAAI,CAACC,WAAW;QAA+BL,KAAKM,QAAQ;KAAG;IAEnGL,QAAQM,MAAM,CAACC,EAAE,CAAC,QAAQ,CAACC;QACzBZ,QAAQC,GAAG,CAAC,CAAC,QAAQ,EAAEC,IAAI,EAAE,QAAQ,EAAEC,KAAK,GAAG,EAAES,KAAKH,QAAQ,GAAGI,IAAI,IAAI;IAC3E;IAEAT,QAAQU,MAAM,CAACH,EAAE,CAAC,QAAQ,CAACC;QACzBZ,QAAQe,KAAK,CAAC,CAAC,QAAQ,EAAEb,IAAI,EAAE,QAAQ,EAAEC,KAAK,SAAS,EAAES,KAAKH,QAAQ,GAAGI,IAAI,IAAI;IACnF;IAEAb,QAAQC,GAAG,CAAC,CAAC,eAAe,EAAEC,IAAI,EAAE,SAAS,EAAEC,MAAM;AACvD;AAEAH,QAAQC,GAAG,CAAC"}
1
+ {"version":3,"sources":["../../src/consoles/launch-http-servers.ts"],"names":["startPort","instanceCount","console","log","i","port","process","spawn","path","join","__dirname","toString","stdout","on","data","trim","stderr","error"],"mappings":";;;;mCAAsB;iEACL;;;;;;AAEjB,MAAMA,YAAY;AAClB,MAAMC,gBAAgB;AAEtBC,QAAQC,GAAG,CAAC,CAAC,SAAS,EAAEF,cAAc,0BAA0B,CAAC;AAEjE,IAAK,IAAIG,IAAI,GAAGA,IAAIH,eAAeG,IAAK;IACtC,MAAMC,OAAOL,YAAYI;IACzB,MAAME,UAAUC,IAAAA,wBAAK,EAAC,QAAQ;QAACC,iBAAI,CAACC,IAAI,CAACC,WAAW;QAA+BL,KAAKM,QAAQ;KAAG;IAEnGL,QAAQM,MAAM,CAACC,EAAE,CAAC,QAAQ,CAACC;QACzBZ,QAAQC,GAAG,CAAC,CAAC,QAAQ,EAAEC,IAAI,EAAE,QAAQ,EAAEC,KAAK,GAAG,EAAES,KAAKH,QAAQ,GAAGI,IAAI,IAAI;IAC3E;IAEAT,QAAQU,MAAM,CAACH,EAAE,CAAC,QAAQ,CAACC;QACzBZ,QAAQe,KAAK,CAAC,CAAC,QAAQ,EAAEb,IAAI,EAAE,QAAQ,EAAEC,KAAK,SAAS,EAAES,KAAKH,QAAQ,GAAGI,IAAI,IAAI;IACnF;IAEAb,QAAQC,GAAG,CAAC,CAAC,eAAe,EAAEC,IAAI,EAAE,SAAS,EAAEC,MAAM;AACvD;AAEAH,QAAQC,GAAG,CAAC"}
@@ -75,7 +75,9 @@ async function generateSelfSignedCert() {
75
75
  };
76
76
  }
77
77
  let isPrinting = false;
78
+ let isFinished = false;
78
79
  let currentPrintFile = "";
80
+ let finishedFileName = "";
79
81
  let printProgress = 0;
80
82
  let isPaused = false;
81
83
  let nozzleTemp = 25;
@@ -133,7 +135,12 @@ const PRINT_DURATION = 20;
133
135
  }
134
136
  });
135
137
  const publishState = ()=>{
136
- if (isPrinting && !isPaused) {
138
+ if (isFinished) {
139
+ isFinished = false;
140
+ finishedFileName = "";
141
+ currentPrintFile = "";
142
+ printProgress = 0;
143
+ } else if (isPrinting && !isPaused) {
137
144
  const elapsedSeconds = (Date.now() - printStartTime) / 1000;
138
145
  printProgress = Math.min(elapsedSeconds / PRINT_DURATION * 100, 100);
139
146
  if (printProgress < 10) {
@@ -144,17 +151,24 @@ const PRINT_DURATION = 20;
144
151
  bedTemp = 60;
145
152
  }
146
153
  if (printProgress >= 100) {
154
+ isFinished = true;
155
+ finishedFileName = currentPrintFile;
147
156
  isPrinting = false;
148
- printProgress = 0;
149
- currentPrintFile = "";
150
- console.log(`[BAMBU MOCK MQTT] Print completed`);
157
+ printProgress = 100;
158
+ console.log(`[BAMBU MOCK MQTT] Print completed: ${currentPrintFile}`);
151
159
  }
152
160
  }
153
- if (!isPrinting && nozzleTemp > 25) {
161
+ if (!isPrinting && !isFinished && nozzleTemp > 25) {
154
162
  nozzleTemp = Math.max(nozzleTemp - 2, 25);
155
163
  bedTemp = Math.max(bedTemp - 1, 25);
156
164
  }
157
- const printingLabel = isPaused ? "paused" : "printing";
165
+ let gcodeState = "IDLE";
166
+ if (isFinished) gcodeState = "FINISHED";
167
+ else if (isPrinting && isPaused) gcodeState = "PAUSE";
168
+ else if (isPrinting) gcodeState = "PRINTING";
169
+ const fileName = isFinished ? finishedFileName : currentPrintFile;
170
+ const hasJob = isPrinting || isFinished;
171
+ const printingLabel = isPaused ? "paused" : isFinished ? "finished" : "printing";
158
172
  const state = {
159
173
  print: {
160
174
  nozzle_temper: Math.round(nozzleTemp),
@@ -162,15 +176,15 @@ const PRINT_DURATION = 20;
162
176
  bed_temper: Math.round(bedTemp),
163
177
  bed_target_temper: isPrinting ? 60 : 0,
164
178
  chamber_temper: 30,
165
- mc_percent: Math.round(printProgress),
166
- mc_remaining_time: isPrinting ? Math.round(PRINT_DURATION - (Date.now() - printStartTime) / 1000) : 0,
167
- mc_print_stage: isPrinting ? printingLabel : "idle",
168
- gcode_state: isPrinting ? "PRINTING" : "IDLE",
169
- gcode_file: isPrinting ? currentPrintFile : "",
179
+ mc_percent: isFinished ? 100 : Math.round(printProgress),
180
+ mc_remaining_time: hasJob ? Math.round(Math.max(0, (PRINT_DURATION - (Date.now() - printStartTime) / 1000) / 60)) : 0,
181
+ mc_print_stage: hasJob ? printingLabel : "idle",
182
+ gcode_state: gcodeState,
183
+ gcode_file: fileName || "",
170
184
  wifi_signal: "-45dBm",
171
- layer_num: isPrinting ? Math.floor(printProgress / 2) : 0,
172
- total_layer_num: isPrinting ? 50 : 0,
173
- subtask_name: isPrinting ? currentPrintFile : "",
185
+ layer_num: hasJob ? Math.floor((isFinished ? 100 : printProgress) / 2) : 0,
186
+ total_layer_num: hasJob ? 50 : 0,
187
+ subtask_name: fileName || "",
174
188
  heatbreak_fan_speed: isPrinting ? "5000" : "0",
175
189
  cooling_fan_speed: isPrinting ? "8000" : "0",
176
190
  big_fan1_speed: isPrinting ? "3000" : "0",
@@ -228,11 +242,16 @@ const PRINT_DURATION = 20;
228
242
  }
229
243
  } else if (command === "stop") {
230
244
  if (isPrinting) {
245
+ const stoppedFile = currentPrintFile;
231
246
  isPrinting = false;
232
247
  isPaused = false;
233
248
  printProgress = 0;
234
- currentPrintFile = "";
235
- console.log(`[BAMBU MOCK MQTT] Stopping print`);
249
+ console.log(`[BAMBU MOCK MQTT] Stopping print: ${stoppedFile}`);
250
+ setTimeout(()=>{
251
+ if (!isPrinting) {
252
+ currentPrintFile = "";
253
+ }
254
+ }, MESSAGE_INTERVAL * 2);
236
255
  }
237
256
  }
238
257
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/consoles/mock-bambu.server.ts"],"names":["DEFAULT_PORT","DEFAULT_MQTT_PORT","DEFAULT_SERIAL","DEFAULT_ACCESS_CODE","MESSAGE_INTERVAL","DEFAULT_USERNAME","port","process","argv","Number","parseInt","mqttPort","serial","accessCode","console","log","ftpDir","path","join","os","tmpdir","sdcardDir","fs","existsSync","mkdirSync","recursive","generateSelfSignedCert","attrs","name","value","options","days","algorithm","keySize","pems","selfsigned","generate","key","private","cert","minVersion","ciphers","isPrinting","currentPrintFile","printProgress","isPaused","nozzleTemp","bedTemp","printStartTime","PRINT_DURATION","tlsCerts","ftpServer","FtpSrv","url","pasv_url","pasv_min","pasv_max","tls","anonymous","greeting","on","username","password","resolve","reject","root","Error","error","listen","then","mqttClient","mqtt","connect","clientId","Date","now","rejectUnauthorized","reportTopic","requestTopic","subscribe","err","publishState","elapsedSeconds","Math","min","max","printingLabel","state","print","nozzle_temper","round","nozzle_target_temper","bed_temper","bed_target_temper","chamber_temper","mc_percent","mc_remaining_time","mc_print_stage","gcode_state","gcode_file","wifi_signal","layer_num","floor","total_layer_num","subtask_name","heatbreak_fan_speed","cooling_fan_speed","big_fan1_speed","big_fan2_speed","spd_lvl","spd_mag","print_error","lifecycle","command","msg","sequence_id","String","publish","JSON","stringify","qos","setInterval","topic","message","payload","parse","toString","filename","param","endsWith","pausedProgress","connected","endAsync","close","exit","catch"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/consoles/mock-bambu.server.ts"],"names":["DEFAULT_PORT","DEFAULT_MQTT_PORT","DEFAULT_SERIAL","DEFAULT_ACCESS_CODE","MESSAGE_INTERVAL","DEFAULT_USERNAME","port","process","argv","Number","parseInt","mqttPort","serial","accessCode","console","log","ftpDir","path","join","os","tmpdir","sdcardDir","fs","existsSync","mkdirSync","recursive","generateSelfSignedCert","attrs","name","value","options","days","algorithm","keySize","pems","selfsigned","generate","key","private","cert","minVersion","ciphers","isPrinting","isFinished","currentPrintFile","finishedFileName","printProgress","isPaused","nozzleTemp","bedTemp","printStartTime","PRINT_DURATION","tlsCerts","ftpServer","FtpSrv","url","pasv_url","pasv_min","pasv_max","tls","anonymous","greeting","on","username","password","resolve","reject","root","Error","error","listen","then","mqttClient","mqtt","connect","clientId","Date","now","rejectUnauthorized","reportTopic","requestTopic","subscribe","err","publishState","elapsedSeconds","Math","min","max","gcodeState","fileName","hasJob","printingLabel","state","print","nozzle_temper","round","nozzle_target_temper","bed_temper","bed_target_temper","chamber_temper","mc_percent","mc_remaining_time","mc_print_stage","gcode_state","gcode_file","wifi_signal","layer_num","floor","total_layer_num","subtask_name","heatbreak_fan_speed","cooling_fan_speed","big_fan1_speed","big_fan2_speed","spd_lvl","spd_mag","print_error","lifecycle","command","msg","sequence_id","String","publish","JSON","stringify","qos","setInterval","topic","message","payload","parse","toString","filename","param","endsWith","pausedProgress","stoppedFile","setTimeout","connected","endAsync","close","exit","catch"],"mappings":"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"}