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.
- package/CHANGELOG.md +11 -1
- package/README.md +6 -15
- package/es/container/container.d.ts +2 -0
- package/es/container/module_activation_store.d.ts +2 -2
- package/es/interfaces/interfaces.d.ts +2 -2
- package/es/inversify.d.ts +1 -0
- package/es/inversify.js +3 -2
- package/es/inversify.js.LICENSE.txt +14 -0
- package/lib/annotation/decorator_utils.js +31 -25
- package/lib/annotation/inject.js +20 -10
- package/lib/annotation/inject_base.js +6 -6
- package/lib/annotation/injectable.js +20 -10
- package/lib/annotation/multi_inject.js +20 -10
- package/lib/annotation/named.js +20 -10
- package/lib/annotation/optional.js +20 -10
- package/lib/annotation/post_construct.js +21 -11
- package/lib/annotation/pre_destroy.js +21 -11
- package/lib/annotation/property_event_decorator.js +4 -4
- package/lib/annotation/tagged.js +2 -2
- package/lib/annotation/target_name.js +21 -11
- package/lib/annotation/unmanaged.js +21 -11
- package/lib/bindings/binding.js +23 -10
- package/lib/constants/error_msgs.js +15 -29
- package/lib/constants/literal_types.js +3 -3
- package/lib/container/container.d.ts +2 -0
- package/lib/container/container.js +317 -566
- package/lib/container/container_module.js +11 -9
- package/lib/container/container_snapshot.js +10 -8
- package/lib/container/lookup.js +61 -56
- package/lib/container/module_activation_store.d.ts +2 -2
- package/lib/container/module_activation_store.js +21 -24
- package/lib/interfaces/interfaces.d.ts +2 -2
- package/lib/inversify.d.ts +1 -0
- package/lib/inversify.js +19 -8
- package/lib/planning/context.js +12 -9
- package/lib/planning/metadata.js +27 -16
- package/lib/planning/metadata_reader.js +29 -24
- package/lib/planning/plan.js +5 -4
- package/lib/planning/planner.js +62 -53
- package/lib/planning/queryable_string.js +16 -16
- package/lib/planning/reflection_utils.js +25 -17
- package/lib/planning/request.js +15 -8
- package/lib/resolution/instantiation.js +59 -119
- package/lib/resolution/resolver.js +89 -134
- package/lib/scope/scope.js +17 -62
- package/lib/syntax/binding_in_syntax.js +12 -12
- package/lib/syntax/binding_in_when_on_syntax.js +50 -47
- package/lib/syntax/binding_on_syntax.js +9 -9
- package/lib/syntax/binding_to_syntax.js +70 -49
- package/lib/syntax/binding_when_on_syntax.js +42 -40
- package/lib/syntax/binding_when_syntax.js +54 -76
- package/lib/syntax/constraint_helpers.js +31 -23
- package/lib/utils/async.js +1 -1
- package/lib/utils/binding_utils.js +31 -29
- package/lib/utils/exceptions.js +19 -9
- package/lib/utils/id.js +1 -1
- package/lib/utils/js.js +2 -3
- package/lib/utils/serialization.js +42 -33
- package/package.json +14 -15
- package/amd/annotation/decorator_utils.d.ts +0 -16
- package/amd/annotation/decorator_utils.js +0 -119
- package/amd/annotation/inject.d.ts +0 -5
- package/amd/annotation/inject.js +0 -31
- package/amd/annotation/inject_base.d.ts +0 -4
- package/amd/annotation/inject_base.js +0 -16
- package/amd/annotation/injectable.d.ts +0 -2
- package/amd/annotation/injectable.js +0 -40
- package/amd/annotation/lazy_service_identifier.js +0 -4
- package/amd/annotation/multi_inject.d.ts +0 -5
- package/amd/annotation/multi_inject.js +0 -31
- package/amd/annotation/named.d.ts +0 -2
- package/amd/annotation/named.js +0 -32
- package/amd/annotation/optional.d.ts +0 -2
- package/amd/annotation/optional.js +0 -32
- package/amd/annotation/post_construct.d.ts +0 -4
- package/amd/annotation/post_construct.js +0 -32
- package/amd/annotation/pre_destroy.d.ts +0 -4
- package/amd/annotation/pre_destroy.js +0 -32
- package/amd/annotation/property_event_decorator.d.ts +0 -4
- package/amd/annotation/property_event_decorator.js +0 -16
- package/amd/annotation/tagged.d.ts +0 -2
- package/amd/annotation/tagged.js +0 -8
- package/amd/annotation/target_name.d.ts +0 -3
- package/amd/annotation/target_name.js +0 -35
- package/amd/annotation/unmanaged.d.ts +0 -3
- package/amd/annotation/unmanaged.js +0 -35
- package/amd/bindings/binding.d.ts +0 -20
- package/amd/bindings/binding.js +0 -40
- package/amd/bindings/binding_count.d.ts +0 -5
- package/amd/bindings/binding_count.js +0 -11
- package/amd/constants/error_msgs.d.ts +0 -30
- package/amd/constants/error_msgs.js +0 -75
- package/amd/constants/literal_types.d.ts +0 -5
- package/amd/constants/literal_types.js +0 -28
- package/amd/constants/metadata_keys.d.ts +0 -13
- package/amd/constants/metadata_keys.js +0 -28
- package/amd/container/container.d.ts +0 -73
- package/amd/container/container.js +0 -766
- package/amd/container/container_module.d.ts +0 -11
- package/amd/container/container_module.js +0 -21
- package/amd/container/container_snapshot.d.ts +0 -10
- package/amd/container/container_snapshot.js +0 -20
- package/amd/container/lookup.d.ts +0 -17
- package/amd/container/lookup.js +0 -132
- package/amd/container/module_activation_store.d.ts +0 -10
- package/amd/container/module_activation_store.js +0 -51
- package/amd/interfaces/interfaces.d.ts +0 -269
- package/amd/interfaces/interfaces.js +0 -4
- package/amd/inversify.d.ts +0 -24
- package/amd/inversify.js +0 -57
- package/amd/planning/context.d.ts +0 -11
- package/amd/planning/context.js +0 -19
- package/amd/planning/metadata.d.ts +0 -8
- package/amd/planning/metadata.js +0 -45
- package/amd/planning/metadata_reader.d.ts +0 -6
- package/amd/planning/metadata_reader.js +0 -49
- package/amd/planning/plan.d.ts +0 -7
- package/amd/planning/plan.js +0 -13
- package/amd/planning/planner.d.ts +0 -5
- package/amd/planning/planner.js +0 -187
- package/amd/planning/queryable_string.d.ts +0 -10
- package/amd/planning/queryable_string.js +0 -33
- package/amd/planning/reflection_utils.d.ts +0 -5
- package/amd/planning/reflection_utils.js +0 -55
- package/amd/planning/request.d.ts +0 -14
- package/amd/planning/request.js +0 -24
- package/amd/planning/target.js +0 -111
- package/amd/resolution/instantiation.d.ts +0 -3
- package/amd/resolution/instantiation.js +0 -219
- package/amd/resolution/resolver.d.ts +0 -3
- package/amd/resolution/resolver.js +0 -234
- package/amd/scope/scope.d.ts +0 -3
- package/amd/scope/scope.js +0 -93
- package/amd/syntax/binding_in_syntax.d.ts +0 -9
- package/amd/syntax/binding_in_syntax.js +0 -24
- package/amd/syntax/binding_in_when_on_syntax.d.ts +0 -29
- package/amd/syntax/binding_in_when_on_syntax.js +0 -75
- package/amd/syntax/binding_on_syntax.d.ts +0 -8
- package/amd/syntax/binding_on_syntax.js +0 -20
- package/amd/syntax/binding_to_syntax.d.ts +0 -18
- package/amd/syntax/binding_to_syntax.js +0 -116
- package/amd/syntax/binding_when_on_syntax.d.ts +0 -25
- package/amd/syntax/binding_when_on_syntax.js +0 -65
- package/amd/syntax/binding_when_syntax.d.ts +0 -21
- package/amd/syntax/binding_when_syntax.js +0 -107
- package/amd/syntax/constraint_helpers.d.ts +0 -6
- package/amd/syntax/constraint_helpers.js +0 -66
- package/amd/utils/async.d.ts +0 -3
- package/amd/utils/async.js +0 -17
- package/amd/utils/binding_utils.d.ts +0 -4
- package/amd/utils/binding_utils.js +0 -86
- package/amd/utils/clonable.d.ts +0 -3
- package/amd/utils/clonable.js +0 -11
- package/amd/utils/exceptions.d.ts +0 -2
- package/amd/utils/exceptions.js +0 -46
- package/amd/utils/factory_type.d.ts +0 -5
- package/amd/utils/factory_type.js +0 -11
- package/amd/utils/id.d.ts +0 -2
- package/amd/utils/id.js +0 -9
- package/amd/utils/js.d.ts +0 -1
- package/amd/utils/js.js +0 -18
- package/amd/utils/serialization.d.ts +0 -10
- package/amd/utils/serialization.js +0 -135
- package/es6/annotation/decorator_utils.d.ts +0 -16
- package/es6/annotation/decorator_utils.js +0 -114
- package/es6/annotation/inject.d.ts +0 -5
- package/es6/annotation/inject.js +0 -30
- package/es6/annotation/inject_base.d.ts +0 -4
- package/es6/annotation/inject_base.js +0 -17
- package/es6/annotation/injectable.d.ts +0 -2
- package/es6/annotation/injectable.js +0 -38
- package/es6/annotation/lazy_service_identifier.js +0 -2
- package/es6/annotation/multi_inject.d.ts +0 -5
- package/es6/annotation/multi_inject.js +0 -30
- package/es6/annotation/named.d.ts +0 -2
- package/es6/annotation/named.js +0 -32
- package/es6/annotation/optional.d.ts +0 -2
- package/es6/annotation/optional.js +0 -32
- package/es6/annotation/post_construct.d.ts +0 -4
- package/es6/annotation/post_construct.js +0 -31
- package/es6/annotation/pre_destroy.d.ts +0 -4
- package/es6/annotation/pre_destroy.js +0 -31
- package/es6/annotation/property_event_decorator.d.ts +0 -4
- package/es6/annotation/property_event_decorator.js +0 -15
- package/es6/annotation/tagged.d.ts +0 -2
- package/es6/annotation/tagged.js +0 -8
- package/es6/annotation/target_name.d.ts +0 -3
- package/es6/annotation/target_name.js +0 -35
- package/es6/annotation/unmanaged.d.ts +0 -3
- package/es6/annotation/unmanaged.js +0 -35
- package/es6/bindings/binding.d.ts +0 -20
- package/es6/bindings/binding.js +0 -39
- package/es6/bindings/binding_count.d.ts +0 -5
- package/es6/bindings/binding_count.js +0 -9
- package/es6/constants/error_msgs.d.ts +0 -30
- package/es6/constants/error_msgs.js +0 -59
- package/es6/constants/literal_types.d.ts +0 -5
- package/es6/constants/literal_types.js +0 -26
- package/es6/constants/metadata_keys.d.ts +0 -13
- package/es6/constants/metadata_keys.js +0 -26
- package/es6/container/container.d.ts +0 -73
- package/es6/container/container.js +0 -545
- package/es6/container/container_module.d.ts +0 -11
- package/es6/container/container_module.js +0 -18
- package/es6/container/container_snapshot.d.ts +0 -10
- package/es6/container/container_snapshot.js +0 -15
- package/es6/container/lookup.d.ts +0 -17
- package/es6/container/lookup.js +0 -125
- package/es6/container/module_activation_store.d.ts +0 -10
- package/es6/container/module_activation_store.js +0 -49
- package/es6/interfaces/interfaces.d.ts +0 -269
- package/es6/interfaces/interfaces.js +0 -2
- package/es6/inversify.d.ts +0 -24
- package/es6/inversify.js +0 -76
- package/es6/planning/context.d.ts +0 -11
- package/es6/planning/context.js +0 -17
- package/es6/planning/metadata.d.ts +0 -8
- package/es6/planning/metadata.js +0 -42
- package/es6/planning/metadata_reader.d.ts +0 -6
- package/es6/planning/metadata_reader.js +0 -44
- package/es6/planning/plan.d.ts +0 -7
- package/es6/planning/plan.js +0 -10
- package/es6/planning/planner.d.ts +0 -5
- package/es6/planning/planner.js +0 -194
- package/es6/planning/queryable_string.d.ts +0 -10
- package/es6/planning/queryable_string.js +0 -30
- package/es6/planning/reflection_utils.d.ts +0 -5
- package/es6/planning/reflection_utils.js +0 -53
- package/es6/planning/request.d.ts +0 -14
- package/es6/planning/request.js +0 -22
- package/es6/planning/target.js +0 -105
- package/es6/resolution/instantiation.d.ts +0 -3
- package/es6/resolution/instantiation.js +0 -158
- package/es6/resolution/resolver.d.ts +0 -3
- package/es6/resolution/resolver.js +0 -193
- package/es6/scope/scope.d.ts +0 -3
- package/es6/scope/scope.js +0 -57
- package/es6/syntax/binding_in_syntax.d.ts +0 -9
- package/es6/syntax/binding_in_syntax.js +0 -23
- package/es6/syntax/binding_in_when_on_syntax.d.ts +0 -29
- package/es6/syntax/binding_in_when_on_syntax.js +0 -75
- package/es6/syntax/binding_on_syntax.d.ts +0 -8
- package/es6/syntax/binding_on_syntax.js +0 -18
- package/es6/syntax/binding_to_syntax.d.ts +0 -18
- package/es6/syntax/binding_to_syntax.js +0 -110
- package/es6/syntax/binding_when_on_syntax.d.ts +0 -25
- package/es6/syntax/binding_when_on_syntax.js +0 -64
- package/es6/syntax/binding_when_syntax.d.ts +0 -21
- package/es6/syntax/binding_when_syntax.js +0 -84
- package/es6/syntax/constraint_helpers.d.ts +0 -6
- package/es6/syntax/constraint_helpers.js +0 -63
- package/es6/utils/async.d.ts +0 -3
- package/es6/utils/async.js +0 -15
- package/es6/utils/binding_utils.d.ts +0 -4
- package/es6/utils/binding_utils.js +0 -79
- package/es6/utils/clonable.d.ts +0 -3
- package/es6/utils/clonable.js +0 -9
- package/es6/utils/exceptions.d.ts +0 -2
- package/es6/utils/exceptions.js +0 -44
- package/es6/utils/factory_type.d.ts +0 -5
- package/es6/utils/factory_type.js +0 -9
- package/es6/utils/id.d.ts +0 -2
- package/es6/utils/id.js +0 -7
- package/es6/utils/js.d.ts +0 -1
- package/es6/utils/js.js +0 -15
- package/es6/utils/serialization.d.ts +0 -10
- package/es6/utils/serialization.js +0 -132
package/lib/planning/planner.js
CHANGED
|
@@ -15,44 +15,54 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
36
|
exports.plan = plan;
|
|
27
37
|
exports.createMockRequest = createMockRequest;
|
|
28
38
|
exports.getBindingDictionary = getBindingDictionary;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
const core_1 = require("@inversifyjs/core");
|
|
40
|
+
const binding_count_1 = require("../bindings/binding_count");
|
|
41
|
+
const ERROR_MSGS = __importStar(require("../constants/error_msgs"));
|
|
42
|
+
const literal_types_1 = require("../constants/literal_types");
|
|
43
|
+
const METADATA_KEY = __importStar(require("../constants/metadata_keys"));
|
|
44
|
+
const exceptions_1 = require("../utils/exceptions");
|
|
45
|
+
const serialization_1 = require("../utils/serialization");
|
|
46
|
+
const context_1 = require("./context");
|
|
47
|
+
const metadata_1 = require("./metadata");
|
|
48
|
+
const plan_1 = require("./plan");
|
|
49
|
+
const reflection_utils_1 = require("./reflection_utils");
|
|
50
|
+
const request_1 = require("./request");
|
|
41
51
|
function getBindingDictionary(cntnr) {
|
|
42
52
|
return cntnr._bindingDictionary;
|
|
43
53
|
}
|
|
44
54
|
function _createTarget(isMultiInject, targetType, serviceIdentifier, name, key, value) {
|
|
45
|
-
|
|
46
|
-
|
|
55
|
+
const metadataList = _getTargetMetadata(isMultiInject, serviceIdentifier, key, value);
|
|
56
|
+
const classElementMetadata = (0, core_1.getClassElementMetadataFromLegacyMetadata)(metadataList);
|
|
47
57
|
if (classElementMetadata.kind === core_1.ClassElementMetadataKind.unmanaged) {
|
|
48
58
|
throw new Error('Unexpected metadata when creating target');
|
|
49
59
|
}
|
|
50
|
-
|
|
60
|
+
const target = new core_1.LegacyTargetImpl(name, classElementMetadata, targetType);
|
|
51
61
|
return target;
|
|
52
62
|
}
|
|
53
63
|
function _getActiveBindings(metadataReader, avoidConstraints, context, parentRequest, target) {
|
|
54
|
-
|
|
55
|
-
|
|
64
|
+
let bindings = getBindings(context.container, target.serviceIdentifier);
|
|
65
|
+
let activeBindings = [];
|
|
56
66
|
if (bindings.length === binding_count_1.BindingCount.NoBindingsAvailable &&
|
|
57
67
|
context.container.options.autoBindInjectable === true &&
|
|
58
68
|
typeof target.serviceIdentifier === 'function' &&
|
|
@@ -62,8 +72,8 @@ function _getActiveBindings(metadataReader, avoidConstraints, context, parentReq
|
|
|
62
72
|
bindings = getBindings(context.container, target.serviceIdentifier);
|
|
63
73
|
}
|
|
64
74
|
if (!avoidConstraints) {
|
|
65
|
-
activeBindings = bindings.filter(
|
|
66
|
-
|
|
75
|
+
activeBindings = bindings.filter((binding) => {
|
|
76
|
+
const request = new request_1.Request(binding.serviceIdentifier, context, parentRequest, binding, target);
|
|
67
77
|
return binding.constraint(request);
|
|
68
78
|
});
|
|
69
79
|
}
|
|
@@ -74,10 +84,10 @@ function _getActiveBindings(metadataReader, avoidConstraints, context, parentReq
|
|
|
74
84
|
return activeBindings;
|
|
75
85
|
}
|
|
76
86
|
function _getTargetMetadata(isMultiInject, serviceIdentifier, key, value) {
|
|
77
|
-
|
|
87
|
+
const metadataKey = isMultiInject
|
|
78
88
|
? METADATA_KEY.MULTI_INJECT_TAG
|
|
79
89
|
: METADATA_KEY.INJECT_TAG;
|
|
80
|
-
|
|
90
|
+
const metadataList = [
|
|
81
91
|
new metadata_1.Metadata(metadataKey, serviceIdentifier),
|
|
82
92
|
];
|
|
83
93
|
if (key !== undefined) {
|
|
@@ -92,12 +102,12 @@ function _validateActiveBindingCount(serviceIdentifier, bindings, parentRequest,
|
|
|
92
102
|
return bindings;
|
|
93
103
|
}
|
|
94
104
|
else {
|
|
95
|
-
|
|
96
|
-
|
|
105
|
+
const serviceIdentifierString = (0, serialization_1.getServiceIdentifierAsString)(serviceIdentifier);
|
|
106
|
+
let msg = ERROR_MSGS.NOT_REGISTERED;
|
|
97
107
|
msg += (0, serialization_1.listMetadataForTarget)(serviceIdentifierString, target);
|
|
98
108
|
msg += (0, serialization_1.listRegisteredBindingsForServiceIdentifier)(container, serviceIdentifierString, getBindings);
|
|
99
109
|
if (parentRequest !== null) {
|
|
100
|
-
msg +=
|
|
110
|
+
msg += `\n${ERROR_MSGS.TRYING_TO_RESOLVE_BINDINGS((0, serialization_1.getServiceIdentifierAsString)(parentRequest.serviceIdentifier))}`;
|
|
101
111
|
}
|
|
102
112
|
throw new Error(msg);
|
|
103
113
|
}
|
|
@@ -106,8 +116,8 @@ function _validateActiveBindingCount(serviceIdentifier, bindings, parentRequest,
|
|
|
106
116
|
case binding_count_1.BindingCount.MultipleBindingsAvailable:
|
|
107
117
|
default:
|
|
108
118
|
if (!target.isArray()) {
|
|
109
|
-
|
|
110
|
-
|
|
119
|
+
const serviceIdentifierString = (0, serialization_1.getServiceIdentifierAsString)(serviceIdentifier);
|
|
120
|
+
let msg = `${ERROR_MSGS.AMBIGUOUS_MATCH} ${serviceIdentifierString}`;
|
|
111
121
|
msg += (0, serialization_1.listRegisteredBindingsForServiceIdentifier)(container, serviceIdentifierString, getBindings);
|
|
112
122
|
throw new Error(msg);
|
|
113
123
|
}
|
|
@@ -117,20 +127,20 @@ function _validateActiveBindingCount(serviceIdentifier, bindings, parentRequest,
|
|
|
117
127
|
}
|
|
118
128
|
}
|
|
119
129
|
function _createSubRequests(metadataReader, avoidConstraints, serviceIdentifier, context, parentRequest, target) {
|
|
120
|
-
|
|
121
|
-
|
|
130
|
+
let activeBindings;
|
|
131
|
+
let childRequest;
|
|
122
132
|
if (parentRequest === null) {
|
|
123
133
|
activeBindings = _getActiveBindings(metadataReader, avoidConstraints, context, null, target);
|
|
124
134
|
childRequest = new request_1.Request(serviceIdentifier, context, null, activeBindings, target);
|
|
125
|
-
|
|
135
|
+
const thePlan = new plan_1.Plan(context, childRequest);
|
|
126
136
|
context.addPlan(thePlan);
|
|
127
137
|
}
|
|
128
138
|
else {
|
|
129
139
|
activeBindings = _getActiveBindings(metadataReader, avoidConstraints, context, parentRequest, target);
|
|
130
140
|
childRequest = parentRequest.addChildRequest(target.serviceIdentifier, activeBindings, target);
|
|
131
141
|
}
|
|
132
|
-
activeBindings.forEach(
|
|
133
|
-
|
|
142
|
+
activeBindings.forEach((binding) => {
|
|
143
|
+
let subChildRequest = null;
|
|
134
144
|
if (target.isArray()) {
|
|
135
145
|
subChildRequest = childRequest.addChildRequest(binding.serviceIdentifier, binding, target);
|
|
136
146
|
}
|
|
@@ -142,23 +152,23 @@ function _createSubRequests(metadataReader, avoidConstraints, serviceIdentifier,
|
|
|
142
152
|
}
|
|
143
153
|
if (binding.type === literal_types_1.BindingTypeEnum.Instance &&
|
|
144
154
|
binding.implementationType !== null) {
|
|
145
|
-
|
|
155
|
+
const dependencies = (0, reflection_utils_1.getDependencies)(metadataReader, binding.implementationType);
|
|
146
156
|
if (context.container.options.skipBaseClassChecks !== true) {
|
|
147
|
-
|
|
157
|
+
const baseClassDependencyCount = (0, reflection_utils_1.getBaseClassDependencyCount)(metadataReader, binding.implementationType);
|
|
148
158
|
if (dependencies.length < baseClassDependencyCount) {
|
|
149
|
-
|
|
159
|
+
const error = ERROR_MSGS.ARGUMENTS_LENGTH_MISMATCH((0, reflection_utils_1.getFunctionName)(binding.implementationType));
|
|
150
160
|
throw new Error(error);
|
|
151
161
|
}
|
|
152
162
|
}
|
|
153
|
-
dependencies.forEach(
|
|
163
|
+
dependencies.forEach((dependency) => {
|
|
154
164
|
_createSubRequests(metadataReader, false, dependency.serviceIdentifier, context, subChildRequest, dependency);
|
|
155
165
|
});
|
|
156
166
|
}
|
|
157
167
|
});
|
|
158
168
|
}
|
|
159
169
|
function getBindings(container, serviceIdentifier) {
|
|
160
|
-
|
|
161
|
-
|
|
170
|
+
let bindings = [];
|
|
171
|
+
const bindingDictionary = getBindingDictionary(container);
|
|
162
172
|
if (bindingDictionary.hasKey(serviceIdentifier)) {
|
|
163
173
|
bindings = bindingDictionary.get(serviceIdentifier);
|
|
164
174
|
}
|
|
@@ -167,10 +177,9 @@ function getBindings(container, serviceIdentifier) {
|
|
|
167
177
|
}
|
|
168
178
|
return bindings;
|
|
169
179
|
}
|
|
170
|
-
function plan(metadataReader, container, isMultiInject, targetType, serviceIdentifier, key, value, avoidConstraints) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
var target = _createTarget(isMultiInject, targetType, serviceIdentifier, '', key, value);
|
|
180
|
+
function plan(metadataReader, container, isMultiInject, targetType, serviceIdentifier, key, value, avoidConstraints = false) {
|
|
181
|
+
const context = new context_1.Context(container);
|
|
182
|
+
const target = _createTarget(isMultiInject, targetType, serviceIdentifier, '', key, value);
|
|
174
183
|
try {
|
|
175
184
|
_createSubRequests(metadataReader, avoidConstraints, serviceIdentifier, context, null, target);
|
|
176
185
|
return context;
|
|
@@ -183,13 +192,13 @@ function plan(metadataReader, container, isMultiInject, targetType, serviceIdent
|
|
|
183
192
|
}
|
|
184
193
|
}
|
|
185
194
|
function createMockRequest(container, serviceIdentifier, key, value) {
|
|
186
|
-
|
|
187
|
-
|
|
195
|
+
const metadataList = _getTargetMetadata(false, serviceIdentifier, key, value);
|
|
196
|
+
const classElementMetadata = (0, core_1.getClassElementMetadataFromLegacyMetadata)(metadataList);
|
|
188
197
|
if (classElementMetadata.kind === core_1.ClassElementMetadataKind.unmanaged) {
|
|
189
198
|
throw new Error('Unexpected metadata when creating target');
|
|
190
199
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
200
|
+
const target = new core_1.LegacyTargetImpl('', classElementMetadata, 'Variable');
|
|
201
|
+
const context = new context_1.Context(container);
|
|
202
|
+
const request = new request_1.Request(serviceIdentifier, context, null, [], target);
|
|
194
203
|
return request;
|
|
195
204
|
}
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.QueryableString = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
class QueryableString {
|
|
5
|
+
str;
|
|
6
|
+
constructor(str) {
|
|
6
7
|
this.str = str;
|
|
7
8
|
}
|
|
8
|
-
|
|
9
|
+
startsWith(searchString) {
|
|
9
10
|
return this.str.indexOf(searchString) === 0;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
}
|
|
12
|
+
endsWith(searchString) {
|
|
13
|
+
let reverseString = '';
|
|
14
|
+
const reverseSearchString = searchString
|
|
14
15
|
.split('')
|
|
15
16
|
.reverse()
|
|
16
17
|
.join('');
|
|
17
18
|
reverseString = this.str.split('').reverse().join('');
|
|
18
19
|
return this.startsWith.call({ str: reverseString }, reverseSearchString);
|
|
19
|
-
}
|
|
20
|
-
|
|
20
|
+
}
|
|
21
|
+
contains(searchString) {
|
|
21
22
|
return this.str.indexOf(searchString) !== -1;
|
|
22
|
-
}
|
|
23
|
-
|
|
23
|
+
}
|
|
24
|
+
equals(compareString) {
|
|
24
25
|
return this.str === compareString;
|
|
25
|
-
}
|
|
26
|
-
|
|
26
|
+
}
|
|
27
|
+
value() {
|
|
27
28
|
return this.str;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
}());
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
31
|
exports.QueryableString = QueryableString;
|
|
@@ -15,33 +15,41 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
36
|
exports.getFunctionName = void 0;
|
|
27
37
|
exports.getDependencies = getDependencies;
|
|
28
38
|
exports.getBaseClassDependencyCount = getBaseClassDependencyCount;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
39
|
+
const core_1 = require("@inversifyjs/core");
|
|
40
|
+
const METADATA_KEY = __importStar(require("../constants/metadata_keys"));
|
|
41
|
+
const serialization_1 = require("../utils/serialization");
|
|
32
42
|
Object.defineProperty(exports, "getFunctionName", { enumerable: true, get: function () { return serialization_1.getFunctionName; } });
|
|
33
43
|
function getDependencies(metadataReader, func) {
|
|
34
44
|
return (0, core_1.getTargets)(metadataReader)(func);
|
|
35
45
|
}
|
|
36
46
|
function getBaseClassDependencyCount(metadataReader, func) {
|
|
37
|
-
|
|
47
|
+
const baseConstructor = Object.getPrototypeOf(func.prototype).constructor;
|
|
38
48
|
if (baseConstructor !== Object) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
var unmanagedCount = [].concat.apply([], metadata).length;
|
|
44
|
-
var dependencyCount = targets.length - unmanagedCount;
|
|
49
|
+
const targets = (0, core_1.getTargets)(metadataReader)(baseConstructor);
|
|
50
|
+
const metadata = targets.map((t) => t.metadata.filter((m) => m.key === METADATA_KEY.UNMANAGED_TAG));
|
|
51
|
+
const unmanagedCount = [].concat.apply([], metadata).length;
|
|
52
|
+
const dependencyCount = targets.length - unmanagedCount;
|
|
45
53
|
if (dependencyCount > 0) {
|
|
46
54
|
return dependencyCount;
|
|
47
55
|
}
|
package/lib/planning/request.js
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Request = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
const id_1 = require("../utils/id");
|
|
5
|
+
class Request {
|
|
6
|
+
id;
|
|
7
|
+
serviceIdentifier;
|
|
8
|
+
parentContext;
|
|
9
|
+
parentRequest;
|
|
10
|
+
bindings;
|
|
11
|
+
childRequests;
|
|
12
|
+
target;
|
|
13
|
+
requestScope;
|
|
14
|
+
constructor(serviceIdentifier, parentContext, parentRequest, bindings, target) {
|
|
7
15
|
this.id = (0, id_1.id)();
|
|
8
16
|
this.serviceIdentifier = serviceIdentifier;
|
|
9
17
|
this.parentContext = parentContext;
|
|
@@ -13,11 +21,10 @@ var Request = (function () {
|
|
|
13
21
|
this.bindings = Array.isArray(bindings) ? bindings : [bindings];
|
|
14
22
|
this.requestScope = parentRequest === null ? new Map() : null;
|
|
15
23
|
}
|
|
16
|
-
|
|
17
|
-
|
|
24
|
+
addChildRequest(serviceIdentifier, bindings, target) {
|
|
25
|
+
const child = new Request(serviceIdentifier, this.parentContext, this, bindings, target);
|
|
18
26
|
this.childRequests.push(child);
|
|
19
27
|
return child;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
}());
|
|
28
|
+
}
|
|
29
|
+
}
|
|
23
30
|
exports.Request = Request;
|
|
@@ -1,15 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
3
|
if (k2 === undefined) k2 = k;
|
|
15
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -26,68 +15,33 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
26
15
|
}) : function(o, v) {
|
|
27
16
|
o["default"] = v;
|
|
28
17
|
});
|
|
29
|
-
var __importStar = (this && this.__importStar) || function (
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
47
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
48
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
49
|
-
function step(op) {
|
|
50
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
51
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
52
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
53
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
54
|
-
switch (op[0]) {
|
|
55
|
-
case 0: case 1: t = op; break;
|
|
56
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
57
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
58
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
59
|
-
default:
|
|
60
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
61
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
62
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
63
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
64
|
-
if (t[2]) _.ops.pop();
|
|
65
|
-
_.trys.pop(); continue;
|
|
66
|
-
}
|
|
67
|
-
op = body.call(thisArg, _);
|
|
68
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
69
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
73
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
74
|
-
if (ar || !(i in from)) {
|
|
75
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
76
|
-
ar[i] = from[i];
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
80
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
81
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
82
36
|
exports.resolveInstance = resolveInstance;
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
37
|
+
const error_msgs_1 = require("../constants/error_msgs");
|
|
38
|
+
const literal_types_1 = require("../constants/literal_types");
|
|
39
|
+
const METADATA_KEY = __importStar(require("../constants/metadata_keys"));
|
|
40
|
+
const async_1 = require("../utils/async");
|
|
87
41
|
function _resolveRequests(childRequests, resolveRequest) {
|
|
88
|
-
return childRequests.reduce(
|
|
89
|
-
|
|
90
|
-
|
|
42
|
+
return childRequests.reduce((resolvedRequests, childRequest) => {
|
|
43
|
+
const injection = resolveRequest(childRequest);
|
|
44
|
+
const targetType = childRequest.target.type;
|
|
91
45
|
if (targetType === literal_types_1.TargetTypeEnum.ConstructorArgument) {
|
|
92
46
|
resolvedRequests.constructorInjections.push(injection);
|
|
93
47
|
}
|
|
@@ -107,10 +61,13 @@ function _resolveRequests(childRequests, resolveRequest) {
|
|
|
107
61
|
});
|
|
108
62
|
}
|
|
109
63
|
function _createInstance(constr, childRequests, resolveRequest) {
|
|
110
|
-
|
|
64
|
+
let result;
|
|
111
65
|
if (childRequests.length > 0) {
|
|
112
|
-
|
|
113
|
-
|
|
66
|
+
const resolved = _resolveRequests(childRequests, resolveRequest);
|
|
67
|
+
const createInstanceWithInjectionsArg = {
|
|
68
|
+
...resolved,
|
|
69
|
+
constr,
|
|
70
|
+
};
|
|
114
71
|
if (resolved.isAsync) {
|
|
115
72
|
result = createInstanceWithInjectionsAsync(createInstanceWithInjectionsArg);
|
|
116
73
|
}
|
|
@@ -124,66 +81,51 @@ function _createInstance(constr, childRequests, resolveRequest) {
|
|
|
124
81
|
return result;
|
|
125
82
|
}
|
|
126
83
|
function createInstanceWithInjections(args) {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
var injection = args.propertyInjections[index];
|
|
84
|
+
const instance = new args.constr(...args.constructorInjections);
|
|
85
|
+
args.propertyRequests.forEach((r, index) => {
|
|
86
|
+
const property = r.target.identifier;
|
|
87
|
+
const injection = args.propertyInjections[index];
|
|
132
88
|
if (!r.target.isOptional() || injection !== undefined) {
|
|
133
89
|
instance[property] = injection;
|
|
134
90
|
}
|
|
135
91
|
});
|
|
136
92
|
return instance;
|
|
137
93
|
}
|
|
138
|
-
function createInstanceWithInjectionsAsync(args) {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
constructorInjections = _a.sent();
|
|
146
|
-
return [4, possiblyWaitInjections(args.propertyInjections)];
|
|
147
|
-
case 2:
|
|
148
|
-
propertyInjections = _a.sent();
|
|
149
|
-
return [2, createInstanceWithInjections(__assign(__assign({}, args), { constructorInjections: constructorInjections, propertyInjections: propertyInjections }))];
|
|
150
|
-
}
|
|
151
|
-
});
|
|
94
|
+
async function createInstanceWithInjectionsAsync(args) {
|
|
95
|
+
const constructorInjections = await possiblyWaitInjections(args.constructorInjections);
|
|
96
|
+
const propertyInjections = await possiblyWaitInjections(args.propertyInjections);
|
|
97
|
+
return createInstanceWithInjections({
|
|
98
|
+
...args,
|
|
99
|
+
constructorInjections,
|
|
100
|
+
propertyInjections,
|
|
152
101
|
});
|
|
153
102
|
}
|
|
154
|
-
function possiblyWaitInjections(possiblePromiseinjections) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
injections
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
injections.push(injection);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
return [2, Promise.all(injections)];
|
|
169
|
-
});
|
|
170
|
-
});
|
|
103
|
+
async function possiblyWaitInjections(possiblePromiseinjections) {
|
|
104
|
+
const injections = [];
|
|
105
|
+
for (const injection of possiblePromiseinjections) {
|
|
106
|
+
if (Array.isArray(injection)) {
|
|
107
|
+
injections.push(Promise.all(injection));
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
injections.push(injection);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return Promise.all(injections);
|
|
171
114
|
}
|
|
172
115
|
function _getInstanceAfterPostConstruct(constr, result) {
|
|
173
|
-
|
|
116
|
+
const postConstructResult = _postConstruct(constr, result);
|
|
174
117
|
if ((0, async_1.isPromise)(postConstructResult)) {
|
|
175
|
-
return postConstructResult.then(
|
|
118
|
+
return postConstructResult.then(() => result);
|
|
176
119
|
}
|
|
177
120
|
else {
|
|
178
121
|
return result;
|
|
179
122
|
}
|
|
180
123
|
}
|
|
181
124
|
function _postConstruct(constr, instance) {
|
|
182
|
-
var _a, _b;
|
|
183
125
|
if (Reflect.hasMetadata(METADATA_KEY.POST_CONSTRUCT, constr)) {
|
|
184
|
-
|
|
126
|
+
const data = Reflect.getMetadata(METADATA_KEY.POST_CONSTRUCT, constr);
|
|
185
127
|
try {
|
|
186
|
-
return
|
|
128
|
+
return instance[data.value]?.();
|
|
187
129
|
}
|
|
188
130
|
catch (e) {
|
|
189
131
|
if (e instanceof Error) {
|
|
@@ -198,7 +140,7 @@ function _validateInstanceResolution(binding, constr) {
|
|
|
198
140
|
}
|
|
199
141
|
}
|
|
200
142
|
function _throwIfHandlingDeactivation(binding, constr) {
|
|
201
|
-
|
|
143
|
+
const scopeErrorMessage = `Class cannot be instantiated in ${binding.scope === literal_types_1.BindingScopeEnum.Request ? 'request' : 'transient'} scope.`;
|
|
202
144
|
if (typeof binding.onDeactivation === 'function') {
|
|
203
145
|
throw new Error((0, error_msgs_1.ON_DEACTIVATION_ERROR)(constr.name, scopeErrorMessage));
|
|
204
146
|
}
|
|
@@ -208,11 +150,9 @@ function _throwIfHandlingDeactivation(binding, constr) {
|
|
|
208
150
|
}
|
|
209
151
|
function resolveInstance(binding, constr, childRequests, resolveRequest) {
|
|
210
152
|
_validateInstanceResolution(binding, constr);
|
|
211
|
-
|
|
153
|
+
const result = _createInstance(constr, childRequests, resolveRequest);
|
|
212
154
|
if ((0, async_1.isPromise)(result)) {
|
|
213
|
-
return result.then(
|
|
214
|
-
return _getInstanceAfterPostConstruct(constr, resolvedResult);
|
|
215
|
-
});
|
|
155
|
+
return result.then((resolvedResult) => _getInstanceAfterPostConstruct(constr, resolvedResult));
|
|
216
156
|
}
|
|
217
157
|
else {
|
|
218
158
|
return _getInstanceAfterPostConstruct(constr, result);
|