UNPKG

1.49 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.ContextCreator = void 0;
4const constants_1 = require("../injector/constants");
5class ContextCreator {
6 createContext(instance, callback, metadataKey, contextId = constants_1.STATIC_CONTEXT, inquirerId) {
7 const globalMetadata = this.getGlobalMetadata &&
8 this.getGlobalMetadata(contextId, inquirerId);
9 const classMetadata = this.reflectClassMetadata(instance, metadataKey);
10 const methodMetadata = this.reflectMethodMetadata(callback, metadataKey);
11 return [
12 ...this.createConcreteContext(globalMetadata || [], contextId, inquirerId),
13 ...this.createConcreteContext(classMetadata, contextId, inquirerId),
14 ...this.createConcreteContext(methodMetadata, contextId, inquirerId),
15 ];
16 }
17 reflectClassMetadata(instance, metadataKey) {
18 const prototype = Object.getPrototypeOf(instance);
19 return Reflect.getMetadata(metadataKey, prototype.constructor);
20 }
21 reflectMethodMetadata(callback, metadataKey) {
22 return Reflect.getMetadata(metadataKey, callback);
23 }
24 getContextId(contextId, instanceWrapper) {
25 return contextId.getParent
26 ? contextId.getParent({
27 token: instanceWrapper.token,
28 isTreeDurable: instanceWrapper.isDependencyTreeDurable(),
29 })
30 : contextId;
31 }
32}
33exports.ContextCreator = ContextCreator;