@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
package/.yarnrc.yml
CHANGED
package/README.md
CHANGED
|
@@ -74,7 +74,7 @@ Thanks to the following parties for their financial support:
|
|
|
74
74
|
|
|
75
75
|
| Tier 1 | Tier 2 | Tier 3 | Tier 4 | One time |
|
|
76
76
|
|--------|--------|--------|--------|-----------|
|
|
77
|
-
| | [
|
|
77
|
+
| | [thatguymendel](https://github.com/thatguymendel) | | [doucettom](https://github.com/doucettom) | [th3dstudio](https://github.com/th3dstudio) |
|
|
78
78
|
|
|
79
79
|
|
|
80
80
|
## Contributors ✨
|
|
@@ -82,7 +82,7 @@ Thanks to the following parties for their financial support:
|
|
|
82
82
|
These are the people involved in the project. Find the meaning of the emoji keys [here](https://allcontributors.org/docs/en/emoji-key).
|
|
83
83
|
|
|
84
84
|
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
|
85
|
-
[](#contributors-)
|
|
86
86
|
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
|
87
87
|
|
|
88
88
|
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
|
@@ -91,34 +91,33 @@ These are the people involved in the project. Find the meaning of the emoji keys
|
|
|
91
91
|
<table>
|
|
92
92
|
<tbody>
|
|
93
93
|
<tr>
|
|
94
|
-
<td align="center" valign="top" width="
|
|
95
|
-
<td align="center" valign="top" width="
|
|
96
|
-
<td align="center" valign="top" width="
|
|
97
|
-
<td align="center" valign="top" width="
|
|
98
|
-
<td align="center" valign="top" width="
|
|
99
|
-
<td align="center" valign="top" width="
|
|
100
|
-
<td align="center" valign="top" width="
|
|
94
|
+
<td align="center" valign="top" width="10%"><a href="https://github.com/davidzwa"><img src="https://avatars.githubusercontent.com/u/6005355?v=4?s=40" width="40px;" alt="David Zwart"/><br /><sub><b>David Zwart</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Adavidzwa" title="Bug reports">🐛</a> <a href="https://github.com/fdm-monster/fdm-monster/commits?author=davidzwa" title="Code">💻</a> <a href="#maintenance-davidzwa" title="Maintenance">🚧</a> <a href="#userTesting-davidzwa" title="User Testing">📓</a></td>
|
|
95
|
+
<td align="center" valign="top" width="10%"><a href="https://kevenaar.name"><img src="https://avatars.githubusercontent.com/u/834643?v=4?s=40" width="40px;" alt="Maurice Kevenaar"/><br /><sub><b>Maurice Kevenaar</b></sub></a><br /><a href="#security-mkevenaar" title="Security">🛡️</a> <a href="#maintenance-mkevenaar" title="Maintenance">🚧</a> <a href="#ideas-mkevenaar" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Amkevenaar" title="Bug reports">🐛</a> <a href="https://github.com/fdm-monster/fdm-monster/pulls?q=is%3Apr+reviewed-by%3Amkevenaar" title="Reviewed Pull Requests">👀</a> <a href="#infra-mkevenaar" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
|
96
|
+
<td align="center" valign="top" width="10%"><a href="https://github.com/Tobikisss"><img src="https://avatars.githubusercontent.com/u/45754890?v=4?s=40" width="40px;" alt="Tobias"/><br /><sub><b>Tobias</b></sub></a><br /><a href="#ideas-Tobikisss" title="Ideas, Planning, & Feedback">🤔</a> <a href="#maintenance-Tobikisss" title="Maintenance">🚧</a> <a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3ATobikisss" title="Bug reports">🐛</a></td>
|
|
97
|
+
<td align="center" valign="top" width="10%"><a href="https://tideline3d.com"><img src="https://avatars.githubusercontent.com/u/12903320?v=4?s=40" width="40px;" alt="tideline3d"/><br /><sub><b>tideline3d</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Atideline3d" title="Bug reports">🐛</a> <a href="#ideas-tideline3d" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
98
|
+
<td align="center" valign="top" width="10%"><a href="https://github.com/windarrow3d"><img src="https://avatars.githubusercontent.com/u/91099282?v=4?s=40" width="40px;" alt="WindArrow3d"/><br /><sub><b>WindArrow3d</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Awindarrow3d" title="Bug reports">🐛</a> <a href="#financial-windarrow3d" title="Financial">💵</a> <a href="#ideas-windarrow3d" title="Ideas, Planning, & Feedback">🤔</a> <a href="#userTesting-windarrow3d" title="User Testing">📓</a> <a href="#platform-windarrow3d" title="Packaging/porting to new platform">📦</a></td>
|
|
99
|
+
<td align="center" valign="top" width="10%"><a href="http://lucianchapar.com"><img src="https://avatars.githubusercontent.com/u/33263520?v=4?s=40" width="40px;" alt="Lucian Chapar"/><br /><sub><b>Lucian Chapar</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Alucian151" title="Bug reports">🐛</a></td>
|
|
100
|
+
<td align="center" valign="top" width="10%"><a href="https://github.com/Dumnersm580"><img src="https://avatars.githubusercontent.com/u/80608783?v=4?s=40" width="40px;" alt="Dumnersm580"/><br /><sub><b>Dumnersm580</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/commits?author=Dumnersm580" title="Documentation">📖</a> <a href="#ideas-Dumnersm580" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
101
|
+
<td align="center" valign="top" width="10%"><a href="http://www.tophattwaffle.com"><img src="https://avatars.githubusercontent.com/u/6774125?v=4?s=40" width="40px;" alt="tophattwaffle"/><br /><sub><b>tophattwaffle</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Atophattwaffle" title="Bug reports">🐛</a> <a href="#ideas-tophattwaffle" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
102
|
+
<td align="center" valign="top" width="10%"><a href="https://github.com/rmhenn"><img src="https://avatars.githubusercontent.com/u/22482801?v=4?s=40" width="40px;" alt="rmhenn"/><br /><sub><b>rmhenn</b></sub></a><br /><a href="#ideas-rmhenn" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Armhenn" title="Bug reports">🐛</a></td>
|
|
103
|
+
<td align="center" valign="top" width="10%"><a href="https://github.com/cyrixdx4"><img src="https://avatars.githubusercontent.com/u/62126724?v=4?s=40" width="40px;" alt="cyrixdx4"/><br /><sub><b>cyrixdx4</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Acyrixdx4" title="Bug reports">🐛</a></td>
|
|
101
104
|
</tr>
|
|
102
105
|
<tr>
|
|
103
|
-
<td align="center" valign="top" width="
|
|
104
|
-
<td align="center" valign="top" width="
|
|
105
|
-
<td align="center" valign="top" width="
|
|
106
|
-
<td align="center" valign="top" width="
|
|
107
|
-
<td align="center" valign="top" width="
|
|
108
|
-
<td align="center" valign="top" width="
|
|
109
|
-
<td align="center" valign="top" width="
|
|
106
|
+
<td align="center" valign="top" width="10%"><a href="https://github.com/doucettom"><img src="https://avatars.githubusercontent.com/u/6595645?v=4?s=40" width="40px;" alt="doucettom"/><br /><sub><b>doucettom</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Adoucettom" title="Bug reports">🐛</a> <a href="#ideas-doucettom" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
107
|
+
<td align="center" valign="top" width="10%"><a href="https://github.com/ZombiesLoveMe"><img src="https://avatars.githubusercontent.com/u/35661391?v=4?s=40" width="40px;" alt="Callum"/><br /><sub><b>Callum</b></sub></a><br /><a href="#ideas-ZombiesLoveMe" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
108
|
+
<td align="center" valign="top" width="10%"><a href="https://github.com/bharvey88"><img src="https://avatars.githubusercontent.com/u/8107750?v=4?s=40" width="40px;" alt="bharvey88"/><br /><sub><b>bharvey88</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Abharvey88" title="Bug reports">🐛</a> <a href="#infra-bharvey88" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#platform-bharvey88" title="Packaging/porting to new platform">📦</a></td>
|
|
109
|
+
<td align="center" valign="top" width="10%"><a href="https://github.com/Mikec78660"><img src="https://avatars.githubusercontent.com/u/108021920?v=4?s=40" width="40px;" alt="Mikec78660"/><br /><sub><b>Mikec78660</b></sub></a><br /><a href="#ideas-Mikec78660" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
110
|
+
<td align="center" valign="top" width="10%"><a href="https://techinterview.guide"><img src="https://avatars.githubusercontent.com/u/168030?v=4?s=40" width="40px;" alt="w. ian douglas"/><br /><sub><b>w. ian douglas</b></sub></a><br /><a href="#ideas-iandouglas" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
111
|
+
<td align="center" valign="top" width="10%"><a href="http://insanityautomation.com/"><img src="https://avatars.githubusercontent.com/u/38436470?v=4?s=40" width="40px;" alt="InsanityAutomation"/><br /><sub><b>InsanityAutomation</b></sub></a><br /><a href="#ideas-InsanityAutomation" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3AInsanityAutomation" title="Bug reports">🐛</a></td>
|
|
112
|
+
<td align="center" valign="top" width="10%"><a href="https://github.com/LyfeOnEdge"><img src="https://avatars.githubusercontent.com/u/26140376?v=4?s=40" width="40px;" alt="Andrew (LyfeOnEdge) (ArcticGentoo)"/><br /><sub><b>Andrew (LyfeOnEdge) (ArcticGentoo)</b></sub></a><br /><a href="#ideas-LyfeOnEdge" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
113
|
+
<td align="center" valign="top" width="10%"><a href="https://github.com/callanova"><img src="https://avatars.githubusercontent.com/u/175639705?v=4?s=40" width="40px;" alt="callanova"/><br /><sub><b>callanova</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Acallanova" title="Bug reports">🐛</a></td>
|
|
114
|
+
<td align="center" valign="top" width="10%"><a href="https://github.com/thatguymendel"><img src="https://avatars.githubusercontent.com/u/67444998?v=4?s=40" width="40px;" alt="thatguymendel"/><br /><sub><b>thatguymendel</b></sub></a><br /><a href="#ideas-thatguymendel" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
115
|
+
<td align="center" valign="top" width="10%"><a href="https://github.com/julien-printerbox"><img src="https://avatars.githubusercontent.com/u/134132189?v=4?s=40" width="40px;" alt="julien-printerbox"/><br /><sub><b>julien-printerbox</b></sub></a><br /><a href="#ideas-julien-printerbox" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
110
116
|
</tr>
|
|
111
117
|
<tr>
|
|
112
|
-
<td align="center" valign="top" width="
|
|
113
|
-
<td align="center" valign="top" width="
|
|
114
|
-
<td align="center" valign="top" width="
|
|
115
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/callanova"><img src="https://avatars.githubusercontent.com/u/175639705?v=4?s=80" width="80px;" alt="callanova"/><br /><sub><b>callanova</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Acallanova" title="Bug reports">🐛</a></td>
|
|
116
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/thatguymendel"><img src="https://avatars.githubusercontent.com/u/67444998?v=4?s=80" width="80px;" alt="thatguymendel"/><br /><sub><b>thatguymendel</b></sub></a><br /><a href="#ideas-thatguymendel" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
117
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/julien-printerbox"><img src="https://avatars.githubusercontent.com/u/134132189?v=4?s=80" width="80px;" alt="julien-printerbox"/><br /><sub><b>julien-printerbox</b></sub></a><br /><a href="#ideas-julien-printerbox" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
118
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Tbwan"><img src="https://avatars.githubusercontent.com/u/44231748?v=4?s=80" width="80px;" alt="Tbwan"/><br /><sub><b>Tbwan</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3ATbwan" title="Bug reports">🐛</a></td>
|
|
119
|
-
</tr>
|
|
120
|
-
<tr>
|
|
121
|
-
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nuvious"><img src="https://avatars.githubusercontent.com/u/5287736?v=4?s=80" width="80px;" alt="David Cheeseman"/><br /><sub><b>David Cheeseman</b></sub></a><br /><a href="#ideas-nuvious" title="Ideas, Planning, & Feedback">🤔</a> <a href="#platform-nuvious" title="Packaging/porting to new platform">📦</a> <a href="#infra-nuvious" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
|
118
|
+
<td align="center" valign="top" width="10%"><a href="https://github.com/Tbwan"><img src="https://avatars.githubusercontent.com/u/44231748?v=4?s=40" width="40px;" alt="Tbwan"/><br /><sub><b>Tbwan</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3ATbwan" title="Bug reports">🐛</a></td>
|
|
119
|
+
<td align="center" valign="top" width="10%"><a href="https://github.com/nuvious"><img src="https://avatars.githubusercontent.com/u/5287736?v=4?s=40" width="40px;" alt="David Cheeseman"/><br /><sub><b>David Cheeseman</b></sub></a><br /><a href="#ideas-nuvious" title="Ideas, Planning, & Feedback">🤔</a> <a href="#platform-nuvious" title="Packaging/porting to new platform">📦</a> <a href="#infra-nuvious" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
|
120
|
+
<td align="center" valign="top" width="10%"><a href="https://github.com/thatguy-jaysenodell"><img src="https://avatars.githubusercontent.com/u/118288184?v=4?s=40" width="40px;" alt="That Guy Jaysen"/><br /><sub><b>That Guy Jaysen</b></sub></a><br /><a href="https://github.com/fdm-monster/fdm-monster/issues?q=author%3Athatguy-jaysenodell" title="Bug reports">🐛</a></td>
|
|
122
121
|
</tr>
|
|
123
122
|
</tbody>
|
|
124
123
|
</table>
|
package/RELEASE_NOTES.MD
CHANGED
|
@@ -1,5 +1,54 @@
|
|
|
1
1
|
# Develop
|
|
2
2
|
|
|
3
|
+
## Features
|
|
4
|
+
- Introduce PrusaLink adapter for limited printer support for these printers: MK3S(+) (needs PrusaLink extension with Raspberry Pi), Mini(+), MK4(S), XL, Core One
|
|
5
|
+
- Add opt-in Prometheus integration (still experimental)
|
|
6
|
+
- Add opt-in Loki integration (still experimental)
|
|
7
|
+
|
|
8
|
+
## Chores
|
|
9
|
+
|
|
10
|
+
- Remove unused code for OctoPrint plugin support (this work needs to go through triage again)
|
|
11
|
+
- Remove unused code for OctoPrint plugin backup (this work needs to go through triage again)
|
|
12
|
+
- Remove unused code for OctoPrint plugin firmware update (this work needs to go through triage again)
|
|
13
|
+
- Remove unused code for OctoPrint plugin repository
|
|
14
|
+
- Remove unused code for Prusa firmware releases
|
|
15
|
+
- Remove printer API endpoints for OctoPrint plugins, backups and firmware updates
|
|
16
|
+
- Remove cache-manager package
|
|
17
|
+
- Remove unused console files
|
|
18
|
+
- Update .env.template
|
|
19
|
+
- Removed BaseEntity
|
|
20
|
+
- Make printerId camera nullish
|
|
21
|
+
- Merge create and update schema floor
|
|
22
|
+
- Schema printerPositionsSchema simplified
|
|
23
|
+
- Add biome linter/formatter, remove prettier and eslint
|
|
24
|
+
|
|
25
|
+
## Changes
|
|
26
|
+
|
|
27
|
+
- `tsconfig.json` strictNullChecks and strictPropertyInitialization set to true for better null propagation logic.
|
|
28
|
+
- Update dependency injection with awilix, switch to CLASSIC mode for less verbose code
|
|
29
|
+
- Update API controller, use decorators over api builder
|
|
30
|
+
- Remove PrinterFile entity (unused)
|
|
31
|
+
- Remove printer/connection PATCH endpoint (unused)
|
|
32
|
+
- Remove debug settings from server settings database
|
|
33
|
+
- Remove all API compatibility feature flags except for printerGroupsApi and multiplePrinterServices
|
|
34
|
+
|
|
35
|
+
## Fixes
|
|
36
|
+
|
|
37
|
+
- Fix punycode warning by pinning tr46 package
|
|
38
|
+
- Fix camera dto and entity to be consistent
|
|
39
|
+
- Make yaml import fill in default arrays
|
|
40
|
+
- Make printCompletionSchema context type any
|
|
41
|
+
- Enforce properties on camera stream Mongoose schema for consistency with TypeORM camera stream entity
|
|
42
|
+
- Enforce floor id on Mongoose schema for consistency with TypeORM floor entity
|
|
43
|
+
- Set floor id in Mongoose floor service for consistency with typeorm service
|
|
44
|
+
- Fix print completion interface and dto
|
|
45
|
+
- Improved API key validation: klipper validation completely isolated from OctoPrint api key validation
|
|
46
|
+
- Query parameter `forceSave` in printer create/update API was used incorrectly (flipped around)
|
|
47
|
+
- Fixed all typescript issues
|
|
48
|
+
- Server settings would not always migrate properly
|
|
49
|
+
- Printer files store will not cache files of disabled printers
|
|
50
|
+
- Klipper printer should print on upload
|
|
51
|
+
|
|
3
52
|
# FDM Monster 19/03/2025 1.8.3
|
|
4
53
|
|
|
5
54
|
## Fixes
|
|
@@ -152,7 +201,7 @@
|
|
|
152
201
|
- Used attributes for PrinterFilesController
|
|
153
202
|
- Renamed OctoPrintApiService to OctoprintClient
|
|
154
203
|
- Switch to 1.6.x client UI version range
|
|
155
|
-
- Update Octoprint websocket with refresh interval, defaulting to 10sec. This loop will keep refresh attempts internal to the Websocket adapter of each service type (Octoprint, Moonraker,
|
|
204
|
+
- Update Octoprint websocket with refresh interval, defaulting to 10sec. This loop will keep refresh attempts internal to the Websocket adapter of each service type (Octoprint, Moonraker, etc).
|
|
156
205
|
|
|
157
206
|
## Fixes:
|
|
158
207
|
|
package/biome.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
|
|
3
|
+
"vcs": {
|
|
4
|
+
"enabled": false,
|
|
5
|
+
"clientKind": "git",
|
|
6
|
+
"useIgnoreFile": false
|
|
7
|
+
},
|
|
8
|
+
"files": {
|
|
9
|
+
"ignoreUnknown": false,
|
|
10
|
+
"ignore": []
|
|
11
|
+
},
|
|
12
|
+
"formatter": {
|
|
13
|
+
"enabled": true,
|
|
14
|
+
"indentStyle": "space",
|
|
15
|
+
"indentWidth": 2,
|
|
16
|
+
"lineWidth": 120
|
|
17
|
+
},
|
|
18
|
+
"organizeImports": {
|
|
19
|
+
"enabled": true
|
|
20
|
+
},
|
|
21
|
+
"linter": {
|
|
22
|
+
"enabled": true,
|
|
23
|
+
"rules": {
|
|
24
|
+
"recommended": true
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"javascript": {
|
|
28
|
+
"formatter": {
|
|
29
|
+
"quoteStyle": "double",
|
|
30
|
+
"trailingCommas": "all"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/consoles/download-github-releases.ts"],"names":["fetchReleases","response","axios","get","releases","data","releaseData","map","release","tag_name","name","published_at","body","outputPath","path","join","__dirname","fs","writeFileSync","JSON","stringify","console","log","error","fetchLatest"],"mappings":";;;;8DAAkB;2DACH;6DACE;;;;;;AASjB,MAAMA,gBAAgB;IACpB,IAAI;QACF,MAAMC,WAAW,MAAMC,cAAK,CAACC,GAAG,CAAY;QAC5C,MAAMC,WAAWH,SAASI,IAAI;QAG9B,MAAMC,cAAcF,SAASG,GAAG,CAAC,CAACC,UAAa,CAAA;gBAC7CC,UAAUD,QAAQC,QAAQ;gBAC1BC,MAAMF,QAAQE,IAAI;gBAClBC,cAAcH,QAAQG,YAAY;gBAClCC,MAAMJ,QAAQI,IAAI;YACpB,CAAA;QAGA,MAAMC,aAAaC,aAAI,CAACC,IAAI,CAACC,WAAW;QACxCC,WAAE,CAACC,aAAa,CAACL,YAAYM,KAAKC,SAAS,CAACd,aAAa,MAAM;QAC/De,QAAQC,GAAG,CAAC,CAAC,yBAAyB,EAAET,YAAY;IACtD,EAAE,OAAOU,OAAO;QACdF,QAAQE,KAAK,CAAC,4BAA4BA;IAC5C;AACF;AAEA,MAAMC,cAAc;IAClB,IAAI;QACF,MAAMvB,WAAW,MAAMC,cAAK,CAACC,GAAG,
|
|
1
|
+
{"version":3,"sources":["../../src/consoles/download-github-releases.ts"],"names":["fetchReleases","response","axios","get","releases","data","releaseData","map","release","tag_name","name","published_at","body","outputPath","path","join","__dirname","fs","writeFileSync","JSON","stringify","console","log","error","fetchLatest"],"mappings":";;;;8DAAkB;2DACH;6DACE;;;;;;AASjB,MAAMA,gBAAgB;IACpB,IAAI;QACF,MAAMC,WAAW,MAAMC,cAAK,CAACC,GAAG,CAAY;QAC5C,MAAMC,WAAWH,SAASI,IAAI;QAG9B,MAAMC,cAAcF,SAASG,GAAG,CAAC,CAACC,UAAa,CAAA;gBAC7CC,UAAUD,QAAQC,QAAQ;gBAC1BC,MAAMF,QAAQE,IAAI;gBAClBC,cAAcH,QAAQG,YAAY;gBAClCC,MAAMJ,QAAQI,IAAI;YACpB,CAAA;QAGA,MAAMC,aAAaC,aAAI,CAACC,IAAI,CAACC,WAAW;QACxCC,WAAE,CAACC,aAAa,CAACL,YAAYM,KAAKC,SAAS,CAACd,aAAa,MAAM;QAC/De,QAAQC,GAAG,CAAC,CAAC,yBAAyB,EAAET,YAAY;IACtD,EAAE,OAAOU,OAAO;QACdF,QAAQE,KAAK,CAAC,4BAA4BA;IAC5C;AACF;AAEA,MAAMC,cAAc;IAClB,IAAI;QACF,MAAMvB,WAAW,MAAMC,cAAK,CAACC,GAAG,CAC9B;QAEF,MAAMK,UAAUP,SAASI,IAAI;QAG7B,MAAMC,cAAc;YAClBG,UAAUD,QAAQC,QAAQ;YAC1BC,MAAMF,QAAQE,IAAI;YAClBC,cAAcH,QAAQG,YAAY;YAClCC,MAAMJ,QAAQI,IAAI;QACpB;QAGA,MAAMC,aAAaC,aAAI,CAACC,IAAI,CAACC,WAAW;QACxCC,WAAE,CAACC,aAAa,CAACL,YAAYM,KAAKC,SAAS,CAACd,aAAa,MAAM;QAC/De,QAAQC,GAAG,CAAC,CAAC,yBAAyB,EAAET,YAAY;IACtD,EAAE,OAAOU,OAAO;QACdF,QAAQE,KAAK,CAAC,4BAA4BA;IAC5C;AACF;AAEAvB;AACAwB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
const _child_process = require("child_process");
|
|
6
|
+
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
7
|
+
function _interop_require_default(obj) {
|
|
8
|
+
return obj && obj.__esModule ? obj : {
|
|
9
|
+
default: obj
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
const startPort = 1234;
|
|
13
|
+
const instanceCount = 10;
|
|
14
|
+
console.log(`Starting ${instanceCount} fake OctoPrint servers...`);
|
|
15
|
+
for(let i = 0; i < instanceCount; i++){
|
|
16
|
+
const port = startPort + i;
|
|
17
|
+
const process = (0, _child_process.spawn)("node", [
|
|
18
|
+
_path.default.join(__dirname, "./mock-octoprint.server.js"),
|
|
19
|
+
port.toString()
|
|
20
|
+
]);
|
|
21
|
+
process.stdout.on("data", (data)=>{
|
|
22
|
+
console.log(`[Server ${i + 1} - Port ${port}]: ${data.toString().trim()}`);
|
|
23
|
+
});
|
|
24
|
+
process.stderr.on("data", (data)=>{
|
|
25
|
+
console.error(`[Server ${i + 1} - Port ${port}] ERROR: ${data.toString().trim()}`);
|
|
26
|
+
});
|
|
27
|
+
console.log(`Started server ${i + 1} on port ${port}`);
|
|
28
|
+
}
|
|
29
|
+
console.log("All servers started. Press Ctrl+C to stop all servers.");
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=launch-http-servers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/consoles/launch-http-servers.ts"],"names":["startPort","instanceCount","console","log","i","port","process","spawn","path","join","__dirname","toString","stdout","on","data","trim","stderr","error"],"mappings":";;;;+BAAsB;6DACL;;;;;;AAEjB,MAAMA,YAAY;AAClB,MAAMC,gBAAgB;AAEtBC,QAAQC,GAAG,CAAC,CAAC,SAAS,EAAEF,cAAc,0BAA0B,CAAC;AAEjE,IAAK,IAAIG,IAAI,GAAGA,IAAIH,eAAeG,IAAK;IACtC,MAAMC,OAAOL,YAAYI;IACzB,MAAME,UAAUC,IAAAA,oBAAK,EAAC,QAAQ;QAACC,aAAI,CAACC,IAAI,CAACC,WAAW;QAA+BL,KAAKM,QAAQ;KAAG;IAEnGL,QAAQM,MAAM,CAACC,EAAE,CAAC,QAAQ,CAACC;QACzBZ,QAAQC,GAAG,CAAC,CAAC,QAAQ,EAAEC,IAAI,EAAE,QAAQ,EAAEC,KAAK,GAAG,EAAES,KAAKH,QAAQ,GAAGI,IAAI,IAAI;IAC3E;IAEAT,QAAQU,MAAM,CAACH,EAAE,CAAC,QAAQ,CAACC;QACzBZ,QAAQe,KAAK,CAAC,CAAC,QAAQ,EAAEb,IAAI,EAAE,QAAQ,EAAEC,KAAK,SAAS,EAAES,KAAKH,QAAQ,GAAGI,IAAI,IAAI;IACnF;IAEAb,QAAQC,GAAG,CAAC,CAAC,eAAe,EAAEC,IAAI,EAAE,SAAS,EAAEC,MAAM;AACvD;AAEAH,QAAQC,GAAG,CAAC"}
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
const _express = /*#__PURE__*/ _interop_require_default(require("express"));
|
|
6
|
+
const _multer = /*#__PURE__*/ _interop_require_default(require("multer"));
|
|
7
|
+
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
8
|
+
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
9
|
+
const _ws = require("ws");
|
|
10
|
+
const _http = /*#__PURE__*/ _interop_require_default(require("http"));
|
|
11
|
+
const _zod = require("zod");
|
|
12
|
+
const _nodeconsole = /*#__PURE__*/ _interop_require_wildcard(require("node:console"));
|
|
13
|
+
const _apimessages = require("./utils/api-messages");
|
|
14
|
+
const _wsmessages = require("./utils/ws-messages");
|
|
15
|
+
function _interop_require_default(obj) {
|
|
16
|
+
return obj && obj.__esModule ? obj : {
|
|
17
|
+
default: obj
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
21
|
+
if (typeof WeakMap !== "function") return null;
|
|
22
|
+
var cacheBabelInterop = new WeakMap();
|
|
23
|
+
var cacheNodeInterop = new WeakMap();
|
|
24
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
25
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
26
|
+
})(nodeInterop);
|
|
27
|
+
}
|
|
28
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
29
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
30
|
+
return obj;
|
|
31
|
+
}
|
|
32
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
33
|
+
return {
|
|
34
|
+
default: obj
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
38
|
+
if (cache && cache.has(obj)) {
|
|
39
|
+
return cache.get(obj);
|
|
40
|
+
}
|
|
41
|
+
var newObj = {
|
|
42
|
+
__proto__: null
|
|
43
|
+
};
|
|
44
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
45
|
+
for(var key in obj){
|
|
46
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
47
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
48
|
+
if (desc && (desc.get || desc.set)) {
|
|
49
|
+
Object.defineProperty(newObj, key, desc);
|
|
50
|
+
} else {
|
|
51
|
+
newObj[key] = obj[key];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
newObj.default = obj;
|
|
56
|
+
if (cache) {
|
|
57
|
+
cache.set(obj, newObj);
|
|
58
|
+
}
|
|
59
|
+
return newObj;
|
|
60
|
+
}
|
|
61
|
+
const port = process.argv[2] ? parseInt(process.argv[2]) : 1234;
|
|
62
|
+
const uploadsDir = _path.default.join(__dirname, "uploads", `server-${port.toString()}`);
|
|
63
|
+
const WS_MESSAGE_INTERVAL = 1000;
|
|
64
|
+
if (!_fs.default.existsSync(uploadsDir)) {
|
|
65
|
+
_nodeconsole.log(`[PORT ${port}] Creating uploads folder ${uploadsDir}`);
|
|
66
|
+
_fs.default.mkdirSync(uploadsDir, {
|
|
67
|
+
recursive: true
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
cleanupUploads();
|
|
71
|
+
const upload = (0, _multer.default)({
|
|
72
|
+
dest: uploadsDir
|
|
73
|
+
});
|
|
74
|
+
const app = (0, _express.default)();
|
|
75
|
+
const server = _http.default.createServer(app);
|
|
76
|
+
const wss = new _ws.Server({
|
|
77
|
+
server
|
|
78
|
+
});
|
|
79
|
+
const clients = new Map();
|
|
80
|
+
const AuthSchema = _zod.z.object({
|
|
81
|
+
command: _zod.z.literal("auth"),
|
|
82
|
+
user: _zod.z.literal("admin"),
|
|
83
|
+
token: _zod.z.string().regex(/^[a-zA-Z0-9]{32}$/)
|
|
84
|
+
});
|
|
85
|
+
wss.on("connection", (ws)=>{
|
|
86
|
+
const clientId = Date.now().toString();
|
|
87
|
+
_nodeconsole.log(`[PORT ${port}] New WebSocket connection established`);
|
|
88
|
+
let authenticated = false;
|
|
89
|
+
let messageInterval = null;
|
|
90
|
+
ws.on("message", async (message)=>{
|
|
91
|
+
try {
|
|
92
|
+
const msgString = message.toString();
|
|
93
|
+
if (msgString.includes("throttle")) {
|
|
94
|
+
_nodeconsole.log(`Throttle message received ${msgString}`);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const json = JSON.parse(msgString);
|
|
98
|
+
if (!authenticated) {
|
|
99
|
+
if (!json) {
|
|
100
|
+
_nodeconsole.log(`[PORT ${port}] Invalid message JSON format`);
|
|
101
|
+
ws.close();
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
try {
|
|
105
|
+
const parts = json.auth.split(":");
|
|
106
|
+
AuthSchema.parse({
|
|
107
|
+
command: "auth",
|
|
108
|
+
user: parts[0],
|
|
109
|
+
token: parts[1]
|
|
110
|
+
});
|
|
111
|
+
_nodeconsole.log(`[PORT ${port}] Authentication successful for admin`);
|
|
112
|
+
authenticated = true;
|
|
113
|
+
clients.set(clientId, {
|
|
114
|
+
ws,
|
|
115
|
+
authenticated
|
|
116
|
+
});
|
|
117
|
+
setTimeout(async ()=>{
|
|
118
|
+
try {
|
|
119
|
+
ws.send(JSON.stringify(_wsmessages.currentMessage));
|
|
120
|
+
} catch (fileError) {
|
|
121
|
+
_nodeconsole.error(`[PORT ${port}] Error reading message file:`, fileError);
|
|
122
|
+
ws.send(JSON.stringify({
|
|
123
|
+
error: "Failed to read message content"
|
|
124
|
+
}));
|
|
125
|
+
}
|
|
126
|
+
}, 500);
|
|
127
|
+
messageInterval = setupMessageInterval(ws, clientId, WS_MESSAGE_INTERVAL);
|
|
128
|
+
} catch (validationError) {
|
|
129
|
+
_nodeconsole.log(`[PORT ${port}] Authentication failed: Invalid token format ${JSON.stringify(json)} ${validationError}`);
|
|
130
|
+
ws.close();
|
|
131
|
+
}
|
|
132
|
+
} else {
|
|
133
|
+
_nodeconsole.log(`[PORT ${port}] Received message from authenticated client`);
|
|
134
|
+
}
|
|
135
|
+
} catch (error) {
|
|
136
|
+
_nodeconsole.error(`[PORT ${port}] Error processing message:`, error);
|
|
137
|
+
ws.close();
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
ws.on("close", ()=>{
|
|
141
|
+
_nodeconsole.log(`[PORT ${port}] WebSocket connection closed ${clientId}`);
|
|
142
|
+
if (messageInterval) {
|
|
143
|
+
clearInterval(messageInterval);
|
|
144
|
+
messageInterval = null;
|
|
145
|
+
}
|
|
146
|
+
clients.delete(clientId);
|
|
147
|
+
});
|
|
148
|
+
const setupMessageInterval = (ws, clientId, baseInterval)=>{
|
|
149
|
+
if (messageInterval) {
|
|
150
|
+
clearInterval(messageInterval);
|
|
151
|
+
messageInterval = null;
|
|
152
|
+
}
|
|
153
|
+
const getRandomizedInterval = (baseMs)=>{
|
|
154
|
+
const variationFactor = 0.85 + Math.random() * 0.3;
|
|
155
|
+
return Math.floor(baseMs * variationFactor);
|
|
156
|
+
};
|
|
157
|
+
const sendPeriodicMessage = ()=>{
|
|
158
|
+
try {
|
|
159
|
+
if (ws.readyState === ws.OPEN) {
|
|
160
|
+
ws.send(JSON.stringify(_wsmessages.currentMessage));
|
|
161
|
+
_nodeconsole.log(`[PORT ${port}] Periodic message sent to client (ID: ${clientId})`);
|
|
162
|
+
messageInterval = setTimeout(sendPeriodicMessage, getRandomizedInterval(baseInterval));
|
|
163
|
+
} else {
|
|
164
|
+
_nodeconsole.log(`[PORT ${port}] Stopped periodic messages for client (ID: ${clientId})`);
|
|
165
|
+
messageInterval = null;
|
|
166
|
+
}
|
|
167
|
+
} catch (error) {
|
|
168
|
+
_nodeconsole.error(`[PORT ${port}] Error sending periodic message:`, error);
|
|
169
|
+
messageInterval = null;
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
messageInterval = setTimeout(sendPeriodicMessage, getRandomizedInterval(baseInterval));
|
|
173
|
+
return messageInterval;
|
|
174
|
+
};
|
|
175
|
+
});
|
|
176
|
+
app.get("/api/version", async (req, res)=>{
|
|
177
|
+
res.send({
|
|
178
|
+
server: "1",
|
|
179
|
+
api: "2",
|
|
180
|
+
text: "3"
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
app.get("/api/currentuser", async (req, res)=>{
|
|
184
|
+
res.send({
|
|
185
|
+
name: "admin",
|
|
186
|
+
permissions: [],
|
|
187
|
+
groups: []
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
app.get("/api/printer", async (req, res)=>{
|
|
191
|
+
_nodeconsole.log(`[PORT ${port}] ${req.method.toUpperCase()} ${req.url} request`);
|
|
192
|
+
res.status(200).json(_apimessages.printerHistorySuccessResponse);
|
|
193
|
+
});
|
|
194
|
+
app.get("/api/connection", async (req, res)=>{
|
|
195
|
+
_nodeconsole.log(`[PORT ${port}] ${req.method.toUpperCase()} ${req.url} request`);
|
|
196
|
+
res.status(200).json(_apimessages.connectionSuccessResponse);
|
|
197
|
+
});
|
|
198
|
+
app.get("/api/job", async (req, res)=>{
|
|
199
|
+
_nodeconsole.log(`[PORT ${port}] ${req.method.toUpperCase()} ${req.url} request`);
|
|
200
|
+
res.status(200).json(_apimessages.jobSuccessResponse);
|
|
201
|
+
});
|
|
202
|
+
app.get("/api/files/local", async (req, res)=>{
|
|
203
|
+
_nodeconsole.log(`[PORT ${port}] ${req.method.toUpperCase()} ${req.url} request`);
|
|
204
|
+
res.status(200).json(_apimessages.filesSuccessResponse);
|
|
205
|
+
});
|
|
206
|
+
app.post("/api/login", async (req, res)=>{
|
|
207
|
+
res.send({
|
|
208
|
+
_is_external_client: true,
|
|
209
|
+
_login_mechanism: "apikey",
|
|
210
|
+
session: "123123abc123123abc123123abc123ab"
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
app.post("/api/files/local", upload.single("file"), (req, res)=>{
|
|
214
|
+
const { select, print } = req.body;
|
|
215
|
+
const file = req.file;
|
|
216
|
+
if (!file) {
|
|
217
|
+
return res.status(400).json({
|
|
218
|
+
error: "Missing file"
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
if (typeof select === "undefined" || typeof print === "undefined") {
|
|
222
|
+
return res.status(400).json({
|
|
223
|
+
error: "Missing required fields: select, print"
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
if (Object.keys(req.body).length !== 2) {
|
|
227
|
+
return res.status(400).json({
|
|
228
|
+
error: "Only fields 'select' and 'print' are allowed"
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
if (![
|
|
232
|
+
"true",
|
|
233
|
+
"false"
|
|
234
|
+
].includes(select) || ![
|
|
235
|
+
"true",
|
|
236
|
+
"false"
|
|
237
|
+
].includes(print)) {
|
|
238
|
+
return res.status(400).json({
|
|
239
|
+
error: "Fields 'select' and 'print' must be boolean values (true/false)"
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
_nodeconsole.log(`[PORT ${port}] Received file:`, file.originalname);
|
|
243
|
+
_nodeconsole.log(`[PORT ${port}] File size:`, file.size);
|
|
244
|
+
_nodeconsole.log(`[PORT ${port}] MIME type:`, file.mimetype);
|
|
245
|
+
_nodeconsole.log(`[PORT ${port}] select:`, select, `\n[PORT ${port}] print:`, print, `\n-----`);
|
|
246
|
+
res.json({
|
|
247
|
+
message: "File received successfully"
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
app.use((req, res)=>{
|
|
251
|
+
_nodeconsole.log(`[PORT ${port}] ${req.method.toUpperCase()} ${req.url} Not found`);
|
|
252
|
+
res.status(404).json({
|
|
253
|
+
error: "Not Found"
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
server.listen(port, ()=>{
|
|
257
|
+
_nodeconsole.log(`[PORT ${port}] Server is running on http://localhost:${port}`);
|
|
258
|
+
_nodeconsole.log(`[PORT ${port}] WebSocket server is available on ws://localhost:${port}`);
|
|
259
|
+
});
|
|
260
|
+
process.on("SIGINT", ()=>{
|
|
261
|
+
_nodeconsole.log("\n[PORT ${port}] Received SIGINT signal (Ctrl+C). Shutting down gracefully...");
|
|
262
|
+
cleanupUploads();
|
|
263
|
+
server.close(()=>{
|
|
264
|
+
_nodeconsole.log("[PORT ${port}] Server closed");
|
|
265
|
+
process.exit(0);
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
process.on("SIGTERM", ()=>{
|
|
269
|
+
_nodeconsole.log("\n[PORT ${port}] Received SIGTERM signal. Shutting down gracefully...");
|
|
270
|
+
cleanupUploads();
|
|
271
|
+
server.close(()=>{
|
|
272
|
+
_nodeconsole.log("[PORT ${port}] Server closed");
|
|
273
|
+
process.exit(0);
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
function cleanupUploads() {
|
|
277
|
+
try {
|
|
278
|
+
_nodeconsole.log(`[PORT ${port}] Cleaning up uploads folder...`);
|
|
279
|
+
const files = _fs.default.readdirSync(uploadsDir);
|
|
280
|
+
for (const file of files){
|
|
281
|
+
const filePath = _path.default.join(uploadsDir, file);
|
|
282
|
+
_fs.default.unlinkSync(filePath);
|
|
283
|
+
_nodeconsole.log(`[PORT ${port}] Deleted: ${filePath}`);
|
|
284
|
+
}
|
|
285
|
+
_nodeconsole.log(`[PORT ${port}] Uploads folder cleanup complete`);
|
|
286
|
+
} catch (error) {
|
|
287
|
+
_nodeconsole.error(`[PORT ${port}] Error cleaning up uploads folder:`, error);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
//# sourceMappingURL=mock-octoprint.server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/consoles/mock-octoprint.server.ts"],"names":["port","process","argv","parseInt","uploadsDir","path","join","__dirname","toString","WS_MESSAGE_INTERVAL","fs","existsSync","console","log","mkdirSync","recursive","cleanupUploads","upload","multer","dest","app","express","server","http","createServer","wss","WebSocketServer","clients","Map","AuthSchema","z","object","command","literal","user","token","string","regex","on","ws","clientId","Date","now","authenticated","messageInterval","message","msgString","includes","json","JSON","parse","close","parts","auth","split","set","setTimeout","send","stringify","currentMessage","fileError","error","setupMessageInterval","validationError","clearInterval","delete","baseInterval","getRandomizedInterval","baseMs","variationFactor","Math","random","floor","sendPeriodicMessage","readyState","OPEN","get","req","res","api","text","name","permissions","groups","method","toUpperCase","url","status","printerHistorySuccessResponse","connectionSuccessResponse","jobSuccessResponse","filesSuccessResponse","post","_is_external_client","_login_mechanism","session","single","select","print","body","file","Object","keys","length","originalname","size","mimetype","use","listen","exit","files","readdirSync","filePath","unlinkSync"],"mappings":"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"}
|