@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/services/orm/printer-tag.service.ts"],"names":["PrinterTagService","BaseService","PrinterTag","PrinterTagDto","tagRepository","typeormService","getDataSource","getRepository","Tag","listTags","tags","find","tagRecords","tag","id","name","color","printers","repository","findBy","tagId","Object","values","getTag","findOneBy","NotFoundException","getPrintersByTag","printerTags","createTag","dto","validate","entity","create","save","updateTagName","updateDto","assign","update","updateTagColor","deleteTag","delete","addPrinterToTag","printerId","alreadyExisting","removePrinterFromTag","toDto"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/orm/printer.service.ts"],"names":["PrinterService","BaseService","Printer","PrinterDto","CreatePrinterDto","logger","loggerFactory","typeormService","eventEmitter2","name","toDto","entity","id","enabled","disabledReason","dateAdded","apiKey","username","password","printerURL","printerType","list","repository","find","order","create","newPrinter","emitEvent","mergedPrinter","validateAndDefault","Date","now","printer","emit","printerEvents","printerCreated","update","printerId","partial","get","normalizeUrl","defaultProtocol","defaultHttpProtocol","Object","assign","validateInput","createPrinterSchema","updatedPrinter","printerUpdated","batchImport","printers","length","log","newPrinters","createdPrinter","push","batchPrinterCreated","delete","printersDeleted","printerIds","deleteMany","updateDisabledReason","updateEnabled","updateFeedRate","feedRate","updateFlowRate","flowRate"],"mappings":";;;;+
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orm/printer.service.ts"],"names":["PrinterService","BaseService","Printer","PrinterDto","CreatePrinterDto","logger","loggerFactory","typeormService","eventEmitter2","name","toDto","entity","id","enabled","disabledReason","dateAdded","apiKey","username","password","printerURL","printerType","list","repository","find","order","create","newPrinter","emitEvent","mergedPrinter","validateAndDefault","Date","now","printer","emit","printerEvents","printerCreated","update","printerId","partial","get","normalizeUrl","defaultProtocol","defaultHttpProtocol","Object","assign","validateInput","createPrinterSchema","updatedPrinter","printerUpdated","batchImport","printers","length","log","newPrinters","createdPrinter","push","batchPrinterCreated","delete","printersDeleted","printerIds","deleteMany","updateDisabledReason","updateEnabled","updateFeedRate","feedRate","updateFlowRate","flowRate"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/orm/refresh-token.service.ts"],"names":["RefreshTokenService","BaseService","RefreshToken","RefreshTokenDto","logger","settingsStore","loggerFactory","typeormService","name","toDto","entity","id","userId","expiresAt","refreshAttemptsUsed","getRefreshToken","refreshToken","repository","findOneBy","AuthenticationError","AUTH_ERROR_REASON","InvalidOrExpiredRefreshToken","createRefreshTokenForUserId","refreshTokenExpiry","getCredentialSettings","uuidv4","timespan","AppConstants","DEFAULT_REFRESH_TOKEN_EXPIRY","warn","create","Date","now","updateRefreshTokenAttempts","update","purgeAllOutdatedRefreshTokens","result","delete","LessThan","affected","debug","deleteRefreshTokenByUserId","deleteRefreshToken","purgeOutdatedRefreshTokensByUserId"],"mappings":";;;;+
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orm/refresh-token.service.ts"],"names":["RefreshTokenService","BaseService","RefreshToken","RefreshTokenDto","logger","settingsStore","loggerFactory","typeormService","name","toDto","entity","id","userId","expiresAt","refreshAttemptsUsed","getRefreshToken","refreshToken","repository","findOneBy","AuthenticationError","AUTH_ERROR_REASON","InvalidOrExpiredRefreshToken","createRefreshTokenForUserId","refreshTokenExpiry","getCredentialSettings","uuidv4","timespan","AppConstants","DEFAULT_REFRESH_TOKEN_EXPIRY","warn","create","Date","now","updateRefreshTokenAttempts","update","purgeAllOutdatedRefreshTokens","result","delete","LessThan","affected","debug","deleteRefreshTokenByUserId","deleteRefreshToken","purgeOutdatedRefreshTokensByUserId"],"mappings":"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"}
|
|
@@ -18,10 +18,8 @@ class RoleService extends (0, _baseservice.BaseService)(_entities.Role, _roledto
|
|
|
18
18
|
appDefaultRole;
|
|
19
19
|
appDefaultRoleNoLogin;
|
|
20
20
|
settingsStore;
|
|
21
|
-
|
|
22
|
-
constructor(typeormService, loggerFactory, appDefaultRole, appDefaultRoleNoLogin, settingsStore){
|
|
21
|
+
constructor(typeormService, appDefaultRole, appDefaultRoleNoLogin, settingsStore){
|
|
23
22
|
super(typeormService), this.appDefaultRole = appDefaultRole, this.appDefaultRoleNoLogin = appDefaultRoleNoLogin, this.settingsStore = settingsStore;
|
|
24
|
-
this.logger = loggerFactory(RoleService.name);
|
|
25
23
|
}
|
|
26
24
|
_roles = [];
|
|
27
25
|
get roles() {
|
|
@@ -33,13 +31,12 @@ class RoleService extends (0, _baseservice.BaseService)(_entities.Role, _roledto
|
|
|
33
31
|
}
|
|
34
32
|
return this.appDefaultRoleNoLogin;
|
|
35
33
|
}
|
|
36
|
-
async
|
|
34
|
+
async getAppDefaultRoleNames() {
|
|
37
35
|
if (!this._roles?.length) {
|
|
38
36
|
await this.syncRoles();
|
|
39
37
|
}
|
|
40
|
-
const guestRole = this.getRoleByName(await this.getAppDefaultRole());
|
|
41
38
|
return [
|
|
42
|
-
|
|
39
|
+
await this.getAppDefaultRole()
|
|
43
40
|
];
|
|
44
41
|
}
|
|
45
42
|
toDto(role) {
|
|
@@ -48,31 +45,26 @@ class RoleService extends (0, _baseservice.BaseService)(_entities.Role, _roledto
|
|
|
48
45
|
name: role.name
|
|
49
46
|
};
|
|
50
47
|
}
|
|
51
|
-
getRolesPermissions(
|
|
48
|
+
getRolesPermissions(roleNames) {
|
|
52
49
|
let permissions = [];
|
|
53
|
-
if (!
|
|
54
|
-
for (
|
|
55
|
-
const
|
|
56
|
-
const rolePermissions = this.getRolePermissions(normalizedRole);
|
|
50
|
+
if (!roleNames?.length) return [];
|
|
51
|
+
for (const roleName of roleNames){
|
|
52
|
+
const rolePermissions = this.getRolePermissions(roleName);
|
|
57
53
|
permissions = (0, _lodash.union)(permissions, rolePermissions);
|
|
58
54
|
}
|
|
59
55
|
return permissions;
|
|
60
56
|
}
|
|
61
57
|
authorizeRoles(requiredRoles, assignedRoles, subset) {
|
|
62
|
-
let isAuthorized = false;
|
|
63
58
|
if (!requiredRoles?.length) return true;
|
|
64
|
-
|
|
65
|
-
|
|
59
|
+
let isAuthorized = !subset;
|
|
60
|
+
for (const requiredRole of requiredRoles){
|
|
61
|
+
const result = this.authorizeRole(requiredRole, assignedRoles);
|
|
66
62
|
isAuthorized = subset ? isAuthorized || result : isAuthorized && result;
|
|
67
|
-
}
|
|
63
|
+
}
|
|
68
64
|
return isAuthorized;
|
|
69
65
|
}
|
|
70
66
|
authorizeRole(requiredRole, assignedRoles) {
|
|
71
|
-
return
|
|
72
|
-
const normalizedRole = this.normalizeRoleIdOrName(ar);
|
|
73
|
-
if (!normalizedRole) return false;
|
|
74
|
-
return normalizedRole === requiredRole;
|
|
75
|
-
});
|
|
67
|
+
return assignedRoles.includes(requiredRole);
|
|
76
68
|
}
|
|
77
69
|
getManyRoles(roleIds) {
|
|
78
70
|
return roleIds.map((roleId)=>this.getRole(roleId));
|
|
@@ -87,15 +79,17 @@ class RoleService extends (0, _baseservice.BaseService)(_entities.Role, _roledto
|
|
|
87
79
|
if (!role) throw new _runtimeexceptions.NotFoundException(`Role by provided name was not found`);
|
|
88
80
|
return role;
|
|
89
81
|
}
|
|
90
|
-
getRolePermissions(
|
|
91
|
-
if (!
|
|
92
|
-
return [];
|
|
93
|
-
}
|
|
94
|
-
const normalizedRole = this.normalizeRoleIdOrName(role);
|
|
95
|
-
if (!normalizedRole?.length) {
|
|
82
|
+
getRolePermissions(roleName) {
|
|
83
|
+
if (!roleName) {
|
|
96
84
|
return [];
|
|
97
85
|
}
|
|
98
|
-
return _authorizationconstants.ROLE_PERMS[
|
|
86
|
+
return _authorizationconstants.ROLE_PERMS[roleName] ?? [];
|
|
87
|
+
}
|
|
88
|
+
roleIdsToRoleNames(roleIds) {
|
|
89
|
+
return roleIds.map((roleId)=>{
|
|
90
|
+
const role = this._roles.find((r)=>r.id === roleId);
|
|
91
|
+
return role?.name;
|
|
92
|
+
}).filter((name)=>name !== undefined);
|
|
99
93
|
}
|
|
100
94
|
async getSynchronizedRoleByName(roleName) {
|
|
101
95
|
if (!this._roles?.length) {
|
|
@@ -105,28 +99,20 @@ class RoleService extends (0, _baseservice.BaseService)(_entities.Role, _roledto
|
|
|
105
99
|
}
|
|
106
100
|
async syncRoles() {
|
|
107
101
|
this._roles = [];
|
|
108
|
-
for (
|
|
102
|
+
for (const roleName of Object.values(_authorizationconstants.ROLES)){
|
|
109
103
|
const storedRole = await this.repository.findOneBy({
|
|
110
104
|
name: roleName
|
|
111
105
|
});
|
|
112
|
-
if (
|
|
106
|
+
if (storedRole) {
|
|
107
|
+
this._roles.push(storedRole);
|
|
108
|
+
} else {
|
|
113
109
|
const newRole = await this.create({
|
|
114
110
|
name: roleName
|
|
115
111
|
});
|
|
116
112
|
this._roles.push(newRole);
|
|
117
|
-
} else {
|
|
118
|
-
this._roles.push(storedRole);
|
|
119
113
|
}
|
|
120
114
|
}
|
|
121
115
|
}
|
|
122
|
-
normalizeRoleIdOrName(assignedRole) {
|
|
123
|
-
const roleInstance = this.roles.find((r)=>r.id === assignedRole || r.name === assignedRole);
|
|
124
|
-
if (!roleInstance) {
|
|
125
|
-
this.logger.warn(`The role by provided id was not found. Skipping.`);
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
return roleInstance.name;
|
|
129
|
-
}
|
|
130
116
|
}
|
|
131
117
|
|
|
132
118
|
//# sourceMappingURL=role.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/orm/role.service.ts"],"names":["RoleService","BaseService","Role","RoleDto","
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orm/role.service.ts"],"names":["RoleService","BaseService","Role","RoleDto","typeormService","appDefaultRole","appDefaultRoleNoLogin","settingsStore","_roles","roles","getAppDefaultRole","getLoginRequired","getAppDefaultRoleNames","length","syncRoles","toDto","role","id","name","getRolesPermissions","roleNames","permissions","roleName","rolePermissions","getRolePermissions","union","authorizeRoles","requiredRoles","assignedRoles","subset","isAuthorized","requiredRole","result","authorizeRole","includes","getManyRoles","roleIds","map","roleId","getRole","find","r","NotFoundException","getRoleByName","ROLE_PERMS","roleIdsToRoleNames","filter","undefined","getSynchronizedRoleByName","Object","values","ROLES","storedRole","repository","findOneBy","push","newRole","create"],"mappings":"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"}
|
|
@@ -18,24 +18,20 @@ const _validators = require("../../handlers/validators");
|
|
|
18
18
|
class SettingsService extends (0, _baseservice.BaseService)(_entities.Settings, _settingsdto.SettingsDto) {
|
|
19
19
|
toDto(entity) {
|
|
20
20
|
return {
|
|
21
|
-
[_serversettingsconstants.serverSettingsKey]:
|
|
22
|
-
...entity[_serversettingsconstants.serverSettingsKey],
|
|
23
|
-
experimentalTypeormSupport: true
|
|
24
|
-
},
|
|
21
|
+
[_serversettingsconstants.serverSettingsKey]: entity[_serversettingsconstants.serverSettingsKey],
|
|
25
22
|
[_serversettingsconstants.frontendSettingKey]: entity[_serversettingsconstants.frontendSettingKey],
|
|
26
|
-
[_serversettingsconstants.printerFileCleanSettingKey]: entity[_serversettingsconstants.printerFileCleanSettingKey],
|
|
27
23
|
[_serversettingsconstants.wizardSettingKey]: entity[_serversettingsconstants.wizardSettingKey],
|
|
28
24
|
[_serversettingsconstants.timeoutSettingKey]: entity[_serversettingsconstants.timeoutSettingKey]
|
|
29
25
|
};
|
|
30
26
|
}
|
|
31
27
|
async getOrCreate() {
|
|
32
28
|
let settings = await this.getOptional();
|
|
33
|
-
if (
|
|
34
|
-
return await this.create((0, _serversettingsconstants.getDefaultSettings)());
|
|
35
|
-
} else {
|
|
29
|
+
if (settings) {
|
|
36
30
|
settings = (0, _runtimesettingsmigration.migrateSettingsRuntime)(settings);
|
|
37
31
|
const settingsId = settings.id;
|
|
38
32
|
return await this.update(settingsId, settings);
|
|
33
|
+
} else {
|
|
34
|
+
return await this.create((0, _serversettingsconstants.getDefaultSettings)());
|
|
39
35
|
}
|
|
40
36
|
}
|
|
41
37
|
async updateServerSettings(update) {
|
|
@@ -61,13 +57,6 @@ class SettingsService extends (0, _baseservice.BaseService)(_entities.Settings,
|
|
|
61
57
|
await this.update(entity.id, entity);
|
|
62
58
|
return entity;
|
|
63
59
|
}
|
|
64
|
-
async updateFileCleanSettings(update) {
|
|
65
|
-
const validatedInput = await (0, _validators.validateInput)(update, _settingsservicevalidation.fileCleanSettingsUpdateSchema);
|
|
66
|
-
const entity = await this.getOrCreate();
|
|
67
|
-
entity[_serversettingsconstants.printerFileCleanSettingKey] = validatedInput;
|
|
68
|
-
await this.update(entity.id, entity);
|
|
69
|
-
return entity;
|
|
70
|
-
}
|
|
71
60
|
async updateFrontendSettings(update) {
|
|
72
61
|
const validatedInput = await (0, _validators.validateInput)(update, _settingsservicevalidation.frontendSettingsUpdateSchema);
|
|
73
62
|
const entity = await this.getOrCreate();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/orm/settings.service.ts"],"names":["SettingsService","BaseService","Settings","SettingsDto","toDto","entity","serverSettingsKey","
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orm/settings.service.ts"],"names":["SettingsService","BaseService","Settings","SettingsDto","toDto","entity","serverSettingsKey","frontendSettingKey","wizardSettingKey","timeoutSettingKey","getOrCreate","settings","getOptional","migrateSettingsRuntime","settingsId","id","update","create","getDefaultSettings","updateServerSettings","validatedInput","validateInput","serverSettingsUpdateSchema","updateJwtSecretCredentialSetting","jwtSecretCredentialSettingUpdateSchema","credentialSettingsKey","jwtSecret","updateCredentialSettings","credentialSettingUpdateSchema","refreshTokenExpiry","refreshTokenAttempts","jwtExpiresIn","updateFrontendSettings","frontendSettingsUpdateSchema","updateTimeoutSettings","timeoutSettingsUpdateSchema","updateWizardSettings","wizardUpdateSchema","settingsList","repository","find","take","length"],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@ class UserService extends (0, _baseservice.BaseService)(_entities.User, _userdto
|
|
|
24
24
|
super(typeormService), this.userRoleService = userRoleService, this.roleService = roleService;
|
|
25
25
|
}
|
|
26
26
|
toDto(user) {
|
|
27
|
+
const roleIds = (user.roles ?? []).map((r)=>r.roleId);
|
|
27
28
|
return {
|
|
28
29
|
id: user.id,
|
|
29
30
|
createdAt: user.createdAt,
|
|
@@ -32,7 +33,7 @@ class UserService extends (0, _baseservice.BaseService)(_entities.User, _userdto
|
|
|
32
33
|
isRootUser: user.isRootUser,
|
|
33
34
|
username: user.username,
|
|
34
35
|
needsPasswordChange: user.needsPasswordChange,
|
|
35
|
-
roles:
|
|
36
|
+
roles: this.roleService.roleIdsToRoleNames(roleIds)
|
|
36
37
|
};
|
|
37
38
|
}
|
|
38
39
|
listUsers(limit) {
|
|
@@ -43,22 +44,16 @@ class UserService extends (0, _baseservice.BaseService)(_entities.User, _userdto
|
|
|
43
44
|
async getUser(userId) {
|
|
44
45
|
return this.get(userId);
|
|
45
46
|
}
|
|
46
|
-
async
|
|
47
|
+
async getUserRoles(userId) {
|
|
47
48
|
const userRoles = await this.userRoleService.listUserRoles(userId);
|
|
48
|
-
|
|
49
|
+
const roleIds = userRoles.map((ur)=>ur.roleId);
|
|
50
|
+
return this.roleService.roleIdsToRoleNames(roleIds);
|
|
49
51
|
}
|
|
50
52
|
findRootUsers() {
|
|
51
53
|
return this.repository.findBy({
|
|
52
54
|
isRootUser: true
|
|
53
55
|
});
|
|
54
56
|
}
|
|
55
|
-
async findUsersByRoleId(roleId) {
|
|
56
|
-
const userRoles = await this.userRoleService.listByRoleId(roleId);
|
|
57
|
-
const ids = userRoles.map((u)=>u.id);
|
|
58
|
-
return this.repository.findBy({
|
|
59
|
-
id: (0, _typeorm.In)(ids)
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
57
|
findVerifiedUsers() {
|
|
63
58
|
return this.repository.findBy({
|
|
64
59
|
isVerified: true
|
|
@@ -108,7 +103,8 @@ class UserService extends (0, _baseservice.BaseService)(_entities.User, _userdto
|
|
|
108
103
|
isRootUser
|
|
109
104
|
});
|
|
110
105
|
}
|
|
111
|
-
async
|
|
106
|
+
async setUserRoles(userId, roles) {
|
|
107
|
+
const roleIds = roles.map((roleName)=>this.roleService.getRoleByName(roleName).id);
|
|
112
108
|
await this.userRoleService.setUserRoles(userId, roleIds);
|
|
113
109
|
return await this.get(userId);
|
|
114
110
|
}
|
|
@@ -169,7 +165,7 @@ class UserService extends (0, _baseservice.BaseService)(_entities.User, _userdto
|
|
|
169
165
|
});
|
|
170
166
|
}
|
|
171
167
|
async register(input) {
|
|
172
|
-
const { username, password, roles, isDemoUser, isRootUser, needsPasswordChange, isVerified } = await (0, _validators.validateInput)(input,
|
|
168
|
+
const { username, password, roles, isDemoUser, isRootUser, needsPasswordChange, isVerified } = await (0, _validators.validateInput)(input, _userservicevalidation.registerUserSchema);
|
|
173
169
|
const passwordHash = (0, _cryptoutils.hashPassword)(password);
|
|
174
170
|
const result = await this.create({
|
|
175
171
|
username,
|
|
@@ -179,9 +175,17 @@ class UserService extends (0, _baseservice.BaseService)(_entities.User, _userdto
|
|
|
179
175
|
isRootUser: isRootUser ?? false,
|
|
180
176
|
needsPasswordChange: needsPasswordChange ?? true
|
|
181
177
|
});
|
|
182
|
-
|
|
178
|
+
const roleIds = roles.map((roleName)=>this.roleService.getRoleByName(roleName).id);
|
|
179
|
+
await this.userRoleService.setUserRoles(result.id, roleIds);
|
|
183
180
|
return this.get(result.id);
|
|
184
181
|
}
|
|
182
|
+
async findUsersByRoleId(roleId) {
|
|
183
|
+
const userRoles = await this.userRoleService.listByRoleId(roleId);
|
|
184
|
+
const ids = userRoles.map((u)=>u.id);
|
|
185
|
+
return this.repository.findBy({
|
|
186
|
+
id: (0, _typeorm.In)(ids)
|
|
187
|
+
});
|
|
188
|
+
}
|
|
185
189
|
}
|
|
186
190
|
|
|
187
191
|
//# sourceMappingURL=user.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/orm/user.service.ts"],"names":["UserService","BaseService","User","UserDto","typeormService","userRoleService","roleService","toDto","user","
|
|
1
|
+
{"version":3,"sources":["../../../src/services/orm/user.service.ts"],"names":["UserService","BaseService","User","UserDto","typeormService","userRoleService","roleService","toDto","user","roleIds","roles","map","r","roleId","id","createdAt","isVerified","isDemoUser","isRootUser","username","needsPasswordChange","roleIdsToRoleNames","listUsers","limit","list","take","getUser","userId","get","getUserRoles","userRoles","listUserRoles","ur","findRootUsers","repository","findBy","findVerifiedUsers","isUserRootUser","entity","deleteUser","InternalServerException","length","role","getRoleByName","ROLES","ADMIN","find","administrators","findUsersByRoleId","delete","findRawByUsername","findOneBy","getDemoUserId","setIsRootUserById","NotFoundException","rootUsers","update","setUserRoles","roleName","setVerifiedById","verifiedUsers","updatePasswordById","oldPassword","newPassword","comparePasswordHash","passwordHash","password","validateInput","newPasswordSchema","hashPassword","updatePasswordUnsafeByUsername","updatePasswordHashUnsafeByUsername","updateUsernameById","newUsername","register","input","registerUserSchema","result","create","listByRoleId","ids","u","In"],"mappings":"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"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "PrintFileDownloaderService", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return PrintFileDownloaderService;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _node = require("@sentry/node");
|
|
12
|
+
const _nodefs = require("node:fs");
|
|
13
|
+
const _nodepath = require("node:path");
|
|
14
|
+
const _nodeos = require("node:os");
|
|
15
|
+
class PrintFileDownloaderService {
|
|
16
|
+
eventEmitter2;
|
|
17
|
+
printJobService;
|
|
18
|
+
fileStorageService;
|
|
19
|
+
fileAnalysisService;
|
|
20
|
+
printerApiFactory;
|
|
21
|
+
printerCache;
|
|
22
|
+
logger;
|
|
23
|
+
constructor(loggerFactory, eventEmitter2, printJobService, fileStorageService, fileAnalysisService, printerApiFactory, printerCache){
|
|
24
|
+
this.eventEmitter2 = eventEmitter2;
|
|
25
|
+
this.printJobService = printJobService;
|
|
26
|
+
this.fileStorageService = fileStorageService;
|
|
27
|
+
this.fileAnalysisService = fileAnalysisService;
|
|
28
|
+
this.printerApiFactory = printerApiFactory;
|
|
29
|
+
this.printerCache = printerCache;
|
|
30
|
+
this.logger = loggerFactory(PrintFileDownloaderService.name);
|
|
31
|
+
this.eventEmitter2.on("printJob.needsFileDownload", (event)=>{
|
|
32
|
+
this.handleFileDownloadRequest(event.jobId).catch((error)=>{
|
|
33
|
+
this.logger.error(`Failed to handle file download for job ${event.jobId}`, error);
|
|
34
|
+
(0, _node.captureException)(error);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
this.logger.log("Print file downloader service initialized");
|
|
38
|
+
}
|
|
39
|
+
async handleFileDownloadRequest(jobId) {
|
|
40
|
+
this.logger.log(`Handling file download request for job ${jobId}`);
|
|
41
|
+
try {
|
|
42
|
+
const job = await this.printJobService.getJobByIdOrFail(jobId);
|
|
43
|
+
if (job.fileStorageId) {
|
|
44
|
+
this.logger.log(`Job ${jobId} already has fileStorageId ${job.fileStorageId} - skipping download`);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (!job.printerId) {
|
|
48
|
+
this.logger.error(`Job ${jobId} has no printerId - cannot download file`);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const printer = await this.printerCache.getValue(job.printerId);
|
|
52
|
+
if (!printer) {
|
|
53
|
+
this.logger.error(`Printer ${job.printerId} not found for job ${jobId}`);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const printerApi = this.printerApiFactory.getById(job.printerId);
|
|
57
|
+
this.logger.log(`Downloading file ${job.fileName} from printer ${printer.name} (${printer.printerType})`);
|
|
58
|
+
let fileBuffer;
|
|
59
|
+
try {
|
|
60
|
+
const response = await printerApi.downloadFile(job.fileName);
|
|
61
|
+
const chunks = [];
|
|
62
|
+
const stream = response.data;
|
|
63
|
+
await new Promise((resolve, reject)=>{
|
|
64
|
+
stream.on('data', (chunk)=>chunks.push(chunk));
|
|
65
|
+
stream.on('end', ()=>resolve());
|
|
66
|
+
stream.on('error', (err)=>reject(err));
|
|
67
|
+
});
|
|
68
|
+
fileBuffer = Buffer.concat(chunks);
|
|
69
|
+
} catch (downloadError) {
|
|
70
|
+
this.logger.error(`Failed to download file from printer: ${downloadError}`);
|
|
71
|
+
job.analysisState = "FAILED";
|
|
72
|
+
job.statusReason = `File download failed: ${downloadError instanceof Error ? downloadError.message : "Unknown error"}`;
|
|
73
|
+
await this.printJobService.printJobRepository.save(job);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
this.logger.log(`Downloaded ${fileBuffer.length} bytes for job ${jobId}`);
|
|
77
|
+
const tempPath = (0, _nodepath.join)((0, _nodeos.tmpdir)(), `fdm-monster-download-${jobId}-${Date.now()}-${job.fileName}`);
|
|
78
|
+
(0, _nodefs.writeFileSync)(tempPath, fileBuffer);
|
|
79
|
+
try {
|
|
80
|
+
const fileHash = await this.fileStorageService.calculateFileHash(tempPath);
|
|
81
|
+
this.logger.log(`File hash for job ${jobId}: ${fileHash.substring(0, 12)}...`);
|
|
82
|
+
const existingJob = await this.fileStorageService.findDuplicateByHash(fileHash);
|
|
83
|
+
let metadata;
|
|
84
|
+
let fileStorageId;
|
|
85
|
+
if (existingJob?.fileStorageId) {
|
|
86
|
+
const cachedMetadata = await this.fileStorageService.loadMetadata(existingJob.fileStorageId);
|
|
87
|
+
if (cachedMetadata) {
|
|
88
|
+
this.logger.log(`Duplicate file detected (job ${existingJob.id}, hash match) - reusing storage ${existingJob.fileStorageId}`);
|
|
89
|
+
metadata = {
|
|
90
|
+
...cachedMetadata,
|
|
91
|
+
fileName: job.fileName
|
|
92
|
+
};
|
|
93
|
+
fileStorageId = existingJob.fileStorageId;
|
|
94
|
+
} else if (existingJob.analysisState === "ANALYZED" && existingJob.metadata) {
|
|
95
|
+
this.logger.log(`Duplicate file with DB metadata (job ${existingJob.id}) - reusing storage ${existingJob.fileStorageId}`);
|
|
96
|
+
metadata = {
|
|
97
|
+
...existingJob.metadata,
|
|
98
|
+
fileName: job.fileName
|
|
99
|
+
};
|
|
100
|
+
fileStorageId = existingJob.fileStorageId;
|
|
101
|
+
await this.fileStorageService.saveMetadata(fileStorageId, metadata, fileHash, job.fileName);
|
|
102
|
+
} else {
|
|
103
|
+
this.logger.log(`Duplicate file not analyzed - reusing storage ${existingJob.fileStorageId}, analyzing now`);
|
|
104
|
+
const existingFilePath = this.fileStorageService.getFilePath(existingJob.fileStorageId);
|
|
105
|
+
const analysisResult = await this.fileAnalysisService.analyzeFile(existingFilePath);
|
|
106
|
+
metadata = analysisResult.metadata;
|
|
107
|
+
fileStorageId = existingJob.fileStorageId;
|
|
108
|
+
await this.fileStorageService.saveMetadata(fileStorageId, metadata, fileHash, job.fileName);
|
|
109
|
+
}
|
|
110
|
+
} else {
|
|
111
|
+
this.logger.log(`Analyzing downloaded file: ${job.fileName}`);
|
|
112
|
+
const analysisResult = await this.fileAnalysisService.analyzeFile(tempPath);
|
|
113
|
+
metadata = analysisResult.metadata;
|
|
114
|
+
const thumbnails = analysisResult.thumbnails;
|
|
115
|
+
this.logger.log(`Analysis complete: format=${metadata.fileFormat}, layers=${metadata.totalLayers}, time=${metadata.gcodePrintTimeSeconds}s, filament=${metadata.filamentUsedGrams}g`);
|
|
116
|
+
const fileObject = {
|
|
117
|
+
path: tempPath,
|
|
118
|
+
originalname: job.fileName,
|
|
119
|
+
mimetype: "application/octet-stream",
|
|
120
|
+
size: fileBuffer.length
|
|
121
|
+
};
|
|
122
|
+
fileStorageId = await this.fileStorageService.saveFile(fileObject, fileHash);
|
|
123
|
+
this.logger.log(`Saved file to storage: ${fileStorageId}`);
|
|
124
|
+
let thumbnailMetadata = [];
|
|
125
|
+
if (thumbnails.length > 0) {
|
|
126
|
+
thumbnailMetadata = await this.fileStorageService.saveThumbnails(fileStorageId, thumbnails);
|
|
127
|
+
this.logger.log(`Saved ${thumbnailMetadata.length} thumbnail(s) for ${fileStorageId}`);
|
|
128
|
+
}
|
|
129
|
+
await this.fileStorageService.saveMetadata(fileStorageId, metadata, fileHash, job.fileName, thumbnailMetadata);
|
|
130
|
+
this.logger.log(`Saved metadata JSON for ${fileStorageId}`);
|
|
131
|
+
}
|
|
132
|
+
job.fileStorageId = fileStorageId;
|
|
133
|
+
job.fileHash = fileHash;
|
|
134
|
+
job.fileSize = fileBuffer.length;
|
|
135
|
+
job.fileFormat = metadata.fileFormat;
|
|
136
|
+
job.metadata = metadata;
|
|
137
|
+
job.analysisState = "ANALYZED";
|
|
138
|
+
job.analyzedAt = new Date();
|
|
139
|
+
await this.printJobService.printJobRepository.save(job);
|
|
140
|
+
this.logger.log(`Successfully processed downloaded file for job ${jobId}: storageId=${fileStorageId}, analysisState=${job.analysisState}`);
|
|
141
|
+
} finally{
|
|
142
|
+
try {
|
|
143
|
+
(0, _nodefs.unlinkSync)(tempPath);
|
|
144
|
+
} catch (cleanupError) {
|
|
145
|
+
this.logger.warn(`Failed to clean up temp file ${tempPath}: ${cleanupError}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
} catch (error) {
|
|
149
|
+
this.logger.error(`Failed to download and analyze file for job ${jobId}`, error);
|
|
150
|
+
(0, _node.captureException)(error);
|
|
151
|
+
try {
|
|
152
|
+
const job = await this.printJobService.printJobRepository.findOne({
|
|
153
|
+
where: {
|
|
154
|
+
id: jobId
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
if (job) {
|
|
158
|
+
job.analysisState = "FAILED";
|
|
159
|
+
job.statusReason = `File download/analysis failed: ${error instanceof Error ? error.message : "Unknown error"}`;
|
|
160
|
+
await this.printJobService.printJobRepository.save(job);
|
|
161
|
+
}
|
|
162
|
+
} catch (updateError) {
|
|
163
|
+
this.logger.error(`Failed to mark job ${jobId} as failed`, updateError);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
//# sourceMappingURL=print-file-downloader.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/services/print-file-downloader.service.ts"],"names":["PrintFileDownloaderService","logger","loggerFactory","eventEmitter2","printJobService","fileStorageService","fileAnalysisService","printerApiFactory","printerCache","name","on","event","handleFileDownloadRequest","jobId","catch","error","captureException","log","job","getJobByIdOrFail","fileStorageId","printerId","printer","getValue","printerApi","getById","fileName","printerType","fileBuffer","response","downloadFile","chunks","stream","data","Promise","resolve","reject","chunk","push","err","Buffer","concat","downloadError","analysisState","statusReason","Error","message","printJobRepository","save","length","tempPath","join","tmpdir","Date","now","writeFileSync","fileHash","calculateFileHash","substring","existingJob","findDuplicateByHash","metadata","cachedMetadata","loadMetadata","id","saveMetadata","existingFilePath","getFilePath","analysisResult","analyzeFile","thumbnails","fileFormat","totalLayers","gcodePrintTimeSeconds","filamentUsedGrams","fileObject","path","originalname","mimetype","size","saveFile","thumbnailMetadata","saveThumbnails","fileSize","analyzedAt","unlinkSync","cleanupError","warn","findOne","where","updateError"],"mappings":"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"}
|