UNPKG

1.03 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const tslib_1 = require("tslib");
4const module_token_factory_1 = require("./module-token-factory");
5class ModuleCompiler {
6 constructor(moduleTokenFactory = new module_token_factory_1.ModuleTokenFactory()) {
7 this.moduleTokenFactory = moduleTokenFactory;
8 }
9 async compile(metatype, scope) {
10 const { type, dynamicMetadata } = await this.extractMetadata(metatype);
11 const token = this.moduleTokenFactory.create(type, scope, dynamicMetadata);
12 return { type, dynamicMetadata, token };
13 }
14 async extractMetadata(metatype) {
15 metatype = await metatype;
16 if (!this.isDynamicModule(metatype)) {
17 return { type: metatype };
18 }
19 const { module: type } = metatype, dynamicMetadata = tslib_1.__rest(metatype, ["module"]);
20 return { type, dynamicMetadata };
21 }
22 isDynamicModule(module) {
23 return !!module.module;
24 }
25}
26exports.ModuleCompiler = ModuleCompiler;