@nestjs/core
Version:
Nest - modern, fast, powerful node.js web framework (@core)
36 lines (35 loc) • 1.39 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.ModuleCompiler = void 0;
class ModuleCompiler {
constructor(_moduleOpaqueKeyFactory) {
this._moduleOpaqueKeyFactory = _moduleOpaqueKeyFactory;
}
get moduleOpaqueKeyFactory() {
return this._moduleOpaqueKeyFactory;
}
async compile(moduleClsOrDynamic) {
moduleClsOrDynamic = await moduleClsOrDynamic;
const { type, dynamicMetadata } = this.extractMetadata(moduleClsOrDynamic);
const token = dynamicMetadata
? this._moduleOpaqueKeyFactory.createForDynamic(type, dynamicMetadata, moduleClsOrDynamic)
: this._moduleOpaqueKeyFactory.createForStatic(type, moduleClsOrDynamic);
return { type, dynamicMetadata, token };
}
extractMetadata(moduleClsOrDynamic) {
if (!this.isDynamicModule(moduleClsOrDynamic)) {
return {
type: moduleClsOrDynamic?.forwardRef
? moduleClsOrDynamic.forwardRef()
: moduleClsOrDynamic,
dynamicMetadata: undefined,
};
}
const { module: type, ...dynamicMetadata } = moduleClsOrDynamic;
return { type, dynamicMetadata };
}
isDynamicModule(moduleClsOrDynamic) {
return !!moduleClsOrDynamic.module;
}
}
exports.ModuleCompiler = ModuleCompiler;
;