dependencies dependencies cluster_AppModule cluster_AppModule_imports cluster_AppModule_providers AdminModule AdminModule AppModule AppModule AdminModule->AppModule AlbumsModule AlbumsModule AlbumsModule->AppModule AuthModule AuthModule AuthModule->AppModule CacheModule CacheModule CacheModule->AppModule CloudModule CloudModule CloudModule->AppModule CodesModule CodesModule CodesModule->AppModule CommonModule CommonModule CommonModule->AppModule CronModule CronModule CronModule->AppModule DatabaseModule DatabaseModule DatabaseModule->AppModule EmailsModule EmailsModule EmailsModule->AppModule UploadsModule UploadsModule UploadsModule->AppModule UsersModule UsersModule UsersModule->AppModule UtilsModule UtilsModule UtilsModule->AppModule AppService AppService AppService->AppModule

File

src/app.module.ts

Methods

configure
configure(consumer: MiddlewareConsumer)
Parameters :
Name Type Optional
consumer MiddlewareConsumer No
Returns : void
import { Module, NestModule, MiddlewareConsumer } from '@nestjs/common';
import { AppController } from './app.controller';
import { APP_GUARD } from '@nestjs/core';
import { AppService } from './app.service';
import { ConfigModule } from '@nestjs/config';
import { UtilsModule } from './utils/utils.module';
import { DatabaseModule } from './database/database.module';
import { UsersModule } from './users/users.module';
import { AuthModule } from './auth/auth.module';
import { EmailsModule } from './emails/emails.module';
import * as Joi from 'joi';
import { AuthGuard } from './auth/auth.guard';
import { CommonModule } from './common/common.module';
import { UploadsModule } from './uploads/uploads.module';
import configuration from './config/cnf';
import { CloudModule } from './cloud/cloud.module';
import { CodesModule } from './codes/codes.module';
import { HttpExceptionFilter } from './exceptions/http-exception.filter';
import { CacheModule } from './cache/cache.module';
import { AlbumsModule } from './albums/albums.module';
import { AdminModule } from './admin/admin.module';
import { CronModule } from './cron/cron.module';
import { LocaleInterceptor } from './common/locale.interceptor';
import { RateLimiterModule, RateLimiterGuard } from 'nestjs-rate-limiter';

@Module({
  imports: [
    ConfigModule.forRoot({
      validationSchema: Joi.object({
        DATABASE_URL: Joi.string().required(),
        NODE_NAME: Joi.string().default('Fileglass backend node'),
        READ_REPLICA: Joi.string().default('0').allow('0', '1'),
        READ_DATABASE_URL: Joi.optional(),
        PORT: Joi.string().default('5000'),
        JWT_SECRET: Joi.string().required(),
        SG_USER: Joi.string().required(),
        SG_KEY: Joi.string().required(),
        CAPTCHA: Joi.string().required(),
        AWS_EPOINT: Joi.string().required(),
        AWS_AKEY: Joi.string().required(),
        AWS_SEC: Joi.string().required(),
        ARACH_URL: Joi.string().required(),
        ARACH_KEY: Joi.string().required(),
        ENCR_KEY: Joi.string().required(),
        SENTRY_DSN: Joi.string().required(),
        AWS_DISTROID: Joi.string().required(),
        CACHE_AKEY: Joi.string().required(),
        CF_ZONEID: Joi.string().required(),
        CF_EMAIL: Joi.string().required(),
        CF_KEY: Joi.string().required(),
        DISC_ID: Joi.string().required(),
        DISC_SEC: Joi.string().required(),
        DISCORD_REDIR_URL: Joi.string().required(),
        DEPL_WH_ID: Joi.string().required(),
        DEPL_WH_SEC: Joi.string().required(),
        GH_ID: Joi.string().required(),
        GH_SEC: Joi.string().required(),
        DEV_KEY: Joi.string().required(),
        GH_KEY: Joi.string().required(),
      }),
      isGlobal: true,
      cache: true,
      load: [configuration],
    }),
    UtilsModule,
    DatabaseModule,
    UsersModule,
    AuthModule,
    EmailsModule,
    CommonModule,
    UploadsModule,
    CloudModule,
    CodesModule,
    CacheModule,
    AlbumsModule,
    AdminModule,
    CronModule,
    RateLimiterModule.register({
      for: 'Fastify',
      keyPrefix: 'global',
      points: 100,
      duration: 60,
      blockDuration: 120,
      errorMessage: 'Rate limit exceeded.',
    }),
  ],
  controllers: [AppController],
  providers: [
    {
      provide: APP_GUARD,
      useClass: RateLimiterGuard,
    },
    {
      provide: 'APP_GUARD',
      useClass: AuthGuard,
    },
    {
      provide: 'APP_FILTER',
      useClass: HttpExceptionFilter,
    },
    { provide: 'APP_INTERCEPTOR', useClass: LocaleInterceptor },
    AppService,
    UtilsModule,
    DatabaseModule,
  ],
})
export class AppModule implements NestModule {
  configure(consumer: MiddlewareConsumer) {}
}

results matching ""

    No results matching ""