UNPKG

3.05 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.InterceptorsContextCreator = 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 InterceptorsContextCreator extends context_creator_1.ContextCreator {
10 constructor(container, config) {
11 super();
12 this.container = container;
13 this.config = config;
14 }
15 create(instance, callback, module, contextId = constants_2.STATIC_CONTEXT, inquirerId) {
16 this.moduleContext = module;
17 return this.createContext(instance, callback, constants_1.INTERCEPTORS_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(interceptor => interceptor && (interceptor.name || interceptor.intercept))
25 .map(interceptor => this.getInterceptorInstance(interceptor, contextId, inquirerId))
26 .filter((interceptor) => interceptor && (0, shared_utils_1.isFunction)(interceptor.intercept))
27 .toArray();
28 }
29 getInterceptorInstance(metatype, contextId = constants_2.STATIC_CONTEXT, inquirerId) {
30 const isObject = metatype.intercept;
31 if (isObject) {
32 return metatype;
33 }
34 const instanceWrapper = this.getInstanceByMetatype(metatype);
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 globalInterceptors = this.config.getGlobalInterceptors();
57 if (contextId === constants_2.STATIC_CONTEXT && !inquirerId) {
58 return globalInterceptors;
59 }
60 const scopedInterceptorWrappers = this.config.getGlobalRequestInterceptors();
61 const scopedInterceptors = (0, iterare_1.iterate)(scopedInterceptorWrappers)
62 .map(wrapper => wrapper.getInstanceByContextId(contextId, inquirerId))
63 .filter(host => !!host)
64 .map(host => host.instance)
65 .toArray();
66 return globalInterceptors.concat(scopedInterceptors);
67 }
68}
69exports.InterceptorsContextCreator = InterceptorsContextCreator;