bb-inspired
Version:
Core library for BB-inspired NestJS backend
53 lines (52 loc) • 1.74 kB
TypeScript
import { Type } from '@nestjs/common';
import { ModuleMetadata, Abstract, ForwardReference } from '@nestjs/common/interfaces';
export interface OdooInspiredModuleMetadata extends ModuleMetadata {
name: string;
version: string;
description?: string;
dependencies?: string[];
isCore?: boolean;
priority?: number;
settings?: Record<string, any>;
}
export interface ModuleLifecycle {
onModuleInit?(): Promise<void> | void;
onModuleDestroy?(): Promise<void> | void;
onApplicationBootstrap?(): Promise<void> | void;
onApplicationShutdown?(signal?: string): Promise<void> | void;
}
export interface ModuleFactory<T> {
create(options: T): DynamicOdooInspiredModule;
}
export interface DynamicOdooInspiredModule extends OdooInspiredModuleMetadata {
module: Type<any>;
global?: boolean;
}
export interface ModuleConfigOptions {
name: string;
version: string;
enabled?: boolean;
description?: string;
dependencies?: string[];
optionalDependencies?: string[];
providers?: Array<Type<any> | Abstract<any> | ForwardReference | any>;
exports?: Array<Type<any> | Abstract<any> | ForwardReference | string | any>;
entities?: Type<any>[];
controllers?: Type<any>[];
lifecycle?: ModuleLifecycle;
config?: Record<string, any>;
}
export interface ModuleContext {
name: string;
version: string;
config: Record<string, any>;
get<T>(token: Type<T> | string | symbol): T;
logger: {
log(message: any): void;
error(message: any, trace?: string): void;
warn(message: any): void;
debug(message: any): void;
verbose(message: any): void;
};
emit(eventName: string, payload: any): Promise<void>;
}