@fdm-monster/server 1.9.0-rc1 → 1.9.0

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.
Files changed (57) hide show
  1. package/.env.template +1 -1
  2. package/.yarn/install-state.gz +0 -0
  3. package/README.md +2 -2
  4. package/RELEASE_NOTES.MD +19 -0
  5. package/dist/constants/server-settings.constants.js +2 -1
  6. package/dist/constants/server-settings.constants.js.map +1 -1
  7. package/dist/controllers/printer-files.controller.js +3 -1
  8. package/dist/controllers/printer-files.controller.js.map +1 -1
  9. package/dist/controllers/server-public.controller.js +8 -4
  10. package/dist/controllers/server-public.controller.js.map +1 -1
  11. package/dist/controllers/validation/printer-files-controller.validation.js +9 -0
  12. package/dist/controllers/validation/printer-files-controller.validation.js.map +1 -1
  13. package/dist/entities/settings.entity.js.map +1 -1
  14. package/dist/handlers/logger-factory.js +2 -2
  15. package/dist/handlers/logger-factory.js.map +1 -1
  16. package/dist/handlers/logger.js +9 -151
  17. package/dist/handlers/logger.js.map +1 -1
  18. package/dist/handlers/logging/file-logging.transport.js +35 -0
  19. package/dist/handlers/logging/file-logging.transport.js.map +1 -0
  20. package/dist/handlers/logging/loki-logging.transport.js +55 -0
  21. package/dist/handlers/logging/loki-logging.transport.js.map +1 -0
  22. package/dist/handlers/logging/static.logger.js +134 -0
  23. package/dist/handlers/logging/static.logger.js.map +1 -0
  24. package/dist/index.js +13 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/middleware/socketio.middleware.js +11 -3
  27. package/dist/middleware/socketio.middleware.js.map +1 -1
  28. package/dist/models/Settings.js +6 -1
  29. package/dist/models/Settings.js.map +1 -1
  30. package/dist/server.constants.js +2 -1
  31. package/dist/server.constants.js.map +1 -1
  32. package/dist/server.env.js +9 -10
  33. package/dist/server.env.js.map +1 -1
  34. package/dist/services/core/github.service.js +1 -1
  35. package/dist/services/core/github.service.js.map +1 -1
  36. package/dist/services/moonraker/moonraker-websocket.adapter.js +11 -6
  37. package/dist/services/moonraker/moonraker-websocket.adapter.js.map +1 -1
  38. package/dist/services/moonraker/moonraker.client.js +8 -4
  39. package/dist/services/moonraker/moonraker.client.js.map +1 -1
  40. package/dist/services/moonraker.api.js +2 -2
  41. package/dist/services/moonraker.api.js.map +1 -1
  42. package/dist/services/octoprint/octoprint-api.routes.js +1 -1
  43. package/dist/services/octoprint/octoprint-api.routes.js.map +1 -1
  44. package/dist/services/octoprint/octoprint.client.js +9 -9
  45. package/dist/services/octoprint/octoprint.client.js.map +1 -1
  46. package/dist/services/octoprint/utils/octoprint-http-client.builder.js.map +1 -1
  47. package/dist/services/octoprint.api.js +2 -5
  48. package/dist/services/octoprint.api.js.map +1 -1
  49. package/dist/services/prusa-link/prusa-link.api.js +6 -4
  50. package/dist/services/prusa-link/prusa-link.api.js.map +1 -1
  51. package/dist/services/validators/settings-service.validation.js +2 -1
  52. package/dist/services/validators/settings-service.validation.js.map +1 -1
  53. package/dist/shared/runtime-settings.migration.js +7 -0
  54. package/dist/shared/runtime-settings.migration.js.map +1 -1
  55. package/dist/state/socket-io.gateway.js +1 -1
  56. package/dist/state/socket-io.gateway.js.map +1 -1
  57. package/package.json +11 -10
package/.env.template CHANGED
@@ -4,6 +4,7 @@ SERVER_PORT=4000
4
4
  NODE_ENV=development
5
5
  # Optional, default: mongodb://127.0.0.1:27017/fdm-monster
6
6
  MONGO=mongodb://127.0.0.1:27017/fdm-monster
7
+ ENABLE_COLORED_LOGS=false
7
8
 
8
9
  # Github Personal Access Token, allows downloading the Client bundle without hitting a Github API rate limit
9
10
  GITHUB_PAT=1234567890abcdef1234567890abcdef12345678
@@ -39,7 +40,6 @@ OVERRIDE_DEMO_ROLE=ADMIN
39
40
  # Debug express routes
40
41
  DEBUG_ROUTES=false
41
42
  DEBUG_SOCKET_STATES=false
42
- DEBUG_FILE_WRITE_PRINTER_STATES=false
43
43
 
44
44
  # Enables TypeORM
45
45
  ENABLE_EXPERIMENTAL_TYPEORM=false
Binary file
package/README.md CHANGED
@@ -20,7 +20,7 @@
20
20
  </a>
21
21
  </p>
22
22
 
23
- FDM Monster is a server for managing your 3D printer farm through [OctoPrint](https://octoprint.org/) as well as [Klipper](https://www.klipper3d.org/) using [Moonraker](https://github.com/Arksine/moonraker).
23
+ FDM Monster is a server for managing your 3D printer farm through [OctoPrint](https://octoprint.org/) as well as [Klipper](https://www.klipper3d.org/) using [Moonraker](https://github.com/Arksine/moonraker) and [Prusa-Link](https://github.com/prusa3d/Prusa-Link).
24
24
 
25
25
  ## Check out our [documentation](https://docs.fdm-monster.net)
26
26
 
@@ -29,7 +29,7 @@ FDM Monster is a server for managing your 3D printer farm through [OctoPrint](ht
29
29
  ## Features 🖨️
30
30
  Here is a list of features that make FDM Monster stand out:
31
31
 
32
- - Adding OctoPrint and Moonraker instances
32
+ - Adding OctoPrint, Moonraker and Prusa-Link instances
33
33
  - Dragging or creating new printers on a customizable grid
34
34
  - Drag n drop GCode to print
35
35
  - Select printers and print one GCode file in batch
package/RELEASE_NOTES.MD CHANGED
@@ -1,6 +1,25 @@
1
1
  # Develop
2
2
 
3
+ # FDM Monster 1.9.0
4
+
3
5
  ## Features
6
+
7
+ - Introduce separate upload timeout setting for better control and resilience
8
+ - Ability to add startPrint to specify print or not after upload
9
+
10
+ ## Fixes
11
+
12
+ - OctoPrint 1.8.7 needs explicit passive flag in body instead of header to login
13
+ - PrusaLink subfeature was not added to printer type feature (new client packaged)
14
+ - Improve Moonraker error logging
15
+ - Make colored logs opt-in with "ENABLE_COLORED_LOGS: true" env var
16
+ - SocketIO gateway logs errors more explicitly
17
+ - Logger is now static, reducing memory usage and test duration
18
+
19
+ # FDM Monster 1.9.0-rc1
20
+
21
+ ## Features
22
+
4
23
  - Introduce PrusaLink adapter for limited printer support for these printers: MK3S(+) (needs PrusaLink extension with Raspberry Pi), Mini(+), MK4(S), XL, Core One
5
24
  - Add opt-in Prometheus integration (still experimental)
6
25
  - Add opt-in Loki integration (still experimental)
@@ -83,7 +83,8 @@ const getDefaultFrontendSettings = ()=>({
83
83
  });
84
84
  const timeoutSettingKey = "timeout";
85
85
  const getDefaultTimeout = ()=>({
86
- apiTimeout: 10000
86
+ apiTimeout: 10000,
87
+ apiUploadTimeout: 30000
87
88
  });
88
89
  const printerFileCleanSettingKey = "printerFileClean";
89
90
  const getDefaultFileCleanSettings = ()=>({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/constants/server-settings.constants.ts"],"names":["credentialSettingsKey","frontendSettingKey","getDefaultCredentialSettings","getDefaultFileCleanSettings","getDefaultFrontendSettings","getDefaultServerSettings","getDefaultSettings","getDefaultTimeout","getDefaultWizardSettings","printerFileCleanSettingKey","serverSettingsKey","timeoutSettingKey","wizardSettingKey","wizardCompleted","wizardCompletedAt","wizardVersion","sentryDiagnosticsEnabled","loginRequired","registration","experimentalMoonrakerSupport","experimentalTypeormSupport","experimentalClientSupport","experimentalThumbnailSupport","experimentalPrusaLinkSupport","jwtExpiresIn","AppConstants","DEFAULT_JWT_EXPIRES_IN","refreshTokenAttempts","DEFAULT_REFRESH_TOKEN_ATTEMPTS","refreshTokenExpiry","DEFAULT_REFRESH_TOKEN_EXPIRY","gridCols","gridRows","largeTiles","tilePreferCancelOverQuickStop","apiTimeout","autoRemoveOldFilesBeforeUpload","autoRemoveOldFilesAtBoot","autoRemoveOldFilesCriteriumDays","jwtSecret","uuidv4"],"mappings":";;;;;;;;;;;IA+BaA,qBAAqB;eAArBA;;IAUAC,kBAAkB;eAAlBA;;IATAC,4BAA4B;eAA5BA;;IAuBAC,2BAA2B;eAA3BA;;IAbAC,0BAA0B;eAA1BA;;IAtBAC,wBAAwB;eAAxBA;;IAyCAC,kBAAkB;eAAlBA;;IAXAC,iBAAiB;eAAjBA;;IArCAC,wBAAwB;eAAxBA;;IAyCAC,0BAA0B;eAA1BA;;IAnCAC,iBAAiB;eAAjBA;;IA8BAC,iBAAiB;eAAjBA;;IArCAC,gBAAgB;eAAhBA;;;iCAZgB;sBASA;AAGtB,MAAMA,mBAAmB;AACzB,MAAMJ,2BAA2B,IAA0B,CAAA;QAChEK,iBAAiB;QACjBC,mBAAmB;QACnBC,eAAe;IACjB,CAAA;AAEO,MAAML,oBAAoB;AAC1B,MAAML,2BAA2B,IAA0B,CAAA;QAChEW,0BAA0B;QAC1BC,eAAe;QACfC,cAAc;QACdC,8BAA8B;QAC9BC,4BAA4B;QAC5BC,2BAA2B;QAC3BC,8BAA8B;QAC9BC,8BAA8B;IAChC,CAAA;AAEO,MAAMvB,wBAAwB;AAC9B,MAAME,+BAA+B,IAA8B,CAAA;QAExEsB,cAAcC,6BAAY,CAACC,sBAAsB;QAEjDC,sBAAsBF,6BAAY,CAACG,8BAA8B;QAEjEC,oBAAoBJ,6BAAY,CAACK,4BAA4B;IAC/D,CAAA;AAEO,MAAM7B,qBAAqB;AAC3B,MAAMG,6BAA6B,IAA4B,CAAA;QACpE2B,UAAU;QACVC,UAAU;QACVC,YAAY;QACZC,+BAA+B;IACjC,CAAA;AAEO,MAAMvB,oBAAoB;AAC1B,MAAMJ,oBAAoB,IAA2B,CAAA;QAC1D4B,YAAY;IACd,CAAA;AAEO,MAAM1B,6BAA6B;AACnC,MAAMN,8BAA8B,IAA6B,CAAA;QACtEiC,gCAAgC;QAChCC,0BAA0B;QAC1BC,iCAAiC;IACnC,CAAA;AAEO,MAAMhC,qBAAqB,IAAO,CAAA;QACvC,CAACI,kBAAkB,EAAEL;QACrB,CAACO,iBAAiB,EAAEJ;QACpB,CAACR,sBAAsB,EAAE;YACvB,GAAGE,8BAA8B;YACjCqC,WAAWC,IAAAA,QAAM;QACnB;QACA,CAAC/B,2BAA2B,EAAEN;QAC9B,CAACF,mBAAmB,EAAEG;QACtB,CAACO,kBAAkB,EAAEJ;IACvB,CAAA"}
1
+ {"version":3,"sources":["../../src/constants/server-settings.constants.ts"],"names":["credentialSettingsKey","frontendSettingKey","getDefaultCredentialSettings","getDefaultFileCleanSettings","getDefaultFrontendSettings","getDefaultServerSettings","getDefaultSettings","getDefaultTimeout","getDefaultWizardSettings","printerFileCleanSettingKey","serverSettingsKey","timeoutSettingKey","wizardSettingKey","wizardCompleted","wizardCompletedAt","wizardVersion","sentryDiagnosticsEnabled","loginRequired","registration","experimentalMoonrakerSupport","experimentalTypeormSupport","experimentalClientSupport","experimentalThumbnailSupport","experimentalPrusaLinkSupport","jwtExpiresIn","AppConstants","DEFAULT_JWT_EXPIRES_IN","refreshTokenAttempts","DEFAULT_REFRESH_TOKEN_ATTEMPTS","refreshTokenExpiry","DEFAULT_REFRESH_TOKEN_EXPIRY","gridCols","gridRows","largeTiles","tilePreferCancelOverQuickStop","apiTimeout","apiUploadTimeout","autoRemoveOldFilesBeforeUpload","autoRemoveOldFilesAtBoot","autoRemoveOldFilesCriteriumDays","jwtSecret","uuidv4"],"mappings":";;;;;;;;;;;IA+BaA,qBAAqB;eAArBA;;IAUAC,kBAAkB;eAAlBA;;IATAC,4BAA4B;eAA5BA;;IAwBAC,2BAA2B;eAA3BA;;IAdAC,0BAA0B;eAA1BA;;IAtBAC,wBAAwB;eAAxBA;;IA0CAC,kBAAkB;eAAlBA;;IAZAC,iBAAiB;eAAjBA;;IArCAC,wBAAwB;eAAxBA;;IA0CAC,0BAA0B;eAA1BA;;IApCAC,iBAAiB;eAAjBA;;IA8BAC,iBAAiB;eAAjBA;;IArCAC,gBAAgB;eAAhBA;;;iCAZgB;sBASA;AAGtB,MAAMA,mBAAmB;AACzB,MAAMJ,2BAA2B,IAA0B,CAAA;QAChEK,iBAAiB;QACjBC,mBAAmB;QACnBC,eAAe;IACjB,CAAA;AAEO,MAAML,oBAAoB;AAC1B,MAAML,2BAA2B,IAA0B,CAAA;QAChEW,0BAA0B;QAC1BC,eAAe;QACfC,cAAc;QACdC,8BAA8B;QAC9BC,4BAA4B;QAC5BC,2BAA2B;QAC3BC,8BAA8B;QAC9BC,8BAA8B;IAChC,CAAA;AAEO,MAAMvB,wBAAwB;AAC9B,MAAME,+BAA+B,IAA8B,CAAA;QAExEsB,cAAcC,6BAAY,CAACC,sBAAsB;QAEjDC,sBAAsBF,6BAAY,CAACG,8BAA8B;QAEjEC,oBAAoBJ,6BAAY,CAACK,4BAA4B;IAC/D,CAAA;AAEO,MAAM7B,qBAAqB;AAC3B,MAAMG,6BAA6B,IAA4B,CAAA;QACpE2B,UAAU;QACVC,UAAU;QACVC,YAAY;QACZC,+BAA+B;IACjC,CAAA;AAEO,MAAMvB,oBAAoB;AAC1B,MAAMJ,oBAAoB,IAA2B,CAAA;QAC1D4B,YAAY;QACZC,kBAAkB;IACpB,CAAA;AAEO,MAAM3B,6BAA6B;AACnC,MAAMN,8BAA8B,IAA6B,CAAA;QACtEkC,gCAAgC;QAChCC,0BAA0B;QAC1BC,iCAAiC;IACnC,CAAA;AAEO,MAAMjC,qBAAqB,IAAO,CAAA;QACvC,CAACI,kBAAkB,EAAEL;QACrB,CAACO,iBAAiB,EAAEJ;QACpB,CAACR,sBAAsB,EAAE;YACvB,GAAGE,8BAA8B;YACjCsC,WAAWC,IAAAA,QAAM;QACnB;QACA,CAAChC,2BAA2B,EAAEN;QAC9B,CAACF,mBAAmB,EAAEG;QACtB,CAACO,kBAAkB,EAAEJ;IACvB,CAAA"}
@@ -149,6 +149,8 @@ class PrinterFilesController {
149
149
  async uploadPrinterFile(req, res) {
150
150
  const { currentPrinterId } = (0, _printerresolver.getScopedPrinter)(req);
151
151
  const files = await this.multerService.multerLoadFileAsync(req, res, _serverconstants.AppConstants.defaultAcceptedGcodeExtensions, true);
152
+ const { startPrint: startPrintString } = await (0, _validators.validateInput)(req.body, _printerfilescontrollervalidation.uploadFileSchema);
153
+ const startPrint = startPrintString === "true";
152
154
  if (!files?.length) {
153
155
  throw new _runtimeexceptions.ValidationException({
154
156
  error: `No file was available for upload. Did you upload files with one of these extensions: ${_serverconstants.AppConstants.defaultAcceptedGcodeExtensions.join(", ")}?`
@@ -165,7 +167,7 @@ class PrinterFilesController {
165
167
  }
166
168
  const uploadedFile = files[0];
167
169
  const token = this.multerService.startTrackingSession(uploadedFile, currentPrinterId);
168
- await this.printerApi.uploadFile(uploadedFile, token).catch((e)=>{
170
+ await this.printerApi.uploadFile(uploadedFile, startPrint, token).catch((e)=>{
169
171
  try {
170
172
  this.multerService.clearUploadedFile(uploadedFile);
171
173
  } catch (e) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/controllers/printer-files.controller.ts"],"names":["PrinterFilesController","logger","constructor","loggerFactory","printerApi","printerLogin","printerFilesStore","printerFileCleanTask","settingsStore","multerService","printerThumbnailCache","name","purgeIndexedFiles","req","res","purgeFiles","send","getThumbnails","thumbnails","getAllValues","getFiles","currentPrinterId","getScopedPrinter","log","files","loadFiles","reloadThumbnail","filePath","validateInput","body","startPrintFileSchema","isThumbnailSupportEnabled","loadPrinterThumbnailRemote","params","id","e","error","errorSummary","captureException","startPrintFile","encodedFilePath","encodeURIComponent","startPrint","getFilesCache","currentPrinter","downloadFile","path","downloadFileSchema","response","setHeader","headers","length","data","pipe","deleteFileOrFolder","query","getFileSchema","result","deleteFile","clearPrinterFiles","failedFiles","succeededFiles","nonRecursiveFiles","file","push","purgePrinterFiles","getPrinterThumbnail","printerThumbnail","getValue","toString","uploadPrinterFile","multerLoadFileAsync","AppConstants","defaultAcceptedGcodeExtensions","ValidationException","join","fileCleanEnabled","isPreUploadFileCleanEnabled","cleanPrinterFiles","uploadedFile","token","startTrackingSession","uploadFile","catch","clearUploadedFile","loadPrinterThumbnailLocal","PrinterFiles","Clear","Get","Actions","Delete","Upload","apiRoute","authenticate","authorizeRoles","ROLES","ADMIN","OPERATOR","printerResolveMiddleware"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/controllers/printer-files.controller.ts"],"names":["PrinterFilesController","logger","constructor","loggerFactory","printerApi","printerLogin","printerFilesStore","printerFileCleanTask","settingsStore","multerService","printerThumbnailCache","name","purgeIndexedFiles","req","res","purgeFiles","send","getThumbnails","thumbnails","getAllValues","getFiles","currentPrinterId","getScopedPrinter","log","files","loadFiles","reloadThumbnail","filePath","validateInput","body","startPrintFileSchema","isThumbnailSupportEnabled","loadPrinterThumbnailRemote","params","id","e","error","errorSummary","captureException","startPrintFile","encodedFilePath","encodeURIComponent","startPrint","getFilesCache","currentPrinter","downloadFile","path","downloadFileSchema","response","setHeader","headers","length","data","pipe","deleteFileOrFolder","query","getFileSchema","result","deleteFile","clearPrinterFiles","failedFiles","succeededFiles","nonRecursiveFiles","file","push","purgePrinterFiles","getPrinterThumbnail","printerThumbnail","getValue","toString","uploadPrinterFile","multerLoadFileAsync","AppConstants","defaultAcceptedGcodeExtensions","startPrintString","uploadFileSchema","ValidationException","join","fileCleanEnabled","isPreUploadFileCleanEnabled","cleanPrinterFiles","uploadedFile","token","startTrackingSession","uploadFile","catch","clearUploadedFile","loadPrinterThumbnailLocal","PrinterFiles","Clear","Get","Actions","Delete","Upload","apiRoute","authenticate","authorizeRoles","ROLES","ADMIN","OPERATOR","printerResolveMiddleware"],"mappings":"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"}
@@ -53,6 +53,7 @@ class ServerPublicController {
53
53
  getFeatures(req, res) {
54
54
  const serverSettings = this.settingsStore.getServerSettings();
55
55
  const moonrakerEnabled = serverSettings.experimentalMoonrakerSupport;
56
+ const prusaLinkEnabled = serverSettings.experimentalPrusaLinkSupport;
56
57
  res.send({
57
58
  printerGroupsApi: {
58
59
  available: this.isTypeormMode,
@@ -63,11 +64,14 @@ class ServerPublicController {
63
64
  available: true,
64
65
  version: 1,
65
66
  subFeatures: {
66
- types: moonrakerEnabled ? [
67
+ types: [
67
68
  "octoprint",
68
- "klipper"
69
- ] : [
70
- "octoprint"
69
+ ...moonrakerEnabled ? [
70
+ "klipper"
71
+ ] : [],
72
+ ...prusaLinkEnabled ? [
73
+ "prusaLink"
74
+ ] : []
71
75
  ]
72
76
  }
73
77
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/controllers/server-public.controller.ts"],"names":["ServerPublicController","constructor","settingsStore","serverVersion","serverReleaseService","monsterPiService","isTypeormMode","welcome","req","res","getSettings","getLoginRequired","send","message","getFeatures","serverSettings","getServerSettings","moonrakerEnabled","experimentalMoonrakerSupport","printerGroupsApi","available","version","subFeatures","multiplePrinterServices","types","getVersion","updateState","getState","monsterPiVersion","getMonsterPiVersionSafe","json","isNode","os","process","env","OS","monsterPi","update","synced","updateAvailable","airGapped","test","authenticate","permission","PERMS","ServerInfo","Get","apiRoute"],"mappings":";;;;+BAWaA;;;eAAAA;;;+BAXsB;iCACN;0BACN;8BACkB;wCACnB;+BACQ;sCACO;kCACJ;yBACC;;;;;;;;;;AAG3B,MAAMA;;;;;;IACXC,YACE,AAAiBC,aAA4B,EAC7C,AAAiBC,aAAqB,EACtC,AAAiBC,oBAA0C,EAC3D,AAAiBC,gBAAkC,EACnD,AAAiBC,aAAsB,CACvC;aALiBJ,gBAAAA;aACAC,gBAAAA;aACAC,uBAAAA;aACAC,mBAAAA;aACAC,gBAAAA;IAChB;IAKHC,QAAQC,GAAY,EAAEC,GAAa,EAAE;QACnC,IAAI,CAACP,aAAa,CAACQ,WAAW;QAE9B,IAAI,CAAC,IAAI,CAACR,aAAa,CAACS,gBAAgB,IAAI;YAC1C,OAAOF,IAAIG,IAAI,CAAC;gBACdC,SAAS;YACX;QACF;QAEA,OAAOJ,IAAIG,IAAI,CAAC;YACdC,SAAS;QACX;IACF;IAKAC,YAAYN,GAAY,EAAEC,GAAa,EAAE;QACvC,MAAMM,iBAAiB,IAAI,CAACb,aAAa,CAACc,iBAAiB;QAC3D,MAAMC,mBAAmBF,eAAeG,4BAA4B;QACpET,IAAIG,IAAI,CAAC;YACPO,kBAAkB;gBAEhBC,WAAW,IAAI,CAACd,aAAa;gBAC7Be,SAAS;gBACTC,aAAa,CAAC;YAChB;YACAC,yBAAyB;gBACvBH,WAAW;gBACXC,SAAS;gBACTC,aAAa;oBACXE,OAAOP,mBAAmB;wBAAC;wBAAa;qBAAU,GAAG;wBAAC;qBAAY;gBACpE;YACF;QACF;IACF;IAEA,MAGMQ,WAAWjB,GAAY,EAAEC,GAAa,EAAE;QAC5C,MAAMiB,cAAc,IAAI,CAACtB,oBAAoB,CAACuB,QAAQ;QACtD,MAAMC,mBAAmB,IAAI,CAACvB,gBAAgB,CAACwB,uBAAuB;QAEtEpB,IAAIqB,IAAI,CAAC;YACPT,SAAS,IAAI,CAAClB,aAAa;YAC3B4B,QAAQA,IAAAA,gBAAM;YACdC,IAAIC,QAAQC,GAAG,CAACC,EAAE;YAClBC,WAAWR;YACXS,QAAQ;gBACNC,QAAQZ,YAAYY,MAAM;gBAC1BC,iBAAiBb,YAAYa,eAAe;gBAC5CC,WAAWd,YAAYc,SAAS;YAClC;QACF;IACF;IAEA,MAEMC,KAAKjC,GAAY,EAAEC,GAAa,EAAE;QACtCA,IAAIG,IAAI,CAAC;YACPC,SAAS;QACX;IACF;AACF;;;;;QAjEW6B,IAAAA,0BAAY;QAAIC,IAAAA,wBAAU,EAACC,6BAAK,CAACC,UAAU,CAACC,GAAG;;;;;;;;;;;;;QAiB/CJ,IAAAA,0BAAY;;;;;;;;;;;;;QAuBZA,IAAAA,0BAAY;QAAIC,IAAAA,wBAAU,EAACC,6BAAK,CAACC,UAAU,CAACC,GAAG;;;;;;;;;;;;;;;;;;;;4DApDtCC"}
1
+ {"version":3,"sources":["../../src/controllers/server-public.controller.ts"],"names":["ServerPublicController","constructor","settingsStore","serverVersion","serverReleaseService","monsterPiService","isTypeormMode","welcome","req","res","getSettings","getLoginRequired","send","message","getFeatures","serverSettings","getServerSettings","moonrakerEnabled","experimentalMoonrakerSupport","prusaLinkEnabled","experimentalPrusaLinkSupport","printerGroupsApi","available","version","subFeatures","multiplePrinterServices","types","getVersion","updateState","getState","monsterPiVersion","getMonsterPiVersionSafe","json","isNode","os","process","env","OS","monsterPi","update","synced","updateAvailable","airGapped","test","authenticate","permission","PERMS","ServerInfo","Get","apiRoute"],"mappings":";;;;+BAWaA;;;eAAAA;;;+BAXsB;iCACN;0BACN;8BACkB;wCACnB;+BACQ;sCACO;kCACJ;yBACC;;;;;;;;;;AAG3B,MAAMA;;;;;;IACXC,YACE,AAAiBC,aAA4B,EAC7C,AAAiBC,aAAqB,EACtC,AAAiBC,oBAA0C,EAC3D,AAAiBC,gBAAkC,EACnD,AAAiBC,aAAsB,CACvC;aALiBJ,gBAAAA;aACAC,gBAAAA;aACAC,uBAAAA;aACAC,mBAAAA;aACAC,gBAAAA;IAEnB;IAKAC,QAAQC,GAAY,EAAEC,GAAa,EAAE;QACnC,IAAI,CAACP,aAAa,CAACQ,WAAW;QAE9B,IAAI,CAAC,IAAI,CAACR,aAAa,CAACS,gBAAgB,IAAI;YAC1C,OAAOF,IAAIG,IAAI,CAAC;gBACdC,SAAS;YACX;QACF;QAEA,OAAOJ,IAAIG,IAAI,CAAC;YACdC,SAAS;QACX;IACF;IAKAC,YAAYN,GAAY,EAAEC,GAAa,EAAE;QACvC,MAAMM,iBAAiB,IAAI,CAACb,aAAa,CAACc,iBAAiB;QAC3D,MAAMC,mBAAmBF,eAAeG,4BAA4B;QACpE,MAAMC,mBAAmBJ,eAAeK,4BAA4B;QACpEX,IAAIG,IAAI,CAAC;YACPS,kBAAkB;gBAEhBC,WAAW,IAAI,CAAChB,aAAa;gBAC7BiB,SAAS;gBACTC,aAAa,CAAC;YAChB;YACAC,yBAAyB;gBACvBH,WAAW;gBACXC,SAAS;gBACTC,aAAa;oBACXE,OAAO;wBACL;2BACIT,mBAAmB;4BAAC;yBAAU,GAAG,EAAE;2BACnCE,mBAAmB;4BAAC;yBAAY,GAAG,EAAE;qBAC1C;gBACH;YACF;QACF;IACF;IAEA,MAGMQ,WAAWnB,GAAY,EAAEC,GAAa,EAAE;QAC5C,MAAMmB,cAAc,IAAI,CAACxB,oBAAoB,CAACyB,QAAQ;QACtD,MAAMC,mBAAmB,IAAI,CAACzB,gBAAgB,CAAC0B,uBAAuB;QAEtEtB,IAAIuB,IAAI,CAAC;YACPT,SAAS,IAAI,CAACpB,aAAa;YAC3B8B,QAAQA,IAAAA,gBAAM;YACdC,IAAIC,QAAQC,GAAG,CAACC,EAAE;YAClBC,WAAWR;YACXS,QAAQ;gBACNC,QAAQZ,YAAYY,MAAM;gBAC1BC,iBAAiBb,YAAYa,eAAe;gBAC5CC,WAAWd,YAAYc,SAAS;YAClC;QACF;IACF;IAEA,MAEMC,KAAKnC,GAAY,EAAEC,GAAa,EAAE;QACtCA,IAAIG,IAAI,CAAC;YACPC,SAAS;QACX;IACF;AACF;;;;;QAtEW+B,IAAAA,0BAAY;QAAIC,IAAAA,wBAAU,EAACC,6BAAK,CAACC,UAAU,CAACC,GAAG;;;;;;;;;;;;;QAiB/CJ,IAAAA,0BAAY;;;;;;;;;;;;;QA4BZA,IAAAA,0BAAY;QAAIC,IAAAA,wBAAU,EAACC,6BAAK,CAACC,UAAU,CAACC,GAAG;;;;;;;;;;;;;;;;;;;;4DA1DtCC"}
@@ -17,6 +17,9 @@ _export(exports, {
17
17
  },
18
18
  startPrintFileSchema: function() {
19
19
  return startPrintFileSchema;
20
+ },
21
+ uploadFileSchema: function() {
22
+ return uploadFileSchema;
20
23
  }
21
24
  });
22
25
  const _zod = require("zod");
@@ -29,5 +32,11 @@ const downloadFileSchema = _zod.z.object({
29
32
  const getFileSchema = _zod.z.object({
30
33
  path: _zod.z.string().min(1)
31
34
  });
35
+ const uploadFileSchema = _zod.z.object({
36
+ startPrint: _zod.z.enum([
37
+ 'true',
38
+ 'false'
39
+ ])
40
+ });
32
41
 
33
42
  //# sourceMappingURL=printer-files-controller.validation.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/controllers/validation/printer-files-controller.validation.ts"],"names":["downloadFileSchema","getFileSchema","startPrintFileSchema","z","object","filePath","string","min","path"],"mappings":";;;;;;;;;;;IAMaA,kBAAkB;eAAlBA;;IAIAC,aAAa;eAAbA;;IARAC,oBAAoB;eAApBA;;;qBAFK;AAEX,MAAMA,uBAAuBC,MAAC,CAACC,MAAM,CAAC;IAC3CC,UAAUF,MAAC,CAACG,MAAM,GAAGC,GAAG,CAAC;AAC3B;AAEO,MAAMP,qBAAqBG,MAAC,CAACC,MAAM,CAAC;IACzCI,MAAML,MAAC,CAACG,MAAM,GAAGC,GAAG,CAAC;AACvB;AAEO,MAAMN,gBAAgBE,MAAC,CAACC,MAAM,CAAC;IACpCI,MAAML,MAAC,CAACG,MAAM,GAAGC,GAAG,CAAC;AACvB"}
1
+ {"version":3,"sources":["../../../src/controllers/validation/printer-files-controller.validation.ts"],"names":["downloadFileSchema","getFileSchema","startPrintFileSchema","uploadFileSchema","z","object","filePath","string","min","path","startPrint","enum"],"mappings":";;;;;;;;;;;IAMaA,kBAAkB;eAAlBA;;IAIAC,aAAa;eAAbA;;IARAC,oBAAoB;eAApBA;;IAYAC,gBAAgB;eAAhBA;;;qBAdK;AAEX,MAAMD,uBAAuBE,MAAC,CAACC,MAAM,CAAC;IAC3CC,UAAUF,MAAC,CAACG,MAAM,GAAGC,GAAG,CAAC;AAC3B;AAEO,MAAMR,qBAAqBI,MAAC,CAACC,MAAM,CAAC;IACzCI,MAAML,MAAC,CAACG,MAAM,GAAGC,GAAG,CAAC;AACvB;AAEO,MAAMP,gBAAgBG,MAAC,CAACC,MAAM,CAAC;IACpCI,MAAML,MAAC,CAACG,MAAM,GAAGC,GAAG,CAAC;AACvB;AAEO,MAAML,mBAAmBC,MAAC,CAACC,MAAM,CAAC;IACvCK,YAAYN,MAAC,CAACO,IAAI,CAAC;QAAC;QAAQ;KAAQ;AACtC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/entities/settings.entity.ts"],"names":["Settings","serverSettingsKey","credentialSettingsKey","wizardSettingKey","printerFileCleanSettingKey","frontendSettingKey","timeoutSettingKey","id","type","nullable"],"mappings":";;;;+BAYaA;;;eAAAA;;;yCALN;yBACgD;;;;;;;;;;IASrD,MAWA,OAQA,OAOA,OAOA,OAQA;AAzCA,OAACC,0CAAiB;AAWlB,QAACC,8CAAqB;AAQtB,QAACC,yCAAgB;AAOjB,QAACC,mDAA0B;AAO3B,QAACC,2CAAkB;AAQnB,QAACC,0CAAiB;AA9Cb,MAAMN;IAEXO,GAAW;IAGX,CAAA,KAAmB,CAQjB;IAGF,CAAA,MAAuB,CAKrB;IAGF,CAAA,MAAkB,CAIhB;IAGF,CAAA,MAA4B,CAI1B;IAGF,CAAA,MAAoB,CAKlB;IAGF,CAAA,MAAmB,CAEjB;AACJ;;;;;;;QA7CYC,MAAM;QAAeC,UAAU;;;uBACzC;;;QAUUD,MAAM;QAAeC,UAAU;;;uBACzC;;;QAOUD,MAAM;QAAeC,UAAU;;;uBACzC;;;QAMUD,MAAM;QAAeC,UAAU;;;uBACzC;;;QAMUD,MAAM;QAAeC,UAAU;;;uBACzC;;;QAOUD,MAAM;QAAeC,UAAU;;;uBACzC"}
1
+ {"version":3,"sources":["../../src/entities/settings.entity.ts"],"names":["Settings","serverSettingsKey","credentialSettingsKey","wizardSettingKey","printerFileCleanSettingKey","frontendSettingKey","timeoutSettingKey","id","type","nullable"],"mappings":";;;;+BAYaA;;;eAAAA;;;yCALN;yBACgD;;;;;;;;;;IASrD,MAWA,OAQA,OAOA,OAOA,OAQA;AAzCA,OAACC,0CAAiB;AAWlB,QAACC,8CAAqB;AAQtB,QAACC,yCAAgB;AAOjB,QAACC,mDAA0B;AAO3B,QAACC,2CAAkB;AAQnB,QAACC,0CAAiB;AA9Cb,MAAMN;IAEXO,GAAW;IAGX,CAAA,KAAmB,CAQjB;IAGF,CAAA,MAAuB,CAKrB;IAGF,CAAA,MAAkB,CAIhB;IAGF,CAAA,MAA4B,CAI1B;IAGF,CAAA,MAAoB,CAKlB;IAGF,CAAA,MAAmB,CAGjB;AACJ;;;;;;;QA9CYC,MAAM;QAAeC,UAAU;;;uBACzC;;;QAUUD,MAAM;QAAeC,UAAU;;;uBACzC;;;QAOUD,MAAM;QAAeC,UAAU;;;uBACzC;;;QAMUD,MAAM;QAAeC,UAAU;;;uBACzC;;;QAMUD,MAAM;QAAeC,UAAU;;;uBACzC;;;QAOUD,MAAM;QAAeC,UAAU;;;uBACzC"}
@@ -10,8 +10,8 @@ Object.defineProperty(exports, "LoggerFactory", {
10
10
  });
11
11
  const _logger = require("./logger");
12
12
  function LoggerFactory() {
13
- return (name, logToFile, logLevel)=>{
14
- return new _logger.LoggerService(name, logToFile, logLevel);
13
+ return (name)=>{
14
+ return new _logger.LoggerService(name);
15
15
  };
16
16
  }
17
17
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/handlers/logger-factory.ts"],"names":["LoggerFactory","name","logToFile","logLevel","LoggerService"],"mappings":";;;;+BAIgBA;;;eAAAA;;;wBAJc;AAIvB,SAASA;IACd,OAAO,CAACC,MAAcC,WAAqBC;QACzC,OAAO,IAAIC,qBAAa,CAACH,MAAMC,WAAWC;IAC5C;AACF"}
1
+ {"version":3,"sources":["../../src/handlers/logger-factory.ts"],"names":["LoggerFactory","name","LoggerService"],"mappings":";;;;+BAIgBA;;;eAAAA;;;wBAJc;AAIvB,SAASA;IACd,OAAO,CAACC;QACN,OAAO,IAAIC,qBAAa,CAACD;IAC3B;AACF"}
@@ -8,172 +8,30 @@ Object.defineProperty(exports, "LoggerService", {
8
8
  return LoggerService;
9
9
  }
10
10
  });
11
- const _winston = /*#__PURE__*/ _interop_require_default(require("winston"));
12
- const _path = require("path");
13
- const _luxon = require("luxon");
14
- const _serverconstants = require("../server.constants");
15
- const _fsutils = require("../utils/fs.utils");
16
- const _winstonloki = /*#__PURE__*/ _interop_require_default(require("winston-loki"));
17
- const _zod = require("zod");
18
- function _interop_require_default(obj) {
19
- return obj && obj.__esModule ? obj : {
20
- default: obj
21
- };
22
- }
23
- const levelMap = {
24
- error: "ERR",
25
- warn: "WRN",
26
- info: "INF",
27
- debug: "DBG",
28
- http: "HTT",
29
- verbose: "VRB",
30
- silly: "SLY"
31
- };
32
- const lokiLineClassProperty = "class";
33
- const lokiValidationSchema = _zod.z.object({
34
- lokiEnabled: _zod.z.boolean(),
35
- lokiAddress: _zod.z.string().url(),
36
- lokiTimeoutSeconds: _zod.z.coerce.number().positive().default(30),
37
- lokiInterval: _zod.z.coerce.number().positive().default(15)
38
- });
11
+ const _staticlogger = require("./logging/static.logger");
39
12
  class LoggerService {
40
13
  name;
41
14
  logger;
42
- constructor(name, enableFileLogs = true, logFilterLevel = ""){
43
- const isProd = process.env[_serverconstants.AppConstants.NODE_ENV_KEY] === _serverconstants.AppConstants.defaultProductionEnv;
44
- const isTest = process.env[_serverconstants.AppConstants.NODE_ENV_KEY] === _serverconstants.AppConstants.defaultTestEnv;
45
- let effectiveLogLevel = logFilterLevel;
46
- if (!effectiveLogLevel) {
47
- effectiveLogLevel = isProd || isTest ? "warn" : "debug";
48
- }
49
- const isLokiEnabled = process.env[_serverconstants.AppConstants.ENABLE_LOKI_LOGGING] === "true";
50
- const extraWinstonTransports = [];
51
- if (isLokiEnabled) {
52
- const lokiConfigValidationResult = lokiValidationSchema.safeParse({
53
- lokiEnabled: isLokiEnabled,
54
- lokiTimeoutSeconds: process.env[_serverconstants.AppConstants.LOKI_TIMEOUT_SECONDS],
55
- lokiAddress: process.env[_serverconstants.AppConstants.LOKI_ADDRESS],
56
- lokiInterval: process.env[_serverconstants.AppConstants.LOKI_INTERVAL]
57
- });
58
- if (lokiConfigValidationResult.success) {
59
- extraWinstonTransports.push(new _winstonloki.default({
60
- level: effectiveLogLevel,
61
- host: lokiConfigValidationResult.data.lokiAddress,
62
- interval: lokiConfigValidationResult.data.lokiInterval,
63
- timeout: lokiConfigValidationResult.data.lokiTimeoutSeconds,
64
- handleExceptions: true,
65
- onConnectionError (error) {
66
- console.debug(`Loki logger enabled, but connection failed. ${error}`);
67
- },
68
- labels: {
69
- app: "fdm-monster-server"
70
- },
71
- json: false,
72
- useWinstonMetaAsLabels: false,
73
- format: _winston.default.format.json()
74
- }));
75
- }
76
- }
15
+ constructor(name){
77
16
  this.name = name;
78
- this.logger = _winston.default.createLogger({
79
- transports: [
80
- ...extraWinstonTransports,
81
- new _winston.default.transports.Console({
82
- level: effectiveLogLevel,
83
- format: _winston.default.format.combine(_winston.default.format((info)=>{
84
- info.rawLevel = info.level;
85
- return info;
86
- })(), _winston.default.format.colorize({
87
- colors: {
88
- error: "red",
89
- warn: "yellow",
90
- info: "white",
91
- debug: "gray",
92
- http: "magenta",
93
- verbose: "cyan",
94
- silly: "gray"
95
- },
96
- level: true,
97
- message: true,
98
- all: false
99
- }), _winston.default.format.printf((info)=>{
100
- const now = new Date();
101
- const timestamp = `${now.toISOString().split("T")[0]} ${now.toTimeString().split(" ")[0]}.${now.getMilliseconds().toString().padStart(3, "0")}`;
102
- const levelAbbr = levelMap[info.rawLevel] || info.rawLevel.substring(0, 3).toUpperCase();
103
- const gray = "\x1b[90m";
104
- const reset = info.message.substring(0, 5) ?? "\x1b[0m";
105
- const numberRegex = /\b\d+\b/g;
106
- const coloredMessage = info.message.replace(numberRegex, (match)=>`\x1b[35m${match}${reset}`);
107
- let logEntry = `${gray}[${timestamp} ${reset}${levelAbbr}${reset}${gray}]${reset} ${gray}[${reset}${name}${gray}]${reset} ${coloredMessage}`;
108
- if (info.meta) {
109
- const metaString = JSON.stringify(info.meta);
110
- const coloredMeta = metaString.replace(numberRegex, (match)=>`\x1b[35m${match}${reset}`);
111
- logEntry += ` ${coloredMeta}`;
112
- }
113
- return logEntry;
114
- }))
115
- })
116
- ],
117
- format: _winston.default.format.printf((info)=>{
118
- const now = new Date();
119
- const timestamp = `${now.toISOString().split("T")[0]} ${now.toTimeString().split(" ")[0]}.${now.getMilliseconds().toString().padStart(3, "0")}`;
120
- const levelAbbr = levelMap[info.level] || `[${info.level.substring(0, 3).toUpperCase()}]`;
121
- let message = `[${timestamp} ${levelAbbr}] [${name}] ${info.message}`;
122
- if (info.meta) {
123
- const pascalCaseMeta = Object.entries(info.meta).reduce((acc, [key, value])=>{
124
- const pascalKey = key.charAt(0).toUpperCase() + key.slice(1);
125
- acc[pascalKey] = value;
126
- return acc;
127
- }, {});
128
- message += ` ${JSON.stringify(pascalCaseMeta)}`;
129
- }
130
- return message;
131
- })
17
+ this.logger = (0, _staticlogger.getStaticLogger)().child({
18
+ [_staticlogger.logContextClassProperty]: this.name
132
19
  });
133
- if (enableFileLogs) {
134
- const date = _luxon.DateTime.now().toISODate();
135
- const logFilePath = (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultLogsFolder, `${_serverconstants.AppConstants.logAppName}-${date}.log`);
136
- this.logger.add(new _winston.default.transports.File({
137
- level: isTest ? "warn" : "info",
138
- filename: logFilePath,
139
- maxsize: 5000000,
140
- maxFiles: 5
141
- }));
142
- }
143
20
  }
144
21
  newDebug(object) {
145
- this.logger.debug({
146
- ...object,
147
- [lokiLineClassProperty]: this.name
148
- });
22
+ this.logger.debug(object);
149
23
  }
150
24
  log(message, meta) {
151
- const enrichedMeta = {
152
- ...meta,
153
- [lokiLineClassProperty]: this.name
154
- };
155
- this.logger.log("info", message, enrichedMeta);
25
+ this.logger.log("info", message, meta);
156
26
  }
157
27
  warn(message, meta) {
158
- const enrichedMeta = {
159
- ...meta,
160
- [lokiLineClassProperty]: this.name
161
- };
162
- this.logger.log("warn", message, enrichedMeta);
28
+ this.logger.log("warn", message, meta);
163
29
  }
164
30
  debug(message, meta) {
165
- const enrichedMeta = {
166
- ...meta,
167
- [lokiLineClassProperty]: this.name
168
- };
169
- this.logger.log("debug", message, enrichedMeta);
31
+ this.logger.log("debug", message, meta);
170
32
  }
171
33
  error(message, meta) {
172
- const enrichedMeta = {
173
- ...meta,
174
- [lokiLineClassProperty]: this.name
175
- };
176
- this.logger.log("error", message, enrichedMeta);
34
+ this.logger.log("error", message, meta);
177
35
  }
178
36
  }
179
37
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/handlers/logger.ts"],"names":["LoggerService","levelMap","error","warn","info","debug","http","verbose","silly","lokiLineClassProperty","lokiValidationSchema","z","object","lokiEnabled","boolean","lokiAddress","string","url","lokiTimeoutSeconds","coerce","number","positive","default","lokiInterval","name","logger","constructor","enableFileLogs","logFilterLevel","isProd","process","env","AppConstants","NODE_ENV_KEY","defaultProductionEnv","isTest","defaultTestEnv","effectiveLogLevel","isLokiEnabled","ENABLE_LOKI_LOGGING","extraWinstonTransports","lokiConfigValidationResult","safeParse","LOKI_TIMEOUT_SECONDS","LOKI_ADDRESS","LOKI_INTERVAL","success","push","LokiTransport","level","host","data","interval","timeout","handleExceptions","onConnectionError","console","labels","app","json","useWinstonMetaAsLabels","format","winston","createLogger","transports","Console","combine","rawLevel","colorize","colors","message","all","printf","now","Date","timestamp","toISOString","split","toTimeString","getMilliseconds","toString","padStart","levelAbbr","substring","toUpperCase","gray","reset","numberRegex","coloredMessage","replace","match","logEntry","meta","metaString","JSON","stringify","coloredMeta","pascalCaseMeta","Object","entries","reduce","acc","key","value","pascalKey","charAt","slice","date","DateTime","toISODate","logFilePath","join","superRootPath","defaultLogsFolder","logAppName","add","File","filename","maxsize","maxFiles","newDebug","log","enrichedMeta"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/handlers/logger.ts"],"names":["LoggerService","logger","constructor","name","getStaticLogger","child","logContextClassProperty","newDebug","object","debug","log","message","meta","warn","error"],"mappings":";;;;+BAGaA;;;eAAAA;;;8BAF4C;AAElD,MAAMA;;IACXC,OAAuB;IAEvBC,YAAY,AAAiBC,IAAY,CAAE;aAAdA,OAAAA;QAC3B,IAAI,CAACF,MAAM,GAAGG,IAAAA,6BAAe,IAAGC,KAAK,CAAC;YAAE,CAACC,qCAAuB,CAAC,EAAE,IAAI,CAACH,IAAI;QAAC;IAC/E;IAEAI,SAASC,MAAW,EAAE;QACpB,IAAI,CAACP,MAAM,CAACQ,KAAK,CAACD;IACpB;IAEAE,IAAIC,OAAe,EAAEC,IAAU,EAAE;QAC/B,IAAI,CAACX,MAAM,CAACS,GAAG,CAAC,QAAQC,SAASC;IACnC;IAEAC,KAAKF,OAAe,EAAEC,IAAU,EAAE;QAChC,IAAI,CAACX,MAAM,CAACS,GAAG,CAAC,QAAQC,SAASC;IACnC;IAEAH,MAAME,OAAe,EAAEC,IAAU,EAAE;QACjC,IAAI,CAACX,MAAM,CAACS,GAAG,CAAC,SAASC,SAASC;IACpC;IAEAE,MAAMH,OAAe,EAAEC,IAAU,EAAE;QACjC,IAAI,CAACX,MAAM,CAACS,GAAG,CAAC,SAASC,SAASC;IACpC;AACF"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "createFileLoggingTransport", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return createFileLoggingTransport;
9
+ }
10
+ });
11
+ const _luxon = require("luxon");
12
+ const _path = require("path");
13
+ const _fsutils = require("../../utils/fs.utils");
14
+ const _serverconstants = require("../../server.constants");
15
+ const _winston = /*#__PURE__*/ _interop_require_default(require("winston"));
16
+ function _interop_require_default(obj) {
17
+ return obj && obj.__esModule ? obj : {
18
+ default: obj
19
+ };
20
+ }
21
+ function createFileLoggingTransport(options) {
22
+ if (!options.enabled) {
23
+ return;
24
+ }
25
+ const date = _luxon.DateTime.now().toISODate();
26
+ const logFilePath = (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultLogsFolder, `${_serverconstants.AppConstants.logAppName}-${date}.log`);
27
+ return new _winston.default.transports.File({
28
+ level: options.isTest ? "warn" : "info",
29
+ filename: logFilePath,
30
+ maxsize: 5000000,
31
+ maxFiles: 5
32
+ });
33
+ }
34
+
35
+ //# sourceMappingURL=file-logging.transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/handlers/logging/file-logging.transport.ts"],"names":["createFileLoggingTransport","options","enabled","date","DateTime","now","toISODate","logFilePath","join","superRootPath","AppConstants","defaultLogsFolder","logAppName","winston","transports","File","level","isTest","filename","maxsize","maxFiles"],"mappings":";;;;+BAWgBA;;;eAAAA;;;uBAXS;sBACJ;yBACS;iCACD;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,UAAI,EACtBC,IAAAA,sBAAa,KACbC,6BAAY,CAACC,iBAAiB,EAC9B,GAAGD,6BAAY,CAACE,UAAU,CAAC,CAAC,EAAET,KAAK,IAAI,CAAC;IAG1C,OAAO,IAAIU,gBAAO,CAACC,UAAU,CAACC,IAAI,CAAC;QACjCC,OAAOf,QAAQgB,MAAM,GAAG,SAAS;QACjCC,UAAUX;QACVY,SAAS;QACTC,UAAU;IACZ;AACF"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "createLokiLoggingTransport", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return createLokiLoggingTransport;
9
+ }
10
+ });
11
+ const _winstonloki = /*#__PURE__*/ _interop_require_default(require("winston-loki"));
12
+ const _winston = /*#__PURE__*/ _interop_require_default(require("winston"));
13
+ const _nodeprocess = /*#__PURE__*/ _interop_require_default(require("node:process"));
14
+ const _serverconstants = require("../../server.constants");
15
+ const _zod = require("zod");
16
+ function _interop_require_default(obj) {
17
+ return obj && obj.__esModule ? obj : {
18
+ default: obj
19
+ };
20
+ }
21
+ const lokiValidationSchema = _zod.z.object({
22
+ lokiEnabled: _zod.z.boolean(),
23
+ lokiAddress: _zod.z.string().url(),
24
+ lokiTimeoutSeconds: _zod.z.coerce.number().positive().default(30),
25
+ lokiInterval: _zod.z.coerce.number().positive().default(15)
26
+ });
27
+ function createLokiLoggingTransport(options) {
28
+ const lokiConfigValidationResult = lokiValidationSchema.safeParse({
29
+ lokiEnabled: _nodeprocess.default.env[_serverconstants.AppConstants.ENABLE_LOKI_LOGGING] === "true",
30
+ lokiTimeoutSeconds: _nodeprocess.default.env[_serverconstants.AppConstants.LOKI_TIMEOUT_SECONDS],
31
+ lokiAddress: _nodeprocess.default.env[_serverconstants.AppConstants.LOKI_ADDRESS],
32
+ lokiInterval: _nodeprocess.default.env[_serverconstants.AppConstants.LOKI_INTERVAL]
33
+ });
34
+ if (!lokiConfigValidationResult.success || !lokiConfigValidationResult.data.lokiEnabled) {
35
+ return;
36
+ }
37
+ return new _winstonloki.default({
38
+ level: options.logLevel ?? "info",
39
+ host: lokiConfigValidationResult.data.lokiAddress,
40
+ interval: lokiConfigValidationResult.data.lokiInterval,
41
+ timeout: lokiConfigValidationResult.data.lokiTimeoutSeconds,
42
+ handleExceptions: true,
43
+ onConnectionError (error) {
44
+ console.debug(`Loki logger enabled, but connection failed. ${error}`);
45
+ },
46
+ labels: {
47
+ app: "fdm-monster-server"
48
+ },
49
+ json: false,
50
+ useWinstonMetaAsLabels: false,
51
+ format: _winston.default.format.json()
52
+ });
53
+ }
54
+
55
+ //# sourceMappingURL=loki-logging.transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/handlers/logging/loki-logging.transport.ts"],"names":["createLokiLoggingTransport","lokiValidationSchema","z","object","lokiEnabled","boolean","lokiAddress","string","url","lokiTimeoutSeconds","coerce","number","positive","default","lokiInterval","options","lokiConfigValidationResult","safeParse","process","env","AppConstants","ENABLE_LOKI_LOGGING","LOKI_TIMEOUT_SECONDS","LOKI_ADDRESS","LOKI_INTERVAL","success","data","LokiTransport","level","logLevel","host","interval","timeout","handleExceptions","onConnectionError","error","console","debug","labels","app","json","useWinstonMetaAsLabels","format","winston"],"mappings":";;;;+BAiBgBA;;;eAAAA;;;oEAjBU;gEACN;oEACA;iCACS;qBACX;;;;;;AAMlB,MAAMC,uBAAuBC,MAAC,CAACC,MAAM,CAAC;IACpCC,aAAaF,MAAC,CAACG,OAAO;IACtBC,aAAaJ,MAAC,CAACK,MAAM,GAAGC,GAAG;IAC3BC,oBAAoBP,MAAC,CAACQ,MAAM,CAACC,MAAM,GAAGC,QAAQ,GAAGC,OAAO,CAAC;IACzDC,cAAcZ,MAAC,CAACQ,MAAM,CAACC,MAAM,GAAGC,QAAQ,GAAGC,OAAO,CAAC;AACrD;AAEO,SAASb,2BAA2Be,OAA0B;IACnE,MAAMC,6BAA6Bf,qBAAqBgB,SAAS,CAAC;QAChEb,aAAac,oBAAO,CAACC,GAAG,CAACC,6BAAY,CAACC,mBAAmB,CAAC,KAAK;QAC/DZ,oBAAoBS,oBAAO,CAACC,GAAG,CAACC,6BAAY,CAACE,oBAAoB,CAAC;QAClEhB,aAAaY,oBAAO,CAACC,GAAG,CAACC,6BAAY,CAACG,YAAY,CAAC;QACnDT,cAAcI,oBAAO,CAACC,GAAG,CAACC,6BAAY,CAACI,aAAa,CAAC;IACvD;IAEA,IAAI,CAACR,2BAA2BS,OAAO,IAAI,CAACT,2BAA2BU,IAAI,CAACtB,WAAW,EAAE;QACvF;IACF;IAEA,OAAO,IAAIuB,oBAAa,CAAC;QACvBC,OAAOb,QAAQc,QAAQ,IAAI;QAC3BC,MAAMd,2BAA2BU,IAAI,CAACpB,WAAW;QACjDyB,UAAUf,2BAA2BU,IAAI,CAACZ,YAAY;QACtDkB,SAAShB,2BAA2BU,IAAI,CAACjB,kBAAkB;QAC3DwB,kBAAkB;QAClBC,mBAAkBC,KAAc;YAC9BC,QAAQC,KAAK,CAAC,CAAC,4CAA4C,EAAEF,OAAO;QACtE;QAEAG,QAAQ;YACNC,KAAK;QACP;QAEAC,MAAM;QAENC,wBAAwB;QAExBC,QAAQC,gBAAO,CAACD,MAAM,CAACF,IAAI;IAC7B;AACF"}