@fdm-monster/server 2.0.10 → 2.0.11
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/.claude/CLAUDE.md +76 -0
- package/.vite-hooks/pre-commit +1 -0
- package/.yarn/install-state.gz +0 -0
- package/.yarn/releases/yarn-4.13.0.cjs +940 -0
- package/.yarnrc.yml +1 -1
- package/README.md +1 -1
- package/RELEASE_NOTES.MD +14 -0
- package/dist/_virtual/_@oxc-project_runtime@0.127.0/helpers/decorate.js +9 -0
- package/dist/_virtual/_@oxc-project_runtime@0.127.0/helpers/decorateMetadata.js +6 -0
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/_virtual/_virtual_controllers.js +43 -0
- package/dist/consoles/typeorm-create.js +51 -112
- package/dist/consoles/typeorm-create.js.map +1 -1
- package/dist/consoles/typeorm-generate.js +99 -165
- package/dist/consoles/typeorm-generate.js.map +1 -1
- package/dist/consoles/typeorm-migrate.js +35 -43
- package/dist/consoles/typeorm-migrate.js.map +1 -1
- package/dist/constants/authorization.constants.js +75 -97
- package/dist/constants/authorization.constants.js.map +1 -1
- package/dist/constants/event.constants.js +11 -41
- package/dist/constants/event.constants.js.map +1 -1
- package/dist/constants/http-status-codes.constants.js +319 -71
- package/dist/constants/http-status-codes.constants.js.map +1 -1
- package/dist/constants/server-settings.constants.js +45 -87
- package/dist/constants/server-settings.constants.js.map +1 -1
- package/dist/constants/service.constants.js +3 -21
- package/dist/constants/service.constants.js.map +1 -1
- package/dist/container.js +167 -181
- package/dist/container.js.map +1 -1
- package/dist/container.tokens.js +78 -85
- package/dist/container.tokens.js.map +1 -1
- package/dist/controllers/auth.controller.js +156 -225
- package/dist/controllers/auth.controller.js.map +1 -1
- package/dist/controllers/batch-call.controller.js +79 -116
- package/dist/controllers/batch-call.controller.js.map +1 -1
- package/dist/controllers/camera-stream.controller.js +74 -119
- package/dist/controllers/camera-stream.controller.js.map +1 -1
- package/dist/controllers/dto/update-client-dist.dto.js +8 -15
- package/dist/controllers/dto/update-client-dist.dto.js.map +1 -1
- package/dist/controllers/file-storage.controller.js +251 -312
- package/dist/controllers/file-storage.controller.js.map +1 -1
- package/dist/controllers/first-time-setup.controller.js +83 -135
- package/dist/controllers/first-time-setup.controller.js.map +1 -1
- package/dist/controllers/floor.controller.js +111 -175
- package/dist/controllers/floor.controller.js.map +1 -1
- package/dist/controllers/metrics.controller.js +27 -53
- package/dist/controllers/metrics.controller.js.map +1 -1
- package/dist/controllers/print-job.controller.js +366 -451
- package/dist/controllers/print-job.controller.js.map +1 -1
- package/dist/controllers/print-queue.controller.js +329 -427
- package/dist/controllers/print-queue.controller.js.map +1 -1
- package/dist/controllers/printer-files.controller.js +244 -305
- package/dist/controllers/printer-files.controller.js.map +1 -1
- package/dist/controllers/printer-maintenance-log.controller.js +109 -165
- package/dist/controllers/printer-maintenance-log.controller.js.map +1 -1
- package/dist/controllers/printer-settings.controller.js +50 -81
- package/dist/controllers/printer-settings.controller.js.map +1 -1
- package/dist/controllers/printer-tag.controller.js +104 -166
- package/dist/controllers/printer-tag.controller.js.map +1 -1
- package/dist/controllers/printer.controller.js +352 -469
- package/dist/controllers/printer.controller.js.map +1 -1
- package/dist/controllers/server-private.controller.js +182 -239
- package/dist/controllers/server-private.controller.js.map +1 -1
- package/dist/controllers/server-public.controller.js +104 -158
- package/dist/controllers/server-public.controller.js.map +1 -1
- package/dist/controllers/settings.controller.js +229 -364
- package/dist/controllers/settings.controller.js.map +1 -1
- package/dist/controllers/slicer-compat.controller.js +179 -206
- package/dist/controllers/slicer-compat.controller.js.map +1 -1
- package/dist/controllers/user.controller.js +226 -348
- package/dist/controllers/user.controller.js.map +1 -1
- package/dist/controllers/validation/auth-controller.validation.js +5 -14
- package/dist/controllers/validation/auth-controller.validation.js.map +1 -1
- package/dist/controllers/validation/batch-controller.validation.js +13 -35
- package/dist/controllers/validation/batch-controller.validation.js.map +1 -1
- package/dist/controllers/validation/generic.validation.js +6 -23
- package/dist/controllers/validation/generic.validation.js.map +1 -1
- package/dist/controllers/validation/printer-completion-controller.validation.js +5 -14
- package/dist/controllers/validation/printer-completion-controller.validation.js.map +1 -1
- package/dist/controllers/validation/printer-controller.validation.js +16 -48
- package/dist/controllers/validation/printer-controller.validation.js.map +1 -1
- package/dist/controllers/validation/printer-files-controller.validation.js +12 -47
- package/dist/controllers/validation/printer-files-controller.validation.js.map +1 -1
- package/dist/controllers/validation/printer-settings-controller.validation.js +5 -14
- package/dist/controllers/validation/printer-settings-controller.validation.js.map +1 -1
- package/dist/controllers/validation/server-private.validation.js +7 -14
- package/dist/controllers/validation/server-private.validation.js.map +1 -1
- package/dist/controllers/validation/setting.validation.js +12 -34
- package/dist/controllers/validation/setting.validation.js.map +1 -1
- package/dist/controllers/validation/user-controller.validation.js +27 -65
- package/dist/controllers/validation/user-controller.validation.js.map +1 -1
- package/dist/data-source.js +74 -79
- package/dist/data-source.js.map +1 -1
- package/dist/entities/camera-stream.entity.js +49 -91
- package/dist/entities/camera-stream.entity.js.map +1 -1
- package/dist/entities/floor-position.entity.js +38 -75
- package/dist/entities/floor-position.entity.js.map +1 -1
- package/dist/entities/floor.entity.js +18 -48
- package/dist/entities/floor.entity.js.map +1 -1
- package/dist/entities/index.js +14 -66
- package/dist/entities/print-job.entity.js +114 -196
- package/dist/entities/print-job.entity.js.map +1 -1
- package/dist/entities/printer-maintenance-log.entity.js +61 -140
- package/dist/entities/printer-maintenance-log.entity.js.map +1 -1
- package/dist/entities/printer-tag.entity.js +33 -66
- package/dist/entities/printer-tag.entity.js.map +1 -1
- package/dist/entities/printer.entity.js +67 -124
- package/dist/entities/printer.entity.js.map +1 -1
- package/dist/entities/refresh-token.entity.js +31 -66
- package/dist/entities/refresh-token.entity.js.map +1 -1
- package/dist/entities/role.entity.js +16 -45
- package/dist/entities/role.entity.js.map +1 -1
- package/dist/entities/settings.entity.js +38 -77
- package/dist/entities/settings.entity.js.map +1 -1
- package/dist/entities/tag.entity.js +19 -43
- package/dist/entities/tag.entity.js.map +1 -1
- package/dist/entities/user-role.entity.js +30 -67
- package/dist/entities/user-role.entity.js.map +1 -1
- package/dist/entities/user.entity.js +32 -87
- package/dist/entities/user.entity.js.map +1 -1
- package/dist/exceptions/failed-dependency.exception.js +11 -18
- package/dist/exceptions/failed-dependency.exception.js.map +1 -1
- package/dist/exceptions/job.exceptions.js +9 -16
- package/dist/exceptions/job.exceptions.js.map +1 -1
- package/dist/exceptions/runtime.exceptions.js +82 -121
- package/dist/exceptions/runtime.exceptions.js.map +1 -1
- package/dist/handlers/event-emitter.js +13 -20
- package/dist/handlers/event-emitter.js.map +1 -1
- package/dist/handlers/logger-factory.js +7 -14
- package/dist/handlers/logger-factory.js.map +1 -1
- package/dist/handlers/logger.js +26 -36
- package/dist/handlers/logger.js.map +1 -1
- package/dist/handlers/logging/file-logging.transport.js +17 -31
- package/dist/handlers/logging/file-logging.transport.js.map +1 -1
- package/dist/handlers/logging/loki-logging.transport.js +34 -50
- package/dist/handlers/logging/loki-logging.transport.js.map +1 -1
- package/dist/handlers/logging/static.logger.js +83 -124
- package/dist/handlers/logging/static.logger.js.map +1 -1
- package/dist/handlers/validators.js +8 -25
- package/dist/handlers/validators.js.map +1 -1
- package/dist/index.js +23 -26
- package/dist/index.js.map +1 -1
- package/dist/middleware/authenticate.js +26 -69
- package/dist/middleware/authenticate.js.map +1 -1
- package/dist/middleware/database.js +16 -22
- package/dist/middleware/database.js.map +1 -1
- package/dist/middleware/demo.middleware.js +19 -27
- package/dist/middleware/demo.middleware.js.map +1 -1
- package/dist/middleware/exception.filter.js +109 -133
- package/dist/middleware/exception.filter.js.map +1 -1
- package/dist/middleware/global.middleware.js +28 -47
- package/dist/middleware/global.middleware.js.map +1 -1
- package/dist/middleware/param-converter.middleware.js +31 -69
- package/dist/middleware/param-converter.middleware.js.map +1 -1
- package/dist/middleware/passport.js +38 -64
- package/dist/middleware/passport.js.map +1 -1
- package/dist/middleware/printer-resolver.js +26 -33
- package/dist/middleware/printer-resolver.js.map +1 -1
- package/dist/middleware/printer.js +56 -94
- package/dist/middleware/printer.js.map +1 -1
- package/dist/middleware/slicer-api-key.middleware.js +23 -26
- package/dist/middleware/slicer-api-key.middleware.js.map +1 -1
- package/dist/middleware/socketio.middleware.js +21 -32
- package/dist/middleware/socketio.middleware.js.map +1 -1
- package/dist/migrations/1706829146617-InitSqlite.js +84 -91
- package/dist/migrations/1706829146617-InitSqlite.js.map +1 -1
- package/dist/migrations/1707494762198-PrinterGroup.js +22 -29
- package/dist/migrations/1707494762198-PrinterGroup.js.map +1 -1
- package/dist/migrations/1708465930665-ChangePrintCompletionDeletePrinterCascade.js +26 -33
- package/dist/migrations/1708465930665-ChangePrintCompletionDeletePrinterCascade.js.map +1 -1
- package/dist/migrations/1713300747465-ChangeRoleNameUnique.js +27 -34
- package/dist/migrations/1713300747465-ChangeRoleNameUnique.js.map +1 -1
- package/dist/migrations/1713897879622-AddPrinterType.js +34 -41
- package/dist/migrations/1713897879622-AddPrinterType.js.map +1 -1
- package/dist/migrations/1720338804844-RemovePrinterFile.js +12 -19
- package/dist/migrations/1720338804844-RemovePrinterFile.js.map +1 -1
- package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js +26 -33
- package/dist/migrations/1745141688926-AddPrinterUsernamePassword.js.map +1 -1
- package/dist/migrations/1766576698569-DropPermissions.js +11 -18
- package/dist/migrations/1766576698569-DropPermissions.js.map +1 -1
- package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js +26 -33
- package/dist/migrations/1767278216516-ChangeCameraPrinterOnDeleteSetNull.js.map +1 -1
- package/dist/migrations/1767279607392-DropCustomGcode.js +12 -19
- package/dist/migrations/1767279607392-DropCustomGcode.js.map +1 -1
- package/dist/migrations/1767291804417-DropPrintCompletions.js +12 -19
- package/dist/migrations/1767291804417-DropPrintCompletions.js.map +1 -1
- package/dist/migrations/1767352862576-DropSettingsFileClean.js +18 -25
- package/dist/migrations/1767352862576-DropSettingsFileClean.js.map +1 -1
- package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js +26 -33
- package/dist/migrations/1767355639023-ChangeFloorLevelToOrder.js.map +1 -1
- package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js +18 -25
- package/dist/migrations/1767370191762-ChangeFloorNonUniqueOrder.js.map +1 -1
- package/dist/migrations/1767432108916-RenameGroupToTag.js +22 -29
- package/dist/migrations/1767432108916-RenameGroupToTag.js.map +1 -1
- package/dist/migrations/1767451444137-AddPrintJob.js +20 -27
- package/dist/migrations/1767451444137-AddPrintJob.js.map +1 -1
- package/dist/migrations/1767909428129-AddPrinterMaintenanceLog.js +14 -21
- package/dist/migrations/1767909428129-AddPrinterMaintenanceLog.js.map +1 -1
- package/dist/plugins/controllers-plugin.js +21 -0
- package/dist/plugins/controllers-plugin.js.map +1 -0
- package/dist/server.constants.js +79 -91
- package/dist/server.constants.js.map +1 -1
- package/dist/server.core.js +56 -122
- package/dist/server.core.js.map +1 -1
- package/dist/server.env.js +56 -121
- package/dist/server.env.js.map +1 -1
- package/dist/server.host.js +66 -99
- package/dist/server.host.js.map +1 -1
- package/dist/services/authentication/auth.service.js +103 -126
- package/dist/services/authentication/auth.service.js.map +1 -1
- package/dist/services/authentication/jwt.service.js +23 -32
- package/dist/services/authentication/jwt.service.js.map +1 -1
- package/dist/services/bambu/bambu-ftp.adapter.js +194 -236
- package/dist/services/bambu/bambu-ftp.adapter.js.map +1 -1
- package/dist/services/bambu/bambu-mqtt.adapter.js +394 -449
- package/dist/services/bambu/bambu-mqtt.adapter.js.map +1 -1
- package/dist/services/bambu/bambu.client.js +64 -65
- package/dist/services/bambu/bambu.client.js.map +1 -1
- package/dist/services/bambu/mqtt-message.types.js +1 -6
- package/dist/services/bambu.api.js +230 -247
- package/dist/services/bambu.api.js.map +1 -1
- package/dist/services/core/batch-call.service.js +139 -163
- package/dist/services/core/batch-call.service.js.map +1 -1
- package/dist/services/core/client-bundle.service.js +126 -165
- package/dist/services/core/client-bundle.service.js.map +1 -1
- package/dist/services/core/config.service.js +16 -26
- package/dist/services/core/config.service.js.map +1 -1
- package/dist/services/core/cradle.service.js +11 -19
- package/dist/services/core/cradle.service.js.map +1 -1
- package/dist/services/core/github.service.js +59 -79
- package/dist/services/core/github.service.js.map +1 -1
- package/dist/services/core/http-client.factory.js +30 -38
- package/dist/services/core/http-client.factory.js.map +1 -1
- package/dist/services/core/logs-manager.service.js +61 -84
- package/dist/services/core/logs-manager.service.js.map +1 -1
- package/dist/services/core/monsterpi.service.js +26 -36
- package/dist/services/core/monsterpi.service.js.map +1 -1
- package/dist/services/core/multer.service.js +69 -129
- package/dist/services/core/multer.service.js.map +1 -1
- package/dist/services/core/server-release.service.js +77 -99
- package/dist/services/core/server-release.service.js.map +1 -1
- package/dist/services/core/yaml.service.js +443 -573
- package/dist/services/core/yaml.service.js.map +1 -1
- package/dist/services/file-analysis.service.js +134 -144
- package/dist/services/file-analysis.service.js.map +1 -1
- package/dist/services/file-storage.service.js +324 -423
- package/dist/services/file-storage.service.js.map +1 -1
- package/dist/services/interfaces/auth.service.interface.js +1 -6
- package/dist/services/interfaces/camera-stream.dto.js +23 -41
- package/dist/services/interfaces/camera-stream.dto.js.map +1 -1
- package/dist/services/interfaces/camera-stream.service.interface.js +1 -6
- package/dist/services/interfaces/file-upload-tracker.interface.js +1 -6
- package/dist/services/interfaces/floor.dto.js +31 -55
- package/dist/services/interfaces/floor.dto.js.map +1 -1
- package/dist/services/interfaces/floor.service.interface.js +1 -6
- package/dist/services/interfaces/jwt.service.interface.js +1 -6
- package/dist/services/interfaces/login.dto.js +10 -17
- package/dist/services/interfaces/login.dto.js.map +1 -1
- package/dist/services/interfaces/page.interface.js +5 -12
- package/dist/services/interfaces/page.interface.js.map +1 -1
- package/dist/services/interfaces/permission.service.interface.js +1 -6
- package/dist/services/interfaces/printer-file.dto.js +1 -6
- package/dist/services/interfaces/printer-maintenance-log.dto.js +1 -6
- package/dist/services/interfaces/printer-tag.dto.js +11 -26
- package/dist/services/interfaces/printer-tag.dto.js.map +1 -1
- package/dist/services/interfaces/printer-tag.service.interface.js +1 -6
- package/dist/services/interfaces/printer.dto.js +21 -36
- package/dist/services/interfaces/printer.dto.js.map +1 -1
- package/dist/services/interfaces/printer.service.interface.js +1 -6
- package/dist/services/interfaces/refresh-token.dto.js +9 -16
- package/dist/services/interfaces/refresh-token.dto.js.map +1 -1
- package/dist/services/interfaces/refresh-token.service.interface.js +1 -6
- package/dist/services/interfaces/role-service.interface.js +1 -6
- package/dist/services/interfaces/role.dto.js +7 -14
- package/dist/services/interfaces/role.dto.js.map +1 -1
- package/dist/services/interfaces/settings.dto.js +10 -17
- package/dist/services/interfaces/settings.dto.js.map +1 -1
- package/dist/services/interfaces/settings.service.interface.js +1 -6
- package/dist/services/interfaces/tag.dto.js +1 -6
- package/dist/services/interfaces/task.interfaces.js +1 -6
- package/dist/services/interfaces/user-role.dto.js +9 -16
- package/dist/services/interfaces/user-role.dto.js.map +1 -1
- package/dist/services/interfaces/user-service.interface.js +1 -6
- package/dist/services/interfaces/user.dto.js +22 -37
- package/dist/services/interfaces/user.dto.js.map +1 -1
- package/dist/services/moonraker/constants/moonraker-event.dto.js +16 -31
- package/dist/services/moonraker/constants/moonraker-event.dto.js.map +1 -1
- package/dist/services/moonraker/constants/moonraker.constants.js +4 -11
- package/dist/services/moonraker/constants/moonraker.constants.js.map +1 -1
- package/dist/services/moonraker/dto/access/access-info.dto.js +1 -6
- package/dist/services/moonraker/dto/access/access-login-refresh.dto.js +1 -6
- package/dist/services/moonraker/dto/access/access-login-result.dto.js +1 -6
- package/dist/services/moonraker/dto/access/access-user-result.dto.js +1 -6
- package/dist/services/moonraker/dto/access/access-user.dto.js +1 -6
- package/dist/services/moonraker/dto/database/database-namespace-item.dto.js +1 -6
- package/dist/services/moonraker/dto/database/database-namespace-list.dto.js +1 -6
- package/dist/services/moonraker/dto/gcode-help.dto.js +1 -6
- package/dist/services/moonraker/dto/gcode-store.dto.js +1 -6
- package/dist/services/moonraker/dto/job-queue/enqueue-job.dto.js +1 -6
- package/dist/services/moonraker/dto/job-queue/job-queue-status.dto.js +1 -6
- package/dist/services/moonraker/dto/machine/machine-device-power-device-state.dto.js +1 -6
- package/dist/services/moonraker/dto/machine/machine-device-power-devices.dto.js +1 -6
- package/dist/services/moonraker/dto/machine/machine-peripherals-canbus.dto.js +1 -6
- package/dist/services/moonraker/dto/machine/machine-peripherals-serial.dto.js +1 -6
- package/dist/services/moonraker/dto/machine/machine-peripherals-usb.dto.js +1 -6
- package/dist/services/moonraker/dto/machine/machine-peripherals-video.dto.js +1 -6
- package/dist/services/moonraker/dto/machine/machine-system-info.dto.js +1 -6
- package/dist/services/moonraker/dto/machine/machine-update-status.dto.js +1 -6
- package/dist/services/moonraker/dto/machine/machine-wled-strips.dto.js +1 -6
- package/dist/services/moonraker/dto/notifier-list.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/bed-mesh.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/configfile.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/display-status.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/extruder.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/fan.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/filament-motion-sensor.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/filament-switch-sensor.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/gcode-move.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/gcode.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/heater-bed.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/heaters.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/idle-timeout.dto.js +6 -21
- package/dist/services/moonraker/dto/objects/idle-timeout.dto.js.map +1 -1
- package/dist/services/moonraker/dto/objects/mcu.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/motion-report.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/output-pin.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/pause-resume.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/print-stats.dto.js +9 -24
- package/dist/services/moonraker/dto/objects/print-stats.dto.js.map +1 -1
- package/dist/services/moonraker/dto/objects/printer-object.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/printer-object.types.js +1 -6
- package/dist/services/moonraker/dto/objects/printer-objects-list.dto.js +28 -43
- package/dist/services/moonraker/dto/objects/printer-objects-list.dto.js.map +1 -1
- package/dist/services/moonraker/dto/objects/printer-objects-query.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/stepper-enable.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/system-stats.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/temperature-fan.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/temperature-sensor.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/toolhead.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/virtual-sdcard.dto.js +1 -6
- package/dist/services/moonraker/dto/objects/webhooks.dto.js +1 -6
- package/dist/services/moonraker/dto/octoprint-compat/api-job.dto.js +1 -6
- package/dist/services/moonraker/dto/octoprint-compat/api-login.dto.js +1 -6
- package/dist/services/moonraker/dto/octoprint-compat/api-printer.dto.js +1 -6
- package/dist/services/moonraker/dto/octoprint-compat/api-profiles.dto.js +1 -6
- package/dist/services/moonraker/dto/octoprint-compat/api-settings.dto.js +1 -6
- package/dist/services/moonraker/dto/octoprint-compat/api-version.dto.js +1 -6
- package/dist/services/moonraker/dto/octoprint-compat/server-version.dto.js +1 -6
- package/dist/services/moonraker/dto/printer-info.dto.js +7 -22
- package/dist/services/moonraker/dto/printer-info.dto.js.map +1 -1
- package/dist/services/moonraker/dto/printer-query-endstops.dto.js +1 -6
- package/dist/services/moonraker/dto/process-stats.dto.js +1 -6
- package/dist/services/moonraker/dto/rest/action-result.dto.js +1 -6
- package/dist/services/moonraker/dto/rest/error.dto.js +1 -6
- package/dist/services/moonraker/dto/rest/result.dto.js +6 -13
- package/dist/services/moonraker/dto/rest/result.dto.js.map +1 -1
- package/dist/services/moonraker/dto/rollover-logs.dto.js +1 -6
- package/dist/services/moonraker/dto/rpc/json-rpc-error.dto.js +1 -6
- package/dist/services/moonraker/dto/rpc/json-rpc-request.dto.js +1 -6
- package/dist/services/moonraker/dto/rpc/json-rpc-response.dto.js +1 -6
- package/dist/services/moonraker/dto/server/server-config.dto.js +1 -6
- package/dist/services/moonraker/dto/server/server-info.dto.js +7 -14
- package/dist/services/moonraker/dto/server/server-info.dto.js.map +1 -1
- package/dist/services/moonraker/dto/server-announcements/announcement-action.dto.js +1 -6
- package/dist/services/moonraker/dto/server-announcements/announcement-entry-id.dto.js +1 -6
- package/dist/services/moonraker/dto/server-announcements/announcement-feeds.dto.js +1 -6
- package/dist/services/moonraker/dto/server-announcements/announcement-list.dto.js +1 -6
- package/dist/services/moonraker/dto/server-files/server-file-directory-action.dto.js +1 -6
- package/dist/services/moonraker/dto/server-files/server-file-directory-info.dto.js +1 -6
- package/dist/services/moonraker/dto/server-files/server-file-metadata.dto.js +1 -6
- package/dist/services/moonraker/dto/server-files/server-file-root.dto.js +1 -6
- package/dist/services/moonraker/dto/server-files/server-file-thumbnail.dto.js +1 -6
- package/dist/services/moonraker/dto/server-files/server-file-zip-action.dto.js +1 -6
- package/dist/services/moonraker/dto/server-files/server-file.dto.js +1 -6
- package/dist/services/moonraker/dto/server-history/history-job.dto.js +1 -6
- package/dist/services/moonraker/dto/server-history/history-last-totals.dto.js +1 -6
- package/dist/services/moonraker/dto/server-history/history-list.dto.js +1 -6
- package/dist/services/moonraker/dto/server-history/history-totals.dto.js +1 -6
- package/dist/services/moonraker/dto/server-history/job.dto.js +6 -21
- package/dist/services/moonraker/dto/server-history/job.dto.js.map +1 -1
- package/dist/services/moonraker/dto/server-sensors/sensor-info.dto.js +1 -6
- package/dist/services/moonraker/dto/server-sensors/sensor-list.dto.js +1 -6
- package/dist/services/moonraker/dto/server-sensors/sensor-measurements.dto.js +1 -6
- package/dist/services/moonraker/dto/server-webcams/webcam-item.dto.js +1 -6
- package/dist/services/moonraker/dto/server-webcams/webcam-list.dto.js +1 -6
- package/dist/services/moonraker/dto/server-webcams/webcam-test.dto.js +1 -6
- package/dist/services/moonraker/dto/spoolman/spoolman-active-spool.dto.js +1 -6
- package/dist/services/moonraker/dto/spoolman/spoolman-proxy-request.dto.js +1 -6
- package/dist/services/moonraker/dto/spoolman/spoolman-response.dto.js +1 -6
- package/dist/services/moonraker/dto/spoolman/spoolman-status.dto.js +1 -6
- package/dist/services/moonraker/dto/sudo-info.dto.js +1 -6
- package/dist/services/moonraker/dto/sudo-response.dto.js +1 -6
- package/dist/services/moonraker/dto/temperature-store.dto.js +1 -6
- package/dist/services/moonraker/dto/websocket/connection-identify-response.dto.js +1 -6
- package/dist/services/moonraker/dto/websocket/connection-identify.dto.js +1 -6
- package/dist/services/moonraker/dto/websocket/json-rpc-event.dto.js +1 -6
- package/dist/services/moonraker/dto/websocket/message.types.js +1 -6
- package/dist/services/moonraker/dto/websocket/methods.js +29 -44
- package/dist/services/moonraker/dto/websocket/methods.js.map +1 -1
- package/dist/services/moonraker/dto/websocket/notify-active-spool-set.params.js +1 -6
- package/dist/services/moonraker/dto/websocket/notify-agent-event.params.js +1 -6
- package/dist/services/moonraker/dto/websocket/notify-announcement-update.params.js +1 -6
- package/dist/services/moonraker/dto/websocket/notify-announcement.params.js +1 -6
- package/dist/services/moonraker/dto/websocket/notify-button-event.params.js +1 -6
- package/dist/services/moonraker/dto/websocket/notify-filelist-changed.params.js +11 -18
- package/dist/services/moonraker/dto/websocket/notify-filelist-changed.params.js.map +1 -1
- package/dist/services/moonraker/dto/websocket/notify-history-changed.params.js +1 -6
- package/dist/services/moonraker/dto/websocket/notify-job-queue-changed.params.js +1 -6
- package/dist/services/moonraker/dto/websocket/notify-proc-stat-update.params.js +1 -6
- package/dist/services/moonraker/dto/websocket/notify-sensor-update.params.js +1 -6
- package/dist/services/moonraker/dto/websocket/notify-service-state-changed.params.js +1 -6
- package/dist/services/moonraker/dto/websocket/notify-spoolman-status-changed.js +1 -6
- package/dist/services/moonraker/dto/websocket/notify-sudo-alert.params.js +1 -6
- package/dist/services/moonraker/dto/websocket/notify-update-response.params.js +7 -22
- package/dist/services/moonraker/dto/websocket/notify-update-response.params.js.map +1 -1
- package/dist/services/moonraker/dto/websocket/notify-user-change.params.js +1 -6
- package/dist/services/moonraker/moonraker-websocket.adapter.js +313 -348
- package/dist/services/moonraker/moonraker-websocket.adapter.js.map +1 -1
- package/dist/services/moonraker/moonraker.client.js +536 -559
- package/dist/services/moonraker/moonraker.client.js.map +1 -1
- package/dist/services/moonraker.api.js +167 -192
- package/dist/services/moonraker.api.js.map +1 -1
- package/dist/services/octoprint/constants/firmware-update-settings.constants.js +19 -28
- package/dist/services/octoprint/constants/firmware-update-settings.constants.js.map +1 -1
- package/dist/services/octoprint/constants/octoprint-service.constants.js +3 -30
- package/dist/services/octoprint/constants/octoprint-service.constants.js.map +1 -1
- package/dist/services/octoprint/constants/octoprint-websocket.constants.js +41 -56
- package/dist/services/octoprint/constants/octoprint-websocket.constants.js.map +1 -1
- package/dist/services/octoprint/dto/access/user-list.dto.js +1 -6
- package/dist/services/octoprint/dto/access/user.dto.js +1 -6
- package/dist/services/octoprint/dto/auth/current-user.dto.js +1 -6
- package/dist/services/octoprint/dto/auth/login.dto.js +1 -6
- package/dist/services/octoprint/dto/connection/connection-state.type.js +23 -30
- package/dist/services/octoprint/dto/connection/connection-state.type.js.map +1 -1
- package/dist/services/octoprint/dto/connection/connection.dto.js +1 -6
- package/dist/services/octoprint/dto/events/client-authed.dto.js +1 -6
- package/dist/services/octoprint/dto/events/client-closed.dto.js +1 -6
- package/dist/services/octoprint/dto/events/client-opened.dto.js +1 -6
- package/dist/services/octoprint/dto/events/dwelling.dto.js +1 -6
- package/dist/services/octoprint/dto/events/file-added.dto.js +1 -6
- package/dist/services/octoprint/dto/events/file-deselected.dto.js +1 -6
- package/dist/services/octoprint/dto/events/file-removed.dto.js +1 -6
- package/dist/services/octoprint/dto/events/folder-added.dto.js +1 -6
- package/dist/services/octoprint/dto/events/home.dto.js +1 -6
- package/dist/services/octoprint/dto/events/metadata-analysis-finished.dto.js +1 -6
- package/dist/services/octoprint/dto/events/metadata-analysis-started.dto.js +1 -6
- package/dist/services/octoprint/dto/events/metadata-statistics-updated.dto.js +1 -6
- package/dist/services/octoprint/dto/events/position-update.dto.js +1 -6
- package/dist/services/octoprint/dto/events/print-cancelled.dto.js +1 -6
- package/dist/services/octoprint/dto/events/print-cancelling.dto.js +1 -6
- package/dist/services/octoprint/dto/events/print-done.dto.js +1 -6
- package/dist/services/octoprint/dto/events/print-failed.dto.js +1 -6
- package/dist/services/octoprint/dto/events/print-paused.dto.js +1 -6
- package/dist/services/octoprint/dto/events/print-resumed.dto.js +1 -6
- package/dist/services/octoprint/dto/events/print-started.dto.js +1 -6
- package/dist/services/octoprint/dto/events/printer-state-changed.dto.js +1 -6
- package/dist/services/octoprint/dto/events/transfer-done.dto.js +1 -6
- package/dist/services/octoprint/dto/events/transfer-started.dto.js +1 -6
- package/dist/services/octoprint/dto/events/updated-files.dto.js +1 -6
- package/dist/services/octoprint/dto/events/upload.dto.js +1 -6
- package/dist/services/octoprint/dto/events/user-logged-in.dto.js +1 -6
- package/dist/services/octoprint/dto/events/z-change.dto.js +1 -6
- package/dist/services/octoprint/dto/files/gcode-analysis.dto.js +1 -6
- package/dist/services/octoprint/dto/files/octoprint-file.dto.js +1 -6
- package/dist/services/octoprint/dto/files/octoprint-files-response.dto.js +1 -6
- package/dist/services/octoprint/dto/job/current-job.dto.js +8 -15
- package/dist/services/octoprint/dto/job/current-job.dto.js.map +1 -1
- package/dist/services/octoprint/dto/job/job.dto.js +1 -6
- package/dist/services/octoprint/dto/octoprint-event.dto.js +21 -39
- package/dist/services/octoprint/dto/octoprint-event.dto.js.map +1 -1
- package/dist/services/octoprint/dto/printer/busy-file.dto.js +1 -6
- package/dist/services/octoprint/dto/printer/current-printer-state.dto.js +1 -6
- package/dist/services/octoprint/dto/printer/flags.dto.js +1 -6
- package/dist/services/octoprint/dto/printer/markings.dto.js +1 -6
- package/dist/services/octoprint/dto/printer/progress.dto.js +1 -6
- package/dist/services/octoprint/dto/printer/resends.dto.js +1 -6
- package/dist/services/octoprint/dto/printer/state.dto.js +1 -6
- package/dist/services/octoprint/dto/printer/temps.dto.js +1 -6
- package/dist/services/octoprint/dto/rest/error.dto.js +1 -6
- package/dist/services/octoprint/dto/server/server.dto.js +1 -6
- package/dist/services/octoprint/dto/server/version.dto.js +1 -6
- package/dist/services/octoprint/dto/settings/serial-settings.dto.js +1 -6
- package/dist/services/octoprint/dto/settings/settings-parts.type.js +1 -6
- package/dist/services/octoprint/dto/settings/settings.dto.js +1 -6
- package/dist/services/octoprint/dto/settings/virtual-printer-settings.dto.js +1 -6
- package/dist/services/octoprint/dto/system/system-info.dto.js +32 -39
- package/dist/services/octoprint/dto/system/system-info.dto.js.map +1 -1
- package/dist/services/octoprint/dto/websocket/connection-message.dto.js +1 -6
- package/dist/services/octoprint/dto/websocket/current-message.dto.js +1 -6
- package/dist/services/octoprint/dto/websocket/event-message.dto.js +1 -6
- package/dist/services/octoprint/dto/websocket/event.type.js +42 -49
- package/dist/services/octoprint/dto/websocket/event.type.js.map +1 -1
- package/dist/services/octoprint/dto/websocket/history-message.dto.js +1 -6
- package/dist/services/octoprint/dto/websocket/plugin-message.dto.js +1 -6
- package/dist/services/octoprint/dto/websocket/timelapse-message.dto.js +1 -6
- package/dist/services/octoprint/octoprint-api.routes.js +77 -94
- package/dist/services/octoprint/octoprint-api.routes.js.map +1 -1
- package/dist/services/octoprint/octoprint-websocket.adapter.js +265 -315
- package/dist/services/octoprint/octoprint-websocket.adapter.js.map +1 -1
- package/dist/services/octoprint/octoprint.client.js +220 -261
- package/dist/services/octoprint/octoprint.client.js.map +1 -1
- package/dist/services/octoprint/utils/api.utils.js +15 -32
- package/dist/services/octoprint/utils/api.utils.js.map +1 -1
- package/dist/services/octoprint/utils/file.utils.js +44 -67
- package/dist/services/octoprint/utils/file.utils.js.map +1 -1
- package/dist/services/octoprint/utils/octoprint-http-client.builder.js +16 -29
- package/dist/services/octoprint/utils/octoprint-http-client.builder.js.map +1 -1
- package/dist/services/octoprint.api.js +113 -128
- package/dist/services/octoprint.api.js.map +1 -1
- package/dist/services/orm/base.interface.js +1 -6
- package/dist/services/orm/base.service.js +57 -73
- package/dist/services/orm/base.service.js.map +1 -1
- package/dist/services/orm/camera-stream.service.js +21 -27
- package/dist/services/orm/camera-stream.service.js.map +1 -1
- package/dist/services/orm/floor-position.service.js +42 -49
- package/dist/services/orm/floor-position.service.js.map +1 -1
- package/dist/services/orm/floor.service.js +110 -138
- package/dist/services/orm/floor.service.js.map +1 -1
- package/dist/services/orm/permission.service.js +16 -23
- package/dist/services/orm/permission.service.js.map +1 -1
- package/dist/services/orm/print-job.service.js +443 -545
- package/dist/services/orm/print-job.service.js.map +1 -1
- package/dist/services/orm/printer-maintenance-log.service.js +102 -149
- package/dist/services/orm/printer-maintenance-log.service.js.map +1 -1
- package/dist/services/orm/printer-tag.service.js +93 -118
- package/dist/services/orm/printer-tag.service.js.map +1 -1
- package/dist/services/orm/printer.service.js +110 -158
- package/dist/services/orm/printer.service.js.map +1 -1
- package/dist/services/orm/refresh-token.service.js +69 -99
- package/dist/services/orm/refresh-token.service.js.map +1 -1
- package/dist/services/orm/role.service.js +99 -116
- package/dist/services/orm/role.service.js.map +1 -1
- package/dist/services/orm/settings.service.js +84 -94
- package/dist/services/orm/settings.service.js.map +1 -1
- package/dist/services/orm/user-role.service.js +39 -53
- package/dist/services/orm/user-role.service.js.map +1 -1
- package/dist/services/orm/user.service.js +142 -189
- package/dist/services/orm/user.service.js.map +1 -1
- package/dist/services/print-file-downloader.service.js +153 -167
- package/dist/services/print-file-downloader.service.js.map +1 -1
- package/dist/services/print-queue.service.js +240 -326
- package/dist/services/print-queue.service.js.map +1 -1
- package/dist/services/printer-api.factory.js +26 -43
- package/dist/services/printer-api.factory.js.map +1 -1
- package/dist/services/printer-api.interface.js +23 -53
- package/dist/services/printer-api.interface.js.map +1 -1
- package/dist/services/prusa-link/constants/prusalink-event.dto.js +9 -16
- package/dist/services/prusa-link/constants/prusalink-event.dto.js.map +1 -1
- package/dist/services/prusa-link/constants/prusalink.constants.js +4 -11
- package/dist/services/prusa-link/constants/prusalink.constants.js.map +1 -1
- package/dist/services/prusa-link/dto/file-response.dto.js +1 -6
- package/dist/services/prusa-link/dto/file.dto.js +1 -6
- package/dist/services/prusa-link/dto/job-state.dto.js +1 -6
- package/dist/services/prusa-link/dto/printer-state.dto.js +1 -6
- package/dist/services/prusa-link/dto/status.dto.js +1 -6
- package/dist/services/prusa-link/dto/version.dto.js +1 -6
- package/dist/services/prusa-link/prusa-link-http-polling.adapter.js +141 -157
- package/dist/services/prusa-link/prusa-link-http-polling.adapter.js.map +1 -1
- package/dist/services/prusa-link/prusa-link.api.js +206 -240
- package/dist/services/prusa-link/prusa-link.api.js.map +1 -1
- package/dist/services/prusa-link/utils/digest-auth.params.js +1 -6
- package/dist/services/prusa-link/utils/digest-auth.util.js +17 -24
- package/dist/services/prusa-link/utils/digest-auth.util.js.map +1 -1
- package/dist/services/prusa-link/utils/prusa-link-http-client.builder.js +92 -129
- package/dist/services/prusa-link/utils/prusa-link-http-client.builder.js.map +1 -1
- package/dist/services/socket.factory.js +21 -36
- package/dist/services/socket.factory.js.map +1 -1
- package/dist/services/task-manager.service.js +190 -174
- package/dist/services/task-manager.service.js.map +1 -1
- package/dist/services/typeorm/typeorm.service.js +31 -46
- package/dist/services/typeorm/typeorm.service.js.map +1 -1
- package/dist/services/validators/floor-service.validation.js +26 -63
- package/dist/services/validators/floor-service.validation.js.map +1 -1
- package/dist/services/validators/print-job.validation.js +11 -26
- package/dist/services/validators/print-job.validation.js.map +1 -1
- package/dist/services/validators/printer-maintenance-log.validation.js +17 -37
- package/dist/services/validators/printer-maintenance-log.validation.js.map +1 -1
- package/dist/services/validators/printer-service.validation.js +60 -125
- package/dist/services/validators/printer-service.validation.js.map +1 -1
- package/dist/services/validators/settings-service.validation.js +46 -106
- package/dist/services/validators/settings-service.validation.js.map +1 -1
- package/dist/services/validators/user-service.validation.js +19 -36
- package/dist/services/validators/user-service.validation.js.map +1 -1
- package/dist/services/validators/yaml-service.validation.js +96 -132
- package/dist/services/validators/yaml-service.validation.js.map +1 -1
- package/dist/services/websocket-adapter.interface.js +1 -6
- package/dist/shared/default-http-client.builder.js +74 -92
- package/dist/shared/default-http-client.builder.js.map +1 -1
- package/dist/shared/dtos/api-state.type.js +8 -15
- package/dist/shared/dtos/api-state.type.js.map +1 -1
- package/dist/shared/dtos/socket-login.dto.js +1 -6
- package/dist/shared/dtos/socket-state.type.js +11 -18
- package/dist/shared/dtos/socket-state.type.js.map +1 -1
- package/dist/shared/load-controllers.js +41 -19
- package/dist/shared/load-controllers.js.map +1 -1
- package/dist/shared/runtime-settings.migration.js +43 -50
- package/dist/shared/runtime-settings.migration.js.map +1 -1
- package/dist/shared/websocket-rpc-extended.adapter.js +74 -75
- package/dist/shared/websocket-rpc-extended.adapter.js.map +1 -1
- package/dist/shared/websocket.adapter.js +78 -63
- package/dist/shared/websocket.adapter.js.map +1 -1
- package/dist/state/file-upload-tracker.cache.js +63 -75
- package/dist/state/file-upload-tracker.cache.js.map +1 -1
- package/dist/state/floor.store.js +77 -89
- package/dist/state/floor.store.js.map +1 -1
- package/dist/state/printer-events.cache.js +237 -295
- package/dist/state/printer-events.cache.js.map +1 -1
- package/dist/state/printer-socket.store.js +156 -174
- package/dist/state/printer-socket.store.js.map +1 -1
- package/dist/state/printer-thumbnail.cache.js +129 -130
- package/dist/state/printer-thumbnail.cache.js.map +1 -1
- package/dist/state/printer.cache.js +87 -102
- package/dist/state/printer.cache.js.map +1 -1
- package/dist/state/settings.store.js +211 -234
- package/dist/state/settings.store.js.map +1 -1
- package/dist/state/socket-io.gateway.js +58 -87
- package/dist/state/socket-io.gateway.js.map +1 -1
- package/dist/state/test-printer-socket.store.js +116 -137
- package/dist/state/test-printer-socket.store.js.map +1 -1
- package/dist/state/validation/create-test-printer.validation.js +14 -21
- package/dist/state/validation/create-test-printer.validation.js.map +1 -1
- package/dist/task.presets.js +30 -37
- package/dist/task.presets.js.map +1 -1
- package/dist/tasks/boot.task.js +100 -128
- package/dist/tasks/boot.task.js.map +1 -1
- package/dist/tasks/client-bundle.task.js +20 -28
- package/dist/tasks/client-bundle.task.js.map +1 -1
- package/dist/tasks/print-job-analysis.task.js +88 -113
- package/dist/tasks/print-job-analysis.task.js.map +1 -1
- package/dist/tasks/printer-websocket-restore.task.js +41 -54
- package/dist/tasks/printer-websocket-restore.task.js.map +1 -1
- package/dist/tasks/printer-websocket.task.js +11 -19
- package/dist/tasks/printer-websocket.task.js.map +1 -1
- package/dist/tasks/socketio.task.js +35 -53
- package/dist/tasks/socketio.task.js.map +1 -1
- package/dist/tasks/software-update.task.js +12 -20
- package/dist/tasks/software-update.task.js.map +1 -1
- package/dist/tasks.js +27 -41
- package/dist/tasks.js.map +1 -1
- package/dist/types/express/index.d.js +1 -6
- package/dist/types/virtual-modules.d.js +1 -0
- package/dist/utils/array.util.js +9 -24
- package/dist/utils/array.util.js.map +1 -1
- package/dist/utils/bgcode/bgcode-thumbnail.parser.js +26 -44
- package/dist/utils/bgcode/bgcode-thumbnail.parser.js.map +1 -1
- package/dist/utils/bgcode/bgcode.constants.js +9 -45
- package/dist/utils/bgcode/bgcode.constants.js.map +1 -1
- package/dist/utils/bgcode/bgcode.types.js +57 -106
- package/dist/utils/bgcode/bgcode.types.js.map +1 -1
- package/dist/utils/bgcode/bgcode.utils.js +167 -256
- package/dist/utils/bgcode/bgcode.utils.js.map +1 -1
- package/dist/utils/bgcode/heatshrink-decoder.js +130 -170
- package/dist/utils/bgcode/heatshrink-decoder.js.map +1 -1
- package/dist/utils/bgcode/png-encoder.js +53 -66
- package/dist/utils/bgcode/png-encoder.js.map +1 -1
- package/dist/utils/bgcode/qoi-decoder.js +116 -135
- package/dist/utils/bgcode/qoi-decoder.js.map +1 -1
- package/dist/utils/cache/key-diff.cache.js +56 -85
- package/dist/utils/cache/key-diff.cache.js.map +1 -1
- package/dist/utils/correlation-token.util.js +4 -11
- package/dist/utils/correlation-token.util.js.map +1 -1
- package/dist/utils/crypto.utils.js +7 -23
- package/dist/utils/crypto.utils.js.map +1 -1
- package/dist/utils/env.utils.js +14 -49
- package/dist/utils/env.utils.js.map +1 -1
- package/dist/utils/error.utils.js +4 -11
- package/dist/utils/error.utils.js.map +1 -1
- package/dist/utils/fs.utils.js +26 -49
- package/dist/utils/fs.utils.js.map +1 -1
- package/dist/utils/gcode.utils.js +30 -43
- package/dist/utils/gcode.utils.js.map +1 -1
- package/dist/utils/image-dimensions.js +39 -54
- package/dist/utils/image-dimensions.js.map +1 -1
- package/dist/utils/job-stats.util.js +41 -72
- package/dist/utils/job-stats.util.js.map +1 -1
- package/dist/utils/normalize-url.js +135 -203
- package/dist/utils/normalize-url.js.map +1 -1
- package/dist/utils/parsers/3mf.parser.js +298 -365
- package/dist/utils/parsers/3mf.parser.js.map +1 -1
- package/dist/utils/parsers/bgcode.parser.js +149 -202
- package/dist/utils/parsers/bgcode.parser.js.map +1 -1
- package/dist/utils/parsers/gcode.parser.js +200 -263
- package/dist/utils/parsers/gcode.parser.js.map +1 -1
- package/dist/utils/parsers/parser.types.js +1 -6
- package/dist/utils/pretty-print.utils.js +5 -20
- package/dist/utils/pretty-print.utils.js.map +1 -1
- package/dist/utils/semver.utils.js +10 -26
- package/dist/utils/semver.utils.js.map +1 -1
- package/dist/utils/swagger/decorators.js +14 -32
- package/dist/utils/swagger/decorators.js.map +1 -1
- package/dist/utils/swagger/generator.js +151 -194
- package/dist/utils/swagger/generator.js.map +1 -1
- package/dist/utils/swagger/swagger.js +40 -51
- package/dist/utils/swagger/swagger.js.map +1 -1
- package/dist/utils/thumbnail.util.js +11 -20
- package/dist/utils/thumbnail.util.js.map +1 -1
- package/dist/utils/time.utils.js +4 -12
- package/dist/utils/time.utils.js.map +1 -1
- package/dist/utils/url.utils.js +9 -27
- package/dist/utils/url.utils.js.map +1 -1
- package/package.json +79 -90
- package/packages/consoles/package.json +44 -0
- package/packages/consoles/tsconfig.json +23 -0
- package/packages/consoles/vite.config.ts +15 -0
- package/tsconfig.json +10 -6
- package/vite.config.ts +62 -0
- package/.swcrc +0 -33
- package/.yarn/releases/yarn-4.12.0.cjs +0 -942
- package/biome.json +0 -36
- package/dist/consoles/bambu-mqtt-diagnostic.console.js +0 -565
- package/dist/consoles/bambu-mqtt-diagnostic.console.js.map +0 -1
- package/dist/consoles/download-github-releases.js +0 -50
- package/dist/consoles/download-github-releases.js.map +0 -1
- package/dist/consoles/gcode-scanner-poc.console.js +0 -52
- package/dist/consoles/gcode-scanner-poc.console.js.map +0 -1
- package/dist/consoles/launch-http-servers.js +0 -31
- package/dist/consoles/launch-http-servers.js.map +0 -1
- package/dist/consoles/mock-bambu.server.js +0 -319
- package/dist/consoles/mock-bambu.server.js.map +0 -1
- package/dist/consoles/mock-camera/default-image.js +0 -13
- package/dist/consoles/mock-camera/default-image.js.map +0 -1
- package/dist/consoles/mock-camera/mock-camera.server.js +0 -160
- package/dist/consoles/mock-camera/mock-camera.server.js.map +0 -1
- package/dist/consoles/mock-octoprint.server.js +0 -499
- package/dist/consoles/mock-octoprint.server.js.map +0 -1
- package/dist/consoles/mock-prusalink.server.js +0 -57
- package/dist/consoles/mock-prusalink.server.js.map +0 -1
- package/dist/consoles/moonraker-test.console.js +0 -3
- package/dist/consoles/moonraker-test.console.js.map +0 -1
- package/dist/consoles/utils/api-messages.js +0 -856
- package/dist/consoles/utils/api-messages.js.map +0 -1
- package/dist/consoles/utils/delayed-memory.storage.js +0 -42
- package/dist/consoles/utils/delayed-memory.storage.js.map +0 -1
- package/dist/consoles/utils/ws-messages.js +0 -88
- package/dist/consoles/utils/ws-messages.js.map +0 -1
- package/dist/entities/index.js.map +0 -1
- package/dist/services/bambu/mqtt-message.types.js.map +0 -1
- package/dist/services/interfaces/auth.service.interface.js.map +0 -1
- package/dist/services/interfaces/camera-stream.service.interface.js.map +0 -1
- package/dist/services/interfaces/file-upload-tracker.interface.js.map +0 -1
- package/dist/services/interfaces/floor.service.interface.js.map +0 -1
- package/dist/services/interfaces/jwt.service.interface.js.map +0 -1
- package/dist/services/interfaces/permission.service.interface.js.map +0 -1
- package/dist/services/interfaces/printer-file.dto.js.map +0 -1
- package/dist/services/interfaces/printer-maintenance-log.dto.js.map +0 -1
- package/dist/services/interfaces/printer-tag.service.interface.js.map +0 -1
- package/dist/services/interfaces/printer.service.interface.js.map +0 -1
- package/dist/services/interfaces/refresh-token.service.interface.js.map +0 -1
- package/dist/services/interfaces/role-service.interface.js.map +0 -1
- package/dist/services/interfaces/settings.service.interface.js.map +0 -1
- package/dist/services/interfaces/tag.dto.js.map +0 -1
- package/dist/services/interfaces/task.interfaces.js.map +0 -1
- package/dist/services/interfaces/user-service.interface.js.map +0 -1
- package/dist/services/moonraker/dto/access/access-info.dto.js.map +0 -1
- package/dist/services/moonraker/dto/access/access-login-refresh.dto.js.map +0 -1
- package/dist/services/moonraker/dto/access/access-login-result.dto.js.map +0 -1
- package/dist/services/moonraker/dto/access/access-user-result.dto.js.map +0 -1
- package/dist/services/moonraker/dto/access/access-user.dto.js.map +0 -1
- package/dist/services/moonraker/dto/database/database-namespace-item.dto.js.map +0 -1
- package/dist/services/moonraker/dto/database/database-namespace-list.dto.js.map +0 -1
- package/dist/services/moonraker/dto/gcode-help.dto.js.map +0 -1
- package/dist/services/moonraker/dto/gcode-store.dto.js.map +0 -1
- package/dist/services/moonraker/dto/job-queue/enqueue-job.dto.js.map +0 -1
- package/dist/services/moonraker/dto/job-queue/job-queue-status.dto.js.map +0 -1
- package/dist/services/moonraker/dto/machine/machine-device-power-device-state.dto.js.map +0 -1
- package/dist/services/moonraker/dto/machine/machine-device-power-devices.dto.js.map +0 -1
- package/dist/services/moonraker/dto/machine/machine-peripherals-canbus.dto.js.map +0 -1
- package/dist/services/moonraker/dto/machine/machine-peripherals-serial.dto.js.map +0 -1
- package/dist/services/moonraker/dto/machine/machine-peripherals-usb.dto.js.map +0 -1
- package/dist/services/moonraker/dto/machine/machine-peripherals-video.dto.js.map +0 -1
- package/dist/services/moonraker/dto/machine/machine-system-info.dto.js.map +0 -1
- package/dist/services/moonraker/dto/machine/machine-update-status.dto.js.map +0 -1
- package/dist/services/moonraker/dto/machine/machine-wled-strips.dto.js.map +0 -1
- package/dist/services/moonraker/dto/notifier-list.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/bed-mesh.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/configfile.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/display-status.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/extruder.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/fan.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/filament-motion-sensor.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/filament-switch-sensor.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/gcode-move.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/gcode.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/heater-bed.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/heaters.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/mcu.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/motion-report.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/output-pin.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/pause-resume.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/printer-object.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/printer-object.types.js.map +0 -1
- package/dist/services/moonraker/dto/objects/printer-objects-query.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/stepper-enable.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/system-stats.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/temperature-fan.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/temperature-sensor.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/toolhead.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/virtual-sdcard.dto.js.map +0 -1
- package/dist/services/moonraker/dto/objects/webhooks.dto.js.map +0 -1
- package/dist/services/moonraker/dto/octoprint-compat/api-job.dto.js.map +0 -1
- package/dist/services/moonraker/dto/octoprint-compat/api-login.dto.js.map +0 -1
- package/dist/services/moonraker/dto/octoprint-compat/api-printer.dto.js.map +0 -1
- package/dist/services/moonraker/dto/octoprint-compat/api-profiles.dto.js.map +0 -1
- package/dist/services/moonraker/dto/octoprint-compat/api-settings.dto.js.map +0 -1
- package/dist/services/moonraker/dto/octoprint-compat/api-version.dto.js.map +0 -1
- package/dist/services/moonraker/dto/octoprint-compat/server-version.dto.js.map +0 -1
- package/dist/services/moonraker/dto/printer-query-endstops.dto.js.map +0 -1
- package/dist/services/moonraker/dto/process-stats.dto.js.map +0 -1
- package/dist/services/moonraker/dto/rest/action-result.dto.js.map +0 -1
- package/dist/services/moonraker/dto/rest/error.dto.js.map +0 -1
- package/dist/services/moonraker/dto/rollover-logs.dto.js.map +0 -1
- package/dist/services/moonraker/dto/rpc/json-rpc-error.dto.js.map +0 -1
- package/dist/services/moonraker/dto/rpc/json-rpc-request.dto.js.map +0 -1
- package/dist/services/moonraker/dto/rpc/json-rpc-response.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server/server-config.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-announcements/announcement-action.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-announcements/announcement-entry-id.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-announcements/announcement-feeds.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-announcements/announcement-list.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-files/server-file-directory-action.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-files/server-file-directory-info.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-files/server-file-metadata.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-files/server-file-root.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-files/server-file-thumbnail.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-files/server-file-zip-action.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-files/server-file.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-history/history-job.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-history/history-last-totals.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-history/history-list.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-history/history-totals.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-sensors/sensor-info.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-sensors/sensor-list.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-sensors/sensor-measurements.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-webcams/webcam-item.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-webcams/webcam-list.dto.js.map +0 -1
- package/dist/services/moonraker/dto/server-webcams/webcam-test.dto.js.map +0 -1
- package/dist/services/moonraker/dto/spoolman/spoolman-active-spool.dto.js.map +0 -1
- package/dist/services/moonraker/dto/spoolman/spoolman-proxy-request.dto.js.map +0 -1
- package/dist/services/moonraker/dto/spoolman/spoolman-response.dto.js.map +0 -1
- package/dist/services/moonraker/dto/spoolman/spoolman-status.dto.js.map +0 -1
- package/dist/services/moonraker/dto/sudo-info.dto.js.map +0 -1
- package/dist/services/moonraker/dto/sudo-response.dto.js.map +0 -1
- package/dist/services/moonraker/dto/temperature-store.dto.js.map +0 -1
- package/dist/services/moonraker/dto/websocket/connection-identify-response.dto.js.map +0 -1
- package/dist/services/moonraker/dto/websocket/connection-identify.dto.js.map +0 -1
- package/dist/services/moonraker/dto/websocket/json-rpc-event.dto.js.map +0 -1
- package/dist/services/moonraker/dto/websocket/message.types.js.map +0 -1
- package/dist/services/moonraker/dto/websocket/notify-active-spool-set.params.js.map +0 -1
- package/dist/services/moonraker/dto/websocket/notify-agent-event.params.js.map +0 -1
- package/dist/services/moonraker/dto/websocket/notify-announcement-update.params.js.map +0 -1
- package/dist/services/moonraker/dto/websocket/notify-announcement.params.js.map +0 -1
- package/dist/services/moonraker/dto/websocket/notify-button-event.params.js.map +0 -1
- package/dist/services/moonraker/dto/websocket/notify-history-changed.params.js.map +0 -1
- package/dist/services/moonraker/dto/websocket/notify-job-queue-changed.params.js.map +0 -1
- package/dist/services/moonraker/dto/websocket/notify-proc-stat-update.params.js.map +0 -1
- package/dist/services/moonraker/dto/websocket/notify-sensor-update.params.js.map +0 -1
- package/dist/services/moonraker/dto/websocket/notify-service-state-changed.params.js.map +0 -1
- package/dist/services/moonraker/dto/websocket/notify-spoolman-status-changed.js.map +0 -1
- package/dist/services/moonraker/dto/websocket/notify-sudo-alert.params.js.map +0 -1
- package/dist/services/moonraker/dto/websocket/notify-user-change.params.js.map +0 -1
- package/dist/services/octoprint/dto/access/user-list.dto.js.map +0 -1
- package/dist/services/octoprint/dto/access/user.dto.js.map +0 -1
- package/dist/services/octoprint/dto/auth/current-user.dto.js.map +0 -1
- package/dist/services/octoprint/dto/auth/login.dto.js.map +0 -1
- package/dist/services/octoprint/dto/connection/connection.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/client-authed.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/client-closed.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/client-opened.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/dwelling.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/file-added.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/file-deselected.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/file-removed.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/folder-added.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/home.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/metadata-analysis-finished.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/metadata-analysis-started.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/metadata-statistics-updated.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/position-update.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/print-cancelled.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/print-cancelling.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/print-done.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/print-failed.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/print-paused.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/print-resumed.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/print-started.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/printer-state-changed.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/transfer-done.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/transfer-started.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/updated-files.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/upload.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/user-logged-in.dto.js.map +0 -1
- package/dist/services/octoprint/dto/events/z-change.dto.js.map +0 -1
- package/dist/services/octoprint/dto/files/gcode-analysis.dto.js.map +0 -1
- package/dist/services/octoprint/dto/files/octoprint-file.dto.js.map +0 -1
- package/dist/services/octoprint/dto/files/octoprint-files-response.dto.js.map +0 -1
- package/dist/services/octoprint/dto/job/job.dto.js.map +0 -1
- package/dist/services/octoprint/dto/printer/busy-file.dto.js.map +0 -1
- package/dist/services/octoprint/dto/printer/current-printer-state.dto.js.map +0 -1
- package/dist/services/octoprint/dto/printer/flags.dto.js.map +0 -1
- package/dist/services/octoprint/dto/printer/markings.dto.js.map +0 -1
- package/dist/services/octoprint/dto/printer/progress.dto.js.map +0 -1
- package/dist/services/octoprint/dto/printer/resends.dto.js.map +0 -1
- package/dist/services/octoprint/dto/printer/state.dto.js.map +0 -1
- package/dist/services/octoprint/dto/printer/temps.dto.js.map +0 -1
- package/dist/services/octoprint/dto/rest/error.dto.js.map +0 -1
- package/dist/services/octoprint/dto/server/server.dto.js.map +0 -1
- package/dist/services/octoprint/dto/server/version.dto.js.map +0 -1
- package/dist/services/octoprint/dto/settings/serial-settings.dto.js.map +0 -1
- package/dist/services/octoprint/dto/settings/settings-parts.type.js.map +0 -1
- package/dist/services/octoprint/dto/settings/settings.dto.js.map +0 -1
- package/dist/services/octoprint/dto/settings/virtual-printer-settings.dto.js.map +0 -1
- package/dist/services/octoprint/dto/websocket/connection-message.dto.js.map +0 -1
- package/dist/services/octoprint/dto/websocket/current-message.dto.js.map +0 -1
- package/dist/services/octoprint/dto/websocket/event-message.dto.js.map +0 -1
- package/dist/services/octoprint/dto/websocket/history-message.dto.js.map +0 -1
- package/dist/services/octoprint/dto/websocket/plugin-message.dto.js.map +0 -1
- package/dist/services/octoprint/dto/websocket/timelapse-message.dto.js.map +0 -1
- package/dist/services/orm/base.interface.js.map +0 -1
- package/dist/services/prusa-link/dto/file-response.dto.js.map +0 -1
- package/dist/services/prusa-link/dto/file.dto.js.map +0 -1
- package/dist/services/prusa-link/dto/job-state.dto.js.map +0 -1
- package/dist/services/prusa-link/dto/printer-state.dto.js.map +0 -1
- package/dist/services/prusa-link/dto/status.dto.js.map +0 -1
- package/dist/services/prusa-link/dto/version.dto.js.map +0 -1
- package/dist/services/prusa-link/utils/digest-auth.params.js.map +0 -1
- package/dist/services/websocket-adapter.interface.js.map +0 -1
- package/dist/shared/dtos/socket-login.dto.js.map +0 -1
- package/dist/types/express/index.d.js.map +0 -1
- package/dist/utils/parsers/parser.types.js.map +0 -1
|
@@ -1,39 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
get API_METADATA_KEY () {
|
|
13
|
-
return API_METADATA_KEY;
|
|
14
|
-
},
|
|
15
|
-
get ApiOperation () {
|
|
16
|
-
return ApiOperation;
|
|
17
|
-
},
|
|
18
|
-
get ApiProperty () {
|
|
19
|
-
return ApiProperty;
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
require("reflect-metadata");
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
//#region src/utils/swagger/decorators.ts
|
|
23
3
|
const API_METADATA_KEY = "Router Config";
|
|
24
4
|
function ApiProperty(options = {}) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
5
|
+
return function(target, propertyKey) {
|
|
6
|
+
const metadata = Reflect.getMetadata("Router Config", target.constructor) || {};
|
|
7
|
+
metadata[propertyKey] = options;
|
|
8
|
+
Reflect.defineMetadata(API_METADATA_KEY, metadata, target.constructor);
|
|
9
|
+
};
|
|
30
10
|
}
|
|
31
11
|
function ApiOperation(options = {}) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
12
|
+
return function(target, propertyKey, descriptor) {
|
|
13
|
+
const metadata = Reflect.getMetadata("Router Config", target.constructor) || {};
|
|
14
|
+
metadata[`${propertyKey}:operation`] = options;
|
|
15
|
+
Reflect.defineMetadata(API_METADATA_KEY, metadata, target.constructor);
|
|
16
|
+
};
|
|
37
17
|
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { API_METADATA_KEY, ApiOperation, ApiProperty };
|
|
38
20
|
|
|
39
21
|
//# sourceMappingURL=decorators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/swagger/decorators.ts"],"
|
|
1
|
+
{"version":3,"file":"decorators.js","names":[],"sources":["../../../src/utils/swagger/decorators.ts"],"sourcesContent":["// src/decorators/api.decorator.ts\nimport \"reflect-metadata\";\n\nexport const API_METADATA_KEY = \"Router Config\";\n\nexport interface ApiPropertyOptions {\n description?: string;\n required?: boolean;\n type?: any;\n isArray?: boolean;\n example?: any;\n}\n\nexport interface ApiOperationOptions {\n summary?: string;\n description?: string;\n responses?: Record<string, any>;\n}\n\nexport function ApiProperty(options: ApiPropertyOptions = {}) {\n return function (target: any, propertyKey: string) {\n const metadata = Reflect.getMetadata(API_METADATA_KEY, target.constructor) || {};\n metadata[propertyKey] = options;\n Reflect.defineMetadata(API_METADATA_KEY, metadata, target.constructor);\n };\n}\n\nexport function ApiOperation(options: ApiOperationOptions = {}) {\n return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n const metadata = Reflect.getMetadata(API_METADATA_KEY, target.constructor) || {};\n metadata[`${propertyKey}:operation`] = options;\n Reflect.defineMetadata(API_METADATA_KEY, metadata, target.constructor);\n };\n}\n"],"mappings":";;AAGA,MAAa,mBAAmB;AAgBhC,SAAgB,YAAY,UAA8B,EAAE,EAAE;AAC5D,QAAO,SAAU,QAAa,aAAqB;EACjD,MAAM,WAAW,QAAQ,YAAA,iBAA8B,OAAO,YAAY,IAAI,EAAE;AAChF,WAAS,eAAe;AACxB,UAAQ,eAAe,kBAAkB,UAAU,OAAO,YAAY;;;AAI1E,SAAgB,aAAa,UAA+B,EAAE,EAAE;AAC9D,QAAO,SAAU,QAAa,aAAqB,YAAgC;EACjF,MAAM,WAAW,QAAQ,YAAA,iBAA8B,OAAO,YAAY,IAAI,EAAE;AAChF,WAAS,GAAG,YAAY,eAAe;AACvC,UAAQ,eAAe,kBAAkB,UAAU,OAAO,YAAY"}
|
|
@@ -1,196 +1,153 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
return params;
|
|
153
|
-
}
|
|
154
|
-
processParameterTypes(types) {
|
|
155
|
-
return types.map((type)=>this.createParameterDefinition(type));
|
|
156
|
-
}
|
|
157
|
-
processReturnType(type) {
|
|
158
|
-
return this.createSchemaDefinition(type);
|
|
159
|
-
}
|
|
160
|
-
createSchemaDefinition(type) {
|
|
161
|
-
return {
|
|
162
|
-
type: "object",
|
|
163
|
-
properties: this.getTypeProperties(type)
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
createParameterDefinition(type) {
|
|
167
|
-
return {
|
|
168
|
-
in: "body",
|
|
169
|
-
schema: this.createSchemaDefinition(type)
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
getTypeProperties(type) {
|
|
173
|
-
const properties = {};
|
|
174
|
-
const metadata = Reflect.getMetadata(_decorators.API_METADATA_KEY, type) || {};
|
|
175
|
-
Object.keys(metadata).forEach((key)=>{
|
|
176
|
-
properties[key] = {
|
|
177
|
-
type: this.getPropertyType(metadata[key].type),
|
|
178
|
-
description: metadata[key].description,
|
|
179
|
-
example: metadata[key].example
|
|
180
|
-
};
|
|
181
|
-
});
|
|
182
|
-
return properties;
|
|
183
|
-
}
|
|
184
|
-
getPropertyType(type) {
|
|
185
|
-
const typeMap = {
|
|
186
|
-
String: "string",
|
|
187
|
-
Number: "number",
|
|
188
|
-
Boolean: "boolean",
|
|
189
|
-
Object: "object",
|
|
190
|
-
Array: "array"
|
|
191
|
-
};
|
|
192
|
-
return typeMap[type?.name] || "string";
|
|
193
|
-
}
|
|
194
|
-
}
|
|
1
|
+
import { getDirname } from "../fs.utils.js";
|
|
2
|
+
import { API_METADATA_KEY } from "./decorators.js";
|
|
3
|
+
import { findControllers } from "awilix-express";
|
|
4
|
+
//#region src/utils/swagger/generator.ts
|
|
5
|
+
var SwaggerGenerator = class {
|
|
6
|
+
logger;
|
|
7
|
+
constructor(logger) {
|
|
8
|
+
this.logger = logger;
|
|
9
|
+
}
|
|
10
|
+
openApiDoc = {
|
|
11
|
+
openapi: "3.1.0",
|
|
12
|
+
info: {
|
|
13
|
+
title: "FDM Monster API",
|
|
14
|
+
version: process.env.npm_package_version || "2.0.0",
|
|
15
|
+
description: "FDM Monster is a bulk OctoPrint, Klipper, PrusaLink and BambuLab manager to set up, configure and monitor 3D printers. Our aim is to provide neat overview over your farm.",
|
|
16
|
+
license: {
|
|
17
|
+
name: "AGPL-3.0-or-later",
|
|
18
|
+
url: "https://www.gnu.org/licenses/agpl-3.0.en.html"
|
|
19
|
+
},
|
|
20
|
+
contact: {
|
|
21
|
+
name: "FDM Monster GitHub",
|
|
22
|
+
url: "https://github.com/fdm-monster/fdm-monster"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
servers: [{
|
|
26
|
+
url: "/api",
|
|
27
|
+
description: "API Server"
|
|
28
|
+
}],
|
|
29
|
+
paths: {},
|
|
30
|
+
components: {
|
|
31
|
+
schemas: {},
|
|
32
|
+
securitySchemes: { bearerAuth: {
|
|
33
|
+
type: "http",
|
|
34
|
+
scheme: "bearer",
|
|
35
|
+
bearerFormat: "JWT",
|
|
36
|
+
description: "Enter your JWT token"
|
|
37
|
+
} }
|
|
38
|
+
},
|
|
39
|
+
security: [{ bearerAuth: [] }]
|
|
40
|
+
};
|
|
41
|
+
async generate() {
|
|
42
|
+
try {
|
|
43
|
+
const discoveredControllers = await findControllers(`../../controllers/*.controller.js`, {
|
|
44
|
+
cwd: getDirname(import.meta.url),
|
|
45
|
+
ignore: ["**/*.map", "**/*.d.ts"],
|
|
46
|
+
absolute: true,
|
|
47
|
+
esModules: true
|
|
48
|
+
});
|
|
49
|
+
for (const registration of discoveredControllers) await this.processController(registration);
|
|
50
|
+
this.logger.log(`Generated OpenAPI spec with ${Object.keys(this.openApiDoc.paths || {}).length} paths`);
|
|
51
|
+
} catch (error) {
|
|
52
|
+
this.logger.error("Failed to generate swagger specification", error);
|
|
53
|
+
}
|
|
54
|
+
return this.openApiDoc;
|
|
55
|
+
}
|
|
56
|
+
async processController(prototype) {
|
|
57
|
+
for (const [methodName, methodConfig] of prototype.state.methods) if (methodConfig.paths.length > 0) await this.processMethod(prototype, prototype.state.root, methodName, methodConfig);
|
|
58
|
+
}
|
|
59
|
+
async processMethod(controller, root, methodName, methodConfig) {
|
|
60
|
+
if (!methodName) return;
|
|
61
|
+
const method = methodName.toString();
|
|
62
|
+
const name = method.toLowerCase();
|
|
63
|
+
for (let methodPath of methodConfig.paths) {
|
|
64
|
+
methodPath = root.paths[0] + methodPath;
|
|
65
|
+
methodPath = methodPath.replaceAll(/:([a-zA-Z0-9_]+)/g, "{$1}");
|
|
66
|
+
const metadata = Reflect.getMetadata(API_METADATA_KEY, controller.target);
|
|
67
|
+
for (const verb of methodConfig.verbs) {
|
|
68
|
+
const key = `${name}:operation`;
|
|
69
|
+
const description = metadata?.hasOwnProperty(key) ? metadata[key] : null;
|
|
70
|
+
const httpMethod = verb.toLowerCase();
|
|
71
|
+
const operationObject = {
|
|
72
|
+
tags: [controller.target.name],
|
|
73
|
+
summary: description?.summary ?? method,
|
|
74
|
+
description: description?.description ?? "",
|
|
75
|
+
responses: description?.responses ?? { "200": { description: "Successful response" } }
|
|
76
|
+
};
|
|
77
|
+
operationObject.parameters = this.extractPathParameters(methodPath);
|
|
78
|
+
const paramTypes = Reflect.getMetadata("design:paramtypes", controller.target, name);
|
|
79
|
+
const returnType = Reflect.getMetadata("design:returntype", controller.target, name);
|
|
80
|
+
if (paramTypes) {
|
|
81
|
+
const additionalParams = this.processParameterTypes(paramTypes);
|
|
82
|
+
operationObject.parameters = [...operationObject.parameters, ...additionalParams];
|
|
83
|
+
}
|
|
84
|
+
if (returnType && operationObject.responses?.["200"]) operationObject.responses["200"].content = { "application/json": { schema: this.processReturnType(returnType) } };
|
|
85
|
+
const operation = { [httpMethod]: operationObject };
|
|
86
|
+
this.openApiDoc.paths ??= {};
|
|
87
|
+
this.openApiDoc.paths[methodPath] = {
|
|
88
|
+
...this.openApiDoc.paths[methodPath],
|
|
89
|
+
...operation
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
extractPathParameters(path) {
|
|
95
|
+
const paramRegex = /\{([a-zA-Z0-9_]+)\}/g;
|
|
96
|
+
const params = [];
|
|
97
|
+
let match;
|
|
98
|
+
while ((match = paramRegex.exec(path)) !== null) {
|
|
99
|
+
const paramName = match[1];
|
|
100
|
+
params.push({
|
|
101
|
+
name: paramName,
|
|
102
|
+
in: "path",
|
|
103
|
+
required: true,
|
|
104
|
+
schema: { type: "string" },
|
|
105
|
+
description: `The ${paramName} parameter`
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
return params;
|
|
109
|
+
}
|
|
110
|
+
processParameterTypes(types) {
|
|
111
|
+
return types.map((type) => this.createParameterDefinition(type));
|
|
112
|
+
}
|
|
113
|
+
processReturnType(type) {
|
|
114
|
+
return this.createSchemaDefinition(type);
|
|
115
|
+
}
|
|
116
|
+
createSchemaDefinition(type) {
|
|
117
|
+
return {
|
|
118
|
+
type: "object",
|
|
119
|
+
properties: this.getTypeProperties(type)
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
createParameterDefinition(type) {
|
|
123
|
+
return {
|
|
124
|
+
in: "body",
|
|
125
|
+
schema: this.createSchemaDefinition(type)
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
getTypeProperties(type) {
|
|
129
|
+
const properties = {};
|
|
130
|
+
const metadata = Reflect.getMetadata("Router Config", type) || {};
|
|
131
|
+
Object.keys(metadata).forEach((key) => {
|
|
132
|
+
properties[key] = {
|
|
133
|
+
type: this.getPropertyType(metadata[key].type),
|
|
134
|
+
description: metadata[key].description,
|
|
135
|
+
example: metadata[key].example
|
|
136
|
+
};
|
|
137
|
+
});
|
|
138
|
+
return properties;
|
|
139
|
+
}
|
|
140
|
+
getPropertyType(type) {
|
|
141
|
+
return {
|
|
142
|
+
String: "string",
|
|
143
|
+
Number: "number",
|
|
144
|
+
Boolean: "boolean",
|
|
145
|
+
Object: "object",
|
|
146
|
+
Array: "array"
|
|
147
|
+
}[type?.name] || "string";
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
//#endregion
|
|
151
|
+
export { SwaggerGenerator };
|
|
195
152
|
|
|
196
153
|
//# sourceMappingURL=generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/swagger/generator.ts"],"names":["SwaggerGenerator","logger","openApiDoc","openapi","info","title","version","process","env","npm_package_version","description","license","name","url","contact","servers","paths","components","schemas","securitySchemes","bearerAuth","type","scheme","bearerFormat","security","generate","routePath","discoveredControllers","findControllers","cwd","__dirname","ignore","absolute","registration","processController","log","Object","keys","length","error","prototype","methodName","methodConfig","state","methods","processMethod","root","controller","method","toString","toLowerCase","methodPath","replaceAll","metadata","Reflect","getMetadata","API_METADATA_KEY","target","verb","verbs","key","hasOwnProperty","httpMethod","operationObject","tags","summary","responses","parameters","extractPathParameters","paramTypes","returnType","additionalParams","processParameterTypes","content","schema","processReturnType","operation","path","paramRegex","params","match","exec","paramName","push","in","required","types","map","createParameterDefinition","createSchemaDefinition","properties","getTypeProperties","forEach","getPropertyType","example","typeMap","String","Number","Boolean","Array"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generator.js","names":[],"sources":["../../../src/utils/swagger/generator.ts"],"sourcesContent":["import { OpenAPIObject, PathItemObject, SchemaObject } from \"openapi3-ts/oas31\";\nimport { API_METADATA_KEY } from \"@/utils/swagger/decorators\";\nimport { findControllers, FindControllersResult } from \"awilix-express\";\nimport { MethodName, type IRouteConfig } from \"awilix-router-core/lib/state-util\";\nimport { LoggerService } from \"@/handlers/logger\";\nimport { getDirname } from \"@/utils/fs.utils\";\n\nexport class SwaggerGenerator {\n private readonly logger: LoggerService;\n\n constructor(logger: LoggerService) {\n this.logger = logger;\n }\n private readonly openApiDoc: OpenAPIObject = {\n openapi: \"3.1.0\",\n info: {\n title: \"FDM Monster API\",\n version: process.env.npm_package_version || \"2.0.0\",\n description:\n \"FDM Monster is a bulk OctoPrint, Klipper, PrusaLink and BambuLab manager to set up, configure and monitor 3D printers. Our aim is to provide neat overview over your farm.\",\n license: {\n name: \"AGPL-3.0-or-later\",\n url: \"https://www.gnu.org/licenses/agpl-3.0.en.html\",\n },\n contact: {\n name: \"FDM Monster GitHub\",\n url: \"https://github.com/fdm-monster/fdm-monster\",\n },\n },\n servers: [\n {\n url: \"/api\",\n description: \"API Server\",\n },\n ],\n paths: {},\n components: {\n schemas: {},\n securitySchemes: {\n bearerAuth: {\n type: \"http\",\n scheme: \"bearer\",\n bearerFormat: \"JWT\",\n description: \"Enter your JWT token\",\n },\n },\n },\n security: [\n {\n bearerAuth: [],\n },\n ],\n };\n\n public async generate(): Promise<OpenAPIObject> {\n try {\n const routePath = \"../../controllers\";\n const discoveredControllers = await findControllers(`${routePath}/*.controller.js`, {\n cwd: getDirname(import.meta.url),\n ignore: [\"**/*.map\", \"**/*.d.ts\"],\n absolute: true,\n esModules: true,\n });\n for (const registration of discoveredControllers) {\n await this.processController(registration);\n }\n this.logger.log(`Generated OpenAPI spec with ${Object.keys(this.openApiDoc.paths || {}).length} paths`);\n } catch (error) {\n this.logger.error(\"Failed to generate swagger specification\", error);\n }\n\n return this.openApiDoc;\n }\n\n private async processController(prototype: Awaited<FindControllersResult>[number]) {\n for (const [methodName, methodConfig] of prototype.state.methods) {\n if (methodConfig.paths.length > 0) {\n await this.processMethod(prototype, prototype.state.root, methodName, methodConfig);\n }\n }\n }\n\n private async processMethod(\n controller: Awaited<FindControllersResult>[number],\n root: IRouteConfig,\n methodName: MethodName,\n methodConfig: IRouteConfig,\n ) {\n if (!methodName) return;\n\n const method = methodName.toString();\n const name = method.toLowerCase();\n for (let methodPath of methodConfig.paths) {\n methodPath = root.paths[0] + methodPath;\n // Convert Express path format (:id) to OpenAPI format ({id})\n methodPath = methodPath.replaceAll(/:([a-zA-Z0-9_]+)/g, \"{$1}\");\n\n const metadata = Reflect.getMetadata(API_METADATA_KEY, controller.target);\n for (const verb of methodConfig.verbs) {\n const key = `${name}:operation`;\n const description = metadata?.hasOwnProperty(key) ? metadata[key] : null;\n\n const httpMethod = verb.toLowerCase() as\n | \"get\"\n | \"post\"\n | \"put\"\n | \"delete\"\n | \"patch\"\n | \"options\"\n | \"head\"\n | \"trace\";\n\n const operationObject = {\n tags: [controller.target.name],\n summary: description?.summary ?? method,\n description: description?.description ?? \"\",\n responses: description?.responses ?? {\n \"200\": {\n description: \"Successful response\",\n },\n },\n } as any;\n\n // Extract path parameters from the path (e.g., {id}, {userId}, etc.)\n operationObject.parameters = this.extractPathParameters(methodPath);\n\n // Process method parameters and response type\n const paramTypes = Reflect.getMetadata(\"design:paramtypes\", controller.target, name);\n const returnType = Reflect.getMetadata(\"design:returntype\", controller.target, name);\n\n if (paramTypes) {\n const additionalParams = this.processParameterTypes(paramTypes);\n operationObject.parameters = [...operationObject.parameters, ...additionalParams];\n }\n\n if (returnType && operationObject.responses?.[\"200\"]) {\n operationObject.responses[\"200\"].content = {\n \"application/json\": {\n schema: this.processReturnType(returnType),\n },\n };\n }\n\n const operation: PathItemObject = {\n [httpMethod]: operationObject,\n };\n\n this.openApiDoc.paths ??= {};\n\n this.openApiDoc.paths[methodPath] = {\n ...this.openApiDoc.paths[methodPath],\n ...operation,\n };\n }\n }\n }\n\n private extractPathParameters(path: string): any[] {\n const paramRegex = /\\{([a-zA-Z0-9_]+)\\}/g;\n const params: any[] = [];\n let match;\n\n while ((match = paramRegex.exec(path)) !== null) {\n const paramName = match[1];\n params.push({\n name: paramName,\n in: \"path\",\n required: true,\n schema: {\n type: \"string\",\n },\n description: `The ${paramName} parameter`,\n });\n }\n\n return params;\n }\n\n private processParameterTypes(types: any[]): any[] {\n return types.map((type) => this.createParameterDefinition(type));\n }\n\n private processReturnType(type: any): SchemaObject {\n return this.createSchemaDefinition(type);\n }\n\n private createSchemaDefinition(type: any): SchemaObject {\n // Implementation for creating OpenAPI schema from TypeScript type\n // This is a simplified version - you'll want to expand this\n return {\n type: \"object\",\n properties: this.getTypeProperties(type),\n };\n }\n\n private createParameterDefinition(type: any): any {\n // Implementation for creating parameter definitions\n return {\n in: \"body\",\n schema: this.createSchemaDefinition(type),\n };\n }\n\n private getTypeProperties(type: any): Record<string, any> {\n const properties: Record<string, any> = {};\n const metadata = Reflect.getMetadata(API_METADATA_KEY, type) || {};\n\n Object.keys(metadata).forEach((key) => {\n properties[key] = {\n type: this.getPropertyType(metadata[key].type),\n description: metadata[key].description,\n example: metadata[key].example,\n };\n });\n\n return properties;\n }\n\n private getPropertyType(type: any): string {\n const typeMap: Record<string, string> = {\n String: \"string\",\n Number: \"number\",\n Boolean: \"boolean\",\n Object: \"object\",\n Array: \"array\",\n };\n\n return typeMap[type?.name] || \"string\";\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,28 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _generator = require("./generator");
|
|
12
|
-
const _express = require("express");
|
|
13
|
-
const _nodepath = require("node:path");
|
|
14
|
-
const _serverconstants = require("../../server.constants");
|
|
15
|
-
const _fsutils = require("../fs.utils");
|
|
16
|
-
const _promises = require("node:fs/promises");
|
|
1
|
+
import { AppConstants } from "../../server.constants.js";
|
|
2
|
+
import { ensureDirExists, getMediaPath } from "../fs.utils.js";
|
|
3
|
+
import { SwaggerGenerator } from "./generator.js";
|
|
4
|
+
import { dirname, join } from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
import { static as static$1 } from "express";
|
|
7
|
+
import { writeFile } from "node:fs/promises";
|
|
8
|
+
//#region src/utils/swagger/swagger.ts
|
|
17
9
|
function getSwaggerUiDistPath() {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
10
|
+
try {
|
|
11
|
+
return dirname(fileURLToPath(import.meta.resolve("swagger-ui-dist/package.json")));
|
|
12
|
+
} catch {
|
|
13
|
+
return join(process.cwd(), "node_modules", "swagger-ui-dist");
|
|
14
|
+
}
|
|
23
15
|
}
|
|
24
16
|
function generateSwaggerHTML() {
|
|
25
|
-
|
|
17
|
+
return `
|
|
26
18
|
<!DOCTYPE html>
|
|
27
19
|
<html lang="en">
|
|
28
20
|
<head>
|
|
@@ -38,8 +30,8 @@ function generateSwaggerHTML() {
|
|
|
38
30
|
</head>
|
|
39
31
|
<body>
|
|
40
32
|
<div id="swagger-ui"></div>
|
|
41
|
-
<script src="/api-docs/static/swagger-ui-bundle.js"
|
|
42
|
-
<script src="/api-docs/static/swagger-ui-standalone-preset.js"
|
|
33
|
+
<script src="/api-docs/static/swagger-ui-bundle.js"><\/script>
|
|
34
|
+
<script src="/api-docs/static/swagger-ui-standalone-preset.js"><\/script>
|
|
43
35
|
<script>
|
|
44
36
|
window.onload = function() {
|
|
45
37
|
window.ui = SwaggerUIBundle({
|
|
@@ -56,38 +48,35 @@ function generateSwaggerHTML() {
|
|
|
56
48
|
layout: "StandaloneLayout"
|
|
57
49
|
});
|
|
58
50
|
};
|
|
59
|
-
|
|
51
|
+
<\/script>
|
|
60
52
|
</body>
|
|
61
53
|
</html>
|
|
62
54
|
`.trim();
|
|
63
55
|
}
|
|
64
56
|
async function setupSwagger(app, logger) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
app.get("/api-docs", (_req, res)=>{
|
|
87
|
-
res.setHeader("Content-Type", "text/html");
|
|
88
|
-
res.send(generateSwaggerHTML());
|
|
89
|
-
});
|
|
90
|
-
return specification;
|
|
57
|
+
const specification = await new SwaggerGenerator(logger).generate();
|
|
58
|
+
if (process.env[AppConstants.GENERATE_SWAGGER_JSON] === "true") try {
|
|
59
|
+
const mediaPath = getMediaPath();
|
|
60
|
+
ensureDirExists(mediaPath);
|
|
61
|
+
const swaggerJsonPath = join(mediaPath, "swagger.json");
|
|
62
|
+
await writeFile(swaggerJsonPath, JSON.stringify(specification, null, 2), "utf-8");
|
|
63
|
+
logger.log(`Swagger JSON file generated at: ${swaggerJsonPath}`);
|
|
64
|
+
} catch (error) {
|
|
65
|
+
logger.error("Failed to generate swagger.json file", error);
|
|
66
|
+
}
|
|
67
|
+
const swaggerUiPath = getSwaggerUiDistPath();
|
|
68
|
+
app.use("/api-docs/static", static$1(swaggerUiPath));
|
|
69
|
+
app.get("/api-docs/swagger.json", (_req, res) => {
|
|
70
|
+
res.setHeader("Content-Type", "application/json");
|
|
71
|
+
res.send(specification);
|
|
72
|
+
});
|
|
73
|
+
app.get("/api-docs", (_req, res) => {
|
|
74
|
+
res.setHeader("Content-Type", "text/html");
|
|
75
|
+
res.send(generateSwaggerHTML());
|
|
76
|
+
});
|
|
77
|
+
return specification;
|
|
91
78
|
}
|
|
79
|
+
//#endregion
|
|
80
|
+
export { setupSwagger };
|
|
92
81
|
|
|
93
82
|
//# sourceMappingURL=swagger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/swagger/swagger.ts"],"
|
|
1
|
+
{"version":3,"file":"swagger.js","names":["expressStatic"],"sources":["../../../src/utils/swagger/swagger.ts"],"sourcesContent":["import { SwaggerGenerator } from \"./generator\";\nimport { Application, static as expressStatic } from \"express\";\nimport { join, dirname } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { AppConstants } from \"@/server.constants\";\nimport { ensureDirExists, getMediaPath } from \"@/utils/fs.utils\";\nimport { LoggerService } from \"@/handlers/logger\";\nimport { writeFile } from \"node:fs/promises\";\n\nfunction getSwaggerUiDistPath(): string {\n try {\n const resolved = import.meta.resolve(\"swagger-ui-dist/package.json\");\n return dirname(fileURLToPath(resolved));\n } catch {\n return join(process.cwd(), \"node_modules\", \"swagger-ui-dist\");\n }\n}\n\nfunction generateSwaggerHTML(): string {\n return `\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>FDM Monster API Documentation</title>\n <link rel=\"stylesheet\" href=\"/api-docs/static/swagger-ui.css\" />\n <style>\n html { box-sizing: border-box; overflow: -moz-scrollbars-vertical; overflow-y: scroll; }\n *, *:before, *:after { box-sizing: inherit; }\n body { margin: 0; padding: 0; }\n </style>\n</head>\n<body>\n <div id=\"swagger-ui\"></div>\n <script src=\"/api-docs/static/swagger-ui-bundle.js\"></script>\n <script src=\"/api-docs/static/swagger-ui-standalone-preset.js\"></script>\n <script>\n window.onload = function() {\n window.ui = SwaggerUIBundle({\n url: '/api-docs/swagger.json',\n dom_id: '#swagger-ui',\n deepLinking: true,\n presets: [\n SwaggerUIBundle.presets.apis,\n SwaggerUIStandalonePreset\n ],\n plugins: [\n SwaggerUIBundle.plugins.DownloadUrl\n ],\n layout: \"StandaloneLayout\"\n });\n };\n </script>\n</body>\n</html>\n `.trim();\n}\n\nexport async function setupSwagger(app: Application, logger: LoggerService) {\n const generator = new SwaggerGenerator(logger);\n const specification = await generator.generate();\n\n const generateJsonFile = process.env[AppConstants.GENERATE_SWAGGER_JSON] === \"true\";\n if (generateJsonFile) {\n try {\n const mediaPath = getMediaPath();\n ensureDirExists(mediaPath);\n\n const swaggerJsonPath = join(mediaPath, \"swagger.json\");\n const jsonContent = JSON.stringify(specification, null, 2);\n\n await writeFile(swaggerJsonPath, jsonContent, \"utf-8\");\n logger.log(`Swagger JSON file generated at: ${swaggerJsonPath}`);\n } catch (error) {\n logger.error(\"Failed to generate swagger.json file\", error);\n }\n }\n\n const swaggerUiPath = getSwaggerUiDistPath();\n app.use(\"/api-docs/static\", expressStatic(swaggerUiPath));\n app.get(\"/api-docs/swagger.json\", (_req, res) => {\n res.setHeader(\"Content-Type\", \"application/json\");\n res.send(specification);\n });\n app.get(\"/api-docs\", (_req, res) => {\n res.setHeader(\"Content-Type\", \"text/html\");\n res.send(generateSwaggerHTML());\n });\n\n return specification;\n}\n"],"mappings":";;;;;;;;AASA,SAAS,uBAA+B;AACtC,KAAI;AAEF,SAAO,QAAQ,cADE,OAAO,KAAK,QAAQ,+BACA,CAAC,CAAC;SACjC;AACN,SAAO,KAAK,QAAQ,KAAK,EAAE,gBAAgB,kBAAkB;;;AAIjE,SAAS,sBAA8B;AACrC,QAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqCL,MAAM;;AAGV,eAAsB,aAAa,KAAkB,QAAuB;CAE1E,MAAM,gBAAgB,MAAM,IADN,iBAAiB,OACF,CAAC,UAAU;AAGhD,KADyB,QAAQ,IAAI,aAAa,2BAA2B,OAE3E,KAAI;EACF,MAAM,YAAY,cAAc;AAChC,kBAAgB,UAAU;EAE1B,MAAM,kBAAkB,KAAK,WAAW,eAAe;AAGvD,QAAM,UAAU,iBAFI,KAAK,UAAU,eAAe,MAAM,EAEZ,EAAE,QAAQ;AACtD,SAAO,IAAI,mCAAmC,kBAAkB;UACzD,OAAO;AACd,SAAO,MAAM,wCAAwC,MAAM;;CAI/D,MAAM,gBAAgB,sBAAsB;AAC5C,KAAI,IAAI,oBAAoBA,SAAc,cAAc,CAAC;AACzD,KAAI,IAAI,2BAA2B,MAAM,QAAQ;AAC/C,MAAI,UAAU,gBAAgB,mBAAmB;AACjD,MAAI,KAAK,cAAc;GACvB;AACF,KAAI,IAAI,cAAc,MAAM,QAAQ;AAClC,MAAI,UAAU,gBAAgB,YAAY;AAC1C,MAAI,KAAK,qBAAqB,CAAC;GAC/B;AAEF,QAAO"}
|