import { join } from "node:path"; import { APP_INTERCEPTOR, APP_PIPE } from "@nestjs/core"; import { Module } from "@nestjs/common"; import { ConfigService } from "@nestjs/config"; import { UnicodeDigitsNormalizeInterceptor } from "./common/interceptors/unicode-digits-normalize.interceptor"; import { MongooseModule } from "@nestjs/mongoose"; import { ServeStaticModule } from "@nestjs/serve-static"; import { AiModule } from "./ai/ai.module"; import { AuthModule } from "./auth/auth.module"; import { ClaimRequestManagementModule } from "./claim-request-management/claim-request-management.module"; import { ClientModule } from "./client/client.module"; import { ExpertBlameModule } from "./expert-blame/expert-blame.module"; import { FanavaranModule } from "./fanavaran/fanavaran.module"; import { ExpertClaimModule } from "./expert-claim/expert-claim.module"; import { ExpertInsurerModule } from "./expert-insurer/expert-insurer.module"; import { LookupsModule } from "./lookups/lookups.module"; import { PlatesModule } from "./plates/plates.module"; import { ProfileModule } from "./profile/profile.module"; import { SandHubModule } from "./sand-hub/sand-hub.module"; import { SystemSettingsModule } from "./system-settings/system-settings.module"; import { ReportsModule } from "./reports/reports.module"; import { RequestManagementModule } from "./request-management/request-management.module"; import { UsersModule } from "./users/users.module"; import { applyIranFaTimestampPlugin } from "./helpers/mongoose-fa-timestamps.plugin"; import { CronModule } from "./utils/cron/cron.module"; import { WorkflowStepManagementModule } from "./workflow-step-management/workflow-step-management.module"; import { DatabaseModule } from "./core/database/database.module"; import { AppConfigModule } from "./core/config/config.module"; @Module({ imports: [ AppConfigModule, DatabaseModule, CronModule, ServeStaticModule.forRoot({ // process.cwd() is always the project/container root (/app in Docker), // so the volume-mounted /app/files is resolved correctly regardless of // where the compiled dist files live (__dirname would resolve to // /app/dist/src because TypeScript preserves the src/ prefix in outDir). rootPath: join(process.cwd(), "files"), serveRoot: "/files", }), UsersModule, AuthModule, ClientModule, ProfileModule, PlatesModule, RequestManagementModule, SandHubModule, SystemSettingsModule, ExpertBlameModule, ClaimRequestManagementModule, FanavaranModule, ExpertClaimModule, AiModule, ReportsModule, ExpertInsurerModule, LookupsModule, WorkflowStepManagementModule, ], controllers: [], providers: [ { provide: APP_INTERCEPTOR, useClass: UnicodeDigitsNormalizeInterceptor, }, // { // provide: APP_PIPE, // useValue: new ValidationPipe({ // transform: true, // whitelist: true, // forbidNonWhitelisted: false, // }), // }, ], }) export class AppModule {}