@fdm-monster/server 1.9.4 → 2.0.0
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 +8 -7
- package/.yarn/install-state.gz +0 -0
- package/CONTRIBUTING.md +5 -5
- package/README.md +9 -8
- package/RELEASE_NOTES.MD +52 -0
- package/SECURITY.md +1 -1
- package/biome.json +8 -5
- package/dist/consoles/download-github-releases.js +3 -3
- package/dist/consoles/launch-http-servers.js +4 -4
- package/dist/consoles/launch-http-servers.js.map +1 -1
- package/dist/consoles/mock-bambu.server.js +50 -30
- package/dist/consoles/mock-bambu.server.js.map +1 -1
- package/dist/consoles/mock-camera/default-image.js +13 -0
- package/dist/consoles/mock-camera/default-image.js.map +1 -0
- package/dist/consoles/mock-camera/mock-camera.server.js +160 -0
- package/dist/consoles/mock-camera/mock-camera.server.js.map +1 -0
- package/dist/consoles/mock-octoprint.server.js +281 -73
- package/dist/consoles/mock-octoprint.server.js.map +1 -1
- package/dist/consoles/mock-prusalink.server.js +17 -17
- package/dist/consoles/mock-prusalink.server.js.map +1 -1
- package/dist/consoles/typeorm-create.js +135 -0
- package/dist/consoles/typeorm-create.js.map +1 -0
- package/dist/consoles/typeorm-generate.js +8 -8
- package/dist/consoles/typeorm-generate.js.map +1 -1
- package/dist/consoles/utils/api-messages.js.map +1 -1
- package/dist/constants/authorization.constants.js +25 -31
- package/dist/constants/authorization.constants.js.map +1 -1
- package/dist/constants/event.constants.js.map +1 -1
- package/dist/constants/server-settings.constants.js +3 -19
- package/dist/constants/server-settings.constants.js.map +1 -1
- package/dist/container.js +43 -59
- package/dist/container.js.map +1 -1
- package/dist/container.tokens.js +9 -6
- package/dist/container.tokens.js.map +1 -1
- package/dist/controllers/auth.controller.js +1 -1
- package/dist/controllers/auth.controller.js.map +1 -1
- package/dist/controllers/batch-call.controller.js +7 -25
- package/dist/controllers/batch-call.controller.js.map +1 -1
- package/dist/controllers/file-storage.controller.js +248 -0
- package/dist/controllers/file-storage.controller.js.map +1 -0
- package/dist/controllers/first-time-setup.controller.js +6 -5
- package/dist/controllers/first-time-setup.controller.js.map +1 -1
- package/dist/controllers/floor.controller.js +12 -12
- package/dist/controllers/floor.controller.js.map +1 -1
- package/dist/controllers/metrics.controller.js.map +1 -1
- package/dist/controllers/print-job.controller.js +666 -0
- package/dist/controllers/print-job.controller.js.map +1 -0
- package/dist/controllers/print-queue.controller.js +375 -0
- package/dist/controllers/print-queue.controller.js.map +1 -0
- package/dist/controllers/printer-files.controller.js +88 -59
- package/dist/controllers/printer-files.controller.js.map +1 -1
- package/dist/controllers/printer-settings.controller.js +0 -21
- package/dist/controllers/printer-settings.controller.js.map +1 -1
- package/dist/controllers/{printer-group.controller.js → printer-tag.controller.js} +51 -34
- package/dist/controllers/printer-tag.controller.js.map +1 -0
- package/dist/controllers/printer.controller.js +21 -7
- package/dist/controllers/printer.controller.js.map +1 -1
- package/dist/controllers/server-private.controller.js +2 -1
- package/dist/controllers/server-private.controller.js.map +1 -1
- package/dist/controllers/server-public.controller.js +11 -15
- package/dist/controllers/server-public.controller.js.map +1 -1
- package/dist/controllers/settings.controller.js +0 -68
- package/dist/controllers/settings.controller.js.map +1 -1
- package/dist/controllers/slicer-compat.controller.js +216 -0
- package/dist/controllers/slicer-compat.controller.js.map +1 -0
- package/dist/controllers/user.controller.js +8 -12
- package/dist/controllers/user.controller.js.map +1 -1
- package/dist/controllers/validation/batch-controller.validation.js +13 -13
- package/dist/controllers/validation/batch-controller.validation.js.map +1 -1
- package/dist/controllers/validation/generic.validation.js +4 -8
- package/dist/controllers/validation/generic.validation.js.map +1 -1
- package/dist/controllers/validation/printer-files-controller.validation.js +2 -2
- package/dist/controllers/validation/user-controller.validation.js +14 -9
- package/dist/controllers/validation/user-controller.validation.js.map +1 -1
- package/dist/data-source.js +25 -12
- package/dist/data-source.js.map +1 -1
- package/dist/entities/camera-stream.entity.js +2 -1
- package/dist/entities/camera-stream.entity.js.map +1 -1
- package/dist/entities/floor.entity.js +3 -5
- package/dist/entities/floor.entity.js.map +1 -1
- package/dist/entities/index.js +15 -11
- package/dist/entities/index.js.map +1 -1
- package/dist/entities/print-job.entity.js +195 -0
- package/dist/entities/print-job.entity.js.map +1 -0
- package/dist/entities/{printer-group.entity.js → printer-tag.entity.js} +17 -17
- package/dist/entities/printer-tag.entity.js.map +1 -0
- package/dist/entities/printer.entity.js +4 -10
- package/dist/entities/printer.entity.js.map +1 -1
- package/dist/entities/settings.entity.js +3 -12
- package/dist/entities/settings.entity.js.map +1 -1
- package/dist/entities/{group.entity.js → tag.entity.js} +15 -8
- package/dist/entities/tag.entity.js.map +1 -0
- package/dist/handlers/logging/file-logging.transport.js.map +1 -1
- package/dist/handlers/logging/static.logger.js.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/middleware/authenticate.js +4 -4
- package/dist/middleware/authenticate.js.map +1 -1
- package/dist/middleware/database.js +1 -1
- package/dist/middleware/exception.filter.js +114 -90
- package/dist/middleware/exception.filter.js.map +1 -1
- package/dist/middleware/global.middleware.js +10 -18
- package/dist/middleware/global.middleware.js.map +1 -1
- package/dist/middleware/param-converter.middleware.js +5 -13
- package/dist/middleware/param-converter.middleware.js.map +1 -1
- package/dist/middleware/passport.js +2 -2
- package/dist/middleware/passport.js.map +1 -1
- package/dist/middleware/printer-resolver.js.map +1 -1
- package/dist/middleware/printer.js +3 -2
- package/dist/middleware/printer.js.map +1 -1
- package/dist/middleware/socketio.middleware.js.map +1 -1
- package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js +1 -1
- package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js.map +1 -1
- package/dist/migrations/1766576698569-DropPermissions.js +28 -0
- package/dist/migrations/1766576698569-DropPermissions.js.map +1 -0
- package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js +186 -0
- package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js.map +1 -0
- package/dist/migrations/1767279607392-DropCustomGcode.js +31 -0
- package/dist/migrations/1767279607392-DropCustomGcode.js.map +1 -0
- package/dist/migrations/1767291804417-DropPrintCompletions.js +37 -0
- package/dist/migrations/1767291804417-DropPrintCompletions.js.map +1 -0
- package/dist/migrations/1767352862576-DropSettingsFileClean.js +88 -0
- package/dist/migrations/1767352862576-DropSettingsFileClean.js.map +1 -0
- package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js +107 -0
- package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js.map +1 -0
- package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js +62 -0
- package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js.map +1 -0
- package/dist/migrations/1767432108916-RenameGroupToTag.js +86 -0
- package/dist/migrations/1767432108916-RenameGroupToTag.js.map +1 -0
- package/dist/migrations/1767451444137-AddPrintJob.js +207 -0
- package/dist/migrations/1767451444137-AddPrintJob.js.map +1 -0
- package/dist/server.constants.js +9 -17
- package/dist/server.constants.js.map +1 -1
- package/dist/server.core.js +3 -7
- package/dist/server.core.js.map +1 -1
- package/dist/server.env.js +4 -49
- package/dist/server.env.js.map +1 -1
- package/dist/server.host.js +26 -44
- package/dist/server.host.js.map +1 -1
- package/dist/services/authentication/auth.service.js.map +1 -1
- package/dist/services/authentication/jwt.service.js.map +1 -1
- package/dist/services/bambu/bambu-ftp.adapter.js +3 -3
- package/dist/services/bambu/bambu-ftp.adapter.js.map +1 -1
- package/dist/services/bambu/bambu-mqtt.adapter.js +74 -77
- package/dist/services/bambu/bambu-mqtt.adapter.js.map +1 -1
- package/dist/services/bambu/bambu.client.js.map +1 -1
- package/dist/services/bambu.api.js +11 -0
- package/dist/services/bambu.api.js.map +1 -1
- package/dist/services/core/batch-call.service.js +0 -25
- package/dist/services/core/batch-call.service.js.map +1 -1
- package/dist/services/core/multer.service.js +5 -9
- package/dist/services/core/multer.service.js.map +1 -1
- package/dist/services/core/yaml.service.js +219 -187
- package/dist/services/core/yaml.service.js.map +1 -1
- package/dist/services/file-analysis.service.js +146 -0
- package/dist/services/file-analysis.service.js.map +1 -0
- package/dist/services/file-storage.service.js +386 -0
- package/dist/services/file-storage.service.js.map +1 -0
- package/dist/services/interfaces/camera-stream.dto.js +2 -2
- package/dist/services/interfaces/camera-stream.dto.js.map +1 -1
- package/dist/services/interfaces/floor.dto.js +3 -3
- package/dist/services/interfaces/floor.dto.js.map +1 -1
- package/dist/services/interfaces/{printer-group.dto.js → printer-tag.dto.js} +9 -8
- package/dist/services/interfaces/printer-tag.dto.js.map +1 -0
- package/dist/services/interfaces/{print-completion.interface.js → printer-tag.service.interface.js} +1 -1
- package/dist/services/interfaces/{printer-group.service.interface.js.map → printer-tag.service.interface.js.map} +1 -1
- package/dist/services/interfaces/printer.dto.js +2 -2
- package/dist/services/interfaces/printer.dto.js.map +1 -1
- package/dist/services/interfaces/refresh-token.dto.js.map +1 -1
- package/dist/services/interfaces/role.dto.js.map +1 -1
- package/dist/services/interfaces/settings.dto.js +0 -1
- package/dist/services/interfaces/settings.dto.js.map +1 -1
- package/dist/services/interfaces/{group.dto.js → tag.dto.js} +1 -1
- package/dist/services/interfaces/tag.dto.js.map +1 -0
- package/dist/services/interfaces/user.dto.js.map +1 -1
- package/dist/services/moonraker/constants/moonraker-event.dto.js.map +1 -1
- package/dist/services/moonraker/moonraker-websocket.adapter.js.map +1 -1
- package/dist/services/moonraker/moonraker.client.js.map +1 -1
- package/dist/services/moonraker.api.js +3 -0
- package/dist/services/moonraker.api.js.map +1 -1
- package/dist/services/octoprint/dto/files/gcode-analysis.dto.js.map +1 -0
- package/dist/services/octoprint/dto/octoprint-event.dto.js.map +1 -1
- package/dist/services/octoprint/octoprint-api.routes.js +0 -7
- package/dist/services/octoprint/octoprint-api.routes.js.map +1 -1
- package/dist/services/octoprint/octoprint-websocket.adapter.js.map +1 -1
- package/dist/services/octoprint/octoprint.client.js +0 -4
- package/dist/services/octoprint/octoprint.client.js.map +1 -1
- package/dist/services/octoprint.api.js +3 -0
- package/dist/services/octoprint.api.js.map +1 -1
- package/dist/services/orm/base.service.js.map +1 -1
- package/dist/services/orm/camera-stream.service.js.map +1 -1
- package/dist/services/orm/floor-position.service.js.map +1 -1
- package/dist/services/orm/floor.service.js +12 -19
- package/dist/services/orm/floor.service.js.map +1 -1
- package/dist/services/orm/permission.service.js +3 -54
- package/dist/services/orm/permission.service.js.map +1 -1
- package/dist/services/orm/print-job.service.js +539 -0
- package/dist/services/orm/print-job.service.js.map +1 -0
- package/dist/services/orm/printer-tag.service.js +120 -0
- package/dist/services/orm/printer-tag.service.js.map +1 -0
- package/dist/services/orm/printer.service.js.map +1 -1
- package/dist/services/orm/refresh-token.service.js.map +1 -1
- package/dist/services/orm/role.service.js +25 -39
- package/dist/services/orm/role.service.js.map +1 -1
- package/dist/services/orm/settings.service.js +4 -15
- package/dist/services/orm/settings.service.js.map +1 -1
- package/dist/services/orm/user.service.js +17 -13
- package/dist/services/orm/user.service.js.map +1 -1
- package/dist/services/print-file-downloader.service.js +169 -0
- package/dist/services/print-file-downloader.service.js.map +1 -0
- package/dist/services/print-queue.service.js +268 -0
- package/dist/services/print-queue.service.js.map +1 -0
- package/dist/services/printer-api.factory.js +1 -1
- package/dist/services/printer-api.factory.js.map +1 -1
- package/dist/services/printer-api.interface.js.map +1 -1
- package/dist/services/prusa-link/constants/prusalink-event.dto.js.map +1 -1
- package/dist/services/prusa-link/prusa-link-http-polling.adapter.js +1 -3
- package/dist/services/prusa-link/prusa-link-http-polling.adapter.js.map +1 -1
- package/dist/services/prusa-link/prusa-link.api.js +4 -1
- package/dist/services/prusa-link/prusa-link.api.js.map +1 -1
- package/dist/services/prusa-link/utils/prusa-link-http-client.builder.js.map +1 -1
- package/dist/services/validators/floor-service.validation.js +25 -31
- package/dist/services/validators/floor-service.validation.js.map +1 -1
- package/dist/services/validators/print-job.validation.js +31 -0
- package/dist/services/validators/print-job.validation.js.map +1 -0
- package/dist/services/validators/settings-service.validation.js +0 -22
- package/dist/services/validators/settings-service.validation.js.map +1 -1
- package/dist/services/validators/user-service.validation.js +15 -10
- package/dist/services/validators/user-service.validation.js.map +1 -1
- package/dist/services/validators/yaml-service.validation.js +8 -14
- package/dist/services/validators/yaml-service.validation.js.map +1 -1
- package/dist/shared/load-controllers.js +2 -1
- package/dist/shared/load-controllers.js.map +1 -1
- package/dist/shared/runtime-settings.migration.js +1 -11
- package/dist/shared/runtime-settings.migration.js.map +1 -1
- package/dist/shared/websocket-rpc-extended.adapter.js +13 -4
- package/dist/shared/websocket-rpc-extended.adapter.js.map +1 -1
- package/dist/shared/websocket.adapter.js.map +1 -1
- package/dist/state/file-upload-tracker.cache.js.map +1 -1
- package/dist/state/file.cache.js +6 -6
- package/dist/state/file.cache.js.map +1 -1
- package/dist/state/floor.store.js +3 -10
- package/dist/state/floor.store.js.map +1 -1
- package/dist/state/printer-events.cache.js +180 -20
- package/dist/state/printer-events.cache.js.map +1 -1
- package/dist/state/printer-files.store.js.map +1 -1
- package/dist/state/printer-socket.store.js +25 -20
- package/dist/state/printer-socket.store.js.map +1 -1
- package/dist/state/printer-thumbnail.cache.js +98 -188
- package/dist/state/printer-thumbnail.cache.js.map +1 -1
- package/dist/state/printer.cache.js +3 -13
- package/dist/state/printer.cache.js.map +1 -1
- package/dist/state/settings.store.js +4 -42
- package/dist/state/settings.store.js.map +1 -1
- package/dist/state/socket-io.gateway.js +1 -1
- package/dist/state/socket-io.gateway.js.map +1 -1
- package/dist/state/test-printer-socket.store.js +6 -3
- package/dist/state/test-printer-socket.store.js.map +1 -1
- package/dist/tasks/boot.task.js +11 -91
- package/dist/tasks/boot.task.js.map +1 -1
- package/dist/tasks/print-job-analysis.task.js +116 -0
- package/dist/tasks/print-job-analysis.task.js.map +1 -0
- package/dist/tasks/printer-files-load.task.js +29 -0
- package/dist/tasks/printer-files-load.task.js.map +1 -0
- package/dist/tasks/socketio.task.js +1 -1
- package/dist/tasks/socketio.task.js.map +1 -1
- package/dist/tasks.js +3 -2
- package/dist/tasks.js.map +1 -1
- package/dist/utils/cache/key-diff.cache.js +20 -61
- package/dist/utils/cache/key-diff.cache.js.map +1 -1
- package/dist/utils/parsers/3mf.parser.js +337 -0
- package/dist/utils/parsers/3mf.parser.js.map +1 -0
- package/dist/utils/parsers/bgcode.parser.js +223 -0
- package/dist/utils/parsers/bgcode.parser.js.map +1 -0
- package/dist/utils/parsers/gcode.parser.js +254 -0
- package/dist/utils/parsers/gcode.parser.js.map +1 -0
- package/dist/utils/swagger/decorators.js +39 -0
- package/dist/utils/swagger/decorators.js.map +1 -0
- package/dist/utils/swagger/generator.js +196 -0
- package/dist/utils/swagger/generator.js.map +1 -0
- package/dist/utils/swagger/swagger.js +93 -0
- package/dist/utils/swagger/swagger.js.map +1 -0
- package/package.json +24 -30
- package/dist/controllers/custom-gcode.controller.js +0 -150
- package/dist/controllers/custom-gcode.controller.js.map +0 -1
- package/dist/controllers/print-completion.controller.js +0 -118
- package/dist/controllers/print-completion.controller.js.map +0 -1
- package/dist/controllers/printer-group.controller.js.map +0 -1
- package/dist/entities/custom-gcode.entity.js +0 -49
- package/dist/entities/custom-gcode.entity.js.map +0 -1
- package/dist/entities/group.entity.js.map +0 -1
- package/dist/entities/permission.entity.js +0 -37
- package/dist/entities/permission.entity.js.map +0 -1
- package/dist/entities/print-completion.entity.js +0 -90
- package/dist/entities/print-completion.entity.js.map +0 -1
- package/dist/entities/printer-group.entity.js.map +0 -1
- package/dist/models/Auth/Permission.js +0 -20
- package/dist/models/Auth/Permission.js.map +0 -1
- package/dist/models/Auth/RefreshToken.js +0 -41
- package/dist/models/Auth/RefreshToken.js.map +0 -1
- package/dist/models/Auth/Role.js +0 -20
- package/dist/models/Auth/Role.js.map +0 -1
- package/dist/models/Auth/User.js +0 -49
- package/dist/models/Auth/User.js.map +0 -1
- package/dist/models/CameraStream.js +0 -49
- package/dist/models/CameraStream.js.map +0 -1
- package/dist/models/CustomGcode.js +0 -28
- package/dist/models/CustomGcode.js.map +0 -1
- package/dist/models/Floor.js +0 -33
- package/dist/models/Floor.js.map +0 -1
- package/dist/models/FloorPrinter.js +0 -38
- package/dist/models/FloorPrinter.js.map +0 -1
- package/dist/models/PrintCompletion.js +0 -40
- package/dist/models/PrintCompletion.js.map +0 -1
- package/dist/models/Printer.js +0 -78
- package/dist/models/Printer.js.map +0 -1
- package/dist/models/Settings.js +0 -150
- package/dist/models/Settings.js.map +0 -1
- package/dist/models/index.js +0 -54
- package/dist/models/index.js.map +0 -1
- package/dist/mongo-migrations/20210713120034-printers-settingsapperance-apikey.js +0 -45
- package/dist/mongo-migrations/20210713120034-printers-settingsapperance-apikey.js.map +0 -1
- package/dist/mongo-migrations/20210907173950-printers-enabled.js +0 -35
- package/dist/mongo-migrations/20210907173950-printers-enabled.js.map +0 -1
- package/dist/mongo-migrations/20211029110742-user-password-passwordhash.js +0 -35
- package/dist/mongo-migrations/20211029110742-user-password-passwordhash.js.map +0 -1
- package/dist/mongo-migrations/20230414141005-floor-remove-groupinfloor.js +0 -60
- package/dist/mongo-migrations/20230414141005-floor-remove-groupinfloor.js.map +0 -1
- package/dist/mongo-migrations/20230427202911-printer-remove-sortindex.js +0 -30
- package/dist/mongo-migrations/20230427202911-printer-remove-sortindex.js.map +0 -1
- package/dist/mongo-migrations/20230716065316-user-remove-name.js +0 -30
- package/dist/mongo-migrations/20230716065316-user-remove-name.js.map +0 -1
- package/dist/mongo-migrations/20231111081809-printer-flatten-name.js +0 -35
- package/dist/mongo-migrations/20231111081809-printer-flatten-name.js.map +0 -1
- package/dist/mongo-migrations/20231111082521-printer-remove-settingsappearance.js +0 -41
- package/dist/mongo-migrations/20231111082521-printer-remove-settingsappearance.js.map +0 -1
- package/dist/mongo-migrations/20231202183902-printer-files-simpler.js +0 -41
- package/dist/mongo-migrations/20231202183902-printer-files-simpler.js.map +0 -1
- package/dist/services/interfaces/custom-gcode.dto.js +0 -18
- package/dist/services/interfaces/custom-gcode.dto.js.map +0 -1
- package/dist/services/interfaces/custom-gcode.service.interface.js +0 -6
- package/dist/services/interfaces/custom-gcode.service.interface.js.map +0 -1
- package/dist/services/interfaces/gcode-analysis.dto.js.map +0 -1
- package/dist/services/interfaces/group.dto.js.map +0 -1
- package/dist/services/interfaces/permission.dto.js +0 -16
- package/dist/services/interfaces/permission.dto.js.map +0 -1
- package/dist/services/interfaces/print-completion-context.dto.js +0 -6
- package/dist/services/interfaces/print-completion-context.dto.js.map +0 -1
- package/dist/services/interfaces/print-completion.dto.js +0 -38
- package/dist/services/interfaces/print-completion.dto.js.map +0 -1
- package/dist/services/interfaces/print-completion.interface.js.map +0 -1
- package/dist/services/interfaces/printer-group.dto.js.map +0 -1
- package/dist/services/interfaces/printer-group.service.interface.js +0 -6
- package/dist/services/mongoose/camera-stream.service.js +0 -67
- package/dist/services/mongoose/camera-stream.service.js.map +0 -1
- package/dist/services/mongoose/custom-gcode.service.js +0 -50
- package/dist/services/mongoose/custom-gcode.service.js.map +0 -1
- package/dist/services/mongoose/floor.service.js +0 -139
- package/dist/services/mongoose/floor.service.js.map +0 -1
- package/dist/services/mongoose/permission.service.js +0 -73
- package/dist/services/mongoose/permission.service.js.map +0 -1
- package/dist/services/mongoose/print-completion.service.js +0 -134
- package/dist/services/mongoose/print-completion.service.js.map +0 -1
- package/dist/services/mongoose/print-completion.shared.js +0 -59
- package/dist/services/mongoose/print-completion.shared.js.map +0 -1
- package/dist/services/mongoose/printer.service.js +0 -216
- package/dist/services/mongoose/printer.service.js.map +0 -1
- package/dist/services/mongoose/refresh-token.service.js +0 -104
- package/dist/services/mongoose/refresh-token.service.js.map +0 -1
- package/dist/services/mongoose/role.service.js +0 -132
- package/dist/services/mongoose/role.service.js.map +0 -1
- package/dist/services/mongoose/settings.service.js +0 -124
- package/dist/services/mongoose/settings.service.js.map +0 -1
- package/dist/services/mongoose/user.service.js +0 -180
- package/dist/services/mongoose/user.service.js.map +0 -1
- package/dist/services/orm/custom-gcode.service.js +0 -42
- package/dist/services/orm/custom-gcode.service.js.map +0 -1
- package/dist/services/orm/print-completion.service.js +0 -87
- package/dist/services/orm/print-completion.service.js.map +0 -1
- package/dist/services/orm/printer-group.service.js +0 -109
- package/dist/services/orm/printer-group.service.js.map +0 -1
- package/dist/services/validators/camera-service.validation.js +0 -19
- package/dist/services/validators/camera-service.validation.js.map +0 -1
- package/dist/services/validators/print-completion-service.validation.js +0 -33
- package/dist/services/validators/print-completion-service.validation.js.map +0 -1
- package/dist/shared.constants.js +0 -15
- package/dist/shared.constants.js.map +0 -1
- package/dist/tasks/print-completion.socketio.task.js +0 -91
- package/dist/tasks/print-completion.socketio.task.js.map +0 -1
- package/dist/tasks/printer-file-clean.task.js +0 -74
- package/dist/tasks/printer-file-clean.task.js.map +0 -1
- package/migrate-mongo-config.js +0 -45
- /package/dist/services/{interfaces → octoprint/dto/files}/gcode-analysis.dto.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/consoles/mock-camera/default-image.ts"],"names":["DEFAULT_IMAGE_BASE64"],"mappings":";;;;+BAGaA;;;eAAAA;;;AAAN,MAAMA,uBAAuB"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
const _express = /*#__PURE__*/ _interop_require_default(require("express"));
|
|
6
|
+
const _nodehttp = /*#__PURE__*/ _interop_require_default(require("node:http"));
|
|
7
|
+
const _nodefs = /*#__PURE__*/ _interop_require_default(require("node:fs"));
|
|
8
|
+
const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
|
|
9
|
+
const _defaultimage = require("./default-image.js");
|
|
10
|
+
function _interop_require_default(obj) {
|
|
11
|
+
return obj && obj.__esModule ? obj : {
|
|
12
|
+
default: obj
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
const port = process.argv[2] ? Number.parseInt(process.argv[2]) : 8181;
|
|
16
|
+
const fps = process.argv[3] ? Number.parseInt(process.argv[3]) : 10;
|
|
17
|
+
const frameInterval = 1000 / fps;
|
|
18
|
+
const app = (0, _express.default)();
|
|
19
|
+
const server = _nodehttp.default.createServer(app);
|
|
20
|
+
const activeIntervals = new Set();
|
|
21
|
+
const framesDir = _nodepath.default.join(process.cwd(), "media", "mock-camera");
|
|
22
|
+
if (!_nodefs.default.existsSync(framesDir)) {
|
|
23
|
+
console.log(`[CAMERA:${port}] Creating frames folder ${framesDir}`);
|
|
24
|
+
console.log(`[CAMERA:${port}] You can place custom .jpg/.jpeg/.png images here to use as frames`);
|
|
25
|
+
_nodefs.default.mkdirSync(framesDir, {
|
|
26
|
+
recursive: true
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
let customFrames = [];
|
|
30
|
+
try {
|
|
31
|
+
const files = _nodefs.default.readdirSync(framesDir).filter((f)=>{
|
|
32
|
+
const lower = f.toLowerCase();
|
|
33
|
+
return lower.endsWith('.jpg') || lower.endsWith('.jpeg') || lower.endsWith('.png');
|
|
34
|
+
}).sort((a, b)=>a.localeCompare(b));
|
|
35
|
+
if (files.length > 0) {
|
|
36
|
+
console.log(`[CAMERA:${port}] Loading ${files.length} custom frame(s) from ${framesDir}`);
|
|
37
|
+
customFrames = files.map((f)=>{
|
|
38
|
+
const filePath = _nodepath.default.join(framesDir, f);
|
|
39
|
+
const data = _nodefs.default.readFileSync(filePath);
|
|
40
|
+
const contentType = f.toLowerCase().endsWith('.png') ? 'image/png' : 'image/jpeg';
|
|
41
|
+
return {
|
|
42
|
+
data,
|
|
43
|
+
contentType
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
console.log(`[CAMERA:${port}] Loaded custom frames: ${files.join(', ')}`);
|
|
47
|
+
}
|
|
48
|
+
} catch (error) {
|
|
49
|
+
console.error(`[CAMERA:${port}] Error loading custom frames:`, error);
|
|
50
|
+
}
|
|
51
|
+
const defaultFrame = {
|
|
52
|
+
data: Buffer.from(_defaultimage.DEFAULT_IMAGE_BASE64, 'base64'),
|
|
53
|
+
contentType: 'image/jpeg'
|
|
54
|
+
};
|
|
55
|
+
console.log(`[CAMERA:${port}] Loaded default frame from embedded image`);
|
|
56
|
+
function generateFrame() {
|
|
57
|
+
if (customFrames.length > 0) {
|
|
58
|
+
const frameIndex = Math.floor(Date.now() / 1000) % customFrames.length;
|
|
59
|
+
return customFrames[frameIndex];
|
|
60
|
+
}
|
|
61
|
+
return defaultFrame;
|
|
62
|
+
}
|
|
63
|
+
app.get("/", (req, res)=>{
|
|
64
|
+
console.log(`[CAMERA:${port}] New MJPEG stream connection from ${req.ip}`);
|
|
65
|
+
res.writeHead(200, {
|
|
66
|
+
'Content-Type': 'multipart/x-mixed-replace; boundary=--FRAME',
|
|
67
|
+
'Cache-Control': 'no-cache, no-store, must-revalidate',
|
|
68
|
+
'Pragma': 'no-cache',
|
|
69
|
+
'Expires': '0',
|
|
70
|
+
'Connection': 'close'
|
|
71
|
+
});
|
|
72
|
+
const intervalId = setInterval(()=>{
|
|
73
|
+
try {
|
|
74
|
+
const frame = generateFrame();
|
|
75
|
+
res.write('--FRAME\r\n');
|
|
76
|
+
res.write(`Content-Type: ${frame.contentType}\r\n`);
|
|
77
|
+
res.write(`Content-Length: ${frame.data.length}\r\n`);
|
|
78
|
+
res.write('\r\n');
|
|
79
|
+
res.write(frame.data);
|
|
80
|
+
res.write('\r\n');
|
|
81
|
+
} catch (error) {
|
|
82
|
+
console.error(`[CAMERA:${port}] Error sending frame:`, error);
|
|
83
|
+
clearInterval(intervalId);
|
|
84
|
+
activeIntervals.delete(intervalId);
|
|
85
|
+
res.end();
|
|
86
|
+
}
|
|
87
|
+
}, frameInterval);
|
|
88
|
+
activeIntervals.add(intervalId);
|
|
89
|
+
req.on('close', ()=>{
|
|
90
|
+
console.log(`[CAMERA:${port}] Client disconnected`);
|
|
91
|
+
clearInterval(intervalId);
|
|
92
|
+
activeIntervals.delete(intervalId);
|
|
93
|
+
});
|
|
94
|
+
res.on('error', (error)=>{
|
|
95
|
+
console.error(`[CAMERA:${port}] Response error:`, error);
|
|
96
|
+
clearInterval(intervalId);
|
|
97
|
+
activeIntervals.delete(intervalId);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
app.get("/snapshot", (req, res)=>{
|
|
101
|
+
console.log(`[CAMERA:${port}] Snapshot request from ${req.ip}`);
|
|
102
|
+
try {
|
|
103
|
+
const frame = generateFrame();
|
|
104
|
+
res.writeHead(200, {
|
|
105
|
+
'Content-Type': frame.contentType,
|
|
106
|
+
'Content-Length': frame.data.length,
|
|
107
|
+
'Cache-Control': 'no-cache'
|
|
108
|
+
});
|
|
109
|
+
res.end(frame.data);
|
|
110
|
+
} catch (error) {
|
|
111
|
+
console.error(`[CAMERA:${port}] Error generating snapshot:`, error);
|
|
112
|
+
res.status(500).json({
|
|
113
|
+
error: 'Failed to generate snapshot'
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
app.get("/status", (req, res)=>{
|
|
118
|
+
res.json({
|
|
119
|
+
status: 'online',
|
|
120
|
+
fps: fps,
|
|
121
|
+
customFrames: customFrames.length,
|
|
122
|
+
framesDir: framesDir
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
app.use((req, res)=>{
|
|
126
|
+
console.log(`[CAMERA:${port}] ${req.method.toUpperCase()} ${req.url} Not found`);
|
|
127
|
+
res.status(404).json({
|
|
128
|
+
error: 'Not Found'
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
server.listen(port, ()=>{
|
|
132
|
+
console.log(`[CAMERA:${port}] Mock camera server running on http://localhost:${port}`);
|
|
133
|
+
console.log(`[CAMERA:${port}] MJPEG stream: http://localhost:${port}/`);
|
|
134
|
+
console.log(`[CAMERA:${port}] Snapshot: http://localhost:${port}/snapshot`);
|
|
135
|
+
console.log(`[CAMERA:${port}] Status: http://localhost:${port}/status`);
|
|
136
|
+
console.log(`[CAMERA:${port}] FPS: ${fps}`);
|
|
137
|
+
const framesString = customFrames.length > 0 ? `${customFrames.length} loaded` : 'none (using placeholder)';
|
|
138
|
+
console.log(`[CAMERA:${port}] Custom frames: ${framesString}`);
|
|
139
|
+
if (customFrames.length === 0) {
|
|
140
|
+
console.log(`[CAMERA:${port}] Tip: Add .jpg or .png files to ${framesDir} to use custom frames`);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
function shutdown(signal) {
|
|
144
|
+
console.log(`\n[CAMERA:${port}] Received ${signal} signal. Shutting down gracefully...`);
|
|
145
|
+
console.log(`[CAMERA:${port}] Clearing ${activeIntervals.size} active stream(s)...`);
|
|
146
|
+
activeIntervals.forEach((interval)=>clearInterval(interval));
|
|
147
|
+
activeIntervals.clear();
|
|
148
|
+
server.close(()=>{
|
|
149
|
+
console.log(`[CAMERA:${port}] Server closed`);
|
|
150
|
+
process.exit(0);
|
|
151
|
+
});
|
|
152
|
+
setTimeout(()=>{
|
|
153
|
+
console.error(`[CAMERA:${port}] Could not close connections in time, forcefully shutting down`);
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}, 5000);
|
|
156
|
+
}
|
|
157
|
+
process.on('SIGINT', ()=>shutdown('SIGINT'));
|
|
158
|
+
process.on('SIGTERM', ()=>shutdown('SIGTERM'));
|
|
159
|
+
|
|
160
|
+
//# sourceMappingURL=mock-camera.server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/consoles/mock-camera/mock-camera.server.ts"],"names":["port","process","argv","Number","parseInt","fps","frameInterval","app","express","server","http","createServer","activeIntervals","Set","framesDir","path","join","cwd","fs","existsSync","console","log","mkdirSync","recursive","customFrames","files","readdirSync","filter","f","lower","toLowerCase","endsWith","sort","a","b","localeCompare","length","map","filePath","data","readFileSync","contentType","error","defaultFrame","Buffer","from","DEFAULT_IMAGE_BASE64","generateFrame","frameIndex","Math","floor","Date","now","get","req","res","ip","writeHead","intervalId","setInterval","frame","write","clearInterval","delete","end","add","on","status","json","use","method","toUpperCase","url","listen","framesString","shutdown","signal","size","forEach","interval","clear","close","exit","setTimeout"],"mappings":"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"}
|
|
@@ -4,14 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
});
|
|
5
5
|
const _express = /*#__PURE__*/ _interop_require_default(require("express"));
|
|
6
6
|
const _multer = /*#__PURE__*/ _interop_require_default(require("multer"));
|
|
7
|
-
const
|
|
8
|
-
const
|
|
7
|
+
const _nodefs = /*#__PURE__*/ _interop_require_default(require("node:fs"));
|
|
8
|
+
const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
|
|
9
9
|
const _ws = require("ws");
|
|
10
|
-
const
|
|
10
|
+
const _nodehttp = /*#__PURE__*/ _interop_require_default(require("node:http"));
|
|
11
11
|
const _zod = require("zod");
|
|
12
12
|
const _nodeconsole = /*#__PURE__*/ _interop_require_wildcard(require("node:console"));
|
|
13
13
|
const _apimessages = require("./utils/api-messages");
|
|
14
|
-
const _wsmessages = require("./utils/ws-messages");
|
|
15
14
|
function _interop_require_default(obj) {
|
|
16
15
|
return obj && obj.__esModule ? obj : {
|
|
17
16
|
default: obj
|
|
@@ -58,12 +57,166 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
58
57
|
}
|
|
59
58
|
return newObj;
|
|
60
59
|
}
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
let isPrinting = false;
|
|
61
|
+
let isPaused = false;
|
|
62
|
+
let isFinished = false;
|
|
63
|
+
let currentPrintFile = "";
|
|
64
|
+
let printProgress = 0;
|
|
65
|
+
let printStartTime = 0;
|
|
66
|
+
const PRINT_DURATION = 20;
|
|
67
|
+
function getCurrentMessage() {
|
|
68
|
+
updatePrintProgress();
|
|
69
|
+
const elapsedSeconds = isPrinting ? (Date.now() - printStartTime) / 1000 : 0;
|
|
70
|
+
const remainingSeconds = isPrinting ? Math.max(0, PRINT_DURATION - elapsedSeconds) : null;
|
|
71
|
+
let stateText = "Operational";
|
|
72
|
+
if (isPrinting && isPaused) stateText = "Paused";
|
|
73
|
+
else if (isPrinting) stateText = "Printing";
|
|
74
|
+
const fileName = isFinished ? finishedFileName : currentPrintFile || null;
|
|
75
|
+
const hasFile = isPrinting || isFinished;
|
|
76
|
+
return {
|
|
77
|
+
current: {
|
|
78
|
+
state: {
|
|
79
|
+
text: stateText,
|
|
80
|
+
flags: {
|
|
81
|
+
operational: true,
|
|
82
|
+
printing: isPrinting && !isPaused,
|
|
83
|
+
cancelling: false,
|
|
84
|
+
pausing: false,
|
|
85
|
+
resuming: false,
|
|
86
|
+
finishing: false,
|
|
87
|
+
closedOrError: false,
|
|
88
|
+
error: false,
|
|
89
|
+
paused: isPaused,
|
|
90
|
+
ready: !isPrinting && !isFinished,
|
|
91
|
+
sdReady: true,
|
|
92
|
+
finished: isFinished
|
|
93
|
+
},
|
|
94
|
+
error: ""
|
|
95
|
+
},
|
|
96
|
+
job: {
|
|
97
|
+
file: {
|
|
98
|
+
name: fileName,
|
|
99
|
+
path: fileName,
|
|
100
|
+
display: fileName,
|
|
101
|
+
origin: hasFile ? "local" : null,
|
|
102
|
+
size: hasFile ? 1024000 : null,
|
|
103
|
+
date: hasFile ? printStartTime / 1000 : null
|
|
104
|
+
},
|
|
105
|
+
estimatedPrintTime: hasFile ? PRINT_DURATION : null,
|
|
106
|
+
averagePrintTime: null,
|
|
107
|
+
lastPrintTime: null,
|
|
108
|
+
filament: hasFile ? {
|
|
109
|
+
tool0: {
|
|
110
|
+
length: 1000,
|
|
111
|
+
volume: 2.4
|
|
112
|
+
}
|
|
113
|
+
} : null,
|
|
114
|
+
user: null
|
|
115
|
+
},
|
|
116
|
+
currentZ: isPrinting ? Math.floor(printProgress / 5) : null,
|
|
117
|
+
progress: {
|
|
118
|
+
completion: isFinished ? 100 : isPrinting ? printProgress : null,
|
|
119
|
+
filepos: hasFile ? Math.floor((isFinished ? 100 : printProgress) / 100 * 1024000) : null,
|
|
120
|
+
printTime: isFinished ? PRINT_DURATION : isPrinting ? Math.floor(elapsedSeconds) : null,
|
|
121
|
+
printTimeLeft: isFinished ? 0 : remainingSeconds !== null ? Math.floor(remainingSeconds) : null,
|
|
122
|
+
printTimeLeftOrigin: hasFile ? "estimate" : null
|
|
123
|
+
},
|
|
124
|
+
offsets: {},
|
|
125
|
+
resends: {
|
|
126
|
+
count: 0,
|
|
127
|
+
transmitted: 8,
|
|
128
|
+
ratio: 0
|
|
129
|
+
},
|
|
130
|
+
serverTime: Date.now() / 1000,
|
|
131
|
+
temps: [],
|
|
132
|
+
busyFiles: [],
|
|
133
|
+
logs: [],
|
|
134
|
+
messages: []
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
let finishedFileName = "";
|
|
139
|
+
function updatePrintProgress() {
|
|
140
|
+
if (isFinished) {
|
|
141
|
+
isFinished = false;
|
|
142
|
+
finishedFileName = "";
|
|
143
|
+
currentPrintFile = "";
|
|
144
|
+
printProgress = 0;
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
if (isPrinting && !isPaused) {
|
|
148
|
+
const elapsedSeconds = (Date.now() - printStartTime) / 1000;
|
|
149
|
+
printProgress = Math.min(elapsedSeconds / PRINT_DURATION * 100, 100);
|
|
150
|
+
if (printProgress >= 100) {
|
|
151
|
+
isFinished = true;
|
|
152
|
+
finishedFileName = currentPrintFile;
|
|
153
|
+
isPrinting = false;
|
|
154
|
+
printProgress = 100;
|
|
155
|
+
_nodeconsole.log(`[PORT] Print completed: ${currentPrintFile}`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
function getJobResponse() {
|
|
160
|
+
updatePrintProgress();
|
|
161
|
+
const fileName = isFinished ? finishedFileName : currentPrintFile;
|
|
162
|
+
const hasJob = isPrinting || isFinished;
|
|
163
|
+
if (!hasJob) {
|
|
164
|
+
return {
|
|
165
|
+
job: {
|
|
166
|
+
file: {
|
|
167
|
+
name: null,
|
|
168
|
+
origin: null,
|
|
169
|
+
size: null,
|
|
170
|
+
date: null
|
|
171
|
+
},
|
|
172
|
+
estimatedPrintTime: null,
|
|
173
|
+
filament: null
|
|
174
|
+
},
|
|
175
|
+
progress: {
|
|
176
|
+
completion: null,
|
|
177
|
+
filepos: null,
|
|
178
|
+
printTime: null,
|
|
179
|
+
printTimeLeft: null
|
|
180
|
+
},
|
|
181
|
+
state: "Operational"
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
const elapsedSeconds = (Date.now() - printStartTime) / 1000;
|
|
185
|
+
const remainingSeconds = Math.max(0, PRINT_DURATION - elapsedSeconds);
|
|
186
|
+
let state = "Printing";
|
|
187
|
+
if (isFinished) state = "Operational";
|
|
188
|
+
else if (isPaused) state = "Paused";
|
|
189
|
+
return {
|
|
190
|
+
job: {
|
|
191
|
+
file: {
|
|
192
|
+
name: fileName,
|
|
193
|
+
origin: "local",
|
|
194
|
+
size: 1024000,
|
|
195
|
+
date: printStartTime / 1000
|
|
196
|
+
},
|
|
197
|
+
estimatedPrintTime: PRINT_DURATION,
|
|
198
|
+
filament: {
|
|
199
|
+
tool0: {
|
|
200
|
+
length: 1000,
|
|
201
|
+
volume: 2.4
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
progress: {
|
|
206
|
+
completion: isFinished ? 100 : printProgress,
|
|
207
|
+
filepos: Math.floor((isFinished ? 100 : printProgress) / 100 * 1024000),
|
|
208
|
+
printTime: isFinished ? PRINT_DURATION : Math.floor(elapsedSeconds),
|
|
209
|
+
printTimeLeft: isFinished ? 0 : Math.floor(remainingSeconds)
|
|
210
|
+
},
|
|
211
|
+
state
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
const port = process.argv[2] ? Number.parseInt(process.argv[2]) : 1234;
|
|
215
|
+
const uploadsDir = _nodepath.default.join(__dirname, "uploads", `server-${port.toString()}`);
|
|
63
216
|
const WS_MESSAGE_INTERVAL = 1000;
|
|
64
|
-
if (!
|
|
217
|
+
if (!_nodefs.default.existsSync(uploadsDir)) {
|
|
65
218
|
_nodeconsole.log(`[PORT ${port}] Creating uploads folder ${uploadsDir}`);
|
|
66
|
-
|
|
219
|
+
_nodefs.default.mkdirSync(uploadsDir, {
|
|
67
220
|
recursive: true
|
|
68
221
|
});
|
|
69
222
|
}
|
|
@@ -72,7 +225,7 @@ const upload = (0, _multer.default)({
|
|
|
72
225
|
dest: uploadsDir
|
|
73
226
|
});
|
|
74
227
|
const app = (0, _express.default)();
|
|
75
|
-
const server =
|
|
228
|
+
const server = _nodehttp.default.createServer(app);
|
|
76
229
|
const wss = new _ws.Server({
|
|
77
230
|
server
|
|
78
231
|
});
|
|
@@ -95,42 +248,42 @@ wss.on("connection", (ws)=>{
|
|
|
95
248
|
return;
|
|
96
249
|
}
|
|
97
250
|
const json = JSON.parse(msgString);
|
|
98
|
-
if (
|
|
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 {
|
|
251
|
+
if (authenticated) {
|
|
133
252
|
_nodeconsole.log(`[PORT ${port}] Received message from authenticated client`);
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
if (!json) {
|
|
256
|
+
_nodeconsole.log(`[PORT ${port}] Invalid message JSON format`);
|
|
257
|
+
ws.close();
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
try {
|
|
261
|
+
const parts = json.auth.split(":");
|
|
262
|
+
AuthSchema.parse({
|
|
263
|
+
command: "auth",
|
|
264
|
+
user: parts[0],
|
|
265
|
+
token: parts[1]
|
|
266
|
+
});
|
|
267
|
+
_nodeconsole.log(`[PORT ${port}] Authentication successful for admin`);
|
|
268
|
+
authenticated = true;
|
|
269
|
+
clients.set(clientId, {
|
|
270
|
+
ws,
|
|
271
|
+
authenticated
|
|
272
|
+
});
|
|
273
|
+
setTimeout(async ()=>{
|
|
274
|
+
try {
|
|
275
|
+
ws.send(JSON.stringify(getCurrentMessage()));
|
|
276
|
+
} catch (fileError) {
|
|
277
|
+
_nodeconsole.error(`[PORT ${port}] Error reading message file:`, fileError);
|
|
278
|
+
ws.send(JSON.stringify({
|
|
279
|
+
error: "Failed to read message content"
|
|
280
|
+
}));
|
|
281
|
+
}
|
|
282
|
+
}, 500);
|
|
283
|
+
messageInterval = setupMessageInterval(ws, clientId, WS_MESSAGE_INTERVAL);
|
|
284
|
+
} catch (validationError) {
|
|
285
|
+
_nodeconsole.log(`[PORT ${port}] Authentication failed: Invalid token format ${JSON.stringify(json)} ${validationError}`);
|
|
286
|
+
ws.close();
|
|
134
287
|
}
|
|
135
288
|
} catch (error) {
|
|
136
289
|
_nodeconsole.error(`[PORT ${port}] Error processing message:`, error);
|
|
@@ -157,7 +310,7 @@ wss.on("connection", (ws)=>{
|
|
|
157
310
|
const sendPeriodicMessage = ()=>{
|
|
158
311
|
try {
|
|
159
312
|
if (ws.readyState === ws.OPEN) {
|
|
160
|
-
ws.send(JSON.stringify(
|
|
313
|
+
ws.send(JSON.stringify(getCurrentMessage()));
|
|
161
314
|
_nodeconsole.log(`[PORT ${port}] Periodic message sent to client (ID: ${clientId})`);
|
|
162
315
|
messageInterval = setTimeout(sendPeriodicMessage, getRandomizedInterval(baseInterval));
|
|
163
316
|
} else {
|
|
@@ -197,7 +350,36 @@ app.get("/api/connection", async (req, res)=>{
|
|
|
197
350
|
});
|
|
198
351
|
app.get("/api/job", async (req, res)=>{
|
|
199
352
|
_nodeconsole.log(`[PORT ${port}] ${req.method.toUpperCase()} ${req.url} request`);
|
|
200
|
-
res.status(200).json(
|
|
353
|
+
res.status(200).json(getJobResponse());
|
|
354
|
+
});
|
|
355
|
+
app.post("/api/job", _express.default.json(), async (req, res)=>{
|
|
356
|
+
const { command, action } = req.body;
|
|
357
|
+
_nodeconsole.log(`[PORT ${port}] POST /api/job - command: ${command}, action: ${action}`);
|
|
358
|
+
if (command === "cancel") {
|
|
359
|
+
if (isPrinting) {
|
|
360
|
+
isPrinting = false;
|
|
361
|
+
isPaused = false;
|
|
362
|
+
printProgress = 0;
|
|
363
|
+
currentPrintFile = "";
|
|
364
|
+
_nodeconsole.log(`[PORT ${port}] Print cancelled`);
|
|
365
|
+
}
|
|
366
|
+
return res.status(204).send();
|
|
367
|
+
}
|
|
368
|
+
if (command === "pause") {
|
|
369
|
+
if (action === "pause" && isPrinting && !isPaused) {
|
|
370
|
+
isPaused = true;
|
|
371
|
+
_nodeconsole.log(`[PORT ${port}] Print paused at ${Math.round(printProgress)}%`);
|
|
372
|
+
} else if (action === "resume" && isPrinting && isPaused) {
|
|
373
|
+
isPaused = false;
|
|
374
|
+
const pausedProgress = printProgress;
|
|
375
|
+
printStartTime = Date.now() - pausedProgress / 100 * PRINT_DURATION * 1000;
|
|
376
|
+
_nodeconsole.log(`[PORT ${port}] Print resumed from ${Math.round(pausedProgress)}%`);
|
|
377
|
+
}
|
|
378
|
+
return res.status(204).send();
|
|
379
|
+
}
|
|
380
|
+
res.status(400).json({
|
|
381
|
+
error: "Unknown command"
|
|
382
|
+
});
|
|
201
383
|
});
|
|
202
384
|
app.get("/api/files/local", async (req, res)=>{
|
|
203
385
|
_nodeconsole.log(`[PORT ${port}] ${req.method.toUpperCase()} ${req.url} request`);
|
|
@@ -210,41 +392,67 @@ app.post("/api/login", async (req, res)=>{
|
|
|
210
392
|
session: "123123abc123123abc123123abc123ab"
|
|
211
393
|
});
|
|
212
394
|
});
|
|
395
|
+
app.post("/api/files/local/:path(*)", _express.default.json(), (req, res)=>{
|
|
396
|
+
const filePath = req.params.path;
|
|
397
|
+
const { command, print } = req.body;
|
|
398
|
+
_nodeconsole.log(`[PORT ${port}] POST /api/files/local/${filePath} - command: ${command}, print: ${print}`);
|
|
399
|
+
if (command === "select") {
|
|
400
|
+
if (!filePath.endsWith(".gcode") && !filePath.endsWith(".bgcode") && !filePath.endsWith(".3mf")) {
|
|
401
|
+
_nodeconsole.log(`[PORT ${port}] Rejected - invalid file extension: ${filePath}`);
|
|
402
|
+
return res.status(400).json({
|
|
403
|
+
error: "Invalid file extension. Only .gcode, .bgcode, and .3mf files are supported"
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
currentPrintFile = filePath;
|
|
407
|
+
_nodeconsole.log(`[PORT ${port}] File selected: ${filePath}`);
|
|
408
|
+
if (print === true) {
|
|
409
|
+
isPrinting = true;
|
|
410
|
+
isPaused = false;
|
|
411
|
+
printStartTime = Date.now();
|
|
412
|
+
printProgress = 0;
|
|
413
|
+
_nodeconsole.log(`[PORT ${port}] Starting print: ${filePath} (${PRINT_DURATION} second duration)`);
|
|
414
|
+
}
|
|
415
|
+
return res.status(204).send();
|
|
416
|
+
}
|
|
417
|
+
if (command === "move") {
|
|
418
|
+
_nodeconsole.log(`[PORT ${port}] Move command received for: ${filePath}`);
|
|
419
|
+
return res.status(204).send();
|
|
420
|
+
}
|
|
421
|
+
res.status(400).json({
|
|
422
|
+
error: "Unknown command"
|
|
423
|
+
});
|
|
424
|
+
});
|
|
213
425
|
app.post("/api/files/local", upload.single("file"), (req, res)=>{
|
|
214
|
-
const {
|
|
426
|
+
const { print } = req.body;
|
|
215
427
|
const file = req.file;
|
|
216
428
|
if (!file) {
|
|
217
429
|
return res.status(400).json({
|
|
218
430
|
error: "Missing file"
|
|
219
431
|
});
|
|
220
432
|
}
|
|
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
433
|
_nodeconsole.log(`[PORT ${port}] Received file:`, file.originalname);
|
|
243
434
|
_nodeconsole.log(`[PORT ${port}] File size:`, file.size);
|
|
244
435
|
_nodeconsole.log(`[PORT ${port}] MIME type:`, file.mimetype);
|
|
245
|
-
_nodeconsole.log(`[PORT ${port}]
|
|
436
|
+
_nodeconsole.log(`[PORT ${port}] print:`, print, `\n-----`);
|
|
437
|
+
if (print === "true") {
|
|
438
|
+
currentPrintFile = file.originalname;
|
|
439
|
+
isPrinting = true;
|
|
440
|
+
isPaused = false;
|
|
441
|
+
printStartTime = Date.now();
|
|
442
|
+
printProgress = 0;
|
|
443
|
+
_nodeconsole.log(`[PORT ${port}] Starting print: ${file.originalname} (${PRINT_DURATION} second duration)`);
|
|
444
|
+
}
|
|
246
445
|
res.json({
|
|
247
|
-
|
|
446
|
+
done: true,
|
|
447
|
+
files: {
|
|
448
|
+
local: {
|
|
449
|
+
name: file.originalname,
|
|
450
|
+
origin: "local",
|
|
451
|
+
refs: {
|
|
452
|
+
resource: `/api/files/local/${file.originalname}`
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
}
|
|
248
456
|
});
|
|
249
457
|
});
|
|
250
458
|
app.use((req, res)=>{
|
|
@@ -276,10 +484,10 @@ process.on("SIGTERM", ()=>{
|
|
|
276
484
|
function cleanupUploads() {
|
|
277
485
|
try {
|
|
278
486
|
_nodeconsole.log(`[PORT ${port}] Cleaning up uploads folder...`);
|
|
279
|
-
const files =
|
|
487
|
+
const files = _nodefs.default.readdirSync(uploadsDir);
|
|
280
488
|
for (const file of files){
|
|
281
|
-
const filePath =
|
|
282
|
-
|
|
489
|
+
const filePath = _nodepath.default.join(uploadsDir, file);
|
|
490
|
+
_nodefs.default.unlinkSync(filePath);
|
|
283
491
|
_nodeconsole.log(`[PORT ${port}] Deleted: ${filePath}`);
|
|
284
492
|
}
|
|
285
493
|
_nodeconsole.log(`[PORT ${port}] Uploads folder cleanup complete`);
|
|
@@ -1 +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":";;;;gEAAoB;+DACD;2DACJ;6DACE;oBACoC;6DACpC;qBACC;qEACO;6BAMlB;4BACwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE/B,MAAMA,OAAOC,QAAQC,IAAI,CAAC,EAAE,GAAGC,SAASF,QAAQC,IAAI,CAAC,EAAE,IAAI;AAC3D,MAAME,aAAaC,aAAI,CAACC,IAAI,CAACC,WAAW,WAAW,CAAC,OAAO,EAAEP,KAAKQ,QAAQ,IAAI;AAC9E,MAAMC,sBAAsB;AAE5B,IAAI,CAACC,WAAE,CAACC,UAAU,CAACP,aAAa;IAC9BQ,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,0BAA0B,EAAEI,YAAY;IAClEM,WAAE,CAACI,SAAS,CAACV,YAAY;QAAEW,WAAW;IAAK;AAC7C;AAGAC;AAEA,MAAMC,SAASC,IAAAA,eAAM,EAAC;IAAEC,MAAMf;AAAW;AAEzC,MAAMgB,MAAMC,IAAAA,gBAAO;AACnB,MAAMC,SAASC,aAAI,CAACC,YAAY,CAACJ;AAGjC,MAAMK,MAAM,IAAIC,UAAe,CAAC;IAAEJ;AAAO;AAGzC,MAAMK,UAAU,IAAIC;AAGpB,MAAMC,aAAaC,MAAC,CAACC,MAAM,CAAC;IAC1BC,SAASF,MAAC,CAACG,OAAO,CAAC;IACnBC,MAAMJ,MAAC,CAACG,OAAO,CAAC;IAChBE,OAAOL,MAAC,CAACM,MAAM,GAAGC,KAAK,CAAC;AAC1B;AAGAZ,IAAIa,EAAE,CAAC,cAAc,CAACC;IACpB,MAAMC,WAAWC,KAAKC,GAAG,GAAGlC,QAAQ;IACpCI,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,sCAAsC,CAAC;IACjE,IAAI2C,gBAAgB;IACpB,IAAIC,kBAAyC;IAE7CL,GAAGD,EAAE,CAAC,WAAW,OAAOO;QACtB,IAAI;YACF,MAAMC,YAAYD,QAAQrC,QAAQ;YAClC,IAAIsC,UAAUC,QAAQ,CAAC,aAAa;gBAClCnC,aAAQC,GAAG,CAAC,CAAC,0BAA0B,EAAEiC,WAAW;gBACpD;YACF;YAEA,MAAME,OAAOC,KAAKC,KAAK,CAACJ;YAGxB,IAAI,CAACH,eAAe;gBAClB,IAAI,CAACK,MAAM;oBACTpC,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,6BAA6B,CAAC;oBACxDuC,GAAGY,KAAK;oBACR;gBACF;gBAEA,IAAI;oBAEF,MAAMC,QAAQJ,KAAKK,IAAI,CAACC,KAAK,CAAC;oBAC9BzB,WAAWqB,KAAK,CAAC;wBACflB,SAAS;wBACTE,MAAMkB,KAAK,CAAC,EAAE;wBACdjB,OAAOiB,KAAK,CAAC,EAAE;oBACjB;oBAEAxC,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,qCAAqC,CAAC;oBAChE2C,gBAAgB;oBAGhBhB,QAAQ4B,GAAG,CAACf,UAAU;wBAAED;wBAAII;oBAAc;oBAG1Ca,WAAW;wBACT,IAAI;4BACFjB,GAAGkB,IAAI,CAACR,KAAKS,SAAS,CAACC,0BAAc;wBACvC,EAAE,OAAOC,WAAW;4BAClBhD,aAAQiD,KAAK,CAAC,CAAC,MAAM,EAAE7D,KAAK,6BAA6B,CAAC,EAAE4D;4BAC5DrB,GAAGkB,IAAI,CAACR,KAAKS,SAAS,CAAC;gCAAEG,OAAO;4BAAiC;wBACnE;oBACF,GAAG;oBAGHjB,kBAAkBkB,qBAAqBvB,IAAIC,UAAU/B;gBACvD,EAAE,OAAOsD,iBAAiB;oBACxBnD,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,8CAA8C,EAAEiD,KAAKS,SAAS,CAACV,MAAM,CAAC,EAAEe,iBAAiB;oBACnHxB,GAAGY,KAAK;gBACV;YACF,OAAO;gBAELvC,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,4CAA4C,CAAC;YACzE;QACF,EAAE,OAAO6D,OAAO;YACdjD,aAAQiD,KAAK,CAAC,CAAC,MAAM,EAAE7D,KAAK,2BAA2B,CAAC,EAAE6D;YAC1DtB,GAAGY,KAAK;QACV;IACF;IAEAZ,GAAGD,EAAE,CAAC,SAAS;QACb1B,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,8BAA8B,EAAEwC,UAAU;QAEpE,IAAII,iBAAiB;YACnBoB,cAAcpB;YACdA,kBAAkB;QACpB;QAEAjB,QAAQsC,MAAM,CAACzB;IACjB;IAGA,MAAMsB,uBAAuB,CAACvB,IAAeC,UAAkB0B;QAE7D,IAAItB,iBAAiB;YACnBoB,cAAcpB;YACdA,kBAAkB;QACpB;QAGA,MAAMuB,wBAAwB,CAACC;YAE7B,MAAMC,kBAAkB,OAAOC,KAAKC,MAAM,KAAK;YAC/C,OAAOD,KAAKE,KAAK,CAACJ,SAASC;QAC7B;QAGA,MAAMI,sBAAsB;YAC1B,IAAI;gBACF,IAAIlC,GAAGmC,UAAU,KAAKnC,GAAGoC,IAAI,EAAE;oBAC7BpC,GAAGkB,IAAI,CAACR,KAAKS,SAAS,CAACC,0BAAc;oBACrC/C,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,uCAAuC,EAAEwC,SAAS,CAAC,CAAC;oBAG9EI,kBAAkBY,WAAWiB,qBAAqBN,sBAAsBD;gBAC1E,OAAO;oBAELtD,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,4CAA4C,EAAEwC,SAAS,CAAC,CAAC;oBACnFI,kBAAkB;gBACpB;YACF,EAAE,OAAOiB,OAAO;gBACdjD,aAAQiD,KAAK,CAAC,CAAC,MAAM,EAAE7D,KAAK,iCAAiC,CAAC,EAAE6D;gBAEhEjB,kBAAkB;YACpB;QACF;QAGAA,kBAAkBY,WAAWiB,qBAAqBN,sBAAsBD;QACxE,OAAOtB;IACT;AACF;AAEAxB,IAAIwD,GAAG,CAAC,gBAAgB,OAAOC,KAAKC;IAClCA,IAAIrB,IAAI,CAAC;QACPnC,QAAQ;QACRyD,KAAK;QACLC,MAAM;IACR;AACF;AAEA5D,IAAIwD,GAAG,CAAC,oBAAoB,OAAOC,KAAKC;IACtCA,IAAIrB,IAAI,CAAC;QACPwB,MAAM;QACNC,aAAa,EAAE;QACfC,QAAQ,EAAE;IACZ;AACF;AAEA/D,IAAIwD,GAAG,CAAC,gBAAgB,OAAOC,KAAKC;IAClClE,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,EAAE,EAAE6E,IAAIO,MAAM,CAACC,WAAW,GAAG,CAAC,EAAER,IAAIS,GAAG,CAAC,QAAQ,CAAC;IAC3ER,IAAIS,MAAM,CAAC,KAAKvC,IAAI,CAACwC,0CAA6B;AACpD;AAEApE,IAAIwD,GAAG,CAAC,mBAAmB,OAAOC,KAAKC;IACrClE,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,EAAE,EAAE6E,IAAIO,MAAM,CAACC,WAAW,GAAG,CAAC,EAAER,IAAIS,GAAG,CAAC,QAAQ,CAAC;IAC3ER,IAAIS,MAAM,CAAC,KAAKvC,IAAI,CAACyC,sCAAyB;AAChD;AAEArE,IAAIwD,GAAG,CAAC,YAAY,OAAOC,KAAKC;IAC9BlE,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,EAAE,EAAE6E,IAAIO,MAAM,CAACC,WAAW,GAAG,CAAC,EAAER,IAAIS,GAAG,CAAC,QAAQ,CAAC;IAC3ER,IAAIS,MAAM,CAAC,KAAKvC,IAAI,CAAC0C,+BAAkB;AACzC;AAEAtE,IAAIwD,GAAG,CAAC,oBAAoB,OAAOC,KAAKC;IACtClE,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,EAAE,EAAE6E,IAAIO,MAAM,CAACC,WAAW,GAAG,CAAC,EAAER,IAAIS,GAAG,CAAC,QAAQ,CAAC;IAC3ER,IAAIS,MAAM,CAAC,KAAKvC,IAAI,CAAC2C,iCAAoB;AAC3C;AAEAvE,IAAIwE,IAAI,CAAC,cAAc,OAAOf,KAAKC;IACjCA,IAAIrB,IAAI,CAAC;QACPoC,qBAAqB;QACrBC,kBAAkB;QAClBC,SAAS;IACX;AACF;AAGA3E,IAAIwE,IAAI,CAAC,oBAAoB3E,OAAO+E,MAAM,CAAC,SAAS,CAACnB,KAAKC;IACxD,MAAM,EAAEmB,MAAM,EAAEC,KAAK,EAAE,GAAGrB,IAAIsB,IAAI;IAClC,MAAMC,OAAOvB,IAAIuB,IAAI;IAErB,IAAI,CAACA,MAAM;QACT,OAAOtB,IAAIS,MAAM,CAAC,KAAKvC,IAAI,CAAC;YAAEa,OAAO;QAAe;IACtD;IACA,IAAI,OAAOoC,WAAW,eAAe,OAAOC,UAAU,aAAa;QACjE,OAAOpB,IAAIS,MAAM,CAAC,KAAKvC,IAAI,CAAC;YAAEa,OAAO;QAAyC;IAChF;IACA,IAAIwC,OAAOC,IAAI,CAACzB,IAAIsB,IAAI,EAAEI,MAAM,KAAK,GAAG;QACtC,OAAOzB,IAAIS,MAAM,CAAC,KAAKvC,IAAI,CAAC;YAAEa,OAAO;QAA+C;IACtF;IACA,IAAI,CAAC;QAAC;QAAQ;KAAQ,CAACd,QAAQ,CAACkD,WAAW,CAAC;QAAC;QAAQ;KAAQ,CAAClD,QAAQ,CAACmD,QAAQ;QAC7E,OAAOpB,IAAIS,MAAM,CAAC,KAAKvC,IAAI,CAAC;YAAEa,OAAO;QAAkE;IACzG;IAEAjD,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,gBAAgB,CAAC,EAAEoG,KAAKI,YAAY;IAC9D5F,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,YAAY,CAAC,EAAEoG,KAAKK,IAAI;IAClD7F,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,YAAY,CAAC,EAAEoG,KAAKM,QAAQ;IACtD9F,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,SAAS,CAAC,EAAEiG,QAAQ,CAAC,QAAQ,EAAEjG,KAAK,QAAQ,CAAC,EAAEkG,OAAO,CAAC,OAAO,CAAC;IAEzFpB,IAAI9B,IAAI,CAAC;QAAEH,SAAS;IAA6B;AACnD;AAEAzB,IAAIuF,GAAG,CAAC,CAAC9B,KAAKC;IACZlE,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,EAAE,EAAE6E,IAAIO,MAAM,CAACC,WAAW,GAAG,CAAC,EAAER,IAAIS,GAAG,CAAC,UAAU,CAAC;IAC7ER,IAAIS,MAAM,CAAC,KAAKvC,IAAI,CAAC;QAAEa,OAAO;IAAY;AAC5C;AAEAvC,OAAOsF,MAAM,CAAC5G,MAAM;IAClBY,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,wCAAwC,EAAEA,MAAM;IAC1EY,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,kDAAkD,EAAEA,MAAM;AACtF;AAGAC,QAAQqC,EAAE,CAAC,UAAU;IACnB1B,aAAQC,GAAG,CAAC;IACZG;IACAM,OAAO6B,KAAK,CAAC;QACXvC,aAAQC,GAAG,CAAC;QACZZ,QAAQ4G,IAAI,CAAC;IACf;AACF;AAEA5G,QAAQqC,EAAE,CAAC,WAAW;IACpB1B,aAAQC,GAAG,CAAC;IACZG;IACAM,OAAO6B,KAAK,CAAC;QACXvC,aAAQC,GAAG,CAAC;QACZZ,QAAQ4G,IAAI,CAAC;IACf;AACF;AAEA,SAAS7F;IACP,IAAI;QACFJ,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,+BAA+B,CAAC;QAC1D,MAAM8G,QAAQpG,WAAE,CAACqG,WAAW,CAAC3G;QAE7B,KAAK,MAAMgG,QAAQU,MAAO;YACxB,MAAME,WAAW3G,aAAI,CAACC,IAAI,CAACF,YAAYgG;YACvC1F,WAAE,CAACuG,UAAU,CAACD;YACdpG,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,WAAW,EAAEgH,UAAU;QACnD;QAEApG,aAAQC,GAAG,CAAC,CAAC,MAAM,EAAEb,KAAK,iCAAiC,CAAC;IAC9D,EAAE,OAAO6D,OAAO;QACdjD,aAAQiD,KAAK,CAAC,CAAC,MAAM,EAAE7D,KAAK,mCAAmC,CAAC,EAAE6D;IACpE;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../src/consoles/mock-octoprint.server.ts"],"names":["isPrinting","isPaused","isFinished","currentPrintFile","printProgress","printStartTime","PRINT_DURATION","getCurrentMessage","updatePrintProgress","elapsedSeconds","Date","now","remainingSeconds","Math","max","stateText","fileName","finishedFileName","hasFile","current","state","text","flags","operational","printing","cancelling","pausing","resuming","finishing","closedOrError","error","paused","ready","sdReady","finished","job","file","name","path","display","origin","size","date","estimatedPrintTime","averagePrintTime","lastPrintTime","filament","tool0","length","volume","user","currentZ","floor","progress","completion","filepos","printTime","printTimeLeft","printTimeLeftOrigin","offsets","resends","count","transmitted","ratio","serverTime","temps","busyFiles","logs","messages","min","console","log","getJobResponse","hasJob","port","process","argv","Number","parseInt","uploadsDir","join","__dirname","toString","WS_MESSAGE_INTERVAL","fs","existsSync","mkdirSync","recursive","cleanupUploads","upload","multer","dest","app","express","server","http","createServer","wss","WebSocketServer","clients","Map","AuthSchema","z","object","command","literal","token","string","regex","on","ws","clientId","authenticated","messageInterval","message","msgString","includes","json","JSON","parse","close","parts","auth","split","set","setTimeout","send","stringify","fileError","setupMessageInterval","validationError","clearInterval","delete","baseInterval","getRandomizedInterval","baseMs","variationFactor","random","sendPeriodicMessage","readyState","OPEN","get","req","res","api","permissions","groups","method","toUpperCase","url","status","printerHistorySuccessResponse","connectionSuccessResponse","post","action","body","round","pausedProgress","filesSuccessResponse","_is_external_client","_login_mechanism","session","filePath","params","print","endsWith","single","originalname","mimetype","done","files","local","refs","resource","use","listen","exit","readdirSync","unlinkSync"],"mappings":"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"}
|