1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const constants_1 = require("@nestjs/common/constants");
|
4 | const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
|
5 | const iterare_1 = require("iterare");
|
6 | const context_creator_1 = require("../helpers/context-creator");
|
7 | const constants_2 = require("../injector/constants");
|
8 | class PipesContextCreator extends context_creator_1.ContextCreator {
|
9 | constructor(container, config) {
|
10 | super();
|
11 | this.container = container;
|
12 | this.config = config;
|
13 | }
|
14 | create(instance, callback, module, contextId = constants_2.STATIC_CONTEXT, inquirerId) {
|
15 | this.moduleContext = module;
|
16 | return this.createContext(instance, callback, constants_1.PIPES_METADATA, contextId, inquirerId);
|
17 | }
|
18 | createConcreteContext(metadata, contextId = constants_2.STATIC_CONTEXT, inquirerId) {
|
19 | if (shared_utils_1.isEmpty(metadata)) {
|
20 | return [];
|
21 | }
|
22 | return iterare_1.default(metadata)
|
23 | .filter((pipe) => pipe && (pipe.name || pipe.transform))
|
24 | .map(pipe => this.getPipeInstance(pipe, contextId, inquirerId))
|
25 | .filter(pipe => pipe && pipe.transform && shared_utils_1.isFunction(pipe.transform))
|
26 | .toArray();
|
27 | }
|
28 | getPipeInstance(pipe, contextId = constants_2.STATIC_CONTEXT, inquirerId) {
|
29 | const isObject = pipe.transform;
|
30 | if (isObject) {
|
31 | return pipe;
|
32 | }
|
33 | const instanceWrapper = this.getInstanceByMetatype(pipe);
|
34 | if (!instanceWrapper) {
|
35 | return null;
|
36 | }
|
37 | const instanceHost = instanceWrapper.getInstanceByContextId(contextId, inquirerId);
|
38 | return instanceHost && instanceHost.instance;
|
39 | }
|
40 | getInstanceByMetatype(metatype) {
|
41 | if (!this.moduleContext) {
|
42 | return undefined;
|
43 | }
|
44 | const collection = this.container.getModules();
|
45 | const module = collection.get(this.moduleContext);
|
46 | if (!module) {
|
47 | return undefined;
|
48 | }
|
49 | return module.injectables.get(metatype.name);
|
50 | }
|
51 | getGlobalMetadata(contextId = constants_2.STATIC_CONTEXT, inquirerId) {
|
52 | if (!this.config) {
|
53 | return [];
|
54 | }
|
55 | const globalPipes = this.config.getGlobalPipes();
|
56 | if (contextId === constants_2.STATIC_CONTEXT && !inquirerId) {
|
57 | return globalPipes;
|
58 | }
|
59 | const scopedPipeWrappers = this.config.getGlobalRequestPipes();
|
60 | const scopedPipes = scopedPipeWrappers
|
61 | .map(wrapper => wrapper.getInstanceByContextId(contextId, inquirerId))
|
62 | .filter(host => host)
|
63 | .map(host => host.instance);
|
64 | return globalPipes.concat(scopedPipes);
|
65 | }
|
66 | setModuleContext(context) {
|
67 | this.moduleContext = context;
|
68 | }
|
69 | }
|
70 | exports.PipesContextCreator = PipesContextCreator;
|