@fdm-monster/server 1.6.0-rc1 → 1.6.0-rc3
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/.gitattributes +2 -0
- package/.yarn/install-state.gz +0 -0
- package/.yarn/releases/yarn-4.1.0.cjs +893 -0
- package/.yarnrc.yml +4 -0
- package/README.md +1 -1
- package/dist/consoles/sqlite-torm.js +31 -0
- package/dist/consoles/sqlite-torm.js.map +1 -0
- package/dist/consoles/typeorm-generate.js +194 -0
- package/dist/consoles/typeorm-generate.js.map +1 -0
- package/dist/consoles/typeorm-migrate.js +48 -0
- package/dist/consoles/typeorm-migrate.js.map +1 -0
- package/dist/container.js +64 -19
- package/dist/container.js.map +1 -1
- package/dist/container.tokens.js +2 -0
- package/dist/container.tokens.js.map +1 -1
- package/dist/controllers/batch-call.controller.js +15 -5
- package/dist/controllers/batch-call.controller.js.map +1 -1
- package/dist/controllers/dto/update-client-dist.dto.js +38 -0
- package/dist/controllers/dto/update-client-dist.dto.js.map +1 -0
- package/dist/controllers/printer-files.controller.js +2 -8
- package/dist/controllers/printer-files.controller.js.map +1 -1
- package/dist/controllers/printer.controller.js +2 -1
- package/dist/controllers/printer.controller.js.map +1 -1
- package/dist/controllers/server-private.controller.js +25 -6
- package/dist/controllers/server-private.controller.js.map +1 -1
- package/dist/controllers/validation/batch-controller.validation.js +9 -0
- package/dist/controllers/validation/batch-controller.validation.js.map +1 -1
- package/dist/data-source.js +66 -0
- package/dist/data-source.js.map +1 -0
- package/dist/entities/camera-stream.entity.js +94 -0
- package/dist/entities/camera-stream.entity.js.map +1 -0
- package/dist/entities/custom-gcode.entity.js +50 -0
- package/dist/entities/custom-gcode.entity.js.map +1 -0
- package/dist/entities/floor-position.entity.js +78 -0
- package/dist/entities/floor-position.entity.js.map +1 -0
- package/dist/entities/floor.entity.js +53 -0
- package/dist/entities/floor.entity.js.map +1 -0
- package/dist/entities/index.js +58 -0
- package/dist/entities/index.js.map +1 -0
- package/dist/entities/permission.entity.js +38 -0
- package/dist/entities/permission.entity.js.map +1 -0
- package/dist/entities/print-completion.entity.js +91 -0
- package/dist/entities/print-completion.entity.js.map +1 -0
- package/dist/entities/printer-file.entity.js +140 -0
- package/dist/entities/printer-file.entity.js.map +1 -0
- package/dist/entities/printer.entity.js +105 -0
- package/dist/entities/printer.entity.js.map +1 -0
- package/dist/entities/refresh-token.entity.js +70 -0
- package/dist/entities/refresh-token.entity.js.map +1 -0
- package/dist/entities/role.entity.js +46 -0
- package/dist/entities/role.entity.js.map +1 -0
- package/dist/entities/settings.entity.js +89 -0
- package/dist/entities/settings.entity.js.map +1 -0
- package/dist/entities/user-role.entity.js +70 -0
- package/dist/entities/user-role.entity.js.map +1 -0
- package/dist/entities/user.entity.js +90 -0
- package/dist/entities/user.entity.js.map +1 -0
- package/dist/middleware/exception.filter.js +2 -1
- package/dist/middleware/exception.filter.js.map +1 -1
- package/dist/middleware/passport.js.map +1 -1
- package/dist/migrations/1706829146617-InitSqlite.js +670 -0
- package/dist/migrations/1706829146617-InitSqlite.js.map +1 -0
- package/dist/models/Floor.js.map +1 -1
- package/dist/models/PrinterFile.js +4 -0
- package/dist/models/PrinterFile.js.map +1 -1
- package/dist/server.constants.js +4 -2
- package/dist/server.constants.js.map +1 -1
- package/dist/server.core.js +10 -1
- package/dist/server.core.js.map +1 -1
- package/dist/server.host.js +11 -3
- package/dist/server.host.js.map +1 -1
- package/dist/services/batch-call.service.js +67 -20
- package/dist/services/batch-call.service.js.map +1 -1
- package/dist/services/core/client-bundle.service.js +98 -27
- package/dist/services/core/client-bundle.service.js.map +1 -1
- package/dist/services/core/github.service.js +18 -14
- package/dist/services/core/github.service.js.map +1 -1
- package/dist/services/core/task-manager.service.js +1 -1
- package/dist/services/core/task-manager.service.js.map +1 -1
- package/dist/services/core/yaml.service.js.map +1 -1
- package/dist/services/floor.service.js +1 -1
- package/dist/services/floor.service.js.map +1 -1
- package/dist/services/interfaces/printer-file.dto.js +29 -3
- package/dist/services/interfaces/printer-file.dto.js.map +1 -1
- package/dist/services/octoprint/dto/connection-state.dto.js +0 -25
- package/dist/services/octoprint/dto/connection-state.dto.js.map +1 -1
- package/dist/services/octoprint/dto/connection.dto.js +6 -0
- package/dist/services/octoprint/dto/connection.dto.js.map +1 -0
- package/dist/services/octoprint/dto/octoprint-event.dto.js.map +1 -1
- package/dist/services/octoprint/models/octoprint-file.dto.js +6 -0
- package/dist/services/octoprint/models/octoprint-file.dto.js.map +1 -0
- package/dist/services/octoprint/octoprint-api.routes.js +9 -3
- package/dist/services/octoprint/octoprint-api.routes.js.map +1 -1
- package/dist/services/octoprint/octoprint-api.service.js +17 -2
- package/dist/services/octoprint/octoprint-api.service.js.map +1 -1
- package/dist/services/octoprint/octoprint-sockio.adapter.js +53 -45
- package/dist/services/octoprint/octoprint-sockio.adapter.js.map +1 -1
- package/dist/services/octoprint/utils/file.utils.js +44 -0
- package/dist/services/octoprint/utils/file.utils.js.map +1 -0
- package/dist/services/orm/base.service.js +3 -0
- package/dist/services/orm/base.service.js.map +1 -1
- package/dist/services/orm/camera-stream.service.js +25 -0
- package/dist/services/orm/camera-stream.service.js.map +1 -0
- package/dist/services/orm/custom-gcode.service.js +42 -0
- package/dist/services/orm/custom-gcode.service.js.map +1 -0
- package/dist/services/orm/floor-position.service.js +55 -0
- package/dist/services/orm/floor-position.service.js.map +1 -0
- package/dist/services/orm/floor.service.js +122 -0
- package/dist/services/orm/floor.service.js.map +1 -0
- package/dist/services/orm/permission.service.js +77 -0
- package/dist/services/orm/permission.service.js.map +1 -0
- package/dist/services/orm/print-completion.service.js +90 -0
- package/dist/services/orm/print-completion.service.js.map +1 -0
- package/dist/services/orm/printer-files.service.js +123 -0
- package/dist/services/orm/printer-files.service.js.map +1 -0
- package/dist/services/orm/printer.service.js +145 -0
- package/dist/services/orm/printer.service.js.map +1 -0
- package/dist/services/orm/refresh-token.service.js +107 -0
- package/dist/services/orm/refresh-token.service.js.map +1 -0
- package/dist/services/orm/role.service.js +131 -0
- package/dist/services/orm/role.service.js.map +1 -0
- package/dist/services/orm/settings.service.js +208 -0
- package/dist/services/orm/settings.service.js.map +1 -0
- package/dist/services/orm/user-role.service.js +55 -0
- package/dist/services/orm/user-role.service.js.map +1 -0
- package/dist/services/orm/user.service.js +146 -0
- package/dist/services/orm/user.service.js.map +1 -0
- package/dist/services/orm-migration.service.js +20 -0
- package/dist/services/orm-migration.service.js.map +1 -0
- package/dist/services/printer-files.service.js +3 -0
- package/dist/services/printer-files.service.js.map +1 -1
- package/dist/services/typeorm/typeorm.service.js +48 -0
- package/dist/services/typeorm/typeorm.service.js.map +1 -0
- package/dist/state/file.cache.js +2 -9
- package/dist/state/file.cache.js.map +1 -1
- package/dist/state/printer-connection.cache.js +21 -0
- package/dist/state/printer-connection.cache.js.map +1 -0
- package/dist/state/printer-events.cache.js +16 -7
- package/dist/state/printer-events.cache.js.map +1 -1
- package/dist/state/printer-files.store.js +3 -4
- package/dist/state/printer-files.store.js.map +1 -1
- package/dist/state/printer-socket.store.js +3 -3
- package/dist/state/printer-socket.store.js.map +1 -1
- package/dist/state/printer.cache.js +3 -0
- package/dist/state/printer.cache.js.map +1 -1
- package/dist/state/settings.store.js +3 -0
- package/dist/state/settings.store.js.map +1 -1
- package/dist/state/test-printer-socket.store.js +1 -1
- package/dist/task.presets.js.map +1 -1
- package/dist/tasks/boot.task.js +30 -18
- package/dist/tasks/boot.task.js.map +1 -1
- package/dist/tasks/print-completion.socketio.task.js +15 -1
- package/dist/tasks/print-completion.socketio.task.js.map +1 -1
- package/dist/tasks/printer-file-clean.task.js +14 -0
- package/dist/tasks/printer-file-clean.task.js.map +1 -1
- package/dist/tasks/printer-state-update-poll.task.js +89 -0
- package/dist/tasks/printer-state-update-poll.task.js.map +1 -0
- package/dist/tasks/printer-websocket-restore.task.js +4 -3
- package/dist/tasks/printer-websocket-restore.task.js.map +1 -1
- package/dist/tasks/printer-websocket.task.js +1 -1
- package/dist/tasks/printer-websocket.task.js.map +1 -1
- package/dist/tasks/socketio.task.js +1 -1
- package/dist/tasks/socketio.task.js.map +1 -1
- package/dist/tasks.js +2 -1
- package/dist/tasks.js.map +1 -1
- package/dist/utils/semver.utils.js +19 -4
- package/dist/utils/semver.utils.js.map +1 -1
- package/package.json +31 -30
|
@@ -0,0 +1,77 @@
|
|
|
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 _baseservice = require("./base.service");
|
|
12
|
+
const _entities = require("../../entities");
|
|
13
|
+
const _permissiondto = require("../interfaces/permission.dto");
|
|
14
|
+
const _runtimeexceptions = require("../../exceptions/runtime.exceptions");
|
|
15
|
+
const _authorizationconstants = require("../../constants/authorization.constants");
|
|
16
|
+
class PermissionService extends (0, _baseservice.BaseService)(_entities.Permission, _permissiondto.PermissionDto) {
|
|
17
|
+
logger;
|
|
18
|
+
_permissions = [];
|
|
19
|
+
constructor({ loggerFactory, typeormService }){
|
|
20
|
+
super({
|
|
21
|
+
typeormService
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
get permissions() {
|
|
25
|
+
return this._permissions;
|
|
26
|
+
}
|
|
27
|
+
toDto(permission) {
|
|
28
|
+
return {
|
|
29
|
+
id: permission.id,
|
|
30
|
+
name: permission.name
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
authorizePermission(requiredPermission, assignedPermissions) {
|
|
34
|
+
return !!assignedPermissions.find((assignedPermission)=>{
|
|
35
|
+
const normalizePermission = this.normalizePermission(assignedPermission);
|
|
36
|
+
if (!normalizePermission) return false;
|
|
37
|
+
return normalizePermission === requiredPermission;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
async getPermissionByName(permissionName) {
|
|
41
|
+
const permission = this.permissions.find((r)=>r.name === permissionName);
|
|
42
|
+
if (!permission) throw new _runtimeexceptions.NotFoundException("Permission not found");
|
|
43
|
+
return permission;
|
|
44
|
+
}
|
|
45
|
+
async getPermission(permissionId) {
|
|
46
|
+
const permission = this.permissions.find((r)=>r.id === permissionId);
|
|
47
|
+
if (!permission) throw new _runtimeexceptions.NotFoundException(`Permission Id '${permissionId}' not found`);
|
|
48
|
+
return permission;
|
|
49
|
+
}
|
|
50
|
+
async syncPermissions() {
|
|
51
|
+
this._permissions = [];
|
|
52
|
+
const permissionDefinition = (0, _authorizationconstants.flattenPermissionDefinition)();
|
|
53
|
+
for (let permission of permissionDefinition){
|
|
54
|
+
const storedPermission = await this.repository.findOneBy({
|
|
55
|
+
name: permission
|
|
56
|
+
});
|
|
57
|
+
if (!storedPermission) {
|
|
58
|
+
const newPermission = await this.create({
|
|
59
|
+
name: permission
|
|
60
|
+
});
|
|
61
|
+
this._permissions.push(newPermission);
|
|
62
|
+
} else {
|
|
63
|
+
this._permissions.push(storedPermission);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
normalizePermission(assignedPermission) {
|
|
68
|
+
const permissionInstance = this.permissions.find((r)=>r.id === assignedPermission || r.name === assignedPermission);
|
|
69
|
+
if (!permissionInstance) {
|
|
70
|
+
this.logger.warn(`The permission by ID ${assignedPermission} did not exist. Skipping.`);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
return permissionInstance.name;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
//# sourceMappingURL=permission.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orm/permission.service.ts"],"names":["PermissionService","BaseService","Permission","PermissionDto","logger","_permissions","constructor","loggerFactory","typeormService","permissions","toDto","permission","id","name","authorizePermission","requiredPermission","assignedPermissions","find","assignedPermission","normalizePermission","getPermissionByName","permissionName","r","NotFoundException","getPermission","permissionId","syncPermissions","permissionDefinition","flattenPermissionDefinition","storedPermission","repository","findOneBy","newPermission","create","push","permissionInstance","warn"],"mappings":";;;;+BAWaA;;;eAAAA;;;6BATe;0BACD;+BACG;mCACI;wCAIU;AAErC,MAAMA,0BACHC,IAAAA,wBAAW,EAACC,oBAAU,EAAEC,4BAAa;IAGrCC,OAAsB;IACtBC,eAA6B,EAAE,CAAC;IAExCC,YAAY,EAAEC,aAAa,EAAEC,cAAc,EAAqE,CAAE;QAChH,KAAK,CAAC;YAAEA;QAAe;IACzB;IACA,IAAIC,cAAc;QAChB,OAAO,IAAI,CAACJ,YAAY;IAC1B;IAEAK,MAAMC,UAAsB,EAA+B;QACzD,OAAO;YACLC,IAAID,WAAWC,EAAE;YACjBC,MAAMF,WAAWE,IAAI;QACvB;IACF;IAEAC,oBAAoBC,kBAA0B,EAAEC,mBAA6B,EAAW;QACtF,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,EAAuB;QACrE,MAAMV,aAAa,IAAI,CAACF,WAAW,CAACQ,IAAI,CAAC,CAACK,IAAMA,EAAET,IAAI,KAAKQ;QAC3D,IAAI,CAACV,YAAY,MAAM,IAAIY,oCAAiB,CAAC;QAC7C,OAAOZ;IACT;IAEA,MAAMa,cAAcC,YAA0B,EAAuB;QACnE,MAAMd,aAAa,IAAI,CAACF,WAAW,CAACQ,IAAI,CAAC,CAACK,IAAMA,EAAEV,EAAE,KAAKa;QACzD,IAAI,CAACd,YAAY,MAAM,IAAIY,oCAAiB,CAAC,CAAC,eAAe,EAAEE,aAAa,WAAW,CAAC;QAExF,OAAOd;IACT;IAEA,MAAMe,kBAAiC;QACrC,IAAI,CAACrB,YAAY,GAAG,EAAE;QAEtB,MAAMsB,uBAAuBC,IAAAA,mDAA2B;QACxD,KAAK,IAAIjB,cAAcgB,qBAAsB;YAC3C,MAAME,mBAAmB,MAAM,IAAI,CAACC,UAAU,CAACC,SAAS,CAAC;gBAAElB,MAAMF;YAAW;YAC5E,IAAI,CAACkB,kBAAkB;gBACrB,MAAMG,gBAAgB,MAAM,IAAI,CAACC,MAAM,CAAC;oBACtCpB,MAAMF;gBACR;gBACA,IAAI,CAACN,YAAY,CAAC6B,IAAI,CAACF;YACzB,OAAO;gBACL,IAAI,CAAC3B,YAAY,CAAC6B,IAAI,CAACL;YACzB;QACF;IACF;IAEAV,oBAAoBD,kBAAmC,EAAU;QAC/D,MAAMiB,qBAAqB,IAAI,CAAC1B,WAAW,CAACQ,IAAI,CAAC,CAACK,IAAMA,EAAEV,EAAE,KAAKM,sBAAsBI,EAAET,IAAI,KAAKK;QAClG,IAAI,CAACiB,oBAAoB;YACvB,IAAI,CAAC/B,MAAM,CAACgC,IAAI,CAAC,CAAC,qBAAqB,EAAElB,mBAAmB,yBAAyB,CAAC;YACtF;QACF;QACA,OAAOiB,mBAAmBtB,IAAI;IAChC;AACF"}
|
|
@@ -0,0 +1,90 @@
|
|
|
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 _baseservice = require("./base.service");
|
|
12
|
+
const _entities = require("../../entities");
|
|
13
|
+
const _printcompletiondto = require("../interfaces/print-completion.dto");
|
|
14
|
+
const _typeorm = require("typeorm");
|
|
15
|
+
const _octoprintwebsocketconstants = require("../octoprint/constants/octoprint-websocket.constants");
|
|
16
|
+
const _arrayutil = require("../../utils/array.util");
|
|
17
|
+
const _printcompletionshared = require("../print-completion.shared");
|
|
18
|
+
class PrintCompletionService extends (0, _baseservice.BaseService)(_entities.PrintCompletion, _printcompletiondto.PrintCompletionDto) {
|
|
19
|
+
logger;
|
|
20
|
+
constructor({ typeormService, loggerFactory }){
|
|
21
|
+
super({
|
|
22
|
+
typeormService
|
|
23
|
+
});
|
|
24
|
+
this.logger = loggerFactory(PrintCompletionService.name);
|
|
25
|
+
}
|
|
26
|
+
toDto(entity) {
|
|
27
|
+
return {
|
|
28
|
+
id: entity.id,
|
|
29
|
+
completionLog: entity.completionLog,
|
|
30
|
+
context: entity.context,
|
|
31
|
+
fileName: entity.fileName,
|
|
32
|
+
createdAt: entity.createdAt,
|
|
33
|
+
printerReference: entity.printerReference,
|
|
34
|
+
status: entity.status,
|
|
35
|
+
printerId: entity.printerId
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
async create(input) {
|
|
39
|
+
return await super.create(input);
|
|
40
|
+
}
|
|
41
|
+
async findPrintCompletion(correlationId) {
|
|
42
|
+
const completions = await this.repository.findBy({});
|
|
43
|
+
console.log({
|
|
44
|
+
context: {
|
|
45
|
+
correlationId
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return completions.filter((c)=>c.context?.correlationId === correlationId);
|
|
49
|
+
}
|
|
50
|
+
async updateContext(correlationId, context) {
|
|
51
|
+
const completionEntry = await this.repository.findOneBy({
|
|
52
|
+
context: {
|
|
53
|
+
correlationId
|
|
54
|
+
},
|
|
55
|
+
status: _octoprintwebsocketconstants.EVENT_TYPES.PrintStarted
|
|
56
|
+
});
|
|
57
|
+
if (!completionEntry) {
|
|
58
|
+
this.logger.warn(`Print with correlationId ${correlationId} could not be updated with new context as it was not found`);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
completionEntry.context = context;
|
|
62
|
+
await this.update(completionEntry.id, completionEntry);
|
|
63
|
+
}
|
|
64
|
+
async listGroupByPrinterStatus() {
|
|
65
|
+
const limitedCompletions = await this.listPaged();
|
|
66
|
+
const printCompletionsAggr = (0, _arrayutil.groupArrayBy)(limitedCompletions, (val)=>val.printerId.toString());
|
|
67
|
+
const completions = Object.entries(printCompletionsAggr).map(([pc, val])=>({
|
|
68
|
+
printerId: parseInt(pc),
|
|
69
|
+
printEvents: val
|
|
70
|
+
}));
|
|
71
|
+
return (0, _printcompletionshared.processCompletions)(completions);
|
|
72
|
+
}
|
|
73
|
+
async loadPrintContexts() {
|
|
74
|
+
const completions = await this.repository.find({
|
|
75
|
+
where: {
|
|
76
|
+
status: (0, _typeorm.Not)((0, _typeorm.In)([
|
|
77
|
+
_octoprintwebsocketconstants.EVENT_TYPES.PrintDone,
|
|
78
|
+
_octoprintwebsocketconstants.EVENT_TYPES.PrintFailed
|
|
79
|
+
]))
|
|
80
|
+
},
|
|
81
|
+
order: {
|
|
82
|
+
printerId: 1,
|
|
83
|
+
createdAt: -1
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
return (0, _arrayutil.groupArrayBy)(completions, (val)=>val.id.toString());
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
//# sourceMappingURL=print-completion.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orm/print-completion.service.ts"],"names":["PrintCompletionService","BaseService","PrintCompletion","PrintCompletionDto","logger","constructor","typeormService","loggerFactory","name","toDto","entity","id","completionLog","context","fileName","createdAt","printerReference","status","printerId","create","input","findPrintCompletion","correlationId","completions","repository","findBy","console","log","filter","c","updateContext","completionEntry","findOneBy","EVENT_TYPES","PrintStarted","warn","update","listGroupByPrinterStatus","limitedCompletions","listPaged","printCompletionsAggr","groupArrayBy","val","toString","Object","entries","map","pc","parseInt","printEvents","processCompletions","loadPrintContexts","find","where","Not","In","PrintDone","PrintFailed","order"],"mappings":";;;;+BAaaA;;;eAAAA;;;6BAbe;0BACI;oCACqD;yBAG7D;6CACI;2BACC;uCAI2B;AAEjD,MAAMA,+BACHC,IAAAA,wBAAW,EAACC,yBAAe,EAAEC,sCAAkB;IAGvDC,OAAsB;IAEtBC,YAAY,EAAEC,cAAc,EAAEC,aAAa,EAAqE,CAAE;QAChH,KAAK,CAAC;YAAED;QAAe;QACvB,IAAI,CAACF,MAAM,GAAGG,cAAcP,uBAAuBQ,IAAI;IACzD;IAEAC,MAAMC,MAAuB,EAAoC;QAC/D,OAAO;YACLC,IAAID,OAAOC,EAAE;YACbC,eAAeF,OAAOE,aAAa;YACnCC,SAASH,OAAOG,OAAO;YACvBC,UAAUJ,OAAOI,QAAQ;YACzBC,WAAWL,OAAOK,SAAS;YAC3BC,kBAAkBN,OAAOM,gBAAgB;YACzCC,QAAQP,OAAOO,MAAM;YACrBC,WAAWR,OAAOQ,SAAS;QAC7B;IACF;IAEA,MAAMC,OAAOC,KAA6C,EAAE;QAC1D,OAAO,MAAM,KAAK,CAACD,OAAOC;IAC5B;IAEA,MAAMC,oBAAoBC,aAAqB,EAAE;QAC/C,MAAMC,cAAc,MAAM,IAAI,CAACC,UAAU,CAACC,MAAM,CAAC,CAAC;QAClDC,QAAQC,GAAG,CAAC;YAAEd,SAAS;gBAAES;YAAc;QAAE;QACzC,OAAOC,YAAYK,MAAM,CAAC,CAACC,IAAMA,EAAEhB,OAAO,EAAES,kBAAkBA;IAChE;IAEA,MAAMQ,cAAcR,aAAqB,EAAET,OAA+B,EAAiB;QACzF,MAAMkB,kBAAkB,MAAM,IAAI,CAACP,UAAU,CAACQ,SAAS,CAAC;YACtDnB,SAAS;gBAAES;YAAc;YACzBL,QAAQgB,wCAAW,CAACC,YAAY;QAClC;QACA,IAAI,CAACH,iBAAiB;YACpB,IAAI,CAAC3B,MAAM,CAAC+B,IAAI,CAAC,CAAC,yBAAyB,EAAEb,cAAc,0DAA0D,CAAC;YACtH;QACF;QACAS,gBAAgBlB,OAAO,GAAGA;QAC1B,MAAM,IAAI,CAACuB,MAAM,CAACL,gBAAgBpB,EAAE,EAAEoB;IACxC;IAEA,MAAMM,2BAA2D;QAC/D,MAAMC,qBAAqB,MAAM,IAAI,CAACC,SAAS;QAC/C,MAAMC,uBAAuBC,IAAAA,uBAAY,EAACH,oBAAoB,CAACI,MAAQA,IAAIxB,SAAS,CAACyB,QAAQ;QAC7F,MAAMpB,cAAcqB,OAAOC,OAAO,CAACL,sBAAsBM,GAAG,CAAC,CAAC,CAACC,IAAIL,IAAI,GAAM,CAAA;gBAC3ExB,WAAW8B,SAASD;gBACpBE,aAAaP;YACf,CAAA;QACA,OAAOQ,IAAAA,yCAAkB,EAAC3B;IAC5B;IAEA,MAAM4B,oBAAgE;QACpE,MAAM5B,cAAc,MAAM,IAAI,CAACC,UAAU,CAAC4B,IAAI,CAAC;YAC7CC,OAAO;gBACLpC,QAAQqC,IAAAA,YAAG,EAACC,IAAAA,WAAE,EAAC;oBAACtB,wCAAW,CAACuB,SAAS;oBAAEvB,wCAAW,CAACwB,WAAW;iBAAC;YACjE;YACAC,OAAO;gBACLxC,WAAW;gBACXH,WAAW,CAAC;YACd;QACF;QAEA,OAAO0B,IAAAA,uBAAY,EAAClB,aAAa,CAACmB,MAAQA,IAAI/B,EAAE,CAACgC,QAAQ;IAC3D;AACF"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "PrinterFilesService", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return PrinterFilesService;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _baseservice = require("./base.service");
|
|
12
|
+
const _printerfileentity = require("../../entities/printer-file.entity");
|
|
13
|
+
const _printerfiledto = require("../interfaces/printer-file.dto");
|
|
14
|
+
const _runtimeexceptions = require("../../exceptions/runtime.exceptions");
|
|
15
|
+
const _errorutils = require("../../utils/error.utils");
|
|
16
|
+
class PrinterFilesService extends (0, _baseservice.BaseService)(_printerfileentity.PrinterFile, _printerfiledto.PrinterFileDto) {
|
|
17
|
+
printerService;
|
|
18
|
+
logger;
|
|
19
|
+
constructor({ printerService, loggerFactory, typeormService }){
|
|
20
|
+
super({
|
|
21
|
+
typeormService
|
|
22
|
+
});
|
|
23
|
+
this.printerService = printerService;
|
|
24
|
+
this.logger = loggerFactory(PrinterFilesService.name);
|
|
25
|
+
}
|
|
26
|
+
toDto(entity) {
|
|
27
|
+
return {
|
|
28
|
+
id: entity.id,
|
|
29
|
+
printerId: entity.printerId,
|
|
30
|
+
name: entity.name,
|
|
31
|
+
date: entity.date,
|
|
32
|
+
display: entity.display,
|
|
33
|
+
gcodeAnalysis: entity.gcodeAnalysis,
|
|
34
|
+
hash: entity.hash,
|
|
35
|
+
origin: entity.origin,
|
|
36
|
+
path: entity.path,
|
|
37
|
+
prints: entity.prints,
|
|
38
|
+
refs: entity.refs,
|
|
39
|
+
size: entity.size,
|
|
40
|
+
statistics: entity.statistics,
|
|
41
|
+
type: entity.type,
|
|
42
|
+
typePath: entity.typePath
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
async getPrinterFiles(printerId) {
|
|
46
|
+
const printer = await this.printerService.get(printerId);
|
|
47
|
+
return this.listPrinterFiles(printer.id);
|
|
48
|
+
}
|
|
49
|
+
async updateFiles(printerId, newFiles) {
|
|
50
|
+
const savedFiles = await this.getPrinterFiles(printerId);
|
|
51
|
+
const newPaths = newFiles.map((f)=>f.path);
|
|
52
|
+
const deletableSavedFiles = savedFiles.filter((f)=>!newPaths.includes(f.path));
|
|
53
|
+
const deletableSavedFilePaths = deletableSavedFiles.map((f)=>f.path);
|
|
54
|
+
await this.deletePrinterFiles(printerId, deletableSavedFilePaths, false);
|
|
55
|
+
for (const newFile of newFiles){
|
|
56
|
+
try {
|
|
57
|
+
await this.appendOrReplaceFile(printerId, newFile);
|
|
58
|
+
} catch (e) {
|
|
59
|
+
this.logger.error(`Error appending file ${(0, _errorutils.errorSummary)(e)}`);
|
|
60
|
+
throw e;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return await this.getPrinterFiles(printerId);
|
|
64
|
+
}
|
|
65
|
+
async appendOrReplaceFile(printerId, addedFile) {
|
|
66
|
+
const printer = await this.printerService.get(printerId);
|
|
67
|
+
addedFile.printerId = printer.id;
|
|
68
|
+
if (!addedFile.customData) {
|
|
69
|
+
addedFile.customData = {};
|
|
70
|
+
}
|
|
71
|
+
const foundFile = await this.getPrinterFile(printer.id, addedFile.path);
|
|
72
|
+
if (!foundFile) {
|
|
73
|
+
await this.create(addedFile);
|
|
74
|
+
} else {
|
|
75
|
+
await this.repository.update({
|
|
76
|
+
printerId: printer.id,
|
|
77
|
+
path: addedFile.path
|
|
78
|
+
}, addedFile);
|
|
79
|
+
}
|
|
80
|
+
return await this.getPrinterFiles(printer.id);
|
|
81
|
+
}
|
|
82
|
+
async clearFiles(printerId) {
|
|
83
|
+
const printer = await this.printerService.get(printerId);
|
|
84
|
+
await this.repository.delete({
|
|
85
|
+
printerId: printer.id
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
async deletePrinterFiles(printerId, filePaths, throwError) {
|
|
89
|
+
const printer = await this.printerService.get(printerId);
|
|
90
|
+
if (filePaths?.length === 0) return;
|
|
91
|
+
if (!filePaths?.length) {
|
|
92
|
+
throw new Error("Cant delete specific printer files without specific file path array being provided");
|
|
93
|
+
}
|
|
94
|
+
for (const filePath of filePaths){
|
|
95
|
+
const file = await this.getPrinterFile(printer.id, filePath);
|
|
96
|
+
if (!file) {
|
|
97
|
+
if (throwError) {
|
|
98
|
+
throw new _runtimeexceptions.NotFoundException(`A file removal was ordered but this file was not found in database for printer Id ${printer.id}`, filePath);
|
|
99
|
+
} else {
|
|
100
|
+
this.logger.warn("File was not found in PrinterFile table");
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
await this.delete(file.id);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
async listPrinterFiles(printerId) {
|
|
108
|
+
return await this.list({
|
|
109
|
+
where: {
|
|
110
|
+
printerId
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
async getPrinterFile(printerId, filePath) {
|
|
115
|
+
const printer = await this.printerService.get(printerId);
|
|
116
|
+
return this.repository.findOneBy({
|
|
117
|
+
printerId: printer.id,
|
|
118
|
+
path: filePath
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
//# sourceMappingURL=printer-files.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orm/printer-files.service.ts"],"names":["PrinterFilesService","BaseService","PrinterFile","PrinterFileDto","printerService","logger","constructor","loggerFactory","typeormService","name","toDto","entity","id","printerId","date","display","gcodeAnalysis","hash","origin","path","prints","refs","size","statistics","type","typePath","getPrinterFiles","printer","get","listPrinterFiles","updateFiles","newFiles","savedFiles","newPaths","map","f","deletableSavedFiles","filter","includes","deletableSavedFilePaths","deletePrinterFiles","newFile","appendOrReplaceFile","e","error","errorSummary","addedFile","customData","foundFile","getPrinterFile","create","repository","update","clearFiles","delete","filePaths","throwError","length","Error","filePath","file","NotFoundException","warn","list","where","findOneBy"],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "PrinterService", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return PrinterService;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _printerdto = require("../interfaces/printer.dto");
|
|
12
|
+
const _printerentity = require("../../entities/printer.entity");
|
|
13
|
+
const _baseservice = require("./base.service");
|
|
14
|
+
const _urlutils = require("../../utils/url.utils");
|
|
15
|
+
const _validators = require("../../handlers/validators");
|
|
16
|
+
const _printerservicevalidation = require("../validators/printer-service.validation");
|
|
17
|
+
const _eventconstants = require("../../constants/event.constants");
|
|
18
|
+
class PrinterService extends (0, _baseservice.BaseService)(_printerentity.Printer, _printerdto.PrinterDto) {
|
|
19
|
+
logger;
|
|
20
|
+
eventEmitter2;
|
|
21
|
+
constructor({ loggerFactory, typeormService, eventEmitter2 }){
|
|
22
|
+
super({
|
|
23
|
+
typeormService
|
|
24
|
+
});
|
|
25
|
+
this.logger = loggerFactory(PrinterService.name);
|
|
26
|
+
this.eventEmitter2 = eventEmitter2;
|
|
27
|
+
}
|
|
28
|
+
toUnsafeDto(entity) {
|
|
29
|
+
return {
|
|
30
|
+
...this.toDto(entity),
|
|
31
|
+
apiKey: entity.apiKey,
|
|
32
|
+
printerURL: entity.printerURL
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
toDto(entity) {
|
|
36
|
+
return {
|
|
37
|
+
id: entity.id,
|
|
38
|
+
name: entity.name,
|
|
39
|
+
enabled: entity.enabled,
|
|
40
|
+
disabledReason: entity.disabledReason,
|
|
41
|
+
dateAdded: entity.dateAdded
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
async list() {
|
|
45
|
+
return this.repository.find({
|
|
46
|
+
order: {
|
|
47
|
+
dateAdded: "ASC"
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
async create(newPrinter, emitEvent = true) {
|
|
52
|
+
if (newPrinter.id) {
|
|
53
|
+
delete newPrinter.id;
|
|
54
|
+
}
|
|
55
|
+
const mergedPrinter = await this.validateAndDefault(newPrinter);
|
|
56
|
+
mergedPrinter.dateAdded = Date.now();
|
|
57
|
+
const printer = await super.create(mergedPrinter);
|
|
58
|
+
if (emitEvent) {
|
|
59
|
+
this.eventEmitter2.emit(_eventconstants.printerEvents.printerCreated, {
|
|
60
|
+
printer
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return printer;
|
|
64
|
+
}
|
|
65
|
+
async update(printerId, partial) {
|
|
66
|
+
const printer = await this.get(printerId);
|
|
67
|
+
if (partial.printerURL) {
|
|
68
|
+
partial.printerURL = (0, _urlutils.normalizeURLWithProtocol)(partial.printerURL);
|
|
69
|
+
}
|
|
70
|
+
Object.assign(printer, partial);
|
|
71
|
+
const { printerURL, apiKey, enabled, name } = await (0, _validators.validateInput)(printer, _printerservicevalidation.createPrinterRules);
|
|
72
|
+
const updatedPrinter = await super.update(printerId, {
|
|
73
|
+
printerURL,
|
|
74
|
+
name,
|
|
75
|
+
apiKey,
|
|
76
|
+
enabled
|
|
77
|
+
});
|
|
78
|
+
this.eventEmitter2.emit(_eventconstants.printerEvents.printerUpdated, {
|
|
79
|
+
printer,
|
|
80
|
+
updatedPrinter
|
|
81
|
+
});
|
|
82
|
+
return updatedPrinter;
|
|
83
|
+
}
|
|
84
|
+
async batchImport(printers) {
|
|
85
|
+
if (!printers?.length) return [];
|
|
86
|
+
this.logger.log(`Validating ${printers.length} printer objects`);
|
|
87
|
+
for (let printer of printers){
|
|
88
|
+
await this.validateAndDefault(printer);
|
|
89
|
+
}
|
|
90
|
+
const newPrinters = [];
|
|
91
|
+
for (let printer of printers){
|
|
92
|
+
const createdPrinter = await this.create(printer, false);
|
|
93
|
+
newPrinters.push(createdPrinter);
|
|
94
|
+
}
|
|
95
|
+
this.logger.log(`Successfully created ${printers.length} printers`);
|
|
96
|
+
this.eventEmitter2.emit(_eventconstants.printerEvents.batchPrinterCreated, {
|
|
97
|
+
printers: newPrinters
|
|
98
|
+
});
|
|
99
|
+
return newPrinters;
|
|
100
|
+
}
|
|
101
|
+
async deleteMany(printerIds, emitEvent = true) {
|
|
102
|
+
const result = await this.repository.delete(printerIds);
|
|
103
|
+
if (emitEvent) {
|
|
104
|
+
this.eventEmitter2.emit(_eventconstants.printerEvents.printersDeleted, {
|
|
105
|
+
printerIds
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
return result;
|
|
109
|
+
}
|
|
110
|
+
updateConnectionSettings(printerId, partial) {
|
|
111
|
+
return this.update(printerId, partial);
|
|
112
|
+
}
|
|
113
|
+
updateDisabledReason(printerId, disabledReason) {
|
|
114
|
+
return this.update(printerId, {
|
|
115
|
+
disabledReason
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
updateEnabled(printerId, enabled) {
|
|
119
|
+
return this.update(printerId, {
|
|
120
|
+
enabled
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
updateFeedRate(printerId, feedRate) {
|
|
124
|
+
return this.update(printerId, {
|
|
125
|
+
feedRate
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
updateFlowRate(printerId, flowRate) {
|
|
129
|
+
return this.update(printerId, {
|
|
130
|
+
flowRate
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
async validateAndDefault(printer) {
|
|
134
|
+
const mergedPrinter = {
|
|
135
|
+
enabled: true,
|
|
136
|
+
...printer
|
|
137
|
+
};
|
|
138
|
+
if (mergedPrinter.printerURL?.length) {
|
|
139
|
+
mergedPrinter.printerURL = (0, _urlutils.normalizeURLWithProtocol)(mergedPrinter.printerURL);
|
|
140
|
+
}
|
|
141
|
+
return await (0, _validators.validateInput)(mergedPrinter, _printerservicevalidation.createPrinterRules);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
//# sourceMappingURL=printer.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orm/printer.service.ts"],"names":["PrinterService","BaseService","Printer","PrinterDto","logger","eventEmitter2","constructor","loggerFactory","typeormService","name","toUnsafeDto","entity","toDto","apiKey","printerURL","id","enabled","disabledReason","dateAdded","list","repository","find","order","create","newPrinter","emitEvent","mergedPrinter","validateAndDefault","Date","now","printer","emit","printerEvents","printerCreated","update","printerId","partial","get","normalizeURLWithProtocol","Object","assign","validateInput","createPrinterRules","updatedPrinter","printerUpdated","batchImport","printers","length","log","newPrinters","createdPrinter","push","batchPrinterCreated","deleteMany","printerIds","result","delete","printersDeleted","updateConnectionSettings","updateDisabledReason","updateEnabled","updateFeedRate","feedRate","updateFlowRate","flowRate"],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "RefreshTokenService", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return RefreshTokenService;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _baseservice = require("./base.service");
|
|
12
|
+
const _entities = require("../../entities");
|
|
13
|
+
const _refreshtokendto = require("../interfaces/refresh-token.dto");
|
|
14
|
+
const _runtimeexceptions = require("../../exceptions/runtime.exceptions");
|
|
15
|
+
const _uuid = require("uuid");
|
|
16
|
+
const _serverconstants = require("../../server.constants");
|
|
17
|
+
const _typeorm = require("typeorm");
|
|
18
|
+
const _authorizationconstants = require("../../constants/authorization.constants");
|
|
19
|
+
class RefreshTokenService extends (0, _baseservice.BaseService)(_entities.RefreshToken, _refreshtokendto.RefreshTokenDto) {
|
|
20
|
+
settingsStore;
|
|
21
|
+
logger;
|
|
22
|
+
constructor({ typeormService, settingsStore, loggerFactory }){
|
|
23
|
+
super({
|
|
24
|
+
typeormService
|
|
25
|
+
});
|
|
26
|
+
this.settingsStore = settingsStore;
|
|
27
|
+
this.logger = loggerFactory(RefreshTokenService.name);
|
|
28
|
+
}
|
|
29
|
+
toDto(entity) {
|
|
30
|
+
return {
|
|
31
|
+
id: entity.id,
|
|
32
|
+
userId: entity.userId,
|
|
33
|
+
expiresAt: entity.expiresAt,
|
|
34
|
+
refreshAttemptsUsed: entity.refreshAttemptsUsed
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
async getRefreshToken(refreshToken, throwNotFoundError = true) {
|
|
38
|
+
const entity = await this.repository.findOneBy({
|
|
39
|
+
refreshToken
|
|
40
|
+
});
|
|
41
|
+
if (!entity) {
|
|
42
|
+
if (throwNotFoundError) {
|
|
43
|
+
throw new _runtimeexceptions.AuthenticationError(`The entity ${_entities.RefreshToken.name} '${refreshToken}' was not found.`, _authorizationconstants.AUTH_ERROR_REASON.InvalidOrExpiredRefreshToken);
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
return entity;
|
|
48
|
+
}
|
|
49
|
+
async createRefreshTokenForUserId(userId) {
|
|
50
|
+
const { refreshTokenExpiry } = await this.settingsStore.getCredentialSettings();
|
|
51
|
+
const refreshToken = (0, _uuid.v4)();
|
|
52
|
+
const timespan = refreshTokenExpiry ?? _serverconstants.AppConstants.DEFAULT_REFRESH_TOKEN_EXPIRY;
|
|
53
|
+
if (!refreshTokenExpiry) {
|
|
54
|
+
this.logger.warn(`Refresh token expiry not set in Settings:credentials, using default ${timespan} seconds}`);
|
|
55
|
+
}
|
|
56
|
+
await this.create({
|
|
57
|
+
userId,
|
|
58
|
+
expiresAt: Date.now() + timespan * 1000,
|
|
59
|
+
refreshToken,
|
|
60
|
+
refreshAttemptsUsed: 0
|
|
61
|
+
});
|
|
62
|
+
return refreshToken;
|
|
63
|
+
}
|
|
64
|
+
async updateRefreshTokenAttempts(refreshToken, refreshAttemptsUsed) {
|
|
65
|
+
await this.getRefreshToken(refreshToken, true);
|
|
66
|
+
await this.repository.update({
|
|
67
|
+
refreshToken
|
|
68
|
+
}, {
|
|
69
|
+
refreshAttemptsUsed
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
async purgeAllOutdatedRefreshTokens() {
|
|
73
|
+
const result = await this.repository.delete({
|
|
74
|
+
expiresAt: (0, _typeorm.LessThan)(Date.now())
|
|
75
|
+
});
|
|
76
|
+
if (result.affected) {
|
|
77
|
+
this.logger.debug(`Removed ${result.affected} outdated refresh tokens`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async deleteRefreshTokenByUserId(userId) {
|
|
81
|
+
const result = await this.repository.delete({
|
|
82
|
+
userId
|
|
83
|
+
});
|
|
84
|
+
if (result.affected) {
|
|
85
|
+
this.logger.debug(`Removed ${result.affected} login refresh tokens for user ${userId}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
async deleteRefreshToken(refreshToken) {
|
|
89
|
+
const result = await this.repository.delete({
|
|
90
|
+
refreshToken
|
|
91
|
+
});
|
|
92
|
+
if (result.affected) {
|
|
93
|
+
this.logger.debug(`Removed ${result.affected} login refresh tokens`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async purgeOutdatedRefreshTokensByUserId(userId) {
|
|
97
|
+
const result = await this.repository.delete({
|
|
98
|
+
userId,
|
|
99
|
+
expiresAt: (0, _typeorm.LessThan)(Date.now())
|
|
100
|
+
});
|
|
101
|
+
if (result.affected) {
|
|
102
|
+
this.logger.debug(`Removed ${result.affected} outdated login refresh tokens for user ${userId}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
//# sourceMappingURL=refresh-token.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orm/refresh-token.service.ts"],"names":["RefreshTokenService","BaseService","RefreshToken","RefreshTokenDto","settingsStore","logger","constructor","typeormService","loggerFactory","name","toDto","entity","id","userId","expiresAt","refreshAttemptsUsed","getRefreshToken","refreshToken","throwNotFoundError","repository","findOneBy","AuthenticationError","AUTH_ERROR_REASON","InvalidOrExpiredRefreshToken","createRefreshTokenForUserId","refreshTokenExpiry","getCredentialSettings","uuidv4","timespan","AppConstants","DEFAULT_REFRESH_TOKEN_EXPIRY","warn","create","Date","now","updateRefreshTokenAttempts","update","purgeAllOutdatedRefreshTokens","result","delete","LessThan","affected","debug","deleteRefreshTokenByUserId","deleteRefreshToken","purgeOutdatedRefreshTokensByUserId"],"mappings":"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"}
|