@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/state/socket-io.gateway.ts"],"names":["IO_MESSAGES","SocketIoGateway","socketIoGatewaySessions","Gauge","name","help","socketIoGatewayDisconnects","Counter","socketIoGatewayMessagesSent","socketIoGatewayMessageSentSize","logger","io","loggerFactory","eventEmitter2","settingsStore","userService","configService","attachServer","httpServer","Server","cors","origin","opts","getPassportJwtOptions","value","handshake","auth","token","use","authorize","verifyUserCallback","on","socket","onConnect","bind","debug","socketId","id","emit","socketIoConnectedEvent","inc","dec","send","event","data","payload","JSON","stringify","sizeInBytes","Buffer","byteLength","set","
|
|
1
|
+
{"version":3,"sources":["../../src/state/socket-io.gateway.ts"],"names":["IO_MESSAGES","SocketIoGateway","socketIoGatewaySessions","Gauge","name","help","socketIoGatewayDisconnects","Counter","socketIoGatewayMessagesSent","socketIoGatewayMessageSentSize","logger","io","loggerFactory","eventEmitter2","settingsStore","userService","configService","attachServer","httpServer","Server","cors","origin","opts","getPassportJwtOptions","value","handshake","auth","token","use","authorize","verifyUserCallback","on","socket","onConnect","bind","debug","socketId","id","emit","socketIoConnectedEvent","inc","dec","send","event","data","payload","JSON","stringify","sizeInBytes","Buffer","byteLength","set","Update"],"mappings":";;;;;;;;;;;QAsFaA;eAAAA;;QArDAC;eAAAA;;;0BAjCkB;gCACQ;0BAMmB;oCAGhC;4BACK;AAE/B,MAAMC,0BAA0B,IAAIC,iBAAK,CAAC;IACxCC,MAAM;IACNC,MAAM;AACR;AAEA,MAAMC,6BAA6B,IAAIC,mBAAO,CAAC;IAC7CH,MAAM;IACNC,MAAM;AACR;AAEA,MAAMG,8BAA8B,IAAID,mBAAO,CAAC;IAC9CH,MAAM;IACNC,MAAM;AACR;AAEA,MAAMI,iCAAiC,IAAIN,iBAAK,CAAC;IAC/CC,MAAM;IACNC,MAAM;AACR;AAEO,MAAMJ;;;;;IACXS,OAAsB;IAEtBC,GAAW;IAEX,YACEC,aAA6B,EAC7B,AAAiBC,aAA4B,EAC7C,AAAiBC,aAA4B,EAC7C,AAAiBC,WAAyB,EAC1C,AAAiBC,aAA6B,CAC9C;aAJiBH,gBAAAA;aACAC,gBAAAA;aACAC,cAAAA;aACAC,gBAAAA;QAEjB,IAAI,CAACN,MAAM,GAAGE,cAAcX,gBAAgBG,IAAI;IAClD;IAEAa,aAAaC,UAAsB,EAAE;QACnC,IAAI,CAACP,EAAE,GAAG,IAAIQ,gBAAM,CAACD,YAAY;YAAEE,MAAM;gBAAEC,QAAQ;YAAI;QAAE;QACzD,MAAMC,OAAOC,IAAAA,+BAAqB,EAChC,IAAI,CAACT,aAAa,EAClB,IAAI,CAACE,aAAa,EAClB,CAACQ,QAAkBA,MAAMC,SAAS,CAACC,IAAI,CAACC,KAAK;QAE/C,IAAI,CAAChB,EAAE,CAACiB,GAAG,CAACC,IAAAA,6BAAS,EAAC,IAAI,CAACf,aAAa,EAAEQ,MAAM,IAAI,CAACZ,MAAM,EAAEoB,IAAAA,4BAAkB,EAAC,IAAI,CAACf,WAAW;QAChG,IAAI,CAACJ,EAAE,CAACoB,EAAE,CAAC,cAAc,CAACC,SAAW,IAAI,CAACC,SAAS,CAACC,IAAI,CAAC,IAAI,EAAEF;IACjE;IAEAC,UAAUD,MAAc,EAAE;QACxB,IAAI,CAACtB,MAAM,CAACyB,KAAK,CAAC,6BAA6B;YAAEC,UAAUJ,OAAOK,EAAE;QAAC;QACrE,IAAI,CAACxB,aAAa,CAACyB,IAAI,CAACC,sCAAsB,EAAEP,OAAOK,EAAE;QACzDnC,wBAAwBsC,GAAG;QAE3BR,OAAOD,EAAE,CAAC,cAAc;YACtB,IAAI,CAACrB,MAAM,CAACyB,KAAK,CAAC,gCAAgC;gBAAEC,UAAUJ,OAAOK,EAAE;YAAC;YACxEnC,wBAAwBuC,GAAG,CAAC;YAC5BnC,2BAA2BkC,GAAG;QAChC;IACF;IAEAE,KAAQC,KAAa,EAAEC,IAAO,EAAE;QAC9B,IAAI,CAAC,IAAI,CAACjC,EAAE,EAAE;YACZ,IAAI,CAACD,MAAM,CAACyB,KAAK,CAAC,CAAC,gBAAgB,EAAEQ,MAAM,wCAAwC,CAAC;YACpF;QACF;QAEA,IAAI,CAAChC,EAAE,CAAC2B,IAAI,CAACK,OAAOC;QACpBpC,4BAA4BgC,GAAG;QAE/B,MAAMK,UAAUC,KAAKC,SAAS,CAACH;QAC/B,MAAMI,cAAcC,OAAOC,UAAU,CAACL;QACtCpC,+BAA+B0C,GAAG,CAACH;IACrC;AACF;AAEO,MAAMhD,cAAc;IACzBoD,QAAQ;AACV"}
|
|
@@ -20,6 +20,8 @@ const _moonrakerconstants = require("../services/moonraker/constants/moonraker.c
|
|
|
20
20
|
const _bambumqttadapter = require("../services/bambu/bambu-mqtt.adapter");
|
|
21
21
|
const _prusalinkconstants = require("../services/prusa-link/constants/prusalink.constants");
|
|
22
22
|
const _eventconstants = require("../constants/event.constants");
|
|
23
|
+
const TEST_PRINTER_ID_BASE = 100000;
|
|
24
|
+
let testPrinterIdCounter = 0;
|
|
23
25
|
class TestPrinterSocketStore {
|
|
24
26
|
socketFactory;
|
|
25
27
|
socketIoGateway;
|
|
@@ -39,9 +41,10 @@ class TestPrinterSocketStore {
|
|
|
39
41
|
}
|
|
40
42
|
const validatedData = await (0, _validators.validateInput)(printer, _createtestprintervalidation.createTestPrinterSchema);
|
|
41
43
|
validatedData.enabled = true;
|
|
44
|
+
const testPrinterId = TEST_PRINTER_ID_BASE + ++testPrinterIdCounter;
|
|
42
45
|
this.testSocket = this.socketFactory.createInstance(printer.printerType);
|
|
43
46
|
this.testSocket.registerCredentials({
|
|
44
|
-
printerId:
|
|
47
|
+
printerId: testPrinterId,
|
|
45
48
|
loginDto: {
|
|
46
49
|
apiKey: printer.apiKey,
|
|
47
50
|
username: printer.username,
|
|
@@ -73,7 +76,7 @@ class TestPrinterSocketStore {
|
|
|
73
76
|
(0, _prusalinkconstants.prusaLinkEvent)(_octoprintwebsocketadapter.WsMessage.WS_ERROR)
|
|
74
77
|
];
|
|
75
78
|
const listener = ({ event, payload, printerId })=>{
|
|
76
|
-
if (printerId !==
|
|
79
|
+
if (printerId !== testPrinterId) {
|
|
77
80
|
return;
|
|
78
81
|
}
|
|
79
82
|
this.socketIoGateway.send("test-printer-state", {
|
|
@@ -123,7 +126,7 @@ class TestPrinterSocketStore {
|
|
|
123
126
|
}
|
|
124
127
|
this.eventEmitter2.emit(_eventconstants.printerEvents.printersDeleted, {
|
|
125
128
|
printerIds: [
|
|
126
|
-
|
|
129
|
+
testPrinterId
|
|
127
130
|
]
|
|
128
131
|
});
|
|
129
132
|
delete this.testSocket;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/state/test-printer-socket.store.ts"],"names":["TestPrinterSocketStore","testSocket","logger","loggerFactory","socketFactory","socketIoGateway","eventEmitter2","name","setupTestPrinter","correlationToken","printer","close","validatedData","validateInput","createTestPrinterSchema","enabled","createInstance","printerType","registerCredentials","printerId","loginDto","apiKey","username","password","printerURL","testEvents","octoPrintEvent","WsMessage","WS_STATE_UPDATED","API_STATE_UPDATED","WS_CLOSED","WS_OPENED","WS_ERROR","moonrakerEvent","bambuEvent","prusaLinkEvent","listener","event","payload","send","forEach","te","on","log","setupSocketSession","promise","Promise","resolve","reject","error","open","_startTime","setInterval","warn","Error","socketState","SOCKET_STATE","authenticated","race","setTimeout","AppConstants","defaultWebsocketHandshakeTimeout","e","errorSummary","captureException","disallowEmittingEvents","emit","printerEvents","printersDeleted","printerIds","off"],"mappings":";;;;+
|
|
1
|
+
{"version":3,"sources":["../../src/state/test-printer-socket.store.ts"],"names":["TestPrinterSocketStore","TEST_PRINTER_ID_BASE","testPrinterIdCounter","testSocket","logger","loggerFactory","socketFactory","socketIoGateway","eventEmitter2","name","setupTestPrinter","correlationToken","printer","close","validatedData","validateInput","createTestPrinterSchema","enabled","testPrinterId","createInstance","printerType","registerCredentials","printerId","loginDto","apiKey","username","password","printerURL","testEvents","octoPrintEvent","WsMessage","WS_STATE_UPDATED","API_STATE_UPDATED","WS_CLOSED","WS_OPENED","WS_ERROR","moonrakerEvent","bambuEvent","prusaLinkEvent","listener","event","payload","send","forEach","te","on","log","setupSocketSession","promise","Promise","resolve","reject","error","open","_startTime","setInterval","warn","Error","socketState","SOCKET_STATE","authenticated","race","setTimeout","AppConstants","defaultWebsocketHandshakeTimeout","e","errorSummary","captureException","disallowEmittingEvents","emit","printerEvents","printersDeleted","printerIds","off"],"mappings":"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"}
|
package/dist/tasks/boot.task.js
CHANGED
|
@@ -8,81 +8,38 @@ Object.defineProperty(exports, "BootTask", {
|
|
|
8
8
|
return BootTask;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const _mongoose = /*#__PURE__*/ _interop_require_wildcard(require("mongoose"));
|
|
12
|
-
const _serverenv = require("../server.env");
|
|
13
11
|
const _containertokens = require("../container.tokens");
|
|
14
12
|
const _serverconstants = require("../server.constants");
|
|
15
13
|
const _tasks = require("../tasks");
|
|
16
|
-
function _getRequireWildcardCache(nodeInterop) {
|
|
17
|
-
if (typeof WeakMap !== "function") return null;
|
|
18
|
-
var cacheBabelInterop = new WeakMap();
|
|
19
|
-
var cacheNodeInterop = new WeakMap();
|
|
20
|
-
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
21
|
-
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
22
|
-
})(nodeInterop);
|
|
23
|
-
}
|
|
24
|
-
function _interop_require_wildcard(obj, nodeInterop) {
|
|
25
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
|
26
|
-
return obj;
|
|
27
|
-
}
|
|
28
|
-
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
29
|
-
return {
|
|
30
|
-
default: obj
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
var cache = _getRequireWildcardCache(nodeInterop);
|
|
34
|
-
if (cache && cache.has(obj)) {
|
|
35
|
-
return cache.get(obj);
|
|
36
|
-
}
|
|
37
|
-
var newObj = {
|
|
38
|
-
__proto__: null
|
|
39
|
-
};
|
|
40
|
-
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
41
|
-
for(var key in obj){
|
|
42
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
43
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
44
|
-
if (desc && (desc.get || desc.set)) {
|
|
45
|
-
Object.defineProperty(newObj, key, desc);
|
|
46
|
-
} else {
|
|
47
|
-
newObj[key] = obj[key];
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
newObj.default = obj;
|
|
52
|
-
if (cache) {
|
|
53
|
-
cache.set(obj, newObj);
|
|
54
|
-
}
|
|
55
|
-
return newObj;
|
|
56
|
-
}
|
|
57
14
|
class BootTask {
|
|
58
15
|
taskManagerService;
|
|
59
16
|
settingsStore;
|
|
60
17
|
multerService;
|
|
61
18
|
printerSocketStore;
|
|
62
|
-
printerFilesStore;
|
|
63
19
|
permissionService;
|
|
64
20
|
roleService;
|
|
65
21
|
userService;
|
|
66
22
|
floorStore;
|
|
67
23
|
configService;
|
|
68
24
|
typeormService;
|
|
69
|
-
isTypeormMode;
|
|
70
25
|
printerThumbnailCache;
|
|
26
|
+
printFileDownloaderService;
|
|
27
|
+
fileStorageService;
|
|
71
28
|
logger;
|
|
72
|
-
constructor(loggerFactory, taskManagerService, settingsStore, multerService, printerSocketStore,
|
|
29
|
+
constructor(loggerFactory, taskManagerService, settingsStore, multerService, printerSocketStore, permissionService, roleService, userService, floorStore, configService, typeormService, printerThumbnailCache, printFileDownloaderService, fileStorageService){
|
|
73
30
|
this.taskManagerService = taskManagerService;
|
|
74
31
|
this.settingsStore = settingsStore;
|
|
75
32
|
this.multerService = multerService;
|
|
76
33
|
this.printerSocketStore = printerSocketStore;
|
|
77
|
-
this.printerFilesStore = printerFilesStore;
|
|
78
34
|
this.permissionService = permissionService;
|
|
79
35
|
this.roleService = roleService;
|
|
80
36
|
this.userService = userService;
|
|
81
37
|
this.floorStore = floorStore;
|
|
82
38
|
this.configService = configService;
|
|
83
39
|
this.typeormService = typeormService;
|
|
84
|
-
this.isTypeormMode = isTypeormMode;
|
|
85
40
|
this.printerThumbnailCache = printerThumbnailCache;
|
|
41
|
+
this.printFileDownloaderService = printFileDownloaderService;
|
|
42
|
+
this.fileStorageService = fileStorageService;
|
|
86
43
|
this.logger = loggerFactory(BootTask.name);
|
|
87
44
|
}
|
|
88
45
|
async runOnce() {
|
|
@@ -91,26 +48,9 @@ class BootTask {
|
|
|
91
48
|
await this.run();
|
|
92
49
|
}
|
|
93
50
|
async run() {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
try {
|
|
98
|
-
await this.createConnection();
|
|
99
|
-
await this.migrateDatabase();
|
|
100
|
-
} catch (e) {
|
|
101
|
-
if (e instanceof _mongoose.default.Error) {
|
|
102
|
-
if (!e.message.includes("Can't call `openUri()` on an active connection with different connection strings.")) {
|
|
103
|
-
if (e.message.includes("ECONNREFUSED")) {
|
|
104
|
-
this.logger.error("Database connection timed-out. Retrying in 5000.");
|
|
105
|
-
} else {
|
|
106
|
-
this.logger.error(`Database connection error: ${e.message}`);
|
|
107
|
-
}
|
|
108
|
-
this.taskManagerService.scheduleDisabledJob(_containertokens.DITokens.bootTask, false);
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
51
|
+
await this.typeormService.createConnection();
|
|
52
|
+
this.logger.log("Ensuring file storage directories exist");
|
|
53
|
+
await this.fileStorageService.ensureStorageDirectories();
|
|
114
54
|
this.logger.log("Loading and synchronizing Server Settings");
|
|
115
55
|
await this.settingsStore.loadSettings();
|
|
116
56
|
this.logger.log("Synchronizing user permission and roles definition");
|
|
@@ -142,8 +82,6 @@ class BootTask {
|
|
|
142
82
|
this.multerService.clearUploadsFolder();
|
|
143
83
|
this.logger.log("Loading printer sockets");
|
|
144
84
|
await this.printerSocketStore.loadPrinterSockets();
|
|
145
|
-
this.logger.log("Loading files store");
|
|
146
|
-
await this.printerFilesStore.loadFilesStore();
|
|
147
85
|
this.logger.log("Loading floor store");
|
|
148
86
|
await this.floorStore.loadStore();
|
|
149
87
|
this.logger.log("Loading printer thumbnail cache");
|
|
@@ -163,7 +101,6 @@ class BootTask {
|
|
|
163
101
|
const demoUsername = this.configService.get(_serverconstants.AppConstants.OVERRIDE_DEMO_USERNAME, _serverconstants.AppConstants.DEFAULT_DEMO_USERNAME);
|
|
164
102
|
const demoPassword = this.configService.get(_serverconstants.AppConstants.OVERRIDE_DEMO_PASSWORD, _serverconstants.AppConstants.DEFAULT_DEMO_PASSWORD);
|
|
165
103
|
const demoRole = this.configService.get(_serverconstants.AppConstants.OVERRIDE_DEMO_ROLE, _serverconstants.AppConstants.DEFAULT_DEMO_ROLE);
|
|
166
|
-
const adminRole = this.roleService.getRoleByName(demoRole);
|
|
167
104
|
const demoUserId = await this.userService.getDemoUserId();
|
|
168
105
|
if (!demoUserId) {
|
|
169
106
|
await this.userService.register({
|
|
@@ -174,7 +111,7 @@ class BootTask {
|
|
|
174
111
|
isRootUser: false,
|
|
175
112
|
needsPasswordChange: false,
|
|
176
113
|
roles: [
|
|
177
|
-
|
|
114
|
+
demoRole
|
|
178
115
|
]
|
|
179
116
|
});
|
|
180
117
|
this.logger.log("Created demo account");
|
|
@@ -182,29 +119,12 @@ class BootTask {
|
|
|
182
119
|
await this.userService.setVerifiedById(demoUserId, true);
|
|
183
120
|
await this.userService.setIsRootUserById(demoUserId, false);
|
|
184
121
|
await this.userService.updatePasswordUnsafeByUsername(demoUsername, demoPassword);
|
|
185
|
-
await this.userService.
|
|
186
|
-
|
|
122
|
+
await this.userService.setUserRoles(demoUserId, [
|
|
123
|
+
demoRole
|
|
187
124
|
]);
|
|
188
125
|
this.logger.log("Updated demo account");
|
|
189
126
|
}
|
|
190
127
|
}
|
|
191
|
-
async createConnection() {
|
|
192
|
-
if (!this.isTypeormMode) {
|
|
193
|
-
const envUrl = (0, _serverenv.fetchMongoDBConnectionString)();
|
|
194
|
-
if (!envUrl?.length) {
|
|
195
|
-
throw new Error("Mongodb connection string not set");
|
|
196
|
-
}
|
|
197
|
-
await (0, _mongoose.connect)(envUrl, {
|
|
198
|
-
serverSelectionTimeoutMS: 1500
|
|
199
|
-
});
|
|
200
|
-
await (0, _mongoose.syncIndexes)();
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
async migrateDatabase() {
|
|
204
|
-
if (!this.isTypeormMode) {
|
|
205
|
-
await (0, _serverenv.runMigrations)(_mongoose.default.connection.db, _mongoose.default.connection.getClient());
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
128
|
}
|
|
209
129
|
|
|
210
130
|
//# sourceMappingURL=boot.task.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tasks/boot.task.ts"],"names":["BootTask","logger","loggerFactory","taskManagerService","settingsStore","multerService","printerSocketStore","
|
|
1
|
+
{"version":3,"sources":["../../src/tasks/boot.task.ts"],"names":["BootTask","logger","loggerFactory","taskManagerService","settingsStore","multerService","printerSocketStore","permissionService","roleService","userService","floorStore","configService","typeormService","printerThumbnailCache","printFileDownloaderService","fileStorageService","name","runOnce","registerJobOrTask","ServerTasks","SERVER_BOOT_TASK","log","run","createConnection","ensureStorageDirectories","loadSettings","syncPermissions","syncRoles","isDemoMode","warn","AppConstants","OVERRIDE_IS_DEMO_MODE","createOrUpdateDemoAccount","setLoginRequired","setRegistrationEnabled","loginRequired","get","OVERRIDE_LOGIN_REQUIRED","registrationEnabled","OVERRIDE_REGISTRATION_ENABLED","overrideJwtSecret","OVERRIDE_JWT_SECRET","overrideJwtExpiresIn","OVERRIDE_JWT_EXPIRES_IN","persistOptionalCredentialSettings","clearUploadsFolder","loadPrinterSockets","loadStore","loadCache","length","getAllValues","process","env","SAFEMODE_ENABLED","BOOT_TASKS","forEach","task","disableJob","DITokens","bootTask","demoUsername","OVERRIDE_DEMO_USERNAME","DEFAULT_DEMO_USERNAME","demoPassword","OVERRIDE_DEMO_PASSWORD","DEFAULT_DEMO_PASSWORD","demoRole","OVERRIDE_DEMO_ROLE","DEFAULT_DEMO_ROLE","demoUserId","getDemoUserId","register","username","password","isDemoUser","isVerified","isRootUser","needsPasswordChange","roles","setVerifiedById","setIsRootUserById","updatePasswordUnsafeByUsername","setUserRoles"],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "PrintJobAnalysisTask", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return PrintJobAnalysisTask;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _printjobentity = require("../entities/print-job.entity");
|
|
12
|
+
class PrintJobAnalysisTask {
|
|
13
|
+
printJobService;
|
|
14
|
+
fileAnalysisService;
|
|
15
|
+
fileStorageService;
|
|
16
|
+
logger;
|
|
17
|
+
printJobRepository;
|
|
18
|
+
constructor(loggerFactory, printJobService, fileAnalysisService, fileStorageService, typeormService){
|
|
19
|
+
this.printJobService = printJobService;
|
|
20
|
+
this.fileAnalysisService = fileAnalysisService;
|
|
21
|
+
this.fileStorageService = fileStorageService;
|
|
22
|
+
this.logger = loggerFactory(PrintJobAnalysisTask.name);
|
|
23
|
+
this.printJobRepository = typeormService.getDataSource().getRepository(_printjobentity.PrintJob);
|
|
24
|
+
}
|
|
25
|
+
async run() {
|
|
26
|
+
try {
|
|
27
|
+
const pendingJobs = await this.printJobRepository.find({
|
|
28
|
+
where: [
|
|
29
|
+
{
|
|
30
|
+
analysisState: "NOT_ANALYZED",
|
|
31
|
+
status: "PENDING"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
analysisState: "ANALYZING"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
take: 10
|
|
38
|
+
});
|
|
39
|
+
if (pendingJobs.length === 0) {
|
|
40
|
+
this.logger.debug("No pending print jobs to analyze");
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
this.logger.log(`Found ${pendingJobs.length} print job(s) to analyze`);
|
|
44
|
+
for (const job of pendingJobs){
|
|
45
|
+
try {
|
|
46
|
+
await this.analyzeJob(job);
|
|
47
|
+
} catch (error) {
|
|
48
|
+
this.logger.error(`Failed to analyze job ${job.id}: ${job.fileName}`, error);
|
|
49
|
+
job.analysisState = "FAILED";
|
|
50
|
+
job.statusReason = `Analysis failed: ${error instanceof Error ? error.message : "Unknown error"}`;
|
|
51
|
+
await this.printJobRepository.save(job);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
this.logger.log(`Completed analysis of ${pendingJobs.length} print job(s)`);
|
|
55
|
+
} catch (error) {
|
|
56
|
+
this.logger.error("Failed to run print job analysis task", error);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async analyzeJob(job) {
|
|
60
|
+
this.logger.log(`Analyzing print job ${job.id}: ${job.fileName}`);
|
|
61
|
+
job.analysisState = "ANALYZING";
|
|
62
|
+
await this.printJobRepository.save(job);
|
|
63
|
+
if (!job.fileStorageId) {
|
|
64
|
+
throw new Error("Job has no fileStorageId - cannot analyze");
|
|
65
|
+
}
|
|
66
|
+
const cachedMetadata = await this.fileStorageService.loadMetadata(job.fileStorageId);
|
|
67
|
+
let metadata;
|
|
68
|
+
let thumbnails = [];
|
|
69
|
+
if (cachedMetadata) {
|
|
70
|
+
this.logger.log(`Using cached metadata for job ${job.id} (storageId: ${job.fileStorageId})`);
|
|
71
|
+
metadata = cachedMetadata;
|
|
72
|
+
thumbnails = [];
|
|
73
|
+
} else {
|
|
74
|
+
const filePath = await this.resolveFilePath(job);
|
|
75
|
+
if (!filePath) {
|
|
76
|
+
throw new Error("File path could not be resolved");
|
|
77
|
+
}
|
|
78
|
+
const exists = await this.fileAnalysisService.needsAnalysis(filePath);
|
|
79
|
+
if (!exists) {
|
|
80
|
+
throw new Error(`File not found: ${filePath}`);
|
|
81
|
+
}
|
|
82
|
+
const analysisResult = await this.fileAnalysisService.analyzeFile(filePath);
|
|
83
|
+
metadata = analysisResult.metadata;
|
|
84
|
+
thumbnails = analysisResult.thumbnails;
|
|
85
|
+
let thumbnailMetadata = [];
|
|
86
|
+
if (thumbnails && thumbnails.length > 0) {
|
|
87
|
+
thumbnailMetadata = await this.fileStorageService.saveThumbnails(job.fileStorageId, thumbnails);
|
|
88
|
+
this.logger.log(`Saved ${thumbnailMetadata.length} thumbnail(s) for job ${job.id}`);
|
|
89
|
+
}
|
|
90
|
+
const fileHash = job.fileHash || undefined;
|
|
91
|
+
await this.fileStorageService.saveMetadata(job.fileStorageId, metadata, fileHash, job.fileName, thumbnailMetadata);
|
|
92
|
+
this.logger.log(`Cached metadata JSON for job ${job.id}`);
|
|
93
|
+
}
|
|
94
|
+
await this.printJobService.handleFileAnalyzed(job.id, metadata, thumbnails);
|
|
95
|
+
this.logger.log(`Successfully analyzed job ${job.id}: ${job.fileName}`);
|
|
96
|
+
}
|
|
97
|
+
async resolveFilePath(job) {
|
|
98
|
+
if (job.fileStorageId) {
|
|
99
|
+
try {
|
|
100
|
+
const exists = await this.fileStorageService.fileExists(job.fileStorageId);
|
|
101
|
+
if (!exists) {
|
|
102
|
+
this.logger.warn(`File ${job.fileStorageId} not found in storage for job ${job.id}`);
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
return this.fileStorageService.getFilePath(job.fileStorageId);
|
|
106
|
+
} catch (error) {
|
|
107
|
+
this.logger.error(`Failed to resolve file path for job ${job.id}: ${error}`);
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
this.logger.debug(`Job ${job.id} has no fileStorageId - cannot analyze remotely stored file`);
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
//# sourceMappingURL=print-job-analysis.task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/tasks/print-job-analysis.task.ts"],"names":["PrintJobAnalysisTask","logger","printJobRepository","loggerFactory","printJobService","fileAnalysisService","fileStorageService","typeormService","name","getDataSource","getRepository","PrintJob","run","pendingJobs","find","where","analysisState","status","take","length","debug","log","job","analyzeJob","error","id","fileName","statusReason","Error","message","save","fileStorageId","cachedMetadata","loadMetadata","metadata","thumbnails","filePath","resolveFilePath","exists","needsAnalysis","analysisResult","analyzeFile","thumbnailMetadata","saveThumbnails","fileHash","undefined","saveMetadata","handleFileAnalyzed","fileExists","warn","getFilePath"],"mappings":";;;;+BAcaA;;;eAAAA;;;gCAPY;AAOlB,MAAMA;;;;IACXC,OAAsB;IACdC,mBAAyC;IAEjD,YACEC,aAA6B,EAC7B,AAAiBC,eAAgC,EACjD,AAAiBC,mBAAwC,EACzD,AAAiBC,kBAAsC,EACvDC,cAA8B,CAC9B;aAJiBH,kBAAAA;aACAC,sBAAAA;aACAC,qBAAAA;QAGjB,IAAI,CAACL,MAAM,GAAGE,cAAcH,qBAAqBQ,IAAI;QACrD,IAAI,CAACN,kBAAkB,GAAGK,eAAeE,aAAa,GAAGC,aAAa,CAACC,wBAAQ;IACjF;IAEA,MAAMC,MAAM;QACV,IAAI;YAEF,MAAMC,cAAc,MAAM,IAAI,CAACX,kBAAkB,CAACY,IAAI,CAAC;gBACrDC,OAAO;oBACL;wBAAEC,eAAe;wBAAgBC,QAAQ;oBAAU;oBACnD;wBAAED,eAAe;oBAAY;iBAC9B;gBACDE,MAAM;YACR;YAEA,IAAIL,YAAYM,MAAM,KAAK,GAAG;gBAC5B,IAAI,CAAClB,MAAM,CAACmB,KAAK,CAAC;gBAClB;YACF;YAEA,IAAI,CAACnB,MAAM,CAACoB,GAAG,CAAC,CAAC,MAAM,EAAER,YAAYM,MAAM,CAAC,wBAAwB,CAAC;YAErE,KAAK,MAAMG,OAAOT,YAAa;gBAC7B,IAAI;oBACF,MAAM,IAAI,CAACU,UAAU,CAACD;gBACxB,EAAE,OAAOE,OAAO;oBACd,IAAI,CAACvB,MAAM,CAACuB,KAAK,CAAC,CAAC,sBAAsB,EAAEF,IAAIG,EAAE,CAAC,EAAE,EAAEH,IAAII,QAAQ,EAAE,EAAEF;oBAGtEF,IAAIN,aAAa,GAAG;oBACpBM,IAAIK,YAAY,GAAG,CAAC,iBAAiB,EAAEH,iBAAiBI,QAAQJ,MAAMK,OAAO,GAAG,iBAAiB;oBACjG,MAAM,IAAI,CAAC3B,kBAAkB,CAAC4B,IAAI,CAACR;gBACrC;YACF;YAEA,IAAI,CAACrB,MAAM,CAACoB,GAAG,CAAC,CAAC,sBAAsB,EAAER,YAAYM,MAAM,CAAC,aAAa,CAAC;QAC5E,EAAE,OAAOK,OAAO;YACd,IAAI,CAACvB,MAAM,CAACuB,KAAK,CAAC,yCAAyCA;QAC7D;IACF;IAEA,MAAcD,WAAWD,GAAa,EAAiB;QACrD,IAAI,CAACrB,MAAM,CAACoB,GAAG,CAAC,CAAC,oBAAoB,EAAEC,IAAIG,EAAE,CAAC,EAAE,EAAEH,IAAII,QAAQ,EAAE;QAGhEJ,IAAIN,aAAa,GAAG;QACpB,MAAM,IAAI,CAACd,kBAAkB,CAAC4B,IAAI,CAACR;QAEnC,IAAI,CAACA,IAAIS,aAAa,EAAE;YACtB,MAAM,IAAIH,MAAM;QAClB;QAGA,MAAMI,iBAAiB,MAAM,IAAI,CAAC1B,kBAAkB,CAAC2B,YAAY,CAACX,IAAIS,aAAa;QAEnF,IAAIG;QACJ,IAAIC,aAAoB,EAAE;QAE1B,IAAIH,gBAAgB;YAElB,IAAI,CAAC/B,MAAM,CAACoB,GAAG,CAAC,CAAC,8BAA8B,EAAEC,IAAIG,EAAE,CAAC,aAAa,EAAEH,IAAIS,aAAa,CAAC,CAAC,CAAC;YAC3FG,WAAWF;YACXG,aAAa,EAAE;QACjB,OAAO;YAEL,MAAMC,WAAW,MAAM,IAAI,CAACC,eAAe,CAACf;YAE5C,IAAI,CAACc,UAAU;gBACb,MAAM,IAAIR,MAAM;YAClB;YAGA,MAAMU,SAAS,MAAM,IAAI,CAACjC,mBAAmB,CAACkC,aAAa,CAACH;YAC5D,IAAI,CAACE,QAAQ;gBACX,MAAM,IAAIV,MAAM,CAAC,gBAAgB,EAAEQ,UAAU;YAC/C;YAGA,MAAMI,iBAAiB,MAAM,IAAI,CAACnC,mBAAmB,CAACoC,WAAW,CAACL;YAClEF,WAAWM,eAAeN,QAAQ;YAClCC,aAAaK,eAAeL,UAAU;YAGtC,IAAIO,oBAA2B,EAAE;YACjC,IAAIP,cAAcA,WAAWhB,MAAM,GAAG,GAAG;gBACvCuB,oBAAoB,MAAM,IAAI,CAACpC,kBAAkB,CAACqC,cAAc,CAACrB,IAAIS,aAAa,EAAEI;gBACpF,IAAI,CAAClC,MAAM,CAACoB,GAAG,CAAC,CAAC,MAAM,EAAEqB,kBAAkBvB,MAAM,CAAC,sBAAsB,EAAEG,IAAIG,EAAE,EAAE;YACpF;YAGA,MAAMmB,WAAWtB,IAAIsB,QAAQ,IAAIC;YACjC,MAAM,IAAI,CAACvC,kBAAkB,CAACwC,YAAY,CAACxB,IAAIS,aAAa,EAAEG,UAAUU,UAAUtB,IAAII,QAAQ,EAAEgB;YAChG,IAAI,CAACzC,MAAM,CAACoB,GAAG,CAAC,CAAC,6BAA6B,EAAEC,IAAIG,EAAE,EAAE;QAC1D;QAGA,MAAM,IAAI,CAACrB,eAAe,CAAC2C,kBAAkB,CAACzB,IAAIG,EAAE,EAAES,UAAUC;QAEhE,IAAI,CAAClC,MAAM,CAACoB,GAAG,CAAC,CAAC,0BAA0B,EAAEC,IAAIG,EAAE,CAAC,EAAE,EAAEH,IAAII,QAAQ,EAAE;IACxE;IAEA,MAAcW,gBAAgBf,GAAa,EAA0B;QAEnE,IAAIA,IAAIS,aAAa,EAAE;YACrB,IAAI;gBACF,MAAMO,SAAS,MAAM,IAAI,CAAChC,kBAAkB,CAAC0C,UAAU,CAAC1B,IAAIS,aAAa;gBACzE,IAAI,CAACO,QAAQ;oBACX,IAAI,CAACrC,MAAM,CAACgD,IAAI,CAAC,CAAC,KAAK,EAAE3B,IAAIS,aAAa,CAAC,8BAA8B,EAAET,IAAIG,EAAE,EAAE;oBACnF,OAAO;gBACT;gBAEA,OAAO,IAAI,CAACnB,kBAAkB,CAAC4C,WAAW,CAAC5B,IAAIS,aAAa;YAC9D,EAAE,OAAOP,OAAO;gBACd,IAAI,CAACvB,MAAM,CAACuB,KAAK,CAAC,CAAC,oCAAoC,EAAEF,IAAIG,EAAE,CAAC,EAAE,EAAED,OAAO;gBAC3E,OAAO;YACT;QACF;QAGA,IAAI,CAACvB,MAAM,CAACmB,KAAK,CAAC,CAAC,IAAI,EAAEE,IAAIG,EAAE,CAAC,2DAA2D,CAAC;QAC5F,OAAO;IACT;AACF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "PrinterFilesLoadTask", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return PrinterFilesLoadTask;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
class PrinterFilesLoadTask {
|
|
12
|
+
printerFilesStore;
|
|
13
|
+
logger;
|
|
14
|
+
constructor(loggerFactory, printerFilesStore){
|
|
15
|
+
this.printerFilesStore = printerFilesStore;
|
|
16
|
+
this.logger = loggerFactory(PrinterFilesLoadTask.name);
|
|
17
|
+
}
|
|
18
|
+
async run() {
|
|
19
|
+
this.logger.log("Loading files store in background");
|
|
20
|
+
try {
|
|
21
|
+
await this.printerFilesStore.loadFilesStore();
|
|
22
|
+
this.logger.log("Files store loaded successfully in background");
|
|
23
|
+
} catch (error) {
|
|
24
|
+
this.logger.error("Failed to load files store in background", error);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=printer-files-load.task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/tasks/printer-files-load.task.ts"],"names":["PrinterFilesLoadTask","logger","loggerFactory","printerFilesStore","name","run","log","loadFilesStore","error"],"mappings":";;;;+BAQaA;;;eAAAA;;;AAAN,MAAMA;;IACXC,OAAsB;IAEtB,YACEC,aAA6B,EAC7B,AAAiBC,iBAAoC,CACrD;aADiBA,oBAAAA;QAEjB,IAAI,CAACF,MAAM,GAAGC,cAAcF,qBAAqBI,IAAI;IACvD;IAEA,MAAMC,MAAM;QACV,IAAI,CAACJ,MAAM,CAACK,GAAG,CAAC;QAChB,IAAI;YACF,MAAM,IAAI,CAACH,iBAAiB,CAACI,cAAc;YAC3C,IAAI,CAACN,MAAM,CAACK,GAAG,CAAC;QAClB,EAAE,OAAOE,OAAO;YACd,IAAI,CAACP,MAAM,CAACO,KAAK,CAAC,4CAA4CA;QAChE;IACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tasks/socketio.task.ts"],"names":["SocketIoTask","logger","loggerFactory","socketIoGateway","floorStore","printerSocketStore","printerEventsCache","printerCache","fileUploadTrackerCache","eventEmitter2","name","on","socketIoConnectedEvent","sendUpdate","run","floors","listCache","printers","listCachedPrinters","socketStates","getSocketStatesById","printerEvents","getAllKeyValues","trackedUploads","getUploads","socketIoData","send","IO_MESSAGES","
|
|
1
|
+
{"version":3,"sources":["../../src/tasks/socketio.task.ts"],"names":["SocketIoTask","logger","loggerFactory","socketIoGateway","floorStore","printerSocketStore","printerEventsCache","printerCache","fileUploadTrackerCache","eventEmitter2","name","on","socketIoConnectedEvent","sendUpdate","run","floors","listCache","printers","listCachedPrinters","socketStates","getSocketStatesById","printerEvents","getAllKeyValues","trackedUploads","getUploads","socketIoData","send","IO_MESSAGES","Update"],"mappings":";;;;+BAWaA;;;eAAAA;;;iCAXgC;gCACN;AAUhC,MAAMA;;;;;;;;IACXC,OAAsB;IAEtB,YACEC,aAA6B,EAC7B,AAAiBC,eAAgC,EACjD,AAAiBC,UAAsB,EACvC,AAAiBC,kBAAsC,EACvD,AAAiBC,kBAAsC,EACvD,AAAiBC,YAA0B,EAC3C,AAAiBC,sBAA8C,EAC/D,AAAiBC,aAA4B,CAC7C;aAPiBN,kBAAAA;aACAC,aAAAA;aACAC,qBAAAA;aACAC,qBAAAA;aACAC,eAAAA;aACAC,yBAAAA;aACAC,gBAAAA;QAEjB,IAAI,CAACR,MAAM,GAAGC,cAAcF,aAAaU,IAAI;QAE7C,IAAI,CAACD,aAAa,CAACE,EAAE,CAACC,sCAAsB,EAAE;YAC5C,MAAM,IAAI,CAACC,UAAU;QACvB;IACF;IAEA,MAAMC,MAAM;QACV,MAAM,IAAI,CAACD,UAAU;IACvB;IAEA,MAAMA,aAAa;QACjB,MAAME,SAAS,MAAM,IAAI,CAACX,UAAU,CAACY,SAAS;QAC9C,MAAMC,WAAW,MAAM,IAAI,CAACV,YAAY,CAACW,kBAAkB,CAAC;QAC5D,MAAMC,eAAe,IAAI,CAACd,kBAAkB,CAACe,mBAAmB;QAChE,MAAMC,gBAAgB,MAAM,IAAI,CAACf,kBAAkB,CAACgB,eAAe;QACnE,MAAMC,iBAAiB,IAAI,CAACf,sBAAsB,CAACgB,UAAU;QAE7D,MAAMC,eAAe;YACnBR;YACAF;YACAI;YACAE;YACAE;QACF;QAEA,IAAI,CAACpB,eAAe,CAACuB,IAAI,CAACC,4BAAW,CAACC,MAAM,EAAEH;IAChD;AACF"}
|
package/dist/tasks.js
CHANGED
|
@@ -36,9 +36,10 @@ class ServerTasks {
|
|
|
36
36
|
registerTask(_containertokens.DITokens.softwareUpdateTask, _taskpresets.TASK_PRESETS.RUNDELAYED, 1500),
|
|
37
37
|
registerTask(_containertokens.DITokens.clientDistDownloadTask, _taskpresets.TASK_PRESETS.RUNONCE),
|
|
38
38
|
registerTask(_containertokens.DITokens.socketIoTask, _taskpresets.TASK_PRESETS.PERIODIC, 500),
|
|
39
|
-
registerTask(_containertokens.DITokens.printerFileCleanTask, _taskpresets.TASK_PRESETS.RUNONCE, 60 * 1000, true),
|
|
40
39
|
registerTask(_containertokens.DITokens.printerWebsocketTask, _taskpresets.TASK_PRESETS.PERIODIC, 2000, true),
|
|
41
|
-
registerTask(_containertokens.DITokens.printerWebsocketRestoreTask, _taskpresets.TASK_PRESETS.PERIODIC, 15 * 1000, false)
|
|
40
|
+
registerTask(_containertokens.DITokens.printerWebsocketRestoreTask, _taskpresets.TASK_PRESETS.PERIODIC, 15 * 1000, false),
|
|
41
|
+
registerTask(_containertokens.DITokens.printerFilesLoadTask, _taskpresets.TASK_PRESETS.RUNDELAYED, 1000),
|
|
42
|
+
registerTask(_containertokens.DITokens.printJobAnalysisTask, _taskpresets.TASK_PRESETS.PERIODIC, 30 * 1000, false)
|
|
42
43
|
];
|
|
43
44
|
}
|
|
44
45
|
|
package/dist/tasks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tasks.ts"],"names":["ServerTasks","registerTask","task","preset","milliseconds","runImmediately","timingPreset","id","name","SERVER_BOOT_TASK","DITokens","bootTask","TaskPresets","PERIODIC_DISABLED","BOOT_TASKS","softwareUpdateTask","RUNDELAYED","clientDistDownloadTask","RUNONCE","socketIoTask","PERIODIC","
|
|
1
|
+
{"version":3,"sources":["../src/tasks.ts"],"names":["ServerTasks","registerTask","task","preset","milliseconds","runImmediately","timingPreset","id","name","SERVER_BOOT_TASK","DITokens","bootTask","TaskPresets","PERIODIC_DISABLED","BOOT_TASKS","softwareUpdateTask","RUNDELAYED","clientDistDownloadTask","RUNONCE","socketIoTask","PERIODIC","printerWebsocketTask","printerWebsocketRestoreTask","printerFilesLoadTask","printJobAnalysisTask"],"mappings":";;;;;;;;;;;QAkBaA;eAAAA;;QAXGC;eAAAA;;;6BAP4B;iCACnB;AAMlB,SAASA,aAAaC,IAAS,EAAEC,MAAoB,EAAEC,eAAe,CAAC,EAAEC,iBAAiB,KAAK;IACpG,IAAIC,eAAe;QAAE,GAAGH,MAAM;IAAC;IAC/BG,aAAaF,YAAY,GAAGD,OAAOC,YAAY,IAAIA;IACnDE,aAAaD,cAAc,GAAGA,kBAAkB;IAChD,OAAO;QACLE,IAAIL,KAAKM,IAAI,IAAIN;QACjBA;QACAC,QAAQG;IACV;AACF;AAEO,MAAMN;IACX,OAAuBS,mBAAmBR,aAAaS,yBAAQ,CAACC,QAAQ,EAAEC,yBAAW,CAACC,iBAAiB,EAAE,MAAM,OAAO;IACtH,OAAuBC,aAAa;QAClCb,aAAaS,yBAAQ,CAACK,kBAAkB,EAAEH,yBAAW,CAACI,UAAU,EAAE;QAClEf,aAAaS,yBAAQ,CAACO,sBAAsB,EAAEL,yBAAW,CAACM,OAAO;QACjEjB,aAAaS,yBAAQ,CAACS,YAAY,EAAEP,yBAAW,CAACQ,QAAQ,EAAE;QAE1DnB,aAAaS,yBAAQ,CAACW,oBAAoB,EAAET,yBAAW,CAACQ,QAAQ,EAAE,MAAM;QAExEnB,aAAaS,yBAAQ,CAACY,2BAA2B,EAAEV,yBAAW,CAACQ,QAAQ,EAAE,KAAK,MAAM;QAEpFnB,aAAaS,yBAAQ,CAACa,oBAAoB,EAAEX,yBAAW,CAACI,UAAU,EAAE;QAEpEf,aAAaS,yBAAQ,CAACc,oBAAoB,EAAEZ,yBAAW,CAACQ,QAAQ,EAAE,KAAK,MAAM;KAC9E,CAAC;AACJ"}
|
|
@@ -11,83 +11,43 @@ Object.defineProperty(exports, "KeyDiffCache", {
|
|
|
11
11
|
class KeyDiffCache {
|
|
12
12
|
deletedKeys = [];
|
|
13
13
|
updatedKeys = [];
|
|
14
|
-
keyValueStore =
|
|
14
|
+
keyValueStore = new Map();
|
|
15
15
|
async getAllValues() {
|
|
16
|
-
|
|
17
|
-
return await this.getValuesBatch(keys);
|
|
16
|
+
return Array.from(this.keyValueStore.values());
|
|
18
17
|
}
|
|
19
18
|
async getAllKeyValues() {
|
|
20
|
-
return this.keyValueStore;
|
|
19
|
+
return Object.fromEntries(this.keyValueStore);
|
|
21
20
|
}
|
|
22
21
|
async getValue(key) {
|
|
23
|
-
|
|
24
|
-
if (!keyString?.length) {
|
|
25
|
-
throw new Error("Key must be a non-empty serializable string");
|
|
26
|
-
}
|
|
27
|
-
return this.keyValueStore[keyString];
|
|
28
|
-
}
|
|
29
|
-
async processStateDiffs() {
|
|
30
|
-
const updatedKeys = [
|
|
31
|
-
...this.updatedKeys
|
|
32
|
-
];
|
|
33
|
-
const updatedValues = await this.getValuesBatch(updatedKeys);
|
|
34
|
-
const deletedKeys = [
|
|
35
|
-
...this.deletedKeys
|
|
36
|
-
];
|
|
37
|
-
this.resetDiffs();
|
|
38
|
-
return {
|
|
39
|
-
updatedKeys,
|
|
40
|
-
updatedValues,
|
|
41
|
-
deletedKeys
|
|
42
|
-
};
|
|
22
|
+
return this.keyValueStore.get(key);
|
|
43
23
|
}
|
|
44
24
|
async setKeyValuesBatch(keyValues, markUpdated = true) {
|
|
45
|
-
|
|
46
|
-
this.setKeyValue(key, value);
|
|
47
|
-
}
|
|
25
|
+
for (const { key, value } of keyValues){
|
|
26
|
+
await this.setKeyValue(key, value, false);
|
|
27
|
+
}
|
|
48
28
|
if (markUpdated) {
|
|
49
29
|
const updatedKeys = keyValues.map(({ key })=>key);
|
|
50
30
|
this.batchMarkUpdated(updatedKeys);
|
|
51
31
|
}
|
|
52
32
|
}
|
|
53
33
|
async deleteKeysBatch(keys, markDeleted = true) {
|
|
54
|
-
|
|
55
|
-
this.deleteKeyValue(key);
|
|
56
|
-
}
|
|
34
|
+
for (const key of keys){
|
|
35
|
+
await this.deleteKeyValue(key, false);
|
|
36
|
+
}
|
|
57
37
|
if (markDeleted) {
|
|
58
38
|
this.batchMarkDeleted(keys);
|
|
59
39
|
}
|
|
60
40
|
}
|
|
61
|
-
async getValuesBatch(keys) {
|
|
62
|
-
const keyStrings = keys.map((key)=>key?.toString());
|
|
63
|
-
if (keyStrings.some((key)=>!key?.length)) {
|
|
64
|
-
throw new Error("Key must be a non-empty serializable string, and one of them is not");
|
|
65
|
-
}
|
|
66
|
-
const values = [];
|
|
67
|
-
for (const keyString of keyStrings){
|
|
68
|
-
const value = await this.getValue(keyString.toString());
|
|
69
|
-
values.push(value);
|
|
70
|
-
}
|
|
71
|
-
return values;
|
|
72
|
-
}
|
|
73
41
|
async setKeyValue(key, value, markUpdated = true) {
|
|
74
|
-
|
|
75
|
-
if (!keyString?.length) {
|
|
76
|
-
throw new Error("Key must be a non-empty serializable string");
|
|
77
|
-
}
|
|
78
|
-
this.keyValueStore[keyString] = value;
|
|
42
|
+
this.keyValueStore.set(key, value);
|
|
79
43
|
if (markUpdated) {
|
|
80
|
-
this.markUpdated(
|
|
44
|
+
this.markUpdated(key);
|
|
81
45
|
}
|
|
82
46
|
}
|
|
83
47
|
async deleteKeyValue(key, markDeleted = true) {
|
|
84
|
-
|
|
85
|
-
if (!keyString?.length) {
|
|
86
|
-
throw new Error("Key must be a non-empty serializable string");
|
|
87
|
-
}
|
|
88
|
-
delete this.keyValueStore[keyString];
|
|
48
|
+
this.keyValueStore.delete(key);
|
|
89
49
|
if (markDeleted) {
|
|
90
|
-
this.markDeleted(
|
|
50
|
+
this.markDeleted(key);
|
|
91
51
|
}
|
|
92
52
|
}
|
|
93
53
|
batchMarkDeleted(keys) {
|
|
@@ -96,24 +56,23 @@ class KeyDiffCache {
|
|
|
96
56
|
}
|
|
97
57
|
}
|
|
98
58
|
markUpdated(key) {
|
|
99
|
-
|
|
100
|
-
|
|
59
|
+
const deletedIndex = this.deletedKeys.indexOf(key);
|
|
60
|
+
if (deletedIndex !== -1) {
|
|
61
|
+
this.deletedKeys.splice(deletedIndex, 1);
|
|
101
62
|
}
|
|
102
63
|
if (!this.updatedKeys.includes(key)) {
|
|
103
64
|
this.updatedKeys.push(key);
|
|
104
65
|
}
|
|
105
66
|
}
|
|
106
67
|
markDeleted(key) {
|
|
107
|
-
|
|
108
|
-
|
|
68
|
+
const updatedIndex = this.updatedKeys.indexOf(key);
|
|
69
|
+
if (updatedIndex !== -1) {
|
|
70
|
+
this.updatedKeys.splice(updatedIndex, 1);
|
|
109
71
|
}
|
|
110
72
|
if (!this.deletedKeys.includes(key)) {
|
|
111
73
|
this.deletedKeys.push(key);
|
|
112
74
|
}
|
|
113
75
|
}
|
|
114
|
-
convertToKeyString(key) {
|
|
115
|
-
return key?.toString();
|
|
116
|
-
}
|
|
117
76
|
resetDiffs() {
|
|
118
77
|
this.deletedKeys = [];
|
|
119
78
|
this.updatedKeys = [];
|