@fdm-monster/server 1.9.4 → 2.0.0-rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.template +0 -4
- package/.yarn/install-state.gz +0 -0
- package/CONTRIBUTING.md +4 -4
- package/README.md +4 -4
- package/RELEASE_NOTES.MD +13 -0
- package/biome.json +8 -5
- package/dist/consoles/mock-bambu.server.js +17 -16
- package/dist/consoles/mock-bambu.server.js.map +1 -1
- package/dist/consoles/mock-octoprint.server.js.map +1 -1
- package/dist/consoles/mock-prusalink.server.js +6 -6
- package/dist/consoles/mock-prusalink.server.js.map +1 -1
- package/dist/consoles/utils/api-messages.js.map +1 -1
- package/dist/constants/authorization.constants.js +32 -25
- package/dist/constants/authorization.constants.js.map +1 -1
- package/dist/constants/event.constants.js.map +1 -1
- package/dist/constants/server-settings.constants.js +0 -1
- package/dist/constants/server-settings.constants.js.map +1 -1
- package/dist/container.js +30 -54
- package/dist/container.js.map +1 -1
- package/dist/container.tokens.js +0 -1
- package/dist/container.tokens.js.map +1 -1
- package/dist/controllers/auth.controller.js +1 -1
- package/dist/controllers/auth.controller.js.map +1 -1
- package/dist/controllers/batch-call.controller.js +8 -11
- package/dist/controllers/batch-call.controller.js.map +1 -1
- package/dist/controllers/custom-gcode.controller.js +2 -5
- package/dist/controllers/custom-gcode.controller.js.map +1 -1
- package/dist/controllers/first-time-setup.controller.js +4 -4
- package/dist/controllers/first-time-setup.controller.js.map +1 -1
- package/dist/controllers/metrics.controller.js.map +1 -1
- package/dist/controllers/printer-files.controller.js +5 -3
- package/dist/controllers/printer-files.controller.js.map +1 -1
- package/dist/controllers/printer.controller.js +6 -7
- package/dist/controllers/printer.controller.js.map +1 -1
- package/dist/controllers/server-public.controller.js +5 -13
- package/dist/controllers/server-public.controller.js.map +1 -1
- package/dist/controllers/user.controller.js +8 -12
- package/dist/controllers/user.controller.js.map +1 -1
- package/dist/controllers/validation/batch-controller.validation.js +13 -13
- package/dist/controllers/validation/batch-controller.validation.js.map +1 -1
- package/dist/controllers/validation/generic.validation.js +4 -8
- package/dist/controllers/validation/generic.validation.js.map +1 -1
- package/dist/controllers/validation/printer-files-controller.validation.js +2 -2
- package/dist/controllers/validation/user-controller.validation.js +14 -9
- package/dist/controllers/validation/user-controller.validation.js.map +1 -1
- package/dist/data-source.js +6 -5
- package/dist/data-source.js.map +1 -1
- package/dist/entities/index.js +0 -4
- package/dist/entities/index.js.map +1 -1
- package/dist/entities/print-completion.entity.js.map +1 -1
- package/dist/entities/settings.entity.js.map +1 -1
- package/dist/handlers/logging/file-logging.transport.js.map +1 -1
- package/dist/handlers/logging/static.logger.js.map +1 -1
- package/dist/middleware/authenticate.js +4 -4
- package/dist/middleware/authenticate.js.map +1 -1
- package/dist/middleware/database.js +1 -1
- package/dist/middleware/global.middleware.js +4 -12
- package/dist/middleware/global.middleware.js.map +1 -1
- package/dist/middleware/param-converter.middleware.js +5 -13
- package/dist/middleware/param-converter.middleware.js.map +1 -1
- package/dist/middleware/passport.js +2 -2
- package/dist/middleware/passport.js.map +1 -1
- package/dist/middleware/printer-resolver.js.map +1 -1
- package/dist/middleware/printer.js +3 -2
- package/dist/middleware/printer.js.map +1 -1
- package/dist/middleware/socketio.middleware.js.map +1 -1
- package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js +1 -1
- package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js.map +1 -1
- package/dist/migrations/1766576698569-DropPermissions.js +28 -0
- package/dist/migrations/1766576698569-DropPermissions.js.map +1 -0
- package/dist/server.constants.js +1 -9
- package/dist/server.constants.js.map +1 -1
- package/dist/server.core.js +3 -7
- package/dist/server.core.js.map +1 -1
- package/dist/server.env.js +4 -49
- package/dist/server.env.js.map +1 -1
- package/dist/server.host.js +3 -13
- package/dist/server.host.js.map +1 -1
- package/dist/services/authentication/auth.service.js.map +1 -1
- package/dist/services/authentication/jwt.service.js.map +1 -1
- package/dist/services/bambu/bambu-ftp.adapter.js +2 -2
- package/dist/services/bambu/bambu-ftp.adapter.js.map +1 -1
- package/dist/services/bambu/bambu-mqtt.adapter.js +1 -1
- package/dist/services/bambu/bambu-mqtt.adapter.js.map +1 -1
- package/dist/services/bambu/bambu.client.js.map +1 -1
- package/dist/services/bambu.api.js +11 -0
- package/dist/services/bambu.api.js.map +1 -1
- package/dist/services/core/batch-call.service.js.map +1 -1
- package/dist/services/core/multer.service.js.map +1 -1
- package/dist/services/core/yaml.service.js +20 -43
- package/dist/services/core/yaml.service.js.map +1 -1
- package/dist/services/interfaces/camera-stream.dto.js +2 -2
- package/dist/services/interfaces/camera-stream.dto.js.map +1 -1
- package/dist/services/interfaces/custom-gcode.dto.js.map +1 -1
- package/dist/services/interfaces/floor.dto.js.map +1 -1
- package/dist/services/interfaces/print-completion.dto.js.map +1 -1
- package/dist/services/interfaces/printer-group.dto.js.map +1 -1
- package/dist/services/interfaces/printer.dto.js +2 -2
- package/dist/services/interfaces/printer.dto.js.map +1 -1
- package/dist/services/interfaces/refresh-token.dto.js.map +1 -1
- package/dist/services/interfaces/role.dto.js.map +1 -1
- package/dist/services/interfaces/settings.dto.js.map +1 -1
- package/dist/services/interfaces/user.dto.js.map +1 -1
- package/dist/services/moonraker/constants/moonraker-event.dto.js.map +1 -1
- package/dist/services/moonraker/moonraker-websocket.adapter.js.map +1 -1
- package/dist/services/moonraker/moonraker.client.js.map +1 -1
- package/dist/services/moonraker.api.js +3 -0
- package/dist/services/moonraker.api.js.map +1 -1
- package/dist/services/octoprint/dto/octoprint-event.dto.js.map +1 -1
- package/dist/services/octoprint/octoprint-websocket.adapter.js.map +1 -1
- package/dist/services/octoprint.api.js +3 -0
- package/dist/services/octoprint.api.js.map +1 -1
- package/dist/services/orm/base.service.js.map +1 -1
- package/dist/services/orm/camera-stream.service.js.map +1 -1
- package/dist/services/orm/custom-gcode.service.js.map +1 -1
- package/dist/services/orm/floor-position.service.js.map +1 -1
- package/dist/services/orm/floor.service.js +4 -4
- package/dist/services/orm/floor.service.js.map +1 -1
- package/dist/services/orm/permission.service.js +3 -54
- package/dist/services/orm/permission.service.js.map +1 -1
- package/dist/services/orm/print-completion.service.js +2 -2
- package/dist/services/orm/print-completion.service.js.map +1 -1
- package/dist/services/orm/print-completion.shared.js.map +1 -0
- package/dist/services/orm/printer-group.service.js.map +1 -1
- package/dist/services/orm/printer.service.js.map +1 -1
- package/dist/services/orm/refresh-token.service.js.map +1 -1
- package/dist/services/orm/role.service.js +25 -39
- package/dist/services/orm/role.service.js.map +1 -1
- package/dist/services/orm/settings.service.js +4 -7
- package/dist/services/orm/settings.service.js.map +1 -1
- package/dist/services/orm/user.service.js +17 -13
- package/dist/services/orm/user.service.js.map +1 -1
- package/dist/services/printer-api.factory.js +1 -1
- package/dist/services/printer-api.factory.js.map +1 -1
- package/dist/services/printer-api.interface.js.map +1 -1
- package/dist/services/prusa-link/constants/prusalink-event.dto.js.map +1 -1
- package/dist/services/prusa-link/prusa-link-http-polling.adapter.js.map +1 -1
- package/dist/services/prusa-link/prusa-link.api.js +4 -1
- package/dist/services/prusa-link/prusa-link.api.js.map +1 -1
- package/dist/services/prusa-link/utils/prusa-link-http-client.builder.js.map +1 -1
- package/dist/services/validators/floor-service.validation.js +16 -22
- package/dist/services/validators/floor-service.validation.js.map +1 -1
- package/dist/services/validators/user-service.validation.js +15 -10
- package/dist/services/validators/user-service.validation.js.map +1 -1
- package/dist/services/validators/yaml-service.validation.js +1 -1
- package/dist/shared/runtime-settings.migration.js.map +1 -1
- package/dist/shared/websocket-rpc-extended.adapter.js +13 -4
- package/dist/shared/websocket-rpc-extended.adapter.js.map +1 -1
- package/dist/shared/websocket.adapter.js.map +1 -1
- package/dist/state/file-upload-tracker.cache.js.map +1 -1
- package/dist/state/file.cache.js +6 -6
- package/dist/state/file.cache.js.map +1 -1
- package/dist/state/floor.store.js +1 -1
- package/dist/state/floor.store.js.map +1 -1
- package/dist/state/printer-events.cache.js +1 -1
- package/dist/state/printer-events.cache.js.map +1 -1
- package/dist/state/printer-files.store.js.map +1 -1
- package/dist/state/printer-socket.store.js +25 -20
- package/dist/state/printer-socket.store.js.map +1 -1
- package/dist/state/printer-thumbnail.cache.js +13 -18
- package/dist/state/printer-thumbnail.cache.js.map +1 -1
- package/dist/state/printer.cache.js +3 -13
- package/dist/state/printer.cache.js.map +1 -1
- package/dist/state/settings.store.js +2 -9
- package/dist/state/settings.store.js.map +1 -1
- package/dist/state/test-printer-socket.store.js +6 -3
- package/dist/state/test-printer-socket.store.js.map +1 -1
- package/dist/tasks/boot.task.js +5 -87
- package/dist/tasks/boot.task.js.map +1 -1
- package/dist/tasks/print-completion.socketio.task.js.map +1 -1
- package/dist/tasks/printer-file-clean.task.js.map +1 -1
- package/dist/utils/cache/key-diff.cache.js +20 -61
- package/dist/utils/cache/key-diff.cache.js.map +1 -1
- package/package.json +8 -18
- package/dist/entities/permission.entity.js +0 -37
- package/dist/entities/permission.entity.js.map +0 -1
- package/dist/models/Auth/Permission.js +0 -20
- package/dist/models/Auth/Permission.js.map +0 -1
- package/dist/models/Auth/RefreshToken.js +0 -41
- package/dist/models/Auth/RefreshToken.js.map +0 -1
- package/dist/models/Auth/Role.js +0 -20
- package/dist/models/Auth/Role.js.map +0 -1
- package/dist/models/Auth/User.js +0 -49
- package/dist/models/Auth/User.js.map +0 -1
- package/dist/models/CameraStream.js +0 -49
- package/dist/models/CameraStream.js.map +0 -1
- package/dist/models/CustomGcode.js +0 -28
- package/dist/models/CustomGcode.js.map +0 -1
- package/dist/models/Floor.js +0 -33
- package/dist/models/Floor.js.map +0 -1
- package/dist/models/FloorPrinter.js +0 -38
- package/dist/models/FloorPrinter.js.map +0 -1
- package/dist/models/PrintCompletion.js +0 -40
- package/dist/models/PrintCompletion.js.map +0 -1
- package/dist/models/Printer.js +0 -78
- package/dist/models/Printer.js.map +0 -1
- package/dist/models/Settings.js +0 -150
- package/dist/models/Settings.js.map +0 -1
- package/dist/models/index.js +0 -54
- package/dist/models/index.js.map +0 -1
- package/dist/mongo-migrations/20210713120034-printers-settingsapperance-apikey.js +0 -45
- package/dist/mongo-migrations/20210713120034-printers-settingsapperance-apikey.js.map +0 -1
- package/dist/mongo-migrations/20210907173950-printers-enabled.js +0 -35
- package/dist/mongo-migrations/20210907173950-printers-enabled.js.map +0 -1
- package/dist/mongo-migrations/20211029110742-user-password-passwordhash.js +0 -35
- package/dist/mongo-migrations/20211029110742-user-password-passwordhash.js.map +0 -1
- package/dist/mongo-migrations/20230414141005-floor-remove-groupinfloor.js +0 -60
- package/dist/mongo-migrations/20230414141005-floor-remove-groupinfloor.js.map +0 -1
- package/dist/mongo-migrations/20230427202911-printer-remove-sortindex.js +0 -30
- package/dist/mongo-migrations/20230427202911-printer-remove-sortindex.js.map +0 -1
- package/dist/mongo-migrations/20230716065316-user-remove-name.js +0 -30
- package/dist/mongo-migrations/20230716065316-user-remove-name.js.map +0 -1
- package/dist/mongo-migrations/20231111081809-printer-flatten-name.js +0 -35
- package/dist/mongo-migrations/20231111081809-printer-flatten-name.js.map +0 -1
- package/dist/mongo-migrations/20231111082521-printer-remove-settingsappearance.js +0 -41
- package/dist/mongo-migrations/20231111082521-printer-remove-settingsappearance.js.map +0 -1
- package/dist/mongo-migrations/20231202183902-printer-files-simpler.js +0 -41
- package/dist/mongo-migrations/20231202183902-printer-files-simpler.js.map +0 -1
- package/dist/services/interfaces/permission.dto.js +0 -16
- package/dist/services/interfaces/permission.dto.js.map +0 -1
- package/dist/services/mongoose/camera-stream.service.js +0 -67
- package/dist/services/mongoose/camera-stream.service.js.map +0 -1
- package/dist/services/mongoose/custom-gcode.service.js +0 -50
- package/dist/services/mongoose/custom-gcode.service.js.map +0 -1
- package/dist/services/mongoose/floor.service.js +0 -139
- package/dist/services/mongoose/floor.service.js.map +0 -1
- package/dist/services/mongoose/permission.service.js +0 -73
- package/dist/services/mongoose/permission.service.js.map +0 -1
- package/dist/services/mongoose/print-completion.service.js +0 -134
- package/dist/services/mongoose/print-completion.service.js.map +0 -1
- package/dist/services/mongoose/print-completion.shared.js.map +0 -1
- package/dist/services/mongoose/printer.service.js +0 -216
- package/dist/services/mongoose/printer.service.js.map +0 -1
- package/dist/services/mongoose/refresh-token.service.js +0 -104
- package/dist/services/mongoose/refresh-token.service.js.map +0 -1
- package/dist/services/mongoose/role.service.js +0 -132
- package/dist/services/mongoose/role.service.js.map +0 -1
- package/dist/services/mongoose/settings.service.js +0 -124
- package/dist/services/mongoose/settings.service.js.map +0 -1
- package/dist/services/mongoose/user.service.js +0 -180
- package/dist/services/mongoose/user.service.js.map +0 -1
- package/dist/services/validators/camera-service.validation.js +0 -19
- package/dist/services/validators/camera-service.validation.js.map +0 -1
- package/dist/services/validators/print-completion-service.validation.js +0 -33
- package/dist/services/validators/print-completion-service.validation.js.map +0 -1
- package/dist/shared.constants.js +0 -15
- package/dist/shared.constants.js.map +0 -1
- package/migrate-mongo-config.js +0 -45
- /package/dist/services/{mongoose → orm}/print-completion.shared.js +0 -0
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "PrinterService", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return PrinterService;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _models = require("../../models");
|
|
12
|
-
const _runtimeexceptions = require("../../exceptions/runtime.exceptions");
|
|
13
|
-
const _validators = require("../../handlers/validators");
|
|
14
|
-
const _printerservicevalidation = require("../validators/printer-service.validation");
|
|
15
|
-
const _eventconstants = require("../../constants/event.constants");
|
|
16
|
-
const _normalizeurl = require("../../utils/normalize-url");
|
|
17
|
-
const _urlutils = require("../../utils/url.utils");
|
|
18
|
-
class PrinterService {
|
|
19
|
-
eventEmitter2;
|
|
20
|
-
logger;
|
|
21
|
-
constructor(eventEmitter2, loggerFactory){
|
|
22
|
-
this.eventEmitter2 = eventEmitter2;
|
|
23
|
-
this.logger = loggerFactory(PrinterService.name);
|
|
24
|
-
}
|
|
25
|
-
toDto(entity) {
|
|
26
|
-
return {
|
|
27
|
-
id: entity.id,
|
|
28
|
-
name: entity.name,
|
|
29
|
-
enabled: entity.enabled,
|
|
30
|
-
disabledReason: entity.disabledReason,
|
|
31
|
-
dateAdded: entity.dateAdded,
|
|
32
|
-
apiKey: entity.apiKey,
|
|
33
|
-
username: entity.username,
|
|
34
|
-
password: entity.password,
|
|
35
|
-
printerURL: entity.printerURL,
|
|
36
|
-
printerType: entity.printerType
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
async list() {
|
|
40
|
-
return _models.Printer.find({}, null, {
|
|
41
|
-
sort: {
|
|
42
|
-
dateAdded: 1
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
async get(printerId) {
|
|
47
|
-
const filter = {
|
|
48
|
-
_id: printerId
|
|
49
|
-
};
|
|
50
|
-
const printer = await _models.Printer.findOne(filter);
|
|
51
|
-
if (!printer) {
|
|
52
|
-
throw new _runtimeexceptions.NotFoundException(`The printer with provided id was not found`);
|
|
53
|
-
}
|
|
54
|
-
return printer;
|
|
55
|
-
}
|
|
56
|
-
async create(newPrinter, emitEvent = true) {
|
|
57
|
-
if (!newPrinter) throw new Error("Missing printer to create");
|
|
58
|
-
const mergedPrinter = await this.validateAndDefault(newPrinter);
|
|
59
|
-
mergedPrinter.dateAdded = Date.now();
|
|
60
|
-
const printer = await _models.Printer.create(mergedPrinter);
|
|
61
|
-
if (emitEvent) {
|
|
62
|
-
this.eventEmitter2.emit(_eventconstants.printerEvents.printerCreated, {
|
|
63
|
-
printer
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
return printer;
|
|
67
|
-
}
|
|
68
|
-
async update(printerId, updateData) {
|
|
69
|
-
const printer = await this.get(printerId);
|
|
70
|
-
updateData.printerURL = (0, _normalizeurl.normalizeUrl)(updateData.printerURL, {
|
|
71
|
-
defaultProtocol: _urlutils.defaultHttpProtocol
|
|
72
|
-
});
|
|
73
|
-
const { printerURL, apiKey, username, password, enabled, name, printerType } = await (0, _validators.validateInput)(updateData, _printerservicevalidation.createPrinterSchema);
|
|
74
|
-
printer.printerURL = printerURL;
|
|
75
|
-
printer.apiKey = apiKey;
|
|
76
|
-
printer.username = username;
|
|
77
|
-
printer.password = password;
|
|
78
|
-
if (enabled !== undefined) {
|
|
79
|
-
printer.enabled = enabled;
|
|
80
|
-
}
|
|
81
|
-
printer.name = name;
|
|
82
|
-
printer.printerType = printerType;
|
|
83
|
-
await printer.save();
|
|
84
|
-
this.eventEmitter2.emit(_eventconstants.printerEvents.printerUpdated, {
|
|
85
|
-
printer
|
|
86
|
-
});
|
|
87
|
-
return printer;
|
|
88
|
-
}
|
|
89
|
-
async deleteMany(printerIds, emitEvent = true) {
|
|
90
|
-
await _models.Printer.deleteMany({
|
|
91
|
-
_id: {
|
|
92
|
-
$in: printerIds
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
if (emitEvent) {
|
|
96
|
-
this.eventEmitter2.emit(_eventconstants.printerEvents.printersDeleted, {
|
|
97
|
-
printerIds
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
async delete(printerId, emitEvent = true) {
|
|
102
|
-
const filter = {
|
|
103
|
-
_id: printerId
|
|
104
|
-
};
|
|
105
|
-
await _models.Printer.findOneAndDelete(filter);
|
|
106
|
-
if (emitEvent) {
|
|
107
|
-
this.eventEmitter2.emit(_eventconstants.printerEvents.printersDeleted, {
|
|
108
|
-
printerIds: [
|
|
109
|
-
printerId
|
|
110
|
-
]
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
async batchImport(printers) {
|
|
115
|
-
if (!printers?.length) return [];
|
|
116
|
-
for (let printer of printers){
|
|
117
|
-
await this.validateAndDefault(printer);
|
|
118
|
-
}
|
|
119
|
-
this.logger.log("Validation passed");
|
|
120
|
-
const newPrinters = [];
|
|
121
|
-
for (let printer of printers){
|
|
122
|
-
const createdPrinter = await this.create(printer, false);
|
|
123
|
-
newPrinters.push(createdPrinter);
|
|
124
|
-
}
|
|
125
|
-
this.logger.log("Batch create succeeded");
|
|
126
|
-
this.eventEmitter2.emit(_eventconstants.printerEvents.batchPrinterCreated, {
|
|
127
|
-
printers: newPrinters
|
|
128
|
-
});
|
|
129
|
-
return newPrinters;
|
|
130
|
-
}
|
|
131
|
-
async updateFlowRate(printerId, flowRate) {
|
|
132
|
-
const update = {
|
|
133
|
-
flowRate
|
|
134
|
-
};
|
|
135
|
-
await this.get(printerId);
|
|
136
|
-
const printer = await _models.Printer.findByIdAndUpdate(printerId, update, {
|
|
137
|
-
new: true,
|
|
138
|
-
useFindAndModify: false
|
|
139
|
-
});
|
|
140
|
-
if (printer) {
|
|
141
|
-
this.eventEmitter2.emit(_eventconstants.printerEvents.printerUpdated, {
|
|
142
|
-
printer
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
return printer;
|
|
146
|
-
}
|
|
147
|
-
async updateFeedRate(printerId, feedRate) {
|
|
148
|
-
const update = {
|
|
149
|
-
feedRate
|
|
150
|
-
};
|
|
151
|
-
await this.get(printerId);
|
|
152
|
-
const printer = await _models.Printer.findByIdAndUpdate(printerId, update, {
|
|
153
|
-
new: true,
|
|
154
|
-
useFindAndModify: false
|
|
155
|
-
});
|
|
156
|
-
if (printer) {
|
|
157
|
-
this.eventEmitter2.emit(_eventconstants.printerEvents.printerUpdated, {
|
|
158
|
-
printer
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
return printer;
|
|
162
|
-
}
|
|
163
|
-
async updateEnabled(printerId, enabled) {
|
|
164
|
-
const update = enabled ? {
|
|
165
|
-
enabled,
|
|
166
|
-
disabledReason: null
|
|
167
|
-
} : {
|
|
168
|
-
enabled
|
|
169
|
-
};
|
|
170
|
-
await (0, _validators.validateInput)(update, _printerservicevalidation.updatePrinterEnabledSchema);
|
|
171
|
-
await this.get(printerId);
|
|
172
|
-
const printer = await _models.Printer.findByIdAndUpdate(printerId, update, {
|
|
173
|
-
new: true,
|
|
174
|
-
useFindAndModify: false
|
|
175
|
-
});
|
|
176
|
-
if (printer) {
|
|
177
|
-
this.eventEmitter2.emit(_eventconstants.printerEvents.printerUpdated, {
|
|
178
|
-
printer
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
return printer;
|
|
182
|
-
}
|
|
183
|
-
async updateDisabledReason(printerId, disabledReason) {
|
|
184
|
-
const enabled = !disabledReason?.length;
|
|
185
|
-
const update = {
|
|
186
|
-
disabledReason,
|
|
187
|
-
enabled
|
|
188
|
-
};
|
|
189
|
-
await (0, _validators.validateInput)(update, _printerservicevalidation.updatePrinterDisabledReasonSchema);
|
|
190
|
-
await this.get(printerId);
|
|
191
|
-
const printer = await _models.Printer.findByIdAndUpdate(printerId, update, {
|
|
192
|
-
new: true,
|
|
193
|
-
useFindAndModify: false
|
|
194
|
-
});
|
|
195
|
-
if (printer) {
|
|
196
|
-
this.eventEmitter2.emit(_eventconstants.printerEvents.printerUpdated, {
|
|
197
|
-
printer
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
return printer;
|
|
201
|
-
}
|
|
202
|
-
async validateAndDefault(printer) {
|
|
203
|
-
const mergedPrinter = {
|
|
204
|
-
enabled: true,
|
|
205
|
-
...printer
|
|
206
|
-
};
|
|
207
|
-
if (mergedPrinter.printerURL?.length) {
|
|
208
|
-
mergedPrinter.printerURL = (0, _normalizeurl.normalizeUrl)(mergedPrinter.printerURL, {
|
|
209
|
-
defaultProtocol: _urlutils.defaultHttpProtocol
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
return await (0, _validators.validateInput)(mergedPrinter, _printerservicevalidation.createPrinterSchema);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
//# sourceMappingURL=printer.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/mongoose/printer.service.ts"],"names":["PrinterService","logger","eventEmitter2","loggerFactory","name","toDto","entity","id","enabled","disabledReason","dateAdded","apiKey","username","password","printerURL","printerType","list","Printer","find","sort","get","printerId","filter","_id","printer","findOne","NotFoundException","create","newPrinter","emitEvent","Error","mergedPrinter","validateAndDefault","Date","now","emit","printerEvents","printerCreated","update","updateData","normalizeUrl","defaultProtocol","defaultHttpProtocol","validateInput","createPrinterSchema","undefined","save","printerUpdated","deleteMany","printerIds","$in","printersDeleted","delete","findOneAndDelete","batchImport","printers","length","log","newPrinters","createdPrinter","push","batchPrinterCreated","updateFlowRate","flowRate","findByIdAndUpdate","new","useFindAndModify","updateFeedRate","feedRate","updateEnabled","updatePrinterEnabledSchema","updateDisabledReason","updatePrinterDisabledReasonSchema"],"mappings":"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"}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "RefreshTokenService", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return RefreshTokenService;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _models = require("../../models");
|
|
12
|
-
const _uuid = require("uuid");
|
|
13
|
-
const _serverconstants = require("../../server.constants");
|
|
14
|
-
const _runtimeexceptions = require("../../exceptions/runtime.exceptions");
|
|
15
|
-
const _authorizationconstants = require("../../constants/authorization.constants");
|
|
16
|
-
class RefreshTokenService {
|
|
17
|
-
settingsStore;
|
|
18
|
-
logger;
|
|
19
|
-
constructor(loggerFactory, settingsStore){
|
|
20
|
-
this.settingsStore = settingsStore;
|
|
21
|
-
this.logger = loggerFactory(RefreshTokenService.name);
|
|
22
|
-
}
|
|
23
|
-
toDto(entity) {
|
|
24
|
-
return {
|
|
25
|
-
id: entity.id,
|
|
26
|
-
userId: entity.userId.toString(),
|
|
27
|
-
expiresAt: entity.expiresAt,
|
|
28
|
-
refreshAttemptsUsed: entity.refreshAttemptsUsed
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
async getRefreshToken(refreshToken) {
|
|
32
|
-
const userRefreshToken = await _models.RefreshToken.findOne({
|
|
33
|
-
refreshToken
|
|
34
|
-
});
|
|
35
|
-
if (!userRefreshToken) {
|
|
36
|
-
throw new _runtimeexceptions.AuthenticationError("The refresh token was not found", _authorizationconstants.AUTH_ERROR_REASON.InvalidOrExpiredRefreshToken);
|
|
37
|
-
}
|
|
38
|
-
return userRefreshToken;
|
|
39
|
-
}
|
|
40
|
-
async createRefreshTokenForUserId(userId) {
|
|
41
|
-
const { refreshTokenExpiry } = await this.settingsStore.getCredentialSettings();
|
|
42
|
-
const refreshToken = (0, _uuid.v4)();
|
|
43
|
-
const timespan = refreshTokenExpiry ?? _serverconstants.AppConstants.DEFAULT_REFRESH_TOKEN_EXPIRY;
|
|
44
|
-
if (!refreshTokenExpiry) {
|
|
45
|
-
this.logger.warn(`Refresh token expiry not set in Settings:credentials, using default ${timespan} seconds}`);
|
|
46
|
-
}
|
|
47
|
-
await _models.RefreshToken.create({
|
|
48
|
-
userId,
|
|
49
|
-
expiresAt: Date.now() + timespan * 1000,
|
|
50
|
-
refreshToken,
|
|
51
|
-
refreshAttemptsUsed: 0
|
|
52
|
-
});
|
|
53
|
-
return refreshToken;
|
|
54
|
-
}
|
|
55
|
-
async updateRefreshTokenAttempts(refreshToken, refreshAttemptsUsed) {
|
|
56
|
-
await this.getRefreshToken(refreshToken);
|
|
57
|
-
await _models.RefreshToken.updateOne({
|
|
58
|
-
refreshToken
|
|
59
|
-
}, {
|
|
60
|
-
refreshAttemptsUsed
|
|
61
|
-
}, {
|
|
62
|
-
new: true
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
async purgeOutdatedRefreshTokensByUserId(userId) {
|
|
66
|
-
const result = await _models.RefreshToken.deleteMany({
|
|
67
|
-
userId,
|
|
68
|
-
expiresAt: {
|
|
69
|
-
$lt: Date.now()
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
if (result.deletedCount) {
|
|
73
|
-
this.logger.debug(`Removed ${result.deletedCount} outdated login refresh tokens for user ${userId}`);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
async purgeAllOutdatedRefreshTokens() {
|
|
77
|
-
const result = await _models.RefreshToken.deleteMany({
|
|
78
|
-
expiresAt: {
|
|
79
|
-
$lt: Date.now()
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
if (result.deletedCount) {
|
|
83
|
-
this.logger.debug(`Removed ${result.deletedCount} outdated login refresh tokens`);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
async deleteRefreshTokenByUserId(userId) {
|
|
87
|
-
const result = await _models.RefreshToken.deleteMany({
|
|
88
|
-
userId
|
|
89
|
-
});
|
|
90
|
-
if (result.deletedCount) {
|
|
91
|
-
this.logger.debug(`Removed ${result.deletedCount} login refresh tokens`);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
async deleteRefreshToken(refreshToken) {
|
|
95
|
-
const result = await _models.RefreshToken.deleteOne({
|
|
96
|
-
refreshToken
|
|
97
|
-
});
|
|
98
|
-
if (result.deletedCount) {
|
|
99
|
-
this.logger.debug(`Removed ${result.deletedCount} login refresh tokens`);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
//# sourceMappingURL=refresh-token.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/mongoose/refresh-token.service.ts"],"names":["RefreshTokenService","logger","loggerFactory","settingsStore","name","toDto","entity","id","userId","toString","expiresAt","refreshAttemptsUsed","getRefreshToken","refreshToken","userRefreshToken","RefreshToken","findOne","AuthenticationError","AUTH_ERROR_REASON","InvalidOrExpiredRefreshToken","createRefreshTokenForUserId","refreshTokenExpiry","getCredentialSettings","uuidv4","timespan","AppConstants","DEFAULT_REFRESH_TOKEN_EXPIRY","warn","create","Date","now","updateRefreshTokenAttempts","updateOne","new","purgeOutdatedRefreshTokensByUserId","result","deleteMany","$lt","deletedCount","debug","purgeAllOutdatedRefreshTokens","deleteRefreshTokenByUserId","deleteRefreshToken","deleteOne"],"mappings":";;;;+BAaaA;;;eAAAA;;;wBAXgB;sBACA;iCACA;mCAIO;wCAEF;AAG3B,MAAMA;;IACHC,OAAsB;IAE9B,YACEC,aAA6B,EAC7B,AAAiBC,aAA4B,CAC7C;aADiBA,gBAAAA;QAEjB,IAAI,CAACF,MAAM,GAAGC,cAAcF,oBAAoBI,IAAI;IACtD;IAEAC,MAAMC,MAAqB,EAAgC;QACzD,OAAO;YACLC,IAAID,OAAOC,EAAE;YACbC,QAAQF,OAAOE,MAAM,CAACC,QAAQ;YAC9BC,WAAWJ,OAAOI,SAAS;YAG3BC,qBAAqBL,OAAOK,mBAAmB;QACjD;IACF;IAEA,MAAMC,gBAAgBC,YAAoB,EAA0B;QAClE,MAAMC,mBAAmB,MAAMC,oBAAY,CAACC,OAAO,CAAC;YAClDH;QACF;QACA,IAAI,CAACC,kBAAkB;YACrB,MAAM,IAAIG,sCAAmB,CAC3B,mCACAC,yCAAiB,CAACC,4BAA4B;QAElD;QACA,OAAOL;IACT;IAEA,MAAMM,4BAA4BZ,MAAmB,EAAmB;QACtE,MAAM,EAAEa,kBAAkB,EAAE,GAAG,MAAM,IAAI,CAAClB,aAAa,CAACmB,qBAAqB;QAC7E,MAAMT,eAAeU,IAAAA,QAAM;QAE3B,MAAMC,WAAWH,sBAAsBI,6BAAY,CAACC,4BAA4B;QAChF,IAAI,CAACL,oBAAoB;YACvB,IAAI,CAACpB,MAAM,CAAC0B,IAAI,CAAC,CAAC,oEAAoE,EAAEH,SAAS,SAAS,CAAC;QAC7G;QAEA,MAAMT,oBAAY,CAACa,MAAM,CAAC;YACxBpB;YACAE,WAAWmB,KAAKC,GAAG,KAAKN,WAAW;YACnCX;YACAF,qBAAqB;QACvB;QAEA,OAAOE;IACT;IAEA,MAAMkB,2BAA2BlB,YAAoB,EAAEF,mBAA2B,EAAE;QAClF,MAAM,IAAI,CAACC,eAAe,CAACC;QAE3B,MAAME,oBAAY,CAACiB,SAAS,CAC1B;YACEnB;QACF,GACA;YACEF;QACF,GACA;YACEsB,KAAK;QACP;IAEJ;IAEA,MAAMC,mCAAmC1B,MAAmB,EAAE;QAC5D,MAAM2B,SAAS,MAAMpB,oBAAY,CAACqB,UAAU,CAAC;YAC3C5B;YACAE,WAAW;gBACT2B,KAAKR,KAAKC,GAAG;YACf;QACF;QAEA,IAAIK,OAAOG,YAAY,EAAE;YACvB,IAAI,CAACrC,MAAM,CAACsC,KAAK,CAAC,CAAC,QAAQ,EAAEJ,OAAOG,YAAY,CAAC,wCAAwC,EAAE9B,QAAQ;QACrG;IACF;IAEA,MAAMgC,gCAAgC;QACpC,MAAML,SAAS,MAAMpB,oBAAY,CAACqB,UAAU,CAAC;YAC3C1B,WAAW;gBACT2B,KAAKR,KAAKC,GAAG;YACf;QACF;QAEA,IAAIK,OAAOG,YAAY,EAAE;YACvB,IAAI,CAACrC,MAAM,CAACsC,KAAK,CAAC,CAAC,QAAQ,EAAEJ,OAAOG,YAAY,CAAC,8BAA8B,CAAC;QAClF;IACF;IAEA,MAAMG,2BAA2BjC,MAAmB,EAAiB;QACnE,MAAM2B,SAAS,MAAMpB,oBAAY,CAACqB,UAAU,CAAC;YAC3C5B;QACF;QAEA,IAAI2B,OAAOG,YAAY,EAAE;YACvB,IAAI,CAACrC,MAAM,CAACsC,KAAK,CAAC,CAAC,QAAQ,EAAEJ,OAAOG,YAAY,CAAC,qBAAqB,CAAC;QACzE;IACF;IAEA,MAAMI,mBAAmB7B,YAAoB,EAAiB;QAC5D,MAAMsB,SAAS,MAAMpB,oBAAY,CAAC4B,SAAS,CAAC;YAC1C9B;QACF;QAGA,IAAIsB,OAAOG,YAAY,EAAE;YACvB,IAAI,CAACrC,MAAM,CAACsC,KAAK,CAAC,CAAC,QAAQ,EAAEJ,OAAOG,YAAY,CAAC,qBAAqB,CAAC;QACzE;IACF;AACF"}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "RoleService", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return RoleService;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _lodash = require("lodash");
|
|
12
|
-
const _authorizationconstants = require("../../constants/authorization.constants");
|
|
13
|
-
const _models = require("../../models");
|
|
14
|
-
const _runtimeexceptions = require("../../exceptions/runtime.exceptions");
|
|
15
|
-
class RoleService {
|
|
16
|
-
appDefaultRole;
|
|
17
|
-
appDefaultRoleNoLogin;
|
|
18
|
-
settingsStore;
|
|
19
|
-
logger;
|
|
20
|
-
constructor(loggerFactory, appDefaultRole, appDefaultRoleNoLogin, settingsStore){
|
|
21
|
-
this.appDefaultRole = appDefaultRole;
|
|
22
|
-
this.appDefaultRoleNoLogin = appDefaultRoleNoLogin;
|
|
23
|
-
this.settingsStore = settingsStore;
|
|
24
|
-
this.logger = loggerFactory(RoleService.name);
|
|
25
|
-
}
|
|
26
|
-
_roles = [];
|
|
27
|
-
get roles() {
|
|
28
|
-
return this._roles;
|
|
29
|
-
}
|
|
30
|
-
toDto(role) {
|
|
31
|
-
return {
|
|
32
|
-
id: role.id,
|
|
33
|
-
name: role.name
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
async getAppDefaultRole() {
|
|
37
|
-
if (await this.settingsStore.getLoginRequired()) {
|
|
38
|
-
return this.appDefaultRole;
|
|
39
|
-
}
|
|
40
|
-
return this.appDefaultRoleNoLogin;
|
|
41
|
-
}
|
|
42
|
-
getRolesPermissions(roles) {
|
|
43
|
-
let permissions = [];
|
|
44
|
-
if (!roles?.length) return [];
|
|
45
|
-
for (let role of roles){
|
|
46
|
-
const normalizedRole = this.normalizeRoleIdOrName(role);
|
|
47
|
-
const rolePermissions = this.getRolePermissions(normalizedRole);
|
|
48
|
-
permissions = (0, _lodash.union)(permissions, rolePermissions);
|
|
49
|
-
}
|
|
50
|
-
return permissions;
|
|
51
|
-
}
|
|
52
|
-
getRolePermissions(role) {
|
|
53
|
-
if (!role?.length) {
|
|
54
|
-
return [];
|
|
55
|
-
}
|
|
56
|
-
const normalizedRole = this.normalizeRoleIdOrName(role);
|
|
57
|
-
if (!normalizedRole?.length) {
|
|
58
|
-
return [];
|
|
59
|
-
}
|
|
60
|
-
return _authorizationconstants.ROLE_PERMS[normalizedRole];
|
|
61
|
-
}
|
|
62
|
-
async getAppDefaultRoleIds() {
|
|
63
|
-
if (!this._roles?.length) {
|
|
64
|
-
await this.syncRoles();
|
|
65
|
-
}
|
|
66
|
-
const guestRole = this.getRoleByName(await this.getAppDefaultRole());
|
|
67
|
-
return [
|
|
68
|
-
guestRole.id
|
|
69
|
-
];
|
|
70
|
-
}
|
|
71
|
-
async getSynchronizedRoleByName(roleName) {
|
|
72
|
-
if (!this._roles?.length) {
|
|
73
|
-
await this.syncRoles();
|
|
74
|
-
}
|
|
75
|
-
return this.getRoleByName(roleName);
|
|
76
|
-
}
|
|
77
|
-
authorizeRole(requiredRole, assignedRoles) {
|
|
78
|
-
return !!assignedRoles.find((ar)=>{
|
|
79
|
-
const normalizedRole = this.normalizeRoleIdOrName(ar);
|
|
80
|
-
if (!normalizedRole) return false;
|
|
81
|
-
return normalizedRole === requiredRole;
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
authorizeRoles(requiredRoles, assignedRoles, subset = true) {
|
|
85
|
-
let isAuthorized = false;
|
|
86
|
-
if (!requiredRoles?.length) return true;
|
|
87
|
-
requiredRoles.forEach((rr)=>{
|
|
88
|
-
const result = this.authorizeRole(rr, assignedRoles);
|
|
89
|
-
isAuthorized = subset ? isAuthorized || result : isAuthorized && result;
|
|
90
|
-
});
|
|
91
|
-
return isAuthorized;
|
|
92
|
-
}
|
|
93
|
-
getRoleByName(roleName) {
|
|
94
|
-
const role = this._roles.find((r)=>r.name === roleName);
|
|
95
|
-
if (!role) throw new _runtimeexceptions.NotFoundException(`Role by provided name not found`);
|
|
96
|
-
return role;
|
|
97
|
-
}
|
|
98
|
-
getManyRoles(roleIds) {
|
|
99
|
-
return roleIds.map((roleId)=>this.getRole(roleId));
|
|
100
|
-
}
|
|
101
|
-
getRole(roleId) {
|
|
102
|
-
const role = this._roles.find((r)=>r.id === roleId);
|
|
103
|
-
if (!role) throw new _runtimeexceptions.NotFoundException(`Role by provided id not found`);
|
|
104
|
-
return role;
|
|
105
|
-
}
|
|
106
|
-
async syncRoles() {
|
|
107
|
-
this._roles = [];
|
|
108
|
-
for (let roleName of Object.values(_authorizationconstants.ROLES)){
|
|
109
|
-
const storedRole = await _models.Role.findOne({
|
|
110
|
-
name: roleName
|
|
111
|
-
});
|
|
112
|
-
if (!storedRole) {
|
|
113
|
-
const newRole = await _models.Role.create({
|
|
114
|
-
name: roleName
|
|
115
|
-
});
|
|
116
|
-
this._roles.push(newRole);
|
|
117
|
-
} else {
|
|
118
|
-
this._roles.push(storedRole);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
normalizeRoleIdOrName(assignedRole) {
|
|
123
|
-
const roleInstance = this.roles.find((r)=>r.id === assignedRole || r.name === assignedRole);
|
|
124
|
-
if (!roleInstance) {
|
|
125
|
-
this.logger.warn(`The role by provided id was not found. Skipping.`);
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
return roleInstance.name;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
//# sourceMappingURL=role.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/mongoose/role.service.ts"],"names":["RoleService","logger","loggerFactory","appDefaultRole","appDefaultRoleNoLogin","settingsStore","name","_roles","roles","toDto","role","id","getAppDefaultRole","getLoginRequired","getRolesPermissions","permissions","length","normalizedRole","normalizeRoleIdOrName","rolePermissions","getRolePermissions","union","ROLE_PERMS","getAppDefaultRoleIds","syncRoles","guestRole","getRoleByName","getSynchronizedRoleByName","roleName","authorizeRole","requiredRole","assignedRoles","find","ar","authorizeRoles","requiredRoles","subset","isAuthorized","forEach","rr","result","r","NotFoundException","getManyRoles","roleIds","map","roleId","getRole","Object","values","ROLES","storedRole","Role","findOne","newRole","create","push","assignedRole","roleInstance","warn"],"mappings":"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"}
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "SettingsService", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return SettingsService;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _models = require("../../models");
|
|
12
|
-
const _serversettingsconstants = require("../../constants/server-settings.constants");
|
|
13
|
-
const _validators = require("../../handlers/validators");
|
|
14
|
-
const _settingsservicevalidation = require("../validators/settings-service.validation");
|
|
15
|
-
const _runtimesettingsmigration = require("../../shared/runtime-settings.migration");
|
|
16
|
-
class SettingsService {
|
|
17
|
-
toDto(entity) {
|
|
18
|
-
return {
|
|
19
|
-
[_serversettingsconstants.serverSettingsKey]: {
|
|
20
|
-
...entity[_serversettingsconstants.serverSettingsKey],
|
|
21
|
-
experimentalTypeormSupport: false
|
|
22
|
-
},
|
|
23
|
-
[_serversettingsconstants.wizardSettingKey]: entity[_serversettingsconstants.wizardSettingKey],
|
|
24
|
-
[_serversettingsconstants.frontendSettingKey]: entity[_serversettingsconstants.frontendSettingKey],
|
|
25
|
-
[_serversettingsconstants.printerFileCleanSettingKey]: entity[_serversettingsconstants.printerFileCleanSettingKey],
|
|
26
|
-
[_serversettingsconstants.timeoutSettingKey]: entity[_serversettingsconstants.timeoutSettingKey]
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
async getOrCreate() {
|
|
30
|
-
let settings = await this.getOptional();
|
|
31
|
-
if (!settings) {
|
|
32
|
-
const defaultSettings = new _models.Settings((0, _serversettingsconstants.getDefaultSettings)());
|
|
33
|
-
await defaultSettings.save();
|
|
34
|
-
return defaultSettings;
|
|
35
|
-
} else {
|
|
36
|
-
settings = (0, _runtimesettingsmigration.migrateSettingsRuntime)(settings);
|
|
37
|
-
return await _models.Settings.findOneAndUpdate({
|
|
38
|
-
_id: settings.id
|
|
39
|
-
}, settings, {
|
|
40
|
-
new: true
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
async updateFileCleanSettings(update) {
|
|
45
|
-
const validatedInput = await (0, _validators.validateInput)(update, _settingsservicevalidation.fileCleanSettingsUpdateSchema);
|
|
46
|
-
const settingsDoc = await this.getOrCreate();
|
|
47
|
-
settingsDoc[_serversettingsconstants.printerFileCleanSettingKey] = Object.assign(settingsDoc[_serversettingsconstants.printerFileCleanSettingKey], validatedInput);
|
|
48
|
-
return await _models.Settings.findOneAndUpdate({
|
|
49
|
-
_id: settingsDoc.id
|
|
50
|
-
}, settingsDoc, {
|
|
51
|
-
new: true
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
async updateWizardSettings(update) {
|
|
55
|
-
const validatedInput = await (0, _validators.validateInput)(update, _settingsservicevalidation.wizardUpdateSchema);
|
|
56
|
-
const settingsDoc = await this.getOrCreate();
|
|
57
|
-
settingsDoc[_serversettingsconstants.wizardSettingKey] = Object.assign(settingsDoc[_serversettingsconstants.wizardSettingKey], validatedInput);
|
|
58
|
-
return await _models.Settings.findOneAndUpdate({
|
|
59
|
-
_id: settingsDoc.id
|
|
60
|
-
}, settingsDoc, {
|
|
61
|
-
new: true
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
async updateFrontendSettings(update) {
|
|
65
|
-
const validatedInput = await (0, _validators.validateInput)(update, _settingsservicevalidation.frontendSettingsUpdateSchema);
|
|
66
|
-
const settingsDoc = await this.getOrCreate();
|
|
67
|
-
const frontendSettings = settingsDoc[_serversettingsconstants.frontendSettingKey];
|
|
68
|
-
Object.assign(frontendSettings, validatedInput);
|
|
69
|
-
return await _models.Settings.findOneAndUpdate({
|
|
70
|
-
_id: settingsDoc.id
|
|
71
|
-
}, settingsDoc, {
|
|
72
|
-
new: true
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
async updateJwtSecretCredentialSetting(update) {
|
|
76
|
-
const validatedInput = await (0, _validators.validateInput)(update, _settingsservicevalidation.jwtSecretCredentialSettingUpdateSchema);
|
|
77
|
-
const settingsDoc = await this.getOrCreate();
|
|
78
|
-
const credentialSettings = settingsDoc[_serversettingsconstants.credentialSettingsKey];
|
|
79
|
-
Object.assign(credentialSettings, validatedInput);
|
|
80
|
-
return await _models.Settings.findOneAndUpdate({
|
|
81
|
-
_id: settingsDoc.id
|
|
82
|
-
}, settingsDoc, {
|
|
83
|
-
new: true
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
async updateCredentialSettings(patchUpdate) {
|
|
87
|
-
const validatedInput = await (0, _validators.validateInput)(patchUpdate, _settingsservicevalidation.credentialSettingUpdateSchema);
|
|
88
|
-
const settingsDoc = await this.getOrCreate();
|
|
89
|
-
const credentialSettings = settingsDoc[_serversettingsconstants.credentialSettingsKey];
|
|
90
|
-
Object.assign(credentialSettings, validatedInput);
|
|
91
|
-
return await _models.Settings.findOneAndUpdate({
|
|
92
|
-
_id: settingsDoc.id
|
|
93
|
-
}, settingsDoc, {
|
|
94
|
-
new: true
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
async updateServerSettings(update) {
|
|
98
|
-
const validatedInput = await (0, _validators.validateInput)(update, _settingsservicevalidation.serverSettingsUpdateSchema);
|
|
99
|
-
const settingsDoc = await this.getOrCreate();
|
|
100
|
-
const serverSettings = settingsDoc[_serversettingsconstants.serverSettingsKey];
|
|
101
|
-
Object.assign(serverSettings, validatedInput);
|
|
102
|
-
return await _models.Settings.findOneAndUpdate({
|
|
103
|
-
_id: settingsDoc.id
|
|
104
|
-
}, settingsDoc, {
|
|
105
|
-
new: true
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
async updateTimeoutSettings(patchUpdate) {
|
|
109
|
-
const validatedInput = await (0, _validators.validateInput)(patchUpdate, _settingsservicevalidation.timeoutSettingsUpdateSchema);
|
|
110
|
-
const settingsDoc = await this.getOrCreate();
|
|
111
|
-
const timeoutSettings = settingsDoc[_serversettingsconstants.timeoutSettingKey];
|
|
112
|
-
Object.assign(timeoutSettings, validatedInput);
|
|
113
|
-
return await _models.Settings.findOneAndUpdate({
|
|
114
|
-
_id: settingsDoc.id
|
|
115
|
-
}, settingsDoc, {
|
|
116
|
-
new: true
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
async getOptional() {
|
|
120
|
-
return _models.Settings.findOne();
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
//# sourceMappingURL=settings.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/mongoose/settings.service.ts"],"names":["SettingsService","toDto","entity","serverSettingsKey","experimentalTypeormSupport","wizardSettingKey","frontendSettingKey","printerFileCleanSettingKey","timeoutSettingKey","getOrCreate","settings","getOptional","defaultSettings","Settings","getDefaultSettings","save","migrateSettingsRuntime","findOneAndUpdate","_id","id","new","updateFileCleanSettings","update","validatedInput","validateInput","fileCleanSettingsUpdateSchema","settingsDoc","Object","assign","updateWizardSettings","wizardUpdateSchema","updateFrontendSettings","frontendSettingsUpdateSchema","frontendSettings","updateJwtSecretCredentialSetting","jwtSecretCredentialSettingUpdateSchema","credentialSettings","credentialSettingsKey","updateCredentialSettings","patchUpdate","credentialSettingUpdateSchema","updateServerSettings","serverSettingsUpdateSchema","serverSettings","updateTimeoutSettings","timeoutSettingsUpdateSchema","timeoutSettings","findOne"],"mappings":"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"}
|