@fdm-monster/server 1.5.1 → 1.5.4
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/README.md +1 -1
- package/dist/constants/authorization.constants.js +1 -2
- package/dist/constants/authorization.constants.js.map +1 -1
- package/dist/constants/http-status-codes.constants.js +62 -255
- package/dist/constants/http-status-codes.constants.js.map +1 -1
- package/dist/constants/server-settings.constants.js +0 -4
- package/dist/constants/server-settings.constants.js.map +1 -1
- package/dist/constants/service.constants.js +3 -10
- package/dist/constants/service.constants.js.map +1 -1
- package/dist/container.js +66 -69
- package/dist/container.js.map +1 -1
- package/dist/container.tokens.js +2 -7
- package/dist/container.tokens.js.map +1 -1
- package/dist/controllers/auth.controller.js +0 -2
- package/dist/controllers/auth.controller.js.map +1 -1
- package/dist/controllers/batch-call.controller.js +7 -5
- package/dist/controllers/batch-call.controller.js.map +1 -1
- package/dist/controllers/camera-stream.controller.js +6 -4
- package/dist/controllers/camera-stream.controller.js.map +1 -1
- package/dist/controllers/custom-gcode.controller.js +11 -11
- package/dist/controllers/custom-gcode.controller.js.map +1 -1
- package/dist/controllers/floor.controller.js +9 -12
- package/dist/controllers/floor.controller.js.map +1 -1
- package/dist/controllers/plugin-firmware-update.controller.js +1 -3
- package/dist/controllers/plugin-firmware-update.controller.js.map +1 -1
- package/dist/controllers/print-completion.controller.js +1 -4
- package/dist/controllers/print-completion.controller.js.map +1 -1
- package/dist/controllers/printer-files.controller.js +22 -39
- package/dist/controllers/printer-files.controller.js.map +1 -1
- package/dist/controllers/printer-settings.controller.js +8 -6
- package/dist/controllers/printer-settings.controller.js.map +1 -1
- package/dist/controllers/printer.controller.js +7 -37
- package/dist/controllers/printer.controller.js.map +1 -1
- package/dist/controllers/server-private.controller.js +0 -1
- package/dist/controllers/server-private.controller.js.map +1 -1
- package/dist/controllers/server-public.controller.js +0 -1
- package/dist/controllers/server-public.controller.js.map +1 -1
- package/dist/controllers/settings.controller.js +0 -2
- package/dist/controllers/settings.controller.js.map +1 -1
- package/dist/controllers/user.controller.js +10 -17
- package/dist/controllers/user.controller.js.map +1 -1
- package/dist/controllers/validation/batch-controller.validation.js +10 -9
- package/dist/controllers/validation/batch-controller.validation.js.map +1 -1
- package/dist/controllers/validation/generic.validation.js +16 -7
- package/dist/controllers/validation/generic.validation.js.map +1 -1
- package/dist/controllers/validation/setting.validation.js +0 -1
- package/dist/controllers/validation/setting.validation.js.map +1 -1
- package/dist/handlers/cache-manager.js +1 -1
- package/dist/handlers/cache-manager.js.map +1 -1
- package/dist/handlers/event-emitter.js +0 -7
- package/dist/handlers/event-emitter.js.map +1 -1
- package/dist/handlers/logger.js +1 -1
- package/dist/handlers/logger.js.map +1 -1
- package/dist/handlers/validators.js +1 -1
- package/dist/handlers/validators.js.map +1 -1
- package/dist/middleware/authenticate.js +23 -23
- package/dist/middleware/authenticate.js.map +1 -1
- package/dist/middleware/exception.filter.js +0 -1
- 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/models/Auth/User.js +0 -2
- package/dist/models/Auth/User.js.map +1 -1
- package/dist/models/FloorPrinter.js.map +1 -1
- package/dist/models/PrintCompletion.js.map +1 -1
- package/dist/models/Printer.js +2 -11
- package/dist/models/Printer.js.map +1 -1
- package/dist/models/Settings.js +0 -1
- package/dist/models/Settings.js.map +1 -1
- package/dist/mongo-migrations/20210713120034-printers-settingsapperance-apikey.js +0 -4
- package/dist/mongo-migrations/20210713120034-printers-settingsapperance-apikey.js.map +1 -1
- package/dist/mongo-migrations/20210907173950-printers-enabled.js +0 -4
- package/dist/mongo-migrations/20210907173950-printers-enabled.js.map +1 -1
- package/dist/mongo-migrations/20211029110742-user-password-passwordhash.js +0 -4
- package/dist/mongo-migrations/20211029110742-user-password-passwordhash.js.map +1 -1
- package/dist/mongo-migrations/20231111081809-printer-flatten-name.js +35 -0
- package/dist/mongo-migrations/20231111081809-printer-flatten-name.js.map +1 -0
- package/dist/mongo-migrations/20231111082521-printer-remove-settingsappearance.js +41 -0
- package/dist/mongo-migrations/20231111082521-printer-remove-settingsappearance.js.map +1 -0
- package/dist/server.constants.js +1 -19
- package/dist/server.constants.js.map +1 -1
- package/dist/server.core.js +6 -7
- package/dist/server.core.js.map +1 -1
- package/dist/server.env.js +6 -18
- package/dist/server.env.js.map +1 -1
- package/dist/server.host.js +6 -8
- package/dist/server.host.js.map +1 -1
- package/dist/services/authentication/auth.service.js +2 -20
- package/dist/services/authentication/auth.service.js.map +1 -1
- package/dist/services/authentication/jwt.service.js +1 -1
- package/dist/services/authentication/jwt.service.js.map +1 -1
- package/dist/services/authentication/permission.service.js.map +1 -1
- package/dist/services/authentication/refresh-token.service.js +8 -1
- package/dist/services/authentication/refresh-token.service.js.map +1 -1
- package/dist/services/authentication/role.service.js +1 -1
- package/dist/services/authentication/role.service.js.map +1 -1
- package/dist/services/authentication/user.service.js +1 -5
- package/dist/services/authentication/user.service.js.map +1 -1
- package/dist/services/batch-call.service.js +4 -8
- package/dist/services/batch-call.service.js.map +1 -1
- package/dist/services/camera-stream.service.js +1 -2
- package/dist/services/camera-stream.service.js.map +1 -1
- package/dist/services/core/client-bundle.service.js +1 -4
- package/dist/services/core/client-bundle.service.js.map +1 -1
- package/dist/services/core/logs-manager.service.js +1 -2
- package/dist/services/core/logs-manager.service.js.map +1 -1
- package/dist/services/core/multer.service.js +3 -6
- package/dist/services/core/multer.service.js.map +1 -1
- package/dist/services/core/server-release.service.js +4 -13
- package/dist/services/core/server-release.service.js.map +1 -1
- package/dist/services/core/server-update.service.js +0 -2
- package/dist/services/core/server-update.service.js.map +1 -1
- package/dist/services/core/task-manager.service.js +9 -22
- package/dist/services/core/task-manager.service.js.map +1 -1
- package/dist/services/core/yaml.service.js +28 -22
- package/dist/services/core/yaml.service.js.map +1 -1
- package/dist/services/custom-gcode.service.js +2 -2
- package/dist/services/custom-gcode.service.js.map +1 -1
- package/dist/services/floor.service.js +4 -45
- package/dist/services/floor.service.js.map +1 -1
- package/dist/services/interfaces/floor.dto.js +38 -0
- package/dist/services/interfaces/floor.dto.js.map +1 -1
- package/dist/services/interfaces/print-completion-context.dto.js +6 -0
- package/dist/services/interfaces/print-completion-context.dto.js.map +1 -0
- package/dist/services/interfaces/print-completion.dto.js +40 -0
- package/dist/services/interfaces/print-completion.dto.js.map +1 -0
- package/dist/services/interfaces/print-completion.service.js +6 -0
- package/dist/services/interfaces/print-completion.service.js.map +1 -0
- package/dist/services/interfaces/printer.dto.js +16 -3
- package/dist/services/interfaces/printer.dto.js.map +1 -1
- package/dist/services/interfaces/refresh-token.dto.js +0 -2
- package/dist/services/interfaces/refresh-token.dto.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/user-role.dto.js +18 -0
- package/dist/services/interfaces/user-role.dto.js.map +1 -0
- package/dist/services/octoprint/constants/octoprint-service.constants.js +0 -3
- package/dist/services/octoprint/constants/octoprint-service.constants.js.map +1 -1
- package/dist/services/octoprint/octoprint-api.routes.js +2 -4
- package/dist/services/octoprint/octoprint-api.routes.js.map +1 -1
- package/dist/services/octoprint/octoprint-api.service.js +10 -27
- package/dist/services/octoprint/octoprint-api.service.js.map +1 -1
- package/dist/services/octoprint/octoprint-sockio.adapter.js +10 -43
- package/dist/services/octoprint/octoprint-sockio.adapter.js.map +1 -1
- package/dist/services/octoprint/plugin-base.service.js +0 -1
- package/dist/services/octoprint/plugin-base.service.js.map +1 -1
- package/dist/services/octoprint/plugin-firmware-update.service.js +0 -3
- package/dist/services/octoprint/plugin-firmware-update.service.js.map +1 -1
- package/dist/services/print-completion.service.js +14 -45
- package/dist/services/print-completion.service.js.map +1 -1
- package/dist/services/print-completion.shared.js +59 -0
- package/dist/services/print-completion.shared.js.map +1 -0
- package/dist/services/printer-files.service.js +1 -5
- package/dist/services/printer-files.service.js.map +1 -1
- package/dist/services/printer.service.js +20 -15
- package/dist/services/printer.service.js.map +1 -1
- package/dist/services/settings.service.js +2 -8
- package/dist/services/settings.service.js.map +1 -1
- package/dist/services/validators/floor-service.validation.js +13 -11
- package/dist/services/validators/floor-service.validation.js.map +1 -1
- package/dist/services/validators/printer-service.validation.js +1 -2
- package/dist/services/validators/printer-service.validation.js.map +1 -1
- package/dist/services/validators/user-service.validation.js +10 -10
- package/dist/services/validators/user-service.validation.js.map +1 -1
- package/dist/services/validators/yaml-service.validation.js +13 -14
- package/dist/services/validators/yaml-service.validation.js.map +1 -1
- package/dist/state/file-upload-tracker.cache.js +0 -1
- package/dist/state/file-upload-tracker.cache.js.map +1 -1
- package/dist/state/file.cache.js +25 -33
- package/dist/state/file.cache.js.map +1 -1
- package/dist/state/floor.store.js +0 -1
- package/dist/state/floor.store.js.map +1 -1
- package/dist/state/printer-events.cache.js +1 -3
- package/dist/state/printer-events.cache.js.map +1 -1
- package/dist/state/{files.store.js → printer-files.store.js} +12 -26
- package/dist/state/printer-files.store.js.map +1 -0
- package/dist/state/printer-socket.store.js +7 -32
- package/dist/state/printer-socket.store.js.map +1 -1
- package/dist/state/printer.cache.js +4 -9
- package/dist/state/printer.cache.js.map +1 -1
- package/dist/state/settings.store.js +0 -2
- package/dist/state/settings.store.js.map +1 -1
- package/dist/state/socket-io.gateway.js +0 -2
- package/dist/state/socket-io.gateway.js.map +1 -1
- package/dist/state/test-printer-socket.store.js +1 -7
- package/dist/state/test-printer-socket.store.js.map +1 -1
- package/dist/task.presets.js +0 -11
- package/dist/task.presets.js.map +1 -1
- package/dist/tasks/boot.task.js +6 -10
- package/dist/tasks/boot.task.js.map +1 -1
- package/dist/tasks/print-completion.socketio.task.js +10 -11
- package/dist/tasks/print-completion.socketio.task.js.map +1 -1
- package/dist/tasks/printer-file-clean.task.js +13 -21
- package/dist/tasks/printer-file-clean.task.js.map +1 -1
- package/dist/tasks/printer-websocket-restore.task.js +1 -5
- package/dist/tasks/printer-websocket-restore.task.js.map +1 -1
- package/dist/tasks/printer-websocket.task.js +5 -15
- package/dist/tasks/printer-websocket.task.js.map +1 -1
- package/dist/tasks/socketio.task.js +0 -1
- package/dist/tasks/socketio.task.js.map +1 -1
- package/dist/tasks.js +0 -2
- package/dist/tasks.js.map +1 -1
- package/dist/types/express/index.d.js +0 -1
- package/dist/types/express/index.d.js.map +1 -1
- package/dist/utils/env.utils.js +2 -5
- package/dist/utils/env.utils.js.map +1 -1
- package/dist/utils/is-docker.js +1 -1
- package/dist/utils/is-docker.js.map +1 -1
- package/dist/utils/normalize-url.js +0 -35
- package/dist/utils/normalize-url.js.map +1 -1
- package/dist/utils/semver.utils.js +0 -1
- package/dist/utils/semver.utils.js.map +1 -1
- package/dist/utils/url.utils.js +1 -0
- package/dist/utils/url.utils.js.map +1 -1
- package/dist/utils/websocket.adapter.js +8 -54
- package/dist/utils/websocket.adapter.js.map +1 -1
- package/package.json +37 -37
- package/dist/state/files.store.js.map +0 -1
- package/dist/utils/mapper.utils.js +0 -33
- package/dist/utils/mapper.utils.js.map +0 -1
|
@@ -11,13 +11,25 @@ Object.defineProperty(exports, "PrintCompletionService", {
|
|
|
11
11
|
const _models = require("../models");
|
|
12
12
|
const _printcompletionservicevalidation = require("./validators/print-completion-service.validation");
|
|
13
13
|
const _validators = require("../handlers/validators");
|
|
14
|
-
const _arrayutil = require("../utils/array.util");
|
|
15
14
|
const _octoprintwebsocketconstants = require("./octoprint/constants/octoprint-websocket.constants");
|
|
15
|
+
const _printcompletionshared = require("./print-completion.shared");
|
|
16
16
|
class PrintCompletionService {
|
|
17
17
|
logger;
|
|
18
18
|
constructor({ loggerFactory }){
|
|
19
19
|
this.logger = loggerFactory(PrintCompletionService.name);
|
|
20
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
|
+
correlationId: entity.correlationId,
|
|
29
|
+
status: entity.status,
|
|
30
|
+
printerId: entity.printerId.toString()
|
|
31
|
+
};
|
|
32
|
+
}
|
|
21
33
|
async create(input) {
|
|
22
34
|
const { printerId, fileName, completionLog, status, context } = await (0, _validators.validateInput)(input, _printcompletionservicevalidation.createPrintCompletionRules);
|
|
23
35
|
return _models.PrintCompletion.create({
|
|
@@ -99,9 +111,6 @@ class PrintCompletionService {
|
|
|
99
111
|
{
|
|
100
112
|
$group: {
|
|
101
113
|
_id: "$printerId",
|
|
102
|
-
eventCount: {
|
|
103
|
-
$sum: 1
|
|
104
|
-
},
|
|
105
114
|
printEvents: {
|
|
106
115
|
$push: {
|
|
107
116
|
printerId: "$printerId",
|
|
@@ -115,47 +124,7 @@ class PrintCompletionService {
|
|
|
115
124
|
}
|
|
116
125
|
}
|
|
117
126
|
]);
|
|
118
|
-
|
|
119
|
-
return printCompletionsAggr.map((pc)=>{
|
|
120
|
-
const jobs = (0, _arrayutil.groupArrayBy)(pc.printEvents, (e)=>e.context?.correlationId);
|
|
121
|
-
pc.printJobs = Object.entries(jobs).map(([id, events])=>{
|
|
122
|
-
const eventMap = events.map(({ status, createdAt, fileName, completionLog })=>({
|
|
123
|
-
status,
|
|
124
|
-
createdAt,
|
|
125
|
-
fileName,
|
|
126
|
-
completionLog
|
|
127
|
-
}));
|
|
128
|
-
return {
|
|
129
|
-
correlationId: id,
|
|
130
|
-
events: eventMap,
|
|
131
|
-
lastEvent: eventMap.reduce((e1, e2)=>e1.createdAt > e2.createdAt ? e1 : e2)
|
|
132
|
-
};
|
|
133
|
-
});
|
|
134
|
-
pc.correlationIds = pc.printJobs.map((j)=>j.correlationId);
|
|
135
|
-
pc.printCount = pc.correlationIds?.length;
|
|
136
|
-
const mappedEvents = pc.printEvents.map(({ status, createdAt, fileName, context, completionLog })=>({
|
|
137
|
-
status,
|
|
138
|
-
createdAt,
|
|
139
|
-
fileName,
|
|
140
|
-
context,
|
|
141
|
-
completionLog
|
|
142
|
-
}));
|
|
143
|
-
const failureEvents = mappedEvents.filter((e)=>e.status === _octoprintwebsocketconstants.EVENT_TYPES.PrintFailed);
|
|
144
|
-
pc.failureCount = failureEvents?.length;
|
|
145
|
-
pc.lastFailure = failureEvents?.length ? failureEvents.reduce((j1, j2)=>j1.createdAt > j2.createdAt ? j1 : j2) : null;
|
|
146
|
-
pc.failureEventsLastWeek = failureEvents.filter((e)=>e.createdAt > Date.now() - 7 * durationDayMSec)?.length;
|
|
147
|
-
pc.failureEventsLast48H = failureEvents.filter((e)=>e.createdAt > Date.now() - 2 * durationDayMSec)?.length;
|
|
148
|
-
pc.failureEventsLast24H = failureEvents.filter((e)=>e.createdAt > Date.now() - durationDayMSec)?.length;
|
|
149
|
-
const successEvents = mappedEvents.filter((e)=>e.status === _octoprintwebsocketconstants.EVENT_TYPES.PrintDone);
|
|
150
|
-
pc.successCount = successEvents?.length;
|
|
151
|
-
pc.lastSuccess = successEvents?.length ? successEvents?.reduce((j1, j2)=>j1.createdAt > j2.createdAt ? j1 : j2) : null;
|
|
152
|
-
pc.successEventsLastWeek = successEvents.filter((e)=>e.createdAt > Date.now() - 7 * durationDayMSec)?.length;
|
|
153
|
-
pc.successEventsLast48H = successEvents.filter((e)=>e.createdAt > Date.now() - 2 * durationDayMSec)?.length;
|
|
154
|
-
pc.successEventsLast24H = successEvents.filter((e)=>e.createdAt > Date.now() - durationDayMSec)?.length;
|
|
155
|
-
// Explodes in size quickly, remove the event timeline
|
|
156
|
-
delete pc.printEvents;
|
|
157
|
-
return pc;
|
|
158
|
-
});
|
|
127
|
+
return (0, _printcompletionshared.processCompletions)(printCompletionsAggr);
|
|
159
128
|
}
|
|
160
129
|
}
|
|
161
130
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/print-completion.service.ts"],"names":["PrintCompletionService","logger","constructor","loggerFactory","name","
|
|
1
|
+
{"version":3,"sources":["../../src/services/print-completion.service.ts"],"names":["PrintCompletionService","logger","constructor","loggerFactory","name","toDto","entity","id","completionLog","context","fileName","createdAt","correlationId","status","printerId","toString","create","input","validateInput","createPrintCompletionRules","PrintCompletion","Date","now","list","find","findPrintCompletion","updateContext","completionEntry","findOne","EVENT_TYPES","PrintStarted","warn","save","loadPrintContexts","contexts","aggregate","$sort","$group","_id","$first","$match","$nin","PrintDone","PrintFailed","Object","fromEntries","map","c","listGroupByPrinterStatus","printCompletionsAggr","printEvents","$push","processCompletions"],"mappings":";;;;+BAYaA;;;eAAAA;;;wBAZmB;kDACW;4BACb;6CACF;uCAOO;AAE5B,MAAMA;IACXC,OAAsB;IAEtBC,YAAY,EAAEC,aAAa,EAAqC,CAAE;QAChE,IAAI,CAACF,MAAM,GAAGE,cAAcH,uBAAuBI,IAAI;IACzD;IAEAC,MAAMC,MAAwB,EAAmC;QAC/D,OAAO;YACLC,IAAID,OAAOC,EAAE;YACbC,eAAeF,OAAOE,aAAa;YACnCC,SAASH,OAAOG,OAAO;YACvBC,UAAUJ,OAAOI,QAAQ;YACzBC,WAAWL,OAAOK,SAAS;YAC3BC,eAAeN,OAAOM,aAAa;YACnCC,QAAQP,OAAOO,MAAM;YACrBC,WAAWR,OAAOQ,SAAS,CAACC,QAAQ;QACtC;IACF;IAEA,MAAMC,OAAOC,KAA4C,EAAE;QACzD,MAAM,EAAEH,SAAS,EAAEJ,QAAQ,EAAEF,aAAa,EAAEK,MAAM,EAAEJ,OAAO,EAAE,GAAG,MAAMS,IAAAA,yBAAa,EAACD,OAAOE,4DAA0B;QAErH,OAAOC,uBAAe,CAACJ,MAAM,CAAC;YAC5BF;YACAJ;YACAF;YACAK;YACAF,WAAWU,KAAKC,GAAG;YACnBb;QACF;IACF;IAEA,MAAMc,OAAO;QACX,OAAOH,uBAAe,CAACI,IAAI,CAAC,CAAC;IAC/B;IAEA,MAAMC,oBAAoBb,aAAqB,EAAE;QAC/C,OAAOQ,uBAAe,CAACI,IAAI,CAAC;YAC1B,yBAAyBZ;QAC3B;IACF;IAEA,MAAMc,cAAcd,aAAqB,EAAEH,OAA+B,EAAE;QAC1E,MAAMkB,kBAAkB,MAAMP,uBAAe,CAACQ,OAAO,CAAC;YACpD,yBAAyBhB;YACzBC,QAAQgB,wCAAW,CAACC,YAAY;QAClC;QAEA,IAAI,CAACH,iBAAiB;YACpB,IAAI,CAAC1B,MAAM,CAAC8B,IAAI,CAAC,CAAC,yBAAyB,EAAEnB,cAAc,0DAA0D,CAAC;YACtH;QACF;QACAe,gBAAgBlB,OAAO,GAAGA;QAC1B,MAAMkB,gBAAgBK,IAAI;IAC5B;IAEA,MAAMC,oBAAoB;QACxB,MAAMC,WAAW,MAAMd,uBAAe,CAACe,SAAS,CAAC;YAC/C;gBAAEC,OAAO;oBAAEtB,WAAW;oBAAGH,WAAW,CAAC;gBAAE;YAAE;YACzC;gBACE0B,QAAQ;oBACNC,KAAK;oBACL3B,WAAW;wBAAE4B,QAAQ;oBAAa;oBAClC9B,SAAS;wBAAE8B,QAAQ;oBAAW;oBAC9B1B,QAAQ;wBAAE0B,QAAQ;oBAAU;oBAC5B7B,UAAU;wBAAE6B,QAAQ;oBAAY;gBAClC;YACF;YACA;gBACEC,QAAQ;oBACN3B,QAAQ;wBACN4B,MAAM;4BAACZ,wCAAW,CAACa,SAAS;4BAAEb,wCAAW,CAACc,WAAW;yBAAC;oBACxD;gBACF;YACF;SACD;QAED,OAAOC,OAAOC,WAAW,CACvBX,SAASY,GAAG,CAAC,CAACC;YACZA,EAAEjC,SAAS,GAAGiC,EAAET,GAAG;YACnB,OAAOS,EAAET,GAAG;YACZ,OAAO;gBAACS,EAAEjC,SAAS;gBAAEiC;aAAE;QACzB;IAEJ;IAEA,MAAMC,2BAA2B;QAC/B,MAAMC,uBAAuB,MAAM7B,uBAAe,CAACe,SAAS,CAAC;YAC3D;gBACEE,QAAQ;oBACNC,KAAK;oBACLY,aAAa;wBACXC,OAAO;4BACLrC,WAAW;4BACXL,SAAS;4BACTD,eAAe;4BACfE,UAAU;4BACVG,QAAQ;4BACRF,WAAW;wBACb;oBACF;gBACF;YACF;SACD;QAED,OAAOyC,IAAAA,yCAAkB,EAACH;IAC5B;AACF"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "processCompletions", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return processCompletions;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _arrayutil = require("../utils/array.util");
|
|
12
|
+
const _octoprintwebsocketconstants = require("./octoprint/constants/octoprint-websocket.constants");
|
|
13
|
+
const durationDayMSec = 24 * 60 * 60 * 1000;
|
|
14
|
+
function processCompletions(completions) {
|
|
15
|
+
return completions.map((pc)=>{
|
|
16
|
+
pc.printerId = pc.printerId ?? pc._id;
|
|
17
|
+
delete pc._id;
|
|
18
|
+
const jobs = (0, _arrayutil.groupArrayBy)(pc.printEvents, (e)=>e.context?.correlationId);
|
|
19
|
+
pc.printJobs = Object.entries(jobs).map(([id, events])=>{
|
|
20
|
+
const eventMap = events.map(({ status, createdAt, fileName, completionLog })=>({
|
|
21
|
+
status,
|
|
22
|
+
createdAt,
|
|
23
|
+
fileName,
|
|
24
|
+
completionLog
|
|
25
|
+
}));
|
|
26
|
+
return {
|
|
27
|
+
correlationId: id,
|
|
28
|
+
events: eventMap,
|
|
29
|
+
lastEvent: eventMap.reduce((e1, e2)=>e1.createdAt > e2.createdAt ? e1 : e2)
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
pc.correlationIds = pc.printJobs.map((j)=>j.correlationId);
|
|
33
|
+
pc.printCount = pc.correlationIds?.length;
|
|
34
|
+
pc.eventCount = pc.printEvents.length;
|
|
35
|
+
const mappedEvents = pc.printEvents.map(({ status, createdAt, fileName, context, completionLog })=>({
|
|
36
|
+
status,
|
|
37
|
+
createdAt,
|
|
38
|
+
fileName,
|
|
39
|
+
context,
|
|
40
|
+
completionLog
|
|
41
|
+
}));
|
|
42
|
+
const failureEvents = mappedEvents.filter((e)=>e.status === _octoprintwebsocketconstants.EVENT_TYPES.PrintFailed);
|
|
43
|
+
pc.failureCount = failureEvents?.length;
|
|
44
|
+
pc.lastFailure = failureEvents?.length ? failureEvents.reduce((j1, j2)=>j1.createdAt > j2.createdAt ? j1 : j2) : null;
|
|
45
|
+
pc.failureEventsLastWeek = failureEvents.filter((e)=>e.createdAt > Date.now() - 7 * durationDayMSec)?.length;
|
|
46
|
+
pc.failureEventsLast48H = failureEvents.filter((e)=>e.createdAt > Date.now() - 2 * durationDayMSec)?.length;
|
|
47
|
+
pc.failureEventsLast24H = failureEvents.filter((e)=>e.createdAt > Date.now() - durationDayMSec)?.length;
|
|
48
|
+
const successEvents = mappedEvents.filter((e)=>e.status === _octoprintwebsocketconstants.EVENT_TYPES.PrintDone);
|
|
49
|
+
pc.successCount = successEvents?.length;
|
|
50
|
+
pc.lastSuccess = successEvents?.length ? successEvents?.reduce((j1, j2)=>j1.createdAt > j2.createdAt ? j1 : j2) : null;
|
|
51
|
+
pc.successEventsLastWeek = successEvents.filter((e)=>e.createdAt > Date.now() - 7 * durationDayMSec)?.length;
|
|
52
|
+
pc.successEventsLast48H = successEvents.filter((e)=>e.createdAt > Date.now() - 2 * durationDayMSec)?.length;
|
|
53
|
+
pc.successEventsLast24H = successEvents.filter((e)=>e.createdAt > Date.now() - durationDayMSec)?.length;
|
|
54
|
+
delete pc.printEvents;
|
|
55
|
+
return pc;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=print-completion.shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/services/print-completion.shared.ts"],"names":["processCompletions","durationDayMSec","completions","map","pc","printerId","_id","jobs","groupArrayBy","printEvents","e","context","correlationId","printJobs","Object","entries","id","events","eventMap","status","createdAt","fileName","completionLog","lastEvent","reduce","e1","e2","correlationIds","j","printCount","length","eventCount","mappedEvents","failureEvents","filter","EVENT_TYPES","PrintFailed","failureCount","lastFailure","j1","j2","failureEventsLastWeek","Date","now","failureEventsLast48H","failureEventsLast24H","successEvents","PrintDone","successCount","lastSuccess","successEventsLastWeek","successEventsLast48H","successEventsLast24H"],"mappings":"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"}
|
|
@@ -33,7 +33,6 @@ class PrinterFilesService {
|
|
|
33
33
|
}
|
|
34
34
|
async appendOrReplaceFile(printerId, addedFile) {
|
|
35
35
|
const printer = await this.printerService.get(printerId);
|
|
36
|
-
// TODO replace with file storage
|
|
37
36
|
const foundFileIndex = printer.fileList.files.findIndex((f)=>f.path === addedFile.path);
|
|
38
37
|
if (foundFileIndex === -1) {
|
|
39
38
|
printer.fileList.files.push(addedFile);
|
|
@@ -42,7 +41,6 @@ class PrinterFilesService {
|
|
|
42
41
|
}
|
|
43
42
|
printer.markModified("fileList");
|
|
44
43
|
await printer.save();
|
|
45
|
-
// Only now are we allowed to adjust the last uploaded printer file
|
|
46
44
|
let lastPrintedFile = {};
|
|
47
45
|
try {
|
|
48
46
|
lastPrintedFile = await this.setPrinterLastPrintedFile(printerId, addedFile.name);
|
|
@@ -70,9 +68,7 @@ class PrinterFilesService {
|
|
|
70
68
|
printer.markModified("fileList");
|
|
71
69
|
await printer.save();
|
|
72
70
|
}
|
|
73
|
-
|
|
74
|
-
* Perform delete action on database
|
|
75
|
-
**/ async deleteFile(printerId, filePath, throwError = true) {
|
|
71
|
+
async deleteFile(printerId, filePath, throwError = true) {
|
|
76
72
|
const printer = await this.printerService.get(printerId);
|
|
77
73
|
const fileIndex = (0, _findpredicateutils.findFileIndex)(printer.fileList, filePath);
|
|
78
74
|
if (fileIndex === -1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/printer-files.service.ts"],"names":["PrinterFilesService","printerService","logger","constructor","loggerFactory","name","getPrinterFilesStorage","printerId","printer","get","fileList","storage","updateFiles","markModified","save","appendOrReplaceFile","addedFile","foundFileIndex","files","findIndex","f","path","push","lastPrintedFile","setPrinterLastPrintedFile","e","warn","fileName","editTimestamp","Date","now","updateLastPrintedFile","log","clearFiles","deleteFile","filePath","throwError","fileIndex","findFileIndex","NotFoundException","splice"],"mappings":";;;;+
|
|
1
|
+
{"version":3,"sources":["../../src/services/printer-files.service.ts"],"names":["PrinterFilesService","printerService","logger","constructor","loggerFactory","name","getPrinterFilesStorage","printerId","printer","get","fileList","storage","updateFiles","markModified","save","appendOrReplaceFile","addedFile","foundFileIndex","files","findIndex","f","path","push","lastPrintedFile","setPrinterLastPrintedFile","e","warn","fileName","editTimestamp","Date","now","updateLastPrintedFile","log","clearFiles","deleteFile","filePath","throwError","fileIndex","findFileIndex","NotFoundException","splice"],"mappings":"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"}
|
|
@@ -22,6 +22,22 @@ class PrinterService {
|
|
|
22
22
|
this.eventEmitter2 = eventEmitter2;
|
|
23
23
|
this.logger = loggerFactory(PrinterService.name);
|
|
24
24
|
}
|
|
25
|
+
toUnsafeDto(entity) {
|
|
26
|
+
return {
|
|
27
|
+
...this.toDto(entity),
|
|
28
|
+
apiKey: entity.apiKey,
|
|
29
|
+
printerURL: entity.printerURL
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
toDto(entity) {
|
|
33
|
+
return {
|
|
34
|
+
id: entity.id,
|
|
35
|
+
name: entity.name,
|
|
36
|
+
enabled: entity.enabled,
|
|
37
|
+
disabledReason: entity.disabledReason,
|
|
38
|
+
dateAdded: entity.dateAdded
|
|
39
|
+
};
|
|
40
|
+
}
|
|
25
41
|
async list() {
|
|
26
42
|
return _models.Printer.find({}, null, {
|
|
27
43
|
sort: {
|
|
@@ -39,12 +55,7 @@ class PrinterService {
|
|
|
39
55
|
}
|
|
40
56
|
return printer;
|
|
41
57
|
}
|
|
42
|
-
|
|
43
|
-
* Stores a new printer into the database.
|
|
44
|
-
* @param {Object} newPrinter object to create.
|
|
45
|
-
* @param {boolean} emitEvent
|
|
46
|
-
* @throws {Error} If the printer is not correctly provided.
|
|
47
|
-
*/ async create(newPrinter, emitEvent = true) {
|
|
58
|
+
async create(newPrinter, emitEvent = true) {
|
|
48
59
|
if (!newPrinter) throw new Error("Missing printer");
|
|
49
60
|
const mergedPrinter = await this.validateAndDefault(newPrinter);
|
|
50
61
|
mergedPrinter.dateAdded = Date.now();
|
|
@@ -56,21 +67,16 @@ class PrinterService {
|
|
|
56
67
|
}
|
|
57
68
|
return printer;
|
|
58
69
|
}
|
|
59
|
-
|
|
60
|
-
* Explicit patching of printer document
|
|
61
|
-
* @param printerId
|
|
62
|
-
* @param updateData
|
|
63
|
-
* @returns {Promise<Query<Document<any, any, unknown> | null, Document<any, any, unknown>, {}, unknown>>}
|
|
64
|
-
*/ async update(printerId, updateData) {
|
|
70
|
+
async update(printerId, updateData) {
|
|
65
71
|
const printer = await this.get(printerId);
|
|
66
72
|
updateData.printerURL = (0, _urlutils.normalizeURLWithProtocol)(updateData.printerURL);
|
|
67
|
-
const { printerURL, apiKey, enabled,
|
|
73
|
+
const { printerURL, apiKey, enabled, name } = await (0, _validators.validateInput)(updateData, _printerservicevalidation.createMongoPrinterRules);
|
|
68
74
|
printer.printerURL = printerURL;
|
|
69
75
|
printer.apiKey = apiKey;
|
|
70
76
|
if (enabled !== undefined) {
|
|
71
77
|
printer.enabled = enabled;
|
|
72
78
|
}
|
|
73
|
-
printer.
|
|
79
|
+
printer.name = name;
|
|
74
80
|
await printer.save();
|
|
75
81
|
this.eventEmitter2.emit(_eventconstants.printerEvents.printerUpdated, {
|
|
76
82
|
printer
|
|
@@ -109,7 +115,6 @@ class PrinterService {
|
|
|
109
115
|
await this.validateAndDefault(printer);
|
|
110
116
|
}
|
|
111
117
|
this.logger.log(`Validation passed. Creating ${printers.length} printers`);
|
|
112
|
-
// We've passed validation completely - creation will likely succeed
|
|
113
118
|
const newPrinters = [];
|
|
114
119
|
for (let printer of printers){
|
|
115
120
|
const createdPrinter = await this.create(printer, false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/printer.service.ts"],"names":["PrinterService","eventEmitter2","logger","constructor","loggerFactory","name","list","Printer","find","sort","
|
|
1
|
+
{"version":3,"sources":["../../src/services/printer.service.ts"],"names":["PrinterService","eventEmitter2","logger","constructor","loggerFactory","name","toUnsafeDto","entity","toDto","apiKey","printerURL","id","enabled","disabledReason","dateAdded","list","Printer","find","sort","get","printerId","filter","_id","printer","findOne","NotFoundException","create","newPrinter","emitEvent","Error","mergedPrinter","validateAndDefault","Date","now","emit","printerEvents","printerCreated","update","updateData","normalizeURLWithProtocol","validateInput","createMongoPrinterRules","undefined","save","printerUpdated","deleteMany","printerIds","$in","printersDeleted","delete","findOneAndDelete","batchImport","printers","length","log","newPrinters","createdPrinter","push","batchPrinterCreated","updateLastPrintedFile","lastPrintedFile","findByIdAndUpdate","new","useFindAndModify","updateFlowRate","flowRate","updateFeedRate","feedRate","updateConnectionSettings","updateEnabled","updatePrinterEnabledRule","updateDisabledReason","updatePrinterDisabledReasonRule","getDefaultPrinterEntry"],"mappings":"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"}
|
|
@@ -21,7 +21,6 @@ class SettingsService {
|
|
|
21
21
|
}
|
|
22
22
|
toDto(entity) {
|
|
23
23
|
return {
|
|
24
|
-
// Credential settings are not shared with the client
|
|
25
24
|
[_serversettingsconstants.serverSettingsKey]: entity[_serversettingsconstants.serverSettingsKey],
|
|
26
25
|
[_serversettingsconstants.wizardSettingKey]: entity[_serversettingsconstants.wizardSettingKey],
|
|
27
26
|
[_serversettingsconstants.frontendSettingKey]: entity[_serversettingsconstants.frontendSettingKey],
|
|
@@ -34,10 +33,8 @@ class SettingsService {
|
|
|
34
33
|
if (!settings) {
|
|
35
34
|
const defaultSettings = new _models.Settings((0, _serversettingsconstants.getDefaultSettings)());
|
|
36
35
|
await defaultSettings.save();
|
|
37
|
-
// Return to upper layer
|
|
38
36
|
return defaultSettings;
|
|
39
37
|
} else {
|
|
40
|
-
// Perform patch of settings
|
|
41
38
|
settings = this.migrateSettingsRuntime(settings);
|
|
42
39
|
return _models.Settings.findOneAndUpdate({
|
|
43
40
|
_id: settings.id
|
|
@@ -46,14 +43,11 @@ class SettingsService {
|
|
|
46
43
|
});
|
|
47
44
|
}
|
|
48
45
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
*/ migrateSettingsRuntime(knownSettings) {
|
|
52
|
-
const doc = knownSettings; // alias _doc also works
|
|
46
|
+
migrateSettingsRuntime(knownSettings) {
|
|
47
|
+
const doc = knownSettings;
|
|
53
48
|
if (!doc[_serversettingsconstants.fileCleanSettingKey]) {
|
|
54
49
|
doc[_serversettingsconstants.fileCleanSettingKey] = (0, _serversettingsconstants.getDefaultFileCleanSettings)();
|
|
55
50
|
}
|
|
56
|
-
// Server settings exist, but need updating with new ones if they don't exist.
|
|
57
51
|
if (!doc[_serversettingsconstants.wizardSettingKey]) {
|
|
58
52
|
doc[_serversettingsconstants.wizardSettingKey] = (0, _serversettingsconstants.getDefaultWizardSettings)();
|
|
59
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/settings.service.ts"],"names":["SettingsService","configService","constructor","toDto","entity","serverSettingsKey","wizardSettingKey","frontendSettingKey","fileCleanSettingKey","timeoutSettingKey","getOrCreate","settings","Settings","findOne","defaultSettings","getDefaultSettings","save","migrateSettingsRuntime","findOneAndUpdate","_id","id","new","knownSettings","doc","getDefaultFileCleanSettings","getDefaultWizardSettings","getDefaultTimeout","getDefaultServerSettings","credentialSettingsKey","getDefaultCredentialSettings","isWhiteListSettingEnabled","server","whitelistEnabled","whitelistedIpAddresses","getDefaultWhitelistIpAddresses","length","getDefaultFrontendSettings","patchFileCleanSettings","patchUpdate","validatedInput","validateInput","fileCleanSettingsUpdateRules","settingsDoc","Object","assign","patchWizardSettings","wizardUpdateRules","setWhitelist","enabled","ipAddresses","BadRequestException","whitelistSettingUpdateRules","updateFrontendSettings","frontendSettingsUpdateRules","frontendSettings","patchCredentialSettings","credentialSettingPatchRules","credentialSettings","patchServerSettings","serverSettingsUpdateRules","serverSettings","updateTimeoutSettings","timeoutSettingsUpdateRules","timeoutSettings","get","AppConstants","ENABLE_EXPERIMENTAL_WHITELIST_SETTINGS"],"mappings":";;;;+BA2CaA;;;eAAAA;;;wBA3CY;yCAgBlB;4BACuB;2CASvB;iCAasB;mCAEO;AAE7B,MAAMA;IACXC,cAA6B;IAC7BC,YAAY,EAAED,aAAa,EAAoC,CAAE;QAC/D,IAAI,CAACA,aAAa,GAAGA;IACvB;IAEAE,MAAMC,MAAiB,EAA4B;QACjD,OAAO;
|
|
1
|
+
{"version":3,"sources":["../../src/services/settings.service.ts"],"names":["SettingsService","configService","constructor","toDto","entity","serverSettingsKey","wizardSettingKey","frontendSettingKey","fileCleanSettingKey","timeoutSettingKey","getOrCreate","settings","Settings","findOne","defaultSettings","getDefaultSettings","save","migrateSettingsRuntime","findOneAndUpdate","_id","id","new","knownSettings","doc","getDefaultFileCleanSettings","getDefaultWizardSettings","getDefaultTimeout","getDefaultServerSettings","credentialSettingsKey","getDefaultCredentialSettings","isWhiteListSettingEnabled","server","whitelistEnabled","whitelistedIpAddresses","getDefaultWhitelistIpAddresses","length","getDefaultFrontendSettings","patchFileCleanSettings","patchUpdate","validatedInput","validateInput","fileCleanSettingsUpdateRules","settingsDoc","Object","assign","patchWizardSettings","wizardUpdateRules","setWhitelist","enabled","ipAddresses","BadRequestException","whitelistSettingUpdateRules","updateFrontendSettings","frontendSettingsUpdateRules","frontendSettings","patchCredentialSettings","credentialSettingPatchRules","credentialSettings","patchServerSettings","serverSettingsUpdateRules","serverSettings","updateTimeoutSettings","timeoutSettingsUpdateRules","timeoutSettings","get","AppConstants","ENABLE_EXPERIMENTAL_WHITELIST_SETTINGS"],"mappings":"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"}
|
|
@@ -29,22 +29,24 @@ _export(exports, {
|
|
|
29
29
|
}
|
|
30
30
|
});
|
|
31
31
|
const _serviceconstants = require("../../constants/service.constants");
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
32
|
+
const _genericvalidation = require("../../controllers/validation/generic.validation");
|
|
33
|
+
const removePrinterInFloorRules = (isSqlite)=>({
|
|
34
|
+
printerId: (0, _genericvalidation.idRuleV2)(isSqlite)
|
|
35
|
+
});
|
|
36
|
+
const printerInFloorRules = (isSqlite)=>({
|
|
37
|
+
printerId: (0, _genericvalidation.idRuleV2)(isSqlite),
|
|
38
|
+
floorId: isSqlite ? (0, _genericvalidation.idRuleV2)(true) : "not",
|
|
39
|
+
x: "required|integer|between:0,12",
|
|
40
|
+
y: "required|integer|between:0,12"
|
|
41
|
+
});
|
|
40
42
|
const updateFloorNameRules = {
|
|
41
|
-
name: `required|minLength:${_serviceconstants.
|
|
43
|
+
name: `required|minLength:${_serviceconstants.minFloorNameLength}`
|
|
42
44
|
};
|
|
43
45
|
const updateFloorNumberRules = {
|
|
44
46
|
floor: "required|integer"
|
|
45
47
|
};
|
|
46
48
|
const updateFloorRules = {
|
|
47
|
-
name: `required|minLength:${_serviceconstants.
|
|
49
|
+
name: `required|minLength:${_serviceconstants.minFloorNameLength}`,
|
|
48
50
|
floor: "required|integer",
|
|
49
51
|
printers: "array",
|
|
50
52
|
"printer.*.printerId": "required|mongoId",
|
|
@@ -52,7 +54,7 @@ const updateFloorRules = {
|
|
|
52
54
|
"printer.*.y": "required|integer|between:0,12"
|
|
53
55
|
};
|
|
54
56
|
const createFloorRules = {
|
|
55
|
-
name: `required|minLength:${_serviceconstants.
|
|
57
|
+
name: `required|minLength:${_serviceconstants.minFloorNameLength}`,
|
|
56
58
|
floor: "required|integer",
|
|
57
59
|
printers: "array"
|
|
58
60
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/validators/floor-service.validation.ts"],"names":["createFloorRules","printerInFloorRules","removePrinterInFloorRules","updateFloorNameRules","updateFloorNumberRules","updateFloorRules","printerId","x","y","name","
|
|
1
|
+
{"version":3,"sources":["../../../src/services/validators/floor-service.validation.ts"],"names":["createFloorRules","printerInFloorRules","removePrinterInFloorRules","updateFloorNameRules","updateFloorNumberRules","updateFloorRules","isSqlite","printerId","idRuleV2","floorId","x","y","name","minFloorNameLength","floor","printers"],"mappings":";;;;;;;;;;;IA+BaA,gBAAgB;eAAhBA;;IAxBAC,mBAAmB;eAAnBA;;IAJAC,yBAAyB;eAAzBA;;IAWAC,oBAAoB;eAApBA;;IAIAC,sBAAsB;eAAtBA;;IAIAC,gBAAgB;eAAhBA;;;kCAtBsB;mCACV;AAElB,MAAMH,4BAA4B,CAACI,WAAuB,CAAA;QAC/DC,WAAWC,IAAAA,2BAAQ,EAACF;IACtB,CAAA;AAEO,MAAML,sBAAsB,CAACK,WAAuB,CAAA;QACzDC,WAAWC,IAAAA,2BAAQ,EAACF;QACpBG,SAASH,WAAWE,IAAAA,2BAAQ,EAAC,QAAQ;QACrCE,GAAG;QACHC,GAAG;IACL,CAAA;AAEO,MAAMR,uBAAuB;IAClCS,MAAM,CAAC,mBAAmB,EAAEC,oCAAkB,CAAC,CAAC;AAClD;AAEO,MAAMT,yBAAyB;IACpCU,OAAO;AACT;AAEO,MAAMT,mBAAmB;IAC9BO,MAAM,CAAC,mBAAmB,EAAEC,oCAAkB,CAAC,CAAC;IAChDC,OAAO;IACPC,UAAU;IACV,uBAAuB;IACvB,eAAe;IACf,eAAe;AACjB;AAEO,MAAMf,mBAAmB;IAC9BY,MAAM,CAAC,mBAAmB,EAAEC,oCAAkB,CAAC,CAAC;IAChDC,OAAO;IACPC,UAAU;AACZ"}
|
|
@@ -28,8 +28,7 @@ const createMongoPrinterRules = {
|
|
|
28
28
|
apiKey: `required|length:${_serviceconstants.UUID_LENGTH},${_serviceconstants.UUID_LENGTH}|alphaNumeric`,
|
|
29
29
|
printerURL: "required|httpurl",
|
|
30
30
|
enabled: "boolean",
|
|
31
|
-
|
|
32
|
-
"settingsAppearance.name": "string"
|
|
31
|
+
name: "string"
|
|
33
32
|
};
|
|
34
33
|
const createPrinterRules = {
|
|
35
34
|
apiKey: `required|length:${_serviceconstants.UUID_LENGTH},${_serviceconstants.UUID_LENGTH}|alphaNumeric`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/validators/printer-service.validation.ts"],"names":["createMongoPrinterRules","createPrinterRules","updatePrinterDisabledReasonRule","updatePrinterEnabledRule","_id","apiKey","UUID_LENGTH","printerURL","enabled","
|
|
1
|
+
{"version":3,"sources":["../../../src/services/validators/printer-service.validation.ts"],"names":["createMongoPrinterRules","createPrinterRules","updatePrinterDisabledReasonRule","updatePrinterEnabledRule","_id","apiKey","UUID_LENGTH","printerURL","enabled","name","disabledReason"],"mappings":";;;;;;;;;;;IAEaA,uBAAuB;eAAvBA;;IAQAC,kBAAkB;eAAlBA;;IAWAC,+BAA+B;eAA/BA;;IAJAC,wBAAwB;eAAxBA;;;kCAjBe;AAErB,MAAMH,0BAA0B;IACrCI,KAAK;IACLC,QAAQ,CAAC,gBAAgB,EAAEC,6BAAW,CAAC,CAAC,EAAEA,6BAAW,CAAC,aAAa,CAAC;IACpEC,YAAY;IACZC,SAAS;IACTC,MAAM;AACR;AAEO,MAAMR,qBAAqB;IAChCI,QAAQ,CAAC,gBAAgB,EAAEC,6BAAW,CAAC,CAAC,EAAEA,6BAAW,CAAC,aAAa,CAAC;IACpEC,YAAY;IACZC,SAAS;IACTC,MAAM;AACR;AAEO,MAAMN,2BAA2B;IACtCK,SAAS;AACX;AAEO,MAAMN,kCAAkC;IAC7CQ,gBAAgB;IAChBF,SAAS;AACX"}
|
|
@@ -17,16 +17,16 @@ _export(exports, {
|
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
19
|
const _serverconstants = require("../../server.constants");
|
|
20
|
-
const registerUserRules = {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
};
|
|
20
|
+
const registerUserRules = (isSqlite)=>({
|
|
21
|
+
username: `required|string|minLength:${_serverconstants.AppConstants.DEFAULT_USERNAME_MINLEN}`,
|
|
22
|
+
password: `required|string|minLength:${_serverconstants.AppConstants.DEFAULT_PASSWORD_MINLEN}`,
|
|
23
|
+
needsPasswordChange: "boolean",
|
|
24
|
+
roles: "required|array",
|
|
25
|
+
isDemoUser: "boolean",
|
|
26
|
+
isRootUser: "boolean",
|
|
27
|
+
"roles.*": `required|${isSqlite ? "integer|min:1" : "mongoId"}`,
|
|
28
|
+
isVerified: "boolean"
|
|
29
|
+
});
|
|
30
30
|
const newPasswordRules = {
|
|
31
31
|
password: `required|string|minLength:${_serverconstants.AppConstants.DEFAULT_PASSWORD_MINLEN}`
|
|
32
32
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/validators/user-service.validation.ts"],"names":["newPasswordRules","registerUserRules","username","AppConstants","DEFAULT_USERNAME_MINLEN","password","DEFAULT_PASSWORD_MINLEN","needsPasswordChange","roles","isDemoUser","isRootUser","isVerified"],"mappings":";;;;;;;;;;;IAaaA,gBAAgB;eAAhBA;;IAXAC,iBAAiB;eAAjBA;;;iCAFgB;AAEtB,MAAMA,oBAAoB;
|
|
1
|
+
{"version":3,"sources":["../../../src/services/validators/user-service.validation.ts"],"names":["newPasswordRules","registerUserRules","isSqlite","username","AppConstants","DEFAULT_USERNAME_MINLEN","password","DEFAULT_PASSWORD_MINLEN","needsPasswordChange","roles","isDemoUser","isRootUser","isVerified"],"mappings":";;;;;;;;;;;IAaaA,gBAAgB;eAAhBA;;IAXAC,iBAAiB;eAAjBA;;;iCAFgB;AAEtB,MAAMA,oBAAoB,CAACC,WAAuB,CAAA;QACvDC,UAAU,CAAC,0BAA0B,EAAEC,6BAAY,CAACC,uBAAuB,CAAC,CAAC;QAC7EC,UAAU,CAAC,0BAA0B,EAAEF,6BAAY,CAACG,uBAAuB,CAAC,CAAC;QAC7EC,qBAAqB;QACrBC,OAAO;QACPC,YAAY;QACZC,YAAY;QACZ,WAAW,CAAC,SAAS,EAAET,WAAW,kBAAkB,UAAU,CAAC;QAC/DU,YAAY;IACd,CAAA;AAEO,MAAMZ,mBAAmB;IAC9BM,UAAU,CAAC,0BAA0B,EAAEF,6BAAY,CAACG,uBAAuB,CAAC,CAAC;AAC/E"}
|
|
@@ -21,18 +21,17 @@ _export(exports, {
|
|
|
21
21
|
});
|
|
22
22
|
const _serviceconstants = require("../../constants/service.constants");
|
|
23
23
|
const exportPrintersFloorsYamlRules = {
|
|
24
|
-
// Used to export
|
|
25
24
|
exportPrinters: "required|boolean",
|
|
26
25
|
exportFloorGrid: "required|boolean",
|
|
27
26
|
exportFloors: "required|boolean",
|
|
28
|
-
// Used to determine import strategy
|
|
29
27
|
printerComparisonStrategiesByPriority: "required|arrayUnique|minLength:1",
|
|
30
28
|
"printerComparisonStrategiesByPriority.*": "required|string|in:name,url,id",
|
|
31
29
|
floorComparisonStrategiesByPriority: "required|string|in:name,floor,id",
|
|
32
|
-
// Helpful reference
|
|
33
30
|
notes: "string"
|
|
34
31
|
};
|
|
35
|
-
const importPrintersFloorsYamlRules = (importPrinters, importFloorGrid, importFloors)=>
|
|
32
|
+
const importPrintersFloorsYamlRules = (importPrinters, importFloorGrid, importFloors, isTypeormMode)=>{
|
|
33
|
+
const idVal = isTypeormMode ? "integer|min:1" : "mongoId";
|
|
34
|
+
return {
|
|
36
35
|
version: "required|string",
|
|
37
36
|
config: "required|object",
|
|
38
37
|
"config.exportPrinters": "required|boolean",
|
|
@@ -42,22 +41,22 @@ const importPrintersFloorsYamlRules = (importPrinters, importFloorGrid, importFl
|
|
|
42
41
|
"config.printerComparisonStrategiesByPriority.*": "required|string|in:name,url,id",
|
|
43
42
|
"config.floorComparisonStrategiesByPriority": "required|string|in:name,floor,id",
|
|
44
43
|
printers: `${!!importPrinters ? "array|minLength:0" : "not"}`,
|
|
45
|
-
"printers.*.id":
|
|
44
|
+
"printers.*.id": `${idVal}`,
|
|
46
45
|
"printers.*.apiKey": `required|length:${_serviceconstants.UUID_LENGTH},${_serviceconstants.UUID_LENGTH}|alphaNumeric`,
|
|
47
46
|
"printers.*.printerURL": "required|httpurl",
|
|
48
47
|
"printers.*.enabled": "boolean",
|
|
49
|
-
"printers.*.
|
|
50
|
-
"printers.*.settingsAppearance.name": "required|string",
|
|
48
|
+
"printers.*.name": "required|string",
|
|
51
49
|
floors: `${!!importFloors ? "array|minLength:0" : "not"}`,
|
|
52
|
-
"floors.*.id":
|
|
50
|
+
"floors.*.id": `${idVal}`,
|
|
53
51
|
"floors.*.floor": "required|integer",
|
|
54
52
|
"floors.*.name": "required|string"
|
|
55
|
-
}
|
|
56
|
-
const importPrinterPositionsRules = {
|
|
57
|
-
printers: "array|minLength:0",
|
|
58
|
-
"printers.*.printerId": "required|mongoId",
|
|
59
|
-
"printers.*.x": "required|integer|min:0|max:12",
|
|
60
|
-
"printers.*.y": "required|integer|min:0|max:12"
|
|
53
|
+
};
|
|
61
54
|
};
|
|
55
|
+
const importPrinterPositionsRules = (isTypeormMode)=>({
|
|
56
|
+
printers: "array|minLength:0",
|
|
57
|
+
"printers.*.printerId": isTypeormMode ? "integer|min:1" : "mongoId",
|
|
58
|
+
"printers.*.x": "required|integer|min:0|max:12",
|
|
59
|
+
"printers.*.y": "required|integer|min:0|max:12"
|
|
60
|
+
});
|
|
62
61
|
|
|
63
62
|
//# sourceMappingURL=yaml-service.validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/validators/yaml-service.validation.ts"],"names":["exportPrintersFloorsYamlRules","importPrinterPositionsRules","importPrintersFloorsYamlRules","exportPrinters","exportFloorGrid","exportFloors","printerComparisonStrategiesByPriority","floorComparisonStrategiesByPriority","notes","importPrinters","importFloorGrid","importFloors","version","config","printers","UUID_LENGTH","floors"],"mappings":";;;;;;;;;;;IAEaA,6BAA6B;eAA7BA;;
|
|
1
|
+
{"version":3,"sources":["../../../src/services/validators/yaml-service.validation.ts"],"names":["exportPrintersFloorsYamlRules","importPrinterPositionsRules","importPrintersFloorsYamlRules","exportPrinters","exportFloorGrid","exportFloors","printerComparisonStrategiesByPriority","floorComparisonStrategiesByPriority","notes","importPrinters","importFloorGrid","importFloors","isTypeormMode","idVal","version","config","printers","UUID_LENGTH","floors"],"mappings":";;;;;;;;;;;IAEaA,6BAA6B;eAA7BA;;IA6CAC,2BAA2B;eAA3BA;;IA7BAC,6BAA6B;eAA7BA;;;kCAlBe;AAErB,MAAMF,gCAAgC;IAE3CG,gBAAgB;IAChBC,iBAAiB;IACjBC,cAAc;IAEdC,uCAAuC;IACvC,2CAA2C;IAC3CC,qCAAqC;IAErCC,OAAO;AAIT;AAEO,MAAMN,gCAAgC,CAC3CO,gBACAC,iBACAC,cACAC;IAEA,MAAMC,QAAQD,gBAAgB,kBAAkB;IAChD,OAAO;QACLE,SAAS;QACTC,QAAQ;QACR,yBAAyB;QACzB,0BAA0B;QAC1B,uBAAuB;QACvB,gDAAgD;QAChD,kDAAkD;QAClD,8CAA8C;QAC9CC,UAAU,CAAC,EAAE,CAAC,CAACP,iBAAiB,sBAAsB,MAAM,CAAC;QAC7D,iBAAiB,CAAC,EAAEI,MAAM,CAAC;QAC3B,qBAAqB,CAAC,gBAAgB,EAAEI,6BAAW,CAAC,CAAC,EAAEA,6BAAW,CAAC,aAAa,CAAC;QACjF,yBAAyB;QACzB,sBAAsB;QACtB,mBAAmB;QACnBC,QAAQ,CAAC,EAAE,CAAC,CAACP,eAAe,sBAAsB,MAAM,CAAC;QACzD,eAAe,CAAC,EAAEE,MAAM,CAAC;QACzB,kBAAkB;QAClB,iBAAiB;IACnB;AACF;AAEO,MAAMZ,8BAA8B,CAACW,gBAA4B,CAAA;QACtEI,UAAU;QACV,wBAAwBJ,gBAAgB,kBAAkB;QAC1D,gBAAgB;QAChB,gBAAgB;IAClB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/state/file-upload-tracker.cache.ts"],"names":["FileUploadTrackerCache","currentUploads","uploadsDone","uploadsFailed","eventEmitter2","logger","constructor","loggerFactory","name","progressCallback","token","p","updateUploadProgress","getUploads","filterHourOld","currentTime","Date","now","done","filter","d","startedAt","failed","current","getUpload","correlationToken","find","cu","addUploadTracker","multerFile","generateCorrelationToken","log","on","uploadProgressEvent","push","progress","reason","percent","markUploadDone","off","upload","success","trackedUploadIndex","findIndex","warn","trackedUpload","failedAt","succeededAt","splice"],"mappings":";;;;+BAQaA;;;eAAAA;;;sCAR4B;gCACL;AAO7B,MAAMA;IACHC,iBAAiB,EAAE,CAAC;IACpBC,cAAc,EAAE,CAAC;IACjBC,gBAAgB,EAAE,CAAC;IACnBC,cAA6B;IAC7BC,OAAsB;IAE9BC,YAAY,EAAEC,aAAa,EAAEH,aAAa,EAAE,CAAE;QAC5C,IAAI,CAACA,aAAa,GAAGA;QACrB,IAAI,CAACC,MAAM,GAAGE,cAAcP,uBAAuBQ,IAAI;IACzD;IAEAC,mBAAmB,CAACC,OAAeC;
|
|
1
|
+
{"version":3,"sources":["../../src/state/file-upload-tracker.cache.ts"],"names":["FileUploadTrackerCache","currentUploads","uploadsDone","uploadsFailed","eventEmitter2","logger","constructor","loggerFactory","name","progressCallback","token","p","updateUploadProgress","getUploads","filterHourOld","currentTime","Date","now","done","filter","d","startedAt","failed","current","getUpload","correlationToken","find","cu","addUploadTracker","multerFile","generateCorrelationToken","log","on","uploadProgressEvent","push","progress","reason","percent","markUploadDone","off","upload","success","trackedUploadIndex","findIndex","warn","trackedUpload","failedAt","succeededAt","splice"],"mappings":";;;;+BAQaA;;;eAAAA;;;sCAR4B;gCACL;AAO7B,MAAMA;IACHC,iBAAiB,EAAE,CAAC;IACpBC,cAAc,EAAE,CAAC;IACjBC,gBAAgB,EAAE,CAAC;IACnBC,cAA6B;IAC7BC,OAAsB;IAE9BC,YAAY,EAAEC,aAAa,EAAEH,aAAa,EAAE,CAAE;QAC5C,IAAI,CAACA,aAAa,GAAGA;QACrB,IAAI,CAACC,MAAM,GAAGE,cAAcP,uBAAuBQ,IAAI;IACzD;IAEAC,mBAAmB,CAACC,OAAeC;QAEjC,IAAI,CAACC,oBAAoB,CAACF,OAAOC;IACnC,EAAE;IAEFE,WAAWC,gBAAgB,KAAK,EAAE;QAChC,MAAMC,cAAcC,KAAKC,GAAG;QAE5B,MAAMC,OAAO,IAAI,CAAChB,WAAW,CAACiB,MAAM,CAAC,CAACC,IAAML,cAAcK,EAAEC,SAAS,GAAG,KAAK,KAAK;QAClF,MAAMC,SAAS,IAAI,CAACnB,aAAa,CAACgB,MAAM,CAAC,CAACC,IAAML,cAAcK,EAAEC,SAAS,GAAG,KAAK,KAAK;QACtF,OAAOP,gBACH;YACES,SAAS,IAAI,CAACtB,cAAc;YAC5BiB;YACAI;QACF,IACA;YACEC,SAAS,IAAI,CAACtB,cAAc;YAC5BiB,MAAM,IAAI,CAAChB,WAAW;YACtBoB,QAAQ,IAAI,CAACnB,aAAa;QAC5B;IACN;IAEAqB,UAAUC,gBAAwB,EAAE;QAClC,OAAO,IAAI,CAACxB,cAAc,CAACyB,IAAI,CAAC,CAACC,KAAOA,GAAGF,gBAAgB,KAAKA;IAClE;IAEAG,iBAAiBC,UAAU,EAAE;QAC3B,MAAMJ,mBAAmBK,IAAAA,8CAAwB;QACjD,IAAI,CAACzB,MAAM,CAAC0B,GAAG,CAAC,CAAC,mCAAmC,EAAEN,iBAAiB,CAAC;QAExE,IAAI,CAACrB,aAAa,CAAC4B,EAAE,CAACC,IAAAA,mCAAmB,EAACR,mBAAmB,IAAI,CAAChB,gBAAgB;QAElF,IAAI,CAACR,cAAc,CAACiC,IAAI,CAAC;YACvBT;YACAJ,WAAWL,KAAKC,GAAG;YACnBY;YACAM,UAAU,CAAC;QACb;QAEA,OAAOV;IACT;IAEAb,qBAAqBF,KAAa,EAAEyB,QAAQ,EAAEC,MAAM,EAAE;QACpD,IAAID,SAASjB,IAAI,IAAIiB,SAASE,OAAO,KAAK,GAAG;YAC3C,IAAI,CAAChC,MAAM,CAAC0B,GAAG,CAAC;YAChB,IAAI,CAACO,cAAc,CAAC5B,OAAO;YAC3B,IAAI,CAACN,aAAa,CAACmC,GAAG,CAACN,IAAAA,mCAAmB,EAACvB,QAAQ,IAAI,CAACD,gBAAgB;QAC1E,OAAO,IAAI0B,SAASb,MAAM,EAAE;YAC1B,IAAI,CAACgB,cAAc,CAAC5B,OAAO,OAAO0B;YAClC,IAAI,CAAChC,aAAa,CAACmC,GAAG,CAACN,IAAAA,mCAAmB,EAACvB,QAAQ,IAAI,CAACD,gBAAgB;QAC1E,OAAO;YACL,MAAM+B,SAAS,IAAI,CAAChB,SAAS,CAACd;YAC9B8B,OAAOL,QAAQ,GAAGA;QACpB;IACF;IAEAG,eAAe5B,KAAa,EAAE+B,OAAO,EAAEL,MAAM,EAAE;QAC7C,MAAMM,qBAAqB,IAAI,CAACzC,cAAc,CAAC0C,SAAS,CAAC,CAAChB,KAAOA,GAAGF,gBAAgB,KAAKf;QACzF,IAAIgC,uBAAuB,CAAC,GAAG;YAC7B,IAAI,CAACrC,MAAM,CAACuC,IAAI,CAAC,CAAC,0CAA0C,EAAElC,MAAM,8BAA8B,CAAC;YACnG;QACF;QAEA,MAAMmC,gBAAgB,IAAI,CAAC5C,cAAc,CAACyC,mBAAmB;QAE7D,IAAID,SAAS;YACXI,cAAcC,QAAQ,GAAG9B,KAAKC,GAAG;YACjC4B,cAAcT,MAAM,GAAGA;YACvB,IAAI,CAAClC,WAAW,CAACgC,IAAI,CAACW;QACxB,OAAO;YACLA,cAAcE,WAAW,GAAG/B,KAAKC,GAAG;YACpC,IAAI,CAACd,aAAa,CAAC+B,IAAI,CAACW;QAC1B;QACA,IAAI,CAAC5C,cAAc,CAAC+C,MAAM,CAACN,oBAAoB;IACjD;AACF"}
|