@chelseaapps/zoom documentation
Modules
ZoomModule
dependenciesLegend Declarations Module Bootstrap Providers Exportscluster_ZoomModulecluster_ZoomModule_exportscluster_ZoomModule_providersZoomServiceZoomServiceZoomModuleZoomModuleZoomModule->ZoomServiceZoomServiceZoomServiceZoomService->ZoomModule
import { Module, DynamicModule, Provider, Global, HttpModule } from '@nestjs/common';
import { ZoomService } from './zoom.service';
import { ZOOM_OPTIONS } from './constants';
import { ZoomOptions, ZoomAsyncOptions, ZoomOptionsFactory } from './interfaces';
import { createZoomProviders } from './zoom.providers';
@Global()
@Module({
imports: [HttpModule],
providers: [ZoomService],
exports: [ZoomService],
})
export class ZoomModule {
/**
* Registers a configured Zoom Module for import into the current module
*/
public static register(options: ZoomOptions): DynamicModule {
return {
module: ZoomModule,
providers: createZoomProviders(options),
};
}
/**
* Registers a configured Zoom Module for import into the current module
* using dynamic options (factory, etc)
*/
public static registerAsync(options: ZoomAsyncOptions): DynamicModule {
return {
module: ZoomModule,
providers: [...this.createProviders(options)],
};
}
private static createProviders(options: ZoomAsyncOptions): Provider[] {
if (options.useExisting || options.useFactory) {
return [this.createOptionsProvider(options)];
}
return [
this.createOptionsProvider(options),
{
provide: options.useClass,
useClass: options.useClass,
},
];
}
private static createOptionsProvider(options: ZoomAsyncOptions): Provider {
if (options.useFactory) {
return {
provide: ZOOM_OPTIONS,
useFactory: options.useFactory,
inject: options.inject || [],
};
}
// For useExisting...
return {
provide: ZOOM_OPTIONS,
useFactory: async (optionsFactory: ZoomOptionsFactory) => await optionsFactory.createZoomOptions(),
inject: [options.useExisting || options.useClass],
};
}
}Was this helpful?