Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
import { ArticleModule } from './modules/article/article.module'
import { TypeormService } from './config/typeorm/typeorm.service'
import { TypeormModule } from './config/typeorm/typeorm.module'
import { VarModule } from './config/var/var.module'
import { LoggerModule } from './shared/logger/logger.module'
import { GraphQLModule } from '@nestjs/graphql'
import { GraphqlService } from './config/graphql/graphql.service'
import { CategoryModule } from './modules/category/category.module';
@Module({
imports: [
VarModule,
ArticleModule,
LoggerModule,
TypeormModule,
TypeOrmModule.forRootAsync({
// TIP: Here need to import the VarModule for using VarService
imports: [VarModule],
useClass: TypeormService
}),
GraphQLModule.forRootAsync({
imports: [VarModule, LoggerModule],
useClass: GraphqlService
}),
CategoryModule
],
controllers: [AppController],
providers: [AppService, TypeormService]
})
export class AppModule {}
import {
Module,
INestApplication,
} from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { TypeOrmService } from './database/typeorm.service';
import { EnvModule } from './env/env.module';
import { SessionModule } from './session/session.module';
import { AuthModule } from './auth/auth.module';
import { UserModule } from './user/user.module';
@Module({
imports: [
TypeOrmModule.forRootAsync({
imports: [EnvModule],
useClass: TypeOrmService,
}),
EnvModule,
SessionModule,
AuthModule,
UserModule,
],
})
export class LogicModule {
public initialize(app: INestApplication) {
// enable session store in PostgreSQL
app.get(SessionModule).initialize(app);
// enable passport session
// NOTE: we must use this at the end of `app.use()` list
static forWorker(): DynamicModule {
if (!workerTypeOrmModule) {
workerTypeOrmModule = TypeOrmModule.forRootAsync({
imports: [ConfigModule],
useFactory: (configService: ConfigService) => {
const { dbConnectionOptions, workerOptions } = configService;
if (workerOptions.runInMainProcess) {
// When running in the main process, we can re-use the existing
// default connection.
return {
...dbConnectionOptions,
name: 'default',
keepConnectionAlive: true,
};
} else {
return {
...dbConnectionOptions,
};
}
import { AuthenticatedGuard } from './common/guards';
import { LoggerMiddleware } from './common/middleware';
import { configuration } from './config';
import { SampleModule } from './sample/sample.module';
@Module({
imports: [
// Configuration
// https://docs.nestjs.com/techniques/configuration
ConfigModule.forRoot({
isGlobal: true,
load: [configuration]
}),
// Database
// https://docs.nestjs.com/techniques/database
TypeOrmModule.forRootAsync({
useFactory: async (config: ConfigService) => ({
entities: [`${__dirname}/entity/**/*.{js,ts}`],
subscribers: [`${__dirname}/subscriber/**/*.{js,ts}`],
migrations: [`${__dirname}/migration/**/*.{js,ts}`],
...config.get('db')
}),
inject: [ConfigService]
}),
// Static Folder
// https://docs.nestjs.com/recipes/serve-static
// https://docs.nestjs.com/techniques/mvc
ServeStaticModule.forRoot({
rootPath: `${__dirname}/../public`,
renderPath: '/'
}),
// Module Router
return rc
.keys()
.filter(filePath => !filePath.includes('base'))
.flatMap(key => Object.values(rc(key)))
.filter(isClass);
}
const requireContext = (require as any).context('../..', true, /\.entity.ts/);
// const requireContext = (require as any).context('../..', true, /^\.\/.*\/.*\/(?!(base|audit-base)).*\.entity.ts$/);
const entities = requireAllClasses(requireContext);
@Module({
imports: [
ConfigModule,
EmailModule.forRoot(env.email),
TypeOrmModule.forRootAsync({
imports: [ConfigModule],
useFactory: async (config: ConfigService) =>
({
...env.database,
entities,
} as ConnectionOptions),
inject: [ConfigService],
}),
],
controllers: [],
providers: [
// Enable for debugging in Dev env.
// {
// provide: APP_INTERCEPTOR,
// useClass: LoggingInterceptor,
// },
import { Global, Module } from '@nestjs/common';
import { ClassSerializerInterceptor } from '@devon4node/common/serializer';
import { APP_INTERCEPTOR } from '@nestjs/core';
import { WinstonLogger } from '../shared/logger/winston.logger';
import { ConfigurationModule } from './configuration/configuration.module';
import { ConfigurationService } from './configuration/services';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AuthModule } from './auth/auth.module';
import { UserModule } from './user/user.module';
@Global()
@Module({
imports: [
UserModule,
AuthModule,
TypeOrmModule.forRootAsync({
imports: [ConfigurationModule],
useFactory: (config: ConfigurationService) => {
return config.database;
},
inject: [ConfigurationService],
}),
ConfigurationModule,
],
controllers: [],
providers: [{ provide: APP_INTERCEPTOR, useClass: ClassSerializerInterceptor }, WinstonLogger],
exports: [UserModule, AuthModule, ConfigurationModule, WinstonLogger],
})
export class CoreModule {}
import { TerminusModule } from '@nestjs/terminus';
import { TypeOrmModule } from '@nestjs/typeorm';
import { WinstonLogger } from '../shared/logger/winston.logger';
import { ConfigurationModule } from './configuration/configuration.module';
import { ConfigurationService } from './configuration/services/configuration.service';
import { OnShutdownService } from './terminus/services/on-shutdown.service';
import { TerminusOptionsService } from './terminus/services/terminus.service';
import { AuthModule } from './auth/auth.module';
import { ClassSerializerInterceptor } from '@devon4node/common/serializer';
import { APP_INTERCEPTOR } from '@nestjs/core';
@Global()
@Module({
imports: [
ConfigurationModule,
TypeOrmModule.forRootAsync({
imports: [ConfigurationModule],
useFactory: (config: ConfigurationService) => {
return config.database;
},
inject: [ConfigurationService],
}),
TerminusModule.forRootAsync({
useClass: TerminusOptionsService,
}),
MailerModule.forRootAsync({
imports: [ConfigurationModule],
useFactory: (config: ConfigurationService) => {
return config.mailerConfig;
},
inject: [ConfigurationService],
}),
import { Module } from '@nestjs/common';
import { TypeOrmModule, TypeOrmModuleAsyncOptions } from '@nestjs/typeorm';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ConfigModule, ConfigService } from './../config';
import { AuthModule } from './../auth';
@Module({
imports: [
TypeOrmModule.forRootAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: (configService: ConfigService) => {
return {
type: configService.get('DB_TYPE'),
host: configService.get('DB_HOST'),
port: configService.get('DB_PORT'),
username: configService.get('DB_USERNAME'),
password: configService.get('DB_PASSWORD'),
database: configService.get('DB_DATABASE'),
entities: [__dirname + './../**/**.entity{.ts,.js}'],
synchronize: configService.isEnv('dev'),
} as TypeOrmModuleAsyncOptions;
},
}),
ConfigModule,
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { TypeOrmService } from '../logics/database/typeorm.service';
import { EnvModule } from '../logics/env/env.module';
@Module({
imports: [
TypeOrmModule.forRootAsync({
imports: [EnvModule],
useClass: TypeOrmService,
}),
],
})
export class EntityModule {}
import { CategoryModule } from '@leaa/api/src/modules/category/category.module';
import { ArticleModule } from '@leaa/api/src/modules/article/article.module';
import { AuthTokenModule } from '@leaa/api/src/modules/auth-token/auth-token.module';
import { AttachmentModule } from '@leaa/api/src/modules/attachment/attachment.module';
import { PermissionModule } from '@leaa/api/src/modules/permission/permission.module';
import { SettingModule } from '@leaa/api/src/modules/setting/setting.module';
import { OauthModule } from '@leaa/api/src/modules/oauth/oauth.module';
import { TagModule } from '@leaa/api/src/modules/tag/tag.module';
import { CouponModule } from '@leaa/api/src/modules/coupon/coupon.module';
import { PromoModule } from '@leaa/api/src/modules/promo/promo.module';
import { ProductModule } from '@leaa/api/src/modules/product/product.module';
@Module({
imports: [
CacheModule.register(),
TypeOrmModule.forRootAsync({
useClass: TypeormService,
}),
GraphQLModule.forRootAsync({
imports: [AuthModule],
useClass: GraphqlService,
}),
ConfigModule,
SeedModule,
PlaygroundModule,
IndexModule,
//
AuthModule,
UserModule,
PermissionModule,
RoleModule,
CategoryModule,