/** * NestJS Framework Adapter * * Provides CoreModule for NestJS dependency injection. * Initializes core services (db, env) for use across NestJS modules. */ import type { DynamicModule } from '@nestjs/common'; import type { CoreDbServiceConfig } from '../services/DbService'; import type { CoreNestJsModuleOptions, CoreNestJsModuleAsyncOptions } from '@plyaz/types/core'; /** * Core module options for NestJS * Extended with specific DbServiceConfig type */ interface CoreModuleOptions extends Omit { /** Database configuration */ db?: CoreDbServiceConfig; } /** * Async options for CoreModule * Extended with specific CoreModuleOptions type */ interface CoreModuleAsyncOptions extends Omit { useFactory: (...args: unknown[]) => CoreModuleOptions | Promise; } /** * Injection tokens for Core services */ export declare const CORE_DB_SERVICE = "CORE_DB_SERVICE"; export declare const CORE_ENV = "CORE_ENV"; export declare const CORE_OPTIONS = "CORE_OPTIONS"; /** * CoreModule for NestJS * * Provides Core services (DbService, etc.) via NestJS dependency injection. * Import additional modules (FeatureFlagModule, etc.) separately. * * @example * ```typescript * import { Module } from '@nestjs/common'; * import { CoreModule } from '@plyaz/core/adapters'; * import { FeatureFlagModule } from '@plyaz/core/backend/featureFlags'; * * @Module({ * imports: [ * CoreModule.forRoot({ envPath: '.env' }), * FeatureFlagModule.forRoot({ provider: 'database' }), // Auto-receives DbService * ], * }) * export class AppModule {} * ``` * * @example Async configuration * ```typescript * CoreModule.forRootAsync({ * imports: [ConfigModule], * inject: [ConfigService], * useFactory: (config: ConfigService) => ({ * db: { * adapter: 'drizzle', * drizzle: { * connectionString: config.get('DATABASE_URL'), * }, * }, * }), * }) * ``` */ export declare const CoreModule: { /** * Register CoreModule with static configuration */ forRoot(options?: CoreModuleOptions): DynamicModule; /** * Register CoreModule with async configuration */ forRootAsync(options: CoreModuleAsyncOptions): DynamicModule; }; export {}; //# sourceMappingURL=nestjs.d.ts.map