@fdm-monster/server 2.0.0-rc1 → 2.0.1
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.
- package/.env.template +8 -3
- package/.yarn/install-state.gz +0 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +5 -4
- package/RELEASE_NOTES.MD +53 -0
- package/SECURITY.md +1 -1
- package/dist/consoles/download-github-releases.js +3 -3
- package/dist/consoles/launch-http-servers.js +4 -4
- package/dist/consoles/launch-http-servers.js.map +1 -1
- package/dist/consoles/mock-bambu.server.js +35 -16
- package/dist/consoles/mock-bambu.server.js.map +1 -1
- package/dist/consoles/mock-camera/default-image.js +13 -0
- package/dist/consoles/mock-camera/default-image.js.map +1 -0
- package/dist/consoles/mock-camera/mock-camera.server.js +160 -0
- package/dist/consoles/mock-camera/mock-camera.server.js.map +1 -0
- package/dist/consoles/mock-octoprint.server.js +281 -73
- package/dist/consoles/mock-octoprint.server.js.map +1 -1
- package/dist/consoles/mock-prusalink.server.js +11 -11
- package/dist/consoles/mock-prusalink.server.js.map +1 -1
- package/dist/consoles/typeorm-create.js +135 -0
- package/dist/consoles/typeorm-create.js.map +1 -0
- package/dist/consoles/typeorm-generate.js +8 -8
- package/dist/consoles/typeorm-generate.js.map +1 -1
- package/dist/constants/authorization.constants.js +13 -26
- package/dist/constants/authorization.constants.js.map +1 -1
- package/dist/constants/server-settings.constants.js +7 -20
- package/dist/constants/server-settings.constants.js.map +1 -1
- package/dist/container.js +18 -10
- package/dist/container.js.map +1 -1
- package/dist/container.tokens.js +9 -5
- package/dist/container.tokens.js.map +1 -1
- package/dist/controllers/batch-call.controller.js +0 -15
- package/dist/controllers/batch-call.controller.js.map +1 -1
- package/dist/controllers/file-storage.controller.js +319 -0
- package/dist/controllers/file-storage.controller.js.map +1 -0
- package/dist/controllers/first-time-setup.controller.js +2 -1
- package/dist/controllers/first-time-setup.controller.js.map +1 -1
- package/dist/controllers/floor.controller.js +12 -12
- package/dist/controllers/floor.controller.js.map +1 -1
- package/dist/controllers/print-job.controller.js +666 -0
- package/dist/controllers/print-job.controller.js.map +1 -0
- package/dist/controllers/print-queue.controller.js +375 -0
- package/dist/controllers/print-queue.controller.js.map +1 -0
- package/dist/controllers/printer-files.controller.js +86 -59
- package/dist/controllers/printer-files.controller.js.map +1 -1
- package/dist/controllers/printer-settings.controller.js +0 -21
- package/dist/controllers/printer-settings.controller.js.map +1 -1
- package/dist/controllers/{printer-group.controller.js → printer-tag.controller.js} +51 -34
- package/dist/controllers/printer-tag.controller.js.map +1 -0
- package/dist/controllers/printer.controller.js +15 -0
- package/dist/controllers/printer.controller.js.map +1 -1
- package/dist/controllers/server-private.controller.js +2 -1
- package/dist/controllers/server-private.controller.js.map +1 -1
- package/dist/controllers/server-public.controller.js +6 -2
- package/dist/controllers/server-public.controller.js.map +1 -1
- package/dist/controllers/settings.controller.js +44 -44
- package/dist/controllers/settings.controller.js.map +1 -1
- package/dist/controllers/slicer-compat.controller.js +220 -0
- package/dist/controllers/slicer-compat.controller.js.map +1 -0
- package/dist/data-source.js +20 -8
- package/dist/data-source.js.map +1 -1
- package/dist/entities/camera-stream.entity.js +2 -1
- package/dist/entities/camera-stream.entity.js.map +1 -1
- package/dist/entities/floor.entity.js +3 -5
- package/dist/entities/floor.entity.js.map +1 -1
- package/dist/entities/index.js +15 -7
- package/dist/entities/index.js.map +1 -1
- package/dist/entities/print-job.entity.js +195 -0
- package/dist/entities/print-job.entity.js.map +1 -0
- package/dist/entities/{printer-group.entity.js → printer-tag.entity.js} +17 -17
- package/dist/entities/printer-tag.entity.js.map +1 -0
- package/dist/entities/printer.entity.js +4 -10
- package/dist/entities/printer.entity.js.map +1 -1
- package/dist/entities/settings.entity.js +3 -12
- package/dist/entities/settings.entity.js.map +1 -1
- package/dist/entities/{group.entity.js → tag.entity.js} +15 -8
- package/dist/entities/tag.entity.js.map +1 -0
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/middleware/exception.filter.js +114 -90
- package/dist/middleware/exception.filter.js.map +1 -1
- package/dist/middleware/global.middleware.js +6 -6
- package/dist/middleware/global.middleware.js.map +1 -1
- package/dist/middleware/slicer-api-key.middleware.js +29 -0
- package/dist/middleware/slicer-api-key.middleware.js.map +1 -0
- package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js +186 -0
- package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js.map +1 -0
- package/dist/migrations/1767279607392-DropCustomGcode.js +31 -0
- package/dist/migrations/1767279607392-DropCustomGcode.js.map +1 -0
- package/dist/migrations/1767291804417-DropPrintCompletions.js +37 -0
- package/dist/migrations/1767291804417-DropPrintCompletions.js.map +1 -0
- package/dist/migrations/1767352862576-DropSettingsFileClean.js +88 -0
- package/dist/migrations/1767352862576-DropSettingsFileClean.js.map +1 -0
- package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js +107 -0
- package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js.map +1 -0
- package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js +62 -0
- package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js.map +1 -0
- package/dist/migrations/1767432108916-RenameGroupToTag.js +86 -0
- package/dist/migrations/1767432108916-RenameGroupToTag.js.map +1 -0
- package/dist/migrations/1767451444137-AddPrintJob.js +207 -0
- package/dist/migrations/1767451444137-AddPrintJob.js.map +1 -0
- package/dist/server.constants.js +9 -9
- package/dist/server.constants.js.map +1 -1
- package/dist/server.host.js +24 -32
- package/dist/server.host.js.map +1 -1
- package/dist/services/bambu/bambu-ftp.adapter.js +1 -1
- package/dist/services/bambu/bambu-ftp.adapter.js.map +1 -1
- package/dist/services/bambu/bambu-mqtt.adapter.js +73 -76
- package/dist/services/bambu/bambu-mqtt.adapter.js.map +1 -1
- package/dist/services/core/batch-call.service.js +0 -25
- package/dist/services/core/batch-call.service.js.map +1 -1
- package/dist/services/core/multer.service.js +5 -9
- package/dist/services/core/multer.service.js.map +1 -1
- package/dist/services/core/yaml.service.js +231 -156
- package/dist/services/core/yaml.service.js.map +1 -1
- package/dist/services/file-analysis.service.js +146 -0
- package/dist/services/file-analysis.service.js.map +1 -0
- package/dist/services/file-storage.service.js +387 -0
- package/dist/services/file-storage.service.js.map +1 -0
- package/dist/services/interfaces/floor.dto.js +3 -3
- package/dist/services/interfaces/floor.dto.js.map +1 -1
- package/dist/services/interfaces/{printer-group.dto.js → printer-tag.dto.js} +9 -8
- package/dist/services/interfaces/printer-tag.dto.js.map +1 -0
- package/dist/services/interfaces/{print-completion.interface.js → printer-tag.service.interface.js} +1 -1
- package/dist/services/interfaces/{printer-group.service.interface.js.map → printer-tag.service.interface.js.map} +1 -1
- package/dist/services/interfaces/settings.dto.js +0 -1
- package/dist/services/interfaces/settings.dto.js.map +1 -1
- package/dist/services/interfaces/{group.dto.js → tag.dto.js} +1 -1
- package/dist/services/interfaces/tag.dto.js.map +1 -0
- package/dist/services/octoprint/dto/files/gcode-analysis.dto.js.map +1 -0
- package/dist/services/octoprint/octoprint-api.routes.js +0 -7
- package/dist/services/octoprint/octoprint-api.routes.js.map +1 -1
- package/dist/services/octoprint/octoprint.client.js +0 -4
- package/dist/services/octoprint/octoprint.client.js.map +1 -1
- package/dist/services/orm/floor.service.js +9 -16
- package/dist/services/orm/floor.service.js.map +1 -1
- package/dist/services/orm/print-job.service.js +539 -0
- package/dist/services/orm/print-job.service.js.map +1 -0
- package/dist/services/orm/printer-tag.service.js +120 -0
- package/dist/services/orm/printer-tag.service.js.map +1 -0
- package/dist/services/orm/settings.service.js +5 -6
- package/dist/services/orm/settings.service.js.map +1 -1
- package/dist/services/print-file-downloader.service.js +169 -0
- package/dist/services/print-file-downloader.service.js.map +1 -0
- package/dist/services/print-queue.service.js +268 -0
- package/dist/services/print-queue.service.js.map +1 -0
- package/dist/services/prusa-link/prusa-link-http-polling.adapter.js +1 -3
- package/dist/services/prusa-link/prusa-link-http-polling.adapter.js.map +1 -1
- package/dist/services/validators/floor-service.validation.js +10 -10
- package/dist/services/validators/floor-service.validation.js.map +1 -1
- package/dist/services/validators/print-job.validation.js +31 -0
- package/dist/services/validators/print-job.validation.js.map +1 -0
- package/dist/services/validators/settings-service.validation.js +21 -24
- package/dist/services/validators/settings-service.validation.js.map +1 -1
- package/dist/services/validators/yaml-service.validation.js +9 -13
- package/dist/services/validators/yaml-service.validation.js.map +1 -1
- package/dist/shared/load-controllers.js +2 -1
- package/dist/shared/load-controllers.js.map +1 -1
- package/dist/shared/runtime-settings.migration.js +9 -9
- package/dist/shared/runtime-settings.migration.js.map +1 -1
- package/dist/state/floor.store.js +2 -9
- package/dist/state/floor.store.js.map +1 -1
- package/dist/state/printer-events.cache.js +179 -19
- package/dist/state/printer-events.cache.js.map +1 -1
- package/dist/state/printer-thumbnail.cache.js +98 -183
- package/dist/state/printer-thumbnail.cache.js.map +1 -1
- package/dist/state/settings.store.js +39 -37
- package/dist/state/settings.store.js.map +1 -1
- package/dist/state/socket-io.gateway.js +1 -1
- package/dist/state/socket-io.gateway.js.map +1 -1
- package/dist/tasks/boot.task.js +7 -5
- package/dist/tasks/boot.task.js.map +1 -1
- package/dist/tasks/print-job-analysis.task.js +116 -0
- package/dist/tasks/print-job-analysis.task.js.map +1 -0
- package/dist/tasks/printer-files-load.task.js +29 -0
- package/dist/tasks/printer-files-load.task.js.map +1 -0
- package/dist/tasks/socketio.task.js +1 -1
- package/dist/tasks/socketio.task.js.map +1 -1
- package/dist/tasks.js +3 -2
- package/dist/tasks.js.map +1 -1
- package/dist/utils/parsers/3mf.parser.js +337 -0
- package/dist/utils/parsers/3mf.parser.js.map +1 -0
- package/dist/utils/parsers/bgcode.parser.js +223 -0
- package/dist/utils/parsers/bgcode.parser.js.map +1 -0
- package/dist/utils/parsers/gcode.parser.js +254 -0
- package/dist/utils/parsers/gcode.parser.js.map +1 -0
- package/dist/utils/swagger/decorators.js +39 -0
- package/dist/utils/swagger/decorators.js.map +1 -0
- package/dist/utils/swagger/generator.js +196 -0
- package/dist/utils/swagger/generator.js.map +1 -0
- package/dist/utils/swagger/swagger.js +93 -0
- package/dist/utils/swagger/swagger.js.map +1 -0
- package/package.json +21 -17
- package/dist/controllers/custom-gcode.controller.js +0 -147
- package/dist/controllers/custom-gcode.controller.js.map +0 -1
- package/dist/controllers/print-completion.controller.js +0 -118
- package/dist/controllers/print-completion.controller.js.map +0 -1
- package/dist/controllers/printer-group.controller.js.map +0 -1
- package/dist/entities/custom-gcode.entity.js +0 -49
- package/dist/entities/custom-gcode.entity.js.map +0 -1
- package/dist/entities/group.entity.js.map +0 -1
- package/dist/entities/print-completion.entity.js +0 -90
- package/dist/entities/print-completion.entity.js.map +0 -1
- package/dist/entities/printer-group.entity.js.map +0 -1
- package/dist/services/interfaces/custom-gcode.dto.js +0 -18
- package/dist/services/interfaces/custom-gcode.dto.js.map +0 -1
- package/dist/services/interfaces/custom-gcode.service.interface.js +0 -6
- package/dist/services/interfaces/custom-gcode.service.interface.js.map +0 -1
- package/dist/services/interfaces/gcode-analysis.dto.js.map +0 -1
- package/dist/services/interfaces/group.dto.js.map +0 -1
- package/dist/services/interfaces/print-completion-context.dto.js +0 -6
- package/dist/services/interfaces/print-completion-context.dto.js.map +0 -1
- package/dist/services/interfaces/print-completion.dto.js +0 -38
- package/dist/services/interfaces/print-completion.dto.js.map +0 -1
- package/dist/services/interfaces/print-completion.interface.js.map +0 -1
- package/dist/services/interfaces/printer-group.dto.js.map +0 -1
- package/dist/services/interfaces/printer-group.service.interface.js +0 -6
- package/dist/services/orm/custom-gcode.service.js +0 -42
- package/dist/services/orm/custom-gcode.service.js.map +0 -1
- package/dist/services/orm/print-completion.service.js +0 -87
- package/dist/services/orm/print-completion.service.js.map +0 -1
- package/dist/services/orm/print-completion.shared.js +0 -59
- package/dist/services/orm/print-completion.shared.js.map +0 -1
- package/dist/services/orm/printer-group.service.js +0 -109
- package/dist/services/orm/printer-group.service.js.map +0 -1
- package/dist/tasks/print-completion.socketio.task.js +0 -91
- package/dist/tasks/print-completion.socketio.task.js.map +0 -1
- package/dist/tasks/printer-file-clean.task.js +0 -74
- package/dist/tasks/printer-file-clean.task.js.map +0 -1
- /package/dist/services/{interfaces → octoprint/dto/files}/gcode-analysis.dto.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/validators/floor-service.validation.ts"],"names":["createOrUpdateFloorSchema","
|
|
1
|
+
{"version":3,"sources":["../../../src/services/validators/floor-service.validation.ts"],"names":["createOrUpdateFloorSchema","floorNameValidator","floorOrderValidator","printerInFloorSchema","updateFloorNameSchema","updateFloorOrderSchema","xValidator","yValidator","z","number","int","min","max","string","minFloorNameLength","object","printerId","idRuleV2","floorId","x","y","name","order","printers","array","optional"],"mappings":";;;;;;;;;;;QAuBaA;eAAAA;;QAjBAC;eAAAA;;QADAC;eAAAA;;QAGAC;eAAAA;;QAOAC;eAAAA;;QAIAC;eAAAA;;QAhBAC;eAAAA;;QACAC;eAAAA;;;qBAJK;kCACiB;mCACV;AAClB,MAAMD,aAAaE,MAAC,CAACC,MAAM,GAAGC,GAAG,GAAGC,GAAG,CAAC,GAAGC,GAAG,CAAC;AAC/C,MAAML,aAAaC,MAAC,CAACC,MAAM,GAAGC,GAAG,GAAGC,GAAG,CAAC,GAAGC,GAAG,CAAC;AAC/C,MAAMV,sBAAsBM,MAAC,CAACC,MAAM,GAAGC,GAAG;AAC1C,MAAMT,qBAAqBO,MAAC,CAACK,MAAM,GAAGF,GAAG,CAACG,oCAAkB;AAE5D,MAAMX,uBAAuBK,MAAC,CAACO,MAAM,CAAC;IAC3CC,WAAWC,2BAAQ;IACnBC,SAASD,2BAAQ;IACjBE,GAAGb;IACHc,GAAGb;AACL;AAEO,MAAMH,wBAAwBI,MAAC,CAACO,MAAM,CAAC;IAC5CM,MAAMpB;AACR;AAEO,MAAMI,yBAAyBG,MAAC,CAACO,MAAM,CAAC;IAC7CO,OAAOpB;AACT;AAEO,MAAMF,4BAA4BQ,MAAC,CAACO,MAAM,CAAC;IAChDM,MAAMpB;IACNqB,OAAOpB;IACPqB,UAAUf,MAAC,CACRgB,KAAK,CACJhB,MAAC,CAACO,MAAM,CAAC;QACPC,WAAWC,2BAAQ;QACnBC,SAASD,2BAAQ,CAACQ,QAAQ;QAC1BN,GAAGb;QACHc,GAAGb;IACL,IAEDkB,QAAQ;AACb"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get searchJobsPagedSchema () {
|
|
13
|
+
return searchJobsPagedSchema;
|
|
14
|
+
},
|
|
15
|
+
get searchJobsSchema () {
|
|
16
|
+
return searchJobsSchema;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const _zod = require("zod");
|
|
20
|
+
const searchJobsSchema = _zod.z.object({
|
|
21
|
+
searchPrinter: _zod.z.string().trim().min(1).optional(),
|
|
22
|
+
searchFile: _zod.z.string().trim().min(1).optional(),
|
|
23
|
+
startDate: _zod.z.string().date().min(1).optional(),
|
|
24
|
+
endDate: _zod.z.string().date().min(1).optional()
|
|
25
|
+
});
|
|
26
|
+
const searchJobsPagedSchema = searchJobsSchema.extend({
|
|
27
|
+
page: _zod.z.coerce.number().int().min(1),
|
|
28
|
+
pageSize: _zod.z.coerce.number().int().min(1).max(500)
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=print-job.validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/validators/print-job.validation.ts"],"names":["searchJobsPagedSchema","searchJobsSchema","z","object","searchPrinter","string","trim","min","optional","searchFile","startDate","date","endDate","extend","page","coerce","number","int","pageSize","max"],"mappings":";;;;;;;;;;;QASaA;eAAAA;;QAPAC;eAAAA;;;qBAFK;AAEX,MAAMA,mBAAmBC,MAAC,CAACC,MAAM,CAAC;IACvCC,eAAeF,MAAC,CAACG,MAAM,GAAGC,IAAI,GAAGC,GAAG,CAAC,GAAGC,QAAQ;IAChDC,YAAYP,MAAC,CAACG,MAAM,GAAGC,IAAI,GAAGC,GAAG,CAAC,GAAGC,QAAQ;IAC7CE,WAAWR,MAAC,CAACG,MAAM,GAAGM,IAAI,GAAGJ,GAAG,CAAC,GAAGC,QAAQ;IAC5CI,SAASV,MAAC,CAACG,MAAM,GAAGM,IAAI,GAAGJ,GAAG,CAAC,GAAGC,QAAQ;AAC5C;AAEO,MAAMR,wBAAwBC,iBAAiBY,MAAM,CAAC;IAC3DC,MAAMZ,MAAC,CAACa,MAAM,CAACC,MAAM,GAAGC,GAAG,GAAGV,GAAG,CAAC;IAClCW,UAAUhB,MAAC,CAACa,MAAM,CAACC,MAAM,GAAGC,GAAG,GAAGV,GAAG,CAAC,GAAGY,GAAG,CAAC;AAC/C"}
|
|
@@ -12,14 +12,11 @@ _export(exports, {
|
|
|
12
12
|
get bambuSupportSchema () {
|
|
13
13
|
return bambuSupportSchema;
|
|
14
14
|
},
|
|
15
|
-
get
|
|
16
|
-
return
|
|
15
|
+
get credentialCoreSettingUpdateSchema () {
|
|
16
|
+
return credentialCoreSettingUpdateSchema;
|
|
17
17
|
},
|
|
18
|
-
get
|
|
19
|
-
return
|
|
20
|
-
},
|
|
21
|
-
get fileCleanSettingsUpdateSchema () {
|
|
22
|
-
return fileCleanSettingsUpdateSchema;
|
|
18
|
+
get credentialSettingSchema () {
|
|
19
|
+
return credentialSettingSchema;
|
|
23
20
|
},
|
|
24
21
|
get frontendSettingsUpdateSchema () {
|
|
25
22
|
return frontendSettingsUpdateSchema;
|
|
@@ -39,8 +36,8 @@ _export(exports, {
|
|
|
39
36
|
get serverSettingsUpdateSchema () {
|
|
40
37
|
return serverSettingsUpdateSchema;
|
|
41
38
|
},
|
|
42
|
-
get
|
|
43
|
-
return
|
|
39
|
+
get slicerApiKeyUpdateSchema () {
|
|
40
|
+
return slicerApiKeyUpdateSchema;
|
|
44
41
|
},
|
|
45
42
|
get timeoutSettingsUpdateSchema () {
|
|
46
43
|
return timeoutSettingsUpdateSchema;
|
|
@@ -57,8 +54,6 @@ const serverSettingsUpdateSchema = _zod.z.object({
|
|
|
57
54
|
experimentalMoonrakerSupport: _zod.z.boolean(),
|
|
58
55
|
experimentalBambuSupport: _zod.z.boolean(),
|
|
59
56
|
experimentalPrusaLinkSupport: _zod.z.boolean(),
|
|
60
|
-
experimentalThumbnailSupport: _zod.z.boolean(),
|
|
61
|
-
experimentalClientSupport: _zod.z.boolean(),
|
|
62
57
|
sentryDiagnosticsEnabled: _zod.z.boolean()
|
|
63
58
|
});
|
|
64
59
|
const timeoutSettingsUpdateSchema = _zod.z.object({
|
|
@@ -69,26 +64,34 @@ const frontendSettingsUpdateSchema = _zod.z.object({
|
|
|
69
64
|
gridCols: _zod.z.number().int().min(1),
|
|
70
65
|
gridRows: _zod.z.number().int().min(1),
|
|
71
66
|
largeTiles: _zod.z.boolean(),
|
|
72
|
-
tilePreferCancelOverQuickStop: _zod.z.boolean()
|
|
67
|
+
tilePreferCancelOverQuickStop: _zod.z.boolean(),
|
|
68
|
+
gridNameSortDirection: _zod.z.enum([
|
|
69
|
+
'horizontal',
|
|
70
|
+
'vertical'
|
|
71
|
+
]).optional()
|
|
73
72
|
});
|
|
74
73
|
const jwtSecretCredentialSettingUpdateSchema = _zod.z.object({
|
|
75
74
|
jwtSecret: _zod.z.string().min(10)
|
|
76
75
|
});
|
|
77
|
-
const
|
|
76
|
+
const credentialSettingSchema = _zod.z.object({
|
|
77
|
+
jwtExpiresIn: _zod.z.number().int().min((0, _envutils.isProductionEnvironment)() ? 120 : 0).max((0, _envutils.isProductionEnvironment)() ? 7200 : Infinity),
|
|
78
|
+
refreshTokenAttempts: _zod.z.number().int().min(-1),
|
|
79
|
+
refreshTokenExpiry: _zod.z.number().int().min((0, _envutils.isProductionEnvironment)() ? 240 : 0),
|
|
80
|
+
slicerApiKey: _zod.z.string().nullable()
|
|
81
|
+
});
|
|
82
|
+
const credentialCoreSettingUpdateSchema = _zod.z.object({
|
|
78
83
|
jwtExpiresIn: _zod.z.number().int().min((0, _envutils.isProductionEnvironment)() ? 120 : 0).max((0, _envutils.isProductionEnvironment)() ? 7200 : Infinity),
|
|
79
84
|
refreshTokenAttempts: _zod.z.number().int().min(-1),
|
|
80
85
|
refreshTokenExpiry: _zod.z.number().int().min((0, _envutils.isProductionEnvironment)() ? 240 : 0)
|
|
81
86
|
});
|
|
87
|
+
const slicerApiKeyUpdateSchema = _zod.z.object({
|
|
88
|
+
slicerApiKey: _zod.z.string().nullable()
|
|
89
|
+
});
|
|
82
90
|
const wizardUpdateSchema = _zod.z.object({
|
|
83
91
|
wizardCompleted: _zod.z.boolean(),
|
|
84
92
|
wizardCompletedAt: _zod.z.date().nullable(),
|
|
85
93
|
wizardVersion: _zod.z.number().int().min(0)
|
|
86
94
|
});
|
|
87
|
-
const fileCleanSettingsUpdateSchema = _zod.z.object({
|
|
88
|
-
autoRemoveOldFilesBeforeUpload: _zod.z.boolean(),
|
|
89
|
-
autoRemoveOldFilesAtBoot: _zod.z.boolean(),
|
|
90
|
-
autoRemoveOldFilesCriteriumDays: _zod.z.number().int().min(0)
|
|
91
|
-
});
|
|
92
95
|
const sentryDiagnosticsEnabledSchema = _zod.z.object({
|
|
93
96
|
enabled: _zod.z.boolean()
|
|
94
97
|
});
|
|
@@ -101,11 +104,5 @@ const prusaLinkSupportSchema = _zod.z.object({
|
|
|
101
104
|
const bambuSupportSchema = _zod.z.object({
|
|
102
105
|
enabled: _zod.z.boolean()
|
|
103
106
|
});
|
|
104
|
-
const thumbnailSupportSchema = _zod.z.object({
|
|
105
|
-
enabled: _zod.z.boolean()
|
|
106
|
-
});
|
|
107
|
-
const clientNextSchema = _zod.z.object({
|
|
108
|
-
enabled: _zod.z.boolean()
|
|
109
|
-
});
|
|
110
107
|
|
|
111
108
|
//# sourceMappingURL=settings-service.validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/validators/settings-service.validation.ts"],"names":["bambuSupportSchema","
|
|
1
|
+
{"version":3,"sources":["../../../src/services/validators/settings-service.validation.ts"],"names":["bambuSupportSchema","credentialCoreSettingUpdateSchema","credentialSettingSchema","frontendSettingsUpdateSchema","jwtSecretCredentialSettingUpdateSchema","moonrakerSupportSchema","prusaLinkSupportSchema","sentryDiagnosticsEnabledSchema","serverSettingsUpdateSchema","slicerApiKeyUpdateSchema","timeoutSettingsUpdateSchema","wizardUpdateSchema","z","object","registration","boolean","loginRequired","experimentalMoonrakerSupport","experimentalBambuSupport","experimentalPrusaLinkSupport","sentryDiagnosticsEnabled","apiTimeout","number","int","min","apiUploadTimeout","gridCols","gridRows","largeTiles","tilePreferCancelOverQuickStop","gridNameSortDirection","enum","optional","jwtSecret","string","jwtExpiresIn","isProductionEnvironment","max","Infinity","refreshTokenAttempts","refreshTokenExpiry","slicerApiKey","nullable","wizardCompleted","wizardCompletedAt","date","wizardVersion","enabled"],"mappings":"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"}
|
|
@@ -32,7 +32,8 @@ const exportPrintersFloorsYamlSchema = _zod.z.object({
|
|
|
32
32
|
exportPrinters: _zod.z.boolean(),
|
|
33
33
|
exportFloorGrid: _zod.z.boolean(),
|
|
34
34
|
exportFloors: _zod.z.boolean(),
|
|
35
|
-
|
|
35
|
+
exportTags: _zod.z.boolean(),
|
|
36
|
+
exportGroups: _zod.z.boolean().optional(),
|
|
36
37
|
exportSettings: _zod.z.boolean().default(false),
|
|
37
38
|
exportUsers: _zod.z.boolean().default(false),
|
|
38
39
|
printerComparisonStrategiesByPriority: _zod.z.array(_zod.z.string().refine((val)=>[
|
|
@@ -71,6 +72,7 @@ const importPrintersFloorsYamlSchema = _zod.z.object({
|
|
|
71
72
|
exportPrinters: _zod.z.boolean(),
|
|
72
73
|
exportFloorGrid: _zod.z.boolean(),
|
|
73
74
|
exportFloors: _zod.z.boolean(),
|
|
75
|
+
exportTags: _zod.z.boolean().optional(),
|
|
74
76
|
exportGroups: _zod.z.boolean().optional(),
|
|
75
77
|
exportSettings: _zod.z.boolean().optional().default(false),
|
|
76
78
|
exportUsers: _zod.z.boolean().optional().default(false),
|
|
@@ -90,6 +92,8 @@ const importPrintersFloorsYamlSchema = _zod.z.object({
|
|
|
90
92
|
printerURL: _printerservicevalidation.printerUrlValidator,
|
|
91
93
|
printerType: _printerservicevalidation.printerTypeValidator,
|
|
92
94
|
apiKey: _printerservicevalidation.printerApiKeyValidator,
|
|
95
|
+
username: _printerservicevalidation.printerUsernameValidator.optional(),
|
|
96
|
+
password: _printerservicevalidation.printerPasswordValidator.optional(),
|
|
93
97
|
enabled: _printerservicevalidation.printerEnabledValidator,
|
|
94
98
|
name: _printerservicevalidation.printerNameValidator,
|
|
95
99
|
printerName: _zod.z.string().optional(),
|
|
@@ -99,13 +103,15 @@ const importPrintersFloorsYamlSchema = _zod.z.object({
|
|
|
99
103
|
})).min(0).default([]),
|
|
100
104
|
floors: _zod.z.array(_zod.z.object({
|
|
101
105
|
id: numberOrStringIdValidator,
|
|
102
|
-
|
|
106
|
+
order: _floorservicevalidation.floorOrderValidator,
|
|
107
|
+
floor: _floorservicevalidation.floorOrderValidator.optional(),
|
|
103
108
|
name: _floorservicevalidation.floorNameValidator,
|
|
104
109
|
printers: printerPositionsSchema
|
|
105
110
|
})).min(0).default([]),
|
|
106
|
-
|
|
111
|
+
tags: _zod.z.array(_zod.z.object({
|
|
107
112
|
id: numberOrStringIdValidator,
|
|
108
113
|
name: _zod.z.string(),
|
|
114
|
+
color: _zod.z.string().optional(),
|
|
109
115
|
printers: _zod.z.array(_zod.z.object({
|
|
110
116
|
printerId: numberOrStringIdValidator
|
|
111
117
|
}))
|
|
@@ -121,16 +127,6 @@ const importPrintersFloorsYamlSchema = _zod.z.object({
|
|
|
121
127
|
passwordHash: _zod.z.string(),
|
|
122
128
|
createdAt: _zod.z.date().optional(),
|
|
123
129
|
roles: _zod.z.array(_zod.z.any()).optional()
|
|
124
|
-
})).optional().default([]),
|
|
125
|
-
roles: _zod.z.array(_zod.z.object({
|
|
126
|
-
id: numberOrStringIdValidator,
|
|
127
|
-
name: _zod.z.string()
|
|
128
|
-
})).optional().default([]),
|
|
129
|
-
user_roles: _zod.z.array(_zod.z.object({
|
|
130
|
-
id: numberOrStringIdValidator,
|
|
131
|
-
userId: numberOrStringIdValidator,
|
|
132
|
-
roleId: numberOrStringIdValidator,
|
|
133
|
-
createdAt: _zod.z.date().optional()
|
|
134
130
|
})).optional().default([])
|
|
135
131
|
});
|
|
136
132
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/validators/yaml-service.validation.ts"],"names":["exportPrintersFloorsYamlSchema","importPrinterPositionsSchema","importPrintersFloorsYamlSchema","numberOrStringIdValidator","printerPositionsSchema","z","object","exportPrinters","boolean","exportFloorGrid","exportFloors","exportGroups","exportSettings","default","exportUsers","printerComparisonStrategiesByPriority","array","string","refine","val","includes","min","floorComparisonStrategiesByPriority","notes","
|
|
1
|
+
{"version":3,"sources":["../../../src/services/validators/yaml-service.validation.ts"],"names":["exportPrintersFloorsYamlSchema","importPrinterPositionsSchema","importPrintersFloorsYamlSchema","numberOrStringIdValidator","printerPositionsSchema","z","object","exportPrinters","boolean","exportFloorGrid","exportFloors","exportTags","exportGroups","optional","exportSettings","default","exportUsers","printerComparisonStrategiesByPriority","array","string","refine","val","includes","min","floorComparisonStrategiesByPriority","notes","union","number","printerId","floorId","x","xValidator","y","yValidator","printers","version","exportedAt","date","databaseType","enum","config","id","printerURL","printerUrlValidator","printerType","printerTypeValidator","apiKey","printerApiKeyValidator","username","printerUsernameValidator","password","printerPasswordValidator","enabled","printerEnabledValidator","name","printerNameValidator","printerName","settingsAppearance","floors","order","floorOrderValidator","floor","floorNameValidator","tags","color","settings","any","users","isDemoUser","isRootUser","isVerified","needsPasswordChange","passwordHash","createdAt","roles"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/load-controllers.ts"],"names":["loadControllersFunc","loadControllers","cwd","join","__dirname","ignore"],"mappings":";;;;+BAGaA;;;eAAAA;;;+BAHmB;sBACX;AAEd,MAAMA,sBAAsB,IACjCC,IAAAA,8BAAe,EAAC,gCAAgC;QAC9CC,KAAKC,IAAAA,UAAI,EAACC,WAAW;QACrBC,QAAQ;YAAC;
|
|
1
|
+
{"version":3,"sources":["../../src/shared/load-controllers.ts"],"names":["loadControllersFunc","loadControllers","cwd","join","__dirname","ignore"],"mappings":";;;;+BAGaA;;;eAAAA;;;+BAHmB;sBACX;AAEd,MAAMA,sBAAsB,IACjCC,IAAAA,8BAAe,EAAC,gCAAgC;QAC9CC,KAAKC,IAAAA,UAAI,EAACC,WAAW;QACrBC,QAAQ;YAAC;YAAY;SAAY;IACnC"}
|
|
@@ -27,12 +27,14 @@ function migrateSettingsRuntime(knownSettings) {
|
|
|
27
27
|
...(0, _serversettingsconstants.getDefaultCredentialSettings)(),
|
|
28
28
|
jwtSecret: (0, _uuid.v4)()
|
|
29
29
|
};
|
|
30
|
-
entity[_serversettingsconstants.
|
|
31
|
-
|
|
32
|
-
entity[_serversettingsconstants.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
if (entity[_serversettingsconstants.frontendSettingKey]) {
|
|
31
|
+
const defaultFrontendSettings = (0, _serversettingsconstants.getDefaultFrontendSettings)();
|
|
32
|
+
entity[_serversettingsconstants.frontendSettingKey] = {
|
|
33
|
+
gridCols: entity[_serversettingsconstants.frontendSettingKey].gridCols ?? defaultFrontendSettings.gridCols,
|
|
34
|
+
gridRows: entity[_serversettingsconstants.frontendSettingKey].gridRows ?? defaultFrontendSettings.gridRows,
|
|
35
|
+
largeTiles: entity[_serversettingsconstants.frontendSettingKey].largeTiles ?? defaultFrontendSettings.largeTiles,
|
|
36
|
+
tilePreferCancelOverQuickStop: entity[_serversettingsconstants.frontendSettingKey].tilePreferCancelOverQuickStop ?? defaultFrontendSettings.tilePreferCancelOverQuickStop,
|
|
37
|
+
gridNameSortDirection: entity[_serversettingsconstants.frontendSettingKey].gridNameSortDirection ?? defaultFrontendSettings.gridNameSortDirection
|
|
36
38
|
};
|
|
37
39
|
}
|
|
38
40
|
if (entity[_serversettingsconstants.serverSettingsKey]) {
|
|
@@ -40,12 +42,10 @@ function migrateSettingsRuntime(knownSettings) {
|
|
|
40
42
|
entity[_serversettingsconstants.serverSettingsKey] = {
|
|
41
43
|
loginRequired: entity[_serversettingsconstants.serverSettingsKey].loginRequired ?? defaultServerSettings.loginRequired,
|
|
42
44
|
registration: entity[_serversettingsconstants.serverSettingsKey].registration ?? defaultServerSettings.registration,
|
|
43
|
-
experimentalClientSupport: entity[_serversettingsconstants.serverSettingsKey].experimentalClientSupport ?? defaultServerSettings.experimentalClientSupport,
|
|
44
45
|
experimentalMoonrakerSupport: entity[_serversettingsconstants.serverSettingsKey].experimentalMoonrakerSupport ?? defaultServerSettings.experimentalMoonrakerSupport,
|
|
45
46
|
experimentalPrusaLinkSupport: entity[_serversettingsconstants.serverSettingsKey].experimentalPrusaLinkSupport ?? defaultServerSettings.experimentalPrusaLinkSupport,
|
|
46
47
|
experimentalBambuSupport: entity[_serversettingsconstants.serverSettingsKey].experimentalBambuSupport ?? defaultServerSettings.experimentalBambuSupport,
|
|
47
|
-
sentryDiagnosticsEnabled: entity[_serversettingsconstants.serverSettingsKey].sentryDiagnosticsEnabled ?? defaultServerSettings.sentryDiagnosticsEnabled
|
|
48
|
-
experimentalThumbnailSupport: entity[_serversettingsconstants.serverSettingsKey].experimentalThumbnailSupport ?? defaultServerSettings.experimentalThumbnailSupport
|
|
48
|
+
sentryDiagnosticsEnabled: entity[_serversettingsconstants.serverSettingsKey].sentryDiagnosticsEnabled ?? defaultServerSettings.sentryDiagnosticsEnabled
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
51
|
return entity;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/runtime-settings.migration.ts"],"names":["migrateSettingsRuntime","knownSettings","entity","wizardSettingKey","getDefaultWizardSettings","timeoutSettingKey","getDefaultTimeout","defaultTimeoutSettings","apiTimeout","apiUploadTimeout","serverSettingsKey","getDefaultServerSettings","frontendSettingKey","getDefaultFrontendSettings","credentialSettingsKey","getDefaultCredentialSettings","jwtSecret","uuidv4","
|
|
1
|
+
{"version":3,"sources":["../../src/shared/runtime-settings.migration.ts"],"names":["migrateSettingsRuntime","knownSettings","entity","wizardSettingKey","getDefaultWizardSettings","timeoutSettingKey","getDefaultTimeout","defaultTimeoutSettings","apiTimeout","apiUploadTimeout","serverSettingsKey","getDefaultServerSettings","frontendSettingKey","getDefaultFrontendSettings","credentialSettingsKey","getDefaultCredentialSettings","jwtSecret","uuidv4","defaultFrontendSettings","gridCols","gridRows","largeTiles","tilePreferCancelOverQuickStop","gridNameSortDirection","defaultServerSettings","loginRequired","registration","experimentalMoonrakerSupport","experimentalPrusaLinkSupport","experimentalBambuSupport","sentryDiagnosticsEnabled"],"mappings":";;;;+BAegBA;;;eAAAA;;;yCAJT;sBACsB;AAGtB,SAASA,uBAAuBC,aAAgC;IACrE,MAAMC,SAASD;IAEfC,MAAM,CAACC,yCAAgB,CAAC,KAAKC,IAAAA,iDAAwB;IACrDF,MAAM,CAACG,0CAAiB,CAAC,KAAKC,IAAAA,0CAAiB;IAE/C,IAAIJ,MAAM,CAACG,0CAAiB,CAAC,EAAE;QAC7B,MAAME,yBAAyBD,IAAAA,0CAAiB;QAChDJ,MAAM,CAACG,0CAAiB,CAAC,GAAG;YAC1BG,YAAYN,MAAM,CAACG,0CAAiB,CAAC,CAACG,UAAU,IAAID,uBAAuBC,UAAU;YACrFC,kBAAkBP,MAAM,CAACG,0CAAiB,CAAC,CAACI,gBAAgB,IAAIF,uBAAuBE,gBAAgB;QACzG;IACF;IAEAP,MAAM,CAACQ,0CAAiB,CAAC,KAAKC,IAAAA,iDAAwB;IACtDT,MAAM,CAACU,2CAAkB,CAAC,KAAKC,IAAAA,mDAA0B;IACzDX,MAAM,CAACY,8CAAqB,CAAC,KAAK;QAChC,GAAGC,IAAAA,qDAA4B,GAAE;QAEjCC,WAAWC,IAAAA,QAAM;IACnB;IAEA,IAAIf,MAAM,CAACU,2CAAkB,CAAC,EAAE;QAC9B,MAAMM,0BAA0BL,IAAAA,mDAA0B;QAG1DX,MAAM,CAACU,2CAAkB,CAAC,GAAG;YAC3BO,UAAUjB,MAAM,CAACU,2CAAkB,CAAC,CAACO,QAAQ,IAAID,wBAAwBC,QAAQ;YACjFC,UAAUlB,MAAM,CAACU,2CAAkB,CAAC,CAACQ,QAAQ,IAAIF,wBAAwBE,QAAQ;YACjFC,YAAYnB,MAAM,CAACU,2CAAkB,CAAC,CAACS,UAAU,IAAIH,wBAAwBG,UAAU;YACvFC,+BAA+BpB,MAAM,CAACU,2CAAkB,CAAC,CAACU,6BAA6B,IAAIJ,wBAAwBI,6BAA6B;YAChJC,uBAAuBrB,MAAM,CAACU,2CAAkB,CAAC,CAACW,qBAAqB,IAAIL,wBAAwBK,qBAAqB;QAC1H;IACF;IAEA,IAAIrB,MAAM,CAACQ,0CAAiB,CAAC,EAAE;QAC7B,MAAMc,wBAAwBb,IAAAA,iDAAwB;QAGtDT,MAAM,CAACQ,0CAAiB,CAAC,GAAG;YAC1Be,eAAevB,MAAM,CAACQ,0CAAiB,CAAC,CAACe,aAAa,IAAID,sBAAsBC,aAAa;YAC7FC,cAAcxB,MAAM,CAACQ,0CAAiB,CAAC,CAACgB,YAAY,IAAIF,sBAAsBE,YAAY;YAC1FC,8BACEzB,MAAM,CAACQ,0CAAiB,CAAC,CAACiB,4BAA4B,IAAIH,sBAAsBG,4BAA4B;YAC9GC,8BACE1B,MAAM,CAACQ,0CAAiB,CAAC,CAACkB,4BAA4B,IAAIJ,sBAAsBI,4BAA4B;YAC9GC,0BACE3B,MAAM,CAACQ,0CAAiB,CAAC,CAACmB,wBAAwB,IAAIL,sBAAsBK,wBAAwB;YACtGC,0BACE5B,MAAM,CAACQ,0CAAiB,CAAC,CAACoB,wBAAwB,IAAIN,sBAAsBM,wBAAwB;QACxG;IACF;IAEA,OAAO5B;AACT"}
|
|
@@ -18,13 +18,6 @@ class FloorStore extends _keydiffcache.KeyDiffCache {
|
|
|
18
18
|
}
|
|
19
19
|
async loadStore() {
|
|
20
20
|
const floors = await this.floorService.list();
|
|
21
|
-
if (!floors?.length) {
|
|
22
|
-
this.logger.log("Creating default floor as non existed");
|
|
23
|
-
const floor = await this.floorService.createDefaultFloor();
|
|
24
|
-
const floorDto = this.floorService.toDto(floor);
|
|
25
|
-
await this.setKeyValue(floor.id, floorDto, true);
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
21
|
const keyValues = floors.map((floor)=>({
|
|
29
22
|
key: floor.id,
|
|
30
23
|
value: this.floorService.toDto(floor)
|
|
@@ -71,8 +64,8 @@ class FloorStore extends _keydiffcache.KeyDiffCache {
|
|
|
71
64
|
await this.setKeyValue(floorId, floorDto, true);
|
|
72
65
|
return floorDto;
|
|
73
66
|
}
|
|
74
|
-
async
|
|
75
|
-
const floor = await this.floorService.
|
|
67
|
+
async updateFloorOrder(floorId, order) {
|
|
68
|
+
const floor = await this.floorService.updateOrder(floorId, order);
|
|
76
69
|
const floorDto = this.floorService.toDto(floor);
|
|
77
70
|
await this.setKeyValue(floorId, floorDto, true);
|
|
78
71
|
return floorDto;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/state/floor.store.ts"],"names":["FloorStore","KeyDiffCache","logger","floorService","loggerFactory","name","loadStore","floors","list","
|
|
1
|
+
{"version":3,"sources":["../../src/state/floor.store.ts"],"names":["FloorStore","KeyDiffCache","logger","floorService","loggerFactory","name","loadStore","floors","list","keyValues","map","floor","key","id","value","toDto","setKeyValuesBatch","listCache","getAllValues","length","create","input","floorDto","setKeyValue","delete","floorId","deleteKeyValue","getFloor","getValue","dbFloor","get","update","updateName","updateFloorOrder","order","updateOrder","addOrUpdatePrinter","position","removePrinter","printerId","removePrinterFromAnyFloor","deletePrinterFromAnyFloor"],"mappings":"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"}
|
|
@@ -10,15 +10,19 @@ Object.defineProperty(exports, "PrinterEventsCache", {
|
|
|
10
10
|
});
|
|
11
11
|
const _keydiffcache = require("../utils/cache/key-diff.cache");
|
|
12
12
|
const _eventconstants = require("../constants/event.constants");
|
|
13
|
+
const _octoprinteventdto = require("../services/octoprint/dto/octoprint-event.dto");
|
|
13
14
|
const _octoprintwebsocketadapter = require("../services/octoprint/octoprint-websocket.adapter");
|
|
14
15
|
const _moonrakerconstants = require("../services/moonraker/constants/moonraker.constants");
|
|
15
16
|
const _prusalinkconstants = require("../services/prusa-link/constants/prusalink.constants");
|
|
16
17
|
const _bambumqttadapter = require("../services/bambu/bambu-mqtt.adapter");
|
|
17
18
|
class PrinterEventsCache extends _keydiffcache.KeyDiffCache {
|
|
18
19
|
eventEmitter2;
|
|
20
|
+
printJobService;
|
|
21
|
+
printerCache;
|
|
22
|
+
printerThumbnailCache;
|
|
19
23
|
logger;
|
|
20
|
-
constructor(eventEmitter2, loggerFactory){
|
|
21
|
-
super(), this.eventEmitter2 = eventEmitter2;
|
|
24
|
+
constructor(eventEmitter2, loggerFactory, printJobService, printerCache, printerThumbnailCache){
|
|
25
|
+
super(), this.eventEmitter2 = eventEmitter2, this.printJobService = printJobService, this.printerCache = printerCache, this.printerThumbnailCache = printerThumbnailCache;
|
|
22
26
|
this.logger = loggerFactory(PrinterEventsCache.name);
|
|
23
27
|
this.subscribeToEvents();
|
|
24
28
|
}
|
|
@@ -76,30 +80,140 @@ class PrinterEventsCache extends _keydiffcache.KeyDiffCache {
|
|
|
76
80
|
this.eventEmitter2.on((0, _bambumqttadapter.bambuEvent)("*"), (e)=>this.onBambuSocketMessage(e));
|
|
77
81
|
this.eventEmitter2.on(_eventconstants.printerEvents.printersDeleted, this.handlePrintersDeleted.bind(this));
|
|
78
82
|
}
|
|
83
|
+
async getPrinterName(printerId) {
|
|
84
|
+
try {
|
|
85
|
+
const printer = await this.printerCache.getValue(printerId);
|
|
86
|
+
return printer?.name;
|
|
87
|
+
} catch (error) {
|
|
88
|
+
this.logger.debug(`Could not get printer name for ${printerId}: ${error}`);
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
79
92
|
async onOctoPrintSocketMessage(e) {
|
|
80
93
|
const printerId = e.printerId;
|
|
81
|
-
if (
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
94
|
+
if (e.event === _octoprinteventdto.messages.current && e.payload) {
|
|
95
|
+
await this.setEvent(printerId, _octoprinteventdto.messages.current, e.payload);
|
|
96
|
+
const payload = e.payload;
|
|
97
|
+
const flags = payload?.state?.flags;
|
|
98
|
+
const filePath = payload?.job?.file?.path;
|
|
99
|
+
const completion = payload?.progress?.completion;
|
|
100
|
+
if (flags?.printing && filePath) {
|
|
101
|
+
const printerName = await this.getPrinterName(printerId);
|
|
102
|
+
const job = await this.printJobService.markStarted(printerId, filePath, printerName);
|
|
103
|
+
if (job) {
|
|
104
|
+
await this.printerThumbnailCache.handleJobStarted(printerId, job.id);
|
|
105
|
+
}
|
|
106
|
+
if (job && !job.fileStorageId && job.analysisState === "NOT_ANALYZED") {
|
|
107
|
+
this.logger.log(`Job ${job.id} has no local file - triggering download and analysis`);
|
|
108
|
+
await this.printJobService.triggerFileAnalysis(job.id);
|
|
109
|
+
}
|
|
110
|
+
if (job && !job.metadata?.gcodePrintTimeSeconds) {
|
|
111
|
+
const estimatedTime = payload?.job?.estimatedPrintTime;
|
|
112
|
+
const filament = payload?.job?.filament?.tool0;
|
|
113
|
+
await this.printJobService.updateJobMetadata(printerId, filePath, {
|
|
114
|
+
gcodePrintTimeSeconds: estimatedTime ? Math.round(estimatedTime) : null,
|
|
115
|
+
nozzleDiameterMm: null,
|
|
116
|
+
filamentDiameterMm: null,
|
|
117
|
+
filamentDensityGramsCm3: null,
|
|
118
|
+
filamentUsedMm: filament?.length ? Math.round(filament.length) : null,
|
|
119
|
+
filamentUsedCm3: filament?.volume ? Math.round(filament.volume * 100) / 100 : null,
|
|
120
|
+
filamentUsedGrams: null,
|
|
121
|
+
totalFilamentUsedGrams: null
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (typeof completion === "number" && filePath) {
|
|
126
|
+
await this.printJobService.markProgress(printerId, filePath, completion);
|
|
127
|
+
}
|
|
128
|
+
if ((flags?.finished || flags?.error) && filePath) {
|
|
129
|
+
const reason = flags?.error ? "Error" : "Finished";
|
|
130
|
+
if (flags?.finished) {
|
|
131
|
+
const job = await this.printJobService.markFinished(printerId, filePath);
|
|
132
|
+
if (job) {
|
|
133
|
+
await this.printerThumbnailCache.handleJobCompleted(printerId, job.id);
|
|
134
|
+
}
|
|
135
|
+
} else {
|
|
136
|
+
await this.printJobService.markFailed(printerId, filePath, reason);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
86
139
|
}
|
|
87
140
|
}
|
|
88
141
|
async onMoonrakerSocketMessage(e) {
|
|
89
142
|
const printerId = e.printerId;
|
|
90
143
|
const eventType = e.event;
|
|
91
144
|
if ([
|
|
92
|
-
|
|
93
|
-
|
|
145
|
+
_octoprinteventdto.messages.notify_status_update,
|
|
146
|
+
_octoprinteventdto.messages.current
|
|
94
147
|
].includes(eventType)) {
|
|
95
148
|
await this.setEvent(printerId, eventType, e.payload);
|
|
149
|
+
const payload = e.payload;
|
|
150
|
+
const status = payload?.status ?? payload?.result ?? {};
|
|
151
|
+
const filename = status?.print_stats?.filename;
|
|
152
|
+
const progress = status?.display_status?.progress ?? status?.print_stats?.progress;
|
|
153
|
+
const state = status?.print_stats?.state;
|
|
154
|
+
if (state === "printing" && filename) {
|
|
155
|
+
const printerName = await this.getPrinterName(printerId);
|
|
156
|
+
const job = await this.printJobService.markStarted(printerId, filename, printerName);
|
|
157
|
+
if (job) {
|
|
158
|
+
await this.printerThumbnailCache.handleJobStarted(printerId, job.id);
|
|
159
|
+
}
|
|
160
|
+
if (job && !job.fileStorageId && job.analysisState === "NOT_ANALYZED") {
|
|
161
|
+
this.logger.log(`Job ${job.id} has no local file - triggering download and analysis`);
|
|
162
|
+
await this.printJobService.triggerFileAnalysis(job.id);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
if (typeof progress === "number" && filename) {
|
|
166
|
+
await this.printJobService.markProgress(printerId, filename, Math.round(progress * 100));
|
|
167
|
+
}
|
|
168
|
+
if ([
|
|
169
|
+
"complete",
|
|
170
|
+
"cancelled",
|
|
171
|
+
"error"
|
|
172
|
+
].includes(state) && filename) {
|
|
173
|
+
if (state === "complete") {
|
|
174
|
+
const job = await this.printJobService.markFinished(printerId, filename);
|
|
175
|
+
if (job) {
|
|
176
|
+
await this.printerThumbnailCache.handleJobCompleted(printerId, job.id);
|
|
177
|
+
}
|
|
178
|
+
} else {
|
|
179
|
+
await this.printJobService.markFailed(printerId, filename, state);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
96
182
|
}
|
|
97
183
|
}
|
|
98
184
|
async onPrusaLinkPollMessage(e) {
|
|
99
185
|
const printerId = e.printerId;
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
186
|
+
if (e.event === _octoprinteventdto.messages.current) {
|
|
187
|
+
await this.setEvent(printerId, _octoprinteventdto.messages.current, e.payload);
|
|
188
|
+
const payload = e.payload;
|
|
189
|
+
const state = payload?.state;
|
|
190
|
+
const filename = payload?.job?.file?.path ?? payload?.job?.file?.display;
|
|
191
|
+
const completion = payload?.progress?.completion;
|
|
192
|
+
if (state === "Printing" && filename) {
|
|
193
|
+
const printerName = await this.getPrinterName(printerId);
|
|
194
|
+
const job = await this.printJobService.markStarted(printerId, filename, printerName);
|
|
195
|
+
if (job) {
|
|
196
|
+
await this.printerThumbnailCache.handleJobStarted(printerId, job.id);
|
|
197
|
+
}
|
|
198
|
+
if (job && !job.fileStorageId && job.analysisState === "NOT_ANALYZED") {
|
|
199
|
+
this.logger.log(`Job ${job.id} has no local file - triggering download and analysis`);
|
|
200
|
+
await this.printJobService.triggerFileAnalysis(job.id);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
if (typeof completion === "number" && filename) {
|
|
204
|
+
await this.printJobService.markProgress(printerId, filename, completion);
|
|
205
|
+
}
|
|
206
|
+
if (state === "Finished" && filename) {
|
|
207
|
+
const job = await this.printJobService.markFinished(printerId, filename);
|
|
208
|
+
if (job) {
|
|
209
|
+
await this.printerThumbnailCache.handleJobCompleted(printerId, job.id);
|
|
210
|
+
}
|
|
211
|
+
} else if ([
|
|
212
|
+
"Stopped",
|
|
213
|
+
"Error"
|
|
214
|
+
].includes(state) && filename) {
|
|
215
|
+
await this.printJobService.markFailed(printerId, filename, state);
|
|
216
|
+
}
|
|
103
217
|
}
|
|
104
218
|
}
|
|
105
219
|
async onBambuSocketMessage(e) {
|
|
@@ -108,15 +222,61 @@ class PrinterEventsCache extends _keydiffcache.KeyDiffCache {
|
|
|
108
222
|
this.logger.warn("Received Bambu event without printerId", e);
|
|
109
223
|
return;
|
|
110
224
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
225
|
+
if (e.event === _octoprinteventdto.messages.current) {
|
|
226
|
+
await this.setEvent(printerId, _octoprinteventdto.messages.current, e.payload);
|
|
227
|
+
const payload = e.payload;
|
|
228
|
+
const print = payload?.print;
|
|
229
|
+
const percent = print?.mc_percent;
|
|
230
|
+
const filename = print?.gcode_file || print?.subtask_name;
|
|
231
|
+
const stage = print?.mc_print_stage;
|
|
232
|
+
const state = print?.gcode_state;
|
|
233
|
+
if (state === "PRINTING" && filename) {
|
|
234
|
+
const printerName = await this.getPrinterName(printerId);
|
|
235
|
+
const job = await this.printJobService.markStarted(printerId, filename, printerName);
|
|
236
|
+
if (job) {
|
|
237
|
+
await this.printerThumbnailCache.handleJobStarted(printerId, job.id);
|
|
238
|
+
}
|
|
239
|
+
if (job && !job.fileStorageId && job.analysisState === "NOT_ANALYZED") {
|
|
240
|
+
this.logger.log(`Job ${job.id} has no local file - triggering download and analysis`);
|
|
241
|
+
await this.printJobService.triggerFileAnalysis(job.id);
|
|
242
|
+
}
|
|
243
|
+
if (job && !job.metadata?.gcodePrintTimeSeconds) {
|
|
244
|
+
const remainingMinutes = print?.mc_remaining_time;
|
|
245
|
+
const totalLayers = print?.total_layer_num;
|
|
246
|
+
const estimatedSeconds = remainingMinutes ? remainingMinutes * 60 : null;
|
|
247
|
+
const tray = print?.ams?.tray_now ? print?.vt_tray : print?.ams?.ams?.[0]?.tray?.[0];
|
|
248
|
+
const filamentDiameter = tray?.tray_diameter ? parseFloat(tray.tray_diameter) : null;
|
|
249
|
+
await this.printJobService.updateJobMetadata(printerId, filename, {
|
|
250
|
+
gcodePrintTimeSeconds: estimatedSeconds,
|
|
251
|
+
nozzleDiameterMm: null,
|
|
252
|
+
filamentDiameterMm: filamentDiameter,
|
|
253
|
+
filamentDensityGramsCm3: null,
|
|
254
|
+
filamentUsedMm: null,
|
|
255
|
+
filamentUsedCm3: null,
|
|
256
|
+
filamentUsedGrams: null,
|
|
257
|
+
totalFilamentUsedGrams: null
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
if (typeof percent === "number" && filename) {
|
|
262
|
+
await this.printJobService.markProgress(printerId, filename, percent);
|
|
263
|
+
}
|
|
264
|
+
if (state === "FINISHED" && filename) {
|
|
265
|
+
const job = await this.printJobService.markFinished(printerId, filename);
|
|
266
|
+
if (job) {
|
|
267
|
+
await this.printerThumbnailCache.handleJobCompleted(printerId, job.id);
|
|
268
|
+
}
|
|
269
|
+
} else if (state === "IDLE") {
|
|
270
|
+
const activeJob = await this.printJobService.getActivePrintJob(printerId);
|
|
271
|
+
if (activeJob && activeJob.status === "PRINTING") {
|
|
272
|
+
this.logger.log(`Print job ${activeJob.id} transitioned to IDLE - marking as cancelled`);
|
|
273
|
+
await this.printJobService.handlePrintCancelled(printerId, "Print stopped");
|
|
274
|
+
}
|
|
275
|
+
} else if (state === "ERROR" && filename) {
|
|
276
|
+
await this.printJobService.markFailed(printerId, filename, "Error");
|
|
277
|
+
}
|
|
114
278
|
}
|
|
115
279
|
}
|
|
116
|
-
pruneHistoryPayload(payload) {
|
|
117
|
-
const { logs, temps, messages, plugins, ...prunedPayload } = payload;
|
|
118
|
-
return prunedPayload;
|
|
119
|
-
}
|
|
120
280
|
}
|
|
121
281
|
|
|
122
282
|
//# sourceMappingURL=printer-events.cache.js.map
|