@homeofthings/nestjs-utils
v2.0.3
Published
HomeOfThings - NestJs Utils: various utilities and common types
Downloads
146
Readme
HomeOfThings - common utilities for NestJs
installation
npm install @homeofthings/nestjs-utils
Dynamic 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
forRoot
orforRootAsync
- providing multiple options using eihter
register
orregisterAsync
(e.g. providing multiple connections)
more utilities
class LruCache<T>
- LRU cacheclass AsyncContext<T>
- asynchronouse contest based onAsyncLocalStorage