@fdm-monster/server 2.0.1 → 2.0.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/.env.template +2 -1
- package/.yarn/install-state.gz +0 -0
- package/README.md +30 -13
- package/RELEASE_NOTES.MD +39 -0
- package/dist/consoles/mock-octoprint.server.js +1 -1
- package/dist/consoles/mock-octoprint.server.js.map +1 -1
- package/dist/constants/authorization.constants.js +12 -3
- package/dist/constants/authorization.constants.js.map +1 -1
- package/dist/container.js +2 -0
- package/dist/container.js.map +1 -1
- package/dist/container.tokens.js +1 -0
- package/dist/container.tokens.js.map +1 -1
- package/dist/controllers/printer-maintenance-log.controller.js +174 -0
- package/dist/controllers/printer-maintenance-log.controller.js.map +1 -0
- package/dist/data-source.js +8 -8
- package/dist/data-source.js.map +1 -1
- package/dist/entities/index.js +4 -0
- package/dist/entities/index.js.map +1 -1
- package/dist/entities/print-job.entity.js +5 -1
- package/dist/entities/print-job.entity.js.map +1 -1
- package/dist/entities/printer-maintenance-log.entity.js +142 -0
- package/dist/entities/printer-maintenance-log.entity.js.map +1 -0
- package/dist/entities/printer.entity.js +2 -1
- package/dist/entities/printer.entity.js.map +1 -1
- package/dist/handlers/logging/file-logging.transport.js +2 -2
- package/dist/handlers/logging/file-logging.transport.js.map +1 -1
- package/dist/index.js +11 -5
- package/dist/index.js.map +1 -1
- package/dist/migrations/1767909428129-AddPrinterMaintenanceLog.js +52 -0
- package/dist/migrations/1767909428129-AddPrinterMaintenanceLog.js.map +1 -0
- package/dist/server.constants.js +13 -9
- package/dist/server.constants.js.map +1 -1
- package/dist/server.core.js +7 -4
- package/dist/server.core.js.map +1 -1
- package/dist/server.env.js +13 -32
- package/dist/server.env.js.map +1 -1
- package/dist/server.host.js +1 -1
- package/dist/server.host.js.map +1 -1
- package/dist/services/bambu/bambu-ftp.adapter.js +1 -1
- package/dist/services/bambu/bambu-ftp.adapter.js.map +1 -1
- package/dist/services/core/client-bundle.service.js +10 -11
- package/dist/services/core/client-bundle.service.js.map +1 -1
- package/dist/services/core/config.service.js +3 -5
- package/dist/services/core/config.service.js.map +1 -1
- package/dist/services/core/logs-manager.service.js +9 -10
- package/dist/services/core/logs-manager.service.js.map +1 -1
- package/dist/services/core/multer.service.js +2 -2
- package/dist/services/core/multer.service.js.map +1 -1
- package/dist/services/core/yaml.service.js +8 -5
- package/dist/services/core/yaml.service.js.map +1 -1
- package/dist/services/file-storage.service.js +1 -1
- package/dist/services/file-storage.service.js.map +1 -1
- package/dist/services/interfaces/printer-maintenance-log.dto.js +6 -0
- package/dist/services/interfaces/printer-maintenance-log.dto.js.map +1 -0
- package/dist/services/interfaces/printer.dto.js.map +1 -1
- package/dist/services/orm/printer-maintenance-log.service.js +151 -0
- package/dist/services/orm/printer-maintenance-log.service.js.map +1 -0
- package/dist/services/orm/printer.service.js +15 -7
- package/dist/services/orm/printer.service.js.map +1 -1
- package/dist/services/typeorm/typeorm.service.js +5 -5
- package/dist/services/typeorm/typeorm.service.js.map +1 -1
- package/dist/services/validators/printer-maintenance-log.validation.js +41 -0
- package/dist/services/validators/printer-maintenance-log.validation.js.map +1 -0
- package/dist/services/validators/printer-service.validation.js +4 -5
- package/dist/services/validators/printer-service.validation.js.map +1 -1
- package/dist/services/validators/yaml-service.validation.js +6 -2
- package/dist/services/validators/yaml-service.validation.js.map +1 -1
- package/dist/state/test-printer-socket.store.js +2 -2
- package/dist/state/test-printer-socket.store.js.map +1 -1
- package/dist/tasks/print-job-analysis.task.js +0 -1
- package/dist/tasks/print-job-analysis.task.js.map +1 -1
- package/dist/utils/env.utils.js +5 -4
- package/dist/utils/env.utils.js.map +1 -1
- package/dist/utils/fs.utils.js +37 -11
- package/dist/utils/fs.utils.js.map +1 -1
- package/dist/utils/swagger/swagger.js +1 -1
- package/dist/utils/swagger/swagger.js.map +1 -1
- package/package.json +10 -11
package/dist/data-source.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data-source.ts"],"names":["AppDataSource","process","env","NODE_ENV","dotenv","config","path","
|
|
1
|
+
{"version":3,"sources":["../src/data-source.ts"],"names":["AppDataSource","process","env","NODE_ENV","dotenv","config","path","ENV_FILE","join","quiet","DataSource","type","database","getDatabaseFilePath","synchronize","logging","entities","Floor","FloorPosition","Printer","Settings","User","CameraStream","Role","RefreshToken","UserRole","Tag","PrinterTag","PrintJob","PrinterMaintenanceLog","migrations","InitSqlite1706829146617","PrinterGroup1707494762198","ChangePrintCompletionDeletePrinterCascade1708465930665","ChangeRoleNameUnique1713300747465","RemovePrinterFile1720338804844","AddPrinterType1713897879622","AddPrinterUsernamePassword1745141688926","DropPermissions1766576698569","ChangeCameraPrinterOnDeleteSetNull1767278216516","DropCustomGcode1767279607392","DropPrintCompletions1767291804417","DropSettingsFileClean1767352862576","ChangeFloorNonUniqueOrder1767370191762","RenameGroupToTag1767432108916","AddPrintJob1767451444137","AddPrinterMaintenanceLog1767909428129","subscribers"],"mappings":";;;;+BA2CaA;;;eAAAA;;;QA3CN;yBACoB;+DACR;0BACE;yBACe;6BACd;qCACQ;+BACN;gCACC;0BAC2C;oCACvC;4BACR;gCACI;yCACe;kCACb;2BACP;2CACsB;wEAGnC;mDAC2C;gDACH;6CACH;yDACY;8CACX;iEAGtC;8CACsC;mDACK;oDACC;wDACI;+CACT;0CACL;uDACa;;;;;;AAEtD,IAAIC,QAAQC,GAAG,CAACC,QAAQ,KAAK,QAAQ;IACnCC,eAAM,CAACC,MAAM,CAAC;QACZC,MAAML,QAAQC,GAAG,CAACK,QAAQ,IAAIC,IAAAA,cAAI,EAAC;QACnCC,OAAO;IACT;AACF;AAEO,MAAMT,gBAAgB,IAAIU,mBAAU,CAAC;IAC1CC,MAAM;IACNC,UAAUC,IAAAA,4BAAmB;IAC7BC,aAAa;IACbC,SAAS;IACTC,UAAU;QACRC,kBAAK;QACLC,kCAAa;QACbC,sBAAO;QACPC,wBAAQ;QACRC,cAAI;QACJC,gCAAY;QACZC,gBAAI;QACJC,sBAAY;QACZC,wBAAQ;QACRC,cAAG;QACHC,4BAAU;QACVC,kBAAQ;QACRC,+BAAqB;KACtB;IACDC,YAAY;QACVC,gDAAuB;QACvBC,oDAAyB;QACzBC,8GAAsD;QACtDC,oEAAiC;QACjCC,8DAA8B;QAC9BC,wDAA2B;QAC3BC,gFAAuC;QACvCC,0DAA4B;QAC5BC,gGAA+C;QAC/CC,0DAA4B;QAC5BC,oEAAiC;QACjCC,sEAAkC;QAClCC,8EAAsC;QACtCC,4DAA6B;QAC7BC,kDAAwB;QACxBC,4EAAqC;KACtC;IACDC,aAAa,EAAE;AACjB"}
|
package/dist/entities/index.js
CHANGED
|
@@ -24,6 +24,9 @@ _export(exports, {
|
|
|
24
24
|
get Printer () {
|
|
25
25
|
return _printerentity.Printer;
|
|
26
26
|
},
|
|
27
|
+
get PrinterMaintenanceLog () {
|
|
28
|
+
return _printermaintenancelogentity.PrinterMaintenanceLog;
|
|
29
|
+
},
|
|
27
30
|
get PrinterTag () {
|
|
28
31
|
return _printertagentity.PrinterTag;
|
|
29
32
|
},
|
|
@@ -58,5 +61,6 @@ const _refreshtokenentity = require("./refresh-token.entity");
|
|
|
58
61
|
const _printertagentity = require("./printer-tag.entity");
|
|
59
62
|
const _tagentity = require("./tag.entity");
|
|
60
63
|
const _printjobentity = require("./print-job.entity");
|
|
64
|
+
const _printermaintenancelogentity = require("./printer-maintenance-log.entity");
|
|
61
65
|
|
|
62
66
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/entities/index.ts"],"names":["CameraStream","Floor","FloorPosition","PrintJob","Printer","PrinterTag","RefreshToken","Role","Settings","Tag","User","UserRole"],"mappings":";;;;;;;;;;;QACSA;eAAAA,gCAAY;;QACZC;eAAAA,kBAAK;;QACLC;eAAAA,kCAAa;;QAQbC;eAAAA,wBAAQ;;QAPRC;eAAAA,sBAAO;;
|
|
1
|
+
{"version":3,"sources":["../../src/entities/index.ts"],"names":["CameraStream","Floor","FloorPosition","PrintJob","Printer","PrinterMaintenanceLog","PrinterTag","RefreshToken","Role","Settings","Tag","User","UserRole"],"mappings":";;;;;;;;;;;QACSA;eAAAA,gCAAY;;QACZC;eAAAA,kBAAK;;QACLC;eAAAA,kCAAa;;QAQbC;eAAAA,wBAAQ;;QAPRC;eAAAA,sBAAO;;QAQPC;eAAAA,kDAAqB;;QAHrBC;eAAAA,4BAAU;;QADVC;eAAAA,gCAAY;;QAHZC;eAAAA,gBAAI;;QAEJC;eAAAA,wBAAQ;;QAGRC;eAAAA,cAAG;;QAVHC;eAAAA,gBAAI;;QAMJC;eAAAA,wBAAQ;;;4BANI;oCACQ;6BACP;qCACQ;+BACN;4BACH;gCACI;gCACA;oCACI;kCACF;2BACP;gCACK;6CACa"}
|
|
@@ -49,9 +49,13 @@ _ts_decorate([
|
|
|
49
49
|
], PrintJob.prototype, "id", void 0);
|
|
50
50
|
_ts_decorate([
|
|
51
51
|
(0, _typeorm.ManyToOne)(()=>_printerentity.Printer, {
|
|
52
|
+
nullable: true,
|
|
52
53
|
onDelete: "SET NULL"
|
|
53
54
|
}),
|
|
54
|
-
|
|
55
|
+
(0, _typeorm.JoinColumn)({
|
|
56
|
+
name: "printerId"
|
|
57
|
+
}),
|
|
58
|
+
_ts_metadata("design:type", typeof _typeorm.Relation === "undefined" ? Object : _typeorm.Relation)
|
|
55
59
|
], PrintJob.prototype, "printer", void 0);
|
|
56
60
|
_ts_decorate([
|
|
57
61
|
(0, _typeorm.Column)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/entities/print-job.entity.ts"],"names":["PrintJob","id","printer","printerId","printerName","fileName","fileStorageId","fileFormat","fileSize","fileHash","createdAt","updatedAt","analyzedAt","startedAt","endedAt","status","analysisState","statusReason","progress","metadata","statistics","queuePosition","queueGroup","Printer","onDelete","
|
|
1
|
+
{"version":3,"sources":["../../src/entities/print-job.entity.ts"],"names":["PrintJob","id","printer","printerId","printerName","fileName","fileStorageId","fileFormat","fileSize","fileHash","createdAt","updatedAt","analyzedAt","startedAt","endedAt","status","analysisState","statusReason","progress","metadata","statistics","queuePosition","queueGroup","Printer","nullable","onDelete","name","type","Date","default"],"mappings":";;;;+BAiKaA;;;eAAAA;;;yBAxJN;+BACiB;;;;;;;;;;AAuJjB,MAAMA;IAEXC,GAAW;IAIXC,QAA4B;IAE5BC,UAAyB;IAGzBC,YAA2B;IAI3BC,SAAiB;IAGjBC,cAA6B;IAG7BC,WAAkC;IAGlCC,SAAwB;IAGxBC,SAAwB;IAIxBC,UAAgB;IAGhBC,UAAgB;IAGhBC,WAAwB;IAGxBC,UAAuB;IAGvBC,QAAqB;IAIrBC,OAAuB;IAGvBC,cAA6B;IAG7BC,aAA4B;IAI5BC,SAAwB;IAIxBC,SAAkC;IAIlCC,WAAmC;IAInCC,cAA6B;IAG7BC,WAA0B;AAC5B;;;;;;gCArEmBC,sBAAO;QAAIC,UAAU;QAAMC,UAAU;;;QACxCC,MAAM;;;;;;QAEVF,UAAU;;;;;;QAGVG,MAAM;QAAWH,UAAU;;;;;;QAI3BG,MAAM;QAAWH,UAAU;;;;;;QAG3BG,MAAM;QAAWH,UAAU;;;;;;QAG3BG,MAAM;QAAWH,UAAU;;;;;;QAG3BG,MAAM;QAAOH,UAAU;;;;;;QAGvBG,MAAM;QAAWH,UAAU;;;;;;;;;;;;;;QAU3BG,MAAMC;QAAMJ,UAAU;;;;;;QAGtBG,MAAMC;QAAMJ,UAAU;;;;;;QAGtBG,MAAMC;QAAMJ,UAAU;;;;;;QAItBG,MAAM;QAAWH,UAAU;QAAOK,SAAS;;;;;;QAG3CF,MAAM;QAAWH,UAAU;QAAOK,SAAS;;;;;;QAG3CF,MAAM;QAAWH,UAAU;;;;;;QAI3BG,MAAM;QAASH,UAAU;;;;;;QAIzBG,MAAM;QAAQH,UAAU;;;;;;QAIxBG,MAAM;QAAQH,UAAU;;;;;;QAIxBG,MAAM;QAAOH,UAAU;;;;;;QAGvBG,MAAM;QAAWH,UAAU"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "PrinterMaintenanceLog", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return PrinterMaintenanceLog;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _typeorm = require("typeorm");
|
|
12
|
+
const _printerentity = require("./printer.entity");
|
|
13
|
+
const _userentity = require("./user.entity");
|
|
14
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
15
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
16
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
17
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
18
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
19
|
+
}
|
|
20
|
+
function _ts_metadata(k, v) {
|
|
21
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
22
|
+
}
|
|
23
|
+
class PrinterMaintenanceLog {
|
|
24
|
+
id;
|
|
25
|
+
createdAt;
|
|
26
|
+
createdBy;
|
|
27
|
+
createdByUser;
|
|
28
|
+
createdByUserId;
|
|
29
|
+
printer;
|
|
30
|
+
printerId;
|
|
31
|
+
printerName;
|
|
32
|
+
printerUrl;
|
|
33
|
+
metadata;
|
|
34
|
+
completed;
|
|
35
|
+
completedAt;
|
|
36
|
+
completedByUser;
|
|
37
|
+
completedByUserId;
|
|
38
|
+
completedBy;
|
|
39
|
+
}
|
|
40
|
+
_ts_decorate([
|
|
41
|
+
(0, _typeorm.PrimaryGeneratedColumn)(),
|
|
42
|
+
_ts_metadata("design:type", Number)
|
|
43
|
+
], PrinterMaintenanceLog.prototype, "id", void 0);
|
|
44
|
+
_ts_decorate([
|
|
45
|
+
(0, _typeorm.CreateDateColumn)(),
|
|
46
|
+
_ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
|
|
47
|
+
], PrinterMaintenanceLog.prototype, "createdAt", void 0);
|
|
48
|
+
_ts_decorate([
|
|
49
|
+
(0, _typeorm.Column)({
|
|
50
|
+
nullable: false
|
|
51
|
+
}),
|
|
52
|
+
_ts_metadata("design:type", String)
|
|
53
|
+
], PrinterMaintenanceLog.prototype, "createdBy", void 0);
|
|
54
|
+
_ts_decorate([
|
|
55
|
+
(0, _typeorm.ManyToOne)(()=>_userentity.User, {
|
|
56
|
+
onDelete: "SET NULL",
|
|
57
|
+
nullable: true
|
|
58
|
+
}),
|
|
59
|
+
_ts_metadata("design:type", Object)
|
|
60
|
+
], PrinterMaintenanceLog.prototype, "createdByUser", void 0);
|
|
61
|
+
_ts_decorate([
|
|
62
|
+
(0, _typeorm.Column)({
|
|
63
|
+
nullable: true
|
|
64
|
+
}),
|
|
65
|
+
_ts_metadata("design:type", Object)
|
|
66
|
+
], PrinterMaintenanceLog.prototype, "createdByUserId", void 0);
|
|
67
|
+
_ts_decorate([
|
|
68
|
+
(0, _typeorm.ManyToOne)(()=>_printerentity.Printer, {
|
|
69
|
+
onDelete: "SET NULL",
|
|
70
|
+
nullable: true
|
|
71
|
+
}),
|
|
72
|
+
_ts_metadata("design:type", Object)
|
|
73
|
+
], PrinterMaintenanceLog.prototype, "printer", void 0);
|
|
74
|
+
_ts_decorate([
|
|
75
|
+
(0, _typeorm.Column)({
|
|
76
|
+
nullable: true
|
|
77
|
+
}),
|
|
78
|
+
_ts_metadata("design:type", Object)
|
|
79
|
+
], PrinterMaintenanceLog.prototype, "printerId", void 0);
|
|
80
|
+
_ts_decorate([
|
|
81
|
+
(0, _typeorm.Column)({
|
|
82
|
+
nullable: false
|
|
83
|
+
}),
|
|
84
|
+
_ts_metadata("design:type", String)
|
|
85
|
+
], PrinterMaintenanceLog.prototype, "printerName", void 0);
|
|
86
|
+
_ts_decorate([
|
|
87
|
+
(0, _typeorm.Column)({
|
|
88
|
+
nullable: false
|
|
89
|
+
}),
|
|
90
|
+
_ts_metadata("design:type", String)
|
|
91
|
+
], PrinterMaintenanceLog.prototype, "printerUrl", void 0);
|
|
92
|
+
_ts_decorate([
|
|
93
|
+
(0, _typeorm.Column)({
|
|
94
|
+
nullable: false,
|
|
95
|
+
type: "json",
|
|
96
|
+
default: "{}"
|
|
97
|
+
}),
|
|
98
|
+
_ts_metadata("design:type", Object)
|
|
99
|
+
], PrinterMaintenanceLog.prototype, "metadata", void 0);
|
|
100
|
+
_ts_decorate([
|
|
101
|
+
(0, _typeorm.Column)({
|
|
102
|
+
nullable: false,
|
|
103
|
+
default: false
|
|
104
|
+
}),
|
|
105
|
+
_ts_metadata("design:type", Boolean)
|
|
106
|
+
], PrinterMaintenanceLog.prototype, "completed", void 0);
|
|
107
|
+
_ts_decorate([
|
|
108
|
+
(0, _typeorm.Column)({
|
|
109
|
+
nullable: true
|
|
110
|
+
}),
|
|
111
|
+
_ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
|
|
112
|
+
], PrinterMaintenanceLog.prototype, "completedAt", void 0);
|
|
113
|
+
_ts_decorate([
|
|
114
|
+
(0, _typeorm.ManyToOne)(()=>_userentity.User, {
|
|
115
|
+
onDelete: "SET NULL",
|
|
116
|
+
nullable: true
|
|
117
|
+
}),
|
|
118
|
+
_ts_metadata("design:type", Object)
|
|
119
|
+
], PrinterMaintenanceLog.prototype, "completedByUser", void 0);
|
|
120
|
+
_ts_decorate([
|
|
121
|
+
(0, _typeorm.Column)({
|
|
122
|
+
nullable: true
|
|
123
|
+
}),
|
|
124
|
+
_ts_metadata("design:type", Object)
|
|
125
|
+
], PrinterMaintenanceLog.prototype, "completedByUserId", void 0);
|
|
126
|
+
_ts_decorate([
|
|
127
|
+
(0, _typeorm.Column)({
|
|
128
|
+
nullable: true
|
|
129
|
+
}),
|
|
130
|
+
_ts_metadata("design:type", String)
|
|
131
|
+
], PrinterMaintenanceLog.prototype, "completedBy", void 0);
|
|
132
|
+
PrinterMaintenanceLog = _ts_decorate([
|
|
133
|
+
(0, _typeorm.Entity)(),
|
|
134
|
+
(0, _typeorm.Index)([
|
|
135
|
+
"printerId"
|
|
136
|
+
], {
|
|
137
|
+
unique: true,
|
|
138
|
+
where: "completed = 0"
|
|
139
|
+
})
|
|
140
|
+
], PrinterMaintenanceLog);
|
|
141
|
+
|
|
142
|
+
//# sourceMappingURL=printer-maintenance-log.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/entities/printer-maintenance-log.entity.ts"],"names":["PrinterMaintenanceLog","id","createdAt","createdBy","createdByUser","createdByUserId","printer","printerId","printerName","printerUrl","metadata","completed","completedAt","completedByUser","completedByUserId","completedBy","nullable","User","onDelete","Printer","type","default","unique","where"],"mappings":";;;;+BAaaA;;;eAAAA;;;yBANN;+BACiB;4BACH;;;;;;;;;;AAId,MAAMA;IAEXC,GAAW;IAGXC,UAAgB;IAEhBC,UAAkB;IAElBC,cAA2B;IAE3BC,gBAA+B;IAG/BC,QAAwB;IAExBC,UAAyB;IAEzBC,YAAoB;IAEpBC,WAAmB;IAGnBC,SAKE;IAGFC,UAAmB;IAEnBC,YAAmB;IAEnBC,gBAA6B;IAE7BC,kBAAiC;IAEjCC,YAAqB;AACvB;;;;;;;;;;;QAlCYC,UAAU;;;;;gCAEHC,gBAAI;QAAIC,UAAU;QAAYF,UAAU;;;;;;QAE/CA,UAAU;;;;;gCAGHG,sBAAO;QAAID,UAAU;QAAYF,UAAU;;;;;;QAElDA,UAAU;;;;;;QAEVA,UAAU;;;;;;QAEVA,UAAU;;;;;;QAGVA,UAAU;QAAOI,MAAM;QAAQC,SAAS;;;;;;QAQxCL,UAAU;QAAOK,SAAS;;;;;;QAE1BL,UAAU;;;;;gCAEHC,gBAAI;QAAIC,UAAU;QAAYF,UAAU;;;;;;QAE/CA,UAAU;;;;;;QAEVA,UAAU;;;;;;;QAvCd;;QAAgBM,QAAQ;QAAMC,OAAO"}
|
|
@@ -89,9 +89,10 @@ _ts_decorate([
|
|
|
89
89
|
], Printer.prototype, "enabled", void 0);
|
|
90
90
|
_ts_decorate([
|
|
91
91
|
(0, _typeorm.Column)({
|
|
92
|
+
type: "varchar",
|
|
92
93
|
nullable: true
|
|
93
94
|
}),
|
|
94
|
-
_ts_metadata("design:type",
|
|
95
|
+
_ts_metadata("design:type", Object)
|
|
95
96
|
], Printer.prototype, "disabledReason", void 0);
|
|
96
97
|
_ts_decorate([
|
|
97
98
|
(0, _typeorm.Column)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/entities/printer.entity.ts"],"names":["Printer","id","name","printerURL","printerType","apiKey","username","password","enabled","disabledReason","assignee","printerTags","dateAdded","feedRate","flowRate","default","OctoprintType","nullable","PrinterTag","pc","printer"
|
|
1
|
+
{"version":3,"sources":["../../src/entities/printer.entity.ts"],"names":["Printer","id","name","printerURL","printerType","apiKey","username","password","enabled","disabledReason","assignee","printerTags","dateAdded","feedRate","flowRate","default","OctoprintType","nullable","type","PrinterTag","pc","printer"],"mappings":";;;;+BAMaA;;;eAAAA;;;gCANkB;yBAC+D;kCACnE;qCACG;;;;;;;;;;AAGvB,MAAMA;IAEXC,GAAW;IAGXC,KAAa;IAGbC,WAAmB;IAGnBC,YAAoB;IAIpBC,OAAe;IAIfC,SAAiB;IAIjBC,SAAiB;IAMjBC,QAAiB;IAGjBC,eAA8B;IAK9BC,SAAkB;IAMlBC,YAAoC;IAGpCC,UAAkB;IAGlBC,SAAkB;IAGlBC,SAAkB;AACpB;;;;;;;;;;;;;;;QA3CYC,SAASC,kCAAa;QAAEC,UAAU;;;;;;QAGlCF,SAAS;QAAIE,UAAU;;;;;;;QAIvBF,SAAS;QAAIE,UAAU;;;;;;;QAIvBF,SAAS;QAAIE,UAAU;;;;;;;QAK/BA,UAAU;QACVF,SAAS;;;;;;QAIDG,MAAM;QAAWD,UAAU;;;;;;QAInCA,UAAU;;;;;gCAKJE,4BAAU,GACfC,KAAOA,GAAGC,OAAO;;;;;QAIAH,MAAM;;;;;;QAGhBD,UAAU;;;;;;QAGVA,UAAU"}
|
|
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "createFileLoggingTransport", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
const _luxon = require("luxon");
|
|
12
|
-
const
|
|
12
|
+
const _nodepath = require("node:path");
|
|
13
13
|
const _fsutils = require("../../utils/fs.utils");
|
|
14
14
|
const _serverconstants = require("../../server.constants");
|
|
15
15
|
const _winston = /*#__PURE__*/ _interop_require_default(require("winston"));
|
|
@@ -23,7 +23,7 @@ function createFileLoggingTransport(options) {
|
|
|
23
23
|
return;
|
|
24
24
|
}
|
|
25
25
|
const date = _luxon.DateTime.now().toISODate();
|
|
26
|
-
const logFilePath = (0,
|
|
26
|
+
const logFilePath = (0, _nodepath.join)((0, _fsutils.getMediaPath)(), _serverconstants.AppConstants.defaultLogsFolder, `${_serverconstants.AppConstants.logAppName}-${date}.log`);
|
|
27
27
|
return new _winston.default.transports.File({
|
|
28
28
|
level: options.isTest ? "warn" : "info",
|
|
29
29
|
filename: logFilePath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/handlers/logging/file-logging.transport.ts"],"names":["createFileLoggingTransport","options","enabled","date","DateTime","now","toISODate","logFilePath","join","
|
|
1
|
+
{"version":3,"sources":["../../../src/handlers/logging/file-logging.transport.ts"],"names":["createFileLoggingTransport","options","enabled","date","DateTime","now","toISODate","logFilePath","join","getMediaPath","AppConstants","defaultLogsFolder","logAppName","winston","transports","File","level","isTest","filename","maxsize","maxFiles"],"mappings":";;;;+BAWgBA;;;eAAAA;;;uBAXS;0BACJ;yBACQ;iCACA;gEACT;;;;;;AAOb,SAASA,2BAA2BC,OAA0B;IACnE,IAAI,CAACA,QAAQC,OAAO,EAAE;QACpB;IACF;IAEA,MAAMC,OAAOC,eAAQ,CAACC,GAAG,GAAGC,SAAS;IACrC,MAAMC,cAAcC,IAAAA,cAAI,EAACC,IAAAA,qBAAY,KAAIC,6BAAY,CAACC,iBAAiB,EAAE,GAAGD,6BAAY,CAACE,UAAU,CAAC,CAAC,EAAET,KAAK,IAAI,CAAC;IAEjH,OAAO,IAAIU,gBAAO,CAACC,UAAU,CAACC,IAAI,CAAC;QACjCC,OAAOf,QAAQgB,MAAM,GAAG,SAAS;QACjCC,UAAUX;QACVY,SAAS;QACTC,UAAU;IACZ;AACF"}
|
package/dist/index.js
CHANGED
|
@@ -2,17 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
+
const _dotenv = /*#__PURE__*/ _interop_require_default(require("dotenv"));
|
|
6
|
+
const _nodepath = require("node:path");
|
|
5
7
|
const _node = require("@sentry/node");
|
|
6
8
|
const _serverenv = require("./server.env");
|
|
7
9
|
const _servercore = require("./server.core");
|
|
8
10
|
const _containertokens = require("./container.tokens");
|
|
9
|
-
const _dotenv = require("dotenv");
|
|
10
11
|
const _logger = require("./handlers/logger");
|
|
11
|
-
const _nodepath = require("node:path");
|
|
12
|
-
const _fsutils = require("./utils/fs.utils");
|
|
13
12
|
const _staticlogger = require("./handlers/logging/static.logger");
|
|
14
|
-
(
|
|
15
|
-
|
|
13
|
+
const _fsutils = require("./utils/fs.utils");
|
|
14
|
+
function _interop_require_default(obj) {
|
|
15
|
+
return obj && obj.__esModule ? obj : {
|
|
16
|
+
default: obj
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
_dotenv.default.config({
|
|
20
|
+
path: process.env.ENV_FILE || (0, _nodepath.join)((0, _fsutils.superRootPath)(), ".env"),
|
|
21
|
+
quiet: true
|
|
16
22
|
});
|
|
17
23
|
(0, _staticlogger.createStaticLogger)({
|
|
18
24
|
enableFileLogs: true
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["config","path","join","superRootPath","createStaticLogger","enableFileLogs","logger","Logger","log","setupEnvConfig","
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["dotenv","config","path","process","env","ENV_FILE","join","superRootPath","quiet","createStaticLogger","enableFileLogs","logger","Logger","log","setupEnvConfig","on","err","error","reason","setupServer","then","httpServer","container","resolve","DITokens","serverHost","boot","catch","e","console","captureException","flush","exit"],"mappings":";;;;+DAAmB;0BACE;sBACmB;2BACT;4BACH;iCACH;wBAEe;8BACL;yBACL;;;;;;AAE9BA,eAAM,CAACC,MAAM,CAAC;IACZC,MAAMC,QAAQC,GAAG,CAACC,QAAQ,IAAIC,IAAAA,cAAI,EAACC,IAAAA,sBAAa,KAAI;IACpDC,OAAO;AACT;AAEAC,IAAAA,gCAAkB,EAAC;IAAEC,gBAAgB;AAAK;AAC1C,MAAMC,SAAS,IAAIC,qBAAM,CAAC;AAC1BD,OAAOE,GAAG,CAAC;AAEXC,IAAAA,yBAAc;AAEdX,QAAQY,EAAE,CAAC,qBAAqB,CAACC;IAC/BL,OAAOM,KAAK,CAAC,sBAAsBD;AACrC;AAEAb,QAAQY,EAAE,CAAC,sBAAsB,CAACG;IAChCP,OAAOM,KAAK,CAAC,+BAA+BC;AAC9C;AAEAC,IAAAA,uBAAW,IAAGC,IAAI,CAAC,CAAC,EAAEC,UAAU,EAAEC,SAAS,EAAE;IAC3CA,UACGC,OAAO,CAAaC,yBAAQ,CAACC,UAAU,EACvCC,IAAI,CAACL,YACLM,KAAK,CAAC,OAAOC;QACZC,QAAQZ,KAAK,CAAC,2DAA2DW;QAEzEE,IAAAA,sBAAgB,EAACF;QACjB,MAAMG,IAAAA,WAAK,EAAC;QACZ5B,QAAQ6B,IAAI,CAAC;IACf;AACJ"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "AddPrinterMaintenanceLog1767909428129", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return AddPrinterMaintenanceLog1767909428129;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
class AddPrinterMaintenanceLog1767909428129 {
|
|
12
|
+
name = 'AddPrinterMaintenanceLog1767909428129';
|
|
13
|
+
async up(queryRunner) {
|
|
14
|
+
await queryRunner.query(`
|
|
15
|
+
CREATE TABLE "printer_maintenance_log"
|
|
16
|
+
(
|
|
17
|
+
"id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
18
|
+
"createdAt" datetime NOT NULL DEFAULT (datetime('now')),
|
|
19
|
+
"createdBy" varchar NOT NULL,
|
|
20
|
+
"createdByUserId" integer,
|
|
21
|
+
"printerId" integer,
|
|
22
|
+
"printerName" varchar NOT NULL,
|
|
23
|
+
"printerUrl" varchar NOT NULL,
|
|
24
|
+
"metadata" json NOT NULL DEFAULT ('{}'),
|
|
25
|
+
"completed" boolean NOT NULL DEFAULT (0),
|
|
26
|
+
"completedAt" datetime,
|
|
27
|
+
"completedByUserId" integer,
|
|
28
|
+
"completedBy" varchar,
|
|
29
|
+
CONSTRAINT "FK_d54c05d7dc0cf426afc8175cfdf" FOREIGN KEY ("createdByUserId") REFERENCES "user" ("id") ON DELETE
|
|
30
|
+
SET NULL ON UPDATE NO ACTION,
|
|
31
|
+
CONSTRAINT "FK_9740e3fd40554a0e40e595ff66d" FOREIGN KEY ("printerId") REFERENCES "printer" ("id") ON DELETE
|
|
32
|
+
SET NULL ON UPDATE NO ACTION,
|
|
33
|
+
CONSTRAINT "FK_36c3aa0f9077a6c06e93e7ec79e" FOREIGN KEY ("completedByUserId") REFERENCES "user" ("id") ON DELETE
|
|
34
|
+
SET NULL ON UPDATE NO ACTION
|
|
35
|
+
)
|
|
36
|
+
`);
|
|
37
|
+
await queryRunner.query(`
|
|
38
|
+
CREATE UNIQUE INDEX "IDX_14acf30ae0f34a69d98bf92064" ON "printer_maintenance_log" ("printerId")
|
|
39
|
+
WHERE completed = 0
|
|
40
|
+
`);
|
|
41
|
+
}
|
|
42
|
+
async down(queryRunner) {
|
|
43
|
+
await queryRunner.query(`
|
|
44
|
+
DROP INDEX "IDX_14acf30ae0f34a69d98bf92064"
|
|
45
|
+
`);
|
|
46
|
+
await queryRunner.query(`
|
|
47
|
+
DROP TABLE "printer_maintenance_log"
|
|
48
|
+
`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=1767909428129-AddPrinterMaintenanceLog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/migrations/1767909428129-AddPrinterMaintenanceLog.ts"],"names":["AddPrinterMaintenanceLog1767909428129","name","up","queryRunner","query","down"],"mappings":";;;;+BAEaA;;;eAAAA;;;AAAN,MAAMA;IACXC,OAAO,wCAAuC;IAE9C,MAAaC,GAAGC,WAAwB,EAAiB;QACvD,MAAMA,YAAYC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;IAsBzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;;IAGzB,CAAC;IACH;IAEA,MAAaC,KAAKF,WAAwB,EAAiB;QACzD,MAAMA,YAAYC,KAAK,CAAC,CAAC;;IAEzB,CAAC;QACD,MAAMD,YAAYC,KAAK,CAAC,CAAC;;IAEzB,CAAC;IACH;AACF"}
|
package/dist/server.constants.js
CHANGED
|
@@ -13,17 +13,20 @@ const AppConstants = {
|
|
|
13
13
|
VERSION_KEY: "npm_package_version",
|
|
14
14
|
SERVER_PORT_KEY: "SERVER_PORT",
|
|
15
15
|
DATABASE_PATH: "DATABASE_PATH",
|
|
16
|
+
defaultDatabasePath: "./database",
|
|
16
17
|
DATABASE_FILE: "DATABASE_FILE",
|
|
18
|
+
defaultDatabaseFile: "./fdm-monster.sqlite",
|
|
17
19
|
pm2ServiceName: "FDM",
|
|
18
20
|
logAppName: "fdm-monster",
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
MEDIA_PATH: "MEDIA_PATH",
|
|
22
|
+
defaultBaseMediaPath: "./media",
|
|
23
|
+
defaultLogsFolder: "logs",
|
|
24
|
+
defaultLogZipsFolder: "log-zips",
|
|
25
|
+
defaultClientBundleStorage: "client-dist",
|
|
26
|
+
defaultClientBundleZipsStorage: "client-dist-zips",
|
|
27
|
+
defaultPrinterThumbnailsStorage: "printer-thumbnails",
|
|
28
|
+
defaultFileUploadsStorage: "file-uploads",
|
|
29
|
+
defaultPrintFilesStorage: "files",
|
|
27
30
|
defaultAcceptedGcodeExtensions: [
|
|
28
31
|
".gcode",
|
|
29
32
|
".bgcode"
|
|
@@ -70,9 +73,10 @@ const AppConstants = {
|
|
|
70
73
|
clientPackageName: "@fdm-monster/client-next",
|
|
71
74
|
clientRepoName: "fdm-monster-client-next",
|
|
72
75
|
githubUrl: "https://github.com/fdm-monster/fdm-monster",
|
|
76
|
+
docsUrl: "https://docs.fdm-monster.net",
|
|
73
77
|
orgName: "fdm-monster",
|
|
74
78
|
currentWizardVersion: 1,
|
|
75
|
-
defaultClientMinimum: "2.
|
|
79
|
+
defaultClientMinimum: "2.2.3",
|
|
76
80
|
defaultWebsocketHandshakeTimeout: 3000,
|
|
77
81
|
defaultSocketThrottleRate: 1,
|
|
78
82
|
debugSocketStatesKey: "DEBUG_SOCKET_STATES",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server.constants.ts"],"names":["AppConstants","NODE_ENV_KEY","VERSION_KEY","SERVER_PORT_KEY","DATABASE_PATH","DATABASE_FILE","pm2ServiceName","logAppName","
|
|
1
|
+
{"version":3,"sources":["../src/server.constants.ts"],"names":["AppConstants","NODE_ENV_KEY","VERSION_KEY","SERVER_PORT_KEY","DATABASE_PATH","defaultDatabasePath","DATABASE_FILE","defaultDatabaseFile","pm2ServiceName","logAppName","MEDIA_PATH","defaultBaseMediaPath","defaultLogsFolder","defaultLogZipsFolder","defaultClientBundleStorage","defaultClientBundleZipsStorage","defaultPrinterThumbnailsStorage","defaultFileUploadsStorage","defaultPrintFilesStorage","defaultAcceptedGcodeExtensions","defaultAcceptedBambuExtensions","defaultServerPort","apiRoute","enableClientDistAutoUpdateKey","OVERRIDE_LOGIN_REQUIRED","OVERRIDE_REGISTRATION_ENABLED","DEFAULT_USERNAME_MINLEN","DEFAULT_PASSWORD_MINLEN","OVERRIDE_JWT_SECRET","OVERRIDE_JWT_EXPIRES_IN","DEFAULT_JWT_EXPIRES_IN","DEFAULT_REFRESH_TOKEN_ATTEMPTS","DEFAULT_REFRESH_TOKEN_EXPIRY","OVERRIDE_JWT_ISSUER","DEFAULT_JWT_ISSUER","OVERRIDE_JWT_AUDIENCE","DEFAULT_JWT_AUDIENCE","OVERRIDE_IS_DEMO_MODE","OVERRIDE_DEMO_USERNAME","DEFAULT_DEMO_USERNAME","OVERRIDE_DEMO_PASSWORD","DEFAULT_DEMO_PASSWORD","OVERRIDE_DEMO_ROLE","DEFAULT_DEMO_ROLE","defaultDevelopmentEnv","ENABLE_COLORED_LOGS_KEY","defaultTestEnv","defaultProductionEnv","knownEnvNames","GITHUB_PAT","serverPackageName","serverRepoName","clientPackageName","clientRepoName","githubUrl","docsUrl","orgName","currentWizardVersion","defaultClientMinimum","defaultWebsocketHandshakeTimeout","defaultSocketThrottleRate","debugSocketStatesKey","defaultDebugSocketStates","monsterPiFilePath","sentryCustomDsnToken","sentryCustomDsnDefault","ENABLE_PROMETHEUS_METRICS","ENABLE_LOKI_LOGGING","LOKI_ADDRESS","LOKI_TIMEOUT_SECONDS","LOKI_INTERVAL","DISABLE_SWAGGER_OPENAPI","GENERATE_SWAGGER_JSON"],"mappings":";;;;+BAAaA;;;eAAAA;;;AAAN,MAAMA,eAAe;IAC1BC,cAAc;IACdC,aAAa;IACbC,iBAAiB;IACjBC,eAAe;IACfC,qBAAqB;IACrBC,eAAe;IACfC,qBAAqB;IAErBC,gBAAgB;IAChBC,YAAY;IAEZC,YAAY;IACZC,sBAAsB;IACtBC,mBAAmB;IACnBC,sBAAsB;IAEtBC,4BAA4B;IAC5BC,gCAAgC;IAChCC,iCAAiC;IACjCC,2BAA2B;IAC3BC,0BAA0B;IAC1BC,gCAAgC;QAAC;QAAU;KAAU;IACrDC,gCAAgC;QAAC;QAAU;KAAO;IAClDC,mBAAmB;IACnBC,UAAU;IACVC,+BAA+B;IAG/BC,yBAAyB;IAEzBC,+BAA+B;IAE/BC,yBAAyB;IAEzBC,yBAAyB;IAEzBC,qBAAqB;IAErBC,yBAAyB;IACzBC,wBAAwB,KAAK;IAE7BC,gCAAgC,CAAC;IAEjCC,8BAA8B,KAAK,KAAK,KAAK;IAE7CC,qBAAqB;IACrBC,oBAAoB;IAEpBC,uBAAuB;IACvBC,sBAAsB;IAEtBC,uBAAuB;IACvBC,wBAAwB;IACxBC,uBAAuB;IACvBC,wBAAwB;IACxBC,uBAAuB;IACvBC,oBAAoB;IACpBC,mBAAmB;IAEnBC,uBAAuB;IACvBC,yBAAyB;IACzBC,gBAAgB;IAChBC,sBAAsB;IACtBC,eAAe;QAAC;QAAe;QAAc;KAAO;IACpDC,YAAY;IACZC,mBAAmB;IACnBC,gBAAgB;IAChBC,mBAAmB;IACnBC,gBAAgB;IAChBC,WAAW;IACXC,SAAS;IACTC,SAAS;IAETC,sBAAsB;IACtBC,sBAAsB;IAGtBC,kCAAkC;IAClCC,2BAA2B;IAC3BC,sBAAsB;IACtBC,0BAA0B;IAG1BC,mBAAmB;IAGnBC,sBAAsB;IACtBC,wBACE;IAEFC,2BAA2B;IAC3BC,qBAAqB;IACrBC,cAAc;IACdC,sBAAsB;IACtBC,eAAe;IAGfC,yBAAyB;IACzBC,uBAAuB;AACzB"}
|
package/dist/server.core.js
CHANGED
|
@@ -18,8 +18,6 @@ const _container = require("./container");
|
|
|
18
18
|
const _database = require("./middleware/database");
|
|
19
19
|
const _globalmiddleware = require("./middleware/global.middleware");
|
|
20
20
|
const _passport1 = require("./middleware/passport");
|
|
21
|
-
const _serverconstants = require("./server.constants");
|
|
22
|
-
const _path = require("path");
|
|
23
21
|
const _fsutils = require("./utils/fs.utils");
|
|
24
22
|
const _promclient = require("prom-client");
|
|
25
23
|
const _logger = require("./handlers/logger");
|
|
@@ -74,9 +72,14 @@ const httpRequestsTotal = new _promclient.Counter({
|
|
|
74
72
|
help: "HTTP requests executed"
|
|
75
73
|
});
|
|
76
74
|
async function setupServer() {
|
|
75
|
+
const logger = new _logger.LoggerService("FDM-ServerCore");
|
|
77
76
|
const httpServer = (0, _express.default)();
|
|
78
|
-
const
|
|
79
|
-
(0, _fsutils.ensureDirExists)(
|
|
77
|
+
const databasePath = (0, _fsutils.getDatabaseFolder)();
|
|
78
|
+
(0, _fsutils.ensureDirExists)(databasePath);
|
|
79
|
+
logger.log(`Expecting database at path ${databasePath}`);
|
|
80
|
+
const mediaPath = (0, _fsutils.getMediaPath)();
|
|
81
|
+
(0, _fsutils.ensureDirExists)(mediaPath);
|
|
82
|
+
logger.log(`Expecting media at path ${mediaPath}`);
|
|
80
83
|
const container = (0, _container.configureContainer)();
|
|
81
84
|
(0, _passport1.initializePassportStrategies)(_passport.default, container);
|
|
82
85
|
httpServer.use((req, res, next)=>{
|
package/dist/server.core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server.core.ts"],"names":["setupServer","httpRequestsTotal","Counter","name","help","
|
|
1
|
+
{"version":3,"sources":["../src/server.core.ts"],"names":["setupServer","httpRequestsTotal","Counter","name","help","logger","LoggerService","httpServer","express","databasePath","getDatabaseFolder","ensureDirExists","log","mediaPath","getMediaPath","container","configureContainer","initializePassportStrategies","passport","use","req","res","next","route","path","includes","start","process","hrtime","on","inc","delta","duration","newDebug","message","method","originalUrl","statusCode","responseTimeMs","toFixed","clientIp","ip","userAgent","get","cors","origin","methods","helmet","contentSecurityPolicy","json","limit","cookieParser","urlencoded","extended","initialize","authenticate","session","scopePerRequest","interceptDatabaseError","validateWizardCompleted","interceptRoles"],"mappings":";;;;+BAmBsBA;;;eAAAA;;;iEAnBoB;qEACjB;iEACJ;6DACJ;+DACE;+BACa;2BACG;0BACI;kCACiB;2BACX;yBACoB;4BACzC;wBACM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE9B,MAAMC,oBAAoB,IAAIC,mBAAO,CAAC;IACpCC,MAAM;IACNC,MAAM;AACR;AAEO,eAAeJ;IACpB,MAAMK,SAAS,IAAIC,qBAAa,CAAC;IACjC,MAAMC,aAAaC,IAAAA,gBAAO;IAE1B,MAAMC,eAAeC,IAAAA,0BAAiB;IACtCC,IAAAA,wBAAe,EAACF;IAChBJ,OAAOO,GAAG,CAAC,CAAC,2BAA2B,EAAEH,cAAc;IAEvD,MAAMI,YAAYC,IAAAA,qBAAY;IAC9BH,IAAAA,wBAAe,EAACE;IAChBR,OAAOO,GAAG,CAAC,CAAC,wBAAwB,EAAEC,WAAW;IAEjD,MAAME,YAAYC,IAAAA,6BAAkB;IACpCC,IAAAA,uCAA4B,EAACC,iBAAQ,EAAEH;IAEvCR,WACGY,GAAG,CAAC,CAACC,KAAKC,KAAKC;QACd,MAAMC,QAAQH,IAAIG,KAAK,EAAEC,QAAQJ,IAAII,IAAI,IAAI;QAE7C,IAAID,MAAME,QAAQ,CAAC,SAAS;YAC1B,MAAMC,QAAQC,QAAQC,MAAM;YAE5BP,IAAIQ,EAAE,CAAC,UAAU;gBACf5B,kBAAkB6B,GAAG;gBAErB,MAAMC,QAAQJ,QAAQC,MAAM,CAACF;gBAC7B,MAAMM,WAAWD,KAAK,CAAC,EAAE,GAAGA,KAAK,CAAC,EAAE,GAAG;gBACvC,MAAM1B,SAAS,IAAIC,qBAAa,CAAC;gBACjCD,OAAO4B,QAAQ,CAAC;oBACdC,SAAS,CAAC,aAAa,EAAEd,IAAIe,MAAM,CAAC,CAAC,EAAEf,IAAIgB,WAAW,CAAC,CAAC,EAAEf,IAAIgB,UAAU,EAAE;oBAC1EF,QAAQf,IAAIe,MAAM;oBAClBX,MAAMJ,IAAIgB,WAAW;oBACrBC,YAAYhB,IAAIgB,UAAU;oBAC1BC,gBAAgBN,SAASO,OAAO,CAAC;oBACjCC,UAAUpB,IAAIqB,EAAE;oBAChBC,WAAWtB,IAAIuB,GAAG,CAAC;gBACrB;YACF;QACF;QAEArB;IACF,GACCH,GAAG,CACFyB,IAAAA,aAAI,EAAC;QACHC,QAAQ;QACRC,SAAS;IACX,IAED3B,GAAG,CACF4B,IAAAA,eAAM,EAAC;QACLC,uBAAuB;IACzB,IAED7B,GAAG,CAAC8B,IAAAA,aAAI,EAAC;QAAEC,OAAO;IAAO,IACzB/B,GAAG,CAACgC,IAAAA,qBAAY,KAChBhC,GAAG,CAACiC,IAAAA,mBAAU,EAAC;QAAEC,UAAU;IAAM,IACjClC,GAAG,CAACD,iBAAQ,CAACoC,UAAU,IACvBnC,GAAG,CAACD,iBAAQ,CAACqC,YAAY,CAAC;QAAC;QAAO;KAAY,EAAE;QAAEC,SAAS;IAAM,IACjErC,GAAG,CAACsC,IAAAA,8BAAe,EAAC1C,YACpBI,GAAG,CAACuC,gCAAsB,EAE1BvC,GAAG,CAACwC,yCAAuB,EAC3BxC,GAAG,CAACyC,gCAAc;IAErB,OAAO;QACLrD;QACAQ;IACF;AACF"}
|
package/dist/server.env.js
CHANGED
|
@@ -15,9 +15,6 @@ _export(exports, {
|
|
|
15
15
|
get fetchServerPort () {
|
|
16
16
|
return fetchServerPort;
|
|
17
17
|
},
|
|
18
|
-
get isEnvProd () {
|
|
19
|
-
return isEnvProd;
|
|
20
|
-
},
|
|
21
18
|
get setupEnvConfig () {
|
|
22
19
|
return setupEnvConfig;
|
|
23
20
|
},
|
|
@@ -25,7 +22,6 @@ _export(exports, {
|
|
|
25
22
|
return setupSentry;
|
|
26
23
|
}
|
|
27
24
|
});
|
|
28
|
-
const _nodepath = require("node:path");
|
|
29
25
|
const _node = /*#__PURE__*/ _interop_require_wildcard(require("@sentry/node"));
|
|
30
26
|
const _serverconstants = require("./server.constants");
|
|
31
27
|
const _logger = require("./handlers/logger");
|
|
@@ -74,15 +70,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
74
70
|
}
|
|
75
71
|
return newObj;
|
|
76
72
|
}
|
|
77
|
-
|
|
78
|
-
const packageJsonPath = (0, _nodepath.join)((0, _fsutils.superRootPath)(), "./package.json");
|
|
79
|
-
function isEnvTest() {
|
|
80
|
-
return process.env[_serverconstants.AppConstants.NODE_ENV_KEY] === _serverconstants.AppConstants.defaultTestEnv;
|
|
81
|
-
}
|
|
82
|
-
function isEnvProd() {
|
|
83
|
-
return process.env[_serverconstants.AppConstants.NODE_ENV_KEY] === _serverconstants.AppConstants.defaultProductionEnv;
|
|
84
|
-
}
|
|
85
|
-
function ensureNodeEnvSet() {
|
|
73
|
+
function setupEnvConfig() {
|
|
86
74
|
const logger = new _logger.LoggerService("FDM-Environment");
|
|
87
75
|
const environment = process.env[_serverconstants.AppConstants.NODE_ENV_KEY];
|
|
88
76
|
if (!environment || !_serverconstants.AppConstants.knownEnvNames.includes(environment)) {
|
|
@@ -92,17 +80,22 @@ function ensureNodeEnvSet() {
|
|
|
92
80
|
} else {
|
|
93
81
|
logger.log(`✓ NODE_ENV variable correctly set (${environment})!`);
|
|
94
82
|
}
|
|
83
|
+
ensurePackageVersionSet();
|
|
84
|
+
setupSentry();
|
|
85
|
+
ensurePortSet();
|
|
86
|
+
if (process.env[_serverconstants.AppConstants.ENABLE_PROMETHEUS_METRICS] === "true") {
|
|
87
|
+
(0, _promclient.collectDefaultMetrics)({
|
|
88
|
+
register: _promclient.register
|
|
89
|
+
});
|
|
90
|
+
_promclient.register.removeSingleMetric("nodejs_version_info");
|
|
91
|
+
}
|
|
95
92
|
}
|
|
96
93
|
function ensurePackageVersionSet() {
|
|
97
94
|
const logger = new _logger.LoggerService("FDM-Environment");
|
|
98
|
-
const packageJsonVersion = require(packageJsonPath).version;
|
|
95
|
+
const packageJsonVersion = require((0, _fsutils.packageJsonPath)()).version;
|
|
99
96
|
process.env[_serverconstants.AppConstants.VERSION_KEY] ??= packageJsonVersion;
|
|
100
97
|
logger.log(`✓ Running server version ${process.env[_serverconstants.AppConstants.VERSION_KEY]}`);
|
|
101
98
|
}
|
|
102
|
-
function printInstructionsURL() {
|
|
103
|
-
const logger = new _logger.LoggerService("FDM-Environment");
|
|
104
|
-
logger.log(`Please make sure to read ${instructionsReferralURL} for more information.`);
|
|
105
|
-
}
|
|
106
99
|
function fetchServerPort() {
|
|
107
100
|
let port = process.env[_serverconstants.AppConstants.SERVER_PORT_KEY];
|
|
108
101
|
if (Number.isNaN(Number.parseInt(port))) {
|
|
@@ -118,7 +111,7 @@ function setupSentry() {
|
|
|
118
111
|
dsn: sentryDsnToken,
|
|
119
112
|
environment: process.env.NODE_ENV,
|
|
120
113
|
release: process.env.npm_package_version,
|
|
121
|
-
enabled: !
|
|
114
|
+
enabled: !(0, _envutils.isTestEnvironment)(),
|
|
122
115
|
tracesSampleRate: (0, _envutils.isProductionEnvironment)() ? 0.25 : 1
|
|
123
116
|
});
|
|
124
117
|
process.on("unhandledRejection", (e)=>{
|
|
@@ -132,21 +125,9 @@ function ensurePortSet() {
|
|
|
132
125
|
fetchServerPort();
|
|
133
126
|
if (!process.env[_serverconstants.AppConstants.SERVER_PORT_KEY]) {
|
|
134
127
|
logger.log(`~ ${_serverconstants.AppConstants.SERVER_PORT_KEY} environment variable is not set`);
|
|
135
|
-
|
|
128
|
+
logger.log(`Please make sure to read ${_serverconstants.AppConstants.docsUrl} for more information.`);
|
|
136
129
|
process.env[_serverconstants.AppConstants.SERVER_PORT_KEY] = _serverconstants.AppConstants.defaultServerPort.toString();
|
|
137
130
|
}
|
|
138
131
|
}
|
|
139
|
-
function setupEnvConfig() {
|
|
140
|
-
ensureNodeEnvSet();
|
|
141
|
-
ensurePackageVersionSet();
|
|
142
|
-
setupSentry();
|
|
143
|
-
ensurePortSet();
|
|
144
|
-
if (process.env[_serverconstants.AppConstants.ENABLE_PROMETHEUS_METRICS] === "true") {
|
|
145
|
-
(0, _promclient.collectDefaultMetrics)({
|
|
146
|
-
register: _promclient.register
|
|
147
|
-
});
|
|
148
|
-
_promclient.register.removeSingleMetric("nodejs_version_info");
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
132
|
|
|
152
133
|
//# sourceMappingURL=server.env.js.map
|
package/dist/server.env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server.env.ts"],"names":["ensurePortSet","fetchServerPort","
|
|
1
|
+
{"version":3,"sources":["../src/server.env.ts"],"names":["ensurePortSet","fetchServerPort","setupEnvConfig","setupSentry","logger","Logger","environment","process","env","AppConstants","NODE_ENV_KEY","knownEnvNames","includes","newEnvName","defaultProductionEnv","warn","log","ensurePackageVersionSet","ENABLE_PROMETHEUS_METRICS","collectDefaultMetrics","register","removeSingleMetric","packageJsonVersion","require","packageJsonPath","version","VERSION_KEY","port","SERVER_PORT_KEY","Number","isNaN","parseInt","defaultServerPort","toString","sentryDsnToken","getEnvOrDefault","sentryCustomDsnToken","sentryCustomDsnDefault","Sentry","init","dsn","NODE_ENV","release","npm_package_version","enabled","isTestEnvironment","tracesSampleRate","isProductionEnvironment","on","e","message","errorSummary","error","captureException","docsUrl"],"mappings":"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"}
|
package/dist/server.host.js
CHANGED
|
@@ -62,7 +62,7 @@ class ServerHost {
|
|
|
62
62
|
await (0, _swagger.setupSwagger)(app, this.logger);
|
|
63
63
|
this.logger.log("Swagger/OpenAPI documentation enabled");
|
|
64
64
|
}
|
|
65
|
-
const bundleDistPath = (0, _nodepath.join)((0, _fsutils.
|
|
65
|
+
const bundleDistPath = (0, _nodepath.join)((0, _fsutils.getMediaPath)(), _serverconstants.AppConstants.defaultClientBundleStorage, "dist");
|
|
66
66
|
const backupClientPath = (0, _nodepath.join)((0, _fsutils.superRootPath)(), "node_modules", _serverconstants.AppConstants.clientPackageName, "dist");
|
|
67
67
|
app.use(_express.default.static(bundleDistPath));
|
|
68
68
|
app.use(_express.default.static(backupClientPath));
|
package/dist/server.host.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server.host.ts"],"names":["ServerHost","logger","loggerFactory","configService","bootTask","socketIoGateway","typeormService","exceptionFilter","name","boot","app","quick_boot","listenRequests","serveControllerRoutes","runOnce","httpListen","hasConnected","swaggerDisabled","process","env","AppConstants","DISABLE_SWAGGER_OPENAPI","use","req","res","next","originalUrl","startsWith","history","loadControllersFunc","log","setupSwagger","bundleDistPath","join","
|
|
1
|
+
{"version":3,"sources":["../src/server.host.ts"],"names":["ServerHost","logger","loggerFactory","configService","bootTask","socketIoGateway","typeormService","exceptionFilter","name","boot","app","quick_boot","listenRequests","serveControllerRoutes","runOnce","httpListen","hasConnected","swaggerDisabled","process","env","AppConstants","DISABLE_SWAGGER_OPENAPI","use","req","res","next","originalUrl","startsWith","history","loadControllersFunc","log","setupSwagger","bundleDistPath","join","getMediaPath","defaultClientBundleStorage","backupClientPath","superRootPath","clientPackageName","express","static","get","_","path","resource","endsWith","error","NotFoundException","handle","bind","port","fetchServerPort","Number","isNaN","parseInt","Error","hostOrFqdn","server","listen","attachServer"],"mappings":"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"}
|