@fdm-monster/server 1.9.1 → 1.9.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/.yarn/install-state.gz +0 -0
- package/.yarn/releases/{yarn-4.10.3.cjs → yarn-4.12.0.cjs} +300 -300
- package/.yarnrc.yml +1 -1
- package/README.md +3 -2
- package/RELEASE_NOTES.MD +20 -0
- package/dist/consoles/mock-bambu.server.js +305 -0
- package/dist/consoles/mock-bambu.server.js.map +1 -0
- package/dist/constants/server-settings.constants.js +1 -0
- package/dist/constants/server-settings.constants.js.map +1 -1
- package/dist/container.js +8 -0
- package/dist/container.js.map +1 -1
- package/dist/container.tokens.js +4 -0
- package/dist/container.tokens.js.map +1 -1
- package/dist/controllers/first-time-setup.controller.js +33 -2
- package/dist/controllers/first-time-setup.controller.js.map +1 -1
- package/dist/controllers/server-private.controller.js +10 -10
- package/dist/controllers/server-private.controller.js.map +1 -1
- package/dist/controllers/server-public.controller.js +4 -0
- package/dist/controllers/server-public.controller.js.map +1 -1
- package/dist/controllers/settings.controller.js +22 -0
- package/dist/controllers/settings.controller.js.map +1 -1
- package/dist/entities/settings.entity.js.map +1 -1
- package/dist/middleware/global.middleware.js +1 -0
- package/dist/middleware/global.middleware.js.map +1 -1
- package/dist/middleware/printer.js +11 -0
- package/dist/middleware/printer.js.map +1 -1
- package/dist/models/Settings.js +5 -0
- package/dist/models/Settings.js.map +1 -1
- package/dist/server.constants.js +1 -8
- package/dist/server.constants.js.map +1 -1
- package/dist/services/bambu/bambu-ftp.adapter.js +204 -0
- package/dist/services/bambu/bambu-ftp.adapter.js.map +1 -0
- package/dist/services/bambu/bambu-mqtt.adapter.js +387 -0
- package/dist/services/bambu/bambu-mqtt.adapter.js.map +1 -0
- package/dist/services/bambu/bambu.client.js +67 -0
- package/dist/services/bambu/bambu.client.js.map +1 -0
- package/dist/services/bambu/mqtt-message.types.js +6 -0
- package/dist/services/bambu/mqtt-message.types.js.map +1 -0
- package/dist/services/bambu.api.js +221 -0
- package/dist/services/bambu.api.js.map +1 -0
- package/dist/services/core/yaml.service.js +123 -37
- package/dist/services/core/yaml.service.js.map +1 -1
- package/dist/services/interfaces/printer.dto.js.map +1 -1
- package/dist/services/interfaces/settings.dto.js.map +1 -1
- package/dist/services/mongoose/floor.service.js +1 -1
- package/dist/services/mongoose/floor.service.js.map +1 -1
- package/dist/services/mongoose/settings.service.js.map +1 -1
- package/dist/services/mongoose/user.service.js +7 -0
- package/dist/services/mongoose/user.service.js.map +1 -1
- package/dist/services/orm/floor.service.js +1 -1
- package/dist/services/orm/settings.service.js +0 -4
- package/dist/services/orm/settings.service.js.map +1 -1
- package/dist/services/orm/user.service.js +8 -0
- package/dist/services/orm/user.service.js.map +1 -1
- package/dist/services/printer-api.factory.js +7 -1
- package/dist/services/printer-api.factory.js.map +1 -1
- package/dist/services/printer-api.interface.js +5 -0
- package/dist/services/printer-api.interface.js.map +1 -1
- package/dist/services/socket.factory.js +3 -0
- package/dist/services/socket.factory.js.map +1 -1
- package/dist/services/validators/printer-service.validation.js +1 -1
- package/dist/services/validators/printer-service.validation.js.map +1 -1
- package/dist/services/validators/settings-service.validation.js +8 -1
- package/dist/services/validators/settings-service.validation.js.map +1 -1
- package/dist/services/validators/yaml-service.validation.js +27 -1
- package/dist/services/validators/yaml-service.validation.js.map +1 -1
- package/dist/shared/runtime-settings.migration.js +1 -0
- package/dist/shared/runtime-settings.migration.js.map +1 -1
- package/dist/state/printer-events.cache.js +13 -0
- package/dist/state/printer-events.cache.js.map +1 -1
- package/dist/state/settings.store.js +13 -4
- package/dist/state/settings.store.js.map +1 -1
- package/package.json +34 -27
- package/dist/utils/printer-type.utils.js +0 -32
- package/dist/utils/printer-type.utils.js.map +0 -1
|
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "ServerPrivateController", {
|
|
|
8
8
|
return ServerPrivateController;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const
|
|
11
|
+
const _nodestream = require("node:stream");
|
|
12
12
|
const _awilixexpress = require("awilix-express");
|
|
13
13
|
const _authenticate = require("../middleware/authenticate");
|
|
14
14
|
const _serverconstants = require("../server.constants");
|
|
@@ -97,21 +97,21 @@ class ServerPrivateController {
|
|
|
97
97
|
const rateLimitResponse = await this.githubService.getRateLimit();
|
|
98
98
|
res.send(rateLimitResponse.data);
|
|
99
99
|
}
|
|
100
|
-
async
|
|
100
|
+
async importYaml(req, res) {
|
|
101
101
|
const files = await this.multerService.multerLoadFileAsync(req, res, [
|
|
102
102
|
".yaml"
|
|
103
103
|
], false);
|
|
104
104
|
const firstFile = files[0];
|
|
105
|
-
const spec = await this.yamlService.
|
|
105
|
+
const spec = await this.yamlService.importYaml(firstFile.buffer.toString());
|
|
106
106
|
res.send({
|
|
107
107
|
success: true,
|
|
108
108
|
spec
|
|
109
109
|
});
|
|
110
110
|
}
|
|
111
|
-
async
|
|
112
|
-
const yaml = await this.yamlService.
|
|
111
|
+
async exportYaml(req, res) {
|
|
112
|
+
const yaml = await this.yamlService.exportYaml(req.body);
|
|
113
113
|
const fileContents = Buffer.from(yaml);
|
|
114
|
-
const readStream = new
|
|
114
|
+
const readStream = new _nodestream.PassThrough();
|
|
115
115
|
readStream.end(fileContents);
|
|
116
116
|
const fileName = `export-${_serverconstants.AppConstants.serverRepoName}-` + Date.now() + ".yaml";
|
|
117
117
|
res.set("Content-disposition", "attachment; filename=" + fileName);
|
|
@@ -175,24 +175,24 @@ _ts_decorate([
|
|
|
175
175
|
], ServerPrivateController.prototype, "getGithubRateLimit", null);
|
|
176
176
|
_ts_decorate([
|
|
177
177
|
(0, _awilixexpress.POST)(),
|
|
178
|
-
(0, _awilixexpress.route)("/import
|
|
178
|
+
(0, _awilixexpress.route)("/yaml-import"),
|
|
179
179
|
_ts_metadata("design:type", Function),
|
|
180
180
|
_ts_metadata("design:paramtypes", [
|
|
181
181
|
typeof _express.Request === "undefined" ? Object : _express.Request,
|
|
182
182
|
typeof _express.Response === "undefined" ? Object : _express.Response
|
|
183
183
|
]),
|
|
184
184
|
_ts_metadata("design:returntype", Promise)
|
|
185
|
-
], ServerPrivateController.prototype, "
|
|
185
|
+
], ServerPrivateController.prototype, "importYaml", null);
|
|
186
186
|
_ts_decorate([
|
|
187
187
|
(0, _awilixexpress.POST)(),
|
|
188
|
-
(0, _awilixexpress.route)("/export
|
|
188
|
+
(0, _awilixexpress.route)("/yaml-export"),
|
|
189
189
|
_ts_metadata("design:type", Function),
|
|
190
190
|
_ts_metadata("design:paramtypes", [
|
|
191
191
|
typeof _express.Request === "undefined" ? Object : _express.Request,
|
|
192
192
|
typeof _express.Response === "undefined" ? Object : _express.Response
|
|
193
193
|
]),
|
|
194
194
|
_ts_metadata("design:returntype", Promise)
|
|
195
|
-
], ServerPrivateController.prototype, "
|
|
195
|
+
], ServerPrivateController.prototype, "exportYaml", null);
|
|
196
196
|
_ts_decorate([
|
|
197
197
|
(0, _awilixexpress.DELETE)(),
|
|
198
198
|
(0, _awilixexpress.route)("/delete-all-printers"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/controllers/server-private.controller.ts"],"names":["ServerPrivateController","logger","loggerFactory","serverReleaseService","printerCache","printerService","clientBundleService","githubService","logDumpService","yamlService","multerService","name","getReleaseStateInfo","req","res","syncLatestRelease","updateState","getState","send","getClientReleases","_req","releaseSpec","getReleases","updateClientBundleGithub","updateDto","validateMiddleware","updateClientBundleSchema","willExecute","shouldUpdateWithReason","AppConstants","defaultClientMinimum","downloadRelease","allowDowngrade","log","shouldUpdate","reason","executed","requestedVersion","currentVersion","minimumVersion","targetVersion","downloadClientUpdate","getGithubRateLimit","rateLimitResponse","getRateLimit","data","
|
|
1
|
+
{"version":3,"sources":["../../src/controllers/server-private.controller.ts"],"names":["ServerPrivateController","logger","loggerFactory","serverReleaseService","printerCache","printerService","clientBundleService","githubService","logDumpService","yamlService","multerService","name","getReleaseStateInfo","req","res","syncLatestRelease","updateState","getState","send","getClientReleases","_req","releaseSpec","getReleases","updateClientBundleGithub","updateDto","validateMiddleware","updateClientBundleSchema","willExecute","shouldUpdateWithReason","AppConstants","defaultClientMinimum","downloadRelease","allowDowngrade","log","shouldUpdate","reason","executed","requestedVersion","currentVersion","minimumVersion","targetVersion","downloadClientUpdate","getGithubRateLimit","rateLimitResponse","getRateLimit","data","importYaml","files","multerLoadFileAsync","firstFile","spec","buffer","toString","success","exportYaml","yaml","body","fileContents","Buffer","from","readStream","PassThrough","end","fileName","serverRepoName","Date","now","set","pipe","deleteAllPrinters","printers","listCachedPrinters","printerIds","map","p","id","deleteMany","clearLogs","counts","deleteOlderThanWeekAndMismatchingLogFiles","dumpLogZips","filePath","dumpZip","sendFile","apiRoute","authenticate","authorizeRoles","ROLES","ADMIN","demoUserNotAllowed"],"mappings":"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"}
|
|
@@ -54,6 +54,7 @@ class ServerPublicController {
|
|
|
54
54
|
const serverSettings = this.settingsStore.getServerSettings();
|
|
55
55
|
const moonrakerEnabled = serverSettings.experimentalMoonrakerSupport;
|
|
56
56
|
const prusaLinkEnabled = serverSettings.experimentalPrusaLinkSupport;
|
|
57
|
+
const bambuEnabled = serverSettings.experimentalBambuSupport;
|
|
57
58
|
res.send({
|
|
58
59
|
printerGroupsApi: {
|
|
59
60
|
available: this.isTypeormMode,
|
|
@@ -71,6 +72,9 @@ class ServerPublicController {
|
|
|
71
72
|
] : [],
|
|
72
73
|
...prusaLinkEnabled ? [
|
|
73
74
|
"prusaLink"
|
|
75
|
+
] : [],
|
|
76
|
+
...bambuEnabled ? [
|
|
77
|
+
"bambu"
|
|
74
78
|
] : []
|
|
75
79
|
]
|
|
76
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/controllers/server-public.controller.ts"],"names":["ServerPublicController","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;;;;;;IACX,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;
|
|
1
|
+
{"version":3,"sources":["../../src/controllers/server-public.controller.ts"],"names":["ServerPublicController","settingsStore","serverVersion","serverReleaseService","monsterPiService","isTypeormMode","welcome","req","res","getSettings","getLoginRequired","send","message","getFeatures","serverSettings","getServerSettings","moonrakerEnabled","experimentalMoonrakerSupport","prusaLinkEnabled","experimentalPrusaLinkSupport","bambuEnabled","experimentalBambuSupport","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;;;;;;IACX,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;QACpE,MAAMC,eAAeN,eAAeO,wBAAwB;QAC5Db,IAAIG,IAAI,CAAC;YACPW,kBAAkB;gBAEhBC,WAAW,IAAI,CAAClB,aAAa;gBAC7BmB,SAAS;gBACTC,aAAa,CAAC;YAChB;YACAC,yBAAyB;gBACvBH,WAAW;gBACXC,SAAS;gBACTC,aAAa;oBACXE,OAAO;wBACL;2BACIX,mBAAmB;4BAAC;yBAAU,GAAG,EAAE;2BACnCE,mBAAmB;4BAAC;yBAAY,GAAG,EAAE;2BACrCE,eAAe;4BAAC;yBAAQ,GAAG,EAAE;qBAClC;gBACH;YACF;QACF;IACF;IAEA,MAGMQ,WAAWrB,GAAY,EAAEC,GAAa,EAAE;QAC5C,MAAMqB,cAAc,IAAI,CAAC1B,oBAAoB,CAAC2B,QAAQ;QACtD,MAAMC,mBAAmB,IAAI,CAAC3B,gBAAgB,CAAC4B,uBAAuB;QAEtExB,IAAIyB,IAAI,CAAC;YACPT,SAAS,IAAI,CAACtB,aAAa;YAC3BgC,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,KAAKrC,GAAY,EAAEC,GAAa,EAAE;QACtCA,IAAIG,IAAI,CAAC;YACPC,SAAS;QACX;IACF;AACF;;;;;QAxEWiC,IAAAA,0BAAY;QAAIC,IAAAA,wBAAU,EAACC,6BAAK,CAACC,UAAU,CAACC,GAAG;;;;;;;;;;;;;QAiB/CJ,IAAAA,0BAAY;;;;;;;;;;;;;QA8BZA,IAAAA,0BAAY;QAAIC,IAAAA,wBAAU,EAACC,6BAAK,CAACC,UAAU,CAACC,GAAG;;;;;;;;;;;;;;;;;;;;4DA5DtCC"}
|
|
@@ -96,6 +96,18 @@ class SettingsController {
|
|
|
96
96
|
}
|
|
97
97
|
res.send(result);
|
|
98
98
|
}
|
|
99
|
+
async updateBambuSupport(req, res) {
|
|
100
|
+
const { enabled } = await (0, _validators.validateInput)(req.body, _settingsservicevalidation.bambuSupportSchema);
|
|
101
|
+
const result = await this.settingsStore.setExperimentalBambuSupport(enabled);
|
|
102
|
+
if (!enabled) {
|
|
103
|
+
const printers = await this.printerCache.listCachedPrinters(false);
|
|
104
|
+
const bambuPrinters = printers.filter((p)=>p.printerType === _printerapiinterface.BambuType);
|
|
105
|
+
for (const printer of bambuPrinters){
|
|
106
|
+
await this.printerService.updateEnabled(printer.id, false);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
res.send(result);
|
|
110
|
+
}
|
|
99
111
|
async updateThumbnailSupport(req, res) {
|
|
100
112
|
const { enabled } = await (0, _validators.validateInput)(req.body, _settingsservicevalidation.thumbnailSupportSchema);
|
|
101
113
|
const result = await this.settingsStore.setExperimentalThumbnailSupport(enabled);
|
|
@@ -213,6 +225,16 @@ _ts_decorate([
|
|
|
213
225
|
]),
|
|
214
226
|
_ts_metadata("design:returntype", Promise)
|
|
215
227
|
], SettingsController.prototype, "updatePrusaLinkSupport", null);
|
|
228
|
+
_ts_decorate([
|
|
229
|
+
(0, _awilixexpress.PUT)(),
|
|
230
|
+
(0, _awilixexpress.route)("/experimental-bambu-support"),
|
|
231
|
+
_ts_metadata("design:type", Function),
|
|
232
|
+
_ts_metadata("design:paramtypes", [
|
|
233
|
+
typeof _express.Request === "undefined" ? Object : _express.Request,
|
|
234
|
+
typeof _express.Response === "undefined" ? Object : _express.Response
|
|
235
|
+
]),
|
|
236
|
+
_ts_metadata("design:returntype", Promise)
|
|
237
|
+
], SettingsController.prototype, "updateBambuSupport", null);
|
|
216
238
|
_ts_decorate([
|
|
217
239
|
(0, _awilixexpress.PUT)(),
|
|
218
240
|
(0, _awilixexpress.route)("/experimental-thumbnail-support"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/controllers/settings.controller.ts"],"names":["SettingsController","logger","loggerFactory","serverVersion","printerCache","printerService","settingsStore","printerThumbnailCache","name","getSettings","req","res","connection","clientIp","socket","remoteAddress","version","e","warn","settings","send","getSettingsSensitive","updateSentryDiagnosticsEnabled","enabled","validateInput","body","sentryDiagnosticsEnabledSchema","result","setSentryDiagnosticsEnabled","updateMoonrakerSupport","moonrakerSupportSchema","setExperimentalMoonrakerSupport","printers","listCachedPrinters","klipperPrinters","filter","p","printerType","MoonrakerType","printer","updateEnabled","id","updatePrusaLinkSupport","prusaLinkSupportSchema","setExperimentalPrusaLinkSupport","prusaLinkPrinters","PrusaLinkType","updateThumbnailSupport","thumbnailSupportSchema","setExperimentalThumbnailSupport","loadCache","resetCache","updateClientSupport","clientNextSchema","setExperimentalClientSupport","updateFrontendSettings","validatedInput","frontendSettingsUpdateSchema","updateLoginRequiredSettings","loginRequired","loginRequiredSchema","setLoginRequired","updateRegistrationEnabledSettings","registrationEnabled","registrationEnabledSchema","setRegistrationEnabled","updateCredentialSettings","credentialSettingUpdateSchema","updateFileCleanSettings","fileCleanSettingsUpdateSchema","updateTimeoutSettings","timeoutSettingsUpdateSchema","authorizeRoles","ROLES","ADMIN","demoUserNotAllowed","AppConstants","apiRoute","authenticate"],"mappings":";;;;+
|
|
1
|
+
{"version":3,"sources":["../../src/controllers/settings.controller.ts"],"names":["SettingsController","logger","loggerFactory","serverVersion","printerCache","printerService","settingsStore","printerThumbnailCache","name","getSettings","req","res","connection","clientIp","socket","remoteAddress","version","e","warn","settings","send","getSettingsSensitive","updateSentryDiagnosticsEnabled","enabled","validateInput","body","sentryDiagnosticsEnabledSchema","result","setSentryDiagnosticsEnabled","updateMoonrakerSupport","moonrakerSupportSchema","setExperimentalMoonrakerSupport","printers","listCachedPrinters","klipperPrinters","filter","p","printerType","MoonrakerType","printer","updateEnabled","id","updatePrusaLinkSupport","prusaLinkSupportSchema","setExperimentalPrusaLinkSupport","prusaLinkPrinters","PrusaLinkType","updateBambuSupport","bambuSupportSchema","setExperimentalBambuSupport","bambuPrinters","BambuType","updateThumbnailSupport","thumbnailSupportSchema","setExperimentalThumbnailSupport","loadCache","resetCache","updateClientSupport","clientNextSchema","setExperimentalClientSupport","updateFrontendSettings","validatedInput","frontendSettingsUpdateSchema","updateLoginRequiredSettings","loginRequired","loginRequiredSchema","setLoginRequired","updateRegistrationEnabledSettings","registrationEnabled","registrationEnabledSchema","setRegistrationEnabled","updateCredentialSettings","credentialSettingUpdateSchema","updateFileCleanSettings","fileCleanSettingsUpdateSchema","updateTimeoutSettings","timeoutSettingsUpdateSchema","authorizeRoles","ROLES","ADMIN","demoUserNotAllowed","AppConstants","apiRoute","authenticate"],"mappings":"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"}
|
|
@@ -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,
|
|
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,MAYA,OAQA,OAOA,OAOA,OAQA;AA1CA,OAACC,0CAAiB;AAYlB,QAACC,8CAAqB;AAQtB,QAACC,yCAAgB;AAOjB,QAACC,mDAA0B;AAO3B,QAACC,2CAAkB;AAQnB,QAACC,0CAAiB;AA/Cb,MAAMN;IAEXO,GAAW;IAGX,CAAA,KAAmB,CASjB;IAGF,CAAA,MAAuB,CAKrB;IAGF,CAAA,MAAkB,CAIhB;IAGF,CAAA,MAA4B,CAI1B;IAGF,CAAA,MAAoB,CAKlB;IAGF,CAAA,MAAmB,CAGjB;AACJ;;;;;;;QA/CYC,MAAM;QAAeC,UAAU;;;uBACzC;;;QAWUD,MAAM;QAAeC,UAAU;;;uBACzC;;;QAOUD,MAAM;QAAeC,UAAU;;;uBACzC;;;QAMUD,MAAM;QAAeC,UAAU;;;uBACzC;;;QAMUD,MAAM;QAAeC,UAAU;;;uBACzC;;;QAOUD,MAAM;QAAeC,UAAU;;;uBACzC"}
|
|
@@ -28,6 +28,7 @@ const validateWizardCompleted = (0, _awilixexpress.inject)((configService, setti
|
|
|
28
28
|
const allowedPaths = [
|
|
29
29
|
"/api/first-time-setup/complete",
|
|
30
30
|
"/api/first-time-setup/validate",
|
|
31
|
+
"/api/first-time-setup/yaml-import",
|
|
31
32
|
"/api/test",
|
|
32
33
|
"/api/auth/login-required"
|
|
33
34
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/middleware/global.middleware.ts"],"names":["interceptRoles","validateWizardCompleted","inject","configService","settingsStore","loggerFactory","req","res","next","logger","name","isDemoMode","getWizardSettings","wizardCompleted","allowedPaths","includes","path","startsWith","error","ForbiddenError","join","roleService","isTypeormMode","serverSettings","getSettings","roles","user","map","r","roleId","roleName","getAppDefaultRole"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../src/middleware/global.middleware.ts"],"names":["interceptRoles","validateWizardCompleted","inject","configService","settingsStore","loggerFactory","req","res","next","logger","name","isDemoMode","getWizardSettings","wizardCompleted","allowedPaths","includes","path","startsWith","error","ForbiddenError","join","roleService","isTypeormMode","serverSettings","getSettings","roles","user","map","r","roleId","roleName","getAppDefaultRole"],"mappings":";;;;;;;;;;;QAuCaA;eAAAA;;QA7BAC;eAAAA;;;+BAVU;mCACQ;AASxB,MAAMA,0BAA0BC,IAAAA,qBAAM,EAC3C,CAACC,eAA+BC,eAA8BC,gBAC5D,OAAOC,KAAcC,KAAeC;QAClC,MAAMC,SAASJ,cAAcJ,wBAAwBS,IAAI;QACzD,MAAMC,aAAaR,cAAcQ,UAAU;QAC3C,IAAIA,cAAc,CAAC,CAACP,cAAcQ,iBAAiB,IAAIC,iBAAiB;YACtEL;YACA;QACF;QAEA,MAAMM,eAAe;YACnB;YACA;YACA;YACA;YACA;SACD;QACD,IAAIA,aAAaC,QAAQ,CAACT,IAAIU,IAAI,KAAK,CAACV,IAAIU,IAAI,CAACC,UAAU,CAAC,SAAS;YACnET;YACA;QACF,OAAO;YACLC,OAAOS,KAAK,CAAC,wBAAwBZ,IAAIU,IAAI;YAC7C,MAAM,IAAIG,iCAAc,CACtB,CAAC,6DAA6D,EAAEL,aAAaM,IAAI,CAAC,OAAO;QAE7F;IACF;AAGG,MAAMpB,iBAAiBE,IAAAA,qBAAM,EAClC,CAACE,eAA8BiB,aAA2BC,gBACxD,OAAOhB,KAAcC,KAAeC;QAClC,MAAMe,iBAAiBnB,cAAcoB,WAAW;QAEhD,IAAIF,eAAe;YACjBhB,IAAImB,KAAK,GAAG,AAACnB,CAAAA,IAAIoB,IAAI,EAAED,SAAuB,EAAE,AAAD,EAAGE,GAAG,CAAC,CAACC,IAAgBA,EAAEC,MAAM;QACjF,OAAO;YACLvB,IAAImB,KAAK,GAAGnB,IAAIoB,IAAI,EAAED;QACxB;QAGA,IAAIF,kBAAkB,CAACjB,IAAIoB,IAAI,EAAE;YAC/B,MAAMI,WAAW,MAAMT,YAAYU,iBAAiB;YACpDzB,IAAImB,KAAK,GAAG;gBAACK;aAAS;QACxB;QAEAtB;IACF"}
|
|
@@ -38,6 +38,7 @@ const printerResolveMiddleware = (key = "id")=>{
|
|
|
38
38
|
const settingsService = req.container.resolve(_containertokens.DITokens.settingsStore);
|
|
39
39
|
const moonrakerEnabled = settingsService.getServerSettings().experimentalMoonrakerSupport;
|
|
40
40
|
const prusaLinkEnabled = settingsService.getServerSettings().experimentalPrusaLinkSupport;
|
|
41
|
+
const bambuEnabled = settingsService.getServerSettings().experimentalBambuSupport;
|
|
41
42
|
let scopedPrinter = undefined;
|
|
42
43
|
let loginDto = undefined;
|
|
43
44
|
const printerId = req.params[key];
|
|
@@ -72,6 +73,16 @@ const printerResolveMiddleware = (key = "id")=>{
|
|
|
72
73
|
req.container.register({
|
|
73
74
|
[printerApiToken]: prusaLinkEnabled ? (0, _awilix.asValue)(prusaLinkInstance) : (0, _awilix.asValue)(undefined)
|
|
74
75
|
});
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
case _printerapiinterface.BambuType:
|
|
79
|
+
{
|
|
80
|
+
const bambuInstance = req.container.resolve(_containertokens.DITokens.bambuApi);
|
|
81
|
+
bambuInstance.setPrinterId(printerId);
|
|
82
|
+
req.container.register({
|
|
83
|
+
[printerApiToken]: bambuEnabled ? (0, _awilix.asValue)(bambuInstance) : (0, _awilix.asValue)(undefined)
|
|
84
|
+
});
|
|
85
|
+
break;
|
|
75
86
|
}
|
|
76
87
|
}
|
|
77
88
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/middleware/printer.ts"],"names":["currentPrinterToken","printerApiToken","printerIdToken","printerLoginToken","printerResolveMiddleware","key","req","res","next","printerCache","container","resolve","DITokens","settingsService","settingsStore","moonrakerEnabled","getServerSettings","experimentalMoonrakerSupport","prusaLinkEnabled","experimentalPrusaLinkSupport","scopedPrinter","undefined","loginDto","printerId","params","getCachedPrinterOrThrow","getLoginDto","register","asValue","printerType","OctoprintType","octoprintApiInstance","octoprintApi","MoonrakerType","moonrakerInstance","moonrakerApi","PrusaLinkType","prusaLinkInstance","prusaLinkApi"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../src/middleware/printer.ts"],"names":["currentPrinterToken","printerApiToken","printerIdToken","printerLoginToken","printerResolveMiddleware","key","req","res","next","printerCache","container","resolve","DITokens","settingsService","settingsStore","moonrakerEnabled","getServerSettings","experimentalMoonrakerSupport","prusaLinkEnabled","experimentalPrusaLinkSupport","bambuEnabled","experimentalBambuSupport","scopedPrinter","undefined","loginDto","printerId","params","getCachedPrinterOrThrow","getLoginDto","register","asValue","printerType","OctoprintType","octoprintApiInstance","octoprintApi","MoonrakerType","moonrakerInstance","moonrakerApi","PrusaLinkType","prusaLinkInstance","prusaLinkApi","BambuType","bambuInstance","bambuApi","setPrinterId"],"mappings":"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"}
|
package/dist/models/Settings.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/models/Settings.ts"],"names":["Settings","SettingsSchema","Schema","wizardSettingKey","wizardCompleted","type","Boolean","default","required","wizardCompletedAt","Date","wizardVersion","Number","printerFileCleanSettingKey","autoRemoveOldFilesBeforeUpload","autoRemoveOldFilesAtBoot","autoRemoveOldFilesCriteriumDays","credentialSettingsKey","jwtSecret","String","minlength","trim","jwtExpiresIn","refreshTokenAttempts","refreshTokenExpiry","serverSettingsKey","sentryDiagnosticsEnabled","loginRequired","registration","experimentalMoonrakerSupport","experimentalClientSupport","experimentalThumbnailSupport","experimentalPrusaLinkSupport","frontendSettingKey","gridCols","gridRows","largeTiles","tilePreferCancelOverQuickStop","timeoutSettingKey","apiTimeout","getDefaultTimeout","apiUploadTimeout","model"],"mappings":";;;;+
|
|
1
|
+
{"version":3,"sources":["../../src/models/Settings.ts"],"names":["Settings","SettingsSchema","Schema","wizardSettingKey","wizardCompleted","type","Boolean","default","required","wizardCompletedAt","Date","wizardVersion","Number","printerFileCleanSettingKey","autoRemoveOldFilesBeforeUpload","autoRemoveOldFilesAtBoot","autoRemoveOldFilesCriteriumDays","credentialSettingsKey","jwtSecret","String","minlength","trim","jwtExpiresIn","refreshTokenAttempts","refreshTokenExpiry","serverSettingsKey","sentryDiagnosticsEnabled","loginRequired","registration","experimentalMoonrakerSupport","experimentalBambuSupport","experimentalClientSupport","experimentalThumbnailSupport","experimentalPrusaLinkSupport","frontendSettingKey","gridCols","gridRows","largeTiles","tilePreferCancelOverQuickStop","timeoutSettingKey","apiTimeout","getDefaultTimeout","apiUploadTimeout","model"],"mappings":";;;;+BAwMaA;;;eAAAA;;;0BAxMiB;yCASvB;AAuDP,MAAMC,iBAAiB,IAAIC,gBAAM,CAAY;IAC3C,CAACC,yCAAgB,CAAC,EAAE;QAClBC,iBAAiB;YACfC,MAAMC;YACNC,SAAS;YACTC,UAAU;QACZ;QACAC,mBAAmB;YACjBJ,MAAMK;YACNH,SAAS;YACTC,UAAU;QACZ;QACAG,eAAe;YACbN,MAAMO;YACNL,SAAS;YACTC,UAAU;QACZ;IACF;IACA,CAACK,mDAA0B,CAAC,EAAE;QAC5BC,gCAAgC;YAC9BT,MAAMC;YACNC,SAAS;YACTC,UAAU;QACZ;QACAO,0BAA0B;YACxBV,MAAMC;YACNC,SAAS;YACTC,UAAU;QACZ;QACAQ,iCAAiC;YAC/BX,MAAMO;YACNL,SAAS;YACTC,UAAU;QACZ;IACF;IACA,CAACS,8CAAqB,CAAC,EAAE;QACvBZ,MAAM;YACJa,WAAW;gBACTb,MAAMc;gBACNC,WAAW;gBACXC,MAAM;gBACNb,UAAU;YACZ;YACAc,cAAc;gBACZjB,MAAMO;gBACNJ,UAAU;YACZ;YACAe,sBAAsB;gBACpBlB,MAAMO;gBACNJ,UAAU;YACZ;YACAgB,oBAAoB;gBAClBnB,MAAMO;gBACNJ,UAAU;YACZ;QACF;QACAA,UAAU;IACZ;IACA,CAACiB,0CAAiB,CAAC,EAAE;QACnBC,0BAA0B;YACxBrB,MAAMC;YACNC,SAAS;YACTC,UAAU;QACZ;QACAmB,eAAe;YACbtB,MAAMC;YACNC,SAAS;YACTC,UAAU;QACZ;QACAoB,cAAc;YACZvB,MAAMC;YACNC,SAAS;YACTC,UAAU;QACZ;QACAqB,8BAA8B;YAC5BxB,MAAMC;YACNC,SAAS;YACTC,UAAU;QACZ;QACAsB,0BAA0B;YACxBzB,MAAMC;YACNC,SAAS;YACTC,UAAU;QACZ;QACAuB,2BAA2B;YACzB1B,MAAMC;YACNC,SAAS;YACTC,UAAU;QACZ;QACAwB,8BAA8B;YAC5B3B,MAAMC;YACNC,SAAS;YACTC,UAAU;QACZ;QACAyB,8BAA8B;YAC5B5B,MAAMC;YACNC,SAAS;YACTC,UAAU;QACZ;IACF;IACA,CAAC0B,2CAAkB,CAAC,EAAE;QACpBC,UAAU;YACR9B,MAAMO;YACNL,SAAS;YACTC,UAAU;QACZ;QACA4B,UAAU;YACR/B,MAAMO;YACNL,SAAS;YACTC,UAAU;QACZ;QACA6B,YAAY;YACVhC,MAAMC;YACNC,SAAS;YACTC,UAAU;QACZ;QACA8B,+BAA+B;YAC7BjC,MAAMC;YACNC,SAAS;YACTC,UAAU;QACZ;IACF;IACA,CAAC+B,0CAAiB,CAAC,EAAE;QACnBC,YAAY;YACVnC,MAAMO;YACNL,SAASkC,IAAAA,0CAAiB,IAAGD,UAAU;YACvChC,UAAU;QACZ;QACAkC,kBAAkB;YAChBrC,MAAMO;YACNL,SAASkC,IAAAA,0CAAiB,IAAGC,gBAAgB;YAC7ClC,UAAU;QACZ;IACF;AACF;AAEO,MAAMR,WAAW2C,IAAAA,eAAK,EAAC,kBAAkB1C"}
|
package/dist/server.constants.js
CHANGED
|
@@ -71,7 +71,7 @@ const AppConstants = {
|
|
|
71
71
|
githubUrl: "https://github.com/fdm-monster/fdm-monster",
|
|
72
72
|
orgName: "fdm-monster",
|
|
73
73
|
currentWizardVersion: 1,
|
|
74
|
-
defaultClientMinimum: "1.
|
|
74
|
+
defaultClientMinimum: "1.12.0",
|
|
75
75
|
influxUrl: "INFLUX_URL",
|
|
76
76
|
influxToken: "INFLUX_TOKEN",
|
|
77
77
|
influxOrg: "INFLUX_ORG",
|
|
@@ -80,13 +80,6 @@ const AppConstants = {
|
|
|
80
80
|
defaultSocketThrottleRate: 1,
|
|
81
81
|
debugSocketStatesKey: "DEBUG_SOCKET_STATES",
|
|
82
82
|
defaultDebugSocketStates: "false",
|
|
83
|
-
enableMqttAutoDiscoveryToken: "ENABLE_MQTT_AUTODISCOVERY",
|
|
84
|
-
enableMqttAutoDiscoveryDefault: "false",
|
|
85
|
-
mqttUrlToken: "MQTT_HOST",
|
|
86
|
-
mqttPortToken: "MQTT_PORT",
|
|
87
|
-
mqttPortDefault: 1883,
|
|
88
|
-
mqttUsernameToken: "MQTT_USERNAME",
|
|
89
|
-
mqttPasswordToken: "MQTT_PASSWORD",
|
|
90
83
|
monsterPiFilePath: "/etc/monsterpi_version",
|
|
91
84
|
sentryCustomDsnToken: "SENTRY_CUSTOM_DSN",
|
|
92
85
|
sentryCustomDsnDefault: "https://164b8028a8a745bba3dbcab991b84ae7@o4503975545733120.ingest.sentry.io/4505101598261248",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server.constants.ts"],"names":["AppConstants","NODE_ENV_KEY","VERSION_KEY","SERVER_PORT_KEY","MONGO_KEY","DATABASE_PATH","DATABASE_FILE","pm2ServiceName","logAppName","defaultFileStorageFolder","defaultLogsFolder","defaultLogZipsFolder","defaultClientBundleStorage","defaultClientBundleZipsStorage","defaultPrinterThumbnailsStorage","defaultFileUploadsStorage","defaultAcceptedGcodeExtensions","defaultServerPort","defaultMongoStringUnauthenticated","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","clientNextPackageName","clientNextRepoName","githubUrl","orgName","currentWizardVersion","defaultClientMinimum","influxUrl","influxToken","influxOrg","influxBucket","defaultWebsocketHandshakeTimeout","defaultSocketThrottleRate","debugSocketStatesKey","defaultDebugSocketStates","
|
|
1
|
+
{"version":3,"sources":["../src/server.constants.ts"],"names":["AppConstants","NODE_ENV_KEY","VERSION_KEY","SERVER_PORT_KEY","MONGO_KEY","DATABASE_PATH","DATABASE_FILE","pm2ServiceName","logAppName","defaultFileStorageFolder","defaultLogsFolder","defaultLogZipsFolder","defaultClientBundleStorage","defaultClientBundleZipsStorage","defaultPrinterThumbnailsStorage","defaultFileUploadsStorage","defaultAcceptedGcodeExtensions","defaultServerPort","defaultMongoStringUnauthenticated","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","clientNextPackageName","clientNextRepoName","githubUrl","orgName","currentWizardVersion","defaultClientMinimum","influxUrl","influxToken","influxOrg","influxBucket","defaultWebsocketHandshakeTimeout","defaultSocketThrottleRate","debugSocketStatesKey","defaultDebugSocketStates","monsterPiFilePath","sentryCustomDsnToken","sentryCustomDsnDefault","debugRoutesKey","ENABLE_EXPERIMENTAL_TYPEORM","enableExperimentalTypeormDefault","ENABLE_PROMETHEUS_METRICS","ENABLE_LOKI_LOGGING","LOKI_ADDRESS","LOKI_TIMEOUT_SECONDS","LOKI_INTERVAL"],"mappings":";;;;+BAAaA;;;eAAAA;;;AAAN,MAAMA,eAAe;IAC1BC,cAAc;IACdC,aAAa;IACbC,iBAAiB;IACjBC,WAAW;IACXC,eAAe;IACfC,eAAe;IAEfC,gBAAgB;IAChBC,YAAY;IAGZC,0BAA0B;IAC1BC,mBAAmB;IACnBC,sBAAsB;IAEtBC,4BAA4B;IAC5BC,gCAAgC;IAChCC,iCAAiC;IACjCC,2BAA2B;IAC3BC,gCAAgC;QAAC;QAAU;KAAU;IACrDC,mBAAmB;IACnBC,mCAAmC;IACnCC,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,uBAAuB;IACvBC,oBAAoB;IACpBC,WAAW;IACXC,SAAS;IAETC,sBAAsB;IACtBC,sBAAsB;IAEtBC,WAAW;IACXC,aAAa;IACbC,WAAW;IACXC,cAAc;IAGdC,kCAAkC;IAClCC,2BAA2B;IAC3BC,sBAAsB;IACtBC,0BAA0B;IAG1BC,mBAAmB;IAGnBC,sBAAsB;IACtBC,wBACE;IAEFC,gBAAgB;IAEhBC,6BAA6B;IAC7BC,kCAAkC;IAClCC,2BAA2B;IAC3BC,qBAAqB;IACrBC,cAAc;IACdC,sBAAsB;IACtBC,eAAe;AACjB"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "BambuFtpAdapter", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return BambuFtpAdapter;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _basicftp = require("basic-ftp");
|
|
12
|
+
const _eventconstants = require("../../constants/event.constants");
|
|
13
|
+
const _nodefs = require("node:fs");
|
|
14
|
+
const _nodeos = require("node:os");
|
|
15
|
+
const _nodepath = require("node:path");
|
|
16
|
+
class BambuFtpAdapter {
|
|
17
|
+
settingsStore;
|
|
18
|
+
eventEmitter2;
|
|
19
|
+
logger;
|
|
20
|
+
ftpClient = null;
|
|
21
|
+
host = null;
|
|
22
|
+
accessCode = null;
|
|
23
|
+
isConnecting = false;
|
|
24
|
+
constructor(settingsStore, loggerFactory, eventEmitter2){
|
|
25
|
+
this.settingsStore = settingsStore;
|
|
26
|
+
this.eventEmitter2 = eventEmitter2;
|
|
27
|
+
this.settingsStore = settingsStore;
|
|
28
|
+
this.eventEmitter2 = eventEmitter2;
|
|
29
|
+
this.logger = loggerFactory(BambuFtpAdapter.name);
|
|
30
|
+
}
|
|
31
|
+
async connect(host, accessCode) {
|
|
32
|
+
if (this.ftpClient && !this.ftpClient.closed) {
|
|
33
|
+
this.logger.debug("FTP already connected");
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (this.isConnecting) {
|
|
37
|
+
throw new Error("Connection already in progress");
|
|
38
|
+
}
|
|
39
|
+
const sanitizedHost = this.sanitizeHost(host);
|
|
40
|
+
const sanitizedAccessCode = this.sanitizeAccessCode(accessCode);
|
|
41
|
+
this.host = sanitizedHost;
|
|
42
|
+
this.accessCode = sanitizedAccessCode;
|
|
43
|
+
this.isConnecting = true;
|
|
44
|
+
const timeout = this.settingsStore.getTimeoutSettings().apiTimeout;
|
|
45
|
+
this.logger.log(`Connecting to Bambu FTP at ${sanitizedHost}:990`);
|
|
46
|
+
try {
|
|
47
|
+
this.ftpClient = new _basicftp.Client(timeout);
|
|
48
|
+
this.ftpClient.ftp.verbose = false;
|
|
49
|
+
await this.ftpClient.access({
|
|
50
|
+
host: sanitizedHost,
|
|
51
|
+
port: 990,
|
|
52
|
+
user: "bblp",
|
|
53
|
+
password: sanitizedAccessCode,
|
|
54
|
+
secure: true,
|
|
55
|
+
secureOptions: {
|
|
56
|
+
rejectUnauthorized: false,
|
|
57
|
+
minVersion: 'TLSv1.2',
|
|
58
|
+
maxVersion: 'TLSv1.3'
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
this.isConnecting = false;
|
|
62
|
+
this.logger.log("FTP connected successfully");
|
|
63
|
+
} catch (error) {
|
|
64
|
+
this.isConnecting = false;
|
|
65
|
+
this.cleanup();
|
|
66
|
+
this.logger.error("FTP connection failed:", error);
|
|
67
|
+
throw error;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async disconnect() {
|
|
71
|
+
if (!this.ftpClient) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
this.logger.log("Disconnecting FTP");
|
|
75
|
+
try {
|
|
76
|
+
this.ftpClient.close();
|
|
77
|
+
} catch (error) {
|
|
78
|
+
this.logger.error("Error closing FTP:", error);
|
|
79
|
+
} finally{
|
|
80
|
+
this.cleanup();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async listFiles(dirPath = "/") {
|
|
84
|
+
this.ensureConnected();
|
|
85
|
+
try {
|
|
86
|
+
const files = await this.ftpClient.list(dirPath);
|
|
87
|
+
this.logger.debug(`Listed ${files.length} files in ${dirPath}`);
|
|
88
|
+
return files;
|
|
89
|
+
} catch (error) {
|
|
90
|
+
this.logger.error(`Failed to list files in ${dirPath}:`, error);
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async uploadFile(fileBuffer, filename, progressToken) {
|
|
95
|
+
this.ensureConnected();
|
|
96
|
+
const remotePath = `/sdcard/${filename}`;
|
|
97
|
+
const tempPath = (0, _nodepath.join)((0, _nodeos.tmpdir)(), `bambu-upload-${Date.now()}-${filename}`);
|
|
98
|
+
try {
|
|
99
|
+
(0, _nodefs.writeFileSync)(tempPath, fileBuffer);
|
|
100
|
+
this.logger.debug(`Wrote temp file: ${tempPath}`);
|
|
101
|
+
if (progressToken) {
|
|
102
|
+
this.ftpClient.trackProgress((info)=>{
|
|
103
|
+
this.eventEmitter2.emit(`${(0, _eventconstants.uploadProgressEvent)(progressToken)}`, progressToken, {
|
|
104
|
+
loaded: info.bytes,
|
|
105
|
+
total: info.bytesOverall
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
this.logger.log(`Uploading ${filename} to ${remotePath}`);
|
|
110
|
+
await this.ftpClient.uploadFrom(tempPath, remotePath);
|
|
111
|
+
this.ftpClient.trackProgress();
|
|
112
|
+
if (progressToken) {
|
|
113
|
+
this.eventEmitter2.emit(`${(0, _eventconstants.uploadDoneEvent)(progressToken)}`, progressToken);
|
|
114
|
+
}
|
|
115
|
+
this.logger.log(`File uploaded successfully: ${filename}`);
|
|
116
|
+
} catch (error) {
|
|
117
|
+
if (progressToken) {
|
|
118
|
+
this.eventEmitter2.emit(`${(0, _eventconstants.uploadFailedEvent)(progressToken)}`, progressToken, error?.message);
|
|
119
|
+
}
|
|
120
|
+
this.logger.error(`Upload failed for ${filename}:`, error);
|
|
121
|
+
throw error;
|
|
122
|
+
} finally{
|
|
123
|
+
try {
|
|
124
|
+
(0, _nodefs.unlinkSync)(tempPath);
|
|
125
|
+
this.logger.debug(`Cleaned up temp file: ${tempPath}`);
|
|
126
|
+
} catch (cleanupError) {
|
|
127
|
+
this.logger.warn(`Failed to cleanup temp file ${tempPath}:`, cleanupError);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async downloadFile(remotePath, localPath) {
|
|
132
|
+
this.ensureConnected();
|
|
133
|
+
try {
|
|
134
|
+
this.logger.log(`Downloading ${remotePath} to ${localPath}`);
|
|
135
|
+
await this.ftpClient.downloadTo(localPath, remotePath);
|
|
136
|
+
this.logger.log(`File downloaded successfully: ${remotePath}`);
|
|
137
|
+
} catch (error) {
|
|
138
|
+
this.logger.error(`Download failed for ${remotePath}:`, error);
|
|
139
|
+
throw error;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
async deleteFile(remotePath) {
|
|
143
|
+
this.ensureConnected();
|
|
144
|
+
try {
|
|
145
|
+
this.logger.log(`Deleting file: ${remotePath}`);
|
|
146
|
+
await this.ftpClient.remove(remotePath);
|
|
147
|
+
this.logger.log(`File deleted successfully: ${remotePath}`);
|
|
148
|
+
} catch (error) {
|
|
149
|
+
this.logger.error(`Delete failed for ${remotePath}:`, error);
|
|
150
|
+
throw error;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
get isConnected() {
|
|
154
|
+
return this.ftpClient != null && !this.ftpClient.closed;
|
|
155
|
+
}
|
|
156
|
+
ensureConnected() {
|
|
157
|
+
if (!this.isConnected) {
|
|
158
|
+
throw new Error("FTP not connected. Call connect() first.");
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
cleanup() {
|
|
162
|
+
this.ftpClient = null;
|
|
163
|
+
}
|
|
164
|
+
sanitizeHost(host) {
|
|
165
|
+
if (!host?.length) {
|
|
166
|
+
throw new Error("Host must be a non-empty string");
|
|
167
|
+
}
|
|
168
|
+
const trimmed = host.trim();
|
|
169
|
+
if (trimmed.length === 0) {
|
|
170
|
+
throw new Error("Host cannot be empty");
|
|
171
|
+
}
|
|
172
|
+
const ipv4Pattern = /^(\d{1,3}\.){3}\d{1,3}$/;
|
|
173
|
+
const hostnamePattern = /^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
|
|
174
|
+
if (!ipv4Pattern.test(trimmed) && !hostnamePattern.test(trimmed)) {
|
|
175
|
+
throw new Error("Invalid host format. Must be a valid IP address or hostname");
|
|
176
|
+
}
|
|
177
|
+
if (ipv4Pattern.test(trimmed)) {
|
|
178
|
+
const parts = trimmed.split(".").map(Number);
|
|
179
|
+
if (parts.some((part)=>part < 0 || part > 255)) {
|
|
180
|
+
throw new Error("Invalid IPv4 address. Octets must be between 0 and 255");
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return trimmed;
|
|
184
|
+
}
|
|
185
|
+
sanitizeAccessCode(accessCode) {
|
|
186
|
+
if (!accessCode?.length) {
|
|
187
|
+
throw new Error("Access code must be a non-empty string");
|
|
188
|
+
}
|
|
189
|
+
const trimmed = accessCode.trim();
|
|
190
|
+
if (trimmed.length === 0) {
|
|
191
|
+
throw new Error("Access code cannot be empty");
|
|
192
|
+
}
|
|
193
|
+
if (trimmed.length < 4 || trimmed.length > 32) {
|
|
194
|
+
throw new Error("Access code must be between 4 and 32 characters");
|
|
195
|
+
}
|
|
196
|
+
const alphanumericPattern = /^[a-zA-Z0-9]+$/;
|
|
197
|
+
if (!alphanumericPattern.test(trimmed)) {
|
|
198
|
+
throw new Error("Access code must contain only alphanumeric characters");
|
|
199
|
+
}
|
|
200
|
+
return trimmed;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
//# sourceMappingURL=bambu-ftp.adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/bambu/bambu-ftp.adapter.ts"],"names":["BambuFtpAdapter","logger","ftpClient","host","accessCode","isConnecting","settingsStore","loggerFactory","eventEmitter2","name","connect","closed","debug","Error","sanitizedHost","sanitizeHost","sanitizedAccessCode","sanitizeAccessCode","timeout","getTimeoutSettings","apiTimeout","log","Client","ftp","verbose","access","port","user","password","secure","secureOptions","rejectUnauthorized","minVersion","maxVersion","error","cleanup","disconnect","close","listFiles","dirPath","ensureConnected","files","list","length","uploadFile","fileBuffer","filename","progressToken","remotePath","tempPath","join","tmpdir","Date","now","writeFileSync","trackProgress","info","emit","uploadProgressEvent","loaded","bytes","total","bytesOverall","uploadFrom","uploadDoneEvent","uploadFailedEvent","message","unlinkSync","cleanupError","warn","downloadFile","localPath","downloadTo","deleteFile","remove","isConnected","trimmed","trim","ipv4Pattern","hostnamePattern","test","parts","split","map","Number","some","part","alphanumericPattern"],"mappings":"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"}
|