@appotter/nestjs-s3
Version:
NestJS provider to integrates with AWS S3
41 lines (37 loc) • 1.03 kB
text/typescript
import { DynamicModule, Module, Provider } from '@nestjs/common';
import { S3_CONFIGURATION } from './constants';
import { S3Service } from './s3.service';
import { Options, OptionsAsync } from './interfaces';
export class S3Module {
public static register(config: Options): DynamicModule {
return {
module: S3Module,
providers: [
{
provide: S3_CONFIGURATION,
useValue: config,
},
S3Service,
],
exports: [S3_CONFIGURATION, S3Service],
};
}
public static async registerAsync(
config: OptionsAsync,
): Promise<DynamicModule> {
return {
module: S3Module,
imports: config.imports || [],
providers: [this.createAsyncProviders(config), S3Service],
exports: [S3_CONFIGURATION, S3Service],
};
}
private static createAsyncProviders(options: OptionsAsync): Provider {
return {
provide: S3_CONFIGURATION,
useFactory: options.useFactory,
inject: options.inject || [],
};
}
}