@fdm-monster/server 2.0.0 → 2.0.3
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 -0
- package/.yarn/install-state.gz +0 -0
- package/README.md +22 -3
- package/RELEASE_NOTES.MD +38 -0
- package/dist/constants/authorization.constants.js +12 -3
- package/dist/constants/authorization.constants.js.map +1 -1
- package/dist/constants/server-settings.constants.js +4 -2
- package/dist/constants/server-settings.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/file-storage.controller.js +90 -19
- package/dist/controllers/file-storage.controller.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/controllers/settings.controller.js +70 -2
- package/dist/controllers/settings.controller.js.map +1 -1
- package/dist/controllers/slicer-compat.controller.js +4 -0
- package/dist/controllers/slicer-compat.controller.js.map +1 -1
- 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/entities/settings.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/middleware/slicer-api-key.middleware.js +29 -0
- package/dist/middleware/slicer-api-key.middleware.js.map +1 -0
- 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 +23 -3
- package/dist/services/core/yaml.service.js.map +1 -1
- package/dist/services/file-storage.service.js +4 -3
- 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 +8 -2
- package/dist/services/orm/printer.service.js.map +1 -1
- package/dist/services/orm/settings.service.js +9 -2
- package/dist/services/orm/settings.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 +2 -3
- package/dist/services/validators/printer-service.validation.js.map +1 -1
- package/dist/services/validators/settings-service.validation.js +23 -4
- package/dist/services/validators/settings-service.validation.js.map +1 -1
- package/dist/services/validators/yaml-service.validation.js +2 -0
- package/dist/services/validators/yaml-service.validation.js.map +1 -1
- package/dist/shared/runtime-settings.migration.js +10 -0
- package/dist/shared/runtime-settings.migration.js.map +1 -1
- package/dist/state/settings.store.js +38 -5
- package/dist/state/settings.store.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/install.sh +559 -0
- package/package.json +6 -6
package/.env.template
CHANGED
|
@@ -38,6 +38,8 @@ OVERRIDE_DEMO_ROLE=ADMIN
|
|
|
38
38
|
# Debug socket states
|
|
39
39
|
DEBUG_SOCKET_STATES=false
|
|
40
40
|
|
|
41
|
+
# Saves media (logs, files, file-uploads, log-zips, client-dist, client-dist-zips, etc)
|
|
42
|
+
MEDIA_PATH=./media
|
|
41
43
|
# Saves SQLite database to ./database/fdm-monster.sqlite
|
|
42
44
|
DATABASE_PATH=./database
|
|
43
45
|
# Optional, default: fdm-monster.sqlite
|
package/.yarn/install-state.gz
CHANGED
|
Binary file
|
package/README.md
CHANGED
|
@@ -42,6 +42,13 @@ Here is a list of features that make FDM Monster stand out:
|
|
|
42
42
|
|
|
43
43
|
## Installation methods ⚙️
|
|
44
44
|
|
|
45
|
+
### Quick Install (Linux)
|
|
46
|
+
```bash
|
|
47
|
+
curl -fsSL https://raw.githubusercontent.com/fdm-monster/fdm-monster/main/install.sh | bash
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Other Methods
|
|
51
|
+
- [One-Click Linux Install](https://docs.fdm-monster.net/installing/one-click-linux)
|
|
45
52
|
- [Docker image](https://hub.docker.com/r/fdmmonster/fdm-monster)
|
|
46
53
|
- [Raspberry Pi image MonsterPi](https://docs.fdm-monster.net/guides/monsterpi)
|
|
47
54
|
- [Unraid Community App](https://unraid.net/community/apps?q=fdm+monster)
|
|
@@ -73,9 +80,21 @@ Please consider sponsoring FDM Monster to help this project! You can find the [G
|
|
|
73
80
|
|
|
74
81
|
Thanks to the following parties for their financial support:
|
|
75
82
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
83
|
+
### Tier 1
|
|
84
|
+
- (empty)
|
|
85
|
+
|
|
86
|
+
### Tier 2
|
|
87
|
+
- [thatguymendel](https://github.com/thatguymendel)
|
|
88
|
+
|
|
89
|
+
### Tier 3
|
|
90
|
+
- [MrHitchcock](https://github.com/MrHitchcock)
|
|
91
|
+
- [That Guy Jaysen](https://github.com/thatguy-jaysenodell)
|
|
92
|
+
|
|
93
|
+
### Tier 4
|
|
94
|
+
- [doucettom](https://github.com/doucettom)
|
|
95
|
+
|
|
96
|
+
### One Time
|
|
97
|
+
- [th3dstudio](https://github.com/th3dstudio)
|
|
79
98
|
|
|
80
99
|
|
|
81
100
|
## Contributors ✨
|
package/RELEASE_NOTES.MD
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
# Develop
|
|
2
2
|
|
|
3
|
+
# FDM Monster 2.0.3
|
|
4
|
+
|
|
5
|
+
Hotfix release
|
|
6
|
+
|
|
7
|
+
- Client wasn't updated to 2.2.0
|
|
8
|
+
|
|
9
|
+
# FDM Monster 2.0.2
|
|
10
|
+
|
|
11
|
+
## Features
|
|
12
|
+
|
|
13
|
+
- Printer maintenance log
|
|
14
|
+
- Added ENV_FILE env variable to override path for .env file
|
|
15
|
+
- Added MEDIA_PATH env variable to override media storage folder
|
|
16
|
+
|
|
17
|
+
## Fixes
|
|
18
|
+
|
|
19
|
+
- DATABASE_PATH env variable will now respect its value if set, instead of forcing it to be relative
|
|
20
|
+
|
|
21
|
+
## Chores
|
|
22
|
+
|
|
23
|
+
- Remove corepack from CICD as yarn is committed to repository
|
|
24
|
+
- Switch docker container base to node 24
|
|
25
|
+
- PrintJob entity printer relation improved
|
|
26
|
+
|
|
27
|
+
# FDM Monster 2.0.1
|
|
28
|
+
|
|
29
|
+
## Feat
|
|
30
|
+
|
|
31
|
+
- Add grid sorting option frontend settings
|
|
32
|
+
- YAML export now includes credential settings (jwtExpiresIn, refreshTokenAttempts, refreshTokenExpiry, slicerApiKey)
|
|
33
|
+
- YAML import now properly imports credential settings including slicerApiKey
|
|
34
|
+
- Ability to analyze/re-analyze file from Files page upload
|
|
35
|
+
|
|
36
|
+
## Fixes
|
|
37
|
+
|
|
38
|
+
- YAML import restores credentials using sensitive settings method in SettingsStore
|
|
39
|
+
- YAML export would not export printer username and password
|
|
40
|
+
|
|
3
41
|
# FDM Monster 2.0.0
|
|
4
42
|
|
|
5
43
|
## Feat
|
|
@@ -45,7 +45,8 @@ const PERM_GROUP = {
|
|
|
45
45
|
PrinterSettings: "PrinterSettings",
|
|
46
46
|
Jobs: "Jobs",
|
|
47
47
|
Floors: "Floors",
|
|
48
|
-
ServerInfo: "ServerInfo"
|
|
48
|
+
ServerInfo: "ServerInfo",
|
|
49
|
+
PrinterMaintenanceLog: "PrinterMaintenanceLog"
|
|
49
50
|
};
|
|
50
51
|
const PERMS = {
|
|
51
52
|
[PERM_GROUP.PrinterFiles]: {
|
|
@@ -75,6 +76,14 @@ const PERMS = {
|
|
|
75
76
|
[PERM_GROUP.ServerInfo]: {
|
|
76
77
|
Default: "ServerInfo.Default",
|
|
77
78
|
Get: "ServerInfo.Get"
|
|
79
|
+
},
|
|
80
|
+
[PERM_GROUP.PrinterMaintenanceLog]: {
|
|
81
|
+
Default: "PrinterMaintenanceLog.Default",
|
|
82
|
+
List: "PrinterMaintenanceLog.List",
|
|
83
|
+
Get: "PrinterMaintenanceLog.Get",
|
|
84
|
+
Create: "PrinterMaintenanceLog.Create",
|
|
85
|
+
Complete: "PrinterMaintenanceLog.Complete",
|
|
86
|
+
Delete: "PrinterMaintenanceLog.Delete"
|
|
78
87
|
}
|
|
79
88
|
};
|
|
80
89
|
function flattenPermissionDefinition() {
|
|
@@ -96,8 +105,8 @@ const ROLES = {
|
|
|
96
105
|
GUEST: "GUEST"
|
|
97
106
|
};
|
|
98
107
|
const ROLE_PERMS = {
|
|
99
|
-
[ROLES.ADMIN]: (0, _lodash.union)(allPerms(PERM_GROUP.Jobs), allPerms(PERM_GROUP.Floors), allPerms(PERM_GROUP.PrinterFiles), allPerms(PERM_GROUP.PrinterSettings), allPerms(PERM_GROUP.ServerInfo)),
|
|
100
|
-
[ROLES.OPERATOR]: (0, _lodash.union)(allPerms(PERM_GROUP.Jobs), allPerms(PERM_GROUP.Floors), allPerms(PERM_GROUP.PrinterFiles), allPerms(PERM_GROUP.PrinterSettings)),
|
|
108
|
+
[ROLES.ADMIN]: (0, _lodash.union)(allPerms(PERM_GROUP.Jobs), allPerms(PERM_GROUP.Floors), allPerms(PERM_GROUP.PrinterFiles), allPerms(PERM_GROUP.PrinterSettings), allPerms(PERM_GROUP.ServerInfo), allPerms(PERM_GROUP.PrinterMaintenanceLog)),
|
|
109
|
+
[ROLES.OPERATOR]: (0, _lodash.union)(allPerms(PERM_GROUP.Jobs), allPerms(PERM_GROUP.Floors), allPerms(PERM_GROUP.PrinterFiles), allPerms(PERM_GROUP.PrinterSettings), allPerms(PERM_GROUP.PrinterMaintenanceLog)),
|
|
101
110
|
[ROLES.GUEST]: []
|
|
102
111
|
};
|
|
103
112
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/constants/authorization.constants.ts"],"names":["AUTH_ERROR_REASON","PERMS","PERM_GROUP","ROLES","ROLE_PERMS","allPerms","flattenPermissionDefinition","IncorrectCredentials","InvalidOrExpiredRefreshToken","InvalidOrExpiredAuthToken","PasswordChangeRequired","LoginRequired","AccountNotVerified","PrinterFiles","PrinterSettings","Jobs","Floors","ServerInfo","Default","Get","Delete","Clear","Upload","Actions","List","Create","Update","permissions","key","Object","values","permissionName","push","group","Error","ADMIN","OPERATOR","GUEST","union"],"mappings":";;;;;;;;;;;QAEaA;eAAAA;;
|
|
1
|
+
{"version":3,"sources":["../../src/constants/authorization.constants.ts"],"names":["AUTH_ERROR_REASON","PERMS","PERM_GROUP","ROLES","ROLE_PERMS","allPerms","flattenPermissionDefinition","IncorrectCredentials","InvalidOrExpiredRefreshToken","InvalidOrExpiredAuthToken","PasswordChangeRequired","LoginRequired","AccountNotVerified","PrinterFiles","PrinterSettings","Jobs","Floors","ServerInfo","PrinterMaintenanceLog","Default","Get","Delete","Clear","Upload","Actions","List","Create","Update","Complete","permissions","key","Object","values","permissionName","push","group","Error","ADMIN","OPERATOR","GUEST","union"],"mappings":";;;;;;;;;;;QAEaA;eAAAA;;QAqBAC;eAAAA;;QAXAC;eAAAA;;QAqEAC;eAAAA;;QAQAC;eAAAA;;QAbGC;eAAAA;;QAVAC;eAAAA;;;wBAlEM;AAEf,MAAMN,oBAAoB;IAE/BO,sBAAsB;IACtBC,8BAA8B;IAC9BC,2BAA2B;IAC3BC,wBAAwB;IACxBC,eAAe;IACfC,oBAAoB;AACtB;AAEO,MAAMV,aAAa;IACxBW,cAAc;IACdC,iBAAiB;IACjBC,MAAM;IACNC,QAAQ;IACRC,YAAY;IACZC,uBAAuB;AACzB;AAIO,MAAMjB,QAAQ;IACnB,CAACC,WAAWW,YAAY,CAAC,EAAE;QACzBM,SAAS;QACTC,KAAK;QACLC,QAAQ;QACRC,OAAO;QACPC,QAAQ;QACRC,SAAS;IACX;IACA,CAACtB,WAAWa,IAAI,CAAC,EAAE;QACjBI,SAAS;QACTM,MAAM;IACR;IACA,CAACvB,WAAWc,MAAM,CAAC,EAAE;QACnBG,SAAS;QACTM,MAAM;QACNL,KAAK;QACLM,QAAQ;QACRC,QAAQ;QACRN,QAAQ;IACV;IACA,CAACnB,WAAWY,eAAe,CAAC,EAAE;QAC5BK,SAAS;QACTC,KAAK;IACP;IACA,CAAClB,WAAWe,UAAU,CAAC,EAAE;QACvBE,SAAS;QACTC,KAAK;IACP;IACA,CAAClB,WAAWgB,qBAAqB,CAAC,EAAE;QAClCC,SAAS;QACTM,MAAM;QACNL,KAAK;QACLM,QAAQ;QACRE,UAAU;QACVP,QAAQ;IACV;AACF;AAMO,SAASf;IACd,MAAMuB,cAAgC,EAAE;IACxC,KAAK,MAAMC,OAAOC,OAAOC,MAAM,CAAC9B,YAAa;QAC3C,KAAK,MAAM+B,kBAAkBF,OAAOC,MAAM,CAAC/B,KAAK,CAAC6B,IAAI,EAAG;YACtDD,YAAYK,IAAI,CAACD;QACnB;IACF;IACA,OAAOJ;AACT;AAEO,SAASxB,SAAS8B,KAAsB;IAC7C,IAAI,CAACA,SAAS,CAAClC,KAAK,CAACkC,MAAM,EAAE,MAAM,IAAIC,MAAM,CAAC,uBAAuB,EAAED,MAAM,eAAe,CAAC;IAC7F,OAAOJ,OAAOC,MAAM,CAAC/B,KAAK,CAACkC,MAAM;AACnC;AAEO,MAAMhC,QAAQ;IACnBkC,OAAO;IACPC,UAAU;IACVC,OAAO;AACT;AAIO,MAAMnC,aAAiD;IAC5D,CAACD,MAAMkC,KAAK,CAAC,EAAEG,IAAAA,aAAK,EAClBnC,SAASH,WAAWa,IAAI,GACxBV,SAASH,WAAWc,MAAM,GAC1BX,SAASH,WAAWW,YAAY,GAChCR,SAASH,WAAWY,eAAe,GACnCT,SAASH,WAAWe,UAAU,GAC9BZ,SAASH,WAAWgB,qBAAqB;IAE3C,CAACf,MAAMmC,QAAQ,CAAC,EAAEE,IAAAA,aAAK,EACrBnC,SAASH,WAAWa,IAAI,GACxBV,SAASH,WAAWc,MAAM,GAC1BX,SAASH,WAAWW,YAAY,GAChCR,SAASH,WAAWY,eAAe,GACnCT,SAASH,WAAWgB,qBAAqB;IAE3C,CAACf,MAAMoC,KAAK,CAAC,EAAE,EAAE;AACnB"}
|
|
@@ -64,14 +64,16 @@ const credentialSettingsKey = "credentials";
|
|
|
64
64
|
const getDefaultCredentialSettings = ()=>({
|
|
65
65
|
jwtExpiresIn: _serverconstants.AppConstants.DEFAULT_JWT_EXPIRES_IN,
|
|
66
66
|
refreshTokenAttempts: _serverconstants.AppConstants.DEFAULT_REFRESH_TOKEN_ATTEMPTS,
|
|
67
|
-
refreshTokenExpiry: _serverconstants.AppConstants.DEFAULT_REFRESH_TOKEN_EXPIRY
|
|
67
|
+
refreshTokenExpiry: _serverconstants.AppConstants.DEFAULT_REFRESH_TOKEN_EXPIRY,
|
|
68
|
+
slicerApiKey: null
|
|
68
69
|
});
|
|
69
70
|
const frontendSettingKey = "frontend";
|
|
70
71
|
const getDefaultFrontendSettings = ()=>({
|
|
71
72
|
gridCols: 4,
|
|
72
73
|
gridRows: 2,
|
|
73
74
|
largeTiles: false,
|
|
74
|
-
tilePreferCancelOverQuickStop: false
|
|
75
|
+
tilePreferCancelOverQuickStop: false,
|
|
76
|
+
gridNameSortDirection: 'horizontal'
|
|
75
77
|
});
|
|
76
78
|
const timeoutSettingKey = "timeout";
|
|
77
79
|
const getDefaultTimeout = ()=>({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/constants/server-settings.constants.ts"],"names":["credentialSettingsKey","frontendSettingKey","getDefaultCredentialSettings","getDefaultFrontendSettings","getDefaultServerSettings","getDefaultSettings","getDefaultTimeout","getDefaultWizardSettings","serverSettingsKey","timeoutSettingKey","wizardSettingKey","wizardCompleted","wizardCompletedAt","wizardVersion","sentryDiagnosticsEnabled","loginRequired","registration","experimentalMoonrakerSupport","experimentalBambuSupport","experimentalPrusaLinkSupport","jwtExpiresIn","AppConstants","DEFAULT_JWT_EXPIRES_IN","refreshTokenAttempts","DEFAULT_REFRESH_TOKEN_ATTEMPTS","refreshTokenExpiry","DEFAULT_REFRESH_TOKEN_EXPIRY","gridCols","gridRows","largeTiles","tilePreferCancelOverQuickStop","apiTimeout","apiUploadTimeout","jwtSecret","uuidv4"],"mappings":";;;;;;;;;;;QA2BaA;eAAAA;;
|
|
1
|
+
{"version":3,"sources":["../../src/constants/server-settings.constants.ts"],"names":["credentialSettingsKey","frontendSettingKey","getDefaultCredentialSettings","getDefaultFrontendSettings","getDefaultServerSettings","getDefaultSettings","getDefaultTimeout","getDefaultWizardSettings","serverSettingsKey","timeoutSettingKey","wizardSettingKey","wizardCompleted","wizardCompletedAt","wizardVersion","sentryDiagnosticsEnabled","loginRequired","registration","experimentalMoonrakerSupport","experimentalBambuSupport","experimentalPrusaLinkSupport","jwtExpiresIn","AppConstants","DEFAULT_JWT_EXPIRES_IN","refreshTokenAttempts","DEFAULT_REFRESH_TOKEN_ATTEMPTS","refreshTokenExpiry","DEFAULT_REFRESH_TOKEN_EXPIRY","slicerApiKey","gridCols","gridRows","largeTiles","tilePreferCancelOverQuickStop","gridNameSortDirection","apiTimeout","apiUploadTimeout","jwtSecret","uuidv4"],"mappings":";;;;;;;;;;;QA2BaA;eAAAA;;QAYAC;eAAAA;;QAXAC;eAAAA;;QAYAC;eAAAA;;QAtBAC;eAAAA;;QAqCAC;eAAAA;;QANAC;eAAAA;;QAtCAC;eAAAA;;QAMAC;eAAAA;;QA+BAC;eAAAA;;QAtCAC;eAAAA;;;iCAVgB;sBAQA;AAEtB,MAAMA,mBAAmB;AACzB,MAAMH,2BAA2B,IAA0B,CAAA;QAChEI,iBAAiB;QACjBC,mBAAmB;QACnBC,eAAe;IACjB,CAAA;AAEO,MAAML,oBAAoB;AAC1B,MAAMJ,2BAA2B,IAA0B,CAAA;QAChEU,0BAA0B;QAC1BC,eAAe;QACfC,cAAc;QACdC,8BAA8B;QAC9BC,0BAA0B;QAC1BC,8BAA8B;IAChC,CAAA;AAEO,MAAMnB,wBAAwB;AAC9B,MAAME,+BAA+B,IAA8B,CAAA;QAExEkB,cAAcC,6BAAY,CAACC,sBAAsB;QAEjDC,sBAAsBF,6BAAY,CAACG,8BAA8B;QAEjEC,oBAAoBJ,6BAAY,CAACK,4BAA4B;QAE7DC,cAAc;IAChB,CAAA;AAEO,MAAM1B,qBAAqB;AAC3B,MAAME,6BAA6B,IAA4B,CAAA;QACpEyB,UAAU;QACVC,UAAU;QACVC,YAAY;QACZC,+BAA+B;QAC/BC,uBAAuB;IACzB,CAAA;AAEO,MAAMvB,oBAAoB;AAC1B,MAAMH,oBAAoB,IAA2B,CAAA;QAC1D2B,YAAY;QACZC,kBAAkB;IACpB,CAAA;AAGO,MAAM7B,qBAAqB,IAAO,CAAA;QACvC,CAACG,kBAAkB,EAAEJ;QACrB,CAACM,iBAAiB,EAAEH;QACpB,CAACP,sBAAsB,EAAE;YACvB,GAAGE,8BAA8B;YACjCiC,WAAWC,IAAAA,QAAM;QACnB;QACA,CAACnC,mBAAmB,EAAEE;QACtB,CAACM,kBAAkB,EAAEH;IACvB,CAAA"}
|
package/dist/container.js
CHANGED
|
@@ -13,6 +13,7 @@ const _awilix = require("awilix");
|
|
|
13
13
|
const _toadscheduler = require("toad-scheduler");
|
|
14
14
|
const _containertokens = require("./container.tokens");
|
|
15
15
|
const _printerservice = require("./services/orm/printer.service");
|
|
16
|
+
const _printermaintenancelogservice = require("./services/orm/printer-maintenance-log.service");
|
|
16
17
|
const _settingsstore = require("./state/settings.store");
|
|
17
18
|
const _serverreleaseservice = require("./services/core/server-release.service");
|
|
18
19
|
const _taskmanagerservice = require("./services/task-manager.service");
|
|
@@ -104,6 +105,7 @@ function configureContainer() {
|
|
|
104
105
|
[di.floorPositionService]: (0, _awilix.asClass)(_floorpositionservice.FloorPositionService).singleton(),
|
|
105
106
|
[di.cameraStreamService]: (0, _awilix.asClass)(_camerastreamservice.CameraStreamService).singleton(),
|
|
106
107
|
[di.printerService]: (0, _awilix.asClass)(_printerservice.PrinterService),
|
|
108
|
+
[di.printerMaintenanceLogService]: (0, _awilix.asClass)(_printermaintenancelogservice.PrinterMaintenanceLogService),
|
|
107
109
|
[di.printerTagService]: (0, _awilix.asClass)(_printertagservice.PrinterTagService),
|
|
108
110
|
[di.refreshTokenService]: (0, _awilix.asClass)(_refreshtokenservice.RefreshTokenService).singleton(),
|
|
109
111
|
[di.userService]: (0, _awilix.asClass)(_userservice.UserService).singleton(),
|
package/dist/container.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/container.ts"],"names":["configureContainer","container","createContainer","injectionMode","InjectionMode","CLASSIC","di","DITokens","register","appDefaultRole","asValue","ROLES","GUEST","appDefaultRoleNoLogin","ADMIN","serverVersion","asFunction","process","env","AppConstants","VERSION_KEY","cradleService","asClass","CradleService","inject","socketFactory","SocketFactory","transient","typeormService","TypeormService","singleton","settingsService","SettingsService","floorService","FloorService","floorPositionService","FloorPositionService","cameraStreamService","CameraStreamService","printerService","PrinterService","printerTagService","PrinterTagService","refreshTokenService","RefreshTokenService","userService","UserService","userRoleService","UserRoleService","roleService","RoleService","permissionService","PermissionService","serverHost","ServerHost","exceptionFilter","ExceptionFilter","settingsStore","SettingsStore","configService","ConfigService","authService","AuthService","jwtService","JwtService","loggerFactory","LoggerFactory","taskManagerService","TaskManagerService","toadScheduler","ToadScheduler","eventEmitter2","configureEventEmitter","serverReleaseService","ServerReleaseService","monsterPiService","MonsterPiService","githubService","GithubService","octokitService","CustomOctoKit","Octokit","plugin","throttling","auth","get","GITHUB_PAT","throttle","onRateLimit","_retryAfter","options","_octokit","_retryCount","logger","warn","method","url","onSecondaryRateLimit","clientBundleService","ClientBundleService","logDumpService","LogDumpService","httpClientFactory","HttpClientFactory","socketIoGateway","SocketIoGateway","multerService","MulterService","yamlService","YamlService","printerLogin","printerApiFactory","PrinterApiFactory","prusaLinkApi","PrusaLinkApi","prusaLinkPollingAdapter","PrusaLinkHttpPollingAdapter","octoprintApi","OctoprintApi","octoprintClient","OctoprintClient","octoPrintSockIoAdapter","OctoprintWebsocketAdapter","moonrakerApi","MoonrakerApi","moonrakerClient","MoonrakerClient","moonrakerWebsocketAdapter","MoonrakerWebsocketAdapter","bambuApi","BambuApi","bambuClient","BambuClient","bambuFtpAdapter","BambuFtpAdapter","bambuMqttAdapter","BambuMqttAdapter","batchCallService","BatchCallService","floorStore","FloorStore","printerThumbnailCache","PrinterThumbnailCache","fileCache","FileCache","fileUploadTrackerCache","FileUploadTrackerCache","printerFilesStore","PrinterFilesStore","printerCache","PrinterCache","printerEventsCache","PrinterEventsCache","printerSocketStore","PrinterSocketStore","testPrinterSocketStore","TestPrinterSocketStore","printJobService","PrintJobService","printQueueService","PrintQueueService","fileStorageService","FileStorageService","fileAnalysisService","FileAnalysisService","printFileDownloaderService","PrintFileDownloaderService","bootTask","BootTask","softwareUpdateTask","SoftwareUpdateTask","socketIoTask","SocketIoTask","clientDistDownloadTask","ClientDistDownloadTask","printerWebsocketTask","PrinterWebsocketTask","printerWebsocketRestoreTask","PrinterWebsocketRestoreTask","printerFilesLoadTask","PrinterFilesLoadTask","printJobAnalysisTask","PrintJobAnalysisTask"],"mappings":";;;;+
|
|
1
|
+
{"version":3,"sources":["../src/container.ts"],"names":["configureContainer","container","createContainer","injectionMode","InjectionMode","CLASSIC","di","DITokens","register","appDefaultRole","asValue","ROLES","GUEST","appDefaultRoleNoLogin","ADMIN","serverVersion","asFunction","process","env","AppConstants","VERSION_KEY","cradleService","asClass","CradleService","inject","socketFactory","SocketFactory","transient","typeormService","TypeormService","singleton","settingsService","SettingsService","floorService","FloorService","floorPositionService","FloorPositionService","cameraStreamService","CameraStreamService","printerService","PrinterService","printerMaintenanceLogService","PrinterMaintenanceLogService","printerTagService","PrinterTagService","refreshTokenService","RefreshTokenService","userService","UserService","userRoleService","UserRoleService","roleService","RoleService","permissionService","PermissionService","serverHost","ServerHost","exceptionFilter","ExceptionFilter","settingsStore","SettingsStore","configService","ConfigService","authService","AuthService","jwtService","JwtService","loggerFactory","LoggerFactory","taskManagerService","TaskManagerService","toadScheduler","ToadScheduler","eventEmitter2","configureEventEmitter","serverReleaseService","ServerReleaseService","monsterPiService","MonsterPiService","githubService","GithubService","octokitService","CustomOctoKit","Octokit","plugin","throttling","auth","get","GITHUB_PAT","throttle","onRateLimit","_retryAfter","options","_octokit","_retryCount","logger","warn","method","url","onSecondaryRateLimit","clientBundleService","ClientBundleService","logDumpService","LogDumpService","httpClientFactory","HttpClientFactory","socketIoGateway","SocketIoGateway","multerService","MulterService","yamlService","YamlService","printerLogin","printerApiFactory","PrinterApiFactory","prusaLinkApi","PrusaLinkApi","prusaLinkPollingAdapter","PrusaLinkHttpPollingAdapter","octoprintApi","OctoprintApi","octoprintClient","OctoprintClient","octoPrintSockIoAdapter","OctoprintWebsocketAdapter","moonrakerApi","MoonrakerApi","moonrakerClient","MoonrakerClient","moonrakerWebsocketAdapter","MoonrakerWebsocketAdapter","bambuApi","BambuApi","bambuClient","BambuClient","bambuFtpAdapter","BambuFtpAdapter","bambuMqttAdapter","BambuMqttAdapter","batchCallService","BatchCallService","floorStore","FloorStore","printerThumbnailCache","PrinterThumbnailCache","fileCache","FileCache","fileUploadTrackerCache","FileUploadTrackerCache","printerFilesStore","PrinterFilesStore","printerCache","PrinterCache","printerEventsCache","PrinterEventsCache","printerSocketStore","PrinterSocketStore","testPrinterSocketStore","TestPrinterSocketStore","printJobService","PrintJobService","printQueueService","PrintQueueService","fileStorageService","FileStorageService","fileAnalysisService","FileAnalysisService","printFileDownloaderService","PrintFileDownloaderService","bootTask","BootTask","softwareUpdateTask","SoftwareUpdateTask","socketIoTask","SocketIoTask","clientDistDownloadTask","ClientDistDownloadTask","printerWebsocketTask","PrinterWebsocketTask","printerWebsocketRestoreTask","PrinterWebsocketRestoreTask","printerFilesLoadTask","PrinterFilesLoadTask","printJobAnalysisTask","PrintJobAnalysisTask"],"mappings":"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"}
|
package/dist/container.tokens.js
CHANGED
|
@@ -26,6 +26,7 @@ const DITokens = {
|
|
|
26
26
|
eventEmitter2: "eventEmitter2",
|
|
27
27
|
printerService: "printerService",
|
|
28
28
|
printerTagService: "printerTagService",
|
|
29
|
+
printerMaintenanceLogService: "printerMaintenanceLogService",
|
|
29
30
|
floorPositionService: "floorPositionService",
|
|
30
31
|
printJobService: "printJobService",
|
|
31
32
|
printQueueService: "printQueueService",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/container.tokens.ts"],"names":["DITokens","cradleService","serverVersion","appDefaultRole","appDefaultRoleNoLogin","typeormService","serverHost","exceptionFilter","loggerFactory","httpClientFactory","socketIoGateway","multerService","configService","taskManagerService","toadScheduler","eventEmitter2","printerService","printerTagService","floorPositionService","printJobService","printQueueService","fileStorageService","fileAnalysisService","printFileDownloaderService","floorService","yamlService","settingsService","serverReleaseService","monsterPiService","githubService","octokitService","clientBundleService","logDumpService","userTokenService","authService","refreshTokenService","userService","userRoleService","permissionService","jwtService","roleService","prusaLinkApi","octoprintApi","octoprintClient","moonrakerApi","moonrakerClient","bambuApi","bambuClient","bambuFtpAdapter","bambuMqttAdapter","cameraStreamService","socketFactory","printerApiFactory","printerLogin","batchCallService","influxDbV2BaseService","systemInfoBundleService","floorStore","settingsStore","printerSocketStore","testPrinterSocketStore","printerFilesStore","prusaLinkPollingAdapter","octoPrintSockIoAdapter","moonrakerWebsocketAdapter","printerCache","printerEventsCache","printerThumbnailCache","fileCache","fileUploadTrackerCache","bootTask","softwareUpdateTask","clientDistDownloadTask","socketIoTask","printerWebsocketTask","printerWebsocketRestoreTask","printerFilesLoadTask","printJobAnalysisTask"],"mappings":";;;;+BAAaA;;;eAAAA;;;AAAN,MAAMA,WAAW;IACtBC,eAAe;IAEfC,eAAe;IACfC,gBAAgB;IAChBC,uBAAuB;IACvBC,gBAAgB;IAEhBC,YAAY;IACZC,iBAAiB;IACjBC,eAAe;IACfC,mBAAmB;IACnBC,iBAAiB;IACjBC,eAAe;IACfC,eAAe;IACfC,oBAAoB;IACpBC,eAAe;IACfC,eAAe;IACfC,gBAAgB;IAChBC,mBAAmB;IACnBC,sBAAsB;IACtBC,iBAAiB;IACjBC,mBAAmB;IACnBC,oBAAoB;IACpBC,qBAAqB;IACrBC,4BAA4B;IAC5BC,cAAc;IACdC,aAAa;IACbC,iBAAiB;IACjBC,sBAAsB;IACtBC,kBAAkB;IAClBC,eAAe;IACfC,gBAAgB;IAChBC,qBAAqB;IACrBC,gBAAgB;IAChBC,kBAAkB;IAClBC,aAAa;IACbC,qBAAqB;IACrBC,aAAa;IACbC,iBAAiB;IACjBC,mBAAmB;IACnBC,YAAY;IACZC,aAAa;IACbC,cAAc;IACdC,cAAc;IACdC,iBAAiB;IACjBC,cAAc;IACdC,iBAAiB;IACjBC,UAAU;IACVC,aAAa;IACbC,iBAAiB;IACjBC,kBAAkB;IAClBC,qBAAqB;IACrBC,eAAe;IACfC,mBAAmB;IACnBC,cAAc;IACdC,kBAAkB;IAClBC,uBAAuB;IACvBC,yBAAyB;IAEzBC,YAAY;IACZC,eAAe;IACfC,oBAAoB;IACpBC,wBAAwB;IACxBC,mBAAmB;IACnBC,yBAAyB;IACzBC,wBAAwB;IACxBC,2BAA2B;IAE3BC,cAAc;IACdC,oBAAoB;IACpBC,uBAAuB;IACvBC,WAAW;IACXC,wBAAwB;IAExBC,UAAU;IACVC,oBAAoB;IACpBC,wBAAwB;IACxBC,cAAc;IACdC,sBAAsB;IACtBC,6BAA6B;IAC7BC,sBAAsB;IACtBC,sBAAsB;AACxB"}
|
|
1
|
+
{"version":3,"sources":["../src/container.tokens.ts"],"names":["DITokens","cradleService","serverVersion","appDefaultRole","appDefaultRoleNoLogin","typeormService","serverHost","exceptionFilter","loggerFactory","httpClientFactory","socketIoGateway","multerService","configService","taskManagerService","toadScheduler","eventEmitter2","printerService","printerTagService","printerMaintenanceLogService","floorPositionService","printJobService","printQueueService","fileStorageService","fileAnalysisService","printFileDownloaderService","floorService","yamlService","settingsService","serverReleaseService","monsterPiService","githubService","octokitService","clientBundleService","logDumpService","userTokenService","authService","refreshTokenService","userService","userRoleService","permissionService","jwtService","roleService","prusaLinkApi","octoprintApi","octoprintClient","moonrakerApi","moonrakerClient","bambuApi","bambuClient","bambuFtpAdapter","bambuMqttAdapter","cameraStreamService","socketFactory","printerApiFactory","printerLogin","batchCallService","influxDbV2BaseService","systemInfoBundleService","floorStore","settingsStore","printerSocketStore","testPrinterSocketStore","printerFilesStore","prusaLinkPollingAdapter","octoPrintSockIoAdapter","moonrakerWebsocketAdapter","printerCache","printerEventsCache","printerThumbnailCache","fileCache","fileUploadTrackerCache","bootTask","softwareUpdateTask","clientDistDownloadTask","socketIoTask","printerWebsocketTask","printerWebsocketRestoreTask","printerFilesLoadTask","printJobAnalysisTask"],"mappings":";;;;+BAAaA;;;eAAAA;;;AAAN,MAAMA,WAAW;IACtBC,eAAe;IAEfC,eAAe;IACfC,gBAAgB;IAChBC,uBAAuB;IACvBC,gBAAgB;IAEhBC,YAAY;IACZC,iBAAiB;IACjBC,eAAe;IACfC,mBAAmB;IACnBC,iBAAiB;IACjBC,eAAe;IACfC,eAAe;IACfC,oBAAoB;IACpBC,eAAe;IACfC,eAAe;IACfC,gBAAgB;IAChBC,mBAAmB;IACnBC,8BAA8B;IAC9BC,sBAAsB;IACtBC,iBAAiB;IACjBC,mBAAmB;IACnBC,oBAAoB;IACpBC,qBAAqB;IACrBC,4BAA4B;IAC5BC,cAAc;IACdC,aAAa;IACbC,iBAAiB;IACjBC,sBAAsB;IACtBC,kBAAkB;IAClBC,eAAe;IACfC,gBAAgB;IAChBC,qBAAqB;IACrBC,gBAAgB;IAChBC,kBAAkB;IAClBC,aAAa;IACbC,qBAAqB;IACrBC,aAAa;IACbC,iBAAiB;IACjBC,mBAAmB;IACnBC,YAAY;IACZC,aAAa;IACbC,cAAc;IACdC,cAAc;IACdC,iBAAiB;IACjBC,cAAc;IACdC,iBAAiB;IACjBC,UAAU;IACVC,aAAa;IACbC,iBAAiB;IACjBC,kBAAkB;IAClBC,qBAAqB;IACrBC,eAAe;IACfC,mBAAmB;IACnBC,cAAc;IACdC,kBAAkB;IAClBC,uBAAuB;IACvBC,yBAAyB;IAEzBC,YAAY;IACZC,eAAe;IACfC,oBAAoB;IACpBC,wBAAwB;IACxBC,mBAAmB;IACnBC,yBAAyB;IACzBC,wBAAwB;IACxBC,2BAA2B;IAE3BC,cAAc;IACdC,oBAAoB;IACpBC,uBAAuB;IACvBC,WAAW;IACXC,wBAAwB;IAExBC,UAAU;IACVC,oBAAoB;IACpBC,wBAAwB;IACxBC,cAAc;IACdC,sBAAsB;IACtBC,6BAA6B;IAC7BC,sBAAsB;IACtBC,sBAAsB;AACxB"}
|
|
@@ -16,6 +16,9 @@ const _authorizationconstants = require("../constants/authorization.constants");
|
|
|
16
16
|
const _filestorageservice = require("../services/file-storage.service");
|
|
17
17
|
const _multerservice = require("../services/core/multer.service");
|
|
18
18
|
const _loggerfactory = require("../handlers/logger-factory");
|
|
19
|
+
const _fileanalysisservice = require("../services/file-analysis.service");
|
|
20
|
+
const _nodefs = require("node:fs");
|
|
21
|
+
const _nodepath = require("node:path");
|
|
19
22
|
function _ts_decorate(decorators, target, key, desc) {
|
|
20
23
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
21
24
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -28,10 +31,12 @@ function _ts_metadata(k, v) {
|
|
|
28
31
|
class FileStorageController {
|
|
29
32
|
fileStorageService;
|
|
30
33
|
multerService;
|
|
34
|
+
fileAnalysisService;
|
|
31
35
|
logger;
|
|
32
|
-
constructor(loggerFactory, fileStorageService, multerService){
|
|
36
|
+
constructor(loggerFactory, fileStorageService, multerService, fileAnalysisService){
|
|
33
37
|
this.fileStorageService = fileStorageService;
|
|
34
38
|
this.multerService = multerService;
|
|
39
|
+
this.fileAnalysisService = fileAnalysisService;
|
|
35
40
|
this.logger = loggerFactory(FileStorageController.name);
|
|
36
41
|
}
|
|
37
42
|
async listFiles(req, res) {
|
|
@@ -102,10 +107,49 @@ class FileStorageController {
|
|
|
102
107
|
});
|
|
103
108
|
}
|
|
104
109
|
}
|
|
110
|
+
async analyzeFile(req, res) {
|
|
111
|
+
const { fileStorageId } = req.params;
|
|
112
|
+
try {
|
|
113
|
+
const filePath = this.fileStorageService.getFilePath(fileStorageId);
|
|
114
|
+
const fileExists = await this.fileStorageService.fileExists(fileStorageId);
|
|
115
|
+
if (!fileExists) {
|
|
116
|
+
res.status(404).send({
|
|
117
|
+
error: "File not found"
|
|
118
|
+
});
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
this.logger.log(`Analyzing file: ${fileStorageId}`);
|
|
122
|
+
const existingMetadata = await this.fileStorageService.loadMetadata(fileStorageId);
|
|
123
|
+
const analysisResult = await this.fileAnalysisService.analyzeFile(filePath);
|
|
124
|
+
const metadata = analysisResult.metadata;
|
|
125
|
+
const thumbnails = analysisResult.thumbnails;
|
|
126
|
+
this.logger.log(`Analysis complete for ${fileStorageId}: format=${metadata.fileFormat}, layers=${metadata.totalLayers}, time=${metadata.gcodePrintTimeSeconds}s, thumbnails=${thumbnails.length}`);
|
|
127
|
+
const fileHash = await this.fileStorageService.calculateFileHash(filePath);
|
|
128
|
+
const originalFileName = existingMetadata?._originalFileName || fileStorageId;
|
|
129
|
+
metadata.fileName = originalFileName;
|
|
130
|
+
let thumbnailMetadata = [];
|
|
131
|
+
if (thumbnails.length > 0) {
|
|
132
|
+
thumbnailMetadata = await this.fileStorageService.saveThumbnails(fileStorageId, thumbnails);
|
|
133
|
+
this.logger.log(`Saved ${thumbnailMetadata.length} thumbnails for ${fileStorageId}`);
|
|
134
|
+
}
|
|
135
|
+
await this.fileStorageService.saveMetadata(fileStorageId, metadata, fileHash, originalFileName, thumbnailMetadata);
|
|
136
|
+
res.send({
|
|
137
|
+
message: "File analyzed successfully",
|
|
138
|
+
fileStorageId,
|
|
139
|
+
metadata,
|
|
140
|
+
thumbnailCount: thumbnails.length
|
|
141
|
+
});
|
|
142
|
+
} catch (error) {
|
|
143
|
+
this.logger.error(`Failed to analyze file ${fileStorageId}: ${error}`);
|
|
144
|
+
res.status(500).send({
|
|
145
|
+
error: `Failed to analyze file: ${error}`
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
105
149
|
async getThumbnail(req, res) {
|
|
106
150
|
const { fileStorageId, index } = req.params;
|
|
107
|
-
const thumbnailIndex = parseInt(index);
|
|
108
|
-
if (isNaN(thumbnailIndex)) {
|
|
151
|
+
const thumbnailIndex = Number.parseInt(index);
|
|
152
|
+
if (Number.isNaN(thumbnailIndex)) {
|
|
109
153
|
res.status(400).send({
|
|
110
154
|
error: "Invalid thumbnail index"
|
|
111
155
|
});
|
|
@@ -119,7 +163,6 @@ class FileStorageController {
|
|
|
119
163
|
});
|
|
120
164
|
return;
|
|
121
165
|
}
|
|
122
|
-
const isPNG = thumbnail[0] === 0x89 && thumbnail[1] === 0x50 && thumbnail[2] === 0x4E && thumbnail[3] === 0x47;
|
|
123
166
|
const isJPG = thumbnail[0] === 0xFF && thumbnail[1] === 0xD8;
|
|
124
167
|
let contentType = 'image/png';
|
|
125
168
|
if (isJPG) contentType = 'image/jpeg';
|
|
@@ -155,22 +198,39 @@ class FileStorageController {
|
|
|
155
198
|
return;
|
|
156
199
|
}
|
|
157
200
|
const file = files[0];
|
|
158
|
-
const
|
|
159
|
-
const
|
|
160
|
-
this.logger.log(`Uploaded file ${file.originalname} as ${fileStorageId}`);
|
|
201
|
+
const ext = (0, _nodepath.extname)(file.originalname);
|
|
202
|
+
const tempPathWithExt = file.path + ext;
|
|
161
203
|
try {
|
|
162
|
-
|
|
163
|
-
this.
|
|
164
|
-
|
|
165
|
-
this.
|
|
204
|
+
(0, _nodefs.copyFileSync)(file.path, tempPathWithExt);
|
|
205
|
+
const fileHash = await this.fileStorageService.calculateFileHash(tempPathWithExt);
|
|
206
|
+
this.logger.log(`Analyzing file: ${file.originalname} (ext: ${ext})`);
|
|
207
|
+
const analysisResult = await this.fileAnalysisService.analyzeFile(tempPathWithExt);
|
|
208
|
+
const metadata = analysisResult.metadata;
|
|
209
|
+
const thumbnails = analysisResult.thumbnails;
|
|
210
|
+
this.logger.log(`Analysis complete: format=${metadata.fileFormat}, layers=${metadata.totalLayers}, ` + `time=${metadata.gcodePrintTimeSeconds}s, filament=${metadata.filamentUsedGrams}g, ` + `thumbnails=${thumbnails.length}`);
|
|
211
|
+
const fileStorageId = await this.fileStorageService.saveFile(file, fileHash);
|
|
212
|
+
this.logger.log(`Uploaded file ${file.originalname} as ${fileStorageId}`);
|
|
213
|
+
let thumbnailMetadata = [];
|
|
214
|
+
if (thumbnails.length > 0) {
|
|
215
|
+
thumbnailMetadata = await this.fileStorageService.saveThumbnails(fileStorageId, thumbnails);
|
|
216
|
+
this.logger.log(`Saved ${thumbnailMetadata.length} thumbnail(s) for ${fileStorageId}`);
|
|
217
|
+
}
|
|
218
|
+
await this.fileStorageService.saveMetadata(fileStorageId, metadata, fileHash, file.originalname, thumbnailMetadata);
|
|
219
|
+
this.logger.log(`Saved metadata JSON for ${fileStorageId}`);
|
|
220
|
+
res.send({
|
|
221
|
+
message: "File uploaded successfully",
|
|
222
|
+
fileStorageId,
|
|
223
|
+
fileName: file.originalname,
|
|
224
|
+
fileSize: file.size,
|
|
225
|
+
fileHash,
|
|
226
|
+
metadata,
|
|
227
|
+
thumbnailCount: thumbnails.length
|
|
228
|
+
});
|
|
229
|
+
} finally{
|
|
230
|
+
if ((0, _nodefs.existsSync)(tempPathWithExt)) {
|
|
231
|
+
(0, _nodefs.unlinkSync)(tempPathWithExt);
|
|
232
|
+
}
|
|
166
233
|
}
|
|
167
|
-
res.send({
|
|
168
|
-
message: "File uploaded successfully",
|
|
169
|
-
fileStorageId,
|
|
170
|
-
fileName: file.originalname,
|
|
171
|
-
fileSize: file.size,
|
|
172
|
-
fileHash
|
|
173
|
-
});
|
|
174
234
|
} catch (error) {
|
|
175
235
|
this.logger.error(`Failed to upload file: ${error}`);
|
|
176
236
|
res.status(500).send({
|
|
@@ -208,6 +268,16 @@ _ts_decorate([
|
|
|
208
268
|
]),
|
|
209
269
|
_ts_metadata("design:returntype", Promise)
|
|
210
270
|
], FileStorageController.prototype, "deleteFile", null);
|
|
271
|
+
_ts_decorate([
|
|
272
|
+
(0, _awilixexpress.POST)(),
|
|
273
|
+
(0, _awilixexpress.route)("/:fileStorageId/analyze"),
|
|
274
|
+
_ts_metadata("design:type", Function),
|
|
275
|
+
_ts_metadata("design:paramtypes", [
|
|
276
|
+
typeof _express.Request === "undefined" ? Object : _express.Request,
|
|
277
|
+
typeof _express.Response === "undefined" ? Object : _express.Response
|
|
278
|
+
]),
|
|
279
|
+
_ts_metadata("design:returntype", Promise)
|
|
280
|
+
], FileStorageController.prototype, "analyzeFile", null);
|
|
211
281
|
_ts_decorate([
|
|
212
282
|
(0, _awilixexpress.GET)(),
|
|
213
283
|
(0, _awilixexpress.route)("/:fileStorageId/thumbnail/:index"),
|
|
@@ -241,7 +311,8 @@ FileStorageController = _ts_decorate([
|
|
|
241
311
|
_ts_metadata("design:paramtypes", [
|
|
242
312
|
typeof _loggerfactory.ILoggerFactory === "undefined" ? Object : _loggerfactory.ILoggerFactory,
|
|
243
313
|
typeof _filestorageservice.FileStorageService === "undefined" ? Object : _filestorageservice.FileStorageService,
|
|
244
|
-
typeof _multerservice.MulterService === "undefined" ? Object : _multerservice.MulterService
|
|
314
|
+
typeof _multerservice.MulterService === "undefined" ? Object : _multerservice.MulterService,
|
|
315
|
+
typeof _fileanalysisservice.FileAnalysisService === "undefined" ? Object : _fileanalysisservice.FileAnalysisService
|
|
245
316
|
])
|
|
246
317
|
], FileStorageController);
|
|
247
318
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/controllers/file-storage.controller.ts"],"names":["FileStorageController","logger","loggerFactory","fileStorageService","multerService","name","listFiles","req","res","files","listAllFiles","send","map","file","fileStorageId","fileName","fileFormat","fileSize","fileHash","createdAt","thumbnailCount","thumbnailsUrl","metadata","totalCount","length","error","status","getFileMetadata","params","getFileInfo","deleteFile","log","message","getThumbnail","index","thumbnailIndex","parseInt","isNaN","thumbnail","
|
|
1
|
+
{"version":3,"sources":["../../src/controllers/file-storage.controller.ts"],"names":["FileStorageController","logger","loggerFactory","fileStorageService","multerService","fileAnalysisService","name","listFiles","req","res","files","listAllFiles","send","map","file","fileStorageId","fileName","fileFormat","fileSize","fileHash","createdAt","thumbnailCount","thumbnailsUrl","metadata","totalCount","length","error","status","getFileMetadata","params","getFileInfo","deleteFile","log","message","analyzeFile","filePath","getFilePath","fileExists","existingMetadata","loadMetadata","analysisResult","thumbnails","totalLayers","gcodePrintTimeSeconds","calculateFileHash","originalFileName","_originalFileName","thumbnailMetadata","saveThumbnails","saveMetadata","getThumbnail","index","thumbnailIndex","Number","parseInt","isNaN","thumbnail","isJPG","contentType","setHeader","uploadFile","acceptedExtensions","multerLoadFileAsync","ext","extname","originalname","tempPathWithExt","path","copyFileSync","filamentUsedGrams","saveFile","size","existsSync","unlinkSync","AppConstants","apiRoute","authenticate","authorizeRoles","ROLES","ADMIN","OPERATOR"],"mappings":"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"}
|