inversify 6.0.2 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/CHANGELOG.md +95 -81
  2. package/LICENSE +22 -22
  3. package/README.md +311 -309
  4. package/amd/annotation/decorator_utils.js +119 -114
  5. package/amd/annotation/inject.js +31 -27
  6. package/amd/annotation/inject_base.js +16 -17
  7. package/amd/annotation/injectable.js +40 -37
  8. package/amd/annotation/lazy_service_identifier.js +4 -15
  9. package/amd/annotation/multi_inject.js +31 -27
  10. package/amd/annotation/named.js +32 -29
  11. package/amd/annotation/optional.js +32 -29
  12. package/amd/annotation/post_construct.js +32 -28
  13. package/amd/annotation/pre_destroy.js +32 -28
  14. package/amd/annotation/property_event_decorator.js +16 -17
  15. package/amd/annotation/tagged.js +8 -9
  16. package/amd/annotation/target_name.js +35 -32
  17. package/amd/annotation/unmanaged.js +35 -32
  18. package/amd/bindings/binding.js +40 -39
  19. package/amd/bindings/binding_count.js +11 -10
  20. package/amd/constants/error_msgs.js +74 -64
  21. package/amd/constants/literal_types.js +28 -28
  22. package/amd/constants/metadata_keys.js +28 -28
  23. package/amd/container/container.js +762 -719
  24. package/amd/container/container_module.js +21 -21
  25. package/amd/container/container_snapshot.js +20 -20
  26. package/amd/container/lookup.js +132 -127
  27. package/amd/container/module_activation_store.js +51 -53
  28. package/amd/interfaces/interfaces.js +4 -10
  29. package/amd/inversify.js +57 -55
  30. package/amd/planning/context.js +19 -19
  31. package/amd/planning/metadata.js +45 -41
  32. package/amd/planning/metadata_reader.js +49 -43
  33. package/amd/planning/plan.js +13 -13
  34. package/amd/planning/planner.js +184 -163
  35. package/amd/planning/queryable_string.js +33 -30
  36. package/amd/planning/reflection_utils.js +55 -157
  37. package/amd/planning/request.js +24 -26
  38. package/amd/planning/target.js +111 -101
  39. package/amd/resolution/instantiation.js +219 -211
  40. package/amd/resolution/resolver.js +234 -222
  41. package/amd/scope/scope.js +93 -93
  42. package/amd/syntax/binding_in_syntax.js +24 -24
  43. package/amd/syntax/binding_in_when_on_syntax.js +75 -75
  44. package/amd/syntax/binding_on_syntax.js +20 -20
  45. package/amd/syntax/binding_to_syntax.js +116 -105
  46. package/amd/syntax/binding_when_on_syntax.js +65 -65
  47. package/amd/syntax/binding_when_syntax.js +107 -102
  48. package/amd/syntax/constraint_helpers.js +66 -61
  49. package/amd/utils/async.js +17 -17
  50. package/amd/utils/binding_utils.js +86 -77
  51. package/amd/utils/clonable.js +11 -12
  52. package/amd/utils/exceptions.js +46 -42
  53. package/amd/utils/factory_type.js +11 -11
  54. package/amd/utils/id.js +9 -10
  55. package/amd/utils/js.js +18 -19
  56. package/amd/utils/serialization.js +135 -129
  57. package/es/annotation/decorator_utils.js +90 -88
  58. package/es/annotation/inject.js +4 -4
  59. package/es/annotation/inject_base.js +14 -14
  60. package/es/annotation/injectable.js +13 -13
  61. package/es/annotation/lazy_service_identifier.js +1 -10
  62. package/es/annotation/multi_inject.js +4 -4
  63. package/es/annotation/named.js +7 -7
  64. package/es/annotation/optional.js +7 -7
  65. package/es/annotation/post_construct.js +5 -5
  66. package/es/annotation/pre_destroy.js +5 -5
  67. package/es/annotation/property_event_decorator.js +13 -13
  68. package/es/annotation/tagged.js +6 -6
  69. package/es/annotation/target_name.js +10 -10
  70. package/es/annotation/unmanaged.js +10 -10
  71. package/es/bindings/binding.js +37 -36
  72. package/es/bindings/binding_count.js +6 -5
  73. package/es/constants/error_msgs.js +62 -52
  74. package/es/constants/literal_types.js +21 -21
  75. package/es/constants/metadata_keys.js +23 -23
  76. package/es/container/container.js +746 -707
  77. package/es/container/container_module.js +17 -17
  78. package/es/container/container_snapshot.js +15 -15
  79. package/es/container/lookup.js +105 -104
  80. package/es/container/module_activation_store.js +47 -49
  81. package/es/interfaces/interfaces.js +1 -5
  82. package/es/inversify.js +23 -25
  83. package/es/planning/context.js +15 -15
  84. package/es/planning/metadata.js +17 -17
  85. package/es/planning/metadata_reader.js +21 -19
  86. package/es/planning/plan.js +8 -8
  87. package/es/planning/planner.js +165 -147
  88. package/es/planning/queryable_string.js +28 -25
  89. package/es/planning/reflection_utils.js +27 -135
  90. package/es/planning/request.js +20 -22
  91. package/es/planning/target.js +87 -81
  92. package/es/resolution/instantiation.js +195 -190
  93. package/es/resolution/resolver.js +214 -205
  94. package/es/scope/scope.js +88 -88
  95. package/es/syntax/binding_in_syntax.js +21 -21
  96. package/es/syntax/binding_in_when_on_syntax.js +73 -73
  97. package/es/syntax/binding_on_syntax.js +16 -16
  98. package/es/syntax/binding_to_syntax.js +91 -84
  99. package/es/syntax/binding_when_on_syntax.js +62 -62
  100. package/es/syntax/binding_when_syntax.js +104 -99
  101. package/es/syntax/constraint_helpers.js +36 -35
  102. package/es/utils/async.js +12 -11
  103. package/es/utils/binding_utils.js +58 -53
  104. package/es/utils/clonable.js +7 -7
  105. package/es/utils/exceptions.js +16 -16
  106. package/es/utils/factory_type.js +6 -6
  107. package/es/utils/id.js +5 -5
  108. package/es/utils/js.js +13 -13
  109. package/es/utils/serialization.js +103 -100
  110. package/es6/annotation/decorator_utils.js +114 -109
  111. package/es6/annotation/inject.js +30 -26
  112. package/es6/annotation/inject_base.js +17 -18
  113. package/es6/annotation/injectable.js +38 -35
  114. package/es6/annotation/lazy_service_identifier.js +2 -12
  115. package/es6/annotation/multi_inject.js +30 -26
  116. package/es6/annotation/named.js +32 -29
  117. package/es6/annotation/optional.js +32 -29
  118. package/es6/annotation/post_construct.js +31 -27
  119. package/es6/annotation/pre_destroy.js +31 -27
  120. package/es6/annotation/property_event_decorator.js +15 -16
  121. package/es6/annotation/tagged.js +8 -9
  122. package/es6/annotation/target_name.js +35 -32
  123. package/es6/annotation/unmanaged.js +35 -32
  124. package/es6/bindings/binding.js +39 -38
  125. package/es6/bindings/binding_count.js +9 -8
  126. package/es6/constants/error_msgs.js +58 -53
  127. package/es6/constants/literal_types.js +26 -26
  128. package/es6/constants/metadata_keys.js +26 -26
  129. package/es6/container/container.js +541 -520
  130. package/es6/container/container_module.js +18 -18
  131. package/es6/container/container_snapshot.js +15 -15
  132. package/es6/container/lookup.js +125 -120
  133. package/es6/container/module_activation_store.js +49 -51
  134. package/es6/interfaces/interfaces.js +2 -8
  135. package/es6/inversify.js +76 -76
  136. package/es6/planning/context.js +17 -17
  137. package/es6/planning/metadata.js +42 -38
  138. package/es6/planning/metadata_reader.js +44 -38
  139. package/es6/planning/plan.js +10 -10
  140. package/es6/planning/planner.js +191 -170
  141. package/es6/planning/queryable_string.js +30 -27
  142. package/es6/planning/reflection_utils.js +53 -155
  143. package/es6/planning/request.js +22 -24
  144. package/es6/planning/target.js +105 -99
  145. package/es6/resolution/instantiation.js +158 -151
  146. package/es6/resolution/resolver.js +193 -187
  147. package/es6/scope/scope.js +57 -57
  148. package/es6/syntax/binding_in_syntax.js +23 -23
  149. package/es6/syntax/binding_in_when_on_syntax.js +75 -75
  150. package/es6/syntax/binding_on_syntax.js +18 -18
  151. package/es6/syntax/binding_to_syntax.js +110 -105
  152. package/es6/syntax/binding_when_on_syntax.js +64 -64
  153. package/es6/syntax/binding_when_syntax.js +84 -79
  154. package/es6/syntax/constraint_helpers.js +63 -58
  155. package/es6/utils/async.js +15 -15
  156. package/es6/utils/binding_utils.js +79 -68
  157. package/es6/utils/clonable.js +9 -10
  158. package/es6/utils/exceptions.js +44 -40
  159. package/es6/utils/factory_type.js +9 -9
  160. package/es6/utils/id.js +7 -8
  161. package/es6/utils/js.js +15 -16
  162. package/es6/utils/serialization.js +132 -126
  163. package/lib/annotation/decorator_utils.d.ts +16 -16
  164. package/lib/annotation/decorator_utils.js +118 -113
  165. package/lib/annotation/inject.d.ts +5 -2
  166. package/lib/annotation/inject.js +30 -26
  167. package/lib/annotation/inject_base.d.ts +4 -3
  168. package/lib/annotation/inject_base.js +17 -18
  169. package/lib/annotation/injectable.d.ts +2 -2
  170. package/lib/annotation/injectable.js +38 -35
  171. package/lib/annotation/lazy_service_identifier.d.ts +3 -7
  172. package/lib/annotation/lazy_service_identifier.js +2 -13
  173. package/lib/annotation/multi_inject.d.ts +5 -2
  174. package/lib/annotation/multi_inject.js +30 -26
  175. package/lib/annotation/named.d.ts +2 -2
  176. package/lib/annotation/named.js +32 -29
  177. package/lib/annotation/optional.d.ts +2 -2
  178. package/lib/annotation/optional.js +32 -29
  179. package/lib/annotation/post_construct.d.ts +4 -4
  180. package/lib/annotation/post_construct.js +31 -27
  181. package/lib/annotation/pre_destroy.d.ts +4 -4
  182. package/lib/annotation/pre_destroy.js +31 -27
  183. package/lib/annotation/property_event_decorator.d.ts +4 -4
  184. package/lib/annotation/property_event_decorator.js +15 -16
  185. package/lib/annotation/tagged.d.ts +2 -2
  186. package/lib/annotation/tagged.js +8 -9
  187. package/lib/annotation/target_name.d.ts +3 -3
  188. package/lib/annotation/target_name.js +35 -32
  189. package/lib/annotation/unmanaged.d.ts +3 -3
  190. package/lib/annotation/unmanaged.js +35 -32
  191. package/lib/bindings/binding.d.ts +20 -20
  192. package/lib/bindings/binding.js +40 -39
  193. package/lib/bindings/binding_count.d.ts +5 -5
  194. package/lib/bindings/binding_count.js +9 -8
  195. package/lib/constants/error_msgs.d.ts +30 -32
  196. package/lib/constants/error_msgs.js +72 -62
  197. package/lib/constants/literal_types.d.ts +5 -5
  198. package/lib/constants/literal_types.js +26 -26
  199. package/lib/constants/metadata_keys.d.ts +13 -13
  200. package/lib/constants/metadata_keys.js +26 -26
  201. package/lib/container/container.d.ts +73 -73
  202. package/lib/container/container.js +772 -729
  203. package/lib/container/container_module.d.ts +11 -11
  204. package/lib/container/container_module.js +20 -20
  205. package/lib/container/container_snapshot.d.ts +10 -10
  206. package/lib/container/container_snapshot.js +18 -18
  207. package/lib/container/lookup.d.ts +17 -16
  208. package/lib/container/lookup.js +131 -126
  209. package/lib/container/module_activation_store.d.ts +10 -10
  210. package/lib/container/module_activation_store.js +50 -52
  211. package/lib/interfaces/interfaces.d.ts +269 -284
  212. package/lib/interfaces/interfaces.js +2 -8
  213. package/lib/inversify.d.ts +24 -25
  214. package/lib/inversify.js +76 -76
  215. package/lib/planning/context.d.ts +11 -11
  216. package/lib/planning/context.js +18 -18
  217. package/lib/planning/metadata.d.ts +8 -8
  218. package/lib/planning/metadata.js +43 -39
  219. package/lib/planning/metadata_reader.d.ts +6 -6
  220. package/lib/planning/metadata_reader.js +47 -41
  221. package/lib/planning/plan.d.ts +7 -7
  222. package/lib/planning/plan.js +11 -11
  223. package/lib/planning/planner.d.ts +5 -5
  224. package/lib/planning/planner.js +192 -171
  225. package/lib/planning/queryable_string.d.ts +10 -11
  226. package/lib/planning/queryable_string.js +31 -28
  227. package/lib/planning/reflection_utils.d.ts +5 -5
  228. package/lib/planning/reflection_utils.js +55 -159
  229. package/lib/planning/request.d.ts +14 -14
  230. package/lib/planning/request.js +23 -25
  231. package/lib/planning/target.d.ts +23 -23
  232. package/lib/planning/target.js +113 -103
  233. package/lib/resolution/instantiation.d.ts +3 -3
  234. package/lib/resolution/instantiation.js +220 -212
  235. package/lib/resolution/resolver.d.ts +3 -3
  236. package/lib/resolution/resolver.js +239 -227
  237. package/lib/scope/scope.d.ts +3 -3
  238. package/lib/scope/scope.js +93 -93
  239. package/lib/syntax/binding_in_syntax.d.ts +9 -9
  240. package/lib/syntax/binding_in_syntax.js +24 -24
  241. package/lib/syntax/binding_in_when_on_syntax.d.ts +29 -29
  242. package/lib/syntax/binding_in_when_on_syntax.js +76 -76
  243. package/lib/syntax/binding_on_syntax.d.ts +8 -8
  244. package/lib/syntax/binding_on_syntax.js +19 -19
  245. package/lib/syntax/binding_to_syntax.d.ts +18 -18
  246. package/lib/syntax/binding_to_syntax.js +117 -106
  247. package/lib/syntax/binding_when_on_syntax.d.ts +25 -25
  248. package/lib/syntax/binding_when_on_syntax.js +65 -65
  249. package/lib/syntax/binding_when_syntax.d.ts +21 -21
  250. package/lib/syntax/binding_when_syntax.js +107 -102
  251. package/lib/syntax/constraint_helpers.d.ts +6 -6
  252. package/lib/syntax/constraint_helpers.js +65 -60
  253. package/lib/tsconfig.tsbuildinfo +1 -1
  254. package/lib/utils/async.d.ts +3 -3
  255. package/lib/utils/async.js +15 -15
  256. package/lib/utils/binding_utils.d.ts +4 -4
  257. package/lib/utils/binding_utils.js +87 -78
  258. package/lib/utils/clonable.d.ts +3 -3
  259. package/lib/utils/clonable.js +9 -10
  260. package/lib/utils/exceptions.d.ts +2 -2
  261. package/lib/utils/exceptions.js +44 -40
  262. package/lib/utils/factory_type.d.ts +5 -5
  263. package/lib/utils/factory_type.js +9 -9
  264. package/lib/utils/id.d.ts +2 -2
  265. package/lib/utils/id.js +7 -8
  266. package/lib/utils/js.d.ts +1 -1
  267. package/lib/utils/js.js +16 -17
  268. package/lib/utils/serialization.d.ts +10 -10
  269. package/lib/utils/serialization.js +133 -127
  270. package/package.json +74 -61
  271. package/.nyc_output/16b95af9-19b9-451c-8475-9a8585677128.json +0 -1
  272. package/.nyc_output/processinfo/16b95af9-19b9-451c-8475-9a8585677128.json +0 -1
  273. package/.nyc_output/processinfo/index.json +0 -1
@@ -1,155 +1,53 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.getFunctionName = exports.getBaseClassDependencyCount = exports.getDependencies = void 0;
23
- const lazy_service_identifier_1 = require("../annotation/lazy_service_identifier");
24
- const ERROR_MSGS = __importStar(require("../constants/error_msgs"));
25
- const literal_types_1 = require("../constants/literal_types");
26
- const METADATA_KEY = __importStar(require("../constants/metadata_keys"));
27
- const serialization_1 = require("../utils/serialization");
28
- Object.defineProperty(exports, "getFunctionName", { enumerable: true, get: function () { return serialization_1.getFunctionName; } });
29
- const target_1 = require("./target");
30
- function getDependencies(metadataReader, func) {
31
- const constructorName = (0, serialization_1.getFunctionName)(func);
32
- return getTargets(metadataReader, constructorName, func, false);
33
- }
34
- exports.getDependencies = getDependencies;
35
- function getTargets(metadataReader, constructorName, func, isBaseClass) {
36
- const metadata = metadataReader.getConstructorMetadata(func);
37
- const serviceIdentifiers = metadata.compilerGeneratedMetadata;
38
- if (serviceIdentifiers === undefined) {
39
- const msg = `${ERROR_MSGS.MISSING_INJECTABLE_ANNOTATION} ${constructorName}.`;
40
- throw new Error(msg);
41
- }
42
- const constructorArgsMetadata = metadata.userGeneratedMetadata;
43
- const keys = Object.keys(constructorArgsMetadata);
44
- const hasUserDeclaredUnknownInjections = (func.length === 0 && keys.length > 0);
45
- const hasOptionalParameters = keys.length > func.length;
46
- const iterations = (hasUserDeclaredUnknownInjections || hasOptionalParameters) ? keys.length : func.length;
47
- const constructorTargets = getConstructorArgsAsTargets(isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata, iterations);
48
- const propertyTargets = getClassPropsAsTargets(metadataReader, func, constructorName);
49
- const targets = [
50
- ...constructorTargets,
51
- ...propertyTargets
52
- ];
53
- return targets;
54
- }
55
- function getConstructorArgsAsTarget(index, isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata) {
56
- const targetMetadata = constructorArgsMetadata[index.toString()] || [];
57
- const metadata = formatTargetMetadata(targetMetadata);
58
- const isManaged = metadata.unmanaged !== true;
59
- let serviceIdentifier = serviceIdentifiers[index];
60
- const injectIdentifier = metadata.inject || metadata.multiInject;
61
- serviceIdentifier = (injectIdentifier ? injectIdentifier : serviceIdentifier);
62
- if (serviceIdentifier instanceof lazy_service_identifier_1.LazyServiceIdentifier) {
63
- serviceIdentifier = serviceIdentifier.unwrap();
64
- }
65
- if (isManaged) {
66
- const isObject = serviceIdentifier === Object;
67
- const isFunction = serviceIdentifier === Function;
68
- const isUndefined = serviceIdentifier === undefined;
69
- const isUnknownType = isObject || isFunction || isUndefined;
70
- if (!isBaseClass && isUnknownType) {
71
- const msg = `${ERROR_MSGS.MISSING_INJECT_ANNOTATION} argument ${index} in class ${constructorName}.`;
72
- throw new Error(msg);
73
- }
74
- const target = new target_1.Target(literal_types_1.TargetTypeEnum.ConstructorArgument, metadata.targetName, serviceIdentifier);
75
- target.metadata = targetMetadata;
76
- return target;
77
- }
78
- return null;
79
- }
80
- function getConstructorArgsAsTargets(isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata, iterations) {
81
- const targets = [];
82
- for (let i = 0; i < iterations; i++) {
83
- const index = i;
84
- const target = getConstructorArgsAsTarget(index, isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata);
85
- if (target !== null) {
86
- targets.push(target);
87
- }
88
- }
89
- return targets;
90
- }
91
- function _getServiceIdentifierForProperty(inject, multiInject, propertyName, className) {
92
- const serviceIdentifier = (inject || multiInject);
93
- if (serviceIdentifier === undefined) {
94
- const msg = `${ERROR_MSGS.MISSING_INJECTABLE_ANNOTATION} for property ${String(propertyName)} in class ${className}.`;
95
- throw new Error(msg);
96
- }
97
- return serviceIdentifier;
98
- }
99
- function getClassPropsAsTargets(metadataReader, constructorFunc, constructorName) {
100
- const classPropsMetadata = metadataReader.getPropertiesMetadata(constructorFunc);
101
- let targets = [];
102
- const symbolKeys = Object.getOwnPropertySymbols(classPropsMetadata);
103
- const stringKeys = Object.keys(classPropsMetadata);
104
- const keys = stringKeys.concat(symbolKeys);
105
- for (const key of keys) {
106
- const targetMetadata = classPropsMetadata[key];
107
- const metadata = formatTargetMetadata(targetMetadata);
108
- const identifier = metadata.targetName || key;
109
- const serviceIdentifier = _getServiceIdentifierForProperty(metadata.inject, metadata.multiInject, key, constructorName);
110
- const target = new target_1.Target(literal_types_1.TargetTypeEnum.ClassProperty, identifier, serviceIdentifier);
111
- target.metadata = targetMetadata;
112
- targets.push(target);
113
- }
114
- const baseConstructor = Object.getPrototypeOf(constructorFunc.prototype).constructor;
115
- if (baseConstructor !== Object) {
116
- const baseTargets = getClassPropsAsTargets(metadataReader, baseConstructor, constructorName);
117
- targets = [
118
- ...targets,
119
- ...baseTargets
120
- ];
121
- }
122
- return targets;
123
- }
124
- function getBaseClassDependencyCount(metadataReader, func) {
125
- const baseConstructor = Object.getPrototypeOf(func.prototype).constructor;
126
- if (baseConstructor !== Object) {
127
- const baseConstructorName = (0, serialization_1.getFunctionName)(baseConstructor);
128
- const targets = getTargets(metadataReader, baseConstructorName, baseConstructor, true);
129
- const metadata = targets.map((t) => t.metadata.filter(m => m.key === METADATA_KEY.UNMANAGED_TAG));
130
- const unmanagedCount = [].concat.apply([], metadata).length;
131
- const dependencyCount = targets.length - unmanagedCount;
132
- if (dependencyCount > 0) {
133
- return dependencyCount;
134
- }
135
- else {
136
- return getBaseClassDependencyCount(metadataReader, baseConstructor);
137
- }
138
- }
139
- else {
140
- return 0;
141
- }
142
- }
143
- exports.getBaseClassDependencyCount = getBaseClassDependencyCount;
144
- function formatTargetMetadata(targetMetadata) {
145
- const targetMetadataMap = {};
146
- targetMetadata.forEach((m) => {
147
- targetMetadataMap[m.key.toString()] = m.value;
148
- });
149
- return {
150
- inject: targetMetadataMap[METADATA_KEY.INJECT_TAG],
151
- multiInject: targetMetadataMap[METADATA_KEY.MULTI_INJECT_TAG],
152
- targetName: targetMetadataMap[METADATA_KEY.NAME_TAG],
153
- unmanaged: targetMetadataMap[METADATA_KEY.UNMANAGED_TAG]
154
- };
155
- }
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.getFunctionName = void 0;
27
+ exports.getDependencies = getDependencies;
28
+ exports.getBaseClassDependencyCount = getBaseClassDependencyCount;
29
+ const core_1 = require("@inversifyjs/core");
30
+ const METADATA_KEY = __importStar(require("../constants/metadata_keys"));
31
+ const serialization_1 = require("../utils/serialization");
32
+ Object.defineProperty(exports, "getFunctionName", { enumerable: true, get: function () { return serialization_1.getFunctionName; } });
33
+ function getDependencies(metadataReader, func) {
34
+ return (0, core_1.getTargets)(metadataReader)(func);
35
+ }
36
+ function getBaseClassDependencyCount(metadataReader, func) {
37
+ const baseConstructor = Object.getPrototypeOf(func.prototype).constructor;
38
+ if (baseConstructor !== Object) {
39
+ const targets = (0, core_1.getTargets)(metadataReader)(baseConstructor);
40
+ const metadata = targets.map((t) => t.metadata.filter((m) => m.key === METADATA_KEY.UNMANAGED_TAG));
41
+ const unmanagedCount = [].concat.apply([], metadata).length;
42
+ const dependencyCount = targets.length - unmanagedCount;
43
+ if (dependencyCount > 0) {
44
+ return dependencyCount;
45
+ }
46
+ else {
47
+ return getBaseClassDependencyCount(metadataReader, baseConstructor);
48
+ }
49
+ }
50
+ else {
51
+ return 0;
52
+ }
53
+ }
@@ -1,24 +1,22 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Request = void 0;
4
- const id_1 = require("../utils/id");
5
- class Request {
6
- constructor(serviceIdentifier, parentContext, parentRequest, bindings, target) {
7
- this.id = (0, id_1.id)();
8
- this.serviceIdentifier = serviceIdentifier;
9
- this.parentContext = parentContext;
10
- this.parentRequest = parentRequest;
11
- this.target = target;
12
- this.childRequests = [];
13
- this.bindings = (Array.isArray(bindings) ? bindings : [bindings]);
14
- this.requestScope = parentRequest === null
15
- ? new Map()
16
- : null;
17
- }
18
- addChildRequest(serviceIdentifier, bindings, target) {
19
- const child = new Request(serviceIdentifier, this.parentContext, this, bindings, target);
20
- this.childRequests.push(child);
21
- return child;
22
- }
23
- }
24
- exports.Request = Request;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Request = void 0;
4
+ const id_1 = require("../utils/id");
5
+ class Request {
6
+ constructor(serviceIdentifier, parentContext, parentRequest, bindings, target) {
7
+ this.id = (0, id_1.id)();
8
+ this.serviceIdentifier = serviceIdentifier;
9
+ this.parentContext = parentContext;
10
+ this.parentRequest = parentRequest;
11
+ this.target = target;
12
+ this.childRequests = [];
13
+ this.bindings = Array.isArray(bindings) ? bindings : [bindings];
14
+ this.requestScope = parentRequest === null ? new Map() : null;
15
+ }
16
+ addChildRequest(serviceIdentifier, bindings, target) {
17
+ const child = new Request(serviceIdentifier, this.parentContext, this, bindings, target);
18
+ this.childRequests.push(child);
19
+ return child;
20
+ }
21
+ }
22
+ exports.Request = Request;
@@ -1,99 +1,105 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.Target = void 0;
23
- const METADATA_KEY = __importStar(require("../constants/metadata_keys"));
24
- const id_1 = require("../utils/id");
25
- const serialization_1 = require("../utils/serialization");
26
- const metadata_1 = require("./metadata");
27
- const queryable_string_1 = require("./queryable_string");
28
- class Target {
29
- constructor(type, identifier, serviceIdentifier, namedOrTagged) {
30
- this.id = (0, id_1.id)();
31
- this.type = type;
32
- this.serviceIdentifier = serviceIdentifier;
33
- const queryableName = typeof identifier === 'symbol' ? (0, serialization_1.getSymbolDescription)(identifier) : identifier;
34
- this.name = new queryable_string_1.QueryableString(queryableName || '');
35
- this.identifier = identifier;
36
- this.metadata = new Array();
37
- let metadataItem = null;
38
- if (typeof namedOrTagged === 'string') {
39
- metadataItem = new metadata_1.Metadata(METADATA_KEY.NAMED_TAG, namedOrTagged);
40
- }
41
- else if (namedOrTagged instanceof metadata_1.Metadata) {
42
- metadataItem = namedOrTagged;
43
- }
44
- if (metadataItem !== null) {
45
- this.metadata.push(metadataItem);
46
- }
47
- }
48
- hasTag(key) {
49
- for (const m of this.metadata) {
50
- if (m.key === key) {
51
- return true;
52
- }
53
- }
54
- return false;
55
- }
56
- isArray() {
57
- return this.hasTag(METADATA_KEY.MULTI_INJECT_TAG);
58
- }
59
- matchesArray(name) {
60
- return this.matchesTag(METADATA_KEY.MULTI_INJECT_TAG)(name);
61
- }
62
- isNamed() {
63
- return this.hasTag(METADATA_KEY.NAMED_TAG);
64
- }
65
- isTagged() {
66
- return this.metadata.some((metadata) => METADATA_KEY.NON_CUSTOM_TAG_KEYS.every((key) => metadata.key !== key));
67
- }
68
- isOptional() {
69
- return this.matchesTag(METADATA_KEY.OPTIONAL_TAG)(true);
70
- }
71
- getNamedTag() {
72
- if (this.isNamed()) {
73
- return this.metadata.filter((m) => m.key === METADATA_KEY.NAMED_TAG)[0];
74
- }
75
- return null;
76
- }
77
- getCustomTags() {
78
- if (this.isTagged()) {
79
- return this.metadata.filter((metadata) => METADATA_KEY.NON_CUSTOM_TAG_KEYS.every((key) => metadata.key !== key));
80
- }
81
- else {
82
- return null;
83
- }
84
- }
85
- matchesNamedTag(name) {
86
- return this.matchesTag(METADATA_KEY.NAMED_TAG)(name);
87
- }
88
- matchesTag(key) {
89
- return (value) => {
90
- for (const m of this.metadata) {
91
- if (m.key === key && m.value === value) {
92
- return true;
93
- }
94
- }
95
- return false;
96
- };
97
- }
98
- }
99
- exports.Target = Target;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.Target = void 0;
27
+ const METADATA_KEY = __importStar(require("../constants/metadata_keys"));
28
+ const id_1 = require("../utils/id");
29
+ const serialization_1 = require("../utils/serialization");
30
+ const metadata_1 = require("./metadata");
31
+ const queryable_string_1 = require("./queryable_string");
32
+ class Target {
33
+ constructor(type, identifier, serviceIdentifier, namedOrTagged) {
34
+ this.id = (0, id_1.id)();
35
+ this.type = type;
36
+ this.serviceIdentifier = serviceIdentifier;
37
+ const queryableName = typeof identifier === 'symbol'
38
+ ? (0, serialization_1.getSymbolDescription)(identifier)
39
+ : identifier;
40
+ this.name = new queryable_string_1.QueryableString(queryableName || '');
41
+ this.identifier = identifier;
42
+ this.metadata = new Array();
43
+ let metadataItem = null;
44
+ if (typeof namedOrTagged === 'string') {
45
+ metadataItem = new metadata_1.Metadata(METADATA_KEY.NAMED_TAG, namedOrTagged);
46
+ }
47
+ else if (namedOrTagged instanceof metadata_1.Metadata) {
48
+ metadataItem = namedOrTagged;
49
+ }
50
+ if (metadataItem !== null) {
51
+ this.metadata.push(metadataItem);
52
+ }
53
+ }
54
+ hasTag(key) {
55
+ for (const m of this.metadata) {
56
+ if (m.key === key) {
57
+ return true;
58
+ }
59
+ }
60
+ return false;
61
+ }
62
+ isArray() {
63
+ return this.hasTag(METADATA_KEY.MULTI_INJECT_TAG);
64
+ }
65
+ matchesArray(name) {
66
+ return this.matchesTag(METADATA_KEY.MULTI_INJECT_TAG)(name);
67
+ }
68
+ isNamed() {
69
+ return this.hasTag(METADATA_KEY.NAMED_TAG);
70
+ }
71
+ isTagged() {
72
+ return this.metadata.some((metadata) => METADATA_KEY.NON_CUSTOM_TAG_KEYS.every((key) => metadata.key !== key));
73
+ }
74
+ isOptional() {
75
+ return this.matchesTag(METADATA_KEY.OPTIONAL_TAG)(true);
76
+ }
77
+ getNamedTag() {
78
+ if (this.isNamed()) {
79
+ return this.metadata.filter((m) => m.key === METADATA_KEY.NAMED_TAG)[0];
80
+ }
81
+ return null;
82
+ }
83
+ getCustomTags() {
84
+ if (this.isTagged()) {
85
+ return this.metadata.filter((metadata) => METADATA_KEY.NON_CUSTOM_TAG_KEYS.every((key) => metadata.key !== key));
86
+ }
87
+ else {
88
+ return null;
89
+ }
90
+ }
91
+ matchesNamedTag(name) {
92
+ return this.matchesTag(METADATA_KEY.NAMED_TAG)(name);
93
+ }
94
+ matchesTag(key) {
95
+ return (value) => {
96
+ for (const m of this.metadata) {
97
+ if (m.key === key && m.value === value) {
98
+ return true;
99
+ }
100
+ }
101
+ return false;
102
+ };
103
+ }
104
+ }
105
+ exports.Target = Target;