inversify 6.1.4 → 6.1.5-beta.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 (267) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/README.md +6 -15
  3. package/es/container/container.d.ts +2 -0
  4. package/es/container/module_activation_store.d.ts +2 -2
  5. package/es/interfaces/interfaces.d.ts +2 -2
  6. package/es/inversify.d.ts +1 -0
  7. package/es/inversify.js +3 -2
  8. package/es/inversify.js.LICENSE.txt +14 -0
  9. package/lib/annotation/decorator_utils.js +31 -25
  10. package/lib/annotation/inject.js +20 -10
  11. package/lib/annotation/inject_base.js +6 -6
  12. package/lib/annotation/injectable.js +20 -10
  13. package/lib/annotation/multi_inject.js +20 -10
  14. package/lib/annotation/named.js +20 -10
  15. package/lib/annotation/optional.js +20 -10
  16. package/lib/annotation/post_construct.js +21 -11
  17. package/lib/annotation/pre_destroy.js +21 -11
  18. package/lib/annotation/property_event_decorator.js +4 -4
  19. package/lib/annotation/tagged.js +2 -2
  20. package/lib/annotation/target_name.js +21 -11
  21. package/lib/annotation/unmanaged.js +21 -11
  22. package/lib/bindings/binding.js +23 -10
  23. package/lib/constants/error_msgs.js +15 -29
  24. package/lib/constants/literal_types.js +3 -3
  25. package/lib/container/container.d.ts +2 -0
  26. package/lib/container/container.js +317 -566
  27. package/lib/container/container_module.js +11 -9
  28. package/lib/container/container_snapshot.js +10 -8
  29. package/lib/container/lookup.js +61 -56
  30. package/lib/container/module_activation_store.d.ts +2 -2
  31. package/lib/container/module_activation_store.js +21 -24
  32. package/lib/interfaces/interfaces.d.ts +2 -2
  33. package/lib/inversify.d.ts +1 -0
  34. package/lib/inversify.js +19 -8
  35. package/lib/planning/context.js +12 -9
  36. package/lib/planning/metadata.js +27 -16
  37. package/lib/planning/metadata_reader.js +29 -24
  38. package/lib/planning/plan.js +5 -4
  39. package/lib/planning/planner.js +62 -53
  40. package/lib/planning/queryable_string.js +16 -16
  41. package/lib/planning/reflection_utils.js +25 -17
  42. package/lib/planning/request.js +15 -8
  43. package/lib/resolution/instantiation.js +59 -119
  44. package/lib/resolution/resolver.js +89 -134
  45. package/lib/scope/scope.js +17 -62
  46. package/lib/syntax/binding_in_syntax.js +12 -12
  47. package/lib/syntax/binding_in_when_on_syntax.js +50 -47
  48. package/lib/syntax/binding_on_syntax.js +9 -9
  49. package/lib/syntax/binding_to_syntax.js +70 -49
  50. package/lib/syntax/binding_when_on_syntax.js +42 -40
  51. package/lib/syntax/binding_when_syntax.js +54 -76
  52. package/lib/syntax/constraint_helpers.js +31 -23
  53. package/lib/utils/async.js +1 -1
  54. package/lib/utils/binding_utils.js +31 -29
  55. package/lib/utils/exceptions.js +19 -9
  56. package/lib/utils/id.js +1 -1
  57. package/lib/utils/js.js +2 -3
  58. package/lib/utils/serialization.js +42 -33
  59. package/package.json +14 -15
  60. package/amd/annotation/decorator_utils.d.ts +0 -16
  61. package/amd/annotation/decorator_utils.js +0 -119
  62. package/amd/annotation/inject.d.ts +0 -5
  63. package/amd/annotation/inject.js +0 -31
  64. package/amd/annotation/inject_base.d.ts +0 -4
  65. package/amd/annotation/inject_base.js +0 -16
  66. package/amd/annotation/injectable.d.ts +0 -2
  67. package/amd/annotation/injectable.js +0 -40
  68. package/amd/annotation/lazy_service_identifier.js +0 -4
  69. package/amd/annotation/multi_inject.d.ts +0 -5
  70. package/amd/annotation/multi_inject.js +0 -31
  71. package/amd/annotation/named.d.ts +0 -2
  72. package/amd/annotation/named.js +0 -32
  73. package/amd/annotation/optional.d.ts +0 -2
  74. package/amd/annotation/optional.js +0 -32
  75. package/amd/annotation/post_construct.d.ts +0 -4
  76. package/amd/annotation/post_construct.js +0 -32
  77. package/amd/annotation/pre_destroy.d.ts +0 -4
  78. package/amd/annotation/pre_destroy.js +0 -32
  79. package/amd/annotation/property_event_decorator.d.ts +0 -4
  80. package/amd/annotation/property_event_decorator.js +0 -16
  81. package/amd/annotation/tagged.d.ts +0 -2
  82. package/amd/annotation/tagged.js +0 -8
  83. package/amd/annotation/target_name.d.ts +0 -3
  84. package/amd/annotation/target_name.js +0 -35
  85. package/amd/annotation/unmanaged.d.ts +0 -3
  86. package/amd/annotation/unmanaged.js +0 -35
  87. package/amd/bindings/binding.d.ts +0 -20
  88. package/amd/bindings/binding.js +0 -40
  89. package/amd/bindings/binding_count.d.ts +0 -5
  90. package/amd/bindings/binding_count.js +0 -11
  91. package/amd/constants/error_msgs.d.ts +0 -30
  92. package/amd/constants/error_msgs.js +0 -75
  93. package/amd/constants/literal_types.d.ts +0 -5
  94. package/amd/constants/literal_types.js +0 -28
  95. package/amd/constants/metadata_keys.d.ts +0 -13
  96. package/amd/constants/metadata_keys.js +0 -28
  97. package/amd/container/container.d.ts +0 -73
  98. package/amd/container/container.js +0 -766
  99. package/amd/container/container_module.d.ts +0 -11
  100. package/amd/container/container_module.js +0 -21
  101. package/amd/container/container_snapshot.d.ts +0 -10
  102. package/amd/container/container_snapshot.js +0 -20
  103. package/amd/container/lookup.d.ts +0 -17
  104. package/amd/container/lookup.js +0 -132
  105. package/amd/container/module_activation_store.d.ts +0 -10
  106. package/amd/container/module_activation_store.js +0 -51
  107. package/amd/interfaces/interfaces.d.ts +0 -269
  108. package/amd/interfaces/interfaces.js +0 -4
  109. package/amd/inversify.d.ts +0 -24
  110. package/amd/inversify.js +0 -57
  111. package/amd/planning/context.d.ts +0 -11
  112. package/amd/planning/context.js +0 -19
  113. package/amd/planning/metadata.d.ts +0 -8
  114. package/amd/planning/metadata.js +0 -45
  115. package/amd/planning/metadata_reader.d.ts +0 -6
  116. package/amd/planning/metadata_reader.js +0 -49
  117. package/amd/planning/plan.d.ts +0 -7
  118. package/amd/planning/plan.js +0 -13
  119. package/amd/planning/planner.d.ts +0 -5
  120. package/amd/planning/planner.js +0 -187
  121. package/amd/planning/queryable_string.d.ts +0 -10
  122. package/amd/planning/queryable_string.js +0 -33
  123. package/amd/planning/reflection_utils.d.ts +0 -5
  124. package/amd/planning/reflection_utils.js +0 -55
  125. package/amd/planning/request.d.ts +0 -14
  126. package/amd/planning/request.js +0 -24
  127. package/amd/planning/target.js +0 -111
  128. package/amd/resolution/instantiation.d.ts +0 -3
  129. package/amd/resolution/instantiation.js +0 -219
  130. package/amd/resolution/resolver.d.ts +0 -3
  131. package/amd/resolution/resolver.js +0 -234
  132. package/amd/scope/scope.d.ts +0 -3
  133. package/amd/scope/scope.js +0 -93
  134. package/amd/syntax/binding_in_syntax.d.ts +0 -9
  135. package/amd/syntax/binding_in_syntax.js +0 -24
  136. package/amd/syntax/binding_in_when_on_syntax.d.ts +0 -29
  137. package/amd/syntax/binding_in_when_on_syntax.js +0 -75
  138. package/amd/syntax/binding_on_syntax.d.ts +0 -8
  139. package/amd/syntax/binding_on_syntax.js +0 -20
  140. package/amd/syntax/binding_to_syntax.d.ts +0 -18
  141. package/amd/syntax/binding_to_syntax.js +0 -116
  142. package/amd/syntax/binding_when_on_syntax.d.ts +0 -25
  143. package/amd/syntax/binding_when_on_syntax.js +0 -65
  144. package/amd/syntax/binding_when_syntax.d.ts +0 -21
  145. package/amd/syntax/binding_when_syntax.js +0 -107
  146. package/amd/syntax/constraint_helpers.d.ts +0 -6
  147. package/amd/syntax/constraint_helpers.js +0 -66
  148. package/amd/utils/async.d.ts +0 -3
  149. package/amd/utils/async.js +0 -17
  150. package/amd/utils/binding_utils.d.ts +0 -4
  151. package/amd/utils/binding_utils.js +0 -86
  152. package/amd/utils/clonable.d.ts +0 -3
  153. package/amd/utils/clonable.js +0 -11
  154. package/amd/utils/exceptions.d.ts +0 -2
  155. package/amd/utils/exceptions.js +0 -46
  156. package/amd/utils/factory_type.d.ts +0 -5
  157. package/amd/utils/factory_type.js +0 -11
  158. package/amd/utils/id.d.ts +0 -2
  159. package/amd/utils/id.js +0 -9
  160. package/amd/utils/js.d.ts +0 -1
  161. package/amd/utils/js.js +0 -18
  162. package/amd/utils/serialization.d.ts +0 -10
  163. package/amd/utils/serialization.js +0 -135
  164. package/es6/annotation/decorator_utils.d.ts +0 -16
  165. package/es6/annotation/decorator_utils.js +0 -114
  166. package/es6/annotation/inject.d.ts +0 -5
  167. package/es6/annotation/inject.js +0 -30
  168. package/es6/annotation/inject_base.d.ts +0 -4
  169. package/es6/annotation/inject_base.js +0 -17
  170. package/es6/annotation/injectable.d.ts +0 -2
  171. package/es6/annotation/injectable.js +0 -38
  172. package/es6/annotation/lazy_service_identifier.js +0 -2
  173. package/es6/annotation/multi_inject.d.ts +0 -5
  174. package/es6/annotation/multi_inject.js +0 -30
  175. package/es6/annotation/named.d.ts +0 -2
  176. package/es6/annotation/named.js +0 -32
  177. package/es6/annotation/optional.d.ts +0 -2
  178. package/es6/annotation/optional.js +0 -32
  179. package/es6/annotation/post_construct.d.ts +0 -4
  180. package/es6/annotation/post_construct.js +0 -31
  181. package/es6/annotation/pre_destroy.d.ts +0 -4
  182. package/es6/annotation/pre_destroy.js +0 -31
  183. package/es6/annotation/property_event_decorator.d.ts +0 -4
  184. package/es6/annotation/property_event_decorator.js +0 -15
  185. package/es6/annotation/tagged.d.ts +0 -2
  186. package/es6/annotation/tagged.js +0 -8
  187. package/es6/annotation/target_name.d.ts +0 -3
  188. package/es6/annotation/target_name.js +0 -35
  189. package/es6/annotation/unmanaged.d.ts +0 -3
  190. package/es6/annotation/unmanaged.js +0 -35
  191. package/es6/bindings/binding.d.ts +0 -20
  192. package/es6/bindings/binding.js +0 -39
  193. package/es6/bindings/binding_count.d.ts +0 -5
  194. package/es6/bindings/binding_count.js +0 -9
  195. package/es6/constants/error_msgs.d.ts +0 -30
  196. package/es6/constants/error_msgs.js +0 -59
  197. package/es6/constants/literal_types.d.ts +0 -5
  198. package/es6/constants/literal_types.js +0 -26
  199. package/es6/constants/metadata_keys.d.ts +0 -13
  200. package/es6/constants/metadata_keys.js +0 -26
  201. package/es6/container/container.d.ts +0 -73
  202. package/es6/container/container.js +0 -545
  203. package/es6/container/container_module.d.ts +0 -11
  204. package/es6/container/container_module.js +0 -18
  205. package/es6/container/container_snapshot.d.ts +0 -10
  206. package/es6/container/container_snapshot.js +0 -15
  207. package/es6/container/lookup.d.ts +0 -17
  208. package/es6/container/lookup.js +0 -125
  209. package/es6/container/module_activation_store.d.ts +0 -10
  210. package/es6/container/module_activation_store.js +0 -49
  211. package/es6/interfaces/interfaces.d.ts +0 -269
  212. package/es6/interfaces/interfaces.js +0 -2
  213. package/es6/inversify.d.ts +0 -24
  214. package/es6/inversify.js +0 -76
  215. package/es6/planning/context.d.ts +0 -11
  216. package/es6/planning/context.js +0 -17
  217. package/es6/planning/metadata.d.ts +0 -8
  218. package/es6/planning/metadata.js +0 -42
  219. package/es6/planning/metadata_reader.d.ts +0 -6
  220. package/es6/planning/metadata_reader.js +0 -44
  221. package/es6/planning/plan.d.ts +0 -7
  222. package/es6/planning/plan.js +0 -10
  223. package/es6/planning/planner.d.ts +0 -5
  224. package/es6/planning/planner.js +0 -194
  225. package/es6/planning/queryable_string.d.ts +0 -10
  226. package/es6/planning/queryable_string.js +0 -30
  227. package/es6/planning/reflection_utils.d.ts +0 -5
  228. package/es6/planning/reflection_utils.js +0 -53
  229. package/es6/planning/request.d.ts +0 -14
  230. package/es6/planning/request.js +0 -22
  231. package/es6/planning/target.js +0 -105
  232. package/es6/resolution/instantiation.d.ts +0 -3
  233. package/es6/resolution/instantiation.js +0 -158
  234. package/es6/resolution/resolver.d.ts +0 -3
  235. package/es6/resolution/resolver.js +0 -193
  236. package/es6/scope/scope.d.ts +0 -3
  237. package/es6/scope/scope.js +0 -57
  238. package/es6/syntax/binding_in_syntax.d.ts +0 -9
  239. package/es6/syntax/binding_in_syntax.js +0 -23
  240. package/es6/syntax/binding_in_when_on_syntax.d.ts +0 -29
  241. package/es6/syntax/binding_in_when_on_syntax.js +0 -75
  242. package/es6/syntax/binding_on_syntax.d.ts +0 -8
  243. package/es6/syntax/binding_on_syntax.js +0 -18
  244. package/es6/syntax/binding_to_syntax.d.ts +0 -18
  245. package/es6/syntax/binding_to_syntax.js +0 -110
  246. package/es6/syntax/binding_when_on_syntax.d.ts +0 -25
  247. package/es6/syntax/binding_when_on_syntax.js +0 -64
  248. package/es6/syntax/binding_when_syntax.d.ts +0 -21
  249. package/es6/syntax/binding_when_syntax.js +0 -84
  250. package/es6/syntax/constraint_helpers.d.ts +0 -6
  251. package/es6/syntax/constraint_helpers.js +0 -63
  252. package/es6/utils/async.d.ts +0 -3
  253. package/es6/utils/async.js +0 -15
  254. package/es6/utils/binding_utils.d.ts +0 -4
  255. package/es6/utils/binding_utils.js +0 -79
  256. package/es6/utils/clonable.d.ts +0 -3
  257. package/es6/utils/clonable.js +0 -9
  258. package/es6/utils/exceptions.d.ts +0 -2
  259. package/es6/utils/exceptions.js +0 -44
  260. package/es6/utils/factory_type.d.ts +0 -5
  261. package/es6/utils/factory_type.js +0 -9
  262. package/es6/utils/id.d.ts +0 -2
  263. package/es6/utils/id.js +0 -7
  264. package/es6/utils/js.d.ts +0 -1
  265. package/es6/utils/js.js +0 -15
  266. package/es6/utils/serialization.d.ts +0 -10
  267. package/es6/utils/serialization.js +0 -132
@@ -1,44 +0,0 @@
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.MetadataReader = void 0;
27
- const METADATA_KEY = __importStar(require("../constants/metadata_keys"));
28
- class MetadataReader {
29
- getConstructorMetadata(constructorFunc) {
30
- var _a;
31
- const compilerGeneratedMetadata = (_a = Reflect.getMetadata(METADATA_KEY.DESIGN_PARAM_TYPES, constructorFunc)) !== null && _a !== void 0 ? _a : [];
32
- const userGeneratedMetadata = Reflect.getMetadata(METADATA_KEY.TAGGED, constructorFunc);
33
- return {
34
- compilerGeneratedMetadata,
35
- userGeneratedMetadata: userGeneratedMetadata !== null && userGeneratedMetadata !== void 0 ? userGeneratedMetadata : {},
36
- };
37
- }
38
- getPropertiesMetadata(constructorFunc) {
39
- var _a;
40
- const userGeneratedMetadata = (_a = Reflect.getMetadata(METADATA_KEY.TAGGED_PROP, constructorFunc)) !== null && _a !== void 0 ? _a : {};
41
- return userGeneratedMetadata;
42
- }
43
- }
44
- exports.MetadataReader = MetadataReader;
@@ -1,7 +0,0 @@
1
- import { interfaces } from '../interfaces/interfaces';
2
- declare class Plan implements interfaces.Plan {
3
- parentContext: interfaces.Context;
4
- rootRequest: interfaces.Request;
5
- constructor(parentContext: interfaces.Context, rootRequest: interfaces.Request);
6
- }
7
- export { Plan };
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Plan = void 0;
4
- class Plan {
5
- constructor(parentContext, rootRequest) {
6
- this.parentContext = parentContext;
7
- this.rootRequest = rootRequest;
8
- }
9
- }
10
- exports.Plan = Plan;
@@ -1,5 +0,0 @@
1
- import { interfaces } from '../interfaces/interfaces';
2
- declare function getBindingDictionary(cntnr: interfaces.Container): interfaces.Lookup<interfaces.Binding<unknown>>;
3
- declare function plan(metadataReader: interfaces.MetadataReader, container: interfaces.Container, isMultiInject: boolean, targetType: interfaces.TargetType, serviceIdentifier: interfaces.ServiceIdentifier, key?: string | number | symbol, value?: unknown, avoidConstraints?: boolean): interfaces.Context;
4
- declare function createMockRequest(container: interfaces.Container, serviceIdentifier: interfaces.ServiceIdentifier, key: string | number | symbol, value: unknown): interfaces.Request;
5
- export { plan, createMockRequest, getBindingDictionary };
@@ -1,194 +0,0 @@
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.plan = plan;
27
- exports.createMockRequest = createMockRequest;
28
- exports.getBindingDictionary = getBindingDictionary;
29
- const core_1 = require("@inversifyjs/core");
30
- const binding_count_1 = require("../bindings/binding_count");
31
- const ERROR_MSGS = __importStar(require("../constants/error_msgs"));
32
- const literal_types_1 = require("../constants/literal_types");
33
- const METADATA_KEY = __importStar(require("../constants/metadata_keys"));
34
- const exceptions_1 = require("../utils/exceptions");
35
- const serialization_1 = require("../utils/serialization");
36
- const context_1 = require("./context");
37
- const metadata_1 = require("./metadata");
38
- const plan_1 = require("./plan");
39
- const reflection_utils_1 = require("./reflection_utils");
40
- const request_1 = require("./request");
41
- function getBindingDictionary(cntnr) {
42
- return cntnr._bindingDictionary;
43
- }
44
- function _createTarget(isMultiInject, targetType, serviceIdentifier, name, key, value) {
45
- const metadataList = _getTargetMetadata(isMultiInject, serviceIdentifier, key, value);
46
- const classElementMetadata = (0, core_1.getClassElementMetadataFromLegacyMetadata)(metadataList);
47
- if (classElementMetadata.kind === core_1.ClassElementMetadataKind.unmanaged) {
48
- throw new Error('Unexpected metadata when creating target');
49
- }
50
- const target = new core_1.LegacyTargetImpl(name, classElementMetadata, targetType);
51
- return target;
52
- }
53
- function _getActiveBindings(metadataReader, avoidConstraints, context, parentRequest, target) {
54
- let bindings = getBindings(context.container, target.serviceIdentifier);
55
- let activeBindings = [];
56
- if (bindings.length === binding_count_1.BindingCount.NoBindingsAvailable &&
57
- context.container.options.autoBindInjectable === true &&
58
- typeof target.serviceIdentifier === 'function' &&
59
- metadataReader.getConstructorMetadata(target.serviceIdentifier)
60
- .compilerGeneratedMetadata) {
61
- context.container.bind(target.serviceIdentifier).toSelf();
62
- bindings = getBindings(context.container, target.serviceIdentifier);
63
- }
64
- if (!avoidConstraints) {
65
- activeBindings = bindings.filter((binding) => {
66
- const request = new request_1.Request(binding.serviceIdentifier, context, parentRequest, binding, target);
67
- return binding.constraint(request);
68
- });
69
- }
70
- else {
71
- activeBindings = bindings;
72
- }
73
- _validateActiveBindingCount(target.serviceIdentifier, activeBindings, parentRequest, target, context.container);
74
- return activeBindings;
75
- }
76
- function _getTargetMetadata(isMultiInject, serviceIdentifier, key, value) {
77
- const metadataKey = isMultiInject
78
- ? METADATA_KEY.MULTI_INJECT_TAG
79
- : METADATA_KEY.INJECT_TAG;
80
- const metadataList = [
81
- new metadata_1.Metadata(metadataKey, serviceIdentifier),
82
- ];
83
- if (key !== undefined) {
84
- metadataList.push(new metadata_1.Metadata(key, value));
85
- }
86
- return metadataList;
87
- }
88
- function _validateActiveBindingCount(serviceIdentifier, bindings, parentRequest, target, container) {
89
- switch (bindings.length) {
90
- case binding_count_1.BindingCount.NoBindingsAvailable:
91
- if (target.isOptional()) {
92
- return bindings;
93
- }
94
- else {
95
- const serviceIdentifierString = (0, serialization_1.getServiceIdentifierAsString)(serviceIdentifier);
96
- let msg = ERROR_MSGS.NOT_REGISTERED;
97
- msg += (0, serialization_1.listMetadataForTarget)(serviceIdentifierString, target);
98
- msg += (0, serialization_1.listRegisteredBindingsForServiceIdentifier)(container, serviceIdentifierString, getBindings);
99
- if (parentRequest !== null) {
100
- msg += `\n${ERROR_MSGS.TRYING_TO_RESOLVE_BINDINGS((0, serialization_1.getServiceIdentifierAsString)(parentRequest.serviceIdentifier))}`;
101
- }
102
- throw new Error(msg);
103
- }
104
- case binding_count_1.BindingCount.OnlyOneBindingAvailable:
105
- return bindings;
106
- case binding_count_1.BindingCount.MultipleBindingsAvailable:
107
- default:
108
- if (!target.isArray()) {
109
- const serviceIdentifierString = (0, serialization_1.getServiceIdentifierAsString)(serviceIdentifier);
110
- let msg = `${ERROR_MSGS.AMBIGUOUS_MATCH} ${serviceIdentifierString}`;
111
- msg += (0, serialization_1.listRegisteredBindingsForServiceIdentifier)(container, serviceIdentifierString, getBindings);
112
- throw new Error(msg);
113
- }
114
- else {
115
- return bindings;
116
- }
117
- }
118
- }
119
- function _createSubRequests(metadataReader, avoidConstraints, serviceIdentifier, context, parentRequest, target) {
120
- let activeBindings;
121
- let childRequest;
122
- if (parentRequest === null) {
123
- activeBindings = _getActiveBindings(metadataReader, avoidConstraints, context, null, target);
124
- childRequest = new request_1.Request(serviceIdentifier, context, null, activeBindings, target);
125
- const thePlan = new plan_1.Plan(context, childRequest);
126
- context.addPlan(thePlan);
127
- }
128
- else {
129
- activeBindings = _getActiveBindings(metadataReader, avoidConstraints, context, parentRequest, target);
130
- childRequest = parentRequest.addChildRequest(target.serviceIdentifier, activeBindings, target);
131
- }
132
- activeBindings.forEach((binding) => {
133
- let subChildRequest = null;
134
- if (target.isArray()) {
135
- subChildRequest = childRequest.addChildRequest(binding.serviceIdentifier, binding, target);
136
- }
137
- else {
138
- if (binding.cache !== null) {
139
- return;
140
- }
141
- subChildRequest = childRequest;
142
- }
143
- if (binding.type === literal_types_1.BindingTypeEnum.Instance &&
144
- binding.implementationType !== null) {
145
- const dependencies = (0, reflection_utils_1.getDependencies)(metadataReader, binding.implementationType);
146
- if (context.container.options.skipBaseClassChecks !== true) {
147
- const baseClassDependencyCount = (0, reflection_utils_1.getBaseClassDependencyCount)(metadataReader, binding.implementationType);
148
- if (dependencies.length < baseClassDependencyCount) {
149
- const error = ERROR_MSGS.ARGUMENTS_LENGTH_MISMATCH((0, reflection_utils_1.getFunctionName)(binding.implementationType));
150
- throw new Error(error);
151
- }
152
- }
153
- dependencies.forEach((dependency) => {
154
- _createSubRequests(metadataReader, false, dependency.serviceIdentifier, context, subChildRequest, dependency);
155
- });
156
- }
157
- });
158
- }
159
- function getBindings(container, serviceIdentifier) {
160
- let bindings = [];
161
- const bindingDictionary = getBindingDictionary(container);
162
- if (bindingDictionary.hasKey(serviceIdentifier)) {
163
- bindings = bindingDictionary.get(serviceIdentifier);
164
- }
165
- else if (container.parent !== null) {
166
- bindings = getBindings(container.parent, serviceIdentifier);
167
- }
168
- return bindings;
169
- }
170
- function plan(metadataReader, container, isMultiInject, targetType, serviceIdentifier, key, value, avoidConstraints = false) {
171
- const context = new context_1.Context(container);
172
- const target = _createTarget(isMultiInject, targetType, serviceIdentifier, '', key, value);
173
- try {
174
- _createSubRequests(metadataReader, avoidConstraints, serviceIdentifier, context, null, target);
175
- return context;
176
- }
177
- catch (error) {
178
- if ((0, exceptions_1.isStackOverflowException)(error)) {
179
- (0, serialization_1.circularDependencyToException)(context.plan.rootRequest);
180
- }
181
- throw error;
182
- }
183
- }
184
- function createMockRequest(container, serviceIdentifier, key, value) {
185
- const metadataList = _getTargetMetadata(false, serviceIdentifier, key, value);
186
- const classElementMetadata = (0, core_1.getClassElementMetadataFromLegacyMetadata)(metadataList);
187
- if (classElementMetadata.kind === core_1.ClassElementMetadataKind.unmanaged) {
188
- throw new Error('Unexpected metadata when creating target');
189
- }
190
- const target = new core_1.LegacyTargetImpl('', classElementMetadata, 'Variable');
191
- const context = new context_1.Context(container);
192
- const request = new request_1.Request(serviceIdentifier, context, null, [], target);
193
- return request;
194
- }
@@ -1,10 +0,0 @@
1
- import { interfaces } from '../interfaces/interfaces';
2
- export declare class QueryableString implements interfaces.QueryableString {
3
- private readonly str;
4
- constructor(str: string);
5
- startsWith(searchString: string): boolean;
6
- endsWith(searchString: string): boolean;
7
- contains(searchString: string): boolean;
8
- equals(compareString: string): boolean;
9
- value(): string;
10
- }
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.QueryableString = void 0;
4
- class QueryableString {
5
- constructor(str) {
6
- this.str = str;
7
- }
8
- startsWith(searchString) {
9
- return this.str.indexOf(searchString) === 0;
10
- }
11
- endsWith(searchString) {
12
- let reverseString = '';
13
- const reverseSearchString = searchString
14
- .split('')
15
- .reverse()
16
- .join('');
17
- reverseString = this.str.split('').reverse().join('');
18
- return this.startsWith.call({ str: reverseString }, reverseSearchString);
19
- }
20
- contains(searchString) {
21
- return this.str.indexOf(searchString) !== -1;
22
- }
23
- equals(compareString) {
24
- return this.str === compareString;
25
- }
26
- value() {
27
- return this.str;
28
- }
29
- }
30
- exports.QueryableString = QueryableString;
@@ -1,5 +0,0 @@
1
- import { interfaces } from '../interfaces/interfaces';
2
- import { getFunctionName } from '../utils/serialization';
3
- declare function getDependencies(metadataReader: interfaces.MetadataReader, func: NewableFunction): interfaces.Target[];
4
- declare function getBaseClassDependencyCount(metadataReader: interfaces.MetadataReader, func: NewableFunction): number;
5
- export { getDependencies, getBaseClassDependencyCount, getFunctionName };
@@ -1,53 +0,0 @@
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,14 +0,0 @@
1
- import { interfaces } from '../interfaces/interfaces';
2
- declare class Request implements interfaces.Request {
3
- id: number;
4
- serviceIdentifier: interfaces.ServiceIdentifier;
5
- parentContext: interfaces.Context;
6
- parentRequest: interfaces.Request | null;
7
- bindings: interfaces.Binding<unknown>[];
8
- childRequests: interfaces.Request[];
9
- target: interfaces.Target;
10
- requestScope: interfaces.RequestScope | null;
11
- constructor(serviceIdentifier: interfaces.ServiceIdentifier, parentContext: interfaces.Context, parentRequest: interfaces.Request | null, bindings: interfaces.Binding<any> | interfaces.Binding<any>[], target: interfaces.Target);
12
- addChildRequest(serviceIdentifier: interfaces.ServiceIdentifier, bindings: interfaces.Binding<unknown> | interfaces.Binding<unknown>[], target: interfaces.Target): interfaces.Request;
13
- }
14
- export { Request };
@@ -1,22 +0,0 @@
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,105 +0,0 @@
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;
@@ -1,3 +0,0 @@
1
- import { interfaces } from '../interfaces/interfaces';
2
- declare function resolveInstance<T>(binding: interfaces.Binding<T>, constr: interfaces.Newable<T>, childRequests: interfaces.Request[], resolveRequest: interfaces.ResolveRequestHandler): T | Promise<T>;
3
- export { resolveInstance };