UNPKG

@fdm-monster/server

Version:

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.

173 lines (172 loc) 10.5 kB
import { DITokens } from "./container.tokens.js"; import { PrinterService } from "./services/orm/printer.service.js"; import { PrinterMaintenanceLogService } from "./services/orm/printer-maintenance-log.service.js"; import { AppConstants } from "./server.constants.js"; import { SettingsStore } from "./state/settings.store.js"; import { ServerReleaseService } from "./services/core/server-release.service.js"; import { TaskManagerService } from "./services/task-manager.service.js"; import { GithubService } from "./services/core/github.service.js"; import { PrinterWebsocketTask } from "./tasks/printer-websocket.task.js"; import { ROLES } from "./constants/authorization.constants.js"; import { SocketIoGateway } from "./state/socket-io.gateway.js"; import { SocketIoTask } from "./tasks/socketio.task.js"; import { SocketFactory } from "./services/socket.factory.js"; import { configureEventEmitter } from "./handlers/event-emitter.js"; import { SoftwareUpdateTask } from "./tasks/software-update.task.js"; import { LoggerFactory } from "./handlers/logger-factory.js"; import { MulterService } from "./services/core/multer.service.js"; import { FileUploadTrackerCache } from "./state/file-upload-tracker.cache.js"; import { BatchCallService } from "./services/core/batch-call.service.js"; import { FileStorageService } from "./services/file-storage.service.js"; import { FileAnalysisService } from "./services/file-analysis.service.js"; import { YamlService } from "./services/core/yaml.service.js"; import { FloorStore } from "./state/floor.store.js"; import { PrintJobService } from "./services/orm/print-job.service.js"; import { PrintQueueService } from "./services/print-queue.service.js"; import { PrinterCache } from "./state/printer.cache.js"; import { PrinterThumbnailCache } from "./state/printer-thumbnail.cache.js"; import { OctoprintClient } from "./services/octoprint/octoprint.client.js"; import { PrinterSocketStore } from "./state/printer-socket.store.js"; import { OctoprintWebsocketAdapter } from "./services/octoprint/octoprint-websocket.adapter.js"; import { BambuMqttAdapter } from "./services/bambu/bambu-mqtt.adapter.js"; import { TestPrinterSocketStore } from "./state/test-printer-socket.store.js"; import { PrinterEventsCache } from "./state/printer-events.cache.js"; import { PrinterApiFactory } from "./services/printer-api.factory.js"; import { ClientBundleService } from "./services/core/client-bundle.service.js"; import { LogDumpService } from "./services/core/logs-manager.service.js"; import { MonsterPiService } from "./services/core/monsterpi.service.js"; import { ServerHost } from "./server.host.js"; import { BootTask } from "./tasks/boot.task.js"; import { UserService } from "./services/orm/user.service.js"; import { RoleService } from "./services/orm/role.service.js"; import { PermissionService } from "./services/orm/permission.service.js"; import { PrinterWebsocketRestoreTask } from "./tasks/printer-websocket-restore.task.js"; import { ConfigService } from "./services/core/config.service.js"; import { ClientDistDownloadTask } from "./tasks/client-bundle.task.js"; import { CameraStreamService } from "./services/orm/camera-stream.service.js"; import { JwtService } from "./services/authentication/jwt.service.js"; import { AuthService } from "./services/authentication/auth.service.js"; import { RefreshTokenService } from "./services/orm/refresh-token.service.js"; import { ApiKeyService } from "./services/orm/api-key.service.js"; import { SettingsService } from "./services/orm/settings.service.js"; import { FloorService } from "./services/orm/floor.service.js"; import { FloorPositionService } from "./services/orm/floor-position.service.js"; import { ExceptionFilter } from "./middleware/exception.filter.js"; import { TypeormService } from "./services/typeorm/typeorm.service.js"; import { UserRoleService } from "./services/orm/user-role.service.js"; import { PrinterTagService } from "./services/orm/printer-tag.service.js"; import { MoonrakerClient } from "./services/moonraker/moonraker.client.js"; import { MoonrakerWebsocketAdapter } from "./services/moonraker/moonraker-websocket.adapter.js"; import { OctoprintApi } from "./services/octoprint.api.js"; import { MoonrakerApi } from "./services/moonraker.api.js"; import { HttpClientFactory } from "./services/core/http-client.factory.js"; import { CradleService } from "./services/core/cradle.service.js"; import { PrusaLinkApi } from "./services/prusa-link/prusa-link.api.js"; import { PrusaLinkHttpPollingAdapter } from "./services/prusa-link/prusa-link-http-polling.adapter.js"; import { BambuClient } from "./services/bambu/bambu.client.js"; import { BambuFtpAdapter } from "./services/bambu/bambu-ftp.adapter.js"; import { BambuApi } from "./services/bambu.api.js"; import { PrintJobAnalysisTask } from "./tasks/print-job-analysis.task.js"; import { PrintFileDownloaderService } from "./services/print-file-downloader.service.js"; import { Octokit } from "octokit"; import { InjectionMode, asClass, asFunction, asValue, createContainer } from "awilix"; import { ToadScheduler } from "toad-scheduler"; import { throttling } from "@octokit/plugin-throttling"; //#region src/container.ts function configureContainer() { const container = createContainer({ injectionMode: InjectionMode.CLASSIC }); const di = DITokens; container.register({ [di.appDefaultRole]: asValue(ROLES.GUEST), [di.appDefaultRoleNoLogin]: asValue(ROLES.ADMIN), [di.serverVersion]: asFunction(() => { return process.env[AppConstants.VERSION_KEY]; }), [di.cradleService]: asClass(CradleService).inject((container) => ({ container })), [di.socketFactory]: asClass(SocketFactory).transient(), [di.typeormService]: asClass(TypeormService).singleton(), [di.settingsService]: asClass(SettingsService), [di.floorService]: asClass(FloorService).singleton(), [di.floorPositionService]: asClass(FloorPositionService).singleton(), [di.cameraStreamService]: asClass(CameraStreamService).singleton(), [di.printerService]: asClass(PrinterService), [di.printerMaintenanceLogService]: asClass(PrinterMaintenanceLogService), [di.printerTagService]: asClass(PrinterTagService), [di.refreshTokenService]: asClass(RefreshTokenService).singleton(), [di.apiKeyService]: asClass(ApiKeyService).singleton(), [di.userService]: asClass(UserService).singleton(), [di.userRoleService]: asClass(UserRoleService).singleton(), [di.roleService]: asClass(RoleService).singleton(), [di.permissionService]: asClass(PermissionService).singleton(), [di.serverHost]: asClass(ServerHost).singleton(), [di.exceptionFilter]: asClass(ExceptionFilter).singleton(), [di.settingsStore]: asClass(SettingsStore).singleton(), [di.configService]: asClass(ConfigService), [di.authService]: asClass(AuthService).singleton(), [di.jwtService]: asClass(JwtService).singleton(), [di.loggerFactory]: asFunction(LoggerFactory).transient(), [di.taskManagerService]: asClass(TaskManagerService).singleton(), [di.toadScheduler]: asClass(ToadScheduler).singleton(), [di.eventEmitter2]: asFunction(configureEventEmitter).singleton(), [di.serverReleaseService]: asClass(ServerReleaseService).singleton(), [di.monsterPiService]: asClass(MonsterPiService).singleton(), [di.githubService]: asClass(GithubService), [di.octokitService]: asFunction((configService) => { return new (Octokit.plugin(throttling))({ auth: configService.get(AppConstants.GITHUB_PAT), throttle: { onRateLimit: (_retryAfter, options, _octokit, _retryCount) => { LoggerFactory()("OctoKitThrottle").warn(`Request quota exhausted for request ${options.method} ${options.url}`); }, onSecondaryRateLimit: (_retryAfter, options, _octokit) => { LoggerFactory()("OctoKitThrottle").warn(`SecondaryRateLimit detected for request ${options.method} ${options.url}`); } } }); }), [di.clientBundleService]: asClass(ClientBundleService), [di.logDumpService]: asClass(LogDumpService), [di.httpClientFactory]: asClass(HttpClientFactory), [di.socketIoGateway]: asClass(SocketIoGateway).singleton(), [di.multerService]: asClass(MulterService).singleton(), [di.yamlService]: asClass(YamlService), [di.printerLogin]: asValue(null), [di.printerApiFactory]: asClass(PrinterApiFactory).transient(), [di.prusaLinkApi]: asClass(PrusaLinkApi).transient(), [di.prusaLinkPollingAdapter]: asClass(PrusaLinkHttpPollingAdapter).transient(), [di.octoprintApi]: asClass(OctoprintApi).transient(), [di.octoprintClient]: asClass(OctoprintClient).singleton(), [di.octoPrintSockIoAdapter]: asClass(OctoprintWebsocketAdapter).transient(), [di.moonrakerApi]: asClass(MoonrakerApi).transient(), [di.moonrakerClient]: asClass(MoonrakerClient).singleton(), [di.moonrakerWebsocketAdapter]: asClass(MoonrakerWebsocketAdapter).transient(), [di.bambuApi]: asClass(BambuApi).transient(), [di.bambuClient]: asClass(BambuClient).transient(), [di.bambuFtpAdapter]: asClass(BambuFtpAdapter).transient(), [di.bambuMqttAdapter]: asClass(BambuMqttAdapter).transient(), [di.batchCallService]: asClass(BatchCallService).singleton(), [di.floorStore]: asClass(FloorStore).singleton(), [di.printerThumbnailCache]: asClass(PrinterThumbnailCache).singleton(), [di.fileUploadTrackerCache]: asClass(FileUploadTrackerCache).singleton(), [di.printerCache]: asClass(PrinterCache).singleton(), [di.printerEventsCache]: asClass(PrinterEventsCache).singleton(), [di.printerSocketStore]: asClass(PrinterSocketStore).singleton(), [di.testPrinterSocketStore]: asClass(TestPrinterSocketStore).singleton(), [di.printJobService]: asClass(PrintJobService).singleton(), [di.printQueueService]: asClass(PrintQueueService).singleton(), [di.fileStorageService]: asClass(FileStorageService).singleton(), [di.fileAnalysisService]: asClass(FileAnalysisService).singleton(), [di.printFileDownloaderService]: asClass(PrintFileDownloaderService).singleton(), [di.bootTask]: asClass(BootTask), [di.softwareUpdateTask]: asClass(SoftwareUpdateTask), [di.socketIoTask]: asClass(SocketIoTask).singleton(), [di.clientDistDownloadTask]: asClass(ClientDistDownloadTask).singleton(), [di.printerWebsocketTask]: asClass(PrinterWebsocketTask).singleton(), [di.printerWebsocketRestoreTask]: asClass(PrinterWebsocketRestoreTask).singleton(), [di.printJobAnalysisTask]: asClass(PrintJobAnalysisTask).singleton() }); return container; } //#endregion export { configureContainer }; //# sourceMappingURL=container.js.map