inversify 6.0.3 → 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.
- package/CHANGELOG.md +9 -0
- package/README.md +14 -14
- package/amd/annotation/decorator_utils.js +3 -1
- package/amd/annotation/inject_base.js +1 -1
- package/amd/annotation/lazy_service_identifier.js +0 -11
- package/amd/bindings/binding.js +3 -2
- package/amd/bindings/binding_count.js +6 -5
- package/amd/constants/error_msgs.js +18 -18
- package/amd/constants/literal_types.js +3 -3
- package/amd/container/container.js +73 -34
- package/amd/container/lookup.js +15 -14
- package/amd/container/module_activation_store.js +8 -10
- package/amd/interfaces/interfaces.js +0 -5
- package/amd/inversify.js +3 -5
- package/amd/planning/metadata_reader.js +5 -3
- package/amd/planning/planner.js +31 -13
- package/amd/planning/queryable_string.js +5 -2
- package/amd/planning/reflection_utils.js +6 -112
- package/amd/planning/request.js +2 -4
- package/amd/planning/target.js +9 -3
- package/amd/resolution/instantiation.js +10 -5
- package/amd/resolution/resolver.js +19 -10
- package/amd/scope/scope.js +1 -1
- package/amd/syntax/binding_to_syntax.js +14 -7
- package/amd/syntax/binding_when_syntax.js +13 -8
- package/amd/syntax/constraint_helpers.js +4 -3
- package/amd/utils/async.js +3 -2
- package/amd/utils/binding_utils.js +8 -3
- package/amd/utils/clonable.js +4 -4
- package/amd/utils/exceptions.js +1 -1
- package/amd/utils/serialization.js +11 -8
- package/es/annotation/decorator_utils.js +3 -1
- package/es/annotation/inject_base.js +1 -1
- package/es/annotation/lazy_service_identifier.js +1 -10
- package/es/annotation/target_name.js +3 -3
- package/es/bindings/binding.js +3 -2
- package/es/bindings/binding_count.js +6 -5
- package/es/constants/error_msgs.js +17 -17
- package/es/constants/literal_types.js +3 -3
- package/es/container/container.js +74 -35
- package/es/container/lookup.js +15 -14
- package/es/container/module_activation_store.js +8 -10
- package/es/interfaces/interfaces.js +1 -5
- package/es/inversify.js +4 -6
- package/es/planning/metadata_reader.js +5 -3
- package/es/planning/planner.js +34 -16
- package/es/planning/queryable_string.js +5 -2
- package/es/planning/reflection_utils.js +6 -114
- package/es/planning/request.js +2 -4
- package/es/planning/target.js +9 -3
- package/es/resolution/instantiation.js +11 -6
- package/es/resolution/resolver.js +20 -11
- package/es/scope/scope.js +1 -1
- package/es/syntax/binding_to_syntax.js +18 -11
- package/es/syntax/binding_when_syntax.js +14 -9
- package/es/syntax/constraint_helpers.js +5 -4
- package/es/utils/async.js +3 -2
- package/es/utils/binding_utils.js +8 -3
- package/es/utils/clonable.js +4 -4
- package/es/utils/exceptions.js +1 -1
- package/es/utils/serialization.js +12 -9
- package/es6/annotation/decorator_utils.js +5 -3
- package/es6/annotation/inject_base.js +1 -1
- package/es6/annotation/lazy_service_identifier.js +0 -10
- package/es6/bindings/binding.js +3 -2
- package/es6/bindings/binding_count.js +6 -5
- package/es6/constants/error_msgs.js +5 -9
- package/es6/constants/literal_types.js +3 -3
- package/es6/container/container.js +59 -42
- package/es6/container/lookup.js +15 -14
- package/es6/container/module_activation_store.js +8 -10
- package/es6/interfaces/interfaces.js +0 -5
- package/es6/inversify.js +3 -7
- package/es6/planning/metadata_reader.js +5 -3
- package/es6/planning/planner.js +31 -13
- package/es6/planning/queryable_string.js +5 -2
- package/es6/planning/reflection_utils.js +4 -110
- package/es6/planning/request.js +2 -4
- package/es6/planning/target.js +3 -1
- package/es6/resolution/instantiation.js +9 -5
- package/es6/resolution/resolver.js +11 -8
- package/es6/scope/scope.js +1 -1
- package/es6/syntax/binding_to_syntax.js +5 -4
- package/es6/syntax/binding_when_syntax.js +13 -8
- package/es6/syntax/constraint_helpers.js +4 -3
- package/es6/utils/async.js +3 -2
- package/es6/utils/binding_utils.js +10 -3
- package/es6/utils/clonable.js +4 -4
- package/es6/utils/exceptions.js +1 -1
- package/es6/utils/serialization.js +11 -8
- package/lib/annotation/decorator_utils.d.ts +2 -2
- package/lib/annotation/decorator_utils.js +3 -1
- package/lib/annotation/inject.d.ts +4 -1
- package/lib/annotation/inject_base.d.ts +3 -2
- package/lib/annotation/inject_base.js +1 -1
- package/lib/annotation/lazy_service_identifier.d.ts +1 -5
- package/lib/annotation/lazy_service_identifier.js +0 -11
- package/lib/annotation/multi_inject.d.ts +4 -1
- package/lib/annotation/tagged.d.ts +1 -1
- package/lib/annotation/target_name.d.ts +1 -1
- package/lib/bindings/binding.js +3 -2
- package/lib/bindings/binding_count.d.ts +5 -5
- package/lib/bindings/binding_count.js +6 -5
- package/lib/constants/error_msgs.d.ts +18 -20
- package/lib/constants/error_msgs.js +18 -18
- package/lib/constants/literal_types.js +3 -3
- package/lib/constants/metadata_keys.d.ts +12 -12
- package/lib/container/container.d.ts +2 -2
- package/lib/container/container.js +73 -34
- package/lib/container/lookup.d.ts +2 -1
- package/lib/container/lookup.js +15 -14
- package/lib/container/module_activation_store.d.ts +1 -1
- package/lib/container/module_activation_store.js +8 -10
- package/lib/interfaces/interfaces.d.ts +14 -29
- package/lib/interfaces/interfaces.js +0 -5
- package/lib/inversify.d.ts +5 -6
- package/lib/inversify.js +3 -7
- package/lib/planning/metadata_reader.js +5 -3
- package/lib/planning/planner.js +31 -13
- package/lib/planning/queryable_string.d.ts +2 -3
- package/lib/planning/queryable_string.js +5 -2
- package/lib/planning/reflection_utils.js +6 -114
- package/lib/planning/request.d.ts +2 -2
- package/lib/planning/request.js +2 -4
- package/lib/planning/target.d.ts +1 -1
- package/lib/planning/target.js +9 -3
- package/lib/resolution/instantiation.js +10 -5
- package/lib/resolution/resolver.js +19 -10
- package/lib/scope/scope.js +1 -1
- package/lib/syntax/binding_in_syntax.d.ts +1 -1
- package/lib/syntax/binding_in_when_on_syntax.d.ts +7 -7
- package/lib/syntax/binding_on_syntax.d.ts +1 -1
- package/lib/syntax/binding_to_syntax.d.ts +4 -4
- package/lib/syntax/binding_to_syntax.js +14 -7
- package/lib/syntax/binding_when_on_syntax.d.ts +6 -6
- package/lib/syntax/binding_when_syntax.d.ts +4 -4
- package/lib/syntax/binding_when_syntax.js +13 -8
- package/lib/syntax/constraint_helpers.d.ts +2 -2
- package/lib/syntax/constraint_helpers.js +4 -3
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/utils/async.js +3 -2
- package/lib/utils/binding_utils.js +8 -3
- package/lib/utils/clonable.js +4 -4
- package/lib/utils/exceptions.js +1 -1
- package/lib/utils/serialization.d.ts +3 -3
- package/lib/utils/serialization.js +11 -8
- package/package.json +18 -4
- package/.nyc_output/c29b2307-4e95-47d0-b220-9efcfa7ee49f.json +0 -1
- package/.nyc_output/processinfo/c29b2307-4e95-47d0-b220-9efcfa7ee49f.json +0 -1
- package/.nyc_output/processinfo/index.json +0 -1
package/lib/planning/planner.js
CHANGED
|
@@ -26,6 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.plan = plan;
|
|
27
27
|
exports.createMockRequest = createMockRequest;
|
|
28
28
|
exports.getBindingDictionary = getBindingDictionary;
|
|
29
|
+
var core_1 = require("@inversifyjs/core");
|
|
29
30
|
var binding_count_1 = require("../bindings/binding_count");
|
|
30
31
|
var ERROR_MSGS = __importStar(require("../constants/error_msgs"));
|
|
31
32
|
var literal_types_1 = require("../constants/literal_types");
|
|
@@ -37,27 +38,26 @@ var metadata_1 = require("./metadata");
|
|
|
37
38
|
var plan_1 = require("./plan");
|
|
38
39
|
var reflection_utils_1 = require("./reflection_utils");
|
|
39
40
|
var request_1 = require("./request");
|
|
40
|
-
var target_1 = require("./target");
|
|
41
41
|
function getBindingDictionary(cntnr) {
|
|
42
42
|
return cntnr._bindingDictionary;
|
|
43
43
|
}
|
|
44
44
|
function _createTarget(isMultiInject, targetType, serviceIdentifier, name, key, value) {
|
|
45
|
-
var
|
|
46
|
-
var
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
var tagMetadata = new metadata_1.Metadata(key, value);
|
|
50
|
-
target.metadata.push(tagMetadata);
|
|
45
|
+
var metadataList = _getTargetMetadata(isMultiInject, serviceIdentifier, key, value);
|
|
46
|
+
var classElementMetadata = (0, core_1.getClassElementMetadataFromLegacyMetadata)(metadataList);
|
|
47
|
+
if (classElementMetadata.kind === core_1.ClassElementMetadataKind.unmanaged) {
|
|
48
|
+
throw new Error('Unexpected metadata when creating target');
|
|
51
49
|
}
|
|
50
|
+
var target = new core_1.LegacyTargetImpl(name, classElementMetadata, targetType);
|
|
52
51
|
return target;
|
|
53
52
|
}
|
|
54
53
|
function _getActiveBindings(metadataReader, avoidConstraints, context, parentRequest, target) {
|
|
55
54
|
var bindings = getBindings(context.container, target.serviceIdentifier);
|
|
56
55
|
var activeBindings = [];
|
|
57
56
|
if (bindings.length === binding_count_1.BindingCount.NoBindingsAvailable &&
|
|
58
|
-
context.container.options.autoBindInjectable &&
|
|
57
|
+
context.container.options.autoBindInjectable === true &&
|
|
59
58
|
typeof target.serviceIdentifier === 'function' &&
|
|
60
|
-
metadataReader.getConstructorMetadata(target.serviceIdentifier)
|
|
59
|
+
metadataReader.getConstructorMetadata(target.serviceIdentifier)
|
|
60
|
+
.compilerGeneratedMetadata) {
|
|
61
61
|
context.container.bind(target.serviceIdentifier).toSelf();
|
|
62
62
|
bindings = getBindings(context.container, target.serviceIdentifier);
|
|
63
63
|
}
|
|
@@ -73,6 +73,18 @@ function _getActiveBindings(metadataReader, avoidConstraints, context, parentReq
|
|
|
73
73
|
_validateActiveBindingCount(target.serviceIdentifier, activeBindings, target, context.container);
|
|
74
74
|
return activeBindings;
|
|
75
75
|
}
|
|
76
|
+
function _getTargetMetadata(isMultiInject, serviceIdentifier, key, value) {
|
|
77
|
+
var metadataKey = isMultiInject
|
|
78
|
+
? METADATA_KEY.MULTI_INJECT_TAG
|
|
79
|
+
: METADATA_KEY.INJECT_TAG;
|
|
80
|
+
var 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
|
+
}
|
|
76
88
|
function _validateActiveBindingCount(serviceIdentifier, bindings, target, container) {
|
|
77
89
|
switch (bindings.length) {
|
|
78
90
|
case binding_count_1.BindingCount.NoBindingsAvailable:
|
|
@@ -120,14 +132,15 @@ function _createSubRequests(metadataReader, avoidConstraints, serviceIdentifier,
|
|
|
120
132
|
subChildRequest = childRequest.addChildRequest(binding.serviceIdentifier, binding, target);
|
|
121
133
|
}
|
|
122
134
|
else {
|
|
123
|
-
if (binding.cache) {
|
|
135
|
+
if (binding.cache !== null) {
|
|
124
136
|
return;
|
|
125
137
|
}
|
|
126
138
|
subChildRequest = childRequest;
|
|
127
139
|
}
|
|
128
|
-
if (binding.type === literal_types_1.BindingTypeEnum.Instance &&
|
|
140
|
+
if (binding.type === literal_types_1.BindingTypeEnum.Instance &&
|
|
141
|
+
binding.implementationType !== null) {
|
|
129
142
|
var dependencies = (0, reflection_utils_1.getDependencies)(metadataReader, binding.implementationType);
|
|
130
|
-
if (
|
|
143
|
+
if (context.container.options.skipBaseClassChecks !== true) {
|
|
131
144
|
var baseClassDependencyCount = (0, reflection_utils_1.getBaseClassDependencyCount)(metadataReader, binding.implementationType);
|
|
132
145
|
if (dependencies.length < baseClassDependencyCount) {
|
|
133
146
|
var error = ERROR_MSGS.ARGUMENTS_LENGTH_MISMATCH((0, reflection_utils_1.getFunctionName)(binding.implementationType));
|
|
@@ -167,7 +180,12 @@ function plan(metadataReader, container, isMultiInject, targetType, serviceIdent
|
|
|
167
180
|
}
|
|
168
181
|
}
|
|
169
182
|
function createMockRequest(container, serviceIdentifier, key, value) {
|
|
170
|
-
var
|
|
183
|
+
var metadataList = _getTargetMetadata(false, serviceIdentifier, key, value);
|
|
184
|
+
var classElementMetadata = (0, core_1.getClassElementMetadataFromLegacyMetadata)(metadataList);
|
|
185
|
+
if (classElementMetadata.kind === core_1.ClassElementMetadataKind.unmanaged) {
|
|
186
|
+
throw new Error('Unexpected metadata when creating target');
|
|
187
|
+
}
|
|
188
|
+
var target = new core_1.LegacyTargetImpl('', classElementMetadata, 'Variable');
|
|
171
189
|
var context = new context_1.Context(container);
|
|
172
190
|
var request = new request_1.Request(serviceIdentifier, context, null, [], target);
|
|
173
191
|
return request;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { interfaces } from '../interfaces/interfaces';
|
|
2
|
-
declare class QueryableString implements interfaces.QueryableString {
|
|
3
|
-
private str;
|
|
2
|
+
export declare class QueryableString implements interfaces.QueryableString {
|
|
3
|
+
private readonly str;
|
|
4
4
|
constructor(str: string);
|
|
5
5
|
startsWith(searchString: string): boolean;
|
|
6
6
|
endsWith(searchString: string): boolean;
|
|
@@ -8,4 +8,3 @@ declare class QueryableString implements interfaces.QueryableString {
|
|
|
8
8
|
equals(compareString: string): boolean;
|
|
9
9
|
value(): string;
|
|
10
10
|
}
|
|
11
|
-
export { QueryableString };
|
|
@@ -10,12 +10,15 @@ var QueryableString = (function () {
|
|
|
10
10
|
};
|
|
11
11
|
QueryableString.prototype.endsWith = function (searchString) {
|
|
12
12
|
var reverseString = '';
|
|
13
|
-
var reverseSearchString = searchString
|
|
13
|
+
var reverseSearchString = searchString
|
|
14
|
+
.split('')
|
|
15
|
+
.reverse()
|
|
16
|
+
.join('');
|
|
14
17
|
reverseString = this.str.split('').reverse().join('');
|
|
15
18
|
return this.startsWith.call({ str: reverseString }, reverseSearchString);
|
|
16
19
|
};
|
|
17
20
|
QueryableString.prototype.contains = function (searchString) {
|
|
18
|
-
return
|
|
21
|
+
return this.str.indexOf(searchString) !== -1;
|
|
19
22
|
};
|
|
20
23
|
QueryableString.prototype.equals = function (compareString) {
|
|
21
24
|
return this.str === compareString;
|
|
@@ -22,120 +22,24 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
26
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
27
|
-
if (ar || !(i in from)) {
|
|
28
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
29
|
-
ar[i] = from[i];
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
33
|
-
};
|
|
34
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
26
|
exports.getFunctionName = void 0;
|
|
36
27
|
exports.getDependencies = getDependencies;
|
|
37
28
|
exports.getBaseClassDependencyCount = getBaseClassDependencyCount;
|
|
38
|
-
var
|
|
39
|
-
var ERROR_MSGS = __importStar(require("../constants/error_msgs"));
|
|
40
|
-
var literal_types_1 = require("../constants/literal_types");
|
|
29
|
+
var core_1 = require("@inversifyjs/core");
|
|
41
30
|
var METADATA_KEY = __importStar(require("../constants/metadata_keys"));
|
|
42
31
|
var serialization_1 = require("../utils/serialization");
|
|
43
32
|
Object.defineProperty(exports, "getFunctionName", { enumerable: true, get: function () { return serialization_1.getFunctionName; } });
|
|
44
|
-
var target_1 = require("./target");
|
|
45
33
|
function getDependencies(metadataReader, func) {
|
|
46
|
-
|
|
47
|
-
return getTargets(metadataReader, constructorName, func, false);
|
|
48
|
-
}
|
|
49
|
-
function getTargets(metadataReader, constructorName, func, isBaseClass) {
|
|
50
|
-
var metadata = metadataReader.getConstructorMetadata(func);
|
|
51
|
-
var serviceIdentifiers = metadata.compilerGeneratedMetadata;
|
|
52
|
-
if (serviceIdentifiers === undefined) {
|
|
53
|
-
var msg = "".concat(ERROR_MSGS.MISSING_INJECTABLE_ANNOTATION, " ").concat(constructorName, ".");
|
|
54
|
-
throw new Error(msg);
|
|
55
|
-
}
|
|
56
|
-
var constructorArgsMetadata = metadata.userGeneratedMetadata;
|
|
57
|
-
var keys = Object.keys(constructorArgsMetadata);
|
|
58
|
-
var hasUserDeclaredUnknownInjections = (func.length === 0 && keys.length > 0);
|
|
59
|
-
var hasOptionalParameters = keys.length > func.length;
|
|
60
|
-
var iterations = (hasUserDeclaredUnknownInjections || hasOptionalParameters) ? keys.length : func.length;
|
|
61
|
-
var constructorTargets = getConstructorArgsAsTargets(isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata, iterations);
|
|
62
|
-
var propertyTargets = getClassPropsAsTargets(metadataReader, func, constructorName);
|
|
63
|
-
var targets = __spreadArray(__spreadArray([], constructorTargets, true), propertyTargets, true);
|
|
64
|
-
return targets;
|
|
65
|
-
}
|
|
66
|
-
function getConstructorArgsAsTarget(index, isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata) {
|
|
67
|
-
var targetMetadata = constructorArgsMetadata[index.toString()] || [];
|
|
68
|
-
var metadata = formatTargetMetadata(targetMetadata);
|
|
69
|
-
var isManaged = metadata.unmanaged !== true;
|
|
70
|
-
var serviceIdentifier = serviceIdentifiers[index];
|
|
71
|
-
var injectIdentifier = metadata.inject || metadata.multiInject;
|
|
72
|
-
serviceIdentifier = (injectIdentifier ? injectIdentifier : serviceIdentifier);
|
|
73
|
-
if (serviceIdentifier instanceof lazy_service_identifier_1.LazyServiceIdentifier) {
|
|
74
|
-
serviceIdentifier = serviceIdentifier.unwrap();
|
|
75
|
-
}
|
|
76
|
-
if (isManaged) {
|
|
77
|
-
var isObject = serviceIdentifier === Object;
|
|
78
|
-
var isFunction = serviceIdentifier === Function;
|
|
79
|
-
var isUndefined = serviceIdentifier === undefined;
|
|
80
|
-
var isUnknownType = isObject || isFunction || isUndefined;
|
|
81
|
-
if (!isBaseClass && isUnknownType) {
|
|
82
|
-
var msg = "".concat(ERROR_MSGS.MISSING_INJECT_ANNOTATION, " argument ").concat(index, " in class ").concat(constructorName, ".");
|
|
83
|
-
throw new Error(msg);
|
|
84
|
-
}
|
|
85
|
-
var target = new target_1.Target(literal_types_1.TargetTypeEnum.ConstructorArgument, metadata.targetName, serviceIdentifier);
|
|
86
|
-
target.metadata = targetMetadata;
|
|
87
|
-
return target;
|
|
88
|
-
}
|
|
89
|
-
return null;
|
|
90
|
-
}
|
|
91
|
-
function getConstructorArgsAsTargets(isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata, iterations) {
|
|
92
|
-
var targets = [];
|
|
93
|
-
for (var i = 0; i < iterations; i++) {
|
|
94
|
-
var index = i;
|
|
95
|
-
var target = getConstructorArgsAsTarget(index, isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata);
|
|
96
|
-
if (target !== null) {
|
|
97
|
-
targets.push(target);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return targets;
|
|
101
|
-
}
|
|
102
|
-
function _getServiceIdentifierForProperty(inject, multiInject, propertyName, className) {
|
|
103
|
-
var serviceIdentifier = (inject || multiInject);
|
|
104
|
-
if (serviceIdentifier === undefined) {
|
|
105
|
-
var msg = "".concat(ERROR_MSGS.MISSING_INJECTABLE_ANNOTATION, " for property ").concat(String(propertyName), " in class ").concat(className, ".");
|
|
106
|
-
throw new Error(msg);
|
|
107
|
-
}
|
|
108
|
-
return serviceIdentifier;
|
|
109
|
-
}
|
|
110
|
-
function getClassPropsAsTargets(metadataReader, constructorFunc, constructorName) {
|
|
111
|
-
var classPropsMetadata = metadataReader.getPropertiesMetadata(constructorFunc);
|
|
112
|
-
var targets = [];
|
|
113
|
-
var symbolKeys = Object.getOwnPropertySymbols(classPropsMetadata);
|
|
114
|
-
var stringKeys = Object.keys(classPropsMetadata);
|
|
115
|
-
var keys = stringKeys.concat(symbolKeys);
|
|
116
|
-
for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
|
|
117
|
-
var key = keys_1[_i];
|
|
118
|
-
var targetMetadata = classPropsMetadata[key];
|
|
119
|
-
var metadata = formatTargetMetadata(targetMetadata);
|
|
120
|
-
var identifier = metadata.targetName || key;
|
|
121
|
-
var serviceIdentifier = _getServiceIdentifierForProperty(metadata.inject, metadata.multiInject, key, constructorName);
|
|
122
|
-
var target = new target_1.Target(literal_types_1.TargetTypeEnum.ClassProperty, identifier, serviceIdentifier);
|
|
123
|
-
target.metadata = targetMetadata;
|
|
124
|
-
targets.push(target);
|
|
125
|
-
}
|
|
126
|
-
var baseConstructor = Object.getPrototypeOf(constructorFunc.prototype).constructor;
|
|
127
|
-
if (baseConstructor !== Object) {
|
|
128
|
-
var baseTargets = getClassPropsAsTargets(metadataReader, baseConstructor, constructorName);
|
|
129
|
-
targets = __spreadArray(__spreadArray([], targets, true), baseTargets, true);
|
|
130
|
-
}
|
|
131
|
-
return targets;
|
|
34
|
+
return (0, core_1.getTargets)(metadataReader)(func);
|
|
132
35
|
}
|
|
133
36
|
function getBaseClassDependencyCount(metadataReader, func) {
|
|
134
37
|
var baseConstructor = Object.getPrototypeOf(func.prototype).constructor;
|
|
135
38
|
if (baseConstructor !== Object) {
|
|
136
|
-
var
|
|
137
|
-
var
|
|
138
|
-
|
|
39
|
+
var targets = (0, core_1.getTargets)(metadataReader)(baseConstructor);
|
|
40
|
+
var metadata = targets.map(function (t) {
|
|
41
|
+
return t.metadata.filter(function (m) { return m.key === METADATA_KEY.UNMANAGED_TAG; });
|
|
42
|
+
});
|
|
139
43
|
var unmanagedCount = [].concat.apply([], metadata).length;
|
|
140
44
|
var dependencyCount = targets.length - unmanagedCount;
|
|
141
45
|
if (dependencyCount > 0) {
|
|
@@ -149,15 +53,3 @@ function getBaseClassDependencyCount(metadataReader, func) {
|
|
|
149
53
|
return 0;
|
|
150
54
|
}
|
|
151
55
|
}
|
|
152
|
-
function formatTargetMetadata(targetMetadata) {
|
|
153
|
-
var targetMetadataMap = {};
|
|
154
|
-
targetMetadata.forEach(function (m) {
|
|
155
|
-
targetMetadataMap[m.key.toString()] = m.value;
|
|
156
|
-
});
|
|
157
|
-
return {
|
|
158
|
-
inject: targetMetadataMap[METADATA_KEY.INJECT_TAG],
|
|
159
|
-
multiInject: targetMetadataMap[METADATA_KEY.MULTI_INJECT_TAG],
|
|
160
|
-
targetName: targetMetadataMap[METADATA_KEY.NAME_TAG],
|
|
161
|
-
unmanaged: targetMetadataMap[METADATA_KEY.UNMANAGED_TAG]
|
|
162
|
-
};
|
|
163
|
-
}
|
|
@@ -8,7 +8,7 @@ declare class Request implements interfaces.Request {
|
|
|
8
8
|
childRequests: interfaces.Request[];
|
|
9
9
|
target: interfaces.Target;
|
|
10
10
|
requestScope: interfaces.RequestScope | null;
|
|
11
|
-
constructor(serviceIdentifier: interfaces.ServiceIdentifier, parentContext: interfaces.Context, parentRequest: interfaces.Request | null, bindings:
|
|
12
|
-
addChildRequest(serviceIdentifier: interfaces.ServiceIdentifier, bindings:
|
|
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
13
|
}
|
|
14
14
|
export { Request };
|
package/lib/planning/request.js
CHANGED
|
@@ -10,10 +10,8 @@ var Request = (function () {
|
|
|
10
10
|
this.parentRequest = parentRequest;
|
|
11
11
|
this.target = target;
|
|
12
12
|
this.childRequests = [];
|
|
13
|
-
this.bindings =
|
|
14
|
-
this.requestScope = parentRequest === null
|
|
15
|
-
? new Map()
|
|
16
|
-
: null;
|
|
13
|
+
this.bindings = Array.isArray(bindings) ? bindings : [bindings];
|
|
14
|
+
this.requestScope = parentRequest === null ? new Map() : null;
|
|
17
15
|
}
|
|
18
16
|
Request.prototype.addChildRequest = function (serviceIdentifier, bindings, target) {
|
|
19
17
|
var child = new Request(serviceIdentifier, this.parentContext, this, bindings, target);
|
package/lib/planning/target.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ declare class Target implements interfaces.Target {
|
|
|
8
8
|
identifier: string | symbol;
|
|
9
9
|
key: string | symbol;
|
|
10
10
|
metadata: Metadata[];
|
|
11
|
-
constructor(type: interfaces.TargetType, identifier: string | symbol, serviceIdentifier: interfaces.ServiceIdentifier, namedOrTagged?:
|
|
11
|
+
constructor(type: interfaces.TargetType, identifier: string | symbol, serviceIdentifier: interfaces.ServiceIdentifier, namedOrTagged?: string | Metadata);
|
|
12
12
|
hasTag(key: string): boolean;
|
|
13
13
|
isArray(): boolean;
|
|
14
14
|
matchesArray(name: interfaces.ServiceIdentifier<unknown>): boolean;
|
package/lib/planning/target.js
CHANGED
|
@@ -34,7 +34,9 @@ var Target = (function () {
|
|
|
34
34
|
this.id = (0, id_1.id)();
|
|
35
35
|
this.type = type;
|
|
36
36
|
this.serviceIdentifier = serviceIdentifier;
|
|
37
|
-
var queryableName = typeof identifier === 'symbol'
|
|
37
|
+
var queryableName = typeof identifier === 'symbol'
|
|
38
|
+
? (0, serialization_1.getSymbolDescription)(identifier)
|
|
39
|
+
: identifier;
|
|
38
40
|
this.name = new queryable_string_1.QueryableString(queryableName || '');
|
|
39
41
|
this.identifier = identifier;
|
|
40
42
|
this.metadata = new Array();
|
|
@@ -68,7 +70,9 @@ var Target = (function () {
|
|
|
68
70
|
return this.hasTag(METADATA_KEY.NAMED_TAG);
|
|
69
71
|
};
|
|
70
72
|
Target.prototype.isTagged = function () {
|
|
71
|
-
return this.metadata.some(function (metadata) {
|
|
73
|
+
return this.metadata.some(function (metadata) {
|
|
74
|
+
return METADATA_KEY.NON_CUSTOM_TAG_KEYS.every(function (key) { return metadata.key !== key; });
|
|
75
|
+
});
|
|
72
76
|
};
|
|
73
77
|
Target.prototype.isOptional = function () {
|
|
74
78
|
return this.matchesTag(METADATA_KEY.OPTIONAL_TAG)(true);
|
|
@@ -81,7 +85,9 @@ var Target = (function () {
|
|
|
81
85
|
};
|
|
82
86
|
Target.prototype.getCustomTags = function () {
|
|
83
87
|
if (this.isTagged()) {
|
|
84
|
-
return this.metadata.filter(function (metadata) {
|
|
88
|
+
return this.metadata.filter(function (metadata) {
|
|
89
|
+
return METADATA_KEY.NON_CUSTOM_TAG_KEYS.every(function (key) { return metadata.key !== key; });
|
|
90
|
+
});
|
|
85
91
|
}
|
|
86
92
|
else {
|
|
87
93
|
return null;
|
|
@@ -99,7 +99,12 @@ function _resolveRequests(childRequests, resolveRequest) {
|
|
|
99
99
|
resolvedRequests.isAsync = (0, async_1.isPromiseOrContainsPromise)(injection);
|
|
100
100
|
}
|
|
101
101
|
return resolvedRequests;
|
|
102
|
-
}, {
|
|
102
|
+
}, {
|
|
103
|
+
constructorInjections: [],
|
|
104
|
+
isAsync: false,
|
|
105
|
+
propertyInjections: [],
|
|
106
|
+
propertyRequests: [],
|
|
107
|
+
});
|
|
103
108
|
}
|
|
104
109
|
function _createInstance(constr, childRequests, resolveRequest) {
|
|
105
110
|
var result;
|
|
@@ -193,9 +198,7 @@ function _validateInstanceResolution(binding, constr) {
|
|
|
193
198
|
}
|
|
194
199
|
}
|
|
195
200
|
function _throwIfHandlingDeactivation(binding, constr) {
|
|
196
|
-
var scopeErrorMessage = "Class cannot be instantiated in ".concat(binding.scope === literal_types_1.BindingScopeEnum.Request ?
|
|
197
|
-
'request' :
|
|
198
|
-
'transient', " scope.");
|
|
201
|
+
var scopeErrorMessage = "Class cannot be instantiated in ".concat(binding.scope === literal_types_1.BindingScopeEnum.Request ? 'request' : 'transient', " scope.");
|
|
199
202
|
if (typeof binding.onDeactivation === 'function') {
|
|
200
203
|
throw new Error((0, error_msgs_1.ON_DEACTIVATION_ERROR)(constr.name, scopeErrorMessage));
|
|
201
204
|
}
|
|
@@ -207,7 +210,9 @@ function resolveInstance(binding, constr, childRequests, resolveRequest) {
|
|
|
207
210
|
_validateInstanceResolution(binding, constr);
|
|
208
211
|
var result = _createInstance(constr, childRequests, resolveRequest);
|
|
209
212
|
if ((0, async_1.isPromise)(result)) {
|
|
210
|
-
return result.then(function (resolvedResult) {
|
|
213
|
+
return result.then(function (resolvedResult) {
|
|
214
|
+
return _getInstanceAfterPostConstruct(constr, resolvedResult);
|
|
215
|
+
});
|
|
211
216
|
}
|
|
212
217
|
else {
|
|
213
218
|
return _getInstanceAfterPostConstruct(constr, result);
|
|
@@ -80,8 +80,8 @@ var _resolveRequest = function (requestScope) {
|
|
|
80
80
|
!request.parentRequest.target.matchesArray(request.target.serviceIdentifier);
|
|
81
81
|
if (targetIsAnArray && targetParentIsNotAnArray) {
|
|
82
82
|
return childRequests.map(function (childRequest) {
|
|
83
|
-
var
|
|
84
|
-
return
|
|
83
|
+
var resolveRequest = _resolveRequest(requestScope);
|
|
84
|
+
return resolveRequest(childRequest);
|
|
85
85
|
});
|
|
86
86
|
}
|
|
87
87
|
else {
|
|
@@ -95,7 +95,11 @@ var _resolveRequest = function (requestScope) {
|
|
|
95
95
|
};
|
|
96
96
|
var _resolveFactoryFromBinding = function (binding, context) {
|
|
97
97
|
var factoryDetails = (0, binding_utils_1.getFactoryDetails)(binding);
|
|
98
|
-
return (0, exceptions_1.tryAndThrowErrorIfStackOverflow)(function () {
|
|
98
|
+
return (0, exceptions_1.tryAndThrowErrorIfStackOverflow)(function () {
|
|
99
|
+
return factoryDetails.factory.bind(binding)(context);
|
|
100
|
+
}, function () {
|
|
101
|
+
return new Error(ERROR_MSGS.CIRCULAR_DEPENDENCY_IN_FACTORY(factoryDetails.factoryType, context.currentRequest.serviceIdentifier.toString()));
|
|
102
|
+
});
|
|
99
103
|
};
|
|
100
104
|
var _getResolvedFromBinding = function (requestScope, request, binding) {
|
|
101
105
|
var result;
|
|
@@ -130,7 +134,9 @@ var _resolveBinding = function (requestScope, request, binding) {
|
|
|
130
134
|
return _resolveInScope(requestScope, binding, function () {
|
|
131
135
|
var result = _getResolvedFromBinding(requestScope, request, binding);
|
|
132
136
|
if ((0, async_1.isPromise)(result)) {
|
|
133
|
-
result = result.then(function (resolved) {
|
|
137
|
+
result = result.then(function (resolved) {
|
|
138
|
+
return _onActivation(request, binding, resolved);
|
|
139
|
+
});
|
|
134
140
|
}
|
|
135
141
|
else {
|
|
136
142
|
result = _onActivation(request, binding, result);
|
|
@@ -155,7 +161,8 @@ function _onActivation(request, binding, resolved) {
|
|
|
155
161
|
result = _activateContainer(activationsIterator, context_1, result);
|
|
156
162
|
}
|
|
157
163
|
containersIteratorResult = containersIterator.next();
|
|
158
|
-
} while (containersIteratorResult.done !== true &&
|
|
164
|
+
} while (containersIteratorResult.done !== true &&
|
|
165
|
+
!(0, planner_1.getBindingDictionary)(container).hasKey(request.serviceIdentifier));
|
|
159
166
|
return result;
|
|
160
167
|
}
|
|
161
168
|
var _bindingActivation = function (context, binding, previousResult) {
|
|
@@ -170,7 +177,7 @@ var _bindingActivation = function (context, binding, previousResult) {
|
|
|
170
177
|
};
|
|
171
178
|
var _activateContainer = function (activationsIterator, context, result) {
|
|
172
179
|
var activation = activationsIterator.next();
|
|
173
|
-
while (
|
|
180
|
+
while (activation.done !== true) {
|
|
174
181
|
result = activation.value(context, result);
|
|
175
182
|
if ((0, async_1.isPromise)(result)) {
|
|
176
183
|
return _activateContainerAsync(activationsIterator, context, result);
|
|
@@ -189,7 +196,7 @@ var _activateContainerAsync = function (activationsIterator, context, resultProm
|
|
|
189
196
|
activation = activationsIterator.next();
|
|
190
197
|
_a.label = 2;
|
|
191
198
|
case 2:
|
|
192
|
-
if (
|
|
199
|
+
if (!(activation.done !== true)) return [3, 4];
|
|
193
200
|
return [4, activation.value(context, result)];
|
|
194
201
|
case 3:
|
|
195
202
|
result = _a.sent();
|
|
@@ -201,7 +208,9 @@ var _activateContainerAsync = function (activationsIterator, context, resultProm
|
|
|
201
208
|
}); };
|
|
202
209
|
var _getContainerActivationsForService = function (container, serviceIdentifier) {
|
|
203
210
|
var activations = container._activations;
|
|
204
|
-
return activations.hasKey(serviceIdentifier)
|
|
211
|
+
return activations.hasKey(serviceIdentifier)
|
|
212
|
+
? activations.get(serviceIdentifier).values()
|
|
213
|
+
: [].values();
|
|
205
214
|
};
|
|
206
215
|
var _getContainersIterator = function (container) {
|
|
207
216
|
var containersStack = [container];
|
|
@@ -225,6 +234,6 @@ var _getContainersIterator = function (container) {
|
|
|
225
234
|
return containersIterator;
|
|
226
235
|
};
|
|
227
236
|
function resolve(context) {
|
|
228
|
-
var
|
|
229
|
-
return
|
|
237
|
+
var resolveRequestFunction = _resolveRequest(context.plan.rootRequest.requestScope);
|
|
238
|
+
return resolveRequestFunction(context.plan.rootRequest);
|
|
230
239
|
}
|
package/lib/scope/scope.js
CHANGED
|
@@ -40,7 +40,7 @@ exports.saveToScope = exports.tryGetFromScope = void 0;
|
|
|
40
40
|
var literal_types_1 = require("../constants/literal_types");
|
|
41
41
|
var async_1 = require("../utils/async");
|
|
42
42
|
var tryGetFromScope = function (requestScope, binding) {
|
|
43
|
-
if (
|
|
43
|
+
if (binding.scope === literal_types_1.BindingScopeEnum.Singleton && binding.activated) {
|
|
44
44
|
return binding.cache;
|
|
45
45
|
}
|
|
46
46
|
if (binding.scope === literal_types_1.BindingScopeEnum.Request &&
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { interfaces } from '../interfaces/interfaces';
|
|
2
2
|
declare class BindingInSyntax<T> implements interfaces.BindingInSyntax<T> {
|
|
3
|
-
private _binding;
|
|
3
|
+
private readonly _binding;
|
|
4
4
|
constructor(binding: interfaces.Binding<T>);
|
|
5
5
|
inRequestScope(): interfaces.BindingWhenOnSyntax<T>;
|
|
6
6
|
inSingletonScope(): interfaces.BindingWhenOnSyntax<T>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { interfaces } from '../interfaces/interfaces';
|
|
2
2
|
declare class BindingInWhenOnSyntax<T> implements interfaces.BindingInSyntax<T>, interfaces.BindingWhenSyntax<T>, interfaces.BindingOnSyntax<T> {
|
|
3
|
-
private _bindingInSyntax;
|
|
4
|
-
private _bindingWhenSyntax;
|
|
5
|
-
private _bindingOnSyntax;
|
|
6
|
-
private _binding;
|
|
3
|
+
private readonly _bindingInSyntax;
|
|
4
|
+
private readonly _bindingWhenSyntax;
|
|
5
|
+
private readonly _bindingOnSyntax;
|
|
6
|
+
private readonly _binding;
|
|
7
7
|
constructor(binding: interfaces.Binding<T>);
|
|
8
8
|
inRequestScope(): interfaces.BindingWhenOnSyntax<T>;
|
|
9
9
|
inSingletonScope(): interfaces.BindingWhenOnSyntax<T>;
|
|
@@ -12,11 +12,11 @@ declare class BindingInWhenOnSyntax<T> implements interfaces.BindingInSyntax<T>,
|
|
|
12
12
|
whenTargetNamed(name: string): interfaces.BindingOnSyntax<T>;
|
|
13
13
|
whenTargetIsDefault(): interfaces.BindingOnSyntax<T>;
|
|
14
14
|
whenTargetTagged(tag: string, value: unknown): interfaces.BindingOnSyntax<T>;
|
|
15
|
-
whenInjectedInto(parent:
|
|
15
|
+
whenInjectedInto(parent: NewableFunction | string): interfaces.BindingOnSyntax<T>;
|
|
16
16
|
whenParentNamed(name: string): interfaces.BindingOnSyntax<T>;
|
|
17
17
|
whenParentTagged(tag: string, value: unknown): interfaces.BindingOnSyntax<T>;
|
|
18
|
-
whenAnyAncestorIs(ancestor:
|
|
19
|
-
whenNoAncestorIs(ancestor:
|
|
18
|
+
whenAnyAncestorIs(ancestor: NewableFunction | string): interfaces.BindingOnSyntax<T>;
|
|
19
|
+
whenNoAncestorIs(ancestor: NewableFunction | string): interfaces.BindingOnSyntax<T>;
|
|
20
20
|
whenAnyAncestorNamed(name: string): interfaces.BindingOnSyntax<T>;
|
|
21
21
|
whenAnyAncestorTagged(tag: string, value: unknown): interfaces.BindingOnSyntax<T>;
|
|
22
22
|
whenNoAncestorNamed(name: string): interfaces.BindingOnSyntax<T>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { interfaces } from '../interfaces/interfaces';
|
|
2
2
|
declare class BindingOnSyntax<T> implements interfaces.BindingOnSyntax<T> {
|
|
3
|
-
private _binding;
|
|
3
|
+
private readonly _binding;
|
|
4
4
|
constructor(binding: interfaces.Binding<T>);
|
|
5
5
|
onActivation(handler: interfaces.BindingActivation<T>): interfaces.BindingWhenSyntax<T>;
|
|
6
6
|
onDeactivation(handler: interfaces.BindingDeactivation<T>): interfaces.BindingWhenSyntax<T>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { interfaces } from
|
|
2
|
-
import { BindingWhenOnSyntax } from
|
|
1
|
+
import { interfaces } from '../interfaces/interfaces';
|
|
2
|
+
import { BindingWhenOnSyntax } from './binding_when_on_syntax';
|
|
3
3
|
declare class BindingToSyntax<T> implements interfaces.BindingToSyntax<T> {
|
|
4
|
-
private _binding;
|
|
4
|
+
private readonly _binding;
|
|
5
5
|
constructor(binding: interfaces.Binding<T>);
|
|
6
6
|
to(constructor: interfaces.Newable<T>): interfaces.BindingInWhenOnSyntax<T>;
|
|
7
7
|
toSelf(): interfaces.BindingInWhenOnSyntax<T>;
|
|
@@ -13,6 +13,6 @@ declare class BindingToSyntax<T> implements interfaces.BindingToSyntax<T> {
|
|
|
13
13
|
toAutoFactory<T2>(serviceIdentifier: interfaces.ServiceIdentifier<T2>): interfaces.BindingWhenOnSyntax<T>;
|
|
14
14
|
toAutoNamedFactory<T2>(serviceIdentifier: interfaces.ServiceIdentifier<T2>): BindingWhenOnSyntax<T>;
|
|
15
15
|
toProvider<T2>(provider: interfaces.ProviderCreator<T2>): interfaces.BindingWhenOnSyntax<T>;
|
|
16
|
-
toService(service:
|
|
16
|
+
toService(service: interfaces.ServiceIdentifier<T>): void;
|
|
17
17
|
}
|
|
18
18
|
export { BindingToSyntax };
|
|
@@ -38,10 +38,11 @@ var BindingToSyntax = (function () {
|
|
|
38
38
|
return new binding_in_when_on_syntax_1.BindingInWhenOnSyntax(this._binding);
|
|
39
39
|
};
|
|
40
40
|
BindingToSyntax.prototype.toSelf = function () {
|
|
41
|
-
if (typeof this._binding.serviceIdentifier !==
|
|
42
|
-
throw new Error(
|
|
41
|
+
if (typeof this._binding.serviceIdentifier !== 'function') {
|
|
42
|
+
throw new Error(ERROR_MSGS.INVALID_TO_SELF_VALUE);
|
|
43
43
|
}
|
|
44
|
-
var self = this._binding
|
|
44
|
+
var self = this._binding
|
|
45
|
+
.serviceIdentifier;
|
|
45
46
|
return this.to(self);
|
|
46
47
|
};
|
|
47
48
|
BindingToSyntax.prototype.toConstantValue = function (value) {
|
|
@@ -72,7 +73,7 @@ var BindingToSyntax = (function () {
|
|
|
72
73
|
return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);
|
|
73
74
|
};
|
|
74
75
|
BindingToSyntax.prototype.toFunction = function (func) {
|
|
75
|
-
if (typeof func !==
|
|
76
|
+
if (typeof func !== 'function') {
|
|
76
77
|
throw new Error(ERROR_MSGS.INVALID_FUNCTION_BINDING);
|
|
77
78
|
}
|
|
78
79
|
var bindingWhenOnSyntax = this.toConstantValue(func);
|
|
@@ -83,7 +84,9 @@ var BindingToSyntax = (function () {
|
|
|
83
84
|
BindingToSyntax.prototype.toAutoFactory = function (serviceIdentifier) {
|
|
84
85
|
this._binding.type = literal_types_1.BindingTypeEnum.Factory;
|
|
85
86
|
this._binding.factory = function (context) {
|
|
86
|
-
var autofactory = function () {
|
|
87
|
+
var autofactory = function () {
|
|
88
|
+
return context.container.get(serviceIdentifier);
|
|
89
|
+
};
|
|
87
90
|
return autofactory;
|
|
88
91
|
};
|
|
89
92
|
this._binding.scope = literal_types_1.BindingScopeEnum.Singleton;
|
|
@@ -92,7 +95,9 @@ var BindingToSyntax = (function () {
|
|
|
92
95
|
BindingToSyntax.prototype.toAutoNamedFactory = function (serviceIdentifier) {
|
|
93
96
|
this._binding.type = literal_types_1.BindingTypeEnum.Factory;
|
|
94
97
|
this._binding.factory = function (context) {
|
|
95
|
-
return function (named) {
|
|
98
|
+
return function (named) {
|
|
99
|
+
return context.container.getNamed(serviceIdentifier, named);
|
|
100
|
+
};
|
|
96
101
|
};
|
|
97
102
|
return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);
|
|
98
103
|
};
|
|
@@ -103,7 +108,9 @@ var BindingToSyntax = (function () {
|
|
|
103
108
|
return new binding_when_on_syntax_1.BindingWhenOnSyntax(this._binding);
|
|
104
109
|
};
|
|
105
110
|
BindingToSyntax.prototype.toService = function (service) {
|
|
106
|
-
this.toDynamicValue(function (context) {
|
|
111
|
+
this.toDynamicValue(function (context) {
|
|
112
|
+
return context.container.get(service);
|
|
113
|
+
});
|
|
107
114
|
};
|
|
108
115
|
return BindingToSyntax;
|
|
109
116
|
}());
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { interfaces } from '../interfaces/interfaces';
|
|
2
2
|
declare class BindingWhenOnSyntax<T> implements interfaces.BindingWhenSyntax<T>, interfaces.BindingOnSyntax<T> {
|
|
3
|
-
private _bindingWhenSyntax;
|
|
4
|
-
private _bindingOnSyntax;
|
|
5
|
-
private _binding;
|
|
3
|
+
private readonly _bindingWhenSyntax;
|
|
4
|
+
private readonly _bindingOnSyntax;
|
|
5
|
+
private readonly _binding;
|
|
6
6
|
constructor(binding: interfaces.Binding<T>);
|
|
7
7
|
when(constraint: (request: interfaces.Request) => boolean): interfaces.BindingOnSyntax<T>;
|
|
8
8
|
whenTargetNamed(name: string): interfaces.BindingOnSyntax<T>;
|
|
9
9
|
whenTargetIsDefault(): interfaces.BindingOnSyntax<T>;
|
|
10
10
|
whenTargetTagged(tag: string, value: unknown): interfaces.BindingOnSyntax<T>;
|
|
11
|
-
whenInjectedInto(parent:
|
|
11
|
+
whenInjectedInto(parent: NewableFunction | string): interfaces.BindingOnSyntax<T>;
|
|
12
12
|
whenParentNamed(name: string): interfaces.BindingOnSyntax<T>;
|
|
13
13
|
whenParentTagged(tag: string, value: unknown): interfaces.BindingOnSyntax<T>;
|
|
14
|
-
whenAnyAncestorIs(ancestor:
|
|
15
|
-
whenNoAncestorIs(ancestor:
|
|
14
|
+
whenAnyAncestorIs(ancestor: NewableFunction | string): interfaces.BindingOnSyntax<T>;
|
|
15
|
+
whenNoAncestorIs(ancestor: NewableFunction | string): interfaces.BindingOnSyntax<T>;
|
|
16
16
|
whenAnyAncestorNamed(name: string): interfaces.BindingOnSyntax<T>;
|
|
17
17
|
whenAnyAncestorTagged(tag: string, value: unknown): interfaces.BindingOnSyntax<T>;
|
|
18
18
|
whenNoAncestorNamed(name: string): interfaces.BindingOnSyntax<T>;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { interfaces } from '../interfaces/interfaces';
|
|
2
2
|
declare class BindingWhenSyntax<T> implements interfaces.BindingWhenSyntax<T> {
|
|
3
|
-
private _binding;
|
|
3
|
+
private readonly _binding;
|
|
4
4
|
constructor(binding: interfaces.Binding<T>);
|
|
5
5
|
when(constraint: (request: interfaces.Request) => boolean): interfaces.BindingOnSyntax<T>;
|
|
6
6
|
whenTargetNamed(name: string | number | symbol): interfaces.BindingOnSyntax<T>;
|
|
7
7
|
whenTargetIsDefault(): interfaces.BindingOnSyntax<T>;
|
|
8
8
|
whenTargetTagged(tag: string | number | symbol, value: unknown): interfaces.BindingOnSyntax<T>;
|
|
9
|
-
whenInjectedInto(parent:
|
|
9
|
+
whenInjectedInto(parent: NewableFunction | string): interfaces.BindingOnSyntax<T>;
|
|
10
10
|
whenParentNamed(name: string | number | symbol): interfaces.BindingOnSyntax<T>;
|
|
11
11
|
whenParentTagged(tag: string | number | symbol, value: unknown): interfaces.BindingOnSyntax<T>;
|
|
12
|
-
whenAnyAncestorIs(ancestor:
|
|
13
|
-
whenNoAncestorIs(ancestor:
|
|
12
|
+
whenAnyAncestorIs(ancestor: NewableFunction | string): interfaces.BindingOnSyntax<T>;
|
|
13
|
+
whenNoAncestorIs(ancestor: NewableFunction | string): interfaces.BindingOnSyntax<T>;
|
|
14
14
|
whenAnyAncestorNamed(name: string | number | symbol): interfaces.BindingOnSyntax<T>;
|
|
15
15
|
whenNoAncestorNamed(name: string | number | symbol): interfaces.BindingOnSyntax<T>;
|
|
16
16
|
whenAnyAncestorTagged(tag: string | number | symbol, value: unknown): interfaces.BindingOnSyntax<T>;
|