UNPKG

2.97 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const constants_1 = require("@nestjs/common/constants");
4const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
5const iterare_1 = require("iterare");
6const context_creator_1 = require("../helpers/context-creator");
7const constants_2 = require("../injector/constants");
8class InterceptorsContextCreator 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.INTERCEPTORS_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((interceptor) => interceptor && (interceptor.name || interceptor.intercept))
24 .map(interceptor => this.getInterceptorInstance(interceptor, contextId, inquirerId))
25 .filter((interceptor) => interceptor && shared_utils_1.isFunction(interceptor.intercept))
26 .toArray();
27 }
28 getInterceptorInstance(interceptor, contextId = constants_2.STATIC_CONTEXT, inquirerId) {
29 const isObject = interceptor.intercept;
30 if (isObject) {
31 return interceptor;
32 }
33 const instanceWrapper = this.getInstanceByMetatype(interceptor);
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 globalInterceptors = this.config.getGlobalInterceptors();
56 if (contextId === constants_2.STATIC_CONTEXT && !inquirerId) {
57 return globalInterceptors;
58 }
59 const scopedInterceptorWrappers = this.config.getGlobalRequestInterceptors();
60 const scopedInterceptors = scopedInterceptorWrappers
61 .map(wrapper => wrapper.getInstanceByContextId(contextId, inquirerId))
62 .filter(host => host)
63 .map(host => host.instance);
64 return globalInterceptors.concat(scopedInterceptors);
65 }
66}
67exports.InterceptorsContextCreator = InterceptorsContextCreator;