UNPKG

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