Files
docmost_custom/apps/server/src/app.module.ts
T

100 lines
3.4 KiB
TypeScript
Raw Normal View History

2023-08-03 17:04:35 +01:00
import { Module } from '@nestjs/common';
2026-03-01 01:29:03 +00:00
import { APP_INTERCEPTOR } from '@nestjs/core';
2023-08-03 17:04:35 +01:00
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { EnvironmentService } from './integrations/environment/environment.service';
2026-03-01 01:29:03 +00:00
import { AuditActorInterceptor } from './common/interceptors/audit-actor.interceptor';
2023-08-04 16:26:43 +01:00
import { CoreModule } from './core/core.module';
2024-03-21 20:09:25 +00:00
import { EnvironmentModule } from './integrations/environment/environment.module';
2023-09-15 01:22:47 +01:00
import { CollaborationModule } from './collaboration/collaboration.module';
2023-10-16 15:19:30 +01:00
import { WsModule } from './ws/ws.module';
2024-04-27 18:53:30 +01:00
import { DatabaseModule } from '@docmost/db/database.module';
2024-05-02 16:45:05 +01:00
import { StorageModule } from './integrations/storage/storage.module';
import { MailModule } from './integrations/mail/mail.module';
import { QueueModule } from './integrations/queue/queue.module';
2024-05-18 03:19:42 +01:00
import { StaticModule } from './integrations/static/static.module';
2024-06-07 16:23:23 +01:00
import { EventEmitterModule } from '@nestjs/event-emitter';
2024-07-05 10:10:08 +12:00
import { HealthModule } from './integrations/health/health.module';
import { ExportModule } from './integrations/export/export.module';
import { ImportModule } from './integrations/import/import.module';
2025-03-06 13:38:37 +00:00
import { SecurityModule } from './integrations/security/security.module';
2025-03-23 13:12:41 +00:00
import { TelemetryModule } from './integrations/telemetry/telemetry.module';
2025-10-07 17:34:32 +01:00
import { RedisModule } from '@nestjs-labs/nestjs-ioredis';
import { RedisConfigService } from './integrations/redis/redis-config.service';
import { CacheModule } from '@nestjs/cache-manager';
import KeyvRedis from '@keyv/redis';
2026-01-21 01:23:50 +00:00
import { LoggerModule } from './common/logger/logger.module';
2026-03-01 01:29:03 +00:00
import { ClsModule } from 'nestjs-cls';
2026-03-05 09:29:39 +00:00
import { NoopAuditModule } from './integrations/audit/audit.module';
2026-03-30 15:38:44 +01:00
import { ThrottleModule } from './integrations/throttle/throttle.module';
2025-03-06 13:38:37 +00:00
const enterpriseModules = [];
try {
// eslint-disable-next-line @typescript-eslint/no-require-imports
if (require('./ee/ee.module')?.EeModule) {
// eslint-disable-next-line @typescript-eslint/no-require-imports
enterpriseModules.push(require('./ee/ee.module')?.EeModule);
}
} catch (err) {
if (process.env.CLOUD === 'true') {
console.warn('Failed to load enterprise modules. Exiting program.\n', err);
process.exit(1);
}
}
2023-08-03 17:04:35 +01:00
@Module({
2023-08-04 16:26:43 +01:00
imports: [
2026-03-01 01:29:03 +00:00
ClsModule.forRoot({
global: true,
middleware: { mount: true },
}),
2026-01-21 01:23:50 +00:00
LoggerModule,
2026-03-05 09:29:39 +00:00
NoopAuditModule,
2023-08-04 16:26:43 +01:00
CoreModule,
2024-04-27 18:53:30 +01:00
DatabaseModule,
2023-08-04 16:26:43 +01:00
EnvironmentModule,
2025-10-07 17:34:32 +01:00
RedisModule.forRootAsync({
useClass: RedisConfigService,
}),
CacheModule.registerAsync({
isGlobal: true,
useFactory: async (environmentService: EnvironmentService) => {
const redisUrl = environmentService.getRedisUrl();
return {
ttl: 5 * 1000,
stores: [new KeyvRedis(redisUrl)],
};
},
inject: [EnvironmentService],
}),
2023-09-15 01:22:47 +01:00
CollaborationModule,
2023-10-16 15:19:30 +01:00
WsModule,
QueueModule,
2024-05-18 03:19:42 +01:00
StaticModule,
2024-07-05 10:10:08 +12:00
HealthModule,
ImportModule,
ExportModule,
2024-05-02 16:45:05 +01:00
StorageModule.forRootAsync({
imports: [EnvironmentModule],
}),
MailModule.forRootAsync({
imports: [EnvironmentModule],
}),
2024-06-07 16:23:23 +01:00
EventEmitterModule.forRoot(),
2025-03-06 13:38:37 +00:00
SecurityModule,
2025-03-23 13:12:41 +00:00
TelemetryModule,
2026-03-30 15:38:44 +01:00
ThrottleModule,
2025-03-06 13:38:37 +00:00
...enterpriseModules,
2023-08-04 16:26:43 +01:00
],
2023-08-03 17:04:35 +01:00
controllers: [AppController],
2026-03-01 01:29:03 +00:00
providers: [
AppService,
{
provide: APP_INTERCEPTOR,
useClass: AuditActorInterceptor,
},
],
2023-08-03 17:04:35 +01:00
})
export class AppModule {}