@fdm-monster/server 1.5.0-rc1
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 +19 -0
- package/.env.template +43 -0
- package/.gitattributes +1 -0
- package/.idea/codeStyles/Project.xml +85 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/dbnavigator.xml +574 -0
- package/.idea/fdm-monster.iml +16 -0
- package/.idea/inspectionProfiles/Project_Default.xml +22 -0
- package/.idea/jsLibraryMappings.xml +6 -0
- package/.idea/modules.xml +12 -0
- package/.idea/prettier.xml +6 -0
- package/.idea/vcs.xml +17 -0
- package/.swcrc +33 -0
- package/CODE_OF_CONDUCT.md +46 -0
- package/CONTRIBUTING.md +134 -0
- package/LICENSE +661 -0
- package/README.md +149 -0
- package/SECURITY.md +16 -0
- package/dist/@type/express/index.d.js +7 -0
- package/dist/@type/express/index.d.js.map +1 -0
- package/dist/constants/authorization.constants.js +99 -0
- package/dist/constants/authorization.constants.js.map +1 -0
- package/dist/constants/event.constants.js +55 -0
- package/dist/constants/event.constants.js.map +1 -0
- package/dist/constants/http-status-codes.constants.js +268 -0
- package/dist/constants/http-status-codes.constants.js.map +1 -0
- package/dist/constants/server-settings.constants.js +119 -0
- package/dist/constants/server-settings.constants.js.map +1 -0
- package/dist/constants/service.constants.js +48 -0
- package/dist/constants/service.constants.js.map +1 -0
- package/dist/container.js +161 -0
- package/dist/container.js.map +1 -0
- package/dist/container.tokens.js +83 -0
- package/dist/container.tokens.js.map +1 -0
- package/dist/controllers/auth.controller.js +143 -0
- package/dist/controllers/auth.controller.js.map +1 -0
- package/dist/controllers/batch-call.controller.js +59 -0
- package/dist/controllers/batch-call.controller.js.map +1 -0
- package/dist/controllers/camera-stream.controller.js +57 -0
- package/dist/controllers/camera-stream.controller.js.map +1 -0
- package/dist/controllers/custom-gcode.controller.js +76 -0
- package/dist/controllers/custom-gcode.controller.js.map +1 -0
- package/dist/controllers/first-time-setup.controller.js +65 -0
- package/dist/controllers/first-time-setup.controller.js.map +1 -0
- package/dist/controllers/floor.controller.js +78 -0
- package/dist/controllers/floor.controller.js.map +1 -0
- package/dist/controllers/plugin-firmware-update.controller.js +140 -0
- package/dist/controllers/plugin-firmware-update.controller.js.map +1 -0
- package/dist/controllers/print-completion.controller.js +58 -0
- package/dist/controllers/print-completion.controller.js.map +1 -0
- package/dist/controllers/printer-files.controller.js +208 -0
- package/dist/controllers/printer-files.controller.js.map +1 -0
- package/dist/controllers/printer-settings.controller.js +58 -0
- package/dist/controllers/printer-settings.controller.js.map +1 -0
- package/dist/controllers/printer.controller.js +287 -0
- package/dist/controllers/printer.controller.js.map +1 -0
- package/dist/controllers/server-private.controller.js +122 -0
- package/dist/controllers/server-private.controller.js.map +1 -0
- package/dist/controllers/server-public.controller.js +140 -0
- package/dist/controllers/server-public.controller.js.map +1 -0
- package/dist/controllers/settings.controller.js +89 -0
- package/dist/controllers/settings.controller.js.map +1 -0
- package/dist/controllers/user.controller.js +137 -0
- package/dist/controllers/user.controller.js.map +1 -0
- package/dist/controllers/validation/auth-controller.validation.js +15 -0
- package/dist/controllers/validation/auth-controller.validation.js.map +1 -0
- package/dist/controllers/validation/batch-controller.validation.js +29 -0
- package/dist/controllers/validation/batch-controller.validation.js.map +1 -0
- package/dist/controllers/validation/generic.validation.js +15 -0
- package/dist/controllers/validation/generic.validation.js.map +1 -0
- package/dist/controllers/validation/printer-controller.validation.js +66 -0
- package/dist/controllers/validation/printer-controller.validation.js.map +1 -0
- package/dist/controllers/validation/printer-files-controller.validation.js +66 -0
- package/dist/controllers/validation/printer-files-controller.validation.js.map +1 -0
- package/dist/controllers/validation/printer-settings-controller.validation.js +15 -0
- package/dist/controllers/validation/printer-settings-controller.validation.js.map +1 -0
- package/dist/controllers/validation/setting.validation.js +19 -0
- package/dist/controllers/validation/setting.validation.js.map +1 -0
- package/dist/controllers/validation/user-controller.validation.js +16 -0
- package/dist/controllers/validation/user-controller.validation.js.map +1 -0
- package/dist/exceptions/job.exceptions.js +18 -0
- package/dist/exceptions/job.exceptions.js.map +1 -0
- package/dist/exceptions/runtime.exceptions.js +108 -0
- package/dist/exceptions/runtime.exceptions.js.map +1 -0
- package/dist/handlers/cache-manager.js +25 -0
- package/dist/handlers/cache-manager.js.map +1 -0
- package/dist/handlers/event-emitter.js +31 -0
- package/dist/handlers/event-emitter.js.map +1 -0
- package/dist/handlers/logger-factory.js +18 -0
- package/dist/handlers/logger-factory.js.map +1 -0
- package/dist/handlers/logger.js +85 -0
- package/dist/handlers/logger.js.map +1 -0
- package/dist/handlers/validators.js +131 -0
- package/dist/handlers/validators.js.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/authenticate.js +83 -0
- package/dist/middleware/authenticate.js.map +1 -0
- package/dist/middleware/database.js +26 -0
- package/dist/middleware/database.js.map +1 -0
- package/dist/middleware/exception.handler.js +96 -0
- package/dist/middleware/exception.handler.js.map +1 -0
- package/dist/middleware/global.middleware.js +58 -0
- package/dist/middleware/global.middleware.js.map +1 -0
- package/dist/middleware/passport.js +44 -0
- package/dist/middleware/passport.js.map +1 -0
- package/dist/middleware/printer.js +49 -0
- package/dist/middleware/printer.js.map +1 -0
- package/dist/migrations/1696187882312-PrinterFile.js +40 -0
- package/dist/migrations/1696187882312-PrinterFile.js.map +1 -0
- package/dist/models/Auth/Permission.js +20 -0
- package/dist/models/Auth/Permission.js.map +1 -0
- package/dist/models/Auth/RefreshToken.js +41 -0
- package/dist/models/Auth/RefreshToken.js.map +1 -0
- package/dist/models/Auth/Role.js +20 -0
- package/dist/models/Auth/Role.js.map +1 -0
- package/dist/models/Auth/User.js +51 -0
- package/dist/models/Auth/User.js.map +1 -0
- package/dist/models/CameraStream.js +59 -0
- package/dist/models/CameraStream.js.map +1 -0
- package/dist/models/CustomGcode.js +28 -0
- package/dist/models/CustomGcode.js.map +1 -0
- package/dist/models/Floor.js +33 -0
- package/dist/models/Floor.js.map +1 -0
- package/dist/models/FloorPrinter.js +29 -0
- package/dist/models/FloorPrinter.js.map +1 -0
- package/dist/models/PrintCompletion.js +40 -0
- package/dist/models/PrintCompletion.js.map +1 -0
- package/dist/models/Printer.js +113 -0
- package/dist/models/Printer.js.map +1 -0
- package/dist/models/ServerSettings.js +168 -0
- package/dist/models/ServerSettings.js.map +1 -0
- package/dist/models/Settings.js +168 -0
- package/dist/models/Settings.js.map +1 -0
- package/dist/models/index.js +54 -0
- package/dist/models/index.js.map +1 -0
- package/dist/mongo-migrations/20210713120034-printers-settingsapperance-apikey.js +49 -0
- package/dist/mongo-migrations/20210713120034-printers-settingsapperance-apikey.js.map +1 -0
- package/dist/mongo-migrations/20210907173950-printers-enabled.js +39 -0
- package/dist/mongo-migrations/20210907173950-printers-enabled.js.map +1 -0
- package/dist/mongo-migrations/20211029110742-user-password-passwordhash.js +39 -0
- package/dist/mongo-migrations/20211029110742-user-password-passwordhash.js.map +1 -0
- package/dist/mongo-migrations/20230414141005-floor-remove-groupinfloor.js +60 -0
- package/dist/mongo-migrations/20230414141005-floor-remove-groupinfloor.js.map +1 -0
- package/dist/mongo-migrations/20230427202911-printer-remove-sortindex.js +30 -0
- package/dist/mongo-migrations/20230427202911-printer-remove-sortindex.js.map +1 -0
- package/dist/mongo-migrations/20230716065316-user-remove-name.js +30 -0
- package/dist/mongo-migrations/20230716065316-user-remove-name.js.map +1 -0
- package/dist/nodemon_restart_trigger.js +4 -0
- package/dist/nodemon_restart_trigger.js.map +1 -0
- package/dist/server.constants.js +99 -0
- package/dist/server.constants.js.map +1 -0
- package/dist/server.core.js +91 -0
- package/dist/server.core.js.map +1 -0
- package/dist/server.env.js +225 -0
- package/dist/server.env.js.map +1 -0
- package/dist/server.host.js +106 -0
- package/dist/server.host.js.map +1 -0
- package/dist/services/authentication/auth.service.js +136 -0
- package/dist/services/authentication/auth.service.js.map +1 -0
- package/dist/services/authentication/jwt.service.js +34 -0
- package/dist/services/authentication/jwt.service.js.map +1 -0
- package/dist/services/authentication/permission.service.js +73 -0
- package/dist/services/authentication/permission.service.js.map +1 -0
- package/dist/services/authentication/refresh-token.service.js +99 -0
- package/dist/services/authentication/refresh-token.service.js.map +1 -0
- package/dist/services/authentication/role.service.js +120 -0
- package/dist/services/authentication/role.service.js.map +1 -0
- package/dist/services/authentication/user.service.js +154 -0
- package/dist/services/authentication/user.service.js.map +1 -0
- package/dist/services/batch-call.service.js +148 -0
- package/dist/services/batch-call.service.js.map +1 -0
- package/dist/services/camera-stream.service.js +80 -0
- package/dist/services/camera-stream.service.js.map +1 -0
- package/dist/services/core/client-bundle.service.js +156 -0
- package/dist/services/core/client-bundle.service.js.map +1 -0
- package/dist/services/core/config.service.js +26 -0
- package/dist/services/core/config.service.js.map +1 -0
- package/dist/services/core/github.service.js +74 -0
- package/dist/services/core/github.service.js.map +1 -0
- package/dist/services/core/logs-manager.service.js +87 -0
- package/dist/services/core/logs-manager.service.js.map +1 -0
- package/dist/services/core/monsterpi.service.js +38 -0
- package/dist/services/core/monsterpi.service.js.map +1 -0
- package/dist/services/core/multer.service.js +122 -0
- package/dist/services/core/multer.service.js.map +1 -0
- package/dist/services/core/server-release.service.js +116 -0
- package/dist/services/core/server-release.service.js.map +1 -0
- package/dist/services/core/server-update.service.js +73 -0
- package/dist/services/core/server-update.service.js.map +1 -0
- package/dist/services/core/task-manager.service.js +196 -0
- package/dist/services/core/task-manager.service.js.map +1 -0
- package/dist/services/core/yaml.service.js +278 -0
- package/dist/services/core/yaml.service.js.map +1 -0
- package/dist/services/custom-gcode.service.js +48 -0
- package/dist/services/custom-gcode.service.js.map +1 -0
- package/dist/services/floor.service.js +183 -0
- package/dist/services/floor.service.js.map +1 -0
- package/dist/services/influxdb-v2/influx-db-v2-base.service.js +45 -0
- package/dist/services/influxdb-v2/influx-db-v2-base.service.js.map +1 -0
- package/dist/services/interfaces/auth.service.interface.js +6 -0
- package/dist/services/interfaces/auth.service.interface.js.map +1 -0
- package/dist/services/interfaces/camera-stream.dto.js +109 -0
- package/dist/services/interfaces/camera-stream.dto.js.map +1 -0
- package/dist/services/interfaces/camera-stream.service.interface.js +6 -0
- package/dist/services/interfaces/camera-stream.service.interface.js.map +1 -0
- package/dist/services/interfaces/custom-gcode.dto.js +18 -0
- package/dist/services/interfaces/custom-gcode.dto.js.map +1 -0
- package/dist/services/interfaces/custom-gcode.service.interface.js +6 -0
- package/dist/services/interfaces/custom-gcode.service.interface.js.map +1 -0
- package/dist/services/interfaces/floor.dto.js +61 -0
- package/dist/services/interfaces/floor.dto.js.map +1 -0
- package/dist/services/interfaces/floor.service.interface.js +6 -0
- package/dist/services/interfaces/floor.service.interface.js.map +1 -0
- package/dist/services/interfaces/gcode-analysis.dto.js +6 -0
- package/dist/services/interfaces/gcode-analysis.dto.js.map +1 -0
- package/dist/services/interfaces/jwt.service.interface.js +6 -0
- package/dist/services/interfaces/jwt.service.interface.js.map +1 -0
- package/dist/services/interfaces/login.dto.js +16 -0
- package/dist/services/interfaces/login.dto.js.map +1 -0
- package/dist/services/interfaces/page.interface.js +16 -0
- package/dist/services/interfaces/page.interface.js.map +1 -0
- package/dist/services/interfaces/permission.dto.js +16 -0
- package/dist/services/interfaces/permission.dto.js.map +1 -0
- package/dist/services/interfaces/permission.service.interface.js +6 -0
- package/dist/services/interfaces/permission.service.interface.js.map +1 -0
- package/dist/services/interfaces/printer-file.dto.js +27 -0
- package/dist/services/interfaces/printer-file.dto.js.map +1 -0
- package/dist/services/interfaces/printer-files.service.interface.js +6 -0
- package/dist/services/interfaces/printer-files.service.interface.js.map +1 -0
- package/dist/services/interfaces/printer.dto.js +18 -0
- package/dist/services/interfaces/printer.dto.js.map +1 -0
- package/dist/services/interfaces/printer.service.interface.js +6 -0
- package/dist/services/interfaces/printer.service.interface.js.map +1 -0
- package/dist/services/interfaces/role-service.interface.js +6 -0
- package/dist/services/interfaces/role-service.interface.js.map +1 -0
- package/dist/services/interfaces/settings.dto.js +34 -0
- package/dist/services/interfaces/settings.dto.js.map +1 -0
- package/dist/services/interfaces/settings.service.interface.js +6 -0
- package/dist/services/interfaces/settings.service.interface.js.map +1 -0
- package/dist/services/interfaces/user-service.interface.js +6 -0
- package/dist/services/interfaces/user-service.interface.js.map +1 -0
- package/dist/services/interfaces/user.dto.js +39 -0
- package/dist/services/interfaces/user.dto.js.map +1 -0
- package/dist/services/octoprint/constants/firmware-update-settings.constants.js +32 -0
- package/dist/services/octoprint/constants/firmware-update-settings.constants.js.map +1 -0
- package/dist/services/octoprint/constants/octoprint-service.constants.js +101 -0
- package/dist/services/octoprint/constants/octoprint-service.constants.js.map +1 -0
- package/dist/services/octoprint/constants/octoprint-websocket.constants.js +88 -0
- package/dist/services/octoprint/constants/octoprint-websocket.constants.js.map +1 -0
- package/dist/services/octoprint/octoprint-api.routes.js +192 -0
- package/dist/services/octoprint/octoprint-api.routes.js.map +1 -0
- package/dist/services/octoprint/octoprint-api.service.js +402 -0
- package/dist/services/octoprint/octoprint-api.service.js.map +1 -0
- package/dist/services/octoprint/octoprint-sockio.adapter.js +309 -0
- package/dist/services/octoprint/octoprint-sockio.adapter.js.map +1 -0
- package/dist/services/octoprint/plugin-base.service.js +102 -0
- package/dist/services/octoprint/plugin-base.service.js.map +1 -0
- package/dist/services/octoprint/plugin-firmware-update.service.js +104 -0
- package/dist/services/octoprint/plugin-firmware-update.service.js.map +1 -0
- package/dist/services/octoprint/plugin-repository.cache.js +45 -0
- package/dist/services/octoprint/plugin-repository.cache.js.map +1 -0
- package/dist/services/octoprint/socket.factory.js +22 -0
- package/dist/services/octoprint/socket.factory.js.map +1 -0
- package/dist/services/octoprint/utils/api.utils.js +72 -0
- package/dist/services/octoprint/utils/api.utils.js.map +1 -0
- package/dist/services/orm/floor.service.interface.js +73 -0
- package/dist/services/orm/floor.service.interface.js.map +1 -0
- package/dist/services/orm/printer.service.interface.js +6 -0
- package/dist/services/orm/printer.service.interface.js.map +1 -0
- package/dist/services/print-completion.service.js +162 -0
- package/dist/services/print-completion.service.js.map +1 -0
- package/dist/services/printer-files.service.js +91 -0
- package/dist/services/printer-files.service.js.map +1 -0
- package/dist/services/printer.service.js +230 -0
- package/dist/services/printer.service.js.map +1 -0
- package/dist/services/settings.service.js +158 -0
- package/dist/services/settings.service.js.map +1 -0
- package/dist/services/validators/floor-service.validation.js +60 -0
- package/dist/services/validators/floor-service.validation.js.map +1 -0
- package/dist/services/validators/print-completion-service.validation.js +20 -0
- package/dist/services/validators/print-completion-service.validation.js.map +1 -0
- package/dist/services/validators/printer-service.validation.js +48 -0
- package/dist/services/validators/printer-service.validation.js.map +1 -0
- package/dist/services/validators/settings-service.validation.js +71 -0
- package/dist/services/validators/settings-service.validation.js.map +1 -0
- package/dist/services/validators/user-service.validation.js +33 -0
- package/dist/services/validators/user-service.validation.js.map +1 -0
- package/dist/services/validators/yaml-service.validation.js +63 -0
- package/dist/services/validators/yaml-service.validation.js.map +1 -0
- package/dist/services/yaml.service.js +278 -0
- package/dist/services/yaml.service.js.map +1 -0
- package/dist/shared.constants.js +15 -0
- package/dist/shared.constants.js.map +1 -0
- package/dist/state/file-upload-tracker.cache.js +88 -0
- package/dist/state/file-upload-tracker.cache.js.map +1 -0
- package/dist/state/file.cache.js +99 -0
- package/dist/state/file.cache.js.map +1 -0
- package/dist/state/files.store.js +132 -0
- package/dist/state/files.store.js.map +1 -0
- package/dist/state/floor.store.js +99 -0
- package/dist/state/floor.store.js.map +1 -0
- package/dist/state/printer-events.cache.js +97 -0
- package/dist/state/printer-events.cache.js.map +1 -0
- package/dist/state/printer-socket.store.js +217 -0
- package/dist/state/printer-socket.store.js.map +1 -0
- package/dist/state/printer.cache.js +112 -0
- package/dist/state/printer.cache.js.map +1 -0
- package/dist/state/settings.store.js +154 -0
- package/dist/state/settings.store.js.map +1 -0
- package/dist/state/socket-io.gateway.js +66 -0
- package/dist/state/socket-io.gateway.js.map +1 -0
- package/dist/state/test-printer-socket.store.js +91 -0
- package/dist/state/test-printer-socket.store.js.map +1 -0
- package/dist/state/validation/create-test-printer.validation.js +18 -0
- package/dist/state/validation/create-test-printer.validation.js.map +1 -0
- package/dist/task.presets.js +50 -0
- package/dist/task.presets.js.map +1 -0
- package/dist/tasks/boot.task.js +198 -0
- package/dist/tasks/boot.task.js.map +1 -0
- package/dist/tasks/client-bundle.task.js +32 -0
- package/dist/tasks/client-bundle.task.js.map +1 -0
- package/dist/tasks/print-completion.socketio.task.js +85 -0
- package/dist/tasks/print-completion.socketio.task.js.map +1 -0
- package/dist/tasks/printer-file-clean.task.js +72 -0
- package/dist/tasks/printer-file-clean.task.js.map +1 -0
- package/dist/tasks/printer-websocket-restore.task.js +64 -0
- package/dist/tasks/printer-websocket-restore.task.js.map +1 -0
- package/dist/tasks/printer-websocket.task.js +43 -0
- package/dist/tasks/printer-websocket.task.js.map +1 -0
- package/dist/tasks/socketio.task.js +83 -0
- package/dist/tasks/socketio.task.js.map +1 -0
- package/dist/tasks/software-update.task.js +22 -0
- package/dist/tasks/software-update.task.js.map +1 -0
- package/dist/tasks.js +48 -0
- package/dist/tasks.js.map +1 -0
- package/dist/types/express/index.d.js +7 -0
- package/dist/types/express/index.d.js.map +1 -0
- package/dist/utils/array.util.js +27 -0
- package/dist/utils/array.util.js.map +1 -0
- package/dist/utils/benchmark.util.js +39 -0
- package/dist/utils/benchmark.util.js.map +1 -0
- package/dist/utils/cache/key-diff.cache.js +128 -0
- package/dist/utils/cache/key-diff.cache.js.map +1 -0
- package/dist/utils/correlation-token.util.js +15 -0
- package/dist/utils/correlation-token.util.js.map +1 -0
- package/dist/utils/crypto.utils.js +29 -0
- package/dist/utils/crypto.utils.js.map +1 -0
- package/dist/utils/env.utils.js +98 -0
- package/dist/utils/env.utils.js.map +1 -0
- package/dist/utils/error.utils.js +15 -0
- package/dist/utils/error.utils.js.map +1 -0
- package/dist/utils/find-predicate.utils.js +18 -0
- package/dist/utils/find-predicate.utils.js.map +1 -0
- package/dist/utils/fs.utils.js +38 -0
- package/dist/utils/fs.utils.js.map +1 -0
- package/dist/utils/is-docker.js +40 -0
- package/dist/utils/is-docker.js.map +1 -0
- package/dist/utils/mapper.utils.js +33 -0
- package/dist/utils/mapper.utils.js.map +1 -0
- package/dist/utils/metric.utils.js +35 -0
- package/dist/utils/metric.utils.js.map +1 -0
- package/dist/utils/normalize-url.js +245 -0
- package/dist/utils/normalize-url.js.map +1 -0
- package/dist/utils/semver.utils.js +18 -0
- package/dist/utils/semver.utils.js.map +1 -0
- package/dist/utils/time.utils.js +26 -0
- package/dist/utils/time.utils.js.map +1 -0
- package/dist/utils/url.utils.js +33 -0
- package/dist/utils/url.utils.js.map +1 -0
- package/dist/utils/websocket.adapter.js +105 -0
- package/dist/utils/websocket.adapter.js.map +1 -0
- package/migrate-mongo-config.js +45 -0
- package/nodemon_restart_trigger.js +1 -0
- package/package.json +149 -0
- package/src/index.ts +19 -0
- package/tsconfig.json +28 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "ClientBundleService", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return ClientBundleService;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _admzip = /*#__PURE__*/ _interop_require_default(require("adm-zip"));
|
|
12
|
+
const _path = require("path");
|
|
13
|
+
const _nodefs = require("node:fs");
|
|
14
|
+
const _promises = require("node:fs/promises");
|
|
15
|
+
const _fsutils = require("../../utils/fs.utils");
|
|
16
|
+
const _semverutils = require("../../utils/semver.utils");
|
|
17
|
+
const _serverconstants = require("../../server.constants");
|
|
18
|
+
function _interop_require_default(obj) {
|
|
19
|
+
return obj && obj.__esModule ? obj : {
|
|
20
|
+
default: obj
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
class ClientBundleService {
|
|
24
|
+
githubService;
|
|
25
|
+
configService;
|
|
26
|
+
logger;
|
|
27
|
+
constructor({ githubService, configService, loggerFactory }){
|
|
28
|
+
this.githubService = githubService;
|
|
29
|
+
this.configService = configService;
|
|
30
|
+
this.logger = loggerFactory(ClientBundleService.name);
|
|
31
|
+
}
|
|
32
|
+
get clientPackageJsonPath() {
|
|
33
|
+
return (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultClientBundleStorage, "package.json");
|
|
34
|
+
}
|
|
35
|
+
get clientIndexHtmlPath() {
|
|
36
|
+
return (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultClientBundleStorage, "dist/index.html");
|
|
37
|
+
}
|
|
38
|
+
async getReleases() {
|
|
39
|
+
const githubOwner = _serverconstants.AppConstants.orgName;
|
|
40
|
+
const githubRepo = _serverconstants.AppConstants.clientRepoName;
|
|
41
|
+
const result = await this.githubService.getReleases(githubOwner, githubRepo);
|
|
42
|
+
const latestResult = await this.githubService.getLatestRelease(githubOwner, githubRepo);
|
|
43
|
+
return {
|
|
44
|
+
minimum: {
|
|
45
|
+
tag_name: _serverconstants.AppConstants.defaultClientMinimum
|
|
46
|
+
},
|
|
47
|
+
current: {
|
|
48
|
+
tag_name: this.getClientVersion()
|
|
49
|
+
},
|
|
50
|
+
latest: latestResult.data,
|
|
51
|
+
releases: result.data
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
async shouldUpdateWithReason(overrideAutoUpdate, minimumVersion) {
|
|
55
|
+
const clientAutoUpdate = _serverconstants.AppConstants.enableClientDistAutoUpdateKey;
|
|
56
|
+
if (!clientAutoUpdate && !overrideAutoUpdate) {
|
|
57
|
+
return {
|
|
58
|
+
shouldUpdate: false,
|
|
59
|
+
reason: "Client auto-update disabled (ENABLE_CLIENT_DIST_AUTO_UPDATE), skipping"
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const version = this.getClientVersion();
|
|
63
|
+
// If no package.json found, we should update to latest/minimum
|
|
64
|
+
if (!version) {
|
|
65
|
+
return {
|
|
66
|
+
shouldUpdate: true,
|
|
67
|
+
reason: `Client package.json does not exist, downloading new release`
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
if (!this.doesClientIndexHtmlExist()) {
|
|
71
|
+
return {
|
|
72
|
+
shouldUpdate: true,
|
|
73
|
+
reason: `Client index.html does not exist, downloading new release`
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
// If no bundle found, this task should run to ensure one is downloaded
|
|
77
|
+
const satisfiesMinimumVersion = (0, _semverutils.checkVersionSatisfiesMinimum)(version, minimumVersion);
|
|
78
|
+
if (satisfiesMinimumVersion) {
|
|
79
|
+
return {
|
|
80
|
+
shouldUpdate: false,
|
|
81
|
+
reason: `Client satisfies minimum version ${minimumVersion}, skipping`
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
shouldUpdate: true,
|
|
86
|
+
reason: `Client bundle release ${version} does not satisfy minimum version ${minimumVersion}, downloading new release`
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
async downloadClientUpdate(releaseTag) {
|
|
90
|
+
const release = await this.getClientBundleRelease(releaseTag);
|
|
91
|
+
this.logger.log(`Retrieved ${release.assets.length} assets from release '${release.name}': ${release.assets.map((a)=>a.name)}`);
|
|
92
|
+
const asset = release.assets.find((a)=>a.name === `dist-client-${release.tag_name}.zip`);
|
|
93
|
+
const assetId = asset.id;
|
|
94
|
+
const downloadPath = await this.downloadClientBundleZip(assetId, asset.name);
|
|
95
|
+
await this.extractClientBundleZip(downloadPath);
|
|
96
|
+
}
|
|
97
|
+
async getClientBundleRelease(releaseTag) {
|
|
98
|
+
const githubOwner = _serverconstants.AppConstants.orgName;
|
|
99
|
+
const githubRepo = _serverconstants.AppConstants.clientRepoName;
|
|
100
|
+
const result = await this.githubService.getReleaseByTag(githubOwner, githubRepo, releaseTag);
|
|
101
|
+
return result.data;
|
|
102
|
+
}
|
|
103
|
+
async downloadClientBundleZip(assetId, assetName) {
|
|
104
|
+
const githubOwner = _serverconstants.AppConstants.orgName;
|
|
105
|
+
const githubRepo = _serverconstants.AppConstants.clientRepoName;
|
|
106
|
+
const assetResult = await this.githubService.requestAsset(githubOwner, githubRepo, assetId);
|
|
107
|
+
const dir = (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultClientBundleZipsStorage);
|
|
108
|
+
(0, _fsutils.ensureDirExists)(dir);
|
|
109
|
+
this.logger.log(`Downloaded client release ZIP to '${dir}'. Extracting archive now`);
|
|
110
|
+
const path = (0, _path.join)(dir, assetName);
|
|
111
|
+
(0, _nodefs.writeFileSync)(path, Buffer.from(assetResult.data));
|
|
112
|
+
return path;
|
|
113
|
+
}
|
|
114
|
+
async extractClientBundleZip(downloadedZipPath) {
|
|
115
|
+
const zip = new _admzip.default(downloadedZipPath);
|
|
116
|
+
const distPath = (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultClientBundleStorage);
|
|
117
|
+
(0, _fsutils.ensureDirExists)(distPath);
|
|
118
|
+
this.logger.debug(`Clearing contents of ${distPath}`);
|
|
119
|
+
for (const fileOrDir of (await (0, _promises.readdir)(distPath))){
|
|
120
|
+
this.logger.log(`Removing existing file/dir '${distPath}/${fileOrDir}' before updating client`);
|
|
121
|
+
try {
|
|
122
|
+
await (0, _promises.rm)((0, _path.join)(distPath, fileOrDir), {
|
|
123
|
+
force: true,
|
|
124
|
+
recursive: true
|
|
125
|
+
});
|
|
126
|
+
} catch (e) {
|
|
127
|
+
this.logger.error(`${e.message} ${e.stack}`);
|
|
128
|
+
throw e;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
try {
|
|
132
|
+
zip.extractAllTo((0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultClientBundleStorage));
|
|
133
|
+
} catch (e) {
|
|
134
|
+
this.logger.error(`Unzipping failed ${e.message} ${e.stack}`);
|
|
135
|
+
throw e;
|
|
136
|
+
}
|
|
137
|
+
this.logger.log(`Successfully extracted client dist to ${distPath}`);
|
|
138
|
+
}
|
|
139
|
+
doesClientIndexHtmlExist() {
|
|
140
|
+
const indexHtmlPath = this.clientIndexHtmlPath;
|
|
141
|
+
return (0, _nodefs.existsSync)(indexHtmlPath);
|
|
142
|
+
}
|
|
143
|
+
getClientVersion() {
|
|
144
|
+
const packageJsonPath = this.clientPackageJsonPath;
|
|
145
|
+
const packageJsonFound = (0, _nodefs.existsSync)(packageJsonPath);
|
|
146
|
+
// If no package.json found, we should update to latest/minimum
|
|
147
|
+
if (!packageJsonFound) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
require.cache[packageJsonPath] = undefined;
|
|
151
|
+
const json = require(packageJsonPath);
|
|
152
|
+
return json?.version;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
//# sourceMappingURL=client-bundle.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/core/client-bundle.service.ts"],"names":["ClientBundleService","githubService","configService","logger","constructor","loggerFactory","name","clientPackageJsonPath","join","superRootPath","AppConstants","defaultClientBundleStorage","clientIndexHtmlPath","getReleases","githubOwner","orgName","githubRepo","clientRepoName","result","latestResult","getLatestRelease","minimum","tag_name","defaultClientMinimum","current","getClientVersion","latest","data","releases","shouldUpdateWithReason","overrideAutoUpdate","minimumVersion","clientAutoUpdate","enableClientDistAutoUpdateKey","shouldUpdate","reason","version","doesClientIndexHtmlExist","satisfiesMinimumVersion","checkVersionSatisfiesMinimum","downloadClientUpdate","releaseTag","release","getClientBundleRelease","log","assets","length","map","a","asset","find","assetId","id","downloadPath","downloadClientBundleZip","extractClientBundleZip","getReleaseByTag","assetName","assetResult","requestAsset","dir","defaultClientBundleZipsStorage","ensureDirExists","path","writeFileSync","Buffer","from","downloadedZipPath","zip","AdmZip","distPath","debug","fileOrDir","readdir","rm","force","recursive","e","error","message","stack","extractAllTo","indexHtmlPath","existsSync","packageJsonPath","packageJsonFound","require","cache","undefined","json"],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "ConfigService", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return ConfigService;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
class ConfigService {
|
|
12
|
+
get(key, defaultValue) {
|
|
13
|
+
if (!Object.keys(process.env).includes(key) || !process.env[key]?.length) {
|
|
14
|
+
return defaultValue;
|
|
15
|
+
}
|
|
16
|
+
return process.env[key];
|
|
17
|
+
}
|
|
18
|
+
getOrThrow(key) {
|
|
19
|
+
const val = this.get(key);
|
|
20
|
+
if (!val) {
|
|
21
|
+
throw Error(`Environment variable with key ${key} was not defined.`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=config.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/core/config.service.ts"],"names":["ConfigService","get","key","defaultValue","Object","keys","process","env","includes","length","getOrThrow","val","Error"],"mappings":";;;;+BAMaA;;;eAAAA;;;AAAN,MAAMA;IACXC,IAAIC,GAAW,EAAEC,YAAqB,EAAE;QACtC,IAAI,CAACC,OAAOC,IAAI,CAACC,QAAQC,GAAG,EAAEC,QAAQ,CAACN,QAAQ,CAACI,QAAQC,GAAG,CAACL,IAAI,EAAEO,QAAQ;YACxE,OAAON;QACT;QACA,OAAOG,QAAQC,GAAG,CAACL,IAAI;IACzB;IAEAQ,WAAWR,GAAW,EAAE;QACtB,MAAMS,MAAM,IAAI,CAACV,GAAG,CAACC;QACrB,IAAI,CAACS,KAAK;YACR,MAAMC,MAAM,CAAC,8BAA8B,EAAEV,IAAI,iBAAiB,CAAC;QACrE;IACF;AACF"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "GithubService", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return GithubService;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _runtimeexceptions = require("../../exceptions/runtime.exceptions");
|
|
12
|
+
class GithubService {
|
|
13
|
+
octokitService;
|
|
14
|
+
logger;
|
|
15
|
+
constructor({ loggerFactory, octokitService }){
|
|
16
|
+
this.logger = loggerFactory(GithubService.name, false);
|
|
17
|
+
this.octokitService = octokitService;
|
|
18
|
+
}
|
|
19
|
+
async wasAuthenticated() {
|
|
20
|
+
const result = await this.octokitService.auth();
|
|
21
|
+
return result?.type === "token";
|
|
22
|
+
}
|
|
23
|
+
async getLatestRelease(owner, repo) {
|
|
24
|
+
return await this.octokitService.rest.repos.getLatestRelease({
|
|
25
|
+
owner,
|
|
26
|
+
repo
|
|
27
|
+
}).catch((e)=>{
|
|
28
|
+
if (e.name === "HttpError" && e.status == 404) {
|
|
29
|
+
throw new _runtimeexceptions.NotFoundException(`Could not retrieve latest release`);
|
|
30
|
+
}
|
|
31
|
+
throw e;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
async getReleases(owner, repo) {
|
|
35
|
+
return await this.octokitService.rest.repos.listReleases({
|
|
36
|
+
owner,
|
|
37
|
+
repo
|
|
38
|
+
}).catch((e)=>{
|
|
39
|
+
if (e.name === "HttpError" && e.status == 404) {
|
|
40
|
+
throw new _runtimeexceptions.NotFoundException(`Could not retrieve releases`);
|
|
41
|
+
}
|
|
42
|
+
throw e;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
async getReleaseByTag(owner, repo, tag) {
|
|
46
|
+
return await this.octokitService.rest.repos.getReleaseByTag({
|
|
47
|
+
owner,
|
|
48
|
+
repo,
|
|
49
|
+
tag
|
|
50
|
+
}).catch((e)=>{
|
|
51
|
+
if (e.name === "HttpError" && e.status == 404) {
|
|
52
|
+
throw new _runtimeexceptions.NotFoundException(`Could not find release with tag ${tag}`);
|
|
53
|
+
}
|
|
54
|
+
throw e;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
async requestAsset(owner, repo, assetId) {
|
|
58
|
+
return await this.octokitService.request("GET /repos/:owner/:repo/releases/assets/:asset_id", {
|
|
59
|
+
headers: {
|
|
60
|
+
Accept: "application/octet-stream"
|
|
61
|
+
},
|
|
62
|
+
owner,
|
|
63
|
+
repo,
|
|
64
|
+
asset_id: assetId
|
|
65
|
+
}).catch((e)=>{
|
|
66
|
+
if (e.name === "HttpError" && e.status == 404) {
|
|
67
|
+
throw new _runtimeexceptions.NotFoundException(`Could not find asset with id ${assetId}`);
|
|
68
|
+
}
|
|
69
|
+
throw e;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=github.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/core/github.service.ts"],"names":["GithubService","octokitService","logger","constructor","loggerFactory","name","wasAuthenticated","result","auth","type","getLatestRelease","owner","repo","rest","repos","catch","e","status","NotFoundException","getReleases","listReleases","getReleaseByTag","tag","requestAsset","assetId","request","headers","Accept","asset_id"],"mappings":";;;;+BAKaA;;;eAAAA;;;mCALqB;AAK3B,MAAMA;IACXC,eAAwB;IACxBC,OAAsB;IAEtBC,YAAY,EAAEC,aAAa,EAAEH,cAAc,EAA8D,CAAE;QACzG,IAAI,CAACC,MAAM,GAAGE,cAAcJ,cAAcK,IAAI,EAAE;QAChD,IAAI,CAACJ,cAAc,GAAGA;IACxB;IAEA,MAAMK,mBAAmB;QACvB,MAAMC,SAAS,MAAM,IAAI,CAACN,cAAc,CAACO,IAAI;QAC7C,OAAOD,QAAQE,SAAS;IAC1B;IAEA,MAAMC,iBAAiBC,KAAa,EAAEC,IAAY,EAAE;QAClD,OAAO,MAAM,IAAI,CAACX,cAAc,CAACY,IAAI,CAACC,KAAK,CACxCJ,gBAAgB,CAAC;YAChBC;YACAC;QACF,GACCG,KAAK,CAAC,CAACC;YACN,IAAIA,EAAEX,IAAI,KAAK,eAAeW,EAAEC,MAAM,IAAI,KAAK;gBAC7C,MAAM,IAAIC,oCAAiB,CAAC,CAAC,iCAAiC,CAAC;YACjE;YAEA,MAAMF;QACR;IACJ;IAEA,MAAMG,YAAYR,KAAa,EAAEC,IAAY,EAAE;QAC7C,OAAO,MAAM,IAAI,CAACX,cAAc,CAACY,IAAI,CAACC,KAAK,CACxCM,YAAY,CAAC;YACZT;YACAC;QACF,GACCG,KAAK,CAAC,CAACC;YACN,IAAIA,EAAEX,IAAI,KAAK,eAAeW,EAAEC,MAAM,IAAI,KAAK;gBAC7C,MAAM,IAAIC,oCAAiB,CAAC,CAAC,2BAA2B,CAAC;YAC3D;YAEA,MAAMF;QACR;IACJ;IAEA,MAAMK,gBAAgBV,KAAa,EAAEC,IAAY,EAAEU,GAAW,EAAE;QAC9D,OAAO,MAAM,IAAI,CAACrB,cAAc,CAACY,IAAI,CAACC,KAAK,CACxCO,eAAe,CAAC;YACfV;YACAC;YACAU;QACF,GACCP,KAAK,CAAC,CAACC;YACN,IAAIA,EAAEX,IAAI,KAAK,eAAeW,EAAEC,MAAM,IAAI,KAAK;gBAC7C,MAAM,IAAIC,oCAAiB,CAAC,CAAC,gCAAgC,EAAEI,IAAI,CAAC;YACtE;YAEA,MAAMN;QACR;IACJ;IAEA,MAAMO,aAAaZ,KAAa,EAAEC,IAAY,EAAEY,OAAY,EAAE;QAC5D,OAAO,MAAM,IAAI,CAACvB,cAAc,CAC7BwB,OAAO,CAAC,qDAAqD;YAC5DC,SAAS;gBACPC,QAAQ;YACV;YACAhB;YACAC;YACAgB,UAAUJ;QACZ,GACCT,KAAK,CAAC,CAACC;YACN,IAAIA,EAAEX,IAAI,KAAK,eAAeW,EAAEC,MAAM,IAAI,KAAK;gBAC7C,MAAM,IAAIC,oCAAiB,CAAC,CAAC,6BAA6B,EAAEM,QAAQ,CAAC;YACvE;YAEA,MAAMR;QACR;IACJ;AACF"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "LogDumpService", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return LogDumpService;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _admzip = /*#__PURE__*/ _interop_require_default(require("adm-zip"));
|
|
12
|
+
const _path = require("path");
|
|
13
|
+
const _fs = require("fs");
|
|
14
|
+
const _fsutils = require("../../utils/fs.utils");
|
|
15
|
+
const _serverconstants = require("../../server.constants");
|
|
16
|
+
const _timeutils = require("../../utils/time.utils");
|
|
17
|
+
function _interop_require_default(obj) {
|
|
18
|
+
return obj && obj.__esModule ? obj : {
|
|
19
|
+
default: obj
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
class LogDumpService {
|
|
23
|
+
logger;
|
|
24
|
+
constructor({ loggerFactory }){
|
|
25
|
+
this.logger = loggerFactory(LogDumpService.name);
|
|
26
|
+
}
|
|
27
|
+
async deleteOlderThanWeekAndMismatchingLogFiles() {
|
|
28
|
+
this.logger.log("Cleaning log files");
|
|
29
|
+
const path = (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultLogsFolder);
|
|
30
|
+
const dirEntries = (0, _fs.readdirSync)(path, {
|
|
31
|
+
withFileTypes: true
|
|
32
|
+
});
|
|
33
|
+
const files = dirEntries.filter((dirent)=>dirent.isFile()).map((dirent)=>dirent.name);
|
|
34
|
+
// Filter only log files that are not in the format of logs/<app-name>-<date>.log
|
|
35
|
+
const startingFormat = `${_serverconstants.AppConstants.logAppName}-`;
|
|
36
|
+
const removedFilesNotInFormat = files.filter((f)=>f.endsWith(".log") && !f.startsWith(startingFormat));
|
|
37
|
+
const removedFilesOutdated = files.filter((f)=>{
|
|
38
|
+
const matchesFormat = f.endsWith(".log") && f.startsWith(startingFormat);
|
|
39
|
+
if (!matchesFormat) return false;
|
|
40
|
+
const strippedFilename = f.replace(".log", "").replace(startingFormat, "");
|
|
41
|
+
const date = new Date(strippedFilename);
|
|
42
|
+
if (!(0, _timeutils.isValidDate)(date)) {
|
|
43
|
+
this.logger.warn(`Failed to parse date from log file ${f}, removing it as outdated`);
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
const now = new Date();
|
|
47
|
+
const diff = now.getTime() - date.getTime();
|
|
48
|
+
const diffDays = diff / (1000 * 3600 * 24);
|
|
49
|
+
return diffDays > 7;
|
|
50
|
+
});
|
|
51
|
+
this.logger.log(`Removing ${removedFilesNotInFormat.length} files that are not in the format of ${startingFormat}<date>.log, and ${removedFilesOutdated.length} files that are older than 7 days`);
|
|
52
|
+
let removedWrongFormatFilesCount = 0;
|
|
53
|
+
for (const file of removedFilesNotInFormat){
|
|
54
|
+
try {
|
|
55
|
+
(0, _fs.unlinkSync)((0, _path.join)(path, file));
|
|
56
|
+
removedWrongFormatFilesCount++;
|
|
57
|
+
} catch (err) {
|
|
58
|
+
this.logger.warn(`Failed to delete log file ${file}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
let removedOutdatedFilesCount = 0;
|
|
62
|
+
for (const file of removedFilesOutdated){
|
|
63
|
+
try {
|
|
64
|
+
(0, _fs.unlinkSync)((0, _path.join)(path, file));
|
|
65
|
+
removedOutdatedFilesCount++;
|
|
66
|
+
} catch (err) {
|
|
67
|
+
this.logger.warn(`Failed to delete log file ${file}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
this.logger.log(`Removed ${removedWrongFormatFilesCount + removedOutdatedFilesCount} log file(s)`);
|
|
71
|
+
return {
|
|
72
|
+
removedWrongFormatFilesCount,
|
|
73
|
+
removedOutdatedFilesCount
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
async dumpZip() {
|
|
77
|
+
this.logger.log("Dumping logs as ZIP");
|
|
78
|
+
const zip = new _admzip.default();
|
|
79
|
+
const path = (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultLogsFolder);
|
|
80
|
+
zip.addLocalFolder(path, "/logs", "*.log");
|
|
81
|
+
const outputPath = (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultLogZipsFolder, `logs-${_serverconstants.AppConstants.serverRepoName}.zip`);
|
|
82
|
+
zip.writeZip(outputPath);
|
|
83
|
+
return outputPath;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
//# sourceMappingURL=logs-manager.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/core/logs-manager.service.ts"],"names":["LogDumpService","logger","constructor","loggerFactory","name","deleteOlderThanWeekAndMismatchingLogFiles","log","path","join","superRootPath","AppConstants","defaultLogsFolder","dirEntries","readdirSync","withFileTypes","files","filter","dirent","isFile","map","startingFormat","logAppName","removedFilesNotInFormat","f","endsWith","startsWith","removedFilesOutdated","matchesFormat","strippedFilename","replace","date","Date","isValidDate","warn","now","diff","getTime","diffDays","length","removedWrongFormatFilesCount","file","unlinkSync","err","removedOutdatedFilesCount","dumpZip","zip","AdmZip","addLocalFolder","outputPath","defaultLogZipsFolder","serverRepoName","writeZip"],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "MonsterPiService", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return MonsterPiService;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _node = require("@sentry/node");
|
|
12
|
+
const _fs = require("fs");
|
|
13
|
+
const _serverconstants = require("../../server.constants");
|
|
14
|
+
class MonsterPiService {
|
|
15
|
+
monsterPiVersion = null;
|
|
16
|
+
logger;
|
|
17
|
+
fileLocation = _serverconstants.AppConstants.monsterPiFilePath;
|
|
18
|
+
constructor({ loggerFactory }){
|
|
19
|
+
this.logger = loggerFactory(MonsterPiService.name);
|
|
20
|
+
}
|
|
21
|
+
getMonsterPiVersionSafe() {
|
|
22
|
+
const fileExists = (0, _fs.existsSync)(this.fileLocation);
|
|
23
|
+
if (!fileExists) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const contents = (0, _fs.readFileSync)(this.fileLocation);
|
|
28
|
+
this.monsterPiVersion = contents.toString().replaceAll(" ", "");
|
|
29
|
+
return this.monsterPiVersion;
|
|
30
|
+
} catch (e) {
|
|
31
|
+
this.logger.warn("Error checking MonsterPi version");
|
|
32
|
+
(0, _node.captureException)(e);
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=monsterpi.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/core/monsterpi.service.ts"],"names":["MonsterPiService","monsterPiVersion","logger","fileLocation","AppConstants","monsterPiFilePath","constructor","loggerFactory","name","getMonsterPiVersionSafe","fileExists","existsSync","contents","readFileSync","toString","replaceAll","e","warn","captureException"],"mappings":";;;;+BAKaA;;;eAAAA;;;sBALoB;oBACQ;iCACZ;AAGtB,MAAMA;IACXC,mBAAkC,KAAK;IACvCC,OAAO;IACCC,eAAeC,6BAAY,CAACC,iBAAiB,CAAC;IAEtDC,YAAY,EAAEC,aAAa,EAAqC,CAAE;QAChE,IAAI,CAACL,MAAM,GAAGK,cAAcP,iBAAiBQ,IAAI;IACnD;IAEAC,0BAA0B;QACxB,MAAMC,aAAaC,IAAAA,cAAU,EAAC,IAAI,CAACR,YAAY;QAC/C,IAAI,CAACO,YAAY;YACf,OAAO;QACT;QAEA,IAAI;YACF,MAAME,WAAWC,IAAAA,gBAAY,EAAC,IAAI,CAACV,YAAY;YAC/C,IAAI,CAACF,gBAAgB,GAAGW,SAASE,QAAQ,GAAGC,UAAU,CAAC,KAAK;YAC5D,OAAO,IAAI,CAACd,gBAAgB;QAC9B,EAAE,OAAOe,GAAG;YACV,IAAI,CAACd,MAAM,CAACe,IAAI,CAAC;YACjBC,IAAAA,sBAAgB,EAACF;QACnB;QACA,OAAO;IACT;AACF"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "MulterService", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return MulterService;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _multer = /*#__PURE__*/ _interop_require_default(require("multer"));
|
|
12
|
+
const _path = require("path");
|
|
13
|
+
const _fs = require("fs");
|
|
14
|
+
const _fsutils = require("../../utils/fs.utils");
|
|
15
|
+
const _serverconstants = require("../../server.constants");
|
|
16
|
+
function _interop_require_default(obj) {
|
|
17
|
+
return obj && obj.__esModule ? obj : {
|
|
18
|
+
default: obj
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
class MulterService {
|
|
22
|
+
fileUploadTrackerCache;
|
|
23
|
+
httpClient;
|
|
24
|
+
constructor({ fileUploadTrackerCache, httpClient }){
|
|
25
|
+
this.fileUploadTrackerCache = fileUploadTrackerCache;
|
|
26
|
+
this.httpClient = httpClient;
|
|
27
|
+
}
|
|
28
|
+
getNewestFile(collection) {
|
|
29
|
+
const dirPath = this.collectionPath(collection);
|
|
30
|
+
const files = this.orderRecentFiles(dirPath);
|
|
31
|
+
const latestFile = files.length ? files[0] : undefined;
|
|
32
|
+
return latestFile ? (0, _path.join)(dirPath, latestFile.file) : undefined;
|
|
33
|
+
}
|
|
34
|
+
clearUploadsFolder() {
|
|
35
|
+
const fileStoragePath = (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultFileStorageFolder);
|
|
36
|
+
if (!(0, _fs.existsSync)(fileStoragePath)) return;
|
|
37
|
+
const files = (0, _fs.readdirSync)(fileStoragePath, {
|
|
38
|
+
withFileTypes: true
|
|
39
|
+
}).filter((item)=>!item.isDirectory()).map((item)=>item.name);
|
|
40
|
+
for (const file of files){
|
|
41
|
+
(0, _fs.unlink)((0, _path.join)(fileStoragePath, file), (err)=>{
|
|
42
|
+
/* istanbul ignore next */ if (err) throw err;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
fileExists(downloadFilename, collection) {
|
|
47
|
+
const downloadPath = (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultFileStorageFolder, collection, downloadFilename);
|
|
48
|
+
return (0, _fs.existsSync)(downloadPath);
|
|
49
|
+
}
|
|
50
|
+
async downloadFile(downloadUrl, downloadFilename, collection) {
|
|
51
|
+
const downloadFolder = (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultFileStorageFolder, collection);
|
|
52
|
+
if (!(0, _fs.existsSync)(downloadFolder)) {
|
|
53
|
+
(0, _fs.mkdirSync)(downloadFolder, {
|
|
54
|
+
recursive: true
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
const downloadPath = (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultFileStorageFolder, collection, downloadFilename);
|
|
58
|
+
const fileStream = (0, _fs.createWriteStream)(downloadPath);
|
|
59
|
+
const res = await this.httpClient.get(downloadUrl);
|
|
60
|
+
return await new Promise((resolve, reject)=>{
|
|
61
|
+
fileStream.write(res.data);
|
|
62
|
+
fileStream.on("error", (err)=>{
|
|
63
|
+
return reject(err);
|
|
64
|
+
});
|
|
65
|
+
fileStream.on("finish", async ()=>{
|
|
66
|
+
return resolve();
|
|
67
|
+
});
|
|
68
|
+
fileStream.on("close", async ()=>{
|
|
69
|
+
return resolve();
|
|
70
|
+
});
|
|
71
|
+
resolve();
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
getMulterGCodeFileFilter(storeAsFile = true) {
|
|
75
|
+
return this.getMulterFileFilter(".gcode", storeAsFile);
|
|
76
|
+
}
|
|
77
|
+
async multerLoadFileAsync(req, res, fileExtension, storeAsFile = true) {
|
|
78
|
+
return await new Promise((resolve, reject)=>this.getMulterFileFilter(fileExtension, storeAsFile)(req, res, (err)=>{
|
|
79
|
+
if (err) {
|
|
80
|
+
return reject(err);
|
|
81
|
+
}
|
|
82
|
+
resolve(req.files);
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
getMulterFileFilter(fileExtension, storeAsFile = true) {
|
|
86
|
+
return (0, _multer.default)({
|
|
87
|
+
storage: storeAsFile ? _multer.default.diskStorage({
|
|
88
|
+
destination: (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultFileStorageFolder)
|
|
89
|
+
}) : _multer.default.memoryStorage(),
|
|
90
|
+
fileFilter: this.multerFileFilter(fileExtension)
|
|
91
|
+
}).any();
|
|
92
|
+
}
|
|
93
|
+
multerFileFilter(extension) {
|
|
94
|
+
return (req, file, callback)=>{
|
|
95
|
+
const ext = (0, _path.extname)(file.originalname);
|
|
96
|
+
if (extension?.length && ext !== extension) {
|
|
97
|
+
return callback(new Error(`Only files with extension ${extension} are allowed`));
|
|
98
|
+
}
|
|
99
|
+
return callback(null, true);
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
startTrackingSession(multerFile) {
|
|
103
|
+
return this.fileUploadTrackerCache.addUploadTracker(multerFile);
|
|
104
|
+
}
|
|
105
|
+
getSessions() {
|
|
106
|
+
return this.fileUploadTrackerCache.getUploads();
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
*@param dir
|
|
110
|
+
* @returns {{file: *, mtime: Date}[]}
|
|
111
|
+
*/ orderRecentFiles = (dir)=>{
|
|
112
|
+
return (0, _fs.readdirSync)(dir).filter((file)=>(0, _fs.lstatSync)((0, _path.join)(dir, file)).isFile()).map((file)=>({
|
|
113
|
+
file,
|
|
114
|
+
mtime: (0, _fs.lstatSync)((0, _path.join)(dir, file)).mtime
|
|
115
|
+
})).sort((a, b)=>b.mtime.getTime() - a.mtime.getTime());
|
|
116
|
+
};
|
|
117
|
+
collectionPath(collection) {
|
|
118
|
+
return (0, _path.join)((0, _fsutils.superRootPath)(), _serverconstants.AppConstants.defaultFileStorageFolder, collection);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
//# sourceMappingURL=multer.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/core/multer.service.ts"],"names":["MulterService","fileUploadTrackerCache","httpClient","constructor","getNewestFile","collection","dirPath","collectionPath","files","orderRecentFiles","latestFile","length","undefined","join","file","clearUploadsFolder","fileStoragePath","superRootPath","AppConstants","defaultFileStorageFolder","existsSync","readdirSync","withFileTypes","filter","item","isDirectory","map","name","unlink","err","fileExists","downloadFilename","downloadPath","downloadFile","downloadUrl","downloadFolder","mkdirSync","recursive","fileStream","createWriteStream","res","get","Promise","resolve","reject","write","data","on","getMulterGCodeFileFilter","storeAsFile","getMulterFileFilter","multerLoadFileAsync","req","fileExtension","multer","storage","diskStorage","destination","memoryStorage","fileFilter","multerFileFilter","any","extension","callback","ext","extname","originalname","Error","startTrackingSession","multerFile","addUploadTracker","getSessions","getUploads","dir","lstatSync","isFile","mtime","sort","a","b","getTime"],"mappings":";;;;+BAQaA;;;eAAAA;;;+DARM;sBACW;oBAC2D;yBAC3D;iCACD;;;;;;AAItB,MAAMA;IACXC,uBAA+C;IAC/CC,WAAwB;IAExBC,YAAY,EACVF,sBAAsB,EACtBC,UAAU,EAIX,CAAE;QACD,IAAI,CAACD,sBAAsB,GAAGA;QAC9B,IAAI,CAACC,UAAU,GAAGA;IACpB;IAEAE,cAAcC,UAAU,EAAE;QACxB,MAAMC,UAAU,IAAI,CAACC,cAAc,CAACF;QACpC,MAAMG,QAAQ,IAAI,CAACC,gBAAgB,CAACH;QACpC,MAAMI,aAAaF,MAAMG,MAAM,GAAGH,KAAK,CAAC,EAAE,GAAGI;QAC7C,OAAOF,aAAaG,IAAAA,UAAI,EAACP,SAASI,WAAWI,IAAI,IAAIF;IACvD;IAEAG,qBAAqB;QACnB,MAAMC,kBAAkBH,IAAAA,UAAI,EAACI,IAAAA,sBAAa,KAAIC,6BAAY,CAACC,wBAAwB;QACnF,IAAI,CAACC,IAAAA,cAAU,EAACJ,kBAAkB;QAElC,MAAMR,QAAQa,IAAAA,eAAW,EAACL,iBAAiB;YAAEM,eAAe;QAAK,GAC9DC,MAAM,CAAC,CAACC,OAAS,CAACA,KAAKC,WAAW,IAClCC,GAAG,CAAC,CAACF,OAASA,KAAKG,IAAI;QAE1B,KAAK,MAAMb,QAAQN,MAAO;YACxBoB,IAAAA,UAAM,EAACf,IAAAA,UAAI,EAACG,iBAAiBF,OAAO,CAACe;gBACnC,wBAAwB,GACxB,IAAIA,KAAK,MAAMA;YACjB;QACF;IACF;IAEAC,WAAWC,gBAAgB,EAAE1B,UAAU,EAAE;QACvC,MAAM2B,eAAenB,IAAAA,UAAI,EAACI,IAAAA,sBAAa,KAAIC,6BAAY,CAACC,wBAAwB,EAAEd,YAAY0B;QAC9F,OAAOX,IAAAA,cAAU,EAACY;IACpB;IAEA,MAAMC,aAAaC,WAAW,EAAEH,gBAAgB,EAAE1B,UAAU,EAAE;QAC5D,MAAM8B,iBAAiBtB,IAAAA,UAAI,EAACI,IAAAA,sBAAa,KAAIC,6BAAY,CAACC,wBAAwB,EAAEd;QACpF,IAAI,CAACe,IAAAA,cAAU,EAACe,iBAAiB;YAC/BC,IAAAA,aAAS,EAACD,gBAAgB;gBAAEE,WAAW;YAAK;QAC9C;QACA,MAAML,eAAenB,IAAAA,UAAI,EAACI,IAAAA,sBAAa,KAAIC,6BAAY,CAACC,wBAAwB,EAAEd,YAAY0B;QAC9F,MAAMO,aAAaC,IAAAA,qBAAiB,EAACP;QAErC,MAAMQ,MAAM,MAAM,IAAI,CAACtC,UAAU,CAACuC,GAAG,CAACP;QACtC,OAAO,MAAM,IAAIQ,QAAQ,CAACC,SAASC;YACjCN,WAAWO,KAAK,CAACL,IAAIM,IAAI;YACzBR,WAAWS,EAAE,CAAC,SAAS,CAAClB;gBACtB,OAAOe,OAAOf;YAChB;YACAS,WAAWS,EAAE,CAAC,UAAU;gBACtB,OAAOJ;YACT;YACAL,WAAWS,EAAE,CAAC,SAAS;gBACrB,OAAOJ;YACT;YACAA;QACF;IACF;IAEAK,yBAAyBC,cAAc,IAAI,EAAE;QAC3C,OAAO,IAAI,CAACC,mBAAmB,CAAC,UAAUD;IAC5C;IAEA,MAAME,oBAAoBC,GAAG,EAAEZ,GAAG,EAAEa,aAAa,EAAEJ,cAAc,IAAI,EAAE;QACrE,OAAO,MAAM,IAAIP,QAAQ,CAACC,SAASC,SACjC,IAAI,CAACM,mBAAmB,CAACG,eAAeJ,aAAaG,KAAKZ,KAAK,CAACX;gBAC9D,IAAIA,KAAK;oBACP,OAAOe,OAAOf;gBAChB;gBACAc,QAAQS,IAAI5C,KAAK;YACnB;IAEJ;IAEA0C,oBAAoBG,aAAa,EAAEJ,cAAc,IAAI,EAAE;QACrD,OAAOK,IAAAA,eAAM,EAAC;YACZC,SAASN,cACLK,eAAM,CAACE,WAAW,CAAC;gBACjBC,aAAa5C,IAAAA,UAAI,EAACI,IAAAA,sBAAa,KAAIC,6BAAY,CAACC,wBAAwB;YAC1E,KACAmC,eAAM,CAACI,aAAa;YACxBC,YAAY,IAAI,CAACC,gBAAgB,CAACP;QACpC,GAAGQ,GAAG;IACR;IAEAD,iBAAiBE,SAAS,EAAE;QAC1B,OAAO,CAACV,KAAKtC,MAAMiD;YACjB,MAAMC,MAAMC,IAAAA,aAAO,EAACnD,KAAKoD,YAAY;YACrC,IAAIJ,WAAWnD,UAAUqD,QAAQF,WAAW;gBAC1C,OAAOC,SAAS,IAAII,MAAM,CAAC,0BAA0B,EAAEL,UAAU,YAAY,CAAC;YAChF;YACA,OAAOC,SAAS,MAAM;QACxB;IACF;IAEAK,qBAAqBC,UAAU,EAAE;QAC/B,OAAO,IAAI,CAACpE,sBAAsB,CAACqE,gBAAgB,CAACD;IACtD;IAEAE,cAAc;QACZ,OAAO,IAAI,CAACtE,sBAAsB,CAACuE,UAAU;IAC/C;IAEA;;;GAGC,GACD,AAAQ/D,mBAAmB,CAACgE;QAC1B,OAAOpD,IAAAA,eAAW,EAACoD,KAChBlD,MAAM,CAAC,CAACT,OAAS4D,IAAAA,aAAS,EAAC7D,IAAAA,UAAI,EAAC4D,KAAK3D,OAAO6D,MAAM,IAClDjD,GAAG,CAAC,CAACZ,OAAU,CAAA;gBAAEA;gBAAM8D,OAAOF,IAAAA,aAAS,EAAC7D,IAAAA,UAAI,EAAC4D,KAAK3D,OAAO8D,KAAK;YAAC,CAAA,GAC/DC,IAAI,CAAC,CAACC,GAAGC,IAAMA,EAAEH,KAAK,CAACI,OAAO,KAAKF,EAAEF,KAAK,CAACI,OAAO;IACvD,EAAE;IAEMzE,eAAeF,UAAU,EAAU;QACzC,OAAOQ,IAAAA,UAAI,EAACI,IAAAA,sBAAa,KAAIC,6BAAY,CAACC,wBAAwB,EAAEd;IACtE;AACF"}
|