@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,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
authenticate: function() {
|
|
13
|
+
return authenticate;
|
|
14
|
+
},
|
|
15
|
+
authorizePermission: function() {
|
|
16
|
+
return authorizePermission;
|
|
17
|
+
},
|
|
18
|
+
authorizeRoles: function() {
|
|
19
|
+
return authorizeRoles;
|
|
20
|
+
},
|
|
21
|
+
withPermission: function() {
|
|
22
|
+
return withPermission;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
const _awilixexpress = require("awilix-express");
|
|
26
|
+
const _runtimeexceptions = require("../exceptions/runtime.exceptions");
|
|
27
|
+
function authorizePermission(permission) {
|
|
28
|
+
return (0, _awilixexpress.inject)(({ permissionService, roleService })=>async (req, res, next)=>{
|
|
29
|
+
if (!req.roles?.length) {
|
|
30
|
+
throw new _runtimeexceptions.AuthorizationError({
|
|
31
|
+
permissions: [
|
|
32
|
+
permission
|
|
33
|
+
]
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
const assignedPermissions = roleService.getRolesPermissions(req.roles);
|
|
37
|
+
if (!permissionService.authorizePermission(permission, assignedPermissions)) {
|
|
38
|
+
throw new _runtimeexceptions.AuthorizationError({
|
|
39
|
+
permissions: [
|
|
40
|
+
permission
|
|
41
|
+
]
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
next();
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
const authenticate = ()=>(0, _awilixexpress.inject)(({ settingsStore, authService })=>async (req, res, next)=>{
|
|
48
|
+
const isLoginRequired = await settingsStore.getLoginRequired();
|
|
49
|
+
if (!isLoginRequired) {
|
|
50
|
+
return next();
|
|
51
|
+
}
|
|
52
|
+
// Check if a password change is required
|
|
53
|
+
if (req.user?.needsPasswordChange) {
|
|
54
|
+
throw new _runtimeexceptions.PasswordChangeRequiredError();
|
|
55
|
+
}
|
|
56
|
+
// Check if a logout was called
|
|
57
|
+
const bearer = req.headers.authorization?.replace("Bearer ", "") || undefined;
|
|
58
|
+
const isJwtBlacklisted = authService.isJwtTokenBlacklisted(bearer);
|
|
59
|
+
if (!!bearer?.length && isJwtBlacklisted) {
|
|
60
|
+
throw new _runtimeexceptions.AuthenticationError("Not authenticated");
|
|
61
|
+
}
|
|
62
|
+
if (req.isAuthenticated()) {
|
|
63
|
+
return next();
|
|
64
|
+
}
|
|
65
|
+
throw new _runtimeexceptions.AuthenticationError("Not authenticated");
|
|
66
|
+
});
|
|
67
|
+
const authorizeRoles = (roles, subset = true)=>(0, _awilixexpress.inject)(({ roleService })=>async (req, res, next)=>{
|
|
68
|
+
if (!roleService.authorizeRoles(roles, req.roles, subset)) {
|
|
69
|
+
throw new _runtimeexceptions.AuthorizationError({
|
|
70
|
+
roles
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
next();
|
|
74
|
+
});
|
|
75
|
+
function withPermission(permission) {
|
|
76
|
+
return {
|
|
77
|
+
before: [
|
|
78
|
+
authorizePermission(permission)
|
|
79
|
+
]
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
//# sourceMappingURL=authenticate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/middleware/authenticate.ts"],"names":["authenticate","authorizePermission","authorizeRoles","withPermission","permission","inject","permissionService","roleService","req","res","next","roles","length","AuthorizationError","permissions","assignedPermissions","getRolesPermissions","settingsStore","authService","isLoginRequired","getLoginRequired","user","needsPasswordChange","PasswordChangeRequiredError","bearer","headers","authorization","replace","undefined","isJwtBlacklisted","isJwtTokenBlacklisted","AuthenticationError","isAuthenticated","subset","before"],"mappings":";;;;;;;;;;;IAmBaA,YAAY;eAAZA;;IAfGC,mBAAmB;eAAnBA;;IAwCHC,cAAc;eAAdA;;IASGC,cAAc;eAAdA;;;+BArDO;mCAC8D;AAG9E,SAASF,oBAAoBG,UAAkB;IACpD,OAAOC,IAAAA,qBAAM,EAAC,CAAC,EAAEC,iBAAiB,EAAEC,WAAW,EAAE,GAAK,OAAOC,KAAcC,KAAeC;YACxF,IAAI,CAACF,IAAIG,KAAK,EAAEC,QAAQ;gBACtB,MAAM,IAAIC,qCAAkB,CAAC;oBAAEC,aAAa;wBAACV;qBAAW;gBAAC;YAC3D;YAEA,MAAMW,sBAAsBR,YAAYS,mBAAmB,CAACR,IAAIG,KAAK;YACrE,IAAI,CAACL,kBAAkBL,mBAAmB,CAACG,YAAYW,sBAAsB;gBAC3E,MAAM,IAAIF,qCAAkB,CAAC;oBAAEC,aAAa;wBAACV;qBAAW;gBAAC;YAC3D;YAEAM;QACF;AACF;AAEO,MAAMV,eAAe,IAC1BK,IAAAA,qBAAM,EAAC,CAAC,EAAEY,aAAa,EAAEC,WAAW,EAAE,GAAK,OAAOV,KAAcC,KAAeC;YAC7E,MAAMS,kBAAkB,MAAMF,cAAcG,gBAAgB;YAC5D,IAAI,CAACD,iBAAiB;gBACpB,OAAOT;YACT;YAEA,yCAAyC;YACzC,IAAIF,IAAIa,IAAI,EAAEC,qBAAqB;gBACjC,MAAM,IAAIC,8CAA2B;YACvC;YAEA,+BAA+B;YAC/B,MAAMC,SAAShB,IAAIiB,OAAO,CAACC,aAAa,EAAEC,QAAQ,WAAW,OAAOC;YACpE,MAAMC,mBAAmBX,YAAYY,qBAAqB,CAACN;YAC3D,IAAI,CAAC,CAACA,QAAQZ,UAAUiB,kBAAkB;gBACxC,MAAM,IAAIE,sCAAmB,CAAC;YAChC;YAEA,IAAIvB,IAAIwB,eAAe,IAAI;gBACzB,OAAOtB;YACT;YAEA,MAAM,IAAIqB,sCAAmB,CAAC;QAChC;AACK,MAAM7B,iBAAiB,CAACS,OAAiBsB,SAAS,IAAI,GAC3D5B,IAAAA,qBAAM,EAAC,CAAC,EAAEE,WAAW,EAAE,GAAK,OAAOC,KAAcC,KAAeC;YAC9D,IAAI,CAACH,YAAYL,cAAc,CAACS,OAAOH,IAAIG,KAAK,EAAEsB,SAAS;gBACzD,MAAM,IAAIpB,qCAAkB,CAAC;oBAAEF;gBAAM;YACvC;YAEAD;QACF;AAEK,SAASP,eAAeC,UAAkB;IAC/C,OAAO;QACL8B,QAAQ;YAACjC,oBAAoBG;SAAY;IAC3C;AACF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "interceptDatabaseError", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return interceptDatabaseError;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _containertokens = require("../container.tokens");
|
|
12
|
+
async function interceptDatabaseError(req, res, next) {
|
|
13
|
+
const serverHost = req.container.resolve(_containertokens.DITokens.serverHost);
|
|
14
|
+
const databaseReadyState = serverHost.hasConnected();
|
|
15
|
+
if (databaseReadyState === 1) {
|
|
16
|
+
next();
|
|
17
|
+
} else {
|
|
18
|
+
res.status(500);
|
|
19
|
+
res.send({
|
|
20
|
+
databaseReadyState: serverHost.hasConnected(),
|
|
21
|
+
state: "Retrying mongo connection. Please contact the developer if this persists."
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/middleware/database.ts"],"names":["interceptDatabaseError","req","res","next","serverHost","container","resolve","DITokens","databaseReadyState","hasConnected","status","send","state"],"mappings":";;;;+BAMsBA;;;eAAAA;;;iCANG;AAMlB,eAAeA,uBAAuBC,GAAY,EAAEC,GAAa,EAAEC,IAAkB;IAC1F,MAAMC,aAAaH,IAAII,SAAS,CAACC,OAAO,CAACC,yBAAQ,CAACH,UAAU;IAE5D,MAAMI,qBAAqBJ,WAAWK,YAAY;IAClD,IAAID,uBAAuB,GAAG;QAC5BL;IACF,OAAO;QACLD,IAAIQ,MAAM,CAAC;QACXR,IAAIS,IAAI,CAAC;YACPH,oBAAoBJ,WAAWK,YAAY;YAC3CG,OAAO;QACT;IACF;AACF"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "exceptionHandler", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return exceptionHandler;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _runtimeexceptions = require("../exceptions/runtime.exceptions");
|
|
12
|
+
const _serverconstants = require("../server.constants");
|
|
13
|
+
const _httpstatuscodesconstants = require("../constants/http-status-codes.constants");
|
|
14
|
+
function exceptionHandler(err, req, res, next) {
|
|
15
|
+
const isTest = process.env.NODE_ENV === _serverconstants.AppConstants.defaultTestEnv;
|
|
16
|
+
if (!isTest) {
|
|
17
|
+
console.error("[API Exception Handler]", err.stack || err?.response?.data);
|
|
18
|
+
}
|
|
19
|
+
if (err.isAxiosError) {
|
|
20
|
+
const code = err.response?.status || 500;
|
|
21
|
+
return res.status(code).send({
|
|
22
|
+
error: "External API call failed",
|
|
23
|
+
type: "axios-error",
|
|
24
|
+
data: err.response?.data
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
if (err instanceof _runtimeexceptions.AuthenticationError) {
|
|
28
|
+
const code = err.statusCode || 401;
|
|
29
|
+
return res.status(code).send({
|
|
30
|
+
error: err.message
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
if (err instanceof _runtimeexceptions.AuthorizationError) {
|
|
34
|
+
const code = err.statusCode || 403;
|
|
35
|
+
const permissions = err.permissions;
|
|
36
|
+
const roles = err.roles;
|
|
37
|
+
const error = err.message || "You lack permission to this resource";
|
|
38
|
+
const reason = err.reason;
|
|
39
|
+
return res.status(code).send({
|
|
40
|
+
error,
|
|
41
|
+
reason,
|
|
42
|
+
permissions,
|
|
43
|
+
roles
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
if (err instanceof _runtimeexceptions.PasswordChangeRequiredError) {
|
|
47
|
+
const code = err.statusCode || _httpstatuscodesconstants.HttpStatusCode.CONFLICT;
|
|
48
|
+
return res.status(code).send({
|
|
49
|
+
error: err.message
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
if (err instanceof _runtimeexceptions.NotFoundException) {
|
|
53
|
+
const code = err.statusCode || 404;
|
|
54
|
+
return res.status(code).send({
|
|
55
|
+
error: err.message
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
if (err instanceof _runtimeexceptions.BadRequestException) {
|
|
59
|
+
const code = err.statusCode || 400;
|
|
60
|
+
return res.status(code).send({
|
|
61
|
+
error: err.message
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
if (err instanceof _runtimeexceptions.ValidationException) {
|
|
65
|
+
const code = err.statusCode || 400;
|
|
66
|
+
return res.status(code).send({
|
|
67
|
+
error: "API could not accept this input",
|
|
68
|
+
type: err.name,
|
|
69
|
+
errors: err.errors
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
if (err instanceof _runtimeexceptions.InternalServerException) {
|
|
73
|
+
const code = err.statusCode || 500;
|
|
74
|
+
return res.status(code).send({
|
|
75
|
+
error: err.message,
|
|
76
|
+
type: err.name,
|
|
77
|
+
stack: err.stack
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
if (err instanceof _runtimeexceptions.ExternalServiceError) {
|
|
81
|
+
const code = err.error.statusCode || 500;
|
|
82
|
+
return res.status(code).send(err.error);
|
|
83
|
+
}
|
|
84
|
+
if (!!err) {
|
|
85
|
+
const code = err.statusCode || 500;
|
|
86
|
+
return res.status(code).send({
|
|
87
|
+
error: "Server experienced an internal error",
|
|
88
|
+
type: err.name,
|
|
89
|
+
stack: err.stack
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
// Will result in not found on API level
|
|
93
|
+
next();
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
//# sourceMappingURL=exception.handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/middleware/exception.handler.ts"],"names":["exceptionHandler","err","req","res","next","isTest","process","env","NODE_ENV","AppConstants","defaultTestEnv","console","error","stack","response","data","isAxiosError","code","status","send","type","AuthenticationError","statusCode","message","AuthorizationError","permissions","roles","reason","PasswordChangeRequiredError","HttpStatusCode","CONFLICT","NotFoundException","BadRequestException","ValidationException","name","errors","InternalServerException","ExternalServiceError"],"mappings":";;;;+BAcgBA;;;eAAAA;;;mCALT;iCACsB;0CAEE;AAExB,SAASA,iBAAiBC,GAAG,EAAEC,GAAY,EAAEC,GAAa,EAAEC,IAAkB;IACnF,MAAMC,SAASC,QAAQC,GAAG,CAACC,QAAQ,KAAKC,6BAAY,CAACC,cAAc;IACnE,IAAI,CAACL,QAAQ;QACXM,QAAQC,KAAK,CAAC,2BAA2BX,IAAIY,KAAK,IAAIZ,KAAKa,UAAUC;IACvE;IACA,IAAId,IAAIe,YAAY,EAAE;QACpB,MAAMC,OAAOhB,IAAIa,QAAQ,EAAEI,UAAU;QACrC,OAAOf,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAC;YAC3BP,OAAO;YACPQ,MAAM;YACNL,MAAMd,IAAIa,QAAQ,EAAEC;QACtB;IACF;IACA,IAAId,eAAeoB,sCAAmB,EAAE;QACtC,MAAMJ,OAAOhB,IAAIqB,UAAU,IAAI;QAC/B,OAAOnB,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAC;YAAEP,OAAOX,IAAIsB,OAAO;QAAC;IACpD;IACA,IAAItB,eAAeuB,qCAAkB,EAAE;QACrC,MAAMP,OAAOhB,IAAIqB,UAAU,IAAI;QAC/B,MAAMG,cAAcxB,IAAIwB,WAAW;QACnC,MAAMC,QAAQzB,IAAIyB,KAAK;QACvB,MAAMd,QAAQX,IAAIsB,OAAO,IAAI;QAC7B,MAAMI,SAAS1B,IAAI0B,MAAM;QACzB,OAAOxB,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAC;YAAEP;YAAOe;YAAQF;YAAaC;QAAM;IACnE;IACA,IAAIzB,eAAe2B,8CAA2B,EAAE;QAC9C,MAAMX,OAAOhB,IAAIqB,UAAU,IAAIO,wCAAc,CAACC,QAAQ;QACtD,OAAO3B,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAC;YAAEP,OAAOX,IAAIsB,OAAO;QAAC;IACpD;IACA,IAAItB,eAAe8B,oCAAiB,EAAE;QACpC,MAAMd,OAAOhB,IAAIqB,UAAU,IAAI;QAC/B,OAAOnB,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAC;YAAEP,OAAOX,IAAIsB,OAAO;QAAC;IACpD;IACA,IAAItB,eAAe+B,sCAAmB,EAAE;QACtC,MAAMf,OAAOhB,IAAIqB,UAAU,IAAI;QAC/B,OAAOnB,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAC;YAAEP,OAAOX,IAAIsB,OAAO;QAAC;IACpD;IACA,IAAItB,eAAegC,sCAAmB,EAAE;QACtC,MAAMhB,OAAOhB,IAAIqB,UAAU,IAAI;QAC/B,OAAOnB,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAC;YAC3BP,OAAO;YACPQ,MAAMnB,IAAIiC,IAAI;YACdC,QAAQlC,IAAIkC,MAAM;QACpB;IACF;IACA,IAAIlC,eAAemC,0CAAuB,EAAE;QAC1C,MAAMnB,OAAOhB,IAAIqB,UAAU,IAAI;QAC/B,OAAOnB,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAC;YAC3BP,OAAOX,IAAIsB,OAAO;YAClBH,MAAMnB,IAAIiC,IAAI;YACdrB,OAAOZ,IAAIY,KAAK;QAClB;IACF;IACA,IAAIZ,eAAeoC,uCAAoB,EAAE;QACvC,MAAMpB,OAAOhB,IAAIW,KAAK,CAACU,UAAU,IAAI;QACrC,OAAOnB,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAClB,IAAIW,KAAK;IACxC;IACA,IAAI,CAAC,CAACX,KAAK;QACT,MAAMgB,OAAOhB,IAAIqB,UAAU,IAAI;QAC/B,OAAOnB,IAAIe,MAAM,CAACD,MAAME,IAAI,CAAC;YAC3BP,OAAO;YACPQ,MAAMnB,IAAIiC,IAAI;YACdrB,OAAOZ,IAAIY,KAAK;QAClB;IACF;IAEA,wCAAwC;IACxCT;AACF"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
interceptRoles: function() {
|
|
13
|
+
return interceptRoles;
|
|
14
|
+
},
|
|
15
|
+
validateWhitelistedIp: function() {
|
|
16
|
+
return validateWhitelistedIp;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const _awilixexpress = require("awilix-express");
|
|
20
|
+
const _serversettingsconstants = require("../constants/server-settings.constants");
|
|
21
|
+
const _runtimeexceptions = require("../exceptions/runtime.exceptions");
|
|
22
|
+
const validateWhitelistedIp = (0, _awilixexpress.inject)(({ settingsStore, loggerFactory })=>async (req, res, next)=>{
|
|
23
|
+
const logger = loggerFactory("validateWhitelistedIp");
|
|
24
|
+
const serverSettings = settingsStore.getSettings();
|
|
25
|
+
if (!serverSettings && !serverSettings[_serversettingsconstants.serverSettingsKey] || !serverSettings[_serversettingsconstants.serverSettingsKey]?.whitelistEnabled) {
|
|
26
|
+
next();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const whitelist = serverSettings[_serversettingsconstants.serverSettingsKey].whitelistedIpAddresses;
|
|
30
|
+
const ipAddress = req.socket.remoteAddress;
|
|
31
|
+
// Empty whitelist is treated as disabled as well
|
|
32
|
+
// Both ::ffff:127.0.0.1 and 127.0.0.1 will be accepted
|
|
33
|
+
if (whitelist?.length && !whitelist.includes(ipAddress) && ipAddress !== "::ffff:127.0.0.1") {
|
|
34
|
+
// Direct comparison did not pass - now parse wildcard subnets
|
|
35
|
+
const subnextMatched = whitelist.find((w)=>{
|
|
36
|
+
return ipAddress.startsWith(w);
|
|
37
|
+
});
|
|
38
|
+
if (!subnextMatched) {
|
|
39
|
+
logger.error("IP did not match whitelist filters", req.socket.remoteAddress);
|
|
40
|
+
throw new _runtimeexceptions.AuthenticationError("Bad IP: " + req.socket.remoteAddress);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
next();
|
|
44
|
+
});
|
|
45
|
+
const interceptRoles = (0, _awilixexpress.inject)(({ settingsStore, roleService })=>async (req, res, next)=>{
|
|
46
|
+
const serverSettings = await settingsStore.getSettings();
|
|
47
|
+
req.roles = req.user?.roles;
|
|
48
|
+
// If server settings are not set, we can't determine the default role
|
|
49
|
+
if (serverSettings && !req.user) {
|
|
50
|
+
const roleName = await roleService.getAppDefaultRole();
|
|
51
|
+
req.roles = [
|
|
52
|
+
roleName
|
|
53
|
+
];
|
|
54
|
+
}
|
|
55
|
+
next();
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
//# sourceMappingURL=global.middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/middleware/global.middleware.ts"],"names":["interceptRoles","validateWhitelistedIp","inject","settingsStore","loggerFactory","req","res","next","logger","serverSettings","getSettings","serverSettingsKey","whitelistEnabled","whitelist","whitelistedIpAddresses","ipAddress","socket","remoteAddress","length","includes","subnextMatched","find","w","startsWith","error","AuthenticationError","roleService","roles","user","roleName","getAppDefaultRole"],"mappings":";;;;;;;;;;;IAmCaA,cAAc;eAAdA;;IA9BAC,qBAAqB;eAArBA;;;+BALU;yCACW;mCACE;AAG7B,MAAMA,wBAAwBC,IAAAA,qBAAM,EACzC,CAAC,EAAEC,aAAa,EAAEC,aAAa,EAAE,GAC/B,OAAOC,KAAcC,KAAeC;QAClC,MAAMC,SAASJ,cAAc;QAC7B,MAAMK,iBAAiBN,cAAcO,WAAW;QAChD,IAAI,AAAC,CAACD,kBAAkB,CAACA,cAAc,CAACE,0CAAiB,CAAC,IAAK,CAACF,cAAc,CAACE,0CAAiB,CAAC,EAAEC,kBAAkB;YACnHL;YACA;QACF;QAEA,MAAMM,YAAYJ,cAAc,CAACE,0CAAiB,CAAC,CAACG,sBAAsB;QAC1E,MAAMC,YAAYV,IAAIW,MAAM,CAACC,aAAa;QAC1C,iDAAiD;QACjD,uDAAuD;QACvD,IAAIJ,WAAWK,UAAU,CAACL,UAAUM,QAAQ,CAACJ,cAAcA,cAAc,oBAAoB;YAC3F,8DAA8D;YAC9D,MAAMK,iBAAiBP,UAAUQ,IAAI,CAAC,CAACC;gBACrC,OAAOP,UAAUQ,UAAU,CAACD;YAC9B;YAEA,IAAI,CAACF,gBAAgB;gBACnBZ,OAAOgB,KAAK,CAAC,sCAAsCnB,IAAIW,MAAM,CAACC,aAAa;gBAC3E,MAAM,IAAIQ,sCAAmB,CAAC,aAAapB,IAAIW,MAAM,CAACC,aAAa;YACrE;QACF;QAEAV;IACF;AAGG,MAAMP,iBAAiBE,IAAAA,qBAAM,EAClC,CAAC,EAAEC,aAAa,EAAEuB,WAAW,EAAE,GAC7B,OAAOrB,KAAcC,KAAeC;QAClC,MAAME,iBAAiB,MAAMN,cAAcO,WAAW;QAEtDL,IAAIsB,KAAK,GAAGtB,IAAIuB,IAAI,EAAED;QAEtB,sEAAsE;QACtE,IAAIlB,kBAAkB,CAACJ,IAAIuB,IAAI,EAAE;YAC/B,MAAMC,WAAW,MAAMH,YAAYI,iBAAiB;YACpDzB,IAAIsB,KAAK,GAAG;gBAACE;aAAS;QACxB;QAEAtB;IACF"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "initializePassportStrategies", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return initializePassportStrategies;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _passportjwt = require("passport-jwt");
|
|
12
|
+
const _passportanonymous = require("passport-anonymous");
|
|
13
|
+
const _models = require("../models");
|
|
14
|
+
const _containertokens = require("../container.tokens");
|
|
15
|
+
const _serverconstants = require("../server.constants");
|
|
16
|
+
function initializePassportStrategies(passport, container) {
|
|
17
|
+
const settingsStore = container.resolve(_containertokens.DITokens.settingsStore);
|
|
18
|
+
const configService = container.resolve(_containertokens.DITokens.configService);
|
|
19
|
+
const opts = {
|
|
20
|
+
jwtFromRequest: _passportjwt.ExtractJwt.fromAuthHeaderAsBearerToken(),
|
|
21
|
+
secretOrKeyProvider: async (req, token, done)=>{
|
|
22
|
+
const { jwtSecret } = await settingsStore.getCredentialSettings();
|
|
23
|
+
return done(null, jwtSecret);
|
|
24
|
+
},
|
|
25
|
+
audience: configService.get(_serverconstants.AppConstants.OVERRIDE_JWT_AUDIENCE, _serverconstants.AppConstants.DEFAULT_JWT_AUDIENCE),
|
|
26
|
+
issuer: configService.get(_serverconstants.AppConstants.OVERRIDE_JWT_ISSUER, _serverconstants.AppConstants.DEFAULT_JWT_ISSUER)
|
|
27
|
+
};
|
|
28
|
+
passport.use(new _passportjwt.Strategy(opts, function(jwt_payload, done) {
|
|
29
|
+
_models.User.findById(jwt_payload.userId, function(err, user) {
|
|
30
|
+
if (err) {
|
|
31
|
+
return done(err, false);
|
|
32
|
+
}
|
|
33
|
+
if (user) {
|
|
34
|
+
return done(null, user);
|
|
35
|
+
} else {
|
|
36
|
+
return done(null, false);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}));
|
|
40
|
+
passport.use(new _passportanonymous.Strategy());
|
|
41
|
+
return passport;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=passport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/middleware/passport.ts"],"names":["initializePassportStrategies","passport","container","settingsStore","resolve","DITokens","configService","opts","jwtFromRequest","ExtractJwt","fromAuthHeaderAsBearerToken","secretOrKeyProvider","req","token","done","jwtSecret","getCredentialSettings","audience","get","AppConstants","OVERRIDE_JWT_AUDIENCE","DEFAULT_JWT_AUDIENCE","issuer","OVERRIDE_JWT_ISSUER","DEFAULT_JWT_ISSUER","use","JwtStrategy","jwt_payload","User","findById","userId","err","user","AnonymousStrategy"],"mappings":";;;;+BAWgBA;;;eAAAA;;;6BAXqD;mCACvB;wBACzB;iCACI;iCACI;AAOtB,SAASA,6BAA6BC,QAAwB,EAAEC,SAA+B;IACpG,MAAMC,gBAAgBD,UAAUE,OAAO,CAAgBC,yBAAQ,CAACF,aAAa;IAC7E,MAAMG,gBAAgBJ,UAAUE,OAAO,CAAgBC,yBAAQ,CAACC,aAAa;IAE7E,MAAMC,OAAwB;QAC5BC,gBAAgBC,uBAAU,CAACC,2BAA2B;QACtDC,qBAAqB,OAAOC,KAAKC,OAAeC;YAC9C,MAAM,EAAEC,SAAS,EAAE,GAAG,MAAMZ,cAAca,qBAAqB;YAC/D,OAAOF,KAAK,MAAMC;QACpB;QACAE,UAAUX,cAAcY,GAAG,CAACC,6BAAY,CAACC,qBAAqB,EAAED,6BAAY,CAACE,oBAAoB;QACjGC,QAAQhB,cAAcY,GAAG,CAACC,6BAAY,CAACI,mBAAmB,EAAEJ,6BAAY,CAACK,kBAAkB;IAC7F;IAEAvB,SAASwB,GAAG,CACV,IAAIC,qBAAW,CAACnB,MAAM,SAAUoB,WAAW,EAAEb,IAAI;QAC/Cc,YAAI,CAACC,QAAQ,CAACF,YAAYG,MAAM,EAAE,SAAUC,GAAQ,EAAEC,IAAW;YAC/D,IAAID,KAAK;gBACP,OAAOjB,KAAKiB,KAAK;YACnB;YACA,IAAIC,MAAM;gBACR,OAAOlB,KAAK,MAAMkB;YACpB,OAAO;gBACL,OAAOlB,KAAK,MAAM;YACpB;QACF;IACF;IAEFb,SAASwB,GAAG,CAAC,IAAIQ,2BAAiB;IAClC,OAAOhC;AACT"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
currentPrinterToken: function() {
|
|
13
|
+
return currentPrinterToken;
|
|
14
|
+
},
|
|
15
|
+
printerIdToken: function() {
|
|
16
|
+
return printerIdToken;
|
|
17
|
+
},
|
|
18
|
+
printerLoginToken: function() {
|
|
19
|
+
return printerLoginToken;
|
|
20
|
+
},
|
|
21
|
+
printerResolveMiddleware: function() {
|
|
22
|
+
return printerResolveMiddleware;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
const _awilix = require("awilix");
|
|
26
|
+
const _containertokens = require("../container.tokens");
|
|
27
|
+
const printerIdToken = "currentPrinterId";
|
|
28
|
+
const currentPrinterToken = "currentPrinter";
|
|
29
|
+
const printerLoginToken = "printerLogin";
|
|
30
|
+
const printerResolveMiddleware = (key = "id")=>{
|
|
31
|
+
return (req, res, next)=>{
|
|
32
|
+
const printerCache = req.container.resolve(_containertokens.DITokens.printerCache);
|
|
33
|
+
let scopedPrinter = undefined;
|
|
34
|
+
let loginDto = undefined;
|
|
35
|
+
const printerId = req.params[key];
|
|
36
|
+
if (printerId) {
|
|
37
|
+
scopedPrinter = printerCache.getCachedPrinterOrThrow(printerId);
|
|
38
|
+
loginDto = printerCache.getLoginDto(printerId);
|
|
39
|
+
}
|
|
40
|
+
req.container.register({
|
|
41
|
+
[currentPrinterToken]: (0, _awilix.asValue)(scopedPrinter),
|
|
42
|
+
[printerLoginToken]: (0, _awilix.asValue)(loginDto),
|
|
43
|
+
[printerIdToken]: (0, _awilix.asValue)(printerId)
|
|
44
|
+
});
|
|
45
|
+
next();
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=printer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/middleware/printer.ts"],"names":["currentPrinterToken","printerIdToken","printerLoginToken","printerResolveMiddleware","key","req","res","next","printerCache","container","resolve","DITokens","scopedPrinter","undefined","loginDto","printerId","params","getCachedPrinterOrThrow","getLoginDto","register","asValue"],"mappings":";;;;;;;;;;;IAMaA,mBAAmB;eAAnBA;;IADAC,cAAc;eAAdA;;IAEAC,iBAAiB;eAAjBA;;IAEAC,wBAAwB;eAAxBA;;;wBATW;iCACC;AAIlB,MAAMF,iBAAiB;AACvB,MAAMD,sBAAsB;AAC5B,MAAME,oBAAoB;AAE1B,MAAMC,2BAA2B,CAACC,MAAM,IAAI;IACjD,OAAO,CAACC,KAAcC,KAAeC;QACnC,MAAMC,eAAeH,IAAII,SAAS,CAACC,OAAO,CAAeC,yBAAQ,CAACH,YAAY;QAE9E,IAAII,gBAAgBC;QACpB,IAAIC,WAAWD;QAEf,MAAME,YAAYV,IAAIW,MAAM,CAACZ,IAAI;QACjC,IAAIW,WAAW;YACbH,gBAAgBJ,aAAaS,uBAAuB,CAACF;YACrDD,WAAWN,aAAaU,WAAW,CAACH;QACtC;QAEAV,IAAII,SAAS,CAACU,QAAQ,CAAC;YACrB,CAACnB,oBAAoB,EAAEoB,IAAAA,eAAO,EAACR;YAC/B,CAACV,kBAAkB,EAAEkB,IAAAA,eAAO,EAACN;YAC7B,CAACb,eAAe,EAAEmB,IAAAA,eAAO,EAACL;QAC5B;QAEAR;IACF;AACF"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "PrinterFile1696187882312", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return PrinterFile1696187882312;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
class PrinterFile1696187882312 {
|
|
12
|
+
name = 'PrinterFile1696187882312';
|
|
13
|
+
async up(queryRunner) {
|
|
14
|
+
await queryRunner.query(`
|
|
15
|
+
CREATE TABLE "printer_file" (
|
|
16
|
+
"id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
17
|
+
"name" varchar NOT NULL,
|
|
18
|
+
"date" integer NOT NULL,
|
|
19
|
+
"display" varchar NOT NULL,
|
|
20
|
+
"gcodeAnalysis" text NOT NULL,
|
|
21
|
+
"hash" varchar NOT NULL,
|
|
22
|
+
"origin" varchar NOT NULL,
|
|
23
|
+
"path" varchar NOT NULL,
|
|
24
|
+
"prints" text NOT NULL,
|
|
25
|
+
"refs" text NOT NULL,
|
|
26
|
+
"size" integer NOT NULL,
|
|
27
|
+
"statistics" text NOT NULL,
|
|
28
|
+
"type" varchar NOT NULL,
|
|
29
|
+
"typePath" text NOT NULL
|
|
30
|
+
)
|
|
31
|
+
`);
|
|
32
|
+
}
|
|
33
|
+
async down(queryRunner) {
|
|
34
|
+
await queryRunner.query(`
|
|
35
|
+
DROP TABLE "printer_file"
|
|
36
|
+
`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=1696187882312-PrinterFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/migrations/1696187882312-PrinterFile.ts"],"names":["PrinterFile1696187882312","name","up","queryRunner","query","down"],"mappings":";;;;+BAEaA;;;eAAAA;;;AAAN,MAAMA;IACTC,OAAO,2BAA0B;IAEjC,MAAaC,GAAGC,WAAwB,EAAiB;QACrD,MAAMA,YAAYC,KAAK,CAAC,CAAC;;;;;;;;;;;;;;;;;QAiBzB,CAAC;IACL;IAEA,MAAaC,KAAKF,WAAwB,EAAiB;QACvD,MAAMA,YAAYC,KAAK,CAAC,CAAC;;QAEzB,CAAC;IACL;AAEJ"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "Permission", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return Permission;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _mongoose = require("mongoose");
|
|
12
|
+
const PermissionSchema = new _mongoose.Schema({
|
|
13
|
+
name: {
|
|
14
|
+
type: String,
|
|
15
|
+
required: true
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
const Permission = (0, _mongoose.model)("Permission", PermissionSchema);
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=Permission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/models/Auth/Permission.ts"],"names":["Permission","PermissionSchema","Schema","name","type","String","required","model"],"mappings":";;;;+BAcaA;;;eAAAA;;;0BAdiB;AAO9B,MAAMC,mBAAmB,IAAIC,gBAAM,CAAc;IAC/CC,MAAM;QACJC,MAAMC;QACNC,UAAU;IACZ;AACF;AAEO,MAAMN,aAAaO,IAAAA,eAAK,EAAC,cAAcN"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "RefreshToken", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return RefreshToken;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _mongoose = require("mongoose");
|
|
12
|
+
const RefreshTokenSchema = new _mongoose.Schema({
|
|
13
|
+
userId: {
|
|
14
|
+
type: _mongoose.Schema.Types.ObjectId,
|
|
15
|
+
ref: "User",
|
|
16
|
+
required: true,
|
|
17
|
+
unique: false
|
|
18
|
+
},
|
|
19
|
+
createdAt: {
|
|
20
|
+
required: true,
|
|
21
|
+
type: Date,
|
|
22
|
+
default: Date.now
|
|
23
|
+
},
|
|
24
|
+
expiresAt: {
|
|
25
|
+
required: true,
|
|
26
|
+
type: Number
|
|
27
|
+
},
|
|
28
|
+
refreshToken: {
|
|
29
|
+
type: String,
|
|
30
|
+
unique: true,
|
|
31
|
+
trim: true,
|
|
32
|
+
required: true
|
|
33
|
+
},
|
|
34
|
+
refreshAttemptsUsed: {
|
|
35
|
+
type: Number,
|
|
36
|
+
required: true
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
const RefreshToken = (0, _mongoose.model)("RefreshToken", RefreshTokenSchema);
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=RefreshToken.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/models/Auth/RefreshToken.ts"],"names":["RefreshToken","RefreshTokenSchema","Schema","userId","type","Types","ObjectId","ref","required","unique","createdAt","Date","default","now","expiresAt","Number","refreshToken","String","trim","refreshAttemptsUsed","model"],"mappings":";;;;+BAuCaA;;;eAAAA;;;0BAvCwB;AAWrC,MAAMC,qBAAqB,IAAIC,gBAAM,CAAgB;IACnDC,QAAQ;QACNC,MAAMF,gBAAM,CAACG,KAAK,CAACC,QAAQ;QAC3BC,KAAK;QACLC,UAAU;QACVC,QAAQ;IACV;IACAC,WAAW;QACTF,UAAU;QACVJ,MAAMO;QACNC,SAASD,KAAKE,GAAG;IACnB;IACAC,WAAW;QACTN,UAAU;QACVJ,MAAMW;IACR;IACAC,cAAc;QACZZ,MAAMa;QACNR,QAAQ;QACRS,MAAM;QACNV,UAAU;IACZ;IACAW,qBAAqB;QACnBf,MAAMW;QACNP,UAAU;IACZ;AACF;AAEO,MAAMR,eAAeoB,IAAAA,eAAK,EAAC,gBAAgBnB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "Role", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return Role;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _mongoose = require("mongoose");
|
|
12
|
+
const RoleSchema = new _mongoose.Schema({
|
|
13
|
+
name: {
|
|
14
|
+
type: String,
|
|
15
|
+
required: true
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
const Role = (0, _mongoose.model)("Role", RoleSchema);
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=Role.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/models/Auth/Role.ts"],"names":["Role","RoleSchema","Schema","name","type","String","required","model"],"mappings":";;;;+BAcaA;;;eAAAA;;;0BAdiB;AAO9B,MAAMC,aAAa,IAAIC,gBAAM,CAAQ;IACnCC,MAAM;QACJC,MAAMC;QACNC,UAAU;IACZ;AACF;AAEO,MAAMN,OAAOO,IAAAA,eAAK,EAAC,QAAQN"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "User", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return User;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _mongoose = require("mongoose");
|
|
12
|
+
const UserSchema = new _mongoose.Schema({
|
|
13
|
+
username: {
|
|
14
|
+
type: String,
|
|
15
|
+
required: true,
|
|
16
|
+
unique: true
|
|
17
|
+
},
|
|
18
|
+
isDemoUser: {
|
|
19
|
+
type: Boolean,
|
|
20
|
+
default: false
|
|
21
|
+
},
|
|
22
|
+
isRootUser: {
|
|
23
|
+
type: Boolean,
|
|
24
|
+
default: false
|
|
25
|
+
},
|
|
26
|
+
// Requiring password change means that the user will be redirected to the change password page
|
|
27
|
+
// when they log in. The user will not be able to access any other page until they change their password.
|
|
28
|
+
needsPasswordChange: {
|
|
29
|
+
type: Boolean,
|
|
30
|
+
default: true
|
|
31
|
+
},
|
|
32
|
+
isVerified: {
|
|
33
|
+
type: Boolean,
|
|
34
|
+
default: false
|
|
35
|
+
},
|
|
36
|
+
passwordHash: {
|
|
37
|
+
type: String,
|
|
38
|
+
required: true
|
|
39
|
+
},
|
|
40
|
+
createdAt: {
|
|
41
|
+
type: Date,
|
|
42
|
+
default: Date.now
|
|
43
|
+
},
|
|
44
|
+
roles: {
|
|
45
|
+
type: Array,
|
|
46
|
+
required: true
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
const User = (0, _mongoose.model)("User", UserSchema);
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=User.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/models/Auth/User.ts"],"names":["User","UserSchema","Schema","username","type","String","required","unique","isDemoUser","Boolean","default","isRootUser","needsPasswordChange","isVerified","passwordHash","createdAt","Date","now","roles","Array","model"],"mappings":";;;;+BAoDaA;;;eAAAA;;;0BApD2B;AAcxC,MAAMC,aAAa,IAAIC,gBAAM,CAAQ;IACnCC,UAAU;QACRC,MAAMC;QACNC,UAAU;QACVC,QAAQ;IACV;IACAC,YAAY;QACVJ,MAAMK;QACNC,SAAS;IACX;IACAC,YAAY;QACVP,MAAMK;QACNC,SAAS;IACX;IACA,+FAA+F;IAC/F,yGAAyG;IACzGE,qBAAqB;QACnBR,MAAMK;QACNC,SAAS;IACX;IACAG,YAAY;QACVT,MAAMK;QACNC,SAAS;IACX;IACAI,cAAc;QACZV,MAAMC;QACNC,UAAU;IACZ;IACAS,WAAW;QACTX,MAAMY;QACNN,SAASM,KAAKC,GAAG;IACnB;IACAC,OAAO;QACLd,MAAMe;QACNb,UAAU;IACZ;AACF;AAEO,MAAMN,OAAOoB,IAAAA,eAAK,EAAC,QAAQnB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "CameraStream", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return CameraStream;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _mongoose = require("mongoose");
|
|
12
|
+
const CameraStreamSchema = new _mongoose.Schema({
|
|
13
|
+
streamURL: {
|
|
14
|
+
type: String,
|
|
15
|
+
unique: true,
|
|
16
|
+
required: true
|
|
17
|
+
},
|
|
18
|
+
printerId: {
|
|
19
|
+
type: _mongoose.Schema.Types.ObjectId,
|
|
20
|
+
ref: "Printer",
|
|
21
|
+
required: false,
|
|
22
|
+
index: {
|
|
23
|
+
unique: true,
|
|
24
|
+
partialFilterExpression: {
|
|
25
|
+
printerId: {
|
|
26
|
+
$type: _mongoose.Schema.Types.ObjectId
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
settings: {
|
|
32
|
+
type: {
|
|
33
|
+
aspectRatio: {
|
|
34
|
+
type: String,
|
|
35
|
+
required: true,
|
|
36
|
+
default: "16:9"
|
|
37
|
+
},
|
|
38
|
+
rotationClockwise: {
|
|
39
|
+
type: Number,
|
|
40
|
+
required: true,
|
|
41
|
+
default: 0
|
|
42
|
+
},
|
|
43
|
+
flipHorizontal: {
|
|
44
|
+
type: Boolean,
|
|
45
|
+
required: true,
|
|
46
|
+
default: false
|
|
47
|
+
},
|
|
48
|
+
flipVertical: {
|
|
49
|
+
type: Boolean,
|
|
50
|
+
required: true,
|
|
51
|
+
default: false
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
required: true
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
const CameraStream = (0, _mongoose.model)("CameraStream", CameraStreamSchema);
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=CameraStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/models/CameraStream.ts"],"names":["CameraStream","CameraStreamSchema","Schema","streamURL","type","String","unique","required","printerId","Types","ObjectId","ref","index","partialFilterExpression","$type","settings","aspectRatio","default","rotationClockwise","Number","flipHorizontal","Boolean","flipVertical","model"],"mappings":";;;;+BAwDaA;;;eAAAA;;;0BAxDwB;AAcrC,MAAMC,qBAAqB,IAAIC,gBAAM,CAAgB;IACnDC,WAAW;QACTC,MAAMC;QACNC,QAAQ;QACRC,UAAU;IACZ;IACAC,WAAW;QACTJ,MAAMF,gBAAM,CAACO,KAAK,CAACC,QAAQ;QAC3BC,KAAK;QACLJ,UAAU;QACVK,OAAO;YACLN,QAAQ;YACRO,yBAAyB;gBAAEL,WAAW;oBAAEM,OAAOZ,gBAAM,CAACO,KAAK,CAACC,QAAQ;gBAAC;YAAE;QACzE;IACF;IACAK,UAAU;QACRX,MAAM;YACJY,aAAa;gBACXZ,MAAMC;gBACNE,UAAU;gBACVU,SAAS;YACX;YACAC,mBAAmB;gBACjBd,MAAMe;gBACNZ,UAAU;gBACVU,SAAS;YACX;YACAG,gBAAgB;gBACdhB,MAAMiB;gBACNd,UAAU;gBACVU,SAAS;YACX;YACAK,cAAc;gBACZlB,MAAMiB;gBACNd,UAAU;gBACVU,SAAS;YACX;QACF;QACAV,UAAU;IACZ;AACF;AAEO,MAAMP,eAAeuB,IAAAA,eAAK,EAAC,gBAAgBtB"}
|