@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
|
@@ -13,7 +13,7 @@ const _yamlservicevalidation = require("../validators/yaml-service.validation");
|
|
|
13
13
|
const _jsyaml = require("js-yaml");
|
|
14
14
|
const _printerapiinterface = require("../printer-api.interface");
|
|
15
15
|
class YamlService {
|
|
16
|
-
|
|
16
|
+
printerTagService;
|
|
17
17
|
printerService;
|
|
18
18
|
printerCache;
|
|
19
19
|
floorStore;
|
|
@@ -22,8 +22,8 @@ class YamlService {
|
|
|
22
22
|
roleService;
|
|
23
23
|
settingsStore;
|
|
24
24
|
logger;
|
|
25
|
-
constructor(loggerFactory,
|
|
26
|
-
this.
|
|
25
|
+
constructor(loggerFactory, printerTagService, printerService, printerCache, floorStore, floorService, userService, roleService, settingsStore){
|
|
26
|
+
this.printerTagService = printerTagService;
|
|
27
27
|
this.printerService = printerService;
|
|
28
28
|
this.printerCache = printerCache;
|
|
29
29
|
this.floorStore = floorStore;
|
|
@@ -37,43 +37,20 @@ class YamlService {
|
|
|
37
37
|
const importSpec = await (0, _jsyaml.load)(yamlBuffer);
|
|
38
38
|
const databaseTypeSqlite = importSpec.databaseType === "sqlite";
|
|
39
39
|
const { exportPrinters, exportFloorGrid, exportSettings, exportUsers } = importSpec.config;
|
|
40
|
-
|
|
40
|
+
this.normalizeYamlData(importSpec, databaseTypeSqlite);
|
|
41
|
+
const importData = await (0, _validators.validateInput)(importSpec, _yamlservicevalidation.importPrintersFloorsYamlSchema);
|
|
41
42
|
const hasSystemData = exportSettings || exportUsers;
|
|
42
|
-
if (hasSystemData
|
|
43
|
+
if (hasSystemData) {
|
|
43
44
|
await this.validateSystemTablesEmpty(importSpec);
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
printer.name = printer.printerName;
|
|
48
|
-
delete printer.printerName;
|
|
49
|
-
}
|
|
50
|
-
if (printer.settingsAppearance?.name) {
|
|
51
|
-
printer.name = printer.settingsAppearance?.name;
|
|
52
|
-
delete printer.settingsAppearance?.name;
|
|
45
|
+
if (exportSettings && importSpec.settings) {
|
|
46
|
+
this.logger.log("Importing settings");
|
|
47
|
+
await this.importSettings(importSpec.settings);
|
|
53
48
|
}
|
|
54
|
-
if (
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (![
|
|
58
|
-
_printerapiinterface.OctoprintType,
|
|
59
|
-
_printerapiinterface.MoonrakerType
|
|
60
|
-
].includes(printer.printerType)) {
|
|
61
|
-
printer.printerType = _printerapiinterface.OctoprintType;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
if (databaseTypeSqlite) {
|
|
65
|
-
for (const floor of importSpec.floors){
|
|
66
|
-
if (typeof floor.id === "string") {
|
|
67
|
-
floor.id = Number.parseInt(floor.id);
|
|
68
|
-
}
|
|
69
|
-
for (const printer of floor.printers){
|
|
70
|
-
if (typeof printer.printerId === "string") {
|
|
71
|
-
printer.printerId = Number.parseInt(printer.printerId);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
49
|
+
if (exportUsers && importSpec.users && importSpec.users.length > 0) {
|
|
50
|
+
this.logger.log(`Importing users (${importSpec.users.length} users)`);
|
|
51
|
+
await this.importUsers(importSpec.users, databaseTypeSqlite);
|
|
74
52
|
}
|
|
75
53
|
}
|
|
76
|
-
const importData = await (0, _validators.validateInput)(importSpec, _yamlservicevalidation.importPrintersFloorsYamlSchema);
|
|
77
54
|
if (exportFloorGrid && importData.floors?.length) {
|
|
78
55
|
for (const floor of importData.floors){
|
|
79
56
|
await (0, _validators.validateInput)(floor, _yamlservicevalidation.importPrinterPositionsSchema);
|
|
@@ -83,119 +60,148 @@ class YamlService {
|
|
|
83
60
|
const { updateByPropertyPrinters, insertPrinters } = await this.analysePrintersUpsert(importData.printers ?? [], importData.config.printerComparisonStrategiesByPriority);
|
|
84
61
|
this.logger.log("Analysing floors for import");
|
|
85
62
|
const { updateByPropertyFloors, insertFloors } = await this.analyseFloorsUpsert(importData.floors ?? [], importData.config.floorComparisonStrategiesByPriority);
|
|
86
|
-
this.logger.log("Analysing
|
|
87
|
-
const {
|
|
63
|
+
this.logger.log("Analysing tags for import");
|
|
64
|
+
const { updateByNameTags, insertTags } = await this.analyseUpsertTags(importData.tags ?? []);
|
|
88
65
|
this.logger.log(`Performing pure insert printers (${insertPrinters.length} printers)`);
|
|
89
66
|
const printerIdMap = {};
|
|
90
67
|
for (const newPrinter of insertPrinters){
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
68
|
+
try {
|
|
69
|
+
const state = await this.printerService.create({
|
|
70
|
+
...newPrinter
|
|
71
|
+
});
|
|
72
|
+
if (!newPrinter.id) {
|
|
73
|
+
throw new Error(`Saved ID was empty ${JSON.stringify(newPrinter)}`);
|
|
74
|
+
}
|
|
75
|
+
printerIdMap[newPrinter.id] = state.id;
|
|
76
|
+
} catch (error) {
|
|
77
|
+
this.logger.error(`Failed to create printer ${newPrinter.name}:`, error);
|
|
96
78
|
}
|
|
97
|
-
printerIdMap[newPrinter.id] = state.id;
|
|
98
79
|
}
|
|
99
80
|
this.logger.log(`Performing update import printers (${updateByPropertyPrinters.length} printers)`);
|
|
100
81
|
for (const updatePrinterSpec of updateByPropertyPrinters){
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
82
|
+
try {
|
|
83
|
+
const updateId = updatePrinterSpec.printerId;
|
|
84
|
+
const updatedPrinter = updatePrinterSpec.value;
|
|
85
|
+
if (typeof updateId === "string") {
|
|
86
|
+
throw new Error("Cannot update a printer by string id in sqlite mode");
|
|
87
|
+
}
|
|
88
|
+
const originalPrinterId = updatedPrinter.id;
|
|
89
|
+
delete updatePrinterSpec.value.id;
|
|
90
|
+
updatedPrinter.id = updateId;
|
|
91
|
+
const state = await this.printerService.update(updateId, updatedPrinter);
|
|
92
|
+
if (!updatePrinterSpec.printerId) {
|
|
93
|
+
throw new Error("Saved ID was empty");
|
|
94
|
+
}
|
|
95
|
+
printerIdMap[originalPrinterId] = state.id;
|
|
96
|
+
} catch (error) {
|
|
97
|
+
this.logger.error(`Failed to update printer ${updatePrinterSpec.value.name}:`, error);
|
|
112
98
|
}
|
|
113
|
-
printerIdMap[originalPrinterId] = state.id;
|
|
114
99
|
}
|
|
115
100
|
this.logger.log(`Performing pure create floors (${insertFloors.length} floors)`);
|
|
116
101
|
const floorIdMap = {};
|
|
117
102
|
for (const newFloor of insertFloors){
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
103
|
+
try {
|
|
104
|
+
const originalFloorId = newFloor.id;
|
|
105
|
+
delete newFloor.id;
|
|
106
|
+
const knownPrinterPositions = [];
|
|
107
|
+
if (exportFloorGrid && exportPrinters) {
|
|
108
|
+
for (const floorPosition of newFloor.printers){
|
|
109
|
+
const knownPrinterId = printerIdMap[floorPosition.printerId];
|
|
110
|
+
if (!knownPrinterId) {
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
delete floorPosition.id;
|
|
114
|
+
delete floorPosition.floorId;
|
|
115
|
+
floorPosition.printerId = knownPrinterId;
|
|
116
|
+
knownPrinterPositions.push(floorPosition);
|
|
126
117
|
}
|
|
127
|
-
|
|
128
|
-
delete floorPosition.floorId;
|
|
129
|
-
floorPosition.printerId = knownPrinterId;
|
|
130
|
-
knownPrinterPositions.push(floorPosition);
|
|
118
|
+
newFloor.printers = knownPrinterPositions;
|
|
131
119
|
}
|
|
132
|
-
|
|
120
|
+
const createdFloor = await this.floorStore.create({
|
|
121
|
+
...newFloor
|
|
122
|
+
});
|
|
123
|
+
floorIdMap[originalFloorId] = createdFloor.id;
|
|
124
|
+
} catch (error) {
|
|
125
|
+
this.logger.error(`Failed to create floor ${newFloor.name}:`, error);
|
|
133
126
|
}
|
|
134
|
-
const createdFloor = await this.floorStore.create({
|
|
135
|
-
...newFloor
|
|
136
|
-
});
|
|
137
|
-
floorIdMap[originalFloorId] = createdFloor.id;
|
|
138
127
|
}
|
|
139
128
|
this.logger.log(`Performing update of floors (${updateByPropertyFloors.length} floors)`);
|
|
140
129
|
for (const updateFloorSpec of updateByPropertyFloors){
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
|
|
130
|
+
try {
|
|
131
|
+
const updateId = updateFloorSpec.floorId;
|
|
132
|
+
if (typeof updateId === "string") {
|
|
133
|
+
throw new Error("Cannot update a floor by string id in sqlite mode");
|
|
134
|
+
}
|
|
135
|
+
const updatedFloor = updateFloorSpec.value;
|
|
136
|
+
const originalFloorId = updatedFloor.id;
|
|
137
|
+
delete updatedFloor.id;
|
|
138
|
+
const knownPrinters = [];
|
|
139
|
+
if (exportFloorGrid && exportPrinters) {
|
|
140
|
+
for (const floorPosition of updatedFloor?.printers){
|
|
141
|
+
const knownPrinterId = printerIdMap[floorPosition.printerId];
|
|
142
|
+
if (!knownPrinterId) {
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
delete floorPosition.id;
|
|
146
|
+
delete floorPosition.floorId;
|
|
147
|
+
floorPosition.printerId = knownPrinterId;
|
|
148
|
+
floorPosition.floorId = updateId;
|
|
149
|
+
knownPrinters.push(floorPosition);
|
|
154
150
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
floorPosition.printerId = knownPrinterId;
|
|
158
|
-
floorPosition.floorId = updateId;
|
|
159
|
-
knownPrinters.push(floorPosition);
|
|
151
|
+
updatedFloor.id = updateId;
|
|
152
|
+
updatedFloor.printers = knownPrinters;
|
|
160
153
|
}
|
|
161
|
-
|
|
162
|
-
|
|
154
|
+
const newFloor = await this.floorStore.update(updateId, updatedFloor);
|
|
155
|
+
floorIdMap[originalFloorId] = newFloor.id;
|
|
156
|
+
} catch (error) {
|
|
157
|
+
this.logger.error(`Failed to update floor ${updateFloorSpec.value.name}:`, error);
|
|
163
158
|
}
|
|
164
|
-
const newFloor = await this.floorStore.update(updateId, updatedFloor);
|
|
165
|
-
floorIdMap[originalFloorId] = newFloor.id;
|
|
166
159
|
}
|
|
167
160
|
await this.floorStore.loadStore();
|
|
168
|
-
this.logger.log(`Performing pure create
|
|
169
|
-
for (const
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
161
|
+
this.logger.log(`Performing pure create tags (${insertTags.length} tags)`);
|
|
162
|
+
for (const tag of insertTags){
|
|
163
|
+
try {
|
|
164
|
+
const createdTag = await this.printerTagService.createTag({
|
|
165
|
+
name: tag.name,
|
|
166
|
+
color: tag.color
|
|
167
|
+
});
|
|
168
|
+
for (const printer of tag.printers){
|
|
169
|
+
const knownPrinterId = printerIdMap[printer.printerId];
|
|
170
|
+
if (!knownPrinterId) continue;
|
|
171
|
+
try {
|
|
172
|
+
await this.printerTagService.addPrinterToTag(createdTag.id, knownPrinterId);
|
|
173
|
+
} catch (error) {
|
|
174
|
+
this.logger.error(`Failed to add printer ${knownPrinterId} to tag ${tag.name}:`, error);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
} catch (error) {
|
|
178
|
+
this.logger.error(`Failed to create tag ${tag.name}:`, error);
|
|
177
179
|
}
|
|
178
180
|
}
|
|
179
|
-
this.logger.log(`Performing update of
|
|
180
|
-
for (const
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
181
|
+
this.logger.log(`Performing update of tag printer links (${updateByNameTags.length} tags)`);
|
|
182
|
+
for (const updateTagSpec of updateByNameTags){
|
|
183
|
+
try {
|
|
184
|
+
const existingTag = await this.printerTagService.getPrintersByTag(updateTagSpec.tagId);
|
|
185
|
+
const existingPrinterIds = existingTag.printers.map((p)=>p.printerId);
|
|
186
|
+
const wantedTargetPrinterIds = updateTagSpec.value.printers.filter((p)=>!!printerIdMap[p.printerId]).map((p)=>printerIdMap[p.printerId]);
|
|
187
|
+
for (const unwantedId of existingPrinterIds.filter((eid)=>!wantedTargetPrinterIds.includes(eid))){
|
|
188
|
+
try {
|
|
189
|
+
await this.printerTagService.removePrinterFromTag(existingTag.id, unwantedId);
|
|
190
|
+
} catch (error) {
|
|
191
|
+
this.logger.error(`Failed to remove printer ${unwantedId} from tag ${existingTag.name}:`, error);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
for (const nonExistingNewId of wantedTargetPrinterIds.filter((eid)=>!existingPrinterIds.includes(eid))){
|
|
195
|
+
try {
|
|
196
|
+
await this.printerTagService.addPrinterToTag(existingTag.id, nonExistingNewId);
|
|
197
|
+
} catch (error) {
|
|
198
|
+
this.logger.error(`Failed to add printer ${nonExistingNewId} to tag ${existingTag.name}:`, error);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
} catch (error) {
|
|
202
|
+
this.logger.error(`Failed to update tag ${updateTagSpec.value.name}:`, error);
|
|
189
203
|
}
|
|
190
204
|
}
|
|
191
|
-
if (exportSettings && importSpec.settings) {
|
|
192
|
-
this.logger.log("Importing settings");
|
|
193
|
-
await this.importSettings(importSpec.settings);
|
|
194
|
-
}
|
|
195
|
-
if (exportUsers && importSpec.users && importSpec.users.length > 0) {
|
|
196
|
-
this.logger.log(`Importing users (${importSpec.users.length} users)`);
|
|
197
|
-
await this.importUsers(importSpec.users, databaseTypeSqlite);
|
|
198
|
-
}
|
|
199
205
|
return {
|
|
200
206
|
updateByPropertyPrinters,
|
|
201
207
|
updateByPropertyFloors,
|
|
@@ -215,14 +221,27 @@ class YamlService {
|
|
|
215
221
|
if (settings.frontend) {
|
|
216
222
|
await this.settingsStore.updateFrontendSettings(settings.frontend);
|
|
217
223
|
}
|
|
218
|
-
if (settings.printerFileClean) {
|
|
219
|
-
await this.settingsStore.updateFileCleanSettings(settings.printerFileClean);
|
|
220
|
-
}
|
|
221
224
|
if (settings.wizard?.wizardCompleted) {
|
|
222
225
|
const importedWizardVersion = settings.wizard.wizardVersion;
|
|
223
226
|
this.logger.log(`Marking wizard as completed with version: ${importedWizardVersion}`);
|
|
224
227
|
await this.settingsStore.setWizardCompleted(importedWizardVersion);
|
|
225
228
|
}
|
|
229
|
+
if (settings.credential) {
|
|
230
|
+
const { jwtExpiresIn, refreshTokenAttempts, refreshTokenExpiry, slicerApiKey } = settings.credential;
|
|
231
|
+
if (jwtExpiresIn || refreshTokenAttempts || refreshTokenExpiry) {
|
|
232
|
+
await this.settingsStore.updateCoreCredentialSettings({
|
|
233
|
+
jwtExpiresIn: jwtExpiresIn ?? (await this.settingsStore.getCredentialSettings()).jwtExpiresIn,
|
|
234
|
+
refreshTokenAttempts: refreshTokenAttempts ?? (await this.settingsStore.getCredentialSettings()).refreshTokenAttempts,
|
|
235
|
+
refreshTokenExpiry: refreshTokenExpiry ?? (await this.settingsStore.getCredentialSettings()).refreshTokenExpiry
|
|
236
|
+
});
|
|
237
|
+
this.logger.log("Imported credential settings");
|
|
238
|
+
}
|
|
239
|
+
if (slicerApiKey) {
|
|
240
|
+
await this.settingsStore.setSlicerApiKey(slicerApiKey);
|
|
241
|
+
this.logger.log("Imported slicer API key");
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
await this.settingsStore.loadSettings();
|
|
226
245
|
this.logger.log("Settings imported successfully");
|
|
227
246
|
}
|
|
228
247
|
async importUsers(users, databaseTypeSqlite) {
|
|
@@ -247,6 +266,10 @@ class YamlService {
|
|
|
247
266
|
}
|
|
248
267
|
async validateSystemTablesEmpty(importSpec) {
|
|
249
268
|
const errors = [];
|
|
269
|
+
const wizardCompleted = this.settingsStore.getWizardSettings()?.wizardCompleted;
|
|
270
|
+
if (!wizardCompleted) {
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
250
273
|
if (importSpec.settings && importSpec.config.exportSettings) {
|
|
251
274
|
const existingSettings = this.settingsStore.getSettings();
|
|
252
275
|
if (existingSettings && Object.keys(existingSettings).length > 0) {
|
|
@@ -320,7 +343,7 @@ class YamlService {
|
|
|
320
343
|
async analyseFloorsUpsert(upsertFloors, comparisonStrategy) {
|
|
321
344
|
const existingFloors = await this.floorService.list();
|
|
322
345
|
const names = existingFloors.map((p)=>p.name.toLowerCase());
|
|
323
|
-
const floorLevels = existingFloors.map((p)=>p.
|
|
346
|
+
const floorLevels = existingFloors.map((p)=>p.order);
|
|
324
347
|
const ids = existingFloors.map((p)=>p.id.toString());
|
|
325
348
|
const insertFloors = [];
|
|
326
349
|
const updateByPropertyFloors = [];
|
|
@@ -344,7 +367,7 @@ class YamlService {
|
|
|
344
367
|
break;
|
|
345
368
|
}
|
|
346
369
|
} else if (strategy === "floor") {
|
|
347
|
-
const comparedProperty = floor.
|
|
370
|
+
const comparedProperty = floor.order;
|
|
348
371
|
const foundIndex = floorLevels.findIndex((n)=>n === comparedProperty);
|
|
349
372
|
if (foundIndex !== -1) {
|
|
350
373
|
if (!ids[foundIndex]) {
|
|
@@ -368,43 +391,43 @@ class YamlService {
|
|
|
368
391
|
insertFloors
|
|
369
392
|
};
|
|
370
393
|
}
|
|
371
|
-
async
|
|
372
|
-
if (!
|
|
394
|
+
async analyseUpsertTags(upsertTags) {
|
|
395
|
+
if (!upsertTags?.length) {
|
|
373
396
|
return {
|
|
374
|
-
|
|
375
|
-
|
|
397
|
+
updateByNameTags: [],
|
|
398
|
+
insertTags: []
|
|
376
399
|
};
|
|
377
400
|
}
|
|
378
|
-
const
|
|
379
|
-
const names =
|
|
380
|
-
const ids =
|
|
381
|
-
const
|
|
382
|
-
const
|
|
383
|
-
for (const
|
|
384
|
-
const comparedProperty =
|
|
401
|
+
const existingTags = await this.printerTagService.listTags();
|
|
402
|
+
const names = existingTags.map((p)=>p.name.toLowerCase());
|
|
403
|
+
const ids = existingTags.map((p)=>p.id.toString());
|
|
404
|
+
const insertTags = [];
|
|
405
|
+
const updateByNameTags = [];
|
|
406
|
+
for (const tag of upsertTags){
|
|
407
|
+
const comparedProperty = tag.name.toLowerCase();
|
|
385
408
|
const foundIndex = names.findIndex((n)=>n === comparedProperty);
|
|
386
409
|
if (foundIndex !== -1) {
|
|
387
410
|
if (!ids[foundIndex]) {
|
|
388
|
-
throw new Error("IDS not found,
|
|
411
|
+
throw new Error("IDS not found, tag name");
|
|
389
412
|
}
|
|
390
|
-
|
|
413
|
+
updateByNameTags.push({
|
|
391
414
|
strategy: "name",
|
|
392
|
-
|
|
393
|
-
value:
|
|
415
|
+
tagId: Number.parseInt(ids[foundIndex]),
|
|
416
|
+
value: tag
|
|
394
417
|
});
|
|
395
418
|
break;
|
|
396
419
|
} else {
|
|
397
|
-
|
|
420
|
+
insertTags.push(tag);
|
|
398
421
|
}
|
|
399
422
|
}
|
|
400
423
|
return {
|
|
401
|
-
|
|
402
|
-
|
|
424
|
+
insertTags,
|
|
425
|
+
updateByNameTags
|
|
403
426
|
};
|
|
404
427
|
}
|
|
405
428
|
async exportYaml(options) {
|
|
406
429
|
const input = await (0, _validators.validateInput)(options, _yamlservicevalidation.exportPrintersFloorsYamlSchema);
|
|
407
|
-
const { exportFloors, exportPrinters, exportFloorGrid,
|
|
430
|
+
const { exportFloors, exportPrinters, exportFloorGrid, exportTags, exportSettings, exportUsers } = input;
|
|
408
431
|
const dumpedObject = {
|
|
409
432
|
version: process.env.npm_package_version,
|
|
410
433
|
exportedAt: new Date(),
|
|
@@ -412,7 +435,7 @@ class YamlService {
|
|
|
412
435
|
config: input,
|
|
413
436
|
printers: undefined,
|
|
414
437
|
floors: undefined,
|
|
415
|
-
|
|
438
|
+
tags: undefined,
|
|
416
439
|
settings: undefined,
|
|
417
440
|
users: undefined,
|
|
418
441
|
user_roles: undefined
|
|
@@ -421,7 +444,7 @@ class YamlService {
|
|
|
421
444
|
const printers = await this.printerService.list();
|
|
422
445
|
dumpedObject.printers = printers.map((p)=>{
|
|
423
446
|
const printerId = p.id;
|
|
424
|
-
const { apiKey } = this.printerCache.getLoginDto(printerId);
|
|
447
|
+
const { apiKey, username, password } = this.printerCache.getLoginDto(printerId);
|
|
425
448
|
return {
|
|
426
449
|
id: printerId,
|
|
427
450
|
disabledReason: p.disabledReason,
|
|
@@ -430,7 +453,9 @@ class YamlService {
|
|
|
430
453
|
dateAdded: p.dateAdded,
|
|
431
454
|
name: p.name,
|
|
432
455
|
printerURL: p.printerURL,
|
|
433
|
-
apiKey
|
|
456
|
+
apiKey,
|
|
457
|
+
username,
|
|
458
|
+
password
|
|
434
459
|
};
|
|
435
460
|
});
|
|
436
461
|
}
|
|
@@ -439,7 +464,7 @@ class YamlService {
|
|
|
439
464
|
dumpedObject.floors = floors.map((f)=>{
|
|
440
465
|
const dumpedFloor = {
|
|
441
466
|
id: f.id,
|
|
442
|
-
|
|
467
|
+
order: f.order,
|
|
443
468
|
name: f.name,
|
|
444
469
|
printers: undefined
|
|
445
470
|
};
|
|
@@ -456,13 +481,13 @@ class YamlService {
|
|
|
456
481
|
return dumpedFloor;
|
|
457
482
|
});
|
|
458
483
|
}
|
|
459
|
-
if (
|
|
460
|
-
const
|
|
461
|
-
dumpedObject.
|
|
484
|
+
if (exportTags) {
|
|
485
|
+
const tags = await this.printerTagService.listTags();
|
|
486
|
+
dumpedObject.tags = tags.map((t)=>{
|
|
462
487
|
return {
|
|
463
|
-
name:
|
|
464
|
-
id:
|
|
465
|
-
printers:
|
|
488
|
+
name: t.name,
|
|
489
|
+
id: t.id,
|
|
490
|
+
printers: t.printers.map((p)=>{
|
|
466
491
|
return {
|
|
467
492
|
printerId: p.printerId
|
|
468
493
|
};
|
|
@@ -471,7 +496,10 @@ class YamlService {
|
|
|
471
496
|
});
|
|
472
497
|
}
|
|
473
498
|
if (exportSettings) {
|
|
474
|
-
dumpedObject.settings =
|
|
499
|
+
dumpedObject.settings = {
|
|
500
|
+
...this.settingsStore.getSettings(),
|
|
501
|
+
...this.settingsStore.getSettingsSensitive()
|
|
502
|
+
};
|
|
475
503
|
}
|
|
476
504
|
if (exportUsers) {
|
|
477
505
|
const users = await this.userService.listUsers(1000);
|
|
@@ -492,6 +520,53 @@ class YamlService {
|
|
|
492
520
|
}
|
|
493
521
|
return (0, _jsyaml.dump)(dumpedObject, {});
|
|
494
522
|
}
|
|
523
|
+
normalizeYamlData(importSpec, databaseTypeSqlite) {
|
|
524
|
+
for (const printer of importSpec.printers){
|
|
525
|
+
if (!printer.name && printer.printerName) {
|
|
526
|
+
printer.name = printer.printerName;
|
|
527
|
+
delete printer.printerName;
|
|
528
|
+
}
|
|
529
|
+
if (printer.settingsAppearance?.name) {
|
|
530
|
+
printer.name = printer.settingsAppearance?.name;
|
|
531
|
+
delete printer.settingsAppearance?.name;
|
|
532
|
+
}
|
|
533
|
+
if (databaseTypeSqlite && typeof printer.id === "string") {
|
|
534
|
+
printer.id = Number.parseInt(printer.id);
|
|
535
|
+
}
|
|
536
|
+
if (![
|
|
537
|
+
_printerapiinterface.OctoprintType,
|
|
538
|
+
_printerapiinterface.MoonrakerType,
|
|
539
|
+
_printerapiinterface.PrusaLinkType,
|
|
540
|
+
_printerapiinterface.BambuType
|
|
541
|
+
].includes(printer.printerType)) {
|
|
542
|
+
printer.printerType = _printerapiinterface.OctoprintType;
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
for (const floor of importSpec.floors){
|
|
546
|
+
if (floor.floor !== undefined && floor.order === undefined) {
|
|
547
|
+
floor.order = floor.floor;
|
|
548
|
+
delete floor.floor;
|
|
549
|
+
}
|
|
550
|
+
if (databaseTypeSqlite) {
|
|
551
|
+
if (typeof floor.id === "string") {
|
|
552
|
+
floor.id = Number.parseInt(floor.id);
|
|
553
|
+
}
|
|
554
|
+
for (const printer of floor.printers){
|
|
555
|
+
if (typeof printer.printerId === "string") {
|
|
556
|
+
printer.printerId = Number.parseInt(printer.printerId);
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
if (importSpec.groups && !importSpec.tags) {
|
|
562
|
+
importSpec.tags = importSpec.groups;
|
|
563
|
+
delete importSpec.groups;
|
|
564
|
+
}
|
|
565
|
+
if (importSpec.config.exportGroups !== undefined && importSpec.config.exportTags === undefined) {
|
|
566
|
+
importSpec.config.exportTags = importSpec.config.exportGroups;
|
|
567
|
+
delete importSpec.config.exportGroups;
|
|
568
|
+
}
|
|
569
|
+
}
|
|
495
570
|
}
|
|
496
571
|
|
|
497
572
|
//# sourceMappingURL=yaml.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/core/yaml.service.ts"],"names":["YamlService","logger","loggerFactory","printerGroupService","printerService","printerCache","floorStore","floorService","userService","roleService","settingsStore","name","importYaml","yamlBuffer","importSpec","load","databaseTypeSqlite","databaseType","exportPrinters","exportFloorGrid","exportSettings","exportUsers","config","wizardCompleted","getWizardSettings","hasSystemData","validateSystemTablesEmpty","printer","printers","printerName","settingsAppearance","id","Number","parseInt","OctoprintType","MoonrakerType","includes","printerType","floor","floors","printerId","importData","validateInput","importPrintersFloorsYamlSchema","length","importPrinterPositionsSchema","log","updateByPropertyPrinters","insertPrinters","analysePrintersUpsert","printerComparisonStrategiesByPriority","updateByPropertyFloors","insertFloors","analyseFloorsUpsert","floorComparisonStrategiesByPriority","updateByNameGroups","insertGroups","analyseUpsertGroups","groups","printerIdMap","newPrinter","state","create","Error","JSON","stringify","updatePrinterSpec","updateId","updatedPrinter","value","originalPrinterId","update","floorIdMap","newFloor","originalFloorId","knownPrinterPositions","floorPosition","knownPrinterId","floorId","push","createdFloor","updateFloorSpec","updatedFloor","knownPrinters","loadStore","group","createdGroup","createGroup","addPrinterToGroup","updateGroupSpec","existingGroup","getGroupWithPrinters","groupId","existingPrinterIds","map","p","wantedTargetPrinterIds","filter","unwantedId","eid","removePrinterFromGroup","nonExistingNewId","settings","importSettings","users","importUsers","server","updateServerSettings","timeout","updateTimeoutSettings","frontend","updateFrontendSettings","printerFileClean","updateFileCleanSettings","wizard","importedWizardVersion","wizardVersion","setWizardCompleted","allRoles","roles","user","roleNames","roleName","some","r","register","username","password","isRootUser","isDemoUser","isVerified","needsPasswordChange","updatePasswordHashUnsafeByUsername","passwordHash","errors","existingSettings","getSettings","Object","keys","existingUsers","listUsers","join","upsertPrinters","comparisonStrategies","existingPrinters","list","names","toLowerCase","urls","printerURL","ids","toString","strategy","comparedName","foundIndex","findIndex","n","upsertFloors","comparisonStrategy","existingFloors","floorLevels","comparedProperty","upsertGroups","existingGroups","listGroups","exportYaml","options","input","exportPrintersFloorsYamlSchema","exportFloors","exportGroups","dumpedObject","version","process","env","npm_package_version","exportedAt","Date","undefined","user_roles","apiKey","getLoginDto","disabledReason","enabled","dateAdded","listCache","f","dumpedFloor","fPrinterId","x","y","g","u","userDto","toDto","createdAt","dump"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/services/core/yaml.service.ts"],"names":["YamlService","logger","loggerFactory","printerTagService","printerService","printerCache","floorStore","floorService","userService","roleService","settingsStore","name","importYaml","yamlBuffer","importSpec","load","databaseTypeSqlite","databaseType","exportPrinters","exportFloorGrid","exportSettings","exportUsers","config","normalizeYamlData","importData","validateInput","importPrintersFloorsYamlSchema","hasSystemData","validateSystemTablesEmpty","settings","log","importSettings","users","length","importUsers","floors","floor","importPrinterPositionsSchema","updateByPropertyPrinters","insertPrinters","analysePrintersUpsert","printers","printerComparisonStrategiesByPriority","updateByPropertyFloors","insertFloors","analyseFloorsUpsert","floorComparisonStrategiesByPriority","updateByNameTags","insertTags","analyseUpsertTags","tags","printerIdMap","newPrinter","state","create","id","Error","JSON","stringify","error","updatePrinterSpec","updateId","printerId","updatedPrinter","value","originalPrinterId","update","floorIdMap","newFloor","originalFloorId","knownPrinterPositions","floorPosition","knownPrinterId","floorId","push","createdFloor","updateFloorSpec","updatedFloor","knownPrinters","loadStore","tag","createdTag","createTag","color","printer","addPrinterToTag","updateTagSpec","existingTag","getPrintersByTag","tagId","existingPrinterIds","map","p","wantedTargetPrinterIds","filter","unwantedId","eid","includes","removePrinterFromTag","nonExistingNewId","server","updateServerSettings","timeout","updateTimeoutSettings","frontend","updateFrontendSettings","wizard","wizardCompleted","importedWizardVersion","wizardVersion","setWizardCompleted","credential","jwtExpiresIn","refreshTokenAttempts","refreshTokenExpiry","slicerApiKey","updateCoreCredentialSettings","getCredentialSettings","setSlicerApiKey","loadSettings","allRoles","roles","user","Number","parseInt","roleNames","roleName","some","r","register","username","password","isRootUser","isDemoUser","isVerified","needsPasswordChange","updatePasswordHashUnsafeByUsername","passwordHash","errors","getWizardSettings","existingSettings","getSettings","Object","keys","existingUsers","listUsers","join","upsertPrinters","comparisonStrategies","existingPrinters","list","names","toLowerCase","urls","printerURL","ids","toString","strategy","comparedName","foundIndex","findIndex","n","upsertFloors","comparisonStrategy","existingFloors","floorLevels","order","comparedProperty","upsertTags","existingTags","listTags","exportYaml","options","input","exportPrintersFloorsYamlSchema","exportFloors","exportTags","dumpedObject","version","process","env","npm_package_version","exportedAt","Date","undefined","user_roles","apiKey","getLoginDto","disabledReason","enabled","printerType","dateAdded","listCache","f","dumpedFloor","fPrinterId","x","y","t","getSettingsSensitive","u","userDto","toDto","createdAt","dump","printerName","settingsAppearance","OctoprintType","MoonrakerType","PrusaLinkType","BambuType","groups","exportGroups"],"mappings":"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"}
|