2.1.0 • Published 6 months ago
@homeofthings/nestjs-utils v2.1.0
HomeOfThings - common utilities for NestJs
installation
npm install @homeofthings/nestjs-utilsDynamic Modules
quick start
export const MY_MODULE_OPTIONS_TOKEN = 'MY_MODULE_OPTIONS_TOKEN';
export interface MyModuleOptions {
....
}
@Module({
providers: [MyService],
exports: [MyService],
})
export class MyModule extends createDynamicRootModule<MyModule, MyModuleOptions>(MY_MODULE_OPTIONS_TOKEN) {
}NOTE: additional module properties for 'imports', 'exports', 'providers' or 'controllers' can be passed as second parameter to this function
NOTE: of course the module can also be global scoped by the @Global() decorator
- use it synchronously:
const myModuleOptions: MyModuleOptions = {
...
}
@Module({
imports: [MyModule.forRoot(MyModule, myModuleOptions)],
})
export class AppModule {}- use it asynchonously:
const myAsyncModuleOptions: AsyncModuleOptions<MyModuleOptions> = {
...
}
@Module({
imports: [MyModule.forRootAsync(MyModule, myAsyncModuleOptions)],
})
export class AppModule {}NOTE: forRoot/forRootAsync throws if the module is already registered. You can call register/registerAsync if you really want to register it more than once
- import it in any child module:
@Module({
imports: [MyModule.forChild()],
})
export class ChildModule {}NOTE: no need to do this if the module is global scoped
examples
- providing single option using either
forRootorforRootAsync
- providing multiple options using eihter
registerorregisterAsync(e.g. providing multiple connections)
more utilities
class LruCache<T>- LRU cacheclass AsyncContext<T>- asynchronouse contest based onAsyncLocalStorage