@fdm-monster/server 1.8.3 → 1.9.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.template +5 -3
- package/.gitattributes +4 -2
- package/.yarn/install-state.gz +0 -0
- package/.yarn/releases/yarn-4.9.1.cjs +948 -0
- package/.yarnrc.yml +1 -1
- package/README.md +25 -26
- package/RELEASE_NOTES.MD +50 -1
- package/biome.json +33 -0
- package/dist/consoles/download-github-releases.js.map +1 -1
- package/dist/consoles/launch-http-servers.js +31 -0
- package/dist/consoles/launch-http-servers.js.map +1 -0
- package/dist/consoles/mock-octoprint.server.js +291 -0
- package/dist/consoles/mock-octoprint.server.js.map +1 -0
- package/dist/consoles/mock-prusalink.server.js +57 -0
- package/dist/consoles/mock-prusalink.server.js.map +1 -0
- package/dist/consoles/utils/api-messages.js +856 -0
- package/dist/consoles/utils/api-messages.js.map +1 -0
- package/dist/consoles/utils/delayed-memory.storage.js +42 -0
- package/dist/consoles/utils/delayed-memory.storage.js.map +1 -0
- package/dist/consoles/utils/ws-messages.js +88 -0
- package/dist/consoles/utils/ws-messages.js.map +1 -0
- package/dist/constants/event.constants.js +5 -21
- package/dist/constants/event.constants.js.map +1 -1
- package/dist/constants/server-settings.constants.js +6 -11
- package/dist/constants/server-settings.constants.js.map +1 -1
- package/dist/container.js +13 -14
- package/dist/container.js.map +1 -1
- package/dist/container.tokens.js +3 -4
- package/dist/container.tokens.js.map +1 -1
- package/dist/controllers/auth.controller.js +114 -24
- package/dist/controllers/auth.controller.js.map +1 -1
- package/dist/controllers/batch-call.controller.js +95 -24
- package/dist/controllers/batch-call.controller.js.map +1 -1
- package/dist/controllers/camera-stream.controller.js +16 -12
- package/dist/controllers/camera-stream.controller.js.map +1 -1
- package/dist/controllers/custom-gcode.controller.js +116 -40
- package/dist/controllers/custom-gcode.controller.js.map +1 -1
- package/dist/controllers/dto/update-client-dist.dto.js +0 -21
- package/dist/controllers/dto/update-client-dist.dto.js.map +1 -1
- package/dist/controllers/first-time-setup.controller.js +54 -18
- package/dist/controllers/first-time-setup.controller.js.map +1 -1
- package/dist/controllers/floor.controller.js +154 -43
- package/dist/controllers/floor.controller.js.map +1 -1
- package/dist/controllers/metrics.controller.js +56 -0
- package/dist/controllers/metrics.controller.js.map +1 -0
- package/dist/controllers/print-completion.controller.js +81 -18
- package/dist/controllers/print-completion.controller.js.map +1 -1
- package/dist/controllers/printer-files.controller.js +42 -28
- package/dist/controllers/printer-files.controller.js.map +1 -1
- package/dist/controllers/printer-group.controller.js +123 -33
- package/dist/controllers/printer-group.controller.js.map +1 -1
- package/dist/controllers/printer-settings.controller.js +73 -26
- package/dist/controllers/printer-settings.controller.js.map +1 -1
- package/dist/controllers/printer.controller.js +57 -198
- package/dist/controllers/printer.controller.js.map +1 -1
- package/dist/controllers/server-private.controller.js +153 -39
- package/dist/controllers/server-private.controller.js.map +1 -1
- package/dist/controllers/server-public.controller.js +79 -84
- package/dist/controllers/server-public.controller.js.map +1 -1
- package/dist/controllers/settings.controller.js +222 -79
- package/dist/controllers/settings.controller.js.map +1 -1
- package/dist/controllers/user.controller.js +67 -57
- package/dist/controllers/user.controller.js.map +1 -1
- package/dist/controllers/validation/auth-controller.validation.js +6 -5
- package/dist/controllers/validation/auth-controller.validation.js.map +1 -1
- package/dist/controllers/validation/batch-controller.validation.js +17 -18
- package/dist/controllers/validation/batch-controller.validation.js.map +1 -1
- package/dist/controllers/validation/generic.validation.js +8 -3
- package/dist/controllers/validation/generic.validation.js.map +1 -1
- package/dist/controllers/validation/printer-completion-controller.validation.js +16 -0
- package/dist/controllers/validation/printer-completion-controller.validation.js.map +1 -0
- package/dist/controllers/validation/printer-controller.validation.js +31 -50
- package/dist/controllers/validation/printer-controller.validation.js.map +1 -1
- package/dist/controllers/validation/printer-files-controller.validation.js +16 -15
- package/dist/controllers/validation/printer-files-controller.validation.js.map +1 -1
- package/dist/controllers/validation/printer-settings-controller.validation.js +6 -5
- package/dist/controllers/validation/printer-settings-controller.validation.js.map +1 -1
- package/dist/controllers/validation/server-private.validation.js +17 -0
- package/dist/controllers/validation/server-private.validation.js.map +1 -0
- package/dist/controllers/validation/setting.validation.js +28 -10
- package/dist/controllers/validation/setting.validation.js.map +1 -1
- package/dist/controllers/validation/user-controller.validation.js +44 -13
- package/dist/controllers/validation/user-controller.validation.js.map +1 -1
- package/dist/data-source.js +10 -6
- package/dist/data-source.js.map +1 -1
- package/dist/entities/camera-stream.entity.js +2 -3
- package/dist/entities/camera-stream.entity.js.map +1 -1
- package/dist/entities/custom-gcode.entity.js +1 -2
- package/dist/entities/custom-gcode.entity.js.map +1 -1
- package/dist/entities/floor-position.entity.js.map +1 -1
- package/dist/entities/floor.entity.js +1 -2
- package/dist/entities/floor.entity.js.map +1 -1
- package/dist/entities/group.entity.js +6 -2
- package/dist/entities/group.entity.js.map +1 -1
- package/dist/entities/permission.entity.js +1 -2
- package/dist/entities/permission.entity.js.map +1 -1
- package/dist/entities/print-completion.entity.js +1 -2
- package/dist/entities/print-completion.entity.js.map +1 -1
- package/dist/entities/printer-group.entity.js +6 -2
- package/dist/entities/printer-group.entity.js.map +1 -1
- package/dist/entities/printer.entity.js +22 -4
- package/dist/entities/printer.entity.js.map +1 -1
- package/dist/entities/refresh-token.entity.js +1 -2
- package/dist/entities/refresh-token.entity.js.map +1 -1
- package/dist/entities/role.entity.js +1 -2
- package/dist/entities/role.entity.js.map +1 -1
- package/dist/entities/settings.entity.js +1 -2
- package/dist/entities/settings.entity.js.map +1 -1
- package/dist/entities/user-role.entity.js +1 -2
- package/dist/entities/user-role.entity.js.map +1 -1
- package/dist/entities/user.entity.js +1 -2
- package/dist/entities/user.entity.js.map +1 -1
- package/dist/exceptions/runtime.exceptions.js.map +1 -1
- package/dist/handlers/logger.js +131 -36
- package/dist/handlers/logger.js.map +1 -1
- package/dist/handlers/validators.js +7 -116
- package/dist/handlers/validators.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/middleware/authenticate.js +11 -22
- package/dist/middleware/authenticate.js.map +1 -1
- package/dist/middleware/database.js.map +1 -1
- package/dist/middleware/demo.middleware.js +4 -17
- package/dist/middleware/demo.middleware.js.map +1 -1
- package/dist/middleware/exception.filter.js +23 -23
- package/dist/middleware/exception.filter.js.map +1 -1
- package/dist/middleware/global.middleware.js +4 -4
- package/dist/middleware/global.middleware.js.map +1 -1
- package/dist/middleware/param-converter.middleware.js +81 -0
- package/dist/middleware/param-converter.middleware.js.map +1 -0
- package/dist/middleware/passport.js +3 -5
- package/dist/middleware/passport.js.map +1 -1
- package/dist/middleware/printer-resolver.js +37 -0
- package/dist/middleware/printer-resolver.js.map +1 -0
- package/dist/middleware/printer.js +22 -10
- package/dist/middleware/printer.js.map +1 -1
- package/dist/middleware/socketio.middleware.js +27 -0
- package/dist/middleware/socketio.middleware.js.map +1 -0
- package/dist/migrations/1706829146617-InitSqlite.js +1 -1
- package/dist/migrations/1706829146617-InitSqlite.js.map +1 -1
- package/dist/migrations/1707494762198-PrinterGroup.js +1 -1
- package/dist/migrations/1707494762198-PrinterGroup.js.map +1 -1
- package/dist/migrations/1708465930665-ChangePrintCompletionDeletePrinterCascade.js +1 -1
- package/dist/migrations/1708465930665-ChangePrintCompletionDeletePrinterCascade.js.map +1 -1
- package/dist/migrations/1713897879622-AddPrinterType.js +1 -1
- package/dist/migrations/1713897879622-AddPrinterType.js.map +1 -1
- package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js +229 -0
- package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js.map +1 -0
- package/dist/models/Auth/Permission.js.map +1 -1
- package/dist/models/Auth/RefreshToken.js +1 -1
- package/dist/models/Auth/RefreshToken.js.map +1 -1
- package/dist/models/Auth/Role.js.map +1 -1
- package/dist/models/Auth/User.js.map +1 -1
- package/dist/models/CameraStream.js +20 -0
- package/dist/models/CameraStream.js.map +1 -1
- package/dist/models/CustomGcode.js.map +1 -1
- package/dist/models/Floor.js.map +1 -1
- package/dist/models/FloorPrinter.js +10 -1
- package/dist/models/FloorPrinter.js.map +1 -1
- package/dist/models/PrintCompletion.js.map +1 -1
- package/dist/models/Printer.js +12 -5
- package/dist/models/Printer.js.map +1 -1
- package/dist/models/Settings.js +5 -42
- package/dist/models/Settings.js.map +1 -1
- package/dist/models/index.js +0 -4
- package/dist/models/index.js.map +1 -1
- package/dist/mongo-migrations/20210713120034-printers-settingsapperance-apikey.js.map +1 -1
- package/dist/mongo-migrations/20210907173950-printers-enabled.js.map +1 -1
- package/dist/mongo-migrations/20211029110742-user-password-passwordhash.js.map +1 -1
- package/dist/mongo-migrations/20230414141005-floor-remove-groupinfloor.js.map +1 -1
- package/dist/mongo-migrations/20230427202911-printer-remove-sortindex.js.map +1 -1
- package/dist/mongo-migrations/20230716065316-user-remove-name.js.map +1 -1
- package/dist/mongo-migrations/20231111081809-printer-flatten-name.js.map +1 -1
- package/dist/mongo-migrations/20231111082521-printer-remove-settingsappearance.js.map +1 -1
- package/dist/mongo-migrations/20231202183902-printer-files-simpler.js.map +1 -1
- package/dist/server.constants.js +7 -4
- package/dist/server.constants.js.map +1 -1
- package/dist/server.core.js +29 -2
- package/dist/server.core.js.map +1 -1
- package/dist/server.env.js +13 -8
- package/dist/server.env.js.map +1 -1
- package/dist/server.host.js +24 -33
- package/dist/server.host.js.map +1 -1
- package/dist/services/authentication/auth.service.js +15 -20
- package/dist/services/authentication/auth.service.js.map +1 -1
- package/dist/services/authentication/jwt.service.js +1 -1
- package/dist/services/authentication/jwt.service.js.map +1 -1
- package/dist/services/core/batch-call.service.js +23 -25
- package/dist/services/core/batch-call.service.js.map +1 -1
- package/dist/services/core/client-bundle.service.js +78 -136
- package/dist/services/core/client-bundle.service.js.map +1 -1
- package/dist/services/core/config.service.js.map +1 -1
- package/dist/services/core/cradle.service.js +21 -0
- package/dist/services/core/cradle.service.js.map +1 -0
- package/dist/services/core/github.service.js +2 -2
- package/dist/services/core/github.service.js.map +1 -1
- package/dist/services/core/http-client.factory.js +1 -1
- package/dist/services/core/http-client.factory.js.map +1 -1
- package/dist/services/core/logs-manager.service.js +3 -3
- package/dist/services/core/logs-manager.service.js.map +1 -1
- package/dist/services/core/monsterpi.service.js +1 -1
- package/dist/services/core/monsterpi.service.js.map +1 -1
- package/dist/services/core/multer.service.js +8 -7
- package/dist/services/core/multer.service.js.map +1 -1
- package/dist/services/core/server-release.service.js +14 -8
- package/dist/services/core/server-release.service.js.map +1 -1
- package/dist/services/core/yaml.service.js +16 -17
- package/dist/services/core/yaml.service.js.map +1 -1
- package/dist/services/interfaces/camera-stream.dto.js +4 -34
- package/dist/services/interfaces/camera-stream.dto.js.map +1 -1
- package/dist/services/interfaces/custom-gcode.dto.js.map +1 -1
- package/dist/services/interfaces/floor.dto.js +5 -47
- package/dist/services/interfaces/floor.dto.js.map +1 -1
- package/dist/services/interfaces/login.dto.js +2 -0
- package/dist/services/interfaces/login.dto.js.map +1 -1
- package/dist/services/interfaces/print-completion.dto.js.map +1 -1
- package/dist/services/interfaces/printer-group.dto.js +0 -14
- package/dist/services/interfaces/printer-group.dto.js.map +1 -1
- package/dist/services/interfaces/printer.dto.js +11 -11
- package/dist/services/interfaces/printer.dto.js.map +1 -1
- package/dist/services/interfaces/settings.dto.js.map +1 -1
- package/dist/services/interfaces/task.interfaces.js +6 -0
- package/dist/services/interfaces/task.interfaces.js.map +1 -0
- package/dist/services/mongoose/camera-stream.service.js +17 -15
- package/dist/services/mongoose/camera-stream.service.js.map +1 -1
- package/dist/services/mongoose/custom-gcode.service.js +4 -2
- package/dist/services/mongoose/custom-gcode.service.js.map +1 -1
- package/dist/services/mongoose/floor.service.js +37 -30
- package/dist/services/mongoose/floor.service.js.map +1 -1
- package/dist/services/mongoose/permission.service.js +1 -1
- package/dist/services/mongoose/permission.service.js.map +1 -1
- package/dist/services/mongoose/print-completion.service.js +2 -2
- package/dist/services/mongoose/print-completion.service.js.map +1 -1
- package/dist/services/mongoose/print-completion.shared.js +2 -2
- package/dist/services/mongoose/print-completion.shared.js.map +1 -1
- package/dist/services/mongoose/printer.service.js +33 -45
- package/dist/services/mongoose/printer.service.js.map +1 -1
- package/dist/services/mongoose/refresh-token.service.js +5 -8
- package/dist/services/mongoose/refresh-token.service.js.map +1 -1
- package/dist/services/mongoose/role.service.js +14 -5
- package/dist/services/mongoose/role.service.js.map +1 -1
- package/dist/services/mongoose/settings.service.js +35 -62
- package/dist/services/mongoose/settings.service.js.map +1 -1
- package/dist/services/mongoose/user.service.js +8 -7
- package/dist/services/mongoose/user.service.js.map +1 -1
- package/dist/services/moonraker/constants/{websocket.constants.js → moonraker.constants.js} +1 -1
- package/dist/services/moonraker/constants/{websocket.constants.js.map → moonraker.constants.js.map} +1 -1
- package/dist/services/moonraker/moonraker-websocket.adapter.js +102 -94
- package/dist/services/moonraker/moonraker-websocket.adapter.js.map +1 -1
- package/dist/services/moonraker/moonraker.client.js +19 -14
- package/dist/services/moonraker/moonraker.client.js.map +1 -1
- package/dist/services/moonraker.api.js +3 -5
- package/dist/services/moonraker.api.js.map +1 -1
- package/dist/services/octoprint/constants/octoprint-service.constants.js +7 -36
- package/dist/services/octoprint/constants/octoprint-service.constants.js.map +1 -1
- package/dist/services/octoprint/constants/octoprint-websocket.constants.js +12 -3
- package/dist/services/octoprint/constants/octoprint-websocket.constants.js.map +1 -1
- package/dist/services/octoprint/dto/octoprint-event.dto.js +2 -1
- package/dist/services/octoprint/dto/octoprint-event.dto.js.map +1 -1
- package/dist/services/octoprint/octoprint-api.routes.js +0 -37
- package/dist/services/octoprint/octoprint-api.routes.js.map +1 -1
- package/dist/services/octoprint/octoprint-websocket.adapter.js +66 -72
- package/dist/services/octoprint/octoprint-websocket.adapter.js.map +1 -1
- package/dist/services/octoprint/octoprint.client.js +12 -185
- package/dist/services/octoprint/octoprint.client.js.map +1 -1
- package/dist/services/octoprint/utils/octoprint-http-client.builder.js.map +1 -1
- package/dist/services/octoprint.api.js +8 -14
- package/dist/services/octoprint.api.js.map +1 -1
- package/dist/services/orm/base.service.js +11 -12
- package/dist/services/orm/base.service.js.map +1 -1
- package/dist/services/orm/camera-stream.service.js +5 -1
- package/dist/services/orm/camera-stream.service.js.map +1 -1
- package/dist/services/orm/custom-gcode.service.js +2 -2
- package/dist/services/orm/custom-gcode.service.js.map +1 -1
- package/dist/services/orm/floor-position.service.js +0 -5
- package/dist/services/orm/floor-position.service.js.map +1 -1
- package/dist/services/orm/floor.service.js +43 -39
- package/dist/services/orm/floor.service.js.map +1 -1
- package/dist/services/orm/permission.service.js +3 -4
- package/dist/services/orm/permission.service.js.map +1 -1
- package/dist/services/orm/print-completion.service.js +2 -4
- package/dist/services/orm/print-completion.service.js.map +1 -1
- package/dist/services/orm/printer-group.service.js +2 -7
- package/dist/services/orm/printer-group.service.js.map +1 -1
- package/dist/services/orm/printer.service.js +21 -36
- package/dist/services/orm/printer.service.js.map +1 -1
- package/dist/services/orm/refresh-token.service.js +5 -11
- package/dist/services/orm/refresh-token.service.js.map +1 -1
- package/dist/services/orm/role.service.js +11 -10
- package/dist/services/orm/role.service.js.map +1 -1
- package/dist/services/orm/settings.service.js +37 -133
- package/dist/services/orm/settings.service.js.map +1 -1
- package/dist/services/orm/user.service.js +13 -15
- package/dist/services/orm/user.service.js.map +1 -1
- package/dist/services/printer-api.factory.js +9 -6
- package/dist/services/printer-api.factory.js.map +1 -1
- package/dist/services/printer-api.interface.js +13 -6
- package/dist/services/printer-api.interface.js.map +1 -1
- package/dist/services/prusa-link/constants/prusalink-event.dto.js +18 -0
- package/dist/services/prusa-link/constants/prusalink-event.dto.js.map +1 -0
- package/dist/services/prusa-link/constants/prusalink.constants.js +13 -0
- package/dist/services/prusa-link/constants/prusalink.constants.js.map +1 -0
- package/dist/services/prusa-link/dto/file-response.dto.js +6 -0
- package/dist/services/prusa-link/dto/file-response.dto.js.map +1 -0
- package/dist/services/{octoprint/dto/plugin.dto.js → prusa-link/dto/file.dto.js} +1 -1
- package/dist/services/prusa-link/dto/file.dto.js.map +1 -0
- package/dist/services/prusa-link/dto/job-state.dto.js +6 -0
- package/dist/services/prusa-link/dto/job-state.dto.js.map +1 -0
- package/dist/services/prusa-link/dto/printer-state.dto.js +6 -0
- package/dist/services/prusa-link/dto/printer-state.dto.js.map +1 -0
- package/dist/services/prusa-link/dto/status.dto.js +6 -0
- package/dist/services/prusa-link/dto/status.dto.js.map +1 -0
- package/dist/services/prusa-link/dto/version.dto.js +6 -0
- package/dist/services/prusa-link/dto/version.dto.js.map +1 -0
- package/dist/services/prusa-link/prusa-link-http-polling.adapter.js +142 -0
- package/dist/services/prusa-link/prusa-link-http-polling.adapter.js.map +1 -0
- package/dist/services/prusa-link/prusa-link.api.js +233 -0
- package/dist/services/prusa-link/prusa-link.api.js.map +1 -0
- package/dist/services/prusa-link/utils/digest-auth.params.js +6 -0
- package/dist/services/prusa-link/utils/digest-auth.params.js.map +1 -0
- package/dist/services/prusa-link/utils/digest-auth.util.js +28 -0
- package/dist/services/prusa-link/utils/digest-auth.util.js.map +1 -0
- package/dist/services/prusa-link/utils/prusa-link-http-client.builder.js +131 -0
- package/dist/services/prusa-link/utils/prusa-link-http-client.builder.js.map +1 -0
- package/dist/services/socket.factory.js +9 -6
- package/dist/services/socket.factory.js.map +1 -1
- package/dist/services/{core/task-manager.service.js → task-manager.service.js} +72 -78
- package/dist/services/task-manager.service.js.map +1 -0
- package/dist/services/validators/camera-service.validation.js +19 -0
- package/dist/services/validators/camera-service.validation.js.map +1 -0
- package/dist/services/validators/floor-service.validation.js +47 -36
- package/dist/services/validators/floor-service.validation.js.map +1 -1
- package/dist/services/validators/print-completion-service.validation.js +22 -9
- package/dist/services/validators/print-completion-service.validation.js.map +1 -1
- package/dist/services/validators/printer-service.validation.js +112 -29
- package/dist/services/validators/printer-service.validation.js.map +1 -1
- package/dist/services/validators/settings-service.validation.js +78 -66
- package/dist/services/validators/settings-service.validation.js.map +1 -1
- package/dist/services/validators/user-service.validation.js +17 -16
- package/dist/services/validators/user-service.validation.js.map +1 -1
- package/dist/services/validators/yaml-service.validation.js +94 -51
- package/dist/services/validators/yaml-service.validation.js.map +1 -1
- package/dist/shared/default-http-client.builder.js.map +1 -1
- package/dist/shared/load-controllers.js +20 -0
- package/dist/shared/load-controllers.js.map +1 -0
- package/dist/shared/runtime-settings.migration.js +46 -0
- package/dist/shared/runtime-settings.migration.js.map +1 -0
- package/dist/shared/websocket-rpc-extended.adapter.js +15 -14
- package/dist/shared/websocket-rpc-extended.adapter.js.map +1 -1
- package/dist/shared/websocket.adapter.js +4 -5
- package/dist/shared/websocket.adapter.js.map +1 -1
- package/dist/state/file-upload-tracker.cache.js +5 -4
- package/dist/state/file-upload-tracker.cache.js.map +1 -1
- package/dist/state/file.cache.js +1 -1
- package/dist/state/file.cache.js.map +1 -1
- package/dist/state/floor.store.js +6 -6
- package/dist/state/floor.store.js.map +1 -1
- package/dist/state/printer-events.cache.js +21 -22
- package/dist/state/printer-events.cache.js.map +1 -1
- package/dist/state/printer-files.store.js +6 -8
- package/dist/state/printer-files.store.js.map +1 -1
- package/dist/state/printer-socket.store.js +27 -50
- package/dist/state/printer-socket.store.js.map +1 -1
- package/dist/state/printer-thumbnail.cache.js +5 -9
- package/dist/state/printer-thumbnail.cache.js.map +1 -1
- package/dist/state/printer.cache.js +14 -12
- package/dist/state/printer.cache.js.map +1 -1
- package/dist/state/settings.store.js +74 -50
- package/dist/state/settings.store.js.map +1 -1
- package/dist/state/socket-io.gateway.js +39 -36
- package/dist/state/socket-io.gateway.js.map +1 -1
- package/dist/state/test-printer-socket.store.js +20 -15
- package/dist/state/test-printer-socket.store.js.map +1 -1
- package/dist/state/validation/create-test-printer.validation.js +13 -11
- package/dist/state/validation/create-test-printer.validation.js.map +1 -1
- package/dist/task.presets.js.map +1 -1
- package/dist/tasks/boot.task.js +14 -19
- package/dist/tasks/boot.task.js.map +1 -1
- package/dist/tasks/client-bundle.task.js +1 -3
- package/dist/tasks/client-bundle.task.js.map +1 -1
- package/dist/tasks/print-completion.socketio.task.js +27 -28
- package/dist/tasks/print-completion.socketio.task.js.map +1 -1
- package/dist/tasks/printer-file-clean.task.js +6 -10
- package/dist/tasks/printer-file-clean.task.js.map +1 -1
- package/dist/tasks/printer-websocket-restore.task.js +3 -14
- package/dist/tasks/printer-websocket-restore.task.js.map +1 -1
- package/dist/tasks/printer-websocket.task.js +2 -14
- package/dist/tasks/printer-websocket.task.js.map +1 -1
- package/dist/tasks/socketio.task.js +6 -33
- package/dist/tasks/socketio.task.js.map +1 -1
- package/dist/tasks/software-update.task.js +1 -1
- package/dist/tasks/software-update.task.js.map +1 -1
- package/dist/tasks.js +3 -3
- package/dist/tasks.js.map +1 -1
- package/dist/utils/array.util.js.map +1 -1
- package/dist/utils/cache/key-diff.cache.js.map +1 -1
- package/dist/utils/env.utils.js +0 -2
- package/dist/utils/env.utils.js.map +1 -1
- package/dist/utils/normalize-url.js +3 -2
- package/dist/utils/normalize-url.js.map +1 -1
- package/dist/utils/printer-type.utils.js.map +1 -1
- package/dist/utils/time.utils.js +7 -17
- package/dist/utils/time.utils.js.map +1 -1
- package/dist/utils/url.utils.js +3 -4
- package/dist/utils/url.utils.js.map +1 -1
- package/package.json +44 -47
- package/tsconfig.json +2 -1
- package/.yarn/releases/yarn-4.7.0.cjs +0 -935
- package/dist/consoles/check-ports.js +0 -170
- package/dist/consoles/check-ports.js.map +0 -1
- package/dist/consoles/http-file-receiver.console.js +0 -81
- package/dist/consoles/http-file-receiver.console.js.map +0 -1
- package/dist/consoles/sqlite-torm.js +0 -31
- package/dist/consoles/sqlite-torm.js.map +0 -1
- package/dist/consoles/upload-test.js +0 -52
- package/dist/consoles/upload-test.js.map +0 -1
- package/dist/controllers/plugin-firmware-update.controller.js +0 -234
- package/dist/controllers/plugin-firmware-update.controller.js.map +0 -1
- package/dist/entities/base.entity.js +0 -29
- package/dist/entities/base.entity.js.map +0 -1
- package/dist/entities/printer-file.entity.js +0 -140
- package/dist/entities/printer-file.entity.js.map +0 -1
- package/dist/handlers/cache-manager.js +0 -18
- package/dist/handlers/cache-manager.js.map +0 -1
- package/dist/models/PrinterFile.js +0 -44
- package/dist/models/PrinterFile.js.map +0 -1
- package/dist/services/core/task-manager.service.js.map +0 -1
- package/dist/services/octoprint/dto/plugin.dto.js.map +0 -1
- package/dist/services/octoprint/plugin-base.service.js +0 -101
- package/dist/services/octoprint/plugin-base.service.js.map +0 -1
- package/dist/services/octoprint/plugin-firmware-update.service.js +0 -100
- package/dist/services/octoprint/plugin-firmware-update.service.js.map +0 -1
- package/dist/services/octoprint/plugin-repository.cache.js +0 -46
- package/dist/services/octoprint/plugin-repository.cache.js.map +0 -1
- package/dist/utils/benchmark.util.js +0 -39
- package/dist/utils/benchmark.util.js.map +0 -1
- package/dist/utils/is-docker.js +0 -40
- package/dist/utils/is-docker.js.map +0 -1
- package/dist/utils/metric.utils.js +0 -35
- package/dist/utils/metric.utils.js.map +0 -1
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "PrusaLinkHttpClientBuilder", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return PrusaLinkHttpClientBuilder;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _defaulthttpclientbuilder = require("../../../shared/default-http-client.builder");
|
|
12
|
+
const _octoprintserviceconstants = require("../../octoprint/constants/octoprint-service.constants");
|
|
13
|
+
const _digestauthutil = require("./digest-auth.util");
|
|
14
|
+
const _nodecrypto = require("node:crypto");
|
|
15
|
+
class PrusaLinkHttpClientBuilder extends _defaulthttpclientbuilder.DefaultHttpClientBuilder {
|
|
16
|
+
maxRetries = 1;
|
|
17
|
+
username;
|
|
18
|
+
password;
|
|
19
|
+
authHeaderContext;
|
|
20
|
+
onAuthError;
|
|
21
|
+
onAuthSuccess;
|
|
22
|
+
onRequestRetry;
|
|
23
|
+
build() {
|
|
24
|
+
if (!this.axiosOptions.baseURL) {
|
|
25
|
+
throw new Error("Base URL is required");
|
|
26
|
+
}
|
|
27
|
+
const axiosInstance = super.build();
|
|
28
|
+
if (this.username && this.password) {
|
|
29
|
+
axiosInstance.interceptors.request.use(async (config)=>{
|
|
30
|
+
if (this.authHeaderContext) {
|
|
31
|
+
const computedDigestHeader = this.generateDigestHeader(config.method?.toUpperCase() ?? "GET", config.url ?? "/");
|
|
32
|
+
config.headers[_octoprintserviceconstants.authorizationHeaderKey] = computedDigestHeader;
|
|
33
|
+
}
|
|
34
|
+
return config;
|
|
35
|
+
});
|
|
36
|
+
axiosInstance.interceptors.response.use((response)=>response, async (error)=>{
|
|
37
|
+
const originalRequest = error.config;
|
|
38
|
+
if (error.response?.status === 401 && this.username?.length && this.password?.length && (!originalRequest._retryCount || originalRequest._retryCount < this.maxRetries)) {
|
|
39
|
+
const wwwAuthHeader = error.response.headers[_octoprintserviceconstants.wwwAuthenticationHeaderKey];
|
|
40
|
+
if (wwwAuthHeader) {
|
|
41
|
+
if (typeof this.onAuthSuccess === "function") {
|
|
42
|
+
this.onAuthSuccess(wwwAuthHeader);
|
|
43
|
+
}
|
|
44
|
+
this.saveParsedAuthHeaderContext(wwwAuthHeader);
|
|
45
|
+
originalRequest._retryCount = (originalRequest._retryCount ?? 0) + 1;
|
|
46
|
+
if (typeof this.onRequestRetry === "function") {
|
|
47
|
+
this.onRequestRetry(error, originalRequest._retryCount);
|
|
48
|
+
}
|
|
49
|
+
return axiosInstance(originalRequest);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (error.response?.status === 401 && this.onAuthError && typeof this.onAuthError === "function") {
|
|
53
|
+
this.onAuthError(error);
|
|
54
|
+
}
|
|
55
|
+
return Promise.reject(error);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return axiosInstance;
|
|
59
|
+
}
|
|
60
|
+
withDigestAuth(username, password, onAuthError, onRequestRetry, onAuthSuccess) {
|
|
61
|
+
if (!username?.length) {
|
|
62
|
+
throw new Error("username may not be an empty string");
|
|
63
|
+
}
|
|
64
|
+
if (!password?.length) {
|
|
65
|
+
throw new Error("password may not be an empty string");
|
|
66
|
+
}
|
|
67
|
+
if (onAuthError && typeof onAuthError !== "function") {
|
|
68
|
+
throw new Error("onAuthError must be a function");
|
|
69
|
+
}
|
|
70
|
+
if (onAuthSuccess && typeof onAuthSuccess !== "function") {
|
|
71
|
+
throw new Error("onAuthSuccess must be a function");
|
|
72
|
+
}
|
|
73
|
+
if (onRequestRetry && typeof onRequestRetry !== "function") {
|
|
74
|
+
throw new Error("onRequestRetry must be a function");
|
|
75
|
+
}
|
|
76
|
+
this.username = username;
|
|
77
|
+
this.password = password;
|
|
78
|
+
this.onAuthError = onAuthError;
|
|
79
|
+
this.onRequestRetry = onRequestRetry;
|
|
80
|
+
this.onAuthSuccess = onAuthSuccess;
|
|
81
|
+
return this;
|
|
82
|
+
}
|
|
83
|
+
withAuthHeader(authHeader) {
|
|
84
|
+
if (!authHeader?.length) {
|
|
85
|
+
throw new Error("Digest header may not be an empty string");
|
|
86
|
+
}
|
|
87
|
+
this.saveParsedAuthHeaderContext(authHeader);
|
|
88
|
+
return this;
|
|
89
|
+
}
|
|
90
|
+
saveParsedAuthHeaderContext(authHeader) {
|
|
91
|
+
const headerValue = authHeader.startsWith("Digest ") ? authHeader.substring(7) : authHeader;
|
|
92
|
+
const authParams = Object.fromEntries(headerValue.split(", ").map((param)=>{
|
|
93
|
+
const parts = param.split("=");
|
|
94
|
+
if (parts.length === 2) {
|
|
95
|
+
return [
|
|
96
|
+
parts[0],
|
|
97
|
+
parts[1].replace(/"/g, "")
|
|
98
|
+
];
|
|
99
|
+
}
|
|
100
|
+
return [
|
|
101
|
+
parts[0],
|
|
102
|
+
""
|
|
103
|
+
];
|
|
104
|
+
}));
|
|
105
|
+
this.authHeaderContext = {
|
|
106
|
+
realm: authParams.realm,
|
|
107
|
+
nonce: authParams.nonce,
|
|
108
|
+
qop: authParams.qop,
|
|
109
|
+
hasQop: "qop" in authParams
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
generateDigestHeader(method, uri) {
|
|
113
|
+
if (!this.authHeaderContext || !this.username || !this.password) {
|
|
114
|
+
throw new Error("Digest auth not properly configured");
|
|
115
|
+
}
|
|
116
|
+
const { realm, nonce, qop, hasQop } = this.authHeaderContext;
|
|
117
|
+
return (0, _digestauthutil.generateDigestAuthHeader)({
|
|
118
|
+
username: this.username,
|
|
119
|
+
password: this.password,
|
|
120
|
+
method,
|
|
121
|
+
uri,
|
|
122
|
+
realm,
|
|
123
|
+
nonce,
|
|
124
|
+
qop: hasQop ? qop : undefined,
|
|
125
|
+
nc: hasQop ? "00000001" : undefined,
|
|
126
|
+
cnonce: hasQop ? (0, _nodecrypto.randomBytes)(8).toString("hex") : undefined
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
//# sourceMappingURL=prusa-link-http-client.builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/services/prusa-link/utils/prusa-link-http-client.builder.ts"],"names":["PrusaLinkHttpClientBuilder","DefaultHttpClientBuilder","maxRetries","username","password","authHeaderContext","onAuthError","onAuthSuccess","onRequestRetry","build","axiosOptions","baseURL","Error","axiosInstance","interceptors","request","use","config","computedDigestHeader","generateDigestHeader","method","toUpperCase","url","headers","authorizationHeaderKey","response","error","originalRequest","status","length","_retryCount","wwwAuthHeader","wwwAuthenticationHeaderKey","saveParsedAuthHeaderContext","Promise","reject","withDigestAuth","withAuthHeader","authHeader","headerValue","startsWith","substring","authParams","Object","fromEntries","split","map","param","parts","replace","realm","nonce","qop","hasQop","uri","generateDigestAuthHeader","undefined","nc","cnonce","randomBytes","toString"],"mappings":"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"}
|
|
@@ -11,18 +11,21 @@ Object.defineProperty(exports, "SocketFactory", {
|
|
|
11
11
|
const _containertokens = require("../container.tokens");
|
|
12
12
|
const _printerapiinterface = require("./printer-api.interface");
|
|
13
13
|
class SocketFactory {
|
|
14
|
-
|
|
15
|
-
constructor(
|
|
16
|
-
this.
|
|
14
|
+
cradleService;
|
|
15
|
+
constructor(cradleService){
|
|
16
|
+
this.cradleService = cradleService;
|
|
17
17
|
}
|
|
18
18
|
createInstance(printerType) {
|
|
19
|
-
const settingsStore = this.
|
|
19
|
+
const settingsStore = this.cradleService.resolve(_containertokens.DITokens.settingsStore);
|
|
20
20
|
const serverSettings = settingsStore.getServerSettings();
|
|
21
21
|
const moonrakerSupport = serverSettings.experimentalMoonrakerSupport;
|
|
22
|
+
const prusaLinkSupport = serverSettings.experimentalPrusaLinkSupport;
|
|
22
23
|
if (printerType === _printerapiinterface.OctoprintType) {
|
|
23
|
-
return this.
|
|
24
|
+
return this.cradleService.resolve(_containertokens.DITokens.octoPrintSockIoAdapter);
|
|
24
25
|
} else if (moonrakerSupport && printerType === _printerapiinterface.MoonrakerType) {
|
|
25
|
-
return this.
|
|
26
|
+
return this.cradleService.resolve(_containertokens.DITokens.moonrakerWebsocketAdapter);
|
|
27
|
+
} else if (prusaLinkSupport && printerType === _printerapiinterface.PrusaLinkType) {
|
|
28
|
+
return this.cradleService.resolve(_containertokens.DITokens.prusaLinkPollingAdapter);
|
|
26
29
|
} else {
|
|
27
30
|
throw new Error("PrinterType is unknown, cant pick the right socket adapter");
|
|
28
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/socket.factory.ts"],"names":["SocketFactory","
|
|
1
|
+
{"version":3,"sources":["../../src/services/socket.factory.ts"],"names":["SocketFactory","constructor","cradleService","createInstance","printerType","settingsStore","resolve","DITokens","serverSettings","getServerSettings","moonrakerSupport","experimentalMoonrakerSupport","prusaLinkSupport","experimentalPrusaLinkSupport","OctoprintType","octoPrintSockIoAdapter","MoonrakerType","moonrakerWebsocketAdapter","PrusaLinkType","prusaLinkPollingAdapter","Error"],"mappings":";;;;+BAMaA;;;eAAAA;;;iCANY;qCACmC;AAKrD,MAAMA;;IACXC,YAAY,AAAiBC,aAA4B,CAAE;aAA9BA,gBAAAA;IAA+B;IAE5DC,eAAeC,WAAmB,EAAqB;QACrD,MAAMC,gBAAgB,IAAI,CAACH,aAAa,CAACI,OAAO,CAAgBC,yBAAQ,CAACF,aAAa;QACtF,MAAMG,iBAAiBH,cAAcI,iBAAiB;QACtD,MAAMC,mBAAmBF,eAAeG,4BAA4B;QACpE,MAAMC,mBAAmBJ,eAAeK,4BAA4B;QAEpE,IAAIT,gBAAgBU,kCAAa,EAAE;YACjC,OAAO,IAAI,CAACZ,aAAa,CAACI,OAAO,CAACC,yBAAQ,CAACQ,sBAAsB;QACnE,OAAO,IAAIL,oBAAoBN,gBAAgBY,kCAAa,EAAE;YAC5D,OAAO,IAAI,CAACd,aAAa,CAACI,OAAO,CAACC,yBAAQ,CAACU,yBAAyB;QACtE,OAAO,IAAIL,oBAAoBR,gBAAgBc,kCAAa,EAAE;YAC5D,OAAO,IAAI,CAAChB,aAAa,CAACI,OAAO,CAACC,yBAAQ,CAACY,uBAAuB;QACpE,OAAO;YACL,MAAM,IAAIC,MAAM;QAClB;IACF;AACF"}
|
|
@@ -10,65 +10,28 @@ Object.defineProperty(exports, "TaskManagerService", {
|
|
|
10
10
|
});
|
|
11
11
|
const _toadscheduler = require("toad-scheduler");
|
|
12
12
|
const _awilix = require("awilix");
|
|
13
|
-
const _jobexceptions = require("
|
|
14
|
-
const
|
|
13
|
+
const _jobexceptions = require("../exceptions/job.exceptions");
|
|
14
|
+
const _errorutils = require("../utils/error.utils");
|
|
15
15
|
class TaskManagerService {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
cradleService;
|
|
17
|
+
toadScheduler;
|
|
18
|
+
taskStates;
|
|
19
19
|
logger;
|
|
20
|
-
constructor(
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
23
|
-
this.
|
|
20
|
+
constructor(loggerFactory, cradleService, toadScheduler){
|
|
21
|
+
this.cradleService = cradleService;
|
|
22
|
+
this.toadScheduler = toadScheduler;
|
|
23
|
+
this.taskStates = {};
|
|
24
|
+
this.logger = loggerFactory(TaskManagerService.name);
|
|
24
25
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
throw new _jobexceptions.JobValidationException("Task ID was not provided. Cant register task or schedule job.", taskId);
|
|
28
|
-
}
|
|
29
|
-
const prefix = `Job '${workload?.name || "anonymous"}' with ID '${taskId}'`;
|
|
30
|
-
if (!!this.taskStates[taskId]) {
|
|
31
|
-
throw new _jobexceptions.JobValidationException(`${prefix} was already registered. Cant register a key twice.`, taskId);
|
|
32
|
-
}
|
|
33
|
-
if (typeof workload !== "function") {
|
|
34
|
-
if (typeof workload !== "string") {
|
|
35
|
-
throw new _jobexceptions.JobValidationException(`${prefix} is not a callable nor a string dependency to lookup. It can't be scheduled.`, taskId);
|
|
36
|
-
}
|
|
37
|
-
let resolvedService;
|
|
38
|
-
try {
|
|
39
|
-
resolvedService = this.cradle[workload];
|
|
40
|
-
} catch (e) {
|
|
41
|
-
if (e instanceof _awilix.AwilixResolutionError) {
|
|
42
|
-
throw new _jobexceptions.JobValidationException(`${prefix} had an awilix dependency resolution error. It can't be scheduled without fixing this problem. Inner error:\n` + e.stack, taskId);
|
|
43
|
-
} else {
|
|
44
|
-
throw new _jobexceptions.JobValidationException(`${prefix} is not a registered awilix dependency. It can't be scheduled. Error:\n` + e.stack, taskId);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
if (typeof resolvedService?.run !== "function") {
|
|
48
|
-
throw new _jobexceptions.JobValidationException(`${prefix} was resolved but it doesn't have a 'run(..)' method to call.`, taskId);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
if (!schedulerOptions?.periodic && !schedulerOptions?.runOnce && !schedulerOptions?.runDelayed) {
|
|
52
|
-
throw new _jobexceptions.JobValidationException(`Provide 'periodic' or 'runOnce' or 'runDelayed' option'.`, taskId);
|
|
53
|
-
}
|
|
54
|
-
if (!schedulerOptions?.periodic && !!schedulerOptions.disabled) {
|
|
55
|
-
throw new _jobexceptions.JobValidationException(`Only tasks of type 'periodic' can be disabled at boot.`, taskId);
|
|
56
|
-
}
|
|
57
|
-
if (schedulerOptions?.runDelayed && !schedulerOptions.milliseconds && !schedulerOptions.seconds) {
|
|
58
|
-
throw new _jobexceptions.JobValidationException(`Provide a delayed timing parameter (milliseconds|seconds)'`, taskId);
|
|
59
|
-
}
|
|
60
|
-
if (schedulerOptions?.periodic && !schedulerOptions.milliseconds && !schedulerOptions.seconds && !schedulerOptions.minutes && !schedulerOptions.hours && !schedulerOptions.days) {
|
|
61
|
-
throw new _jobexceptions.JobValidationException(`Provide a periodic timing parameter (milliseconds|seconds|minutes|hours|days)'`, taskId);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
registerJobOrTask({ id: taskId, task: asyncTaskCallbackOrToken, preset: schedulerOptions }) {
|
|
26
|
+
registerJobOrTask(registration) {
|
|
27
|
+
const { id: taskId, task: serviceIdentifier, preset: schedulerOptions } = registration;
|
|
65
28
|
try {
|
|
66
|
-
this.validateInput(taskId,
|
|
29
|
+
this.validateInput(taskId, serviceIdentifier, schedulerOptions);
|
|
67
30
|
} catch (e) {
|
|
68
|
-
this.logger.error(e
|
|
31
|
+
this.logger.error((0, _errorutils.errorSummary)(e), schedulerOptions);
|
|
69
32
|
return;
|
|
70
33
|
}
|
|
71
|
-
const timedTask = this.getSafeTimedTask(taskId,
|
|
34
|
+
const timedTask = this.getSafeTimedTask(taskId, serviceIdentifier);
|
|
72
35
|
this.taskStates[taskId] = {
|
|
73
36
|
options: schedulerOptions,
|
|
74
37
|
timedTask
|
|
@@ -76,10 +39,10 @@ class TaskManagerService {
|
|
|
76
39
|
if (schedulerOptions.runOnce) {
|
|
77
40
|
timedTask.execute();
|
|
78
41
|
} else if (schedulerOptions.runDelayed) {
|
|
79
|
-
const delay = (schedulerOptions.milliseconds
|
|
42
|
+
const delay = (schedulerOptions.milliseconds ?? 0) + (schedulerOptions.seconds ?? 0) * 1000;
|
|
80
43
|
this.runTimeoutTaskInstance(taskId, delay);
|
|
81
44
|
} else {
|
|
82
|
-
this
|
|
45
|
+
this.scheduleEnabledPeriodicJob(taskId);
|
|
83
46
|
}
|
|
84
47
|
}
|
|
85
48
|
scheduleDisabledJob(taskId, failIfEnabled = true) {
|
|
@@ -92,18 +55,18 @@ class TaskManagerService {
|
|
|
92
55
|
return;
|
|
93
56
|
}
|
|
94
57
|
taskState.options.disabled = false;
|
|
95
|
-
this
|
|
58
|
+
this.scheduleEnabledPeriodicJob(taskId);
|
|
96
59
|
}
|
|
97
60
|
disableJob(taskId, failIfDisabled = true) {
|
|
98
61
|
if (this.isTaskDisabled(taskId)) {
|
|
99
62
|
if (failIfDisabled) {
|
|
100
|
-
throw new _jobexceptions.JobValidationException("
|
|
63
|
+
throw new _jobexceptions.JobValidationException("Can't disable a job which is already disabled", taskId);
|
|
101
64
|
}
|
|
102
65
|
return;
|
|
103
66
|
}
|
|
104
67
|
const taskState = this.getTaskState(taskId);
|
|
105
68
|
taskState.options.disabled = true;
|
|
106
|
-
taskState.job
|
|
69
|
+
taskState.job?.stop();
|
|
107
70
|
}
|
|
108
71
|
isTaskDisabled(taskId) {
|
|
109
72
|
return !!this.getTaskState(taskId).options.disabled;
|
|
@@ -111,7 +74,7 @@ class TaskManagerService {
|
|
|
111
74
|
deregisterTask(taskId) {
|
|
112
75
|
this.getTaskState(taskId);
|
|
113
76
|
delete this.taskStates[taskId];
|
|
114
|
-
this.
|
|
77
|
+
this.toadScheduler.removeById(taskId);
|
|
115
78
|
}
|
|
116
79
|
getTaskState(taskId) {
|
|
117
80
|
const taskState = this.taskStates[taskId];
|
|
@@ -123,23 +86,57 @@ class TaskManagerService {
|
|
|
123
86
|
runTimeoutTaskInstance(taskId, timeoutMs) {
|
|
124
87
|
const taskState = this.getTaskState(taskId);
|
|
125
88
|
this.logger.log(`Running delayed task '${taskId}' in ${timeoutMs}ms`);
|
|
126
|
-
setTimeout(()=>taskState.timedTask.execute(), timeoutMs
|
|
89
|
+
setTimeout(()=>taskState.timedTask.execute(), timeoutMs);
|
|
127
90
|
}
|
|
128
|
-
|
|
91
|
+
stopSchedulerTasks() {
|
|
92
|
+
this.toadScheduler.stop();
|
|
93
|
+
}
|
|
94
|
+
validateInput(taskId, serviceIdentifier, schedulerOptions) {
|
|
95
|
+
if (!taskId) {
|
|
96
|
+
throw new _jobexceptions.JobValidationException("Task ID was not provided. Can't register task or schedule job.", taskId);
|
|
97
|
+
}
|
|
98
|
+
const serviceName = serviceIdentifier || "unknown";
|
|
99
|
+
const prefix = `Job '${schedulerOptions?.name ?? serviceName}' with ID '${taskId}'`;
|
|
100
|
+
if (this.taskStates[taskId]) {
|
|
101
|
+
throw new _jobexceptions.JobValidationException(`${prefix} was already registered. Can't register a key twice.`, taskId);
|
|
102
|
+
}
|
|
103
|
+
let resolvedService;
|
|
104
|
+
try {
|
|
105
|
+
resolvedService = this.cradleService.resolve(serviceIdentifier);
|
|
106
|
+
} catch (e) {
|
|
107
|
+
if (e instanceof _awilix.AwilixResolutionError) {
|
|
108
|
+
throw new _jobexceptions.JobValidationException(`${prefix} had an awilix dependency resolution error. It can't be scheduled without fixing this problem. Inner error:\n` + e.stack, taskId);
|
|
109
|
+
} else {
|
|
110
|
+
throw new _jobexceptions.JobValidationException(`${prefix} is not a registered awilix dependency. It can't be scheduled. Error:\n` + e.stack, taskId);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (typeof resolvedService?.run !== "function") {
|
|
114
|
+
throw new _jobexceptions.JobValidationException(`${prefix} was resolved but it doesn't have a 'run()' method to call.`, taskId);
|
|
115
|
+
}
|
|
116
|
+
if (!schedulerOptions?.periodic && !schedulerOptions?.runOnce && !schedulerOptions?.runDelayed) {
|
|
117
|
+
throw new _jobexceptions.JobValidationException(`${prefix} Provide 'periodic', 'runOnce', or 'runDelayed' option.`, taskId);
|
|
118
|
+
}
|
|
119
|
+
if (!schedulerOptions?.periodic && !!schedulerOptions.disabled) {
|
|
120
|
+
throw new _jobexceptions.JobValidationException(`${prefix} Only tasks of type 'periodic' can be disabled at boot.`, taskId);
|
|
121
|
+
}
|
|
122
|
+
if (schedulerOptions?.runDelayed && !schedulerOptions.milliseconds && !schedulerOptions.seconds) {
|
|
123
|
+
throw new _jobexceptions.JobValidationException(`${prefix} Provide a delayed timing parameter (milliseconds|seconds)`, taskId);
|
|
124
|
+
}
|
|
125
|
+
if (schedulerOptions?.periodic && !schedulerOptions.milliseconds && !schedulerOptions.seconds && !schedulerOptions.minutes && !schedulerOptions.hours && !schedulerOptions.days) {
|
|
126
|
+
throw new _jobexceptions.JobValidationException(`${prefix} Provide a periodic timing parameter (milliseconds|seconds|minutes|hours|days)`, taskId);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
getSafeTimedTask(taskId, serviceIdentifier) {
|
|
129
130
|
const asyncHandler = async ()=>{
|
|
130
|
-
await this.timeTask(taskId,
|
|
131
|
+
await this.timeTask(taskId, serviceIdentifier);
|
|
131
132
|
};
|
|
132
133
|
return new _toadscheduler.AsyncTask(taskId, asyncHandler, this.getErrorHandler(taskId));
|
|
133
134
|
}
|
|
134
|
-
async timeTask(taskId,
|
|
135
|
-
|
|
135
|
+
async timeTask(taskId, serviceIdentifier) {
|
|
136
|
+
const taskState = this.taskStates[taskId];
|
|
136
137
|
taskState.started = Date.now();
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
await taskService.run();
|
|
140
|
-
} else {
|
|
141
|
-
await handler();
|
|
142
|
-
}
|
|
138
|
+
const taskService = this.cradleService.resolve(serviceIdentifier);
|
|
139
|
+
await taskService.run();
|
|
143
140
|
taskState.duration = Date.now() - taskState.started;
|
|
144
141
|
if (taskState.options?.logFirstCompletion !== false && !taskState?.firstCompletion) {
|
|
145
142
|
this.logger.log(`Task '${taskId}' first completion. Duration ${taskState.duration}ms`);
|
|
@@ -148,23 +145,20 @@ class TaskManagerService {
|
|
|
148
145
|
}
|
|
149
146
|
getErrorHandler(taskId) {
|
|
150
147
|
return (error)=>{
|
|
151
|
-
const
|
|
152
|
-
|
|
148
|
+
const taskState = this.taskStates[taskId];
|
|
149
|
+
taskState.lastError ??= {
|
|
153
150
|
time: Date.now(),
|
|
154
151
|
error
|
|
155
152
|
};
|
|
156
|
-
this.logger.error(`Task '${taskId}' threw an exception
|
|
153
|
+
this.logger.error(`Task '${taskId}' threw an exception: ${error.stack}`);
|
|
157
154
|
};
|
|
158
155
|
}
|
|
159
|
-
|
|
160
|
-
this.jobScheduler.stop();
|
|
161
|
-
}
|
|
162
|
-
#scheduleEnabledPeriodicJob(taskId) {
|
|
156
|
+
scheduleEnabledPeriodicJob(taskId) {
|
|
163
157
|
const taskState = this.getTaskState(taskId);
|
|
164
158
|
if (!taskState?.timedTask || !taskState?.options) {
|
|
165
159
|
throw new _jobexceptions.JobValidationException(`The requested task with ID ${taskId} was not registered properly ('timedTask' or 'options' missing).`, taskId);
|
|
166
160
|
}
|
|
167
|
-
const schedulerOptions = taskState
|
|
161
|
+
const schedulerOptions = taskState.options;
|
|
168
162
|
const timedTask = taskState.timedTask;
|
|
169
163
|
if (!schedulerOptions?.periodic) {
|
|
170
164
|
throw new _jobexceptions.JobValidationException(`The requested task with ID ${taskId} is not periodic and cannot be enabled.`, taskId);
|
|
@@ -173,7 +167,7 @@ class TaskManagerService {
|
|
|
173
167
|
this.logger.log(`Task '${taskId}' was scheduled (runImmediately: ${!!schedulerOptions.runImmediately}).`);
|
|
174
168
|
const job = new _toadscheduler.SimpleIntervalJob(schedulerOptions, timedTask);
|
|
175
169
|
taskState.job = job;
|
|
176
|
-
this.
|
|
170
|
+
this.toadScheduler.addSimpleIntervalJob(job);
|
|
177
171
|
} else {
|
|
178
172
|
this.logger.log(`Task '${taskId}' was marked as disabled (deferred execution).`);
|
|
179
173
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/services/task-manager.service.ts"],"names":["TaskManagerService","taskStates","logger","constructor","loggerFactory","cradleService","toadScheduler","name","registerJobOrTask","registration","id","taskId","task","serviceIdentifier","preset","schedulerOptions","validateInput","e","error","errorSummary","timedTask","getSafeTimedTask","options","runOnce","execute","runDelayed","delay","milliseconds","seconds","runTimeoutTaskInstance","scheduleEnabledPeriodicJob","scheduleDisabledJob","failIfEnabled","taskState","getTaskState","disabled","JobValidationException","disableJob","failIfDisabled","isTaskDisabled","job","stop","deregisterTask","removeById","timeoutMs","log","setTimeout","stopSchedulerTasks","serviceName","prefix","resolvedService","resolve","AwilixResolutionError","stack","run","periodic","minutes","hours","days","asyncHandler","timeTask","AsyncTask","getErrorHandler","started","Date","now","taskService","duration","logFirstCompletion","firstCompletion","lastError","time","runImmediately","SimpleIntervalJob","addSimpleIntervalJob"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "createCameraStreamSchema", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return createCameraStreamSchema;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _zod = require("zod");
|
|
12
|
+
const _genericvalidation = require("../../controllers/validation/generic.validation");
|
|
13
|
+
const createCameraStreamSchema = (isSqlite)=>_zod.z.object({
|
|
14
|
+
printerId: (0, _genericvalidation.idRuleV2)(isSqlite).nullish(),
|
|
15
|
+
streamURL: _zod.z.string().url(),
|
|
16
|
+
name: _zod.z.string().min(1).optional()
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=camera-service.validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/services/validators/camera-service.validation.ts"],"names":["createCameraStreamSchema","isSqlite","z","object","printerId","idRuleV2","nullish","streamURL","string","url","name","min","optional"],"mappings":";;;;+BAGaA;;;eAAAA;;;qBAHK;mCACO;AAElB,MAAMA,2BAA2B,CAACC,WACvCC,MAAC,CAACC,MAAM,CAAC;QACPC,WAAWC,IAAAA,2BAAQ,EAACJ,UAAUK,OAAO;QACrCC,WAAWL,MAAC,CAACM,MAAM,GAAGC,GAAG;QACzBC,MAAMR,MAAC,CAACM,MAAM,GAAGG,GAAG,CAAC,GAAGC,QAAQ;IAClC"}
|
|
@@ -9,54 +9,65 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
|
|
13
|
-
return
|
|
12
|
+
createOrUpdateFloorSchema: function() {
|
|
13
|
+
return createOrUpdateFloorSchema;
|
|
14
14
|
},
|
|
15
|
-
|
|
16
|
-
return
|
|
15
|
+
floorLevelValidator: function() {
|
|
16
|
+
return floorLevelValidator;
|
|
17
17
|
},
|
|
18
|
-
|
|
19
|
-
return
|
|
18
|
+
floorNameValidator: function() {
|
|
19
|
+
return floorNameValidator;
|
|
20
20
|
},
|
|
21
|
-
|
|
22
|
-
return
|
|
21
|
+
printerInFloorSchema: function() {
|
|
22
|
+
return printerInFloorSchema;
|
|
23
23
|
},
|
|
24
|
-
|
|
25
|
-
return
|
|
24
|
+
removePrinterInFloorSchema: function() {
|
|
25
|
+
return removePrinterInFloorSchema;
|
|
26
26
|
},
|
|
27
|
-
|
|
28
|
-
return
|
|
27
|
+
updateFloorLevelSchema: function() {
|
|
28
|
+
return updateFloorLevelSchema;
|
|
29
|
+
},
|
|
30
|
+
updateFloorNameSchema: function() {
|
|
31
|
+
return updateFloorNameSchema;
|
|
32
|
+
},
|
|
33
|
+
xValidator: function() {
|
|
34
|
+
return xValidator;
|
|
35
|
+
},
|
|
36
|
+
yValidator: function() {
|
|
37
|
+
return yValidator;
|
|
29
38
|
}
|
|
30
39
|
});
|
|
40
|
+
const _zod = require("zod");
|
|
31
41
|
const _serviceconstants = require("../../constants/service.constants");
|
|
32
42
|
const _genericvalidation = require("../../controllers/validation/generic.validation");
|
|
33
|
-
const
|
|
43
|
+
const removePrinterInFloorSchema = (isSqlite)=>_zod.z.object({
|
|
34
44
|
printerId: (0, _genericvalidation.idRuleV2)(isSqlite)
|
|
35
45
|
});
|
|
36
|
-
const
|
|
46
|
+
const xValidator = _zod.z.number().int().min(0).max(12);
|
|
47
|
+
const yValidator = _zod.z.number().int().min(0).max(12);
|
|
48
|
+
const floorLevelValidator = _zod.z.number().int();
|
|
49
|
+
const floorNameValidator = _zod.z.string().min(_serviceconstants.minFloorNameLength);
|
|
50
|
+
const printerInFloorSchema = (isSqlite)=>_zod.z.object({
|
|
37
51
|
printerId: (0, _genericvalidation.idRuleV2)(isSqlite),
|
|
38
|
-
floorId:
|
|
39
|
-
x:
|
|
40
|
-
y:
|
|
52
|
+
floorId: (0, _genericvalidation.idRuleV2)(isSqlite),
|
|
53
|
+
x: xValidator,
|
|
54
|
+
y: yValidator
|
|
55
|
+
});
|
|
56
|
+
const updateFloorNameSchema = _zod.z.object({
|
|
57
|
+
name: floorNameValidator
|
|
58
|
+
});
|
|
59
|
+
const updateFloorLevelSchema = _zod.z.object({
|
|
60
|
+
floor: floorLevelValidator
|
|
61
|
+
});
|
|
62
|
+
const createOrUpdateFloorSchema = (isSqlite)=>_zod.z.object({
|
|
63
|
+
name: floorNameValidator,
|
|
64
|
+
floor: floorLevelValidator,
|
|
65
|
+
printers: _zod.z.array(_zod.z.object({
|
|
66
|
+
printerId: (0, _genericvalidation.idRuleV2)(isSqlite),
|
|
67
|
+
floorId: (0, _genericvalidation.idRuleV2)(isSqlite).optional(),
|
|
68
|
+
x: xValidator,
|
|
69
|
+
y: yValidator
|
|
70
|
+
})).optional()
|
|
41
71
|
});
|
|
42
|
-
const updateFloorNameRules = {
|
|
43
|
-
name: `required|minLength:${_serviceconstants.minFloorNameLength}`
|
|
44
|
-
};
|
|
45
|
-
const updateFloorNumberRules = {
|
|
46
|
-
floor: "required|integer"
|
|
47
|
-
};
|
|
48
|
-
const updateFloorRules = {
|
|
49
|
-
name: `required|minLength:${_serviceconstants.minFloorNameLength}`,
|
|
50
|
-
floor: "required|integer",
|
|
51
|
-
printers: "array",
|
|
52
|
-
"printer.*.printerId": "required|mongoId",
|
|
53
|
-
"printer.*.x": "required|integer|between:0,12",
|
|
54
|
-
"printer.*.y": "required|integer|between:0,12"
|
|
55
|
-
};
|
|
56
|
-
const createFloorRules = {
|
|
57
|
-
name: `required|minLength:${_serviceconstants.minFloorNameLength}`,
|
|
58
|
-
floor: "required|integer",
|
|
59
|
-
printers: "array"
|
|
60
|
-
};
|
|
61
72
|
|
|
62
73
|
//# sourceMappingURL=floor-service.validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/validators/floor-service.validation.ts"],"names":["
|
|
1
|
+
{"version":3,"sources":["../../../src/services/validators/floor-service.validation.ts"],"names":["createOrUpdateFloorSchema","floorLevelValidator","floorNameValidator","printerInFloorSchema","removePrinterInFloorSchema","updateFloorLevelSchema","updateFloorNameSchema","xValidator","yValidator","isSqlite","z","object","printerId","idRuleV2","number","int","min","max","string","minFloorNameLength","floorId","x","y","name","floor","printers","array","optional"],"mappings":";;;;;;;;;;;IA8BaA,yBAAyB;eAAzBA;;IAnBAC,mBAAmB;eAAnBA;;IACAC,kBAAkB;eAAlBA;;IAEAC,oBAAoB;eAApBA;;IAVAC,0BAA0B;eAA1BA;;IAsBAC,sBAAsB;eAAtBA;;IAJAC,qBAAqB;eAArBA;;IAbAC,UAAU;eAAVA;;IACAC,UAAU;eAAVA;;;qBAVK;kCACiB;mCACV;AAElB,MAAMJ,6BAA6B,CAACK,WACzCC,MAAC,CAACC,MAAM,CAAC;QACPC,WAAWC,IAAAA,2BAAQ,EAACJ;IACtB;AAEK,MAAMF,aAAaG,MAAC,CAACI,MAAM,GAAGC,GAAG,GAAGC,GAAG,CAAC,GAAGC,GAAG,CAAC;AAC/C,MAAMT,aAAaE,MAAC,CAACI,MAAM,GAAGC,GAAG,GAAGC,GAAG,CAAC,GAAGC,GAAG,CAAC;AAC/C,MAAMhB,sBAAsBS,MAAC,CAACI,MAAM,GAAGC,GAAG;AAC1C,MAAMb,qBAAqBQ,MAAC,CAACQ,MAAM,GAAGF,GAAG,CAACG,oCAAkB;AAE5D,MAAMhB,uBAAuB,CAACM,WACnCC,MAAC,CAACC,MAAM,CAAC;QACPC,WAAWC,IAAAA,2BAAQ,EAACJ;QACpBW,SAASP,IAAAA,2BAAQ,EAACJ;QAClBY,GAAGd;QACHe,GAAGd;IACL;AAEK,MAAMF,wBAAwBI,MAAC,CAACC,MAAM,CAAC;IAC5CY,MAAMrB;AACR;AAEO,MAAMG,yBAAyBK,MAAC,CAACC,MAAM,CAAC;IAC7Ca,OAAOvB;AACT;AAEO,MAAMD,4BAA4B,CAACS,WACxCC,MAAC,CAACC,MAAM,CAAC;QACPY,MAAMrB;QACNsB,OAAOvB;QACPwB,UAAUf,MAAC,CACRgB,KAAK,CACJhB,MAAC,CAACC,MAAM,CAAC;YACPC,WAAWC,IAAAA,2BAAQ,EAACJ;YACpBW,SAASP,IAAAA,2BAAQ,EAACJ,UAAUkB,QAAQ;YACpCN,GAAGd;YACHe,GAAGd;QACL,IAEDmB,QAAQ;IACb"}
|
|
@@ -2,19 +2,32 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
Object.defineProperty(exports, "
|
|
5
|
+
Object.defineProperty(exports, "createPrintCompletionSchema", {
|
|
6
6
|
enumerable: true,
|
|
7
7
|
get: function() {
|
|
8
|
-
return
|
|
8
|
+
return createPrintCompletionSchema;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
+
const _zod = require("zod");
|
|
11
12
|
const _octoprintwebsocketconstants = require("../octoprint/constants/octoprint-websocket.constants");
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
const _genericvalidation = require("../../controllers/validation/generic.validation");
|
|
14
|
+
const createPrintCompletionSchema = (isSqlite)=>_zod.z.object({
|
|
15
|
+
fileName: _zod.z.string().min(1, "File name is required"),
|
|
16
|
+
status: _zod.z.enum(_octoprintwebsocketconstants.EVENT_TYPES_ARRAY, {
|
|
17
|
+
errorMap: (issue)=>{
|
|
18
|
+
if (issue.code === "invalid_type") {
|
|
19
|
+
return {
|
|
20
|
+
message: `Status must be one of: ${Object.values(_octoprintwebsocketconstants.EVENT_TYPES).join(", ")}`
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
message: "Invalid status"
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}),
|
|
28
|
+
printerId: (0, _genericvalidation.idRuleV2)(isSqlite),
|
|
29
|
+
completionLog: _zod.z.string().optional(),
|
|
30
|
+
context: _zod.z.any()
|
|
31
|
+
});
|
|
19
32
|
|
|
20
33
|
//# sourceMappingURL=print-completion-service.validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/validators/print-completion-service.validation.ts"],"names":["
|
|
1
|
+
{"version":3,"sources":["../../../src/services/validators/print-completion-service.validation.ts"],"names":["createPrintCompletionSchema","isSqlite","z","object","fileName","string","min","status","enum","EVENT_TYPES_ARRAY","errorMap","issue","code","message","Object","values","EVENT_TYPES","join","printerId","idRuleV2","completionLog","optional","context","any"],"mappings":";;;;+BAIaA;;;eAAAA;;;qBAJK;6CAC6B;mCACtB;AAElB,MAAMA,8BAA8B,CAACC,WAC1CC,MAAC,CAACC,MAAM,CAAC;QACPC,UAAUF,MAAC,CAACG,MAAM,GAAGC,GAAG,CAAC,GAAG;QAC5BC,QAAQL,MAAC,CAACM,IAAI,CAACC,8CAAiB,EAA2B;YACzDC,UAAU,CAACC;gBACT,IAAIA,MAAMC,IAAI,KAAK,gBAAgB;oBACjC,OAAO;wBAAEC,SAAS,CAAC,uBAAuB,EAAEC,OAAOC,MAAM,CAACC,wCAAW,EAAEC,IAAI,CAAC,OAAO;oBAAC;gBACtF;gBACA,OAAO;oBAAEJ,SAAS;gBAAiB;YACrC;QACF;QACAK,WAAWC,IAAAA,2BAAQ,EAAClB;QACpBmB,eAAelB,MAAC,CAACG,MAAM,GAAGgB,QAAQ;QAClCC,SAASpB,MAAC,CAACqB,GAAG;IAChB"}
|