@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,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
module.exports = {
|
|
3
|
-
async up (db, client) {
|
|
4
|
-
const session = client.startSession();
|
|
5
|
-
try {
|
|
6
|
-
await session.withTransaction(async ()=>{
|
|
7
|
-
const dbCollection = db.collection("printers");
|
|
8
|
-
await dbCollection.updateMany({}, {
|
|
9
|
-
$set: {
|
|
10
|
-
fileList: []
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
});
|
|
14
|
-
} catch (e) {
|
|
15
|
-
console.log("Error executing up migration", e);
|
|
16
|
-
throw e;
|
|
17
|
-
} finally{
|
|
18
|
-
await session.endSession();
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
async down (db, client) {
|
|
22
|
-
const session = client.startSession();
|
|
23
|
-
try {
|
|
24
|
-
await session.withTransaction(async ()=>{
|
|
25
|
-
const dbCollection = db.collection("printers");
|
|
26
|
-
await dbCollection.updateMany({}, {
|
|
27
|
-
$set: {
|
|
28
|
-
fileList: {}
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
} catch (e) {
|
|
33
|
-
console.log("Error executing down migration", e);
|
|
34
|
-
throw e;
|
|
35
|
-
} finally{
|
|
36
|
-
await session.endSession();
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
//# sourceMappingURL=20231202183902-printer-files-simpler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mongo-migrations/20231202183902-printer-files-simpler.ts"],"names":["module","exports","up","db","client","session","startSession","withTransaction","dbCollection","collection","updateMany","$set","fileList","e","console","log","endSession","down"],"mappings":";AAAAA,OAAOC,OAAO,GAAG;IAEf,MAAMC,IAAGC,EAAE,EAAEC,MAAM;QACjB,MAAMC,UAAUD,OAAOE,YAAY;QACnC,IAAI;YACF,MAAMD,QAAQE,eAAe,CAAC;gBAC5B,MAAMC,eAAeL,GAAGM,UAAU,CAAC;gBACnC,MAAMD,aAAaE,UAAU,CAAC,CAAC,GAAG;oBAAEC,MAAM;wBAAEC,UAAU,EAAE;oBAAC;gBAAE;YAC7D;QACF,EAAE,OAAOC,GAAG;YACVC,QAAQC,GAAG,CAAC,gCAAgCF;YAC5C,MAAMA;QACR,SAAU;YACR,MAAMR,QAAQW,UAAU;QAC1B;IACF;IAGA,MAAMC,MAAKd,EAAE,EAAEC,MAAM;QACnB,MAAMC,UAAUD,OAAOE,YAAY;QACnC,IAAI;YAEF,MAAMD,QAAQE,eAAe,CAAC;gBAE5B,MAAMC,eAAeL,GAAGM,UAAU,CAAC;gBACnC,MAAMD,aAAaE,UAAU,CAAC,CAAC,GAAG;oBAAEC,MAAM;wBAAEC,UAAU,CAAC;oBAAE;gBAAE;YAC7D;QACF,EAAE,OAAOC,GAAG;YACVC,QAAQC,GAAG,CAAC,kCAAkCF;YAC9C,MAAMA;QACR,SAAU;YACR,MAAMR,QAAQW,UAAU;QAC1B;IACF;AACF"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "PermissionDto", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return PermissionDto;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
class PermissionDto {
|
|
12
|
-
id;
|
|
13
|
-
name;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=permission.dto.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/interfaces/permission.dto.ts"],"names":["PermissionDto","id","name"],"mappings":";;;;+BAEaA;;;eAAAA;;;AAAN,MAAMA;IACXC,GAAY;IACZC,KAAa;AACf"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "CameraStreamService", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return CameraStreamService;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _models = require("../../models");
|
|
12
|
-
const _validators = require("../../handlers/validators");
|
|
13
|
-
const _runtimeexceptions = require("../../exceptions/runtime.exceptions");
|
|
14
|
-
const _cameraservicevalidation = require("../validators/camera-service.validation");
|
|
15
|
-
class CameraStreamService {
|
|
16
|
-
printerCache;
|
|
17
|
-
model = _models.CameraStream;
|
|
18
|
-
constructor(printerCache){
|
|
19
|
-
this.printerCache = printerCache;
|
|
20
|
-
}
|
|
21
|
-
async list() {
|
|
22
|
-
return this.model.find();
|
|
23
|
-
}
|
|
24
|
-
async get(id) {
|
|
25
|
-
const cameraStream = await this.model.findById(id);
|
|
26
|
-
if (!cameraStream) {
|
|
27
|
-
throw new _runtimeexceptions.NotFoundException(`Floor with provided id does not exist`, "CameraStream");
|
|
28
|
-
}
|
|
29
|
-
return cameraStream;
|
|
30
|
-
}
|
|
31
|
-
async create(data) {
|
|
32
|
-
const input = await (0, _validators.validateInput)(data, (0, _cameraservicevalidation.createCameraStreamSchema)(false));
|
|
33
|
-
if (input.printerId) {
|
|
34
|
-
this.printerCache.getCachedPrinterOrThrow(input.printerId);
|
|
35
|
-
}
|
|
36
|
-
return this.model.create(input);
|
|
37
|
-
}
|
|
38
|
-
async delete(id) {
|
|
39
|
-
await this.get(id);
|
|
40
|
-
await this.model.findByIdAndDelete(id);
|
|
41
|
-
}
|
|
42
|
-
async update(id, input) {
|
|
43
|
-
await this.get(id);
|
|
44
|
-
const updateInput = await (0, _validators.validateInput)(input, (0, _cameraservicevalidation.createCameraStreamSchema)(false));
|
|
45
|
-
if (input.printerId) {
|
|
46
|
-
this.printerCache.getCachedPrinterOrThrow(input.printerId);
|
|
47
|
-
}
|
|
48
|
-
await this.model.updateOne({
|
|
49
|
-
id
|
|
50
|
-
}, updateInput);
|
|
51
|
-
return this.get(id);
|
|
52
|
-
}
|
|
53
|
-
toDto(entity) {
|
|
54
|
-
return {
|
|
55
|
-
id: entity.id,
|
|
56
|
-
streamURL: entity.streamURL,
|
|
57
|
-
printerId: !entity?.printerId ? null : entity.printerId.toString(),
|
|
58
|
-
name: entity.name,
|
|
59
|
-
aspectRatio: entity.aspectRatio,
|
|
60
|
-
flipHorizontal: entity.flipHorizontal,
|
|
61
|
-
flipVertical: entity.flipVertical,
|
|
62
|
-
rotationClockwise: entity.rotationClockwise
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
//# sourceMappingURL=camera-stream.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/mongoose/camera-stream.service.ts"],"names":["CameraStreamService","model","CameraStream","printerCache","list","find","get","id","cameraStream","findById","NotFoundException","create","data","input","validateInput","createCameraStreamSchema","printerId","getCachedPrinterOrThrow","delete","findByIdAndDelete","update","updateInput","updateOne","toDto","entity","streamURL","toString","name","aspectRatio","flipHorizontal","flipVertical","rotationClockwise"],"mappings":";;;;+BAUaA;;;eAAAA;;;wBAVgB;4BACC;mCACI;yCAMO;AAElC,MAAMA;;IACXC,QAAQC,oBAAY,CAAC;IAErB,YAAY,AAAiBC,YAA0B,CAAE;aAA5BA,eAAAA;IAA6B;IAE1D,MAAMC,OAAO;QACX,OAAO,IAAI,CAACH,KAAK,CAACI,IAAI;IACxB;IAEA,MAAMC,IAAIC,EAAe,EAAE;QACzB,MAAMC,eAAe,MAAM,IAAI,CAACP,KAAK,CAACQ,QAAQ,CAACF;QAC/C,IAAI,CAACC,cAAc;YACjB,MAAM,IAAIE,oCAAiB,CAAC,CAAC,qCAAqC,CAAC,EAAE;QACvE;QAEA,OAAOF;IACT;IAEA,MAAMG,OAAOC,IAAwC,EAAE;QACrD,MAAMC,QAAQ,MAAMC,IAAAA,yBAAa,EAACF,MAAMG,IAAAA,iDAAwB,EAAC;QACjE,IAAIF,MAAMG,SAAS,EAAE;YACnB,IAAI,CAACb,YAAY,CAACc,uBAAuB,CAACJ,MAAMG,SAAS;QAC3D;QACA,OAAO,IAAI,CAACf,KAAK,CAACU,MAAM,CAACE;IAC3B;IAEA,MAAMK,OAAOX,EAAe,EAAE;QAC5B,MAAM,IAAI,CAACD,GAAG,CAACC;QACf,MAAM,IAAI,CAACN,KAAK,CAACkB,iBAAiB,CAACZ;IACrC;IAEA,MAAMa,OAAOb,EAAe,EAAEM,KAAyC,EAAE;QACvE,MAAM,IAAI,CAACP,GAAG,CAACC;QAEf,MAAMc,cAAc,MAAMP,IAAAA,yBAAa,EAACD,OAAOE,IAAAA,iDAAwB,EAAC;QACxE,IAAIF,MAAMG,SAAS,EAAE;YACnB,IAAI,CAACb,YAAY,CAACc,uBAAuB,CAACJ,MAAMG,SAAS;QAC3D;QACA,MAAM,IAAI,CAACf,KAAK,CAACqB,SAAS,CAAC;YAAEf;QAAG,GAAGc;QACnC,OAAO,IAAI,CAACf,GAAG,CAACC;IAClB;IAEAgB,MAAMC,MAAqB,EAAgC;QACzD,OAAO;YACLjB,IAAIiB,OAAOjB,EAAE;YACbkB,WAAWD,OAAOC,SAAS;YAC3BT,WAAW,CAACQ,QAAQR,YAAY,OAAOQ,OAAOR,SAAS,CAACU,QAAQ;YAChEC,MAAMH,OAAOG,IAAI;YACjBC,aAAaJ,OAAOI,WAAW;YAC/BC,gBAAgBL,OAAOK,cAAc;YACrCC,cAAcN,OAAOM,YAAY;YACjCC,mBAAmBP,OAAOO,iBAAiB;QAC7C;IACF;AACF"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "CustomGcodeService", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return CustomGcodeService;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _models = require("../../models");
|
|
12
|
-
const _runtimeexceptions = require("../../exceptions/runtime.exceptions");
|
|
13
|
-
class CustomGcodeService {
|
|
14
|
-
toDto(document) {
|
|
15
|
-
return {
|
|
16
|
-
id: document.id,
|
|
17
|
-
name: document.name,
|
|
18
|
-
description: document.description,
|
|
19
|
-
gcode: [
|
|
20
|
-
...document.gcode
|
|
21
|
-
]
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
async get(gcodeScriptId) {
|
|
25
|
-
const document = await _models.CustomGcode.findById(gcodeScriptId);
|
|
26
|
-
if (!document) {
|
|
27
|
-
throw new _runtimeexceptions.NotFoundException(`Custom GCode script with provided id does not exist`);
|
|
28
|
-
}
|
|
29
|
-
return document;
|
|
30
|
-
}
|
|
31
|
-
async list() {
|
|
32
|
-
return _models.CustomGcode.find();
|
|
33
|
-
}
|
|
34
|
-
async create(gcodeScript) {
|
|
35
|
-
return _models.CustomGcode.create(gcodeScript);
|
|
36
|
-
}
|
|
37
|
-
async delete(gcodeScriptId) {
|
|
38
|
-
const gcode = await this.get(gcodeScriptId);
|
|
39
|
-
await _models.CustomGcode.findByIdAndDelete(gcode.id);
|
|
40
|
-
}
|
|
41
|
-
async update(gcodeScriptId, updatedData) {
|
|
42
|
-
const customGcode = await this.get(gcodeScriptId);
|
|
43
|
-
customGcode.name = updatedData.name;
|
|
44
|
-
customGcode.description = updatedData.description;
|
|
45
|
-
customGcode.gcode = updatedData.gcode;
|
|
46
|
-
return await customGcode.save();
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
//# sourceMappingURL=custom-gcode.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/mongoose/custom-gcode.service.ts"],"names":["CustomGcodeService","toDto","document","id","name","description","gcode","get","gcodeScriptId","CustomGcode","findById","NotFoundException","list","find","create","gcodeScript","delete","findByIdAndDelete","update","updatedData","customGcode","save"],"mappings":";;;;+BAOaA;;;eAAAA;;;wBAPe;mCACM;AAM3B,MAAMA;IACXC,MAAMC,QAAsB,EAA+B;QACzD,OAAO;YACLC,IAAID,SAASC,EAAE;YACfC,MAAMF,SAASE,IAAI;YACnBC,aAAaH,SAASG,WAAW;YACjCC,OAAO;mBAAIJ,SAASI,KAAK;aAAC;QAC5B;IACF;IAEA,MAAMC,IAAIC,aAA0B,EAAE;QACpC,MAAMN,WAAW,MAAMO,mBAAW,CAACC,QAAQ,CAACF;QAC5C,IAAI,CAACN,UAAU;YACb,MAAM,IAAIS,oCAAiB,CAAC,CAAC,mDAAmD,CAAC;QACnF;QAEA,OAAOT;IACT;IAEA,MAAMU,OAAO;QACX,OAAOH,mBAAW,CAACI,IAAI;IACzB;IAEA,MAAMC,OAAOC,WAA2B,EAAE;QACxC,OAAON,mBAAW,CAACK,MAAM,CAACC;IAC5B;IAEA,MAAMC,OAAOR,aAA0B,EAAE;QACvC,MAAMF,QAAQ,MAAM,IAAI,CAACC,GAAG,CAACC;QAC7B,MAAMC,mBAAW,CAACQ,iBAAiB,CAACX,MAAMH,EAAE;IAC9C;IAEA,MAAMe,OAAOV,aAA0B,EAAEW,WAA2B,EAAE;QACpE,MAAMC,cAAc,MAAM,IAAI,CAACb,GAAG,CAACC;QACnCY,YAAYhB,IAAI,GAAGe,YAAYf,IAAI;QACnCgB,YAAYf,WAAW,GAAGc,YAAYd,WAAW;QACjDe,YAAYd,KAAK,GAAGa,YAAYb,KAAK;QACrC,OAAO,MAAMc,YAAYC,IAAI;IAC/B;AACF"}
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "FloorService", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return FloorService;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _Floor = require("../../models/Floor");
|
|
12
|
-
const _validators = require("../../handlers/validators");
|
|
13
|
-
const _runtimeexceptions = require("../../exceptions/runtime.exceptions");
|
|
14
|
-
const _floorservicevalidation = require("../validators/floor-service.validation");
|
|
15
|
-
class FloorService {
|
|
16
|
-
printerCache;
|
|
17
|
-
constructor(printerCache){
|
|
18
|
-
this.printerCache = printerCache;
|
|
19
|
-
}
|
|
20
|
-
toDto(floor) {
|
|
21
|
-
return {
|
|
22
|
-
id: floor.id,
|
|
23
|
-
name: floor.name,
|
|
24
|
-
floor: floor.floor,
|
|
25
|
-
printers: floor.printers?.map((p)=>({
|
|
26
|
-
x: p.x,
|
|
27
|
-
y: p.y,
|
|
28
|
-
printerId: p.printerId.toString(),
|
|
29
|
-
floorId: floor.id
|
|
30
|
-
}))
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
async list() {
|
|
34
|
-
return _Floor.Floor.find({});
|
|
35
|
-
}
|
|
36
|
-
async get(floorId) {
|
|
37
|
-
const floor = await _Floor.Floor.findOne({
|
|
38
|
-
_id: floorId
|
|
39
|
-
});
|
|
40
|
-
if (!floor) {
|
|
41
|
-
throw new _runtimeexceptions.NotFoundException(`Floor with provided id does not exist`);
|
|
42
|
-
}
|
|
43
|
-
return floor;
|
|
44
|
-
}
|
|
45
|
-
async createDefaultFloor() {
|
|
46
|
-
return await this.create({
|
|
47
|
-
name: "Default Floor",
|
|
48
|
-
floor: 1,
|
|
49
|
-
printers: []
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
async create(floor) {
|
|
53
|
-
const validatedInput = await (0, _validators.validateInput)(floor, (0, _floorservicevalidation.createOrUpdateFloorSchema)(false));
|
|
54
|
-
return _Floor.Floor.create(validatedInput);
|
|
55
|
-
}
|
|
56
|
-
async update(floorId, update) {
|
|
57
|
-
const existingFloor = await this.get(floorId);
|
|
58
|
-
if (update.printers) {
|
|
59
|
-
for (const position of update.printers){
|
|
60
|
-
position.floorId = existingFloor.id;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
const floorUpdate = {
|
|
64
|
-
...existingFloor,
|
|
65
|
-
name: update.name,
|
|
66
|
-
printers: update.printers,
|
|
67
|
-
floor: update.floor
|
|
68
|
-
};
|
|
69
|
-
const input = await (0, _validators.validateInput)(floorUpdate, (0, _floorservicevalidation.createOrUpdateFloorSchema)(false));
|
|
70
|
-
existingFloor.name = input.name;
|
|
71
|
-
existingFloor.floor = input.floor;
|
|
72
|
-
existingFloor.printers = input.printers;
|
|
73
|
-
return await existingFloor.save();
|
|
74
|
-
}
|
|
75
|
-
async updateName(floorId, floorName) {
|
|
76
|
-
const { name } = await (0, _validators.validateInput)({
|
|
77
|
-
name: floorName
|
|
78
|
-
}, _floorservicevalidation.updateFloorNameSchema);
|
|
79
|
-
const floor = await this.get(floorId);
|
|
80
|
-
floor.name = name;
|
|
81
|
-
return await floor.save();
|
|
82
|
-
}
|
|
83
|
-
async updateLevel(floorId, level) {
|
|
84
|
-
const { floor: validLevel } = await (0, _validators.validateInput)({
|
|
85
|
-
floor: level
|
|
86
|
-
}, _floorservicevalidation.updateFloorLevelSchema);
|
|
87
|
-
const floor = await this.get(floorId);
|
|
88
|
-
floor.floor = validLevel;
|
|
89
|
-
return await floor.save();
|
|
90
|
-
}
|
|
91
|
-
async deletePrinterFromAnyFloor(printerId) {
|
|
92
|
-
await _Floor.Floor.updateMany({}, {
|
|
93
|
-
$pull: {
|
|
94
|
-
printers: {
|
|
95
|
-
printerId: {
|
|
96
|
-
$in: [
|
|
97
|
-
printerId
|
|
98
|
-
]
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
async addOrUpdatePrinter(floorId, updatedPosition) {
|
|
105
|
-
const floor = await this.get(floorId);
|
|
106
|
-
updatedPosition.floorId = floor.id;
|
|
107
|
-
const validInput = await (0, _validators.validateInput)(updatedPosition, (0, _floorservicevalidation.printerInFloorSchema)(false));
|
|
108
|
-
await this.printerCache.getCachedPrinterOrThrowAsync(validInput.printerId);
|
|
109
|
-
floor.printers = floor.printers.filter((position)=>!(position.x === validInput.x && position.y === validInput.y));
|
|
110
|
-
const positionIndex = floor.printers.findIndex((position)=>position.printerId.toString() === validInput.printerId.toString());
|
|
111
|
-
if (positionIndex !== -1) {
|
|
112
|
-
floor.printers[positionIndex] = validInput;
|
|
113
|
-
} else {
|
|
114
|
-
floor.printers.push(validInput);
|
|
115
|
-
}
|
|
116
|
-
await floor.save();
|
|
117
|
-
return floor;
|
|
118
|
-
}
|
|
119
|
-
async removePrinter(floorId, printerId) {
|
|
120
|
-
const floor = await this.get(floorId);
|
|
121
|
-
const validInput = await (0, _validators.validateInput)({
|
|
122
|
-
printerId
|
|
123
|
-
}, (0, _floorservicevalidation.removePrinterInFloorSchema)(false));
|
|
124
|
-
await this.printerCache.getCachedPrinterOrThrowAsync(validInput.printerId);
|
|
125
|
-
const foundPrinterInFloorIndex = floor.printers.findIndex((pif)=>pif.printerId.toString() === validInput.printerId.toString());
|
|
126
|
-
if (foundPrinterInFloorIndex === -1) return floor;
|
|
127
|
-
floor.printers.splice(foundPrinterInFloorIndex, 1);
|
|
128
|
-
await floor.save();
|
|
129
|
-
return floor;
|
|
130
|
-
}
|
|
131
|
-
async delete(floorId) {
|
|
132
|
-
await this.get(floorId);
|
|
133
|
-
await _Floor.Floor.deleteOne({
|
|
134
|
-
_id: floorId
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
//# sourceMappingURL=floor.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/mongoose/floor.service.ts"],"names":["FloorService","printerCache","toDto","floor","id","name","printers","map","p","x","y","printerId","toString","floorId","list","Floor","find","get","findOne","_id","NotFoundException","createDefaultFloor","create","validatedInput","validateInput","createOrUpdateFloorSchema","update","existingFloor","position","floorUpdate","input","save","updateName","floorName","updateFloorNameSchema","updateLevel","level","validLevel","updateFloorLevelSchema","deletePrinterFromAnyFloor","updateMany","$pull","$in","addOrUpdatePrinter","updatedPosition","validInput","printerInFloorSchema","getCachedPrinterOrThrowAsync","filter","positionIndex","findIndex","push","removePrinter","removePrinterInFloorSchema","foundPrinterInFloorIndex","pif","splice","delete","deleteOne"],"mappings":"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"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "PermissionService", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return PermissionService;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _models = require("../../models");
|
|
12
|
-
const _authorizationconstants = require("../../constants/authorization.constants");
|
|
13
|
-
const _runtimeexceptions = require("../../exceptions/runtime.exceptions");
|
|
14
|
-
class PermissionService {
|
|
15
|
-
logger;
|
|
16
|
-
constructor(loggerFactory){
|
|
17
|
-
this.logger = loggerFactory(PermissionService.name);
|
|
18
|
-
}
|
|
19
|
-
_permissions = [];
|
|
20
|
-
get permissions() {
|
|
21
|
-
return this._permissions;
|
|
22
|
-
}
|
|
23
|
-
toDto(permission) {
|
|
24
|
-
return {
|
|
25
|
-
id: permission.id,
|
|
26
|
-
name: permission.name
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
authorizePermission(requiredPermission, assignedPermissions) {
|
|
30
|
-
return !!assignedPermissions.find((assignedPermission)=>{
|
|
31
|
-
const normalizePermission = this.normalizePermission(assignedPermission);
|
|
32
|
-
if (!normalizePermission) return false;
|
|
33
|
-
return normalizePermission === requiredPermission;
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
async getPermissionByName(permissionName) {
|
|
37
|
-
const permission = this.permissions.find((r)=>r.name === permissionName);
|
|
38
|
-
if (!permission) throw new _runtimeexceptions.NotFoundException("Permission not found");
|
|
39
|
-
return permission;
|
|
40
|
-
}
|
|
41
|
-
async getPermission(permissionId) {
|
|
42
|
-
const permission = this.permissions.find((r)=>r.id === permissionId);
|
|
43
|
-
if (!permission) throw new _runtimeexceptions.NotFoundException(`Permission by provided id not found`);
|
|
44
|
-
return permission;
|
|
45
|
-
}
|
|
46
|
-
async syncPermissions() {
|
|
47
|
-
this._permissions = [];
|
|
48
|
-
const permissionDefinition = (0, _authorizationconstants.flattenPermissionDefinition)();
|
|
49
|
-
for (let permission of permissionDefinition){
|
|
50
|
-
const storedPermission = await _models.Permission.findOne({
|
|
51
|
-
name: permission
|
|
52
|
-
});
|
|
53
|
-
if (!storedPermission) {
|
|
54
|
-
const newPermission = await _models.Permission.create({
|
|
55
|
-
name: permission
|
|
56
|
-
});
|
|
57
|
-
this._permissions.push(newPermission);
|
|
58
|
-
} else {
|
|
59
|
-
this._permissions.push(storedPermission);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
normalizePermission(assignedPermission) {
|
|
64
|
-
const permissionInstance = this.permissions.find((r)=>r.id === assignedPermission || r.name === assignedPermission);
|
|
65
|
-
if (!permissionInstance) {
|
|
66
|
-
this.logger.warn("The permission by by provided id did not exist. Skipping");
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
return permissionInstance.name;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
//# sourceMappingURL=permission.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/mongoose/permission.service.ts"],"names":["PermissionService","logger","loggerFactory","name","_permissions","permissions","toDto","permission","id","authorizePermission","requiredPermission","assignedPermissions","find","assignedPermission","normalizePermission","getPermissionByName","permissionName","r","NotFoundException","getPermission","permissionId","syncPermissions","permissionDefinition","flattenPermissionDefinition","storedPermission","Permission","findOne","newPermission","create","push","permissionInstance","warn"],"mappings":";;;;+BASaA;;;eAAAA;;;wBATc;wCACiB;mCACV;AAO3B,MAAMA;IACMC,OAAsB;IAEvC,YAAYC,aAA6B,CAAE;QACzC,IAAI,CAACD,MAAM,GAAGC,cAAcF,kBAAkBG,IAAI;IACpD;IAEQC,eAA8B,EAAE,CAAC;IAEzC,IAAIC,cAAc;QAChB,OAAO,IAAI,CAACD,YAAY;IAC1B;IAEAE,MAAMC,UAAuB,EAAE;QAC7B,OAAO;YACLC,IAAID,WAAWC,EAAE;YACjBL,MAAMI,WAAWJ,IAAI;QACvB;IACF;IAEAM,oBAAoBC,kBAA0B,EAAEC,mBAA6B,EAAE;QAC7E,OAAO,CAAC,CAACA,oBAAoBC,IAAI,CAAC,CAACC;YACjC,MAAMC,sBAAsB,IAAI,CAACA,mBAAmB,CAACD;YACrD,IAAI,CAACC,qBAAqB,OAAO;YACjC,OAAOA,wBAAwBJ;QACjC;IACF;IAEA,MAAMK,oBAAoBC,cAAsB,EAAE;QAChD,MAAMT,aAAa,IAAI,CAACF,WAAW,CAACO,IAAI,CAAC,CAACK,IAAMA,EAAEd,IAAI,KAAKa;QAC3D,IAAI,CAACT,YAAY,MAAM,IAAIW,oCAAiB,CAAC;QAC7C,OAAOX;IACT;IAEA,MAAMY,cAAcC,YAAyB,EAAE;QAC7C,MAAMb,aAAa,IAAI,CAACF,WAAW,CAACO,IAAI,CAAC,CAACK,IAAMA,EAAET,EAAE,KAAKY;QACzD,IAAI,CAACb,YAAY,MAAM,IAAIW,oCAAiB,CAAC,CAAC,mCAAmC,CAAC;QAElF,OAAOX;IACT;IAEA,MAAMc,kBAAkB;QACtB,IAAI,CAACjB,YAAY,GAAG,EAAE;QAEtB,MAAMkB,uBAAuBC,IAAAA,mDAA2B;QACxD,KAAK,IAAIhB,cAAce,qBAAsB;YAC3C,MAAME,mBAAmB,MAAMC,kBAAU,CAACC,OAAO,CAAC;gBAAEvB,MAAMI;YAAW;YACrE,IAAI,CAACiB,kBAAkB;gBACrB,MAAMG,gBAAgB,MAAMF,kBAAU,CAACG,MAAM,CAAC;oBAC5CzB,MAAMI;gBACR;gBACA,IAAI,CAACH,YAAY,CAACyB,IAAI,CAACF;YACzB,OAAO;gBACL,IAAI,CAACvB,YAAY,CAACyB,IAAI,CAACL;YACzB;QACF;IACF;IAEAV,oBAAoBD,kBAA0B,EAAE;QAC9C,MAAMiB,qBAAqB,IAAI,CAACzB,WAAW,CAACO,IAAI,CAC9C,CAACK,IAAMA,EAAET,EAAE,KAAKK,sBAAsBI,EAAEd,IAAI,KAAKU;QAEnD,IAAI,CAACiB,oBAAoB;YACvB,IAAI,CAAC7B,MAAM,CAAC8B,IAAI,CAAC;YACjB;QACF;QACA,OAAOD,mBAAmB3B,IAAI;IAChC;AACF"}
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "PrintCompletionService", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return PrintCompletionService;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _models = require("../../models");
|
|
12
|
-
const _printcompletionservicevalidation = require("../validators/print-completion-service.validation");
|
|
13
|
-
const _validators = require("../../handlers/validators");
|
|
14
|
-
const _octoprintwebsocketconstants = require("../octoprint/constants/octoprint-websocket.constants");
|
|
15
|
-
const _printcompletionshared = require("./print-completion.shared");
|
|
16
|
-
class PrintCompletionService {
|
|
17
|
-
logger;
|
|
18
|
-
constructor(loggerFactory){
|
|
19
|
-
this.logger = loggerFactory(PrintCompletionService.name);
|
|
20
|
-
}
|
|
21
|
-
toDto(entity) {
|
|
22
|
-
return {
|
|
23
|
-
id: entity.id,
|
|
24
|
-
completionLog: entity.completionLog,
|
|
25
|
-
context: entity.context,
|
|
26
|
-
fileName: entity.fileName,
|
|
27
|
-
createdAt: entity.createdAt,
|
|
28
|
-
status: entity.status,
|
|
29
|
-
printerId: entity.printerId.toString()
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
async create(input) {
|
|
33
|
-
const { printerId, fileName, completionLog, status, context } = await (0, _validators.validateInput)(input, (0, _printcompletionservicevalidation.createPrintCompletionSchema)(false));
|
|
34
|
-
return _models.PrintCompletion.create({
|
|
35
|
-
printerId,
|
|
36
|
-
fileName,
|
|
37
|
-
completionLog,
|
|
38
|
-
status,
|
|
39
|
-
createdAt: Date.now(),
|
|
40
|
-
context
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
async list() {
|
|
44
|
-
return _models.PrintCompletion.find({});
|
|
45
|
-
}
|
|
46
|
-
async findPrintCompletion(correlationId) {
|
|
47
|
-
return _models.PrintCompletion.find({
|
|
48
|
-
"context.correlationId": correlationId
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
async updateContext(correlationId, context) {
|
|
52
|
-
if (!correlationId?.length) {
|
|
53
|
-
this.logger.warn("Ignoring undefined correlationId, cant update print completion context");
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
const completionEntry = await _models.PrintCompletion.findOne({
|
|
57
|
-
"context.correlationId": correlationId,
|
|
58
|
-
status: _octoprintwebsocketconstants.EVENT_TYPES.PrintStarted
|
|
59
|
-
});
|
|
60
|
-
if (!completionEntry) {
|
|
61
|
-
this.logger.warn(`Print with correlationId ${correlationId} could not be updated with new context as it was not found`);
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
completionEntry.context = context;
|
|
65
|
-
await completionEntry.save();
|
|
66
|
-
}
|
|
67
|
-
async loadPrintContexts() {
|
|
68
|
-
const contexts = await _models.PrintCompletion.aggregate([
|
|
69
|
-
{
|
|
70
|
-
$sort: {
|
|
71
|
-
printerId: 1,
|
|
72
|
-
createdAt: -1
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
$group: {
|
|
77
|
-
_id: "$printerId",
|
|
78
|
-
createdAt: {
|
|
79
|
-
$first: "$createdAt"
|
|
80
|
-
},
|
|
81
|
-
context: {
|
|
82
|
-
$first: "$context"
|
|
83
|
-
},
|
|
84
|
-
status: {
|
|
85
|
-
$first: "$status"
|
|
86
|
-
},
|
|
87
|
-
fileName: {
|
|
88
|
-
$first: "$fileName"
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
$match: {
|
|
94
|
-
status: {
|
|
95
|
-
$nin: [
|
|
96
|
-
_octoprintwebsocketconstants.EVENT_TYPES.PrintDone,
|
|
97
|
-
_octoprintwebsocketconstants.EVENT_TYPES.PrintFailed
|
|
98
|
-
]
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
]);
|
|
103
|
-
return Object.fromEntries(contexts.map((c)=>{
|
|
104
|
-
c.printerId = c._id;
|
|
105
|
-
delete c._id;
|
|
106
|
-
return [
|
|
107
|
-
c.printerId,
|
|
108
|
-
c
|
|
109
|
-
];
|
|
110
|
-
}));
|
|
111
|
-
}
|
|
112
|
-
async listGroupByPrinterStatus() {
|
|
113
|
-
const printCompletionsAggr = await _models.PrintCompletion.aggregate([
|
|
114
|
-
{
|
|
115
|
-
$group: {
|
|
116
|
-
_id: "$printerId",
|
|
117
|
-
printEvents: {
|
|
118
|
-
$push: {
|
|
119
|
-
printerId: "$printerId",
|
|
120
|
-
context: "$context",
|
|
121
|
-
completionLog: "$completionLog",
|
|
122
|
-
fileName: "$fileName",
|
|
123
|
-
status: "$status",
|
|
124
|
-
createdAt: "$createdAt"
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
]);
|
|
130
|
-
return (0, _printcompletionshared.processCompletions)(printCompletionsAggr);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
//# sourceMappingURL=print-completion.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/mongoose/print-completion.service.ts"],"names":["PrintCompletionService","logger","loggerFactory","name","toDto","entity","id","completionLog","context","fileName","createdAt","status","printerId","toString","create","input","validateInput","createPrintCompletionSchema","PrintCompletion","Date","now","list","find","findPrintCompletion","correlationId","updateContext","length","warn","completionEntry","findOne","EVENT_TYPES","PrintStarted","save","loadPrintContexts","contexts","aggregate","$sort","$group","_id","$first","$match","$nin","PrintDone","PrintFailed","Object","fromEntries","map","c","listGroupByPrinterStatus","printCompletionsAggr","printEvents","$push","processCompletions"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/mongoose/print-completion.shared.ts"],"names":["processCompletions","durationDayMSec","completions","map","pc","printerId","_id","jobs","groupArrayBy","printEvents","filter","e","context","correlationId","printJobs","Object","entries","id","events","eventMap","status","createdAt","fileName","completionLog","lastEvent","reduce","e1","e2","correlationIds","j","printCount","length","eventCount","mappedEvents","failureEvents","EVENT_TYPES","PrintFailed","failureCount","lastFailure","j1","j2","failureEventsLastWeek","Date","now","failureEventsLast48H","failureEventsLast24H","successEvents","PrintDone","successCount","lastSuccess","successEventsLastWeek","successEventsLast48H","successEventsLast24H"],"mappings":"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"}
|