1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const tslib_1 = require("tslib");
|
4 | const common_1 = require("@nestjs/common");
|
5 | const modules_container_1 = require("../injector/modules-container");
|
6 | let DiscoveryService = class DiscoveryService {
|
7 | constructor(modulesContainer) {
|
8 | this.modulesContainer = modulesContainer;
|
9 | }
|
10 | getProviders(options = {}, modules = this.getModules(options)) {
|
11 | const providers = modules.map(item => [...item.providers.values()]);
|
12 | return common_1.flatten(providers);
|
13 | }
|
14 | getControllers(options = {}, modules = this.getModules(options)) {
|
15 | const controllers = modules.map(item => [...item.controllers.values()]);
|
16 | return common_1.flatten(controllers);
|
17 | }
|
18 | getModules(options = {}) {
|
19 | if (!options.include) {
|
20 | const moduleRefs = [...this.modulesContainer.values()];
|
21 | return moduleRefs;
|
22 | }
|
23 | const whitelisted = this.includeWhitelisted(options.include);
|
24 | return whitelisted;
|
25 | }
|
26 | includeWhitelisted(include) {
|
27 | const moduleRefs = [...this.modulesContainer.values()];
|
28 | return moduleRefs.filter(({ metatype }) => include.some(item => item === metatype));
|
29 | }
|
30 | };
|
31 | DiscoveryService = tslib_1.__decorate([
|
32 | common_1.Injectable(),
|
33 | tslib_1.__metadata("design:paramtypes", [modules_container_1.ModulesContainer])
|
34 | ], DiscoveryService);
|
35 | exports.DiscoveryService = DiscoveryService;
|