@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.
- 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 +39 -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 +3 -18
- 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 +248 -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 +0 -68
- package/dist/controllers/settings.controller.js.map +1 -1
- package/dist/controllers/slicer-compat.controller.js +216 -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/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 +208 -153
- 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 +386 -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 +0 -8
- 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 +0 -22
- package/dist/services/validators/settings-service.validation.js.map +1 -1
- package/dist/services/validators/yaml-service.validation.js +7 -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 +1 -11
- 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 +2 -33
- 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 +19 -15
- 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
|
@@ -2,215 +2,130 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
get PrinterThumbnailCache () {
|
|
5
|
+
Object.defineProperty(exports, "PrinterThumbnailCache", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
13
8
|
return PrinterThumbnailCache;
|
|
14
|
-
},
|
|
15
|
-
get gcodeMaxLinesToRead () {
|
|
16
|
-
return gcodeMaxLinesToRead;
|
|
17
9
|
}
|
|
18
10
|
});
|
|
19
11
|
const _keydiffcache = require("../utils/cache/key-diff.cache");
|
|
20
|
-
const _path = require("path");
|
|
21
|
-
const _fsutils = require("../utils/fs.utils");
|
|
22
|
-
const _serverconstants = require("../server.constants");
|
|
23
|
-
const _nodefs = require("node:fs");
|
|
24
|
-
const _fs = require("fs");
|
|
25
|
-
const _gcodeutils = require("../utils/gcode.utils");
|
|
26
|
-
const _promises = require("node:readline/promises");
|
|
27
|
-
const _promises1 = require("node:fs/promises");
|
|
28
|
-
const _node = require("@sentry/node");
|
|
29
|
-
const _eventconstants = require("../constants/event.constants");
|
|
30
|
-
const gcodeMaxLinesToRead = 10000;
|
|
31
12
|
class PrinterThumbnailCache extends _keydiffcache.KeyDiffCache {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
eventEmitter2;
|
|
35
|
-
settingsStore;
|
|
13
|
+
printJobService;
|
|
14
|
+
fileStorageService;
|
|
36
15
|
logger;
|
|
37
|
-
constructor(loggerFactory,
|
|
38
|
-
super(), this.
|
|
16
|
+
constructor(loggerFactory, printJobService, fileStorageService){
|
|
17
|
+
super(), this.printJobService = printJobService, this.fileStorageService = fileStorageService;
|
|
39
18
|
this.logger = loggerFactory(PrinterThumbnailCache.name);
|
|
40
|
-
this.eventEmitter2.on(_eventconstants.printerEvents.printersDeleted, this.handlePrintersDeleted.bind(this));
|
|
41
|
-
}
|
|
42
|
-
async resetCache() {
|
|
43
|
-
const keys = Array.from(this.keyValueStore.keys());
|
|
44
|
-
await this.deleteKeysBatch(keys);
|
|
45
19
|
}
|
|
46
20
|
async loadCache() {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
21
|
+
this.logger.log("Loading printer thumbnail cache from print jobs...");
|
|
22
|
+
try {
|
|
23
|
+
const recentJobs = await this.printJobService.printJobRepository.createQueryBuilder("job").select("job.printerId").addSelect("MAX(job.endedAt)", "maxEndedAt").where("job.fileStorageId IS NOT NULL").andWhere("job.analysisState = :state", {
|
|
24
|
+
state: "ANALYZED"
|
|
25
|
+
}).groupBy("job.printerId").getRawMany();
|
|
26
|
+
let loadedCount = 0;
|
|
27
|
+
for (const result of recentJobs){
|
|
28
|
+
const printerId = result.job_printerId;
|
|
29
|
+
if (printerId) {
|
|
30
|
+
try {
|
|
31
|
+
await this.loadPrinterThumbnail(printerId);
|
|
32
|
+
loadedCount++;
|
|
33
|
+
} catch (error) {
|
|
34
|
+
this.logger.warn(`Failed to load thumbnail for printer ${printerId}: ${error}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
57
37
|
}
|
|
38
|
+
this.logger.log(`Loaded ${loadedCount} printer thumbnails from print jobs`);
|
|
39
|
+
} catch (error) {
|
|
40
|
+
this.logger.error("Failed to load thumbnail cache", error);
|
|
58
41
|
}
|
|
59
42
|
}
|
|
60
|
-
async
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
43
|
+
async loadPrinterThumbnail(printerId) {
|
|
44
|
+
try {
|
|
45
|
+
const job = await this.printJobService.printJobRepository.findOne({
|
|
46
|
+
where: {
|
|
47
|
+
printerId,
|
|
48
|
+
analysisState: "ANALYZED"
|
|
49
|
+
},
|
|
50
|
+
order: {
|
|
51
|
+
endedAt: "DESC",
|
|
52
|
+
startedAt: "DESC",
|
|
53
|
+
createdAt: "DESC"
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
if (!job || !job.fileStorageId) {
|
|
57
|
+
this.logger.debug(`No suitable job found for printer ${printerId}`);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const metadata = await this.fileStorageService.loadMetadata(job.fileStorageId);
|
|
61
|
+
const thumbnails = metadata?._thumbnails || [];
|
|
62
|
+
if (thumbnails.length === 0) {
|
|
63
|
+
this.logger.debug(`No thumbnails found for job ${job.id}`);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const thumbnailBuffer = await this.fileStorageService.getThumbnail(job.fileStorageId, 0);
|
|
67
|
+
if (!thumbnailBuffer) {
|
|
68
|
+
this.logger.warn(`Thumbnail file not found for job ${job.id}`);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const thumbnailBase64 = thumbnailBuffer.toString("base64");
|
|
72
|
+
await this.setPrinterThumbnail(printerId, thumbnailBase64, job.id, job.fileName);
|
|
73
|
+
this.logger.debug(`Loaded thumbnail for printer ${printerId} from job ${job.id}`);
|
|
74
|
+
} catch (error) {
|
|
75
|
+
this.logger.error(`Failed to load thumbnail for printer ${printerId}: ${error}`);
|
|
76
|
+
throw error;
|
|
65
77
|
}
|
|
66
78
|
}
|
|
67
|
-
async setPrinterThumbnail(
|
|
68
|
-
await this.setKeyValue(
|
|
69
|
-
|
|
70
|
-
thumbnailBase64
|
|
79
|
+
async setPrinterThumbnail(printerId, thumbnailBase64, jobId, fileName) {
|
|
80
|
+
await this.setKeyValue(printerId, {
|
|
81
|
+
printerId,
|
|
82
|
+
thumbnailBase64,
|
|
83
|
+
jobId,
|
|
84
|
+
fileName,
|
|
85
|
+
updatedAt: new Date()
|
|
71
86
|
});
|
|
72
87
|
}
|
|
73
|
-
async unsetPrinterThumbnail(
|
|
74
|
-
await this.deleteKeyValue(
|
|
88
|
+
async unsetPrinterThumbnail(printerId) {
|
|
89
|
+
await this.deleteKeyValue(printerId);
|
|
75
90
|
}
|
|
76
|
-
async
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
await this.writeThumbnailFile(printerId, thumbnailData);
|
|
81
|
-
await this.setPrinterThumbnail(printerId, thumbnailData);
|
|
82
|
-
return thumbnailData;
|
|
83
|
-
} catch (e) {
|
|
84
|
-
this.logger.error("Could not parse thumbnail, clearing printer thumbnail", e);
|
|
85
|
-
(0, _node.captureException)(e);
|
|
86
|
-
await this.removeThumbnailFile(printerId);
|
|
87
|
-
await this.unsetPrinterThumbnail(printerId);
|
|
88
|
-
}
|
|
91
|
+
async resetCache() {
|
|
92
|
+
this.logger.log("Resetting printer thumbnail cache");
|
|
93
|
+
this.keyValueStore.clear();
|
|
94
|
+
this.resetDiffs();
|
|
89
95
|
}
|
|
90
|
-
async
|
|
91
|
-
if (!this.settingsStore.isThumbnailSupportEnabled()) return;
|
|
96
|
+
async handleJobCompleted(printerId, jobId) {
|
|
92
97
|
try {
|
|
93
|
-
|
|
94
|
-
await this.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
} catch (e) {
|
|
98
|
-
this.logger.error("Could not parse thumbnail, clearing printer thumbnail", e);
|
|
99
|
-
(0, _node.captureException)(e);
|
|
100
|
-
await this.removeThumbnailFile(printerId);
|
|
101
|
-
await this.unsetPrinterThumbnail(printerId);
|
|
98
|
+
this.logger.log(`Updating thumbnail for printer ${printerId} after job ${jobId} completed`);
|
|
99
|
+
await this.loadPrinterThumbnail(printerId);
|
|
100
|
+
} catch (error) {
|
|
101
|
+
this.logger.error(`Failed to update thumbnail after job completion: ${error}`);
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
|
-
async
|
|
105
|
-
|
|
106
|
-
await this.
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
const baseFolder = (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultPrinterThumbnailsStorage);
|
|
111
|
-
const thumbnailPath = (0, _path.join)(baseFolder, printerId.toString() + ".dat");
|
|
112
|
-
(0, _fsutils.ensureDirExists)(baseFolder);
|
|
113
|
-
await (0, _promises1.writeFile)(thumbnailPath, thumbnailData);
|
|
114
|
-
}
|
|
115
|
-
async removeThumbnailFile(printerId) {
|
|
116
|
-
const baseFolder = (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultPrinterThumbnailsStorage);
|
|
117
|
-
const thumbnailPath = (0, _path.join)(baseFolder, printerId.toString() + ".dat");
|
|
118
|
-
if ((0, _nodefs.existsSync)(thumbnailPath)) {
|
|
119
|
-
(0, _nodefs.rmSync)(thumbnailPath);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
async extractRemoteThumbnailBase64(login, file) {
|
|
123
|
-
const lines = await this.readRemoteGcodeLines(login, file, gcodeMaxLinesToRead);
|
|
124
|
-
if (!lines?.length) {
|
|
125
|
-
throw new Error("No gcode lines were returned.");
|
|
126
|
-
}
|
|
127
|
-
let collecting = false;
|
|
128
|
-
let currentThumbnailBase64 = "";
|
|
129
|
-
let index = 0;
|
|
130
|
-
for (const line of lines){
|
|
131
|
-
if (line.startsWith("; thumbnail begin")) {
|
|
132
|
-
collecting = true;
|
|
133
|
-
currentThumbnailBase64 = "";
|
|
134
|
-
} else if (collecting && line.startsWith("; thumbnail") && line.includes("end")) {
|
|
135
|
-
collecting = false;
|
|
136
|
-
break;
|
|
137
|
-
} else if (collecting) {
|
|
138
|
-
const trim = line.trim().replace(/^;/, "").trim();
|
|
139
|
-
currentThumbnailBase64 += trim;
|
|
140
|
-
}
|
|
141
|
-
if (index > gcodeMaxLinesToRead) {
|
|
142
|
-
throw new Error("Thumbnail not found (within 10000 lines).");
|
|
143
|
-
}
|
|
144
|
-
index++;
|
|
145
|
-
}
|
|
146
|
-
return currentThumbnailBase64;
|
|
147
|
-
}
|
|
148
|
-
async readRemoteGcodeLines(login, file, numberOfLines, fromEnd = false, endCondition = "; thumbnail end") {
|
|
149
|
-
const printer = this.printerApiFactory.getScopedPrinter(login);
|
|
150
|
-
const fileData = await printer.getFile(file);
|
|
151
|
-
const fileSize = fileData.size;
|
|
152
|
-
let lines = [];
|
|
153
|
-
let position = fromEnd ? fileSize : 0;
|
|
154
|
-
let iterationsLeft = 5;
|
|
155
|
-
while(lines.length <= numberOfLines && (fromEnd ? position > 0 : position < fileSize)){
|
|
156
|
-
iterationsLeft--;
|
|
157
|
-
if (iterationsLeft <= 0) {
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
const bytesToRead = Math.min(_gcodeutils.gcodeScanningChunkSize, fromEnd ? position : fileSize - position);
|
|
161
|
-
const start = fromEnd ? position - bytesToRead : position;
|
|
162
|
-
const end = fromEnd ? position : position + bytesToRead;
|
|
163
|
-
position = fromEnd ? start : end;
|
|
164
|
-
const remoteChunk = await printer.getFileChunk(file, start, end);
|
|
165
|
-
const chunkLines = remoteChunk.data.split("\n");
|
|
166
|
-
if (fromEnd) {
|
|
167
|
-
lines = chunkLines.concat(lines);
|
|
168
|
-
} else {
|
|
169
|
-
lines = lines.concat(chunkLines);
|
|
170
|
-
}
|
|
171
|
-
if (endCondition) {
|
|
172
|
-
const endIndex = lines.findIndex((line)=>line.includes(endCondition));
|
|
173
|
-
if (endIndex !== -1) {
|
|
174
|
-
lines = lines.slice(0, endIndex + 1);
|
|
175
|
-
break;
|
|
104
|
+
async handleJobStarted(printerId, jobId) {
|
|
105
|
+
try {
|
|
106
|
+
const job = await this.printJobService.printJobRepository.findOne({
|
|
107
|
+
where: {
|
|
108
|
+
id: jobId
|
|
176
109
|
}
|
|
177
|
-
}
|
|
178
|
-
|
|
110
|
+
});
|
|
111
|
+
if (!job || !job.fileStorageId) {
|
|
112
|
+
return;
|
|
179
113
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
const fileStream = (0, _fs.createReadStream)(gcodePath);
|
|
185
|
-
const rl = (0, _promises.createInterface)({
|
|
186
|
-
input: fileStream,
|
|
187
|
-
crlfDelay: Infinity
|
|
188
|
-
});
|
|
189
|
-
let collecting = false;
|
|
190
|
-
let currentThumbnailBase64 = "";
|
|
191
|
-
let index = 0;
|
|
192
|
-
for await (const line of rl){
|
|
193
|
-
if (line.startsWith("; thumbnail begin")) {
|
|
194
|
-
collecting = true;
|
|
195
|
-
currentThumbnailBase64 = "";
|
|
196
|
-
} else if (collecting && line.startsWith("; thumbnail") && line.includes("end")) {
|
|
197
|
-
collecting = false;
|
|
198
|
-
rl.close();
|
|
199
|
-
break;
|
|
200
|
-
} else if (collecting) {
|
|
201
|
-
const trim = line.trim().replace(/^;/, "").trim();
|
|
202
|
-
currentThumbnailBase64 += trim;
|
|
114
|
+
const metadata = await this.fileStorageService.loadMetadata(job.fileStorageId);
|
|
115
|
+
const thumbnails = metadata?._thumbnails || [];
|
|
116
|
+
if (thumbnails.length === 0) {
|
|
117
|
+
return;
|
|
203
118
|
}
|
|
204
|
-
|
|
205
|
-
|
|
119
|
+
const thumbnailBuffer = await this.fileStorageService.getThumbnail(job.fileStorageId, 0);
|
|
120
|
+
if (!thumbnailBuffer) {
|
|
121
|
+
return;
|
|
206
122
|
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
123
|
+
const thumbnailBase64 = thumbnailBuffer.toString("base64");
|
|
124
|
+
await this.setPrinterThumbnail(printerId, thumbnailBase64, job.id, job.fileName);
|
|
125
|
+
this.logger.debug(`Updated thumbnail for printer ${printerId} from started job ${job.id}`);
|
|
126
|
+
} catch (error) {
|
|
127
|
+
this.logger.error(`Failed to update thumbnail after job start: ${error}`);
|
|
211
128
|
}
|
|
212
|
-
Buffer.from(currentThumbnailBase64, "base64");
|
|
213
|
-
return currentThumbnailBase64;
|
|
214
129
|
}
|
|
215
130
|
}
|
|
216
131
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/state/printer-thumbnail.cache.ts"],"names":["PrinterThumbnailCache","
|
|
1
|
+
{"version":3,"sources":["../../src/state/printer-thumbnail.cache.ts"],"names":["PrinterThumbnailCache","KeyDiffCache","logger","loggerFactory","printJobService","fileStorageService","name","loadCache","log","recentJobs","printJobRepository","createQueryBuilder","select","addSelect","where","andWhere","state","groupBy","getRawMany","loadedCount","result","printerId","job_printerId","loadPrinterThumbnail","error","warn","job","findOne","analysisState","order","endedAt","startedAt","createdAt","fileStorageId","debug","metadata","loadMetadata","thumbnails","_thumbnails","length","id","thumbnailBuffer","getThumbnail","thumbnailBase64","toString","setPrinterThumbnail","fileName","jobId","setKeyValue","updatedAt","Date","unsetPrinterThumbnail","deleteKeyValue","resetCache","keyValueStore","clear","resetDiffs","handleJobCompleted","handleJobStarted"],"mappings":"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"}
|
|
@@ -31,13 +31,10 @@ class SettingsStore {
|
|
|
31
31
|
sentryDiagnosticsEnabled: settings[_serversettingsconstants.serverSettingsKey].sentryDiagnosticsEnabled,
|
|
32
32
|
experimentalMoonrakerSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalMoonrakerSupport,
|
|
33
33
|
experimentalPrusaLinkSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalPrusaLinkSupport,
|
|
34
|
-
experimentalBambuSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalBambuSupport
|
|
35
|
-
experimentalClientSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalClientSupport,
|
|
36
|
-
experimentalThumbnailSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalThumbnailSupport
|
|
34
|
+
experimentalBambuSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalBambuSupport
|
|
37
35
|
},
|
|
38
36
|
[_serversettingsconstants.wizardSettingKey]: settings[_serversettingsconstants.wizardSettingKey],
|
|
39
37
|
[_serversettingsconstants.frontendSettingKey]: settings[_serversettingsconstants.frontendSettingKey],
|
|
40
|
-
[_serversettingsconstants.printerFileCleanSettingKey]: settings[_serversettingsconstants.printerFileCleanSettingKey],
|
|
41
38
|
[_serversettingsconstants.timeoutSettingKey]: settings[_serversettingsconstants.timeoutSettingKey]
|
|
42
39
|
});
|
|
43
40
|
}
|
|
@@ -53,9 +50,7 @@ class SettingsStore {
|
|
|
53
50
|
[_serversettingsconstants.serverSettingsKey]: {
|
|
54
51
|
experimentalMoonrakerSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalMoonrakerSupport,
|
|
55
52
|
experimentalPrusaLinkSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalPrusaLinkSupport,
|
|
56
|
-
experimentalBambuSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalBambuSupport
|
|
57
|
-
experimentalClientSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalClientSupport,
|
|
58
|
-
experimentalThumbnailSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalThumbnailSupport
|
|
53
|
+
experimentalBambuSupport: settings[_serversettingsconstants.serverSettingsKey].experimentalBambuSupport
|
|
59
54
|
}
|
|
60
55
|
});
|
|
61
56
|
}
|
|
@@ -110,22 +105,12 @@ class SettingsStore {
|
|
|
110
105
|
this.throwIfSettingsUnset();
|
|
111
106
|
return this.settings[_serversettingsconstants.serverSettingsKey].registration;
|
|
112
107
|
}
|
|
113
|
-
isThumbnailSupportEnabled() {
|
|
114
|
-
this.throwIfSettingsUnset();
|
|
115
|
-
return this.settings[_serversettingsconstants.serverSettingsKey].experimentalThumbnailSupport;
|
|
116
|
-
}
|
|
117
108
|
getServerSettings() {
|
|
118
109
|
return this.getSettings()[_serversettingsconstants.serverSettingsKey];
|
|
119
110
|
}
|
|
120
111
|
getTimeoutSettings() {
|
|
121
112
|
return this.getSettings()[_serversettingsconstants.timeoutSettingKey];
|
|
122
113
|
}
|
|
123
|
-
getFileCleanSettings() {
|
|
124
|
-
return this.getSettings()[_serversettingsconstants.printerFileCleanSettingKey];
|
|
125
|
-
}
|
|
126
|
-
isPreUploadFileCleanEnabled() {
|
|
127
|
-
return this.getSettings()[_serversettingsconstants.printerFileCleanSettingKey]?.autoRemoveOldFilesBeforeUpload;
|
|
128
|
-
}
|
|
129
114
|
async setWizardCompleted(version) {
|
|
130
115
|
this.settings = await this.settingsService.updateWizardSettings({
|
|
131
116
|
wizardCompleted: true,
|
|
@@ -157,10 +142,6 @@ class SettingsStore {
|
|
|
157
142
|
this.settings = await this.settingsService.updateTimeoutSettings(timeoutSettings);
|
|
158
143
|
return this.getSettings();
|
|
159
144
|
}
|
|
160
|
-
async updateFileCleanSettings(fileClean) {
|
|
161
|
-
this.settings = await this.settingsService.updateFileCleanSettings(fileClean);
|
|
162
|
-
return this.getSettings();
|
|
163
|
-
}
|
|
164
145
|
async updateCredentialSettings(credentialSettings) {
|
|
165
146
|
this.settings = await this.settingsService.updateCredentialSettings(credentialSettings);
|
|
166
147
|
}
|
|
@@ -195,18 +176,6 @@ class SettingsStore {
|
|
|
195
176
|
this.settings = await this.settingsService.updateServerSettings(this.settings[_serversettingsconstants.serverSettingsKey]);
|
|
196
177
|
return this.getSettings();
|
|
197
178
|
}
|
|
198
|
-
async setExperimentalThumbnailSupport(experimentalThumbnailSupport) {
|
|
199
|
-
this.throwIfSettingsUnset();
|
|
200
|
-
this.settings[_serversettingsconstants.serverSettingsKey].experimentalThumbnailSupport = experimentalThumbnailSupport;
|
|
201
|
-
this.settings = await this.settingsService.updateServerSettings(this.settings[_serversettingsconstants.serverSettingsKey]);
|
|
202
|
-
return this.getSettings();
|
|
203
|
-
}
|
|
204
|
-
async setExperimentalClientSupport(experimentalClientSupport) {
|
|
205
|
-
this.throwIfSettingsUnset();
|
|
206
|
-
this.settings[_serversettingsconstants.serverSettingsKey].experimentalClientSupport = experimentalClientSupport;
|
|
207
|
-
this.settings = await this.settingsService.updateServerSettings(this.settings[_serversettingsconstants.serverSettingsKey]);
|
|
208
|
-
return this.getSettings();
|
|
209
|
-
}
|
|
210
179
|
async updateFrontendSettings(frontendSettings) {
|
|
211
180
|
this.settings = await this.settingsService.updateFrontendSettings(frontendSettings);
|
|
212
181
|
return this.getSettings();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/state/settings.store.ts"],"names":["SettingsStore","logger","settings","loggerFactory","settingsService","name","getSettings","throwIfSettingsUnset","Object","freeze","serverSettingsKey","loginRequired","registration","sentryDiagnosticsEnabled","experimentalMoonrakerSupport","experimentalPrusaLinkSupport","experimentalBambuSupport","
|
|
1
|
+
{"version":3,"sources":["../../src/state/settings.store.ts"],"names":["SettingsStore","logger","settings","loggerFactory","settingsService","name","getSettings","throwIfSettingsUnset","Object","freeze","serverSettingsKey","loginRequired","registration","sentryDiagnosticsEnabled","experimentalMoonrakerSupport","experimentalPrusaLinkSupport","experimentalBambuSupport","wizardSettingKey","frontendSettingKey","timeoutSettingKey","getSettingsSensitive","credentialSettingsKey","jwtExpiresIn","refreshTokenAttempts","refreshTokenExpiry","loadSettings","getOrCreate","processSentryEnabled","getCredentialSettings","getAnonymousDiagnosticsEnabled","persistOptionalCredentialSettings","overrideJwtSecret","overrideJwtExpiresIn","credentialSettings","length","updateJwtSecretCredentialSetting","jwtSecret","updateCredentialSettings","Number","parseInt","getWizardState","wizardCompleted","wizardVersion","latestWizardVersion","AppConstants","currentWizardVersion","isWizardCompleted","getWizardSettings","isRegistrationEnabled","getServerSettings","getTimeoutSettings","setWizardCompleted","version","updateWizardSettings","wizardCompletedAt","Date","getLoginRequired","setLoginRequired","updateServerSettings","setRegistrationEnabled","serverSettings","updateTimeoutSettings","timeoutSettings","setRefreshTokenSettings","setSentryDiagnosticsEnabled","setExperimentalMoonrakerSupport","setExperimentalPrusaLinkSupport","setExperimentalBambuSupport","updateFrontendSettings","frontendSettings","InternalServerException","sentryEnabled","log","isTestEnvironment","client","getClient","warn","getOptions","enabled"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/state/socket-io.gateway.ts"],"names":["IO_MESSAGES","SocketIoGateway","socketIoGatewaySessions","Gauge","name","help","socketIoGatewayDisconnects","Counter","socketIoGatewayMessagesSent","socketIoGatewayMessageSentSize","logger","io","loggerFactory","eventEmitter2","settingsStore","userService","configService","attachServer","httpServer","Server","cors","origin","opts","getPassportJwtOptions","value","handshake","auth","token","use","authorize","verifyUserCallback","on","socket","onConnect","bind","debug","socketId","id","emit","socketIoConnectedEvent","inc","dec","send","event","data","payload","JSON","stringify","sizeInBytes","Buffer","byteLength","set","
|
|
1
|
+
{"version":3,"sources":["../../src/state/socket-io.gateway.ts"],"names":["IO_MESSAGES","SocketIoGateway","socketIoGatewaySessions","Gauge","name","help","socketIoGatewayDisconnects","Counter","socketIoGatewayMessagesSent","socketIoGatewayMessageSentSize","logger","io","loggerFactory","eventEmitter2","settingsStore","userService","configService","attachServer","httpServer","Server","cors","origin","opts","getPassportJwtOptions","value","handshake","auth","token","use","authorize","verifyUserCallback","on","socket","onConnect","bind","debug","socketId","id","emit","socketIoConnectedEvent","inc","dec","send","event","data","payload","JSON","stringify","sizeInBytes","Buffer","byteLength","set","Update"],"mappings":";;;;;;;;;;;QAsFaA;eAAAA;;QArDAC;eAAAA;;;0BAjCkB;gCACQ;0BAMmB;oCAGhC;4BACK;AAE/B,MAAMC,0BAA0B,IAAIC,iBAAK,CAAC;IACxCC,MAAM;IACNC,MAAM;AACR;AAEA,MAAMC,6BAA6B,IAAIC,mBAAO,CAAC;IAC7CH,MAAM;IACNC,MAAM;AACR;AAEA,MAAMG,8BAA8B,IAAID,mBAAO,CAAC;IAC9CH,MAAM;IACNC,MAAM;AACR;AAEA,MAAMI,iCAAiC,IAAIN,iBAAK,CAAC;IAC/CC,MAAM;IACNC,MAAM;AACR;AAEO,MAAMJ;;;;;IACXS,OAAsB;IAEtBC,GAAW;IAEX,YACEC,aAA6B,EAC7B,AAAiBC,aAA4B,EAC7C,AAAiBC,aAA4B,EAC7C,AAAiBC,WAAyB,EAC1C,AAAiBC,aAA6B,CAC9C;aAJiBH,gBAAAA;aACAC,gBAAAA;aACAC,cAAAA;aACAC,gBAAAA;QAEjB,IAAI,CAACN,MAAM,GAAGE,cAAcX,gBAAgBG,IAAI;IAClD;IAEAa,aAAaC,UAAsB,EAAE;QACnC,IAAI,CAACP,EAAE,GAAG,IAAIQ,gBAAM,CAACD,YAAY;YAAEE,MAAM;gBAAEC,QAAQ;YAAI;QAAE;QACzD,MAAMC,OAAOC,IAAAA,+BAAqB,EAChC,IAAI,CAACT,aAAa,EAClB,IAAI,CAACE,aAAa,EAClB,CAACQ,QAAkBA,MAAMC,SAAS,CAACC,IAAI,CAACC,KAAK;QAE/C,IAAI,CAAChB,EAAE,CAACiB,GAAG,CAACC,IAAAA,6BAAS,EAAC,IAAI,CAACf,aAAa,EAAEQ,MAAM,IAAI,CAACZ,MAAM,EAAEoB,IAAAA,4BAAkB,EAAC,IAAI,CAACf,WAAW;QAChG,IAAI,CAACJ,EAAE,CAACoB,EAAE,CAAC,cAAc,CAACC,SAAW,IAAI,CAACC,SAAS,CAACC,IAAI,CAAC,IAAI,EAAEF;IACjE;IAEAC,UAAUD,MAAc,EAAE;QACxB,IAAI,CAACtB,MAAM,CAACyB,KAAK,CAAC,6BAA6B;YAAEC,UAAUJ,OAAOK,EAAE;QAAC;QACrE,IAAI,CAACxB,aAAa,CAACyB,IAAI,CAACC,sCAAsB,EAAEP,OAAOK,EAAE;QACzDnC,wBAAwBsC,GAAG;QAE3BR,OAAOD,EAAE,CAAC,cAAc;YACtB,IAAI,CAACrB,MAAM,CAACyB,KAAK,CAAC,gCAAgC;gBAAEC,UAAUJ,OAAOK,EAAE;YAAC;YACxEnC,wBAAwBuC,GAAG,CAAC;YAC5BnC,2BAA2BkC,GAAG;QAChC;IACF;IAEAE,KAAQC,KAAa,EAAEC,IAAO,EAAE;QAC9B,IAAI,CAAC,IAAI,CAACjC,EAAE,EAAE;YACZ,IAAI,CAACD,MAAM,CAACyB,KAAK,CAAC,CAAC,gBAAgB,EAAEQ,MAAM,wCAAwC,CAAC;YACpF;QACF;QAEA,IAAI,CAAChC,EAAE,CAAC2B,IAAI,CAACK,OAAOC;QACpBpC,4BAA4BgC,GAAG;QAE/B,MAAMK,UAAUC,KAAKC,SAAS,CAACH;QAC/B,MAAMI,cAAcC,OAAOC,UAAU,CAACL;QACtCpC,+BAA+B0C,GAAG,CAACH;IACrC;AACF;AAEO,MAAMhD,cAAc;IACzBoD,QAAQ;AACV"}
|
package/dist/tasks/boot.task.js
CHANGED
|
@@ -16,7 +16,6 @@ class BootTask {
|
|
|
16
16
|
settingsStore;
|
|
17
17
|
multerService;
|
|
18
18
|
printerSocketStore;
|
|
19
|
-
printerFilesStore;
|
|
20
19
|
permissionService;
|
|
21
20
|
roleService;
|
|
22
21
|
userService;
|
|
@@ -24,13 +23,14 @@ class BootTask {
|
|
|
24
23
|
configService;
|
|
25
24
|
typeormService;
|
|
26
25
|
printerThumbnailCache;
|
|
26
|
+
printFileDownloaderService;
|
|
27
|
+
fileStorageService;
|
|
27
28
|
logger;
|
|
28
|
-
constructor(loggerFactory, taskManagerService, settingsStore, multerService, printerSocketStore,
|
|
29
|
+
constructor(loggerFactory, taskManagerService, settingsStore, multerService, printerSocketStore, permissionService, roleService, userService, floorStore, configService, typeormService, printerThumbnailCache, printFileDownloaderService, fileStorageService){
|
|
29
30
|
this.taskManagerService = taskManagerService;
|
|
30
31
|
this.settingsStore = settingsStore;
|
|
31
32
|
this.multerService = multerService;
|
|
32
33
|
this.printerSocketStore = printerSocketStore;
|
|
33
|
-
this.printerFilesStore = printerFilesStore;
|
|
34
34
|
this.permissionService = permissionService;
|
|
35
35
|
this.roleService = roleService;
|
|
36
36
|
this.userService = userService;
|
|
@@ -38,6 +38,8 @@ class BootTask {
|
|
|
38
38
|
this.configService = configService;
|
|
39
39
|
this.typeormService = typeormService;
|
|
40
40
|
this.printerThumbnailCache = printerThumbnailCache;
|
|
41
|
+
this.printFileDownloaderService = printFileDownloaderService;
|
|
42
|
+
this.fileStorageService = fileStorageService;
|
|
41
43
|
this.logger = loggerFactory(BootTask.name);
|
|
42
44
|
}
|
|
43
45
|
async runOnce() {
|
|
@@ -47,6 +49,8 @@ class BootTask {
|
|
|
47
49
|
}
|
|
48
50
|
async run() {
|
|
49
51
|
await this.typeormService.createConnection();
|
|
52
|
+
this.logger.log("Ensuring file storage directories exist");
|
|
53
|
+
await this.fileStorageService.ensureStorageDirectories();
|
|
50
54
|
this.logger.log("Loading and synchronizing Server Settings");
|
|
51
55
|
await this.settingsStore.loadSettings();
|
|
52
56
|
this.logger.log("Synchronizing user permission and roles definition");
|
|
@@ -78,8 +82,6 @@ class BootTask {
|
|
|
78
82
|
this.multerService.clearUploadsFolder();
|
|
79
83
|
this.logger.log("Loading printer sockets");
|
|
80
84
|
await this.printerSocketStore.loadPrinterSockets();
|
|
81
|
-
this.logger.log("Loading files store");
|
|
82
|
-
await this.printerFilesStore.loadFilesStore();
|
|
83
85
|
this.logger.log("Loading floor store");
|
|
84
86
|
await this.floorStore.loadStore();
|
|
85
87
|
this.logger.log("Loading printer thumbnail cache");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tasks/boot.task.ts"],"names":["BootTask","logger","loggerFactory","taskManagerService","settingsStore","multerService","printerSocketStore","
|
|
1
|
+
{"version":3,"sources":["../../src/tasks/boot.task.ts"],"names":["BootTask","logger","loggerFactory","taskManagerService","settingsStore","multerService","printerSocketStore","permissionService","roleService","userService","floorStore","configService","typeormService","printerThumbnailCache","printFileDownloaderService","fileStorageService","name","runOnce","registerJobOrTask","ServerTasks","SERVER_BOOT_TASK","log","run","createConnection","ensureStorageDirectories","loadSettings","syncPermissions","syncRoles","isDemoMode","warn","AppConstants","OVERRIDE_IS_DEMO_MODE","createOrUpdateDemoAccount","setLoginRequired","setRegistrationEnabled","loginRequired","get","OVERRIDE_LOGIN_REQUIRED","registrationEnabled","OVERRIDE_REGISTRATION_ENABLED","overrideJwtSecret","OVERRIDE_JWT_SECRET","overrideJwtExpiresIn","OVERRIDE_JWT_EXPIRES_IN","persistOptionalCredentialSettings","clearUploadsFolder","loadPrinterSockets","loadStore","loadCache","length","getAllValues","process","env","SAFEMODE_ENABLED","BOOT_TASKS","forEach","task","disableJob","DITokens","bootTask","demoUsername","OVERRIDE_DEMO_USERNAME","DEFAULT_DEMO_USERNAME","demoPassword","OVERRIDE_DEMO_PASSWORD","DEFAULT_DEMO_PASSWORD","demoRole","OVERRIDE_DEMO_ROLE","DEFAULT_DEMO_ROLE","demoUserId","getDemoUserId","register","username","password","isDemoUser","isVerified","isRootUser","needsPasswordChange","roles","setVerifiedById","setIsRootUserById","updatePasswordUnsafeByUsername","setUserRoles"],"mappings":"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"}
|