From 3ac274705efdf895996eeaaf1d953c4cb419f620 Mon Sep 17 00:00:00 2001 From: Boki Date: Sun, 22 Jun 2025 21:52:21 -0400 Subject: [PATCH] fixed lint in di --- .../document_symbols_cache_v20-05-25.pkl | Bin 4914834 -> 4866746 bytes libs/core/di/src/awilix-container.ts | 73 +++--------------- libs/core/di/src/container/builder.ts | 11 ++- .../registrations/database.registration.ts | 2 +- 4 files changed, 21 insertions(+), 65 deletions(-) diff --git a/.serena/cache/typescript/document_symbols_cache_v20-05-25.pkl b/.serena/cache/typescript/document_symbols_cache_v20-05-25.pkl index 3e4099fb75854a2b1234d0d3aa65a89d9b28efc9..93ce2e3b5912349bd66210ce463032663d3740f1 100644 GIT binary patch delta 105567 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 delta 122736 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 Y!8`z_4$N+8;AI|#Qf>F`(Y1sA5C29F?EnA( diff --git a/libs/core/di/src/awilix-container.ts b/libs/core/di/src/awilix-container.ts index ca1318b..168f00c 100644 --- a/libs/core/di/src/awilix-container.ts +++ b/libs/core/di/src/awilix-container.ts @@ -3,72 +3,21 @@ * Creates a decoupled, reusable dependency injection container */ -import { Browser } from '@stock-bot/browser'; -import { type CacheProvider } from '@stock-bot/cache'; +import type { Browser } from '@stock-bot/browser'; +import type { CacheProvider } from '@stock-bot/cache'; import type { AppConfig as StockBotAppConfig } from '@stock-bot/config'; import type { IServiceContainer } from '@stock-bot/handlers'; -import { type Logger } from '@stock-bot/logger'; -import { MongoDBClient } from '@stock-bot/mongodb'; -import { PostgreSQLClient } from '@stock-bot/postgres'; -import { ProxyManager } from '@stock-bot/proxy'; -import { QuestDBClient } from '@stock-bot/questdb'; -import { type QueueManager } from '@stock-bot/queue'; +import type { Logger } from '@stock-bot/logger'; +import type { MongoDBClient } from '@stock-bot/mongodb'; +import type { PostgreSQLClient } from '@stock-bot/postgres'; +import type { ProxyManager } from '@stock-bot/proxy'; +import type { QuestDBClient } from '@stock-bot/questdb'; +import type { QueueManager } from '@stock-bot/queue'; import { type AwilixContainer } from 'awilix'; -import { z } from 'zod'; +import type { AppConfig } from './config/schemas'; -// Configuration schema with validation -const appConfigSchema = z.object({ - redis: z.object({ - enabled: z.boolean().optional(), - host: z.string(), - port: z.number(), - password: z.string().optional(), - username: z.string().optional(), - db: z.number().optional(), - }), - mongodb: z.object({ - enabled: z.boolean().optional(), - uri: z.string(), - database: z.string(), - }), - postgres: z.object({ - enabled: z.boolean().optional(), - host: z.string(), - port: z.number(), - database: z.string(), - user: z.string(), - password: z.string(), - }), - questdb: z - .object({ - enabled: z.boolean().optional(), - host: z.string(), - httpPort: z.number().optional(), - pgPort: z.number().optional(), - influxPort: z.number().optional(), - database: z.string().optional(), - }) - .optional(), - proxy: z - .object({ - cachePrefix: z.string().optional(), - ttl: z.number().optional(), - }) - .optional(), - browser: z - .object({ - headless: z.boolean().optional(), - timeout: z.number().optional(), - }) - .optional(), - queue: z - .object({ - enabled: z.boolean().optional(), - }) - .optional(), -}); - -export type AppConfig = z.infer; +// Re-export for backward compatibility +export type { AppConfig }; /** * Service type definitions for type-safe resolution diff --git a/libs/core/di/src/container/builder.ts b/libs/core/di/src/container/builder.ts index c086f97..8376979 100644 --- a/libs/core/di/src/container/builder.ts +++ b/libs/core/di/src/container/builder.ts @@ -94,9 +94,16 @@ export class ServiceContainerBuilder { user: config.postgres?.user || '', password: config.postgres?.password || '', }, - questdb: this.options.enableQuestDB ? config.questdb : undefined, + questdb: this.options.enableQuestDB ? (config.questdb || { + enabled: true, + host: 'localhost', + httpPort: 9000, + pgPort: 8812, + influxPort: 9009, + database: 'questdb', + }) : undefined, proxy: this.options.enableProxy ? (config.proxy || { cachePrefix: 'proxy:', ttl: 3600 }) : undefined, - browser: this.options.enableBrowser ? config.browser : undefined, + browser: this.options.enableBrowser ? (config.browser || { headless: true, timeout: 30000 }) : undefined, queue: this.options.enableQueue ? { enabled: this.options.enableQueue } : undefined, }; } diff --git a/libs/core/di/src/registrations/database.registration.ts b/libs/core/di/src/registrations/database.registration.ts index 68386cd..5e900ab 100644 --- a/libs/core/di/src/registrations/database.registration.ts +++ b/libs/core/di/src/registrations/database.registration.ts @@ -14,7 +14,7 @@ export function registerDatabaseServices( container.register({ mongoClient: asFunction(({ logger }) => { // Parse MongoDB URI to extract components - const uriMatch = config.mongodb.uri.match(/mongodb:\/\/(?:([^:]+):([^@]+)@)?([^:\/]+):(\d+)\/([^?]+)(?:\?authSource=(.+))?/); + const uriMatch = config.mongodb.uri.match(/mongodb:\/\/(?:([^:]+):([^@]+)@)?([^:/]+):(\d+)\/([^?]+)(?:\?authSource=(.+))?/); const mongoConfig = { host: uriMatch?.[3] || 'localhost', port: parseInt(uriMatch?.[4] || '27017'),