ts-ioc-container 71.0.0 → 72.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/README.md +203 -65
- package/cjm/container/Container.js +5 -5
- package/cjm/hooks/HookContext.js +3 -2
- package/cjm/hooks/injectProp.js +2 -4
- package/cjm/index.js +7 -4
- package/cjm/injector/IInjector.js +2 -2
- package/cjm/injector/MetadataInjector.js +14 -9
- package/cjm/injector/ProxyInjector.js +1 -1
- package/cjm/injector/SimpleInjector.js +2 -2
- package/cjm/metadata/class.js +3 -1
- package/cjm/metadata/method.js +3 -1
- package/cjm/metadata/parameter.js +7 -1
- package/cjm/provider/Provider.js +9 -8
- package/cjm/registration/IRegistration.js +2 -2
- package/cjm/select.js +2 -2
- package/cjm/token/ClassToken.js +3 -3
- package/cjm/token/FunctionToken.js +5 -4
- package/cjm/token/GroupAliasToken.js +3 -3
- package/cjm/token/InjectionToken.js +1 -1
- package/cjm/token/SingleAliasToken.js +3 -3
- package/cjm/token/SingleToken.js +3 -3
- package/cjm/token/toToken.js +1 -8
- package/esm/container/Container.js +5 -5
- package/esm/hooks/HookContext.js +3 -2
- package/esm/hooks/injectProp.js +1 -4
- package/esm/index.js +5 -5
- package/esm/injector/IInjector.js +2 -2
- package/esm/injector/MetadataInjector.js +13 -9
- package/esm/injector/ProxyInjector.js +1 -1
- package/esm/injector/SimpleInjector.js +2 -2
- package/esm/metadata/class.js +1 -0
- package/esm/metadata/method.js +1 -0
- package/esm/metadata/parameter.js +5 -0
- package/esm/provider/Provider.js +9 -8
- package/esm/registration/IRegistration.js +2 -2
- package/esm/select.js +2 -2
- package/esm/token/ClassToken.js +3 -3
- package/esm/token/FunctionToken.js +5 -4
- package/esm/token/GroupAliasToken.js +3 -3
- package/esm/token/InjectionToken.js +1 -1
- package/esm/token/SingleAliasToken.js +3 -3
- package/esm/token/SingleToken.js +3 -3
- package/esm/token/toToken.js +0 -6
- package/package.json +1 -1
- package/typings/container/IContainer.d.ts +2 -2
- package/typings/hooks/HookContext.d.ts +3 -3
- package/typings/hooks/hook.d.ts +1 -2
- package/typings/hooks/injectProp.d.ts +2 -14
- package/typings/index.d.ts +7 -7
- package/typings/injector/IInjector.d.ts +7 -4
- package/typings/injector/MetadataInjector.d.ts +6 -16
- package/typings/injector/ProxyInjector.d.ts +1 -2
- package/typings/injector/SimpleInjector.d.ts +1 -2
- package/typings/metadata/class.d.ts +1 -0
- package/typings/metadata/method.d.ts +1 -0
- package/typings/metadata/parameter.d.ts +1 -0
- package/typings/provider/IProvider.d.ts +5 -4
- package/typings/provider/Provider.d.ts +2 -2
- package/typings/select.d.ts +3 -3
- package/typings/token/ClassToken.d.ts +2 -2
- package/typings/token/FunctionToken.d.ts +2 -2
- package/typings/token/GroupAliasToken.d.ts +2 -2
- package/typings/token/InjectionToken.d.ts +2 -2
- package/typings/token/SingleAliasToken.d.ts +3 -3
- package/typings/token/SingleToken.d.ts +2 -2
- package/typings/token/toToken.d.ts +0 -2
|
@@ -41,11 +41,11 @@ class Container {
|
|
|
41
41
|
resolve(target, { args = [], child = this, lazy } = {}) {
|
|
42
42
|
this.validateContainer();
|
|
43
43
|
if (basic_1.Is.constructor(target)) {
|
|
44
|
-
return this.injector.resolve(
|
|
44
|
+
return this.injector.resolve(target, { scope: this, args, lazy });
|
|
45
45
|
}
|
|
46
46
|
const provider = this.providers.get(target);
|
|
47
47
|
return provider?.hasAccess({ invocationScope: child, providerScope: this, args })
|
|
48
|
-
? provider.resolve(this,
|
|
48
|
+
? provider.resolve({ scope: this, args, lazy })
|
|
49
49
|
: this.parent.resolve(target, { args, child, lazy });
|
|
50
50
|
}
|
|
51
51
|
resolveByAlias(alias, { args = [], child = this, lazy, excludedKeys = [] } = {}) {
|
|
@@ -58,7 +58,7 @@ class Container {
|
|
|
58
58
|
continue;
|
|
59
59
|
}
|
|
60
60
|
keys.push(key);
|
|
61
|
-
deps.push(provider.resolve(this,
|
|
61
|
+
deps.push(provider.resolve({ scope: this, args, lazy }));
|
|
62
62
|
}
|
|
63
63
|
const parentDeps = this.parent.resolveByAlias(alias, {
|
|
64
64
|
args,
|
|
@@ -73,7 +73,7 @@ class Container {
|
|
|
73
73
|
const [key] = this.aliases.getKeysByAlias(alias);
|
|
74
74
|
const provider = key ? this.findProviderByKeyOrFail(key) : undefined;
|
|
75
75
|
return provider?.hasAccess({ invocationScope: child, providerScope: this, args })
|
|
76
|
-
? provider.resolve(this,
|
|
76
|
+
? provider.resolve({ scope: this, args, lazy })
|
|
77
77
|
: this.parent.resolveOneByAlias(alias, { args, child, lazy });
|
|
78
78
|
}
|
|
79
79
|
createScope({ tags } = {}) {
|
|
@@ -93,7 +93,7 @@ class Container {
|
|
|
93
93
|
this.validateContainer();
|
|
94
94
|
for (const provider of this.providers.values()) {
|
|
95
95
|
if (provider.isAutoResolvable() && provider.hasAccess({ invocationScope: this, providerScope: this, args })) {
|
|
96
|
-
provider.resolve(this,
|
|
96
|
+
provider.resolve({ scope: this, args });
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
return this;
|
package/cjm/hooks/HookContext.js
CHANGED
|
@@ -13,7 +13,8 @@ class HookContext {
|
|
|
13
13
|
this.methodName = methodName;
|
|
14
14
|
}
|
|
15
15
|
resolveArgs(...args) {
|
|
16
|
-
return (0, MetadataInjector_1.resolveArgs)(this.instance, this.methodName)(
|
|
16
|
+
return (0, MetadataInjector_1.resolveArgs)(this.instance, this.methodName)({
|
|
17
|
+
scope: this.scope,
|
|
17
18
|
args: [...this.initialArgs, ...args],
|
|
18
19
|
});
|
|
19
20
|
}
|
|
@@ -21,7 +22,7 @@ class HookContext {
|
|
|
21
22
|
return this.instance[this.methodName](...args);
|
|
22
23
|
}
|
|
23
24
|
setProperty(fn) {
|
|
24
|
-
this.instance[this.methodName] = fn
|
|
25
|
+
this.instance[this.methodName] = fn({ scope: this.scope });
|
|
25
26
|
}
|
|
26
27
|
getProperty() {
|
|
27
28
|
return this.instance[this.methodName];
|
package/cjm/hooks/injectProp.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.injectProp = void 0;
|
|
4
|
+
const injectProp = (fn) => (context) => context.setProperty(fn);
|
|
3
5
|
exports.injectProp = injectProp;
|
|
4
|
-
const toToken_1 = require("../token/toToken");
|
|
5
|
-
function injectProp(fn, ...mappers) {
|
|
6
|
-
return (context) => context.setProperty((0, toToken_1.toMappedToken)(fn, mappers));
|
|
7
|
-
}
|
package/cjm/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.isSerializable = exports.Is = exports.unwrapProxy = exports.ProxyRegistry = exports.findOrFail = exports.pipe = exports.select = void 0;
|
|
3
|
+
exports.createHookExecutionContext = exports.createHookContextFactory = exports.HookContext = exports.toHookFn = exports.hasHooks = exports.hook = exports.getHooks = exports.ArgumentNotFoundError = exports.TypedEventDisposedError = exports.UnsupportedTokenTypeError = exports.CannonSingletonApplyTwiceError = exports.ProviderDisposedError = exports.ContainerDisposedError = exports.MethodNotImplementedError = exports.DependencyMissingKeyError = exports.ContainerNotFoundError = exports.DependencyNotFoundError = exports.ContainerError = exports.Registration = exports.onResolve = exports.appendArgsFn = exports.appendArgs = exports.decorate = exports.singleton = exports.autoResolve = exports.lazy = exports.scopeAccess = exports.scope = exports.bindTo = exports.register = exports.toRegistrationFn = exports.toProviderFn = exports.toBindToken = exports.registerPipe = exports.isProviderPipe = exports.Provider = exports.ProxyInjector = exports.SimpleInjector = exports.resolveArgs = exports.by = exports.argsFn = exports.args = exports.arg = exports.inject = exports.MetadataInjector = exports.Injector = exports.EmptyContainer = exports.AutoResolveModule = exports.Container = exports.isDependencyKey = void 0;
|
|
4
|
+
exports.once = exports.shallowCache = exports.debounce = exports.throttle = exports.runAtOnce = exports.runInOrder = exports.handleAsyncError = exports.handleError = exports.createComposeMethodDecorator = exports.getMethodTags = exports.addMethodTag = exports.getMethodLabels = exports.addMethodLabel = exports.getMethodMeta = exports.addMethodMeta = exports.createComposeParameterDecorator = exports.getParamTags = exports.addParamTag = exports.getParamLabels = exports.addParamLabel = exports.getParamMeta = exports.addParamMeta = exports.createComposeClassDecorator = exports.getClassTags = exports.addClassTag = exports.getClassLabels = exports.addClassLabel = exports.getClassMeta = exports.addClassMeta = exports.resolveConstructor = exports.GroupInstanceToken = exports.ConstantToken = exports.FunctionToken = exports.SingleToken = exports.ClassToken = exports.toSingleAlias = exports.SingleAliasToken = exports.toGroupAlias = exports.GroupAliasToken = exports.argToToken = exports.toToken = exports.forwardArgs = exports.isInjectionToken = exports.InjectionToken = exports.toTask = exports.HookCollector = exports.oncePerInstance = exports.parallel = exports.sequential = exports.injectProp = void 0;
|
|
5
|
+
exports.isSerializable = exports.Is = exports.unwrapProxy = exports.ProxyRegistry = exports.findOrFail = exports.pipe = exports.select = exports.TypedEvent = exports.getConstructorChain = exports.memoize = void 0;
|
|
6
6
|
var IContainer_1 = require("./container/IContainer");
|
|
7
7
|
Object.defineProperty(exports, "isDependencyKey", { enumerable: true, get: function () { return IContainer_1.isDependencyKey; } });
|
|
8
8
|
var Container_1 = require("./container/Container");
|
|
@@ -19,6 +19,7 @@ Object.defineProperty(exports, "inject", { enumerable: true, get: function () {
|
|
|
19
19
|
Object.defineProperty(exports, "arg", { enumerable: true, get: function () { return MetadataInjector_1.arg; } });
|
|
20
20
|
Object.defineProperty(exports, "args", { enumerable: true, get: function () { return MetadataInjector_1.args; } });
|
|
21
21
|
Object.defineProperty(exports, "argsFn", { enumerable: true, get: function () { return MetadataInjector_1.argsFn; } });
|
|
22
|
+
Object.defineProperty(exports, "by", { enumerable: true, get: function () { return MetadataInjector_1.by; } });
|
|
22
23
|
Object.defineProperty(exports, "resolveArgs", { enumerable: true, get: function () { return MetadataInjector_1.resolveArgs; } });
|
|
23
24
|
var SimpleInjector_1 = require("./injector/SimpleInjector");
|
|
24
25
|
Object.defineProperty(exports, "SimpleInjector", { enumerable: true, get: function () { return SimpleInjector_1.SimpleInjector; } });
|
|
@@ -91,7 +92,6 @@ Object.defineProperty(exports, "isInjectionToken", { enumerable: true, get: func
|
|
|
91
92
|
Object.defineProperty(exports, "forwardArgs", { enumerable: true, get: function () { return InjectionToken_1.forwardArgs; } });
|
|
92
93
|
var toToken_1 = require("./token/toToken");
|
|
93
94
|
Object.defineProperty(exports, "toToken", { enumerable: true, get: function () { return toToken_1.toToken; } });
|
|
94
|
-
Object.defineProperty(exports, "toMappedToken", { enumerable: true, get: function () { return toToken_1.toMappedToken; } });
|
|
95
95
|
Object.defineProperty(exports, "argToToken", { enumerable: true, get: function () { return toToken_1.argToToken; } });
|
|
96
96
|
var GroupAliasToken_1 = require("./token/GroupAliasToken");
|
|
97
97
|
Object.defineProperty(exports, "GroupAliasToken", { enumerable: true, get: function () { return GroupAliasToken_1.GroupAliasToken; } });
|
|
@@ -118,6 +118,7 @@ Object.defineProperty(exports, "addClassLabel", { enumerable: true, get: functio
|
|
|
118
118
|
Object.defineProperty(exports, "getClassLabels", { enumerable: true, get: function () { return class_1.getClassLabels; } });
|
|
119
119
|
Object.defineProperty(exports, "addClassTag", { enumerable: true, get: function () { return class_1.addClassTag; } });
|
|
120
120
|
Object.defineProperty(exports, "getClassTags", { enumerable: true, get: function () { return class_1.getClassTags; } });
|
|
121
|
+
Object.defineProperty(exports, "createComposeClassDecorator", { enumerable: true, get: function () { return class_1.createComposeClassDecorator; } });
|
|
121
122
|
var parameter_1 = require("./metadata/parameter");
|
|
122
123
|
Object.defineProperty(exports, "addParamMeta", { enumerable: true, get: function () { return parameter_1.addParamMeta; } });
|
|
123
124
|
Object.defineProperty(exports, "getParamMeta", { enumerable: true, get: function () { return parameter_1.getParamMeta; } });
|
|
@@ -125,6 +126,7 @@ Object.defineProperty(exports, "addParamLabel", { enumerable: true, get: functio
|
|
|
125
126
|
Object.defineProperty(exports, "getParamLabels", { enumerable: true, get: function () { return parameter_1.getParamLabels; } });
|
|
126
127
|
Object.defineProperty(exports, "addParamTag", { enumerable: true, get: function () { return parameter_1.addParamTag; } });
|
|
127
128
|
Object.defineProperty(exports, "getParamTags", { enumerable: true, get: function () { return parameter_1.getParamTags; } });
|
|
129
|
+
Object.defineProperty(exports, "createComposeParameterDecorator", { enumerable: true, get: function () { return parameter_1.createComposeParameterDecorator; } });
|
|
128
130
|
var method_1 = require("./metadata/method");
|
|
129
131
|
Object.defineProperty(exports, "addMethodMeta", { enumerable: true, get: function () { return method_1.addMethodMeta; } });
|
|
130
132
|
Object.defineProperty(exports, "getMethodMeta", { enumerable: true, get: function () { return method_1.getMethodMeta; } });
|
|
@@ -132,6 +134,7 @@ Object.defineProperty(exports, "addMethodLabel", { enumerable: true, get: functi
|
|
|
132
134
|
Object.defineProperty(exports, "getMethodLabels", { enumerable: true, get: function () { return method_1.getMethodLabels; } });
|
|
133
135
|
Object.defineProperty(exports, "addMethodTag", { enumerable: true, get: function () { return method_1.addMethodTag; } });
|
|
134
136
|
Object.defineProperty(exports, "getMethodTags", { enumerable: true, get: function () { return method_1.getMethodTags; } });
|
|
137
|
+
Object.defineProperty(exports, "createComposeMethodDecorator", { enumerable: true, get: function () { return method_1.createComposeMethodDecorator; } });
|
|
135
138
|
var errorHandler_1 = require("./utils/errorHandler");
|
|
136
139
|
Object.defineProperty(exports, "handleError", { enumerable: true, get: function () { return errorHandler_1.handleError; } });
|
|
137
140
|
Object.defineProperty(exports, "handleAsyncError", { enumerable: true, get: function () { return errorHandler_1.handleAsyncError; } });
|
|
@@ -8,9 +8,9 @@ class Injector {
|
|
|
8
8
|
constructor(proxyRegistry = ProxyRegistry_1.ProxyRegistry.getInstance()) {
|
|
9
9
|
this.proxyRegistry = proxyRegistry;
|
|
10
10
|
}
|
|
11
|
-
resolve(
|
|
11
|
+
resolve(Target, { scope, args, lazy }) {
|
|
12
12
|
return this.proxyRegistry.toLazyIf(() => {
|
|
13
|
-
const instance = this.createInstance(
|
|
13
|
+
const instance = this.createInstance(Target, { scope, args });
|
|
14
14
|
scope.addInstance(instance);
|
|
15
15
|
for (const onConstructed of this.onConstructedHookList) {
|
|
16
16
|
onConstructed(instance, scope);
|
|
@@ -1,32 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveArgs = exports.args = exports.arg = exports.argsFn = exports.MetadataInjector = void 0;
|
|
3
|
+
exports.resolveArgs = exports.args = exports.arg = exports.argsFn = exports.by = exports.MetadataInjector = void 0;
|
|
4
4
|
exports.inject = inject;
|
|
5
5
|
const IInjector_1 = require("./IInjector");
|
|
6
6
|
const target_1 = require("../metadata/target");
|
|
7
7
|
const parameter_1 = require("../metadata/parameter");
|
|
8
8
|
const toToken_1 = require("../token/toToken");
|
|
9
9
|
class MetadataInjector extends IInjector_1.Injector {
|
|
10
|
-
createInstance(
|
|
11
|
-
const args = (0, exports.resolveArgs)(Target)(scope,
|
|
10
|
+
createInstance(Target, { scope, args: deps = [] }) {
|
|
11
|
+
const args = (0, exports.resolveArgs)(Target)({ scope, args: deps });
|
|
12
12
|
return new Target(...args);
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
exports.MetadataInjector = MetadataInjector;
|
|
16
16
|
const hookMetaKey = (methodName = 'constructor') => `inject:${methodName}`;
|
|
17
|
-
function inject(fn
|
|
17
|
+
function inject(fn) {
|
|
18
18
|
return (target, propertyKey, parameterIndex) => {
|
|
19
|
-
(0, parameter_1.addParamMeta)(hookMetaKey(propertyKey), () =>
|
|
19
|
+
(0, parameter_1.addParamMeta)(hookMetaKey(propertyKey), () => fn)((0, target_1.resolveConstructor)(target), propertyKey, parameterIndex);
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
|
-
const
|
|
22
|
+
const by = (target) => {
|
|
23
|
+
const token = (0, toToken_1.toToken)(target);
|
|
24
|
+
return ({ scope, ...options }) => token.resolve(scope, options);
|
|
25
|
+
};
|
|
26
|
+
exports.by = by;
|
|
27
|
+
const argsFn = (predicate) => ({ args = [] }) => args.find((value, index) => predicate(value, index));
|
|
23
28
|
exports.argsFn = argsFn;
|
|
24
29
|
const arg = (index) => (0, exports.argsFn)((value, i) => i === index);
|
|
25
30
|
exports.arg = arg;
|
|
26
|
-
const args = (
|
|
31
|
+
const args = ({ args = [] }) => args;
|
|
27
32
|
exports.args = args;
|
|
28
33
|
const resolveArgs = (target, methodName) => {
|
|
29
|
-
const
|
|
30
|
-
return (
|
|
34
|
+
const fns = (0, parameter_1.getParamMeta)(hookMetaKey(methodName), target);
|
|
35
|
+
return (options) => fns.map((fn) => fn(options));
|
|
31
36
|
};
|
|
32
37
|
exports.resolveArgs = resolveArgs;
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ProxyInjector = void 0;
|
|
4
4
|
const IInjector_1 = require("./IInjector");
|
|
5
5
|
class ProxyInjector extends IInjector_1.Injector {
|
|
6
|
-
createInstance(
|
|
6
|
+
createInstance(Target, { scope, args = [] }) {
|
|
7
7
|
const proxy = new Proxy({}, {
|
|
8
8
|
get(target, prop) {
|
|
9
9
|
if (prop === 'args') {
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SimpleInjector = void 0;
|
|
4
4
|
const IInjector_1 = require("./IInjector");
|
|
5
5
|
class SimpleInjector extends IInjector_1.Injector {
|
|
6
|
-
createInstance(
|
|
7
|
-
return new Target(
|
|
6
|
+
createInstance(Target, { scope, args = [] }) {
|
|
7
|
+
return new Target(scope, ...args);
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
exports.SimpleInjector = SimpleInjector;
|
package/cjm/metadata/class.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getClassTags = exports.addClassTag = exports.getClassLabels = exports.addClassLabel = exports.addClassMeta = void 0;
|
|
3
|
+
exports.createComposeClassDecorator = exports.getClassTags = exports.addClassTag = exports.getClassLabels = exports.addClassLabel = exports.addClassMeta = void 0;
|
|
4
4
|
exports.getClassMeta = getClassMeta;
|
|
5
5
|
const target_1 = require("./target");
|
|
6
6
|
const addClassMeta = (key, mapFn) => (target) => {
|
|
@@ -19,3 +19,5 @@ const addClassTag = (tag) => (0, exports.addClassMeta)('tag', (prev = new Set())
|
|
|
19
19
|
exports.addClassTag = addClassTag;
|
|
20
20
|
const getClassTags = (target) => getClassMeta(target, 'tag') ?? new Set();
|
|
21
21
|
exports.getClassTags = getClassTags;
|
|
22
|
+
const createComposeClassDecorator = (...decorators) => (target) => decorators.reduceRight((acc, decorate) => decorate(acc) ?? acc, target);
|
|
23
|
+
exports.createComposeClassDecorator = createComposeClassDecorator;
|
package/cjm/metadata/method.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getMethodTags = exports.addMethodTag = exports.getMethodLabels = exports.addMethodLabel = exports.getMethodMeta = exports.addMethodMeta = void 0;
|
|
3
|
+
exports.createComposeMethodDecorator = exports.getMethodTags = exports.addMethodTag = exports.getMethodLabels = exports.addMethodLabel = exports.getMethodMeta = exports.addMethodMeta = void 0;
|
|
4
4
|
const target_1 = require("./target");
|
|
5
5
|
const addMethodMeta = (key, mapFn) => (target, propertyKey) => {
|
|
6
6
|
const metadata = Reflect.getMetadata(key, target.constructor, propertyKey);
|
|
@@ -17,3 +17,5 @@ const addMethodTag = (tag) => (0, exports.addMethodMeta)('tag', (prev = new Set(
|
|
|
17
17
|
exports.addMethodTag = addMethodTag;
|
|
18
18
|
const getMethodTags = (target, propertyKey) => (0, exports.getMethodMeta)('tag', target, propertyKey) ?? new Set();
|
|
19
19
|
exports.getMethodTags = getMethodTags;
|
|
20
|
+
const createComposeMethodDecorator = (...decorators) => (target, propertyKey, descriptor) => decorators.reduceRight((acc, decorate) => decorate(target, propertyKey, acc) ?? acc, descriptor);
|
|
21
|
+
exports.createComposeMethodDecorator = createComposeMethodDecorator;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getParamTags = exports.addParamTag = exports.getParamLabels = exports.addParamLabel = exports.getParamMeta = exports.addParamMeta = void 0;
|
|
3
|
+
exports.createComposeParameterDecorator = exports.getParamTags = exports.addParamTag = exports.getParamLabels = exports.addParamLabel = exports.getParamMeta = exports.addParamMeta = void 0;
|
|
4
4
|
const target_1 = require("./target");
|
|
5
5
|
const addParamMeta = (key, mapFn) => (target, _, parameterIndex) => {
|
|
6
6
|
const metadata = Reflect.getOwnMetadata(key, target) ?? [];
|
|
@@ -32,3 +32,9 @@ const getParamTags = (target, parameterIndex) => {
|
|
|
32
32
|
return all[parameterIndex] ?? new Set();
|
|
33
33
|
};
|
|
34
34
|
exports.getParamTags = getParamTags;
|
|
35
|
+
const createComposeParameterDecorator = (...decorators) => (target, propertyKey, parameterIndex) => {
|
|
36
|
+
for (let i = decorators.length - 1; i >= 0; i--) {
|
|
37
|
+
decorators[i](target, propertyKey, parameterIndex);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
exports.createComposeParameterDecorator = createComposeParameterDecorator;
|
package/cjm/provider/Provider.js
CHANGED
|
@@ -7,13 +7,13 @@ const ProviderDisposedError_1 = require("../errors/ProviderDisposedError");
|
|
|
7
7
|
class Provider {
|
|
8
8
|
resolveDependency;
|
|
9
9
|
static fromClass(Target) {
|
|
10
|
-
return new Provider((
|
|
10
|
+
return new Provider(({ scope, ...options }) => scope.resolve(Target, options));
|
|
11
11
|
}
|
|
12
12
|
static fromValue(value) {
|
|
13
13
|
return new Provider(() => value);
|
|
14
14
|
}
|
|
15
15
|
static fromKey(key) {
|
|
16
|
-
return new Provider((
|
|
16
|
+
return new Provider(({ scope }) => scope.resolve(key));
|
|
17
17
|
}
|
|
18
18
|
argsFnList = [];
|
|
19
19
|
accessRules = [];
|
|
@@ -27,20 +27,21 @@ class Provider {
|
|
|
27
27
|
constructor(resolveDependency) {
|
|
28
28
|
this.resolveDependency = resolveDependency;
|
|
29
29
|
}
|
|
30
|
-
resolve(
|
|
30
|
+
resolve(options) {
|
|
31
31
|
ProviderDisposedError_1.ProviderDisposedError.assert(!this.isDisposed, 'Provider is already disposed');
|
|
32
32
|
if (!this.getKey) {
|
|
33
|
-
return this.resolveDep(
|
|
33
|
+
return this.resolveDep(options);
|
|
34
34
|
}
|
|
35
35
|
const key = (0, basic_1.toString)(this.getKey(options.args ?? []));
|
|
36
36
|
if (!this.cache.has(key)) {
|
|
37
|
-
this.cache.set(key, this.resolveDep(
|
|
37
|
+
this.cache.set(key, this.resolveDep(options));
|
|
38
38
|
}
|
|
39
39
|
return this.cache.get(key);
|
|
40
40
|
}
|
|
41
|
-
resolveDep(scope,
|
|
42
|
-
let dependency = this.resolveDependency(
|
|
43
|
-
|
|
41
|
+
resolveDep({ scope, args = [], lazy }) {
|
|
42
|
+
let dependency = this.resolveDependency({
|
|
43
|
+
scope,
|
|
44
|
+
args: this.argsFnList.reduce((acc, current) => current({ scope, args: acc }), args),
|
|
44
45
|
lazy: lazy ?? this.isLazy,
|
|
45
46
|
});
|
|
46
47
|
dependency = this.mappers.reduce((acc, current) => current(acc, scope), dependency);
|
|
@@ -40,9 +40,9 @@ const bindTo = (...tokens) => (r) => {
|
|
|
40
40
|
exports.bindTo = bindTo;
|
|
41
41
|
const scope = (...rules) => (r) => r.when(...rules);
|
|
42
42
|
exports.scope = scope;
|
|
43
|
-
const appendArgs = (...extraArgs) => (0, exports.registerPipe)((p) => p.addArgsFn((
|
|
43
|
+
const appendArgs = (...extraArgs) => (0, exports.registerPipe)((p) => p.addArgsFn(({ args = [] }) => [...args, ...extraArgs]));
|
|
44
44
|
exports.appendArgs = appendArgs;
|
|
45
|
-
const appendArgsFn = (fn) => (0, exports.registerPipe)((p) => p.addArgsFn((
|
|
45
|
+
const appendArgsFn = (fn) => (0, exports.registerPipe)((p) => p.addArgsFn((options) => [...(options.args ?? []), ...fn(options)]));
|
|
46
46
|
exports.appendArgsFn = appendArgsFn;
|
|
47
47
|
const scopeAccess = (rule) => (0, exports.registerPipe)((p) => p.addAccessRule(rule));
|
|
48
48
|
exports.scopeAccess = scopeAccess;
|
package/cjm/select.js
CHANGED
|
@@ -10,7 +10,7 @@ exports.select = {
|
|
|
10
10
|
token: toToken_1.toToken,
|
|
11
11
|
instances: (predicate = () => true) => new GroupInstanceToken_1.GroupInstanceToken(predicate),
|
|
12
12
|
scope: {
|
|
13
|
-
current: new FunctionToken_1.FunctionToken((
|
|
14
|
-
create: (options) => new FunctionToken_1.FunctionToken((
|
|
13
|
+
current: new FunctionToken_1.FunctionToken(({ scope }) => scope),
|
|
14
|
+
create: (options) => new FunctionToken_1.FunctionToken(({ scope }) => scope.createScope(options)),
|
|
15
15
|
},
|
|
16
16
|
};
|
package/cjm/token/ClassToken.js
CHANGED
|
@@ -17,14 +17,14 @@ class ClassToken extends InjectionToken_1.InjectionToken {
|
|
|
17
17
|
}
|
|
18
18
|
resolve(s, { args = [], lazy } = {}) {
|
|
19
19
|
return s.resolve(this.target, {
|
|
20
|
-
args: this._getArgsFn(s,
|
|
20
|
+
args: this._getArgsFn({ scope: s, args }),
|
|
21
21
|
lazy: this._isLazy || lazy,
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
24
|
args(...newArgs) {
|
|
25
25
|
const parentFn = this._getArgsFn;
|
|
26
26
|
return new ClassToken(this.target, {
|
|
27
|
-
getArgsFn: (
|
|
27
|
+
getArgsFn: (options) => [...parentFn(options), ...newArgs],
|
|
28
28
|
isLazy: this._isLazy,
|
|
29
29
|
tags: this.getTags(),
|
|
30
30
|
});
|
|
@@ -32,7 +32,7 @@ class ClassToken extends InjectionToken_1.InjectionToken {
|
|
|
32
32
|
argsFn(fn) {
|
|
33
33
|
const parentFn = this._getArgsFn;
|
|
34
34
|
return new ClassToken(this.target, {
|
|
35
|
-
getArgsFn: (
|
|
35
|
+
getArgsFn: (options) => [...parentFn(options), ...fn(options.scope)],
|
|
36
36
|
isLazy: this._isLazy,
|
|
37
37
|
tags: this.getTags(),
|
|
38
38
|
});
|
|
@@ -14,15 +14,16 @@ class FunctionToken extends InjectionToken_1.InjectionToken {
|
|
|
14
14
|
this._isLazy = isLazy;
|
|
15
15
|
}
|
|
16
16
|
resolve(s, { args = [], lazy } = {}) {
|
|
17
|
-
return this.fn(
|
|
18
|
-
|
|
17
|
+
return this.fn({
|
|
18
|
+
scope: s,
|
|
19
|
+
args: this._getArgsFn({ scope: s, args }),
|
|
19
20
|
lazy: this._isLazy || lazy,
|
|
20
21
|
});
|
|
21
22
|
}
|
|
22
23
|
args(...newArgs) {
|
|
23
24
|
const parentFn = this._getArgsFn;
|
|
24
25
|
return new FunctionToken(this.fn, {
|
|
25
|
-
getArgsFn: (
|
|
26
|
+
getArgsFn: (options) => [...parentFn(options), ...newArgs],
|
|
26
27
|
isLazy: this._isLazy,
|
|
27
28
|
tags: this.getTags(),
|
|
28
29
|
});
|
|
@@ -30,7 +31,7 @@ class FunctionToken extends InjectionToken_1.InjectionToken {
|
|
|
30
31
|
argsFn(fn) {
|
|
31
32
|
const parentFn = this._getArgsFn;
|
|
32
33
|
return new FunctionToken(this.fn, {
|
|
33
|
-
getArgsFn: (
|
|
34
|
+
getArgsFn: (options) => [...parentFn(options), ...fn(options.scope)],
|
|
34
35
|
isLazy: this._isLazy,
|
|
35
36
|
tags: this.getTags(),
|
|
36
37
|
});
|
|
@@ -17,7 +17,7 @@ class GroupAliasToken extends InjectionToken_1.InjectionToken {
|
|
|
17
17
|
}
|
|
18
18
|
resolve(s, { args = [], lazy } = {}) {
|
|
19
19
|
return s.resolveByAlias(this.token, {
|
|
20
|
-
args: this._getArgsFn(s,
|
|
20
|
+
args: this._getArgsFn({ scope: s, args }),
|
|
21
21
|
lazy: this._isLazy || lazy,
|
|
22
22
|
});
|
|
23
23
|
}
|
|
@@ -27,7 +27,7 @@ class GroupAliasToken extends InjectionToken_1.InjectionToken {
|
|
|
27
27
|
args(...newArgs) {
|
|
28
28
|
const parentFn = this._getArgsFn;
|
|
29
29
|
return new GroupAliasToken(this.token, {
|
|
30
|
-
getArgsFn: (
|
|
30
|
+
getArgsFn: (options) => [...parentFn(options), ...newArgs],
|
|
31
31
|
isLazy: this._isLazy,
|
|
32
32
|
tags: this.getTags(),
|
|
33
33
|
});
|
|
@@ -35,7 +35,7 @@ class GroupAliasToken extends InjectionToken_1.InjectionToken {
|
|
|
35
35
|
argsFn(fn) {
|
|
36
36
|
const parentFn = this._getArgsFn;
|
|
37
37
|
return new GroupAliasToken(this.token, {
|
|
38
|
-
getArgsFn: (
|
|
38
|
+
getArgsFn: (options) => [...parentFn(options), ...fn(options.scope)],
|
|
39
39
|
isLazy: this._isLazy,
|
|
40
40
|
tags: this.getTags(),
|
|
41
41
|
});
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.InjectionToken = exports.forwardArgs = void 0;
|
|
4
4
|
exports.isInjectionToken = isInjectionToken;
|
|
5
5
|
const basic_1 = require("../utils/basic");
|
|
6
|
-
const forwardArgs = (
|
|
6
|
+
const forwardArgs = ({ args = [] }) => args;
|
|
7
7
|
exports.forwardArgs = forwardArgs;
|
|
8
8
|
class InjectionToken {
|
|
9
9
|
tags;
|
|
@@ -17,7 +17,7 @@ class SingleAliasToken extends InjectionToken_1.InjectionToken {
|
|
|
17
17
|
}
|
|
18
18
|
resolve(s, { args = [], lazy } = {}) {
|
|
19
19
|
return s.resolveOneByAlias(this.token, {
|
|
20
|
-
args: this._getArgsFn(s,
|
|
20
|
+
args: this._getArgsFn({ scope: s, args }),
|
|
21
21
|
lazy: this._isLazy || lazy,
|
|
22
22
|
});
|
|
23
23
|
}
|
|
@@ -27,7 +27,7 @@ class SingleAliasToken extends InjectionToken_1.InjectionToken {
|
|
|
27
27
|
args(...newArgs) {
|
|
28
28
|
const parentFn = this._getArgsFn;
|
|
29
29
|
return new SingleAliasToken(this.token, {
|
|
30
|
-
getArgsFn: (
|
|
30
|
+
getArgsFn: (options) => [...parentFn(options), ...newArgs],
|
|
31
31
|
isLazy: this._isLazy,
|
|
32
32
|
tags: this.getTags(),
|
|
33
33
|
});
|
|
@@ -35,7 +35,7 @@ class SingleAliasToken extends InjectionToken_1.InjectionToken {
|
|
|
35
35
|
argsFn(fn) {
|
|
36
36
|
const parentFn = this._getArgsFn;
|
|
37
37
|
return new SingleAliasToken(this.token, {
|
|
38
|
-
getArgsFn: (
|
|
38
|
+
getArgsFn: (options) => [...parentFn(options), ...fn(options.scope)],
|
|
39
39
|
isLazy: this._isLazy,
|
|
40
40
|
tags: this.getTags(),
|
|
41
41
|
});
|
package/cjm/token/SingleToken.js
CHANGED
|
@@ -17,7 +17,7 @@ class SingleToken extends InjectionToken_1.InjectionToken {
|
|
|
17
17
|
}
|
|
18
18
|
resolve(s, { args = [], lazy } = {}) {
|
|
19
19
|
return s.resolve(this.token, {
|
|
20
|
-
args: this._getArgsFn(s,
|
|
20
|
+
args: this._getArgsFn({ scope: s, args }),
|
|
21
21
|
lazy: this._isLazy || lazy,
|
|
22
22
|
});
|
|
23
23
|
}
|
|
@@ -27,7 +27,7 @@ class SingleToken extends InjectionToken_1.InjectionToken {
|
|
|
27
27
|
args(...newArgs) {
|
|
28
28
|
const parentFn = this._getArgsFn;
|
|
29
29
|
return new SingleToken(this.token, {
|
|
30
|
-
getArgsFn: (
|
|
30
|
+
getArgsFn: (options) => [...parentFn(options), ...newArgs],
|
|
31
31
|
isLazy: this._isLazy,
|
|
32
32
|
tags: this.getTags(),
|
|
33
33
|
});
|
|
@@ -35,7 +35,7 @@ class SingleToken extends InjectionToken_1.InjectionToken {
|
|
|
35
35
|
argsFn(fn) {
|
|
36
36
|
const parentFn = this._getArgsFn;
|
|
37
37
|
return new SingleToken(this.token, {
|
|
38
|
-
getArgsFn: (
|
|
38
|
+
getArgsFn: (options) => [...parentFn(options), ...fn(options.scope)],
|
|
39
39
|
isLazy: this._isLazy,
|
|
40
40
|
tags: this.getTags(),
|
|
41
41
|
});
|
package/cjm/token/toToken.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.argToToken = exports.toToken = void 0;
|
|
4
4
|
const IContainer_1 = require("../container/IContainer");
|
|
5
5
|
const SingleToken_1 = require("./SingleToken");
|
|
6
6
|
const ClassToken_1 = require("./ClassToken");
|
|
@@ -9,7 +9,6 @@ const UnsupportedTokenTypeError_1 = require("../errors/UnsupportedTokenTypeError
|
|
|
9
9
|
const InjectionToken_1 = require("./InjectionToken");
|
|
10
10
|
const basic_1 = require("../utils/basic");
|
|
11
11
|
const ConstantToken_1 = require("./ConstantToken");
|
|
12
|
-
const fp_1 = require("../utils/fp");
|
|
13
12
|
const toToken = (token) => {
|
|
14
13
|
if (token instanceof InjectionToken_1.InjectionToken) {
|
|
15
14
|
return token;
|
|
@@ -28,9 +27,3 @@ const toToken = (token) => {
|
|
|
28
27
|
exports.toToken = toToken;
|
|
29
28
|
const argToToken = (v) => ((0, InjectionToken_1.isInjectionToken)(v) ? v : new ConstantToken_1.ConstantToken(v));
|
|
30
29
|
exports.argToToken = argToToken;
|
|
31
|
-
const toMappedToken = (token, mappers) => {
|
|
32
|
-
const source = (0, exports.toToken)(token);
|
|
33
|
-
const mapInstance = (0, fp_1.pipe)(...mappers);
|
|
34
|
-
return new FunctionToken_1.FunctionToken((scope, options) => mapInstance(source.resolve(scope, options)));
|
|
35
|
-
};
|
|
36
|
-
exports.toMappedToken = toMappedToken;
|
|
@@ -38,11 +38,11 @@ export class Container {
|
|
|
38
38
|
resolve(target, { args = [], child = this, lazy } = {}) {
|
|
39
39
|
this.validateContainer();
|
|
40
40
|
if (Is.constructor(target)) {
|
|
41
|
-
return this.injector.resolve(
|
|
41
|
+
return this.injector.resolve(target, { scope: this, args, lazy });
|
|
42
42
|
}
|
|
43
43
|
const provider = this.providers.get(target);
|
|
44
44
|
return provider?.hasAccess({ invocationScope: child, providerScope: this, args })
|
|
45
|
-
? provider.resolve(this,
|
|
45
|
+
? provider.resolve({ scope: this, args, lazy })
|
|
46
46
|
: this.parent.resolve(target, { args, child, lazy });
|
|
47
47
|
}
|
|
48
48
|
resolveByAlias(alias, { args = [], child = this, lazy, excludedKeys = [] } = {}) {
|
|
@@ -55,7 +55,7 @@ export class Container {
|
|
|
55
55
|
continue;
|
|
56
56
|
}
|
|
57
57
|
keys.push(key);
|
|
58
|
-
deps.push(provider.resolve(this,
|
|
58
|
+
deps.push(provider.resolve({ scope: this, args, lazy }));
|
|
59
59
|
}
|
|
60
60
|
const parentDeps = this.parent.resolveByAlias(alias, {
|
|
61
61
|
args,
|
|
@@ -70,7 +70,7 @@ export class Container {
|
|
|
70
70
|
const [key] = this.aliases.getKeysByAlias(alias);
|
|
71
71
|
const provider = key ? this.findProviderByKeyOrFail(key) : undefined;
|
|
72
72
|
return provider?.hasAccess({ invocationScope: child, providerScope: this, args })
|
|
73
|
-
? provider.resolve(this,
|
|
73
|
+
? provider.resolve({ scope: this, args, lazy })
|
|
74
74
|
: this.parent.resolveOneByAlias(alias, { args, child, lazy });
|
|
75
75
|
}
|
|
76
76
|
createScope({ tags } = {}) {
|
|
@@ -90,7 +90,7 @@ export class Container {
|
|
|
90
90
|
this.validateContainer();
|
|
91
91
|
for (const provider of this.providers.values()) {
|
|
92
92
|
if (provider.isAutoResolvable() && provider.hasAccess({ invocationScope: this, providerScope: this, args })) {
|
|
93
|
-
provider.resolve(this,
|
|
93
|
+
provider.resolve({ scope: this, args });
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
return this;
|
package/esm/hooks/HookContext.js
CHANGED
|
@@ -10,7 +10,8 @@ export class HookContext {
|
|
|
10
10
|
this.methodName = methodName;
|
|
11
11
|
}
|
|
12
12
|
resolveArgs(...args) {
|
|
13
|
-
return resolveArgs(this.instance, this.methodName)(
|
|
13
|
+
return resolveArgs(this.instance, this.methodName)({
|
|
14
|
+
scope: this.scope,
|
|
14
15
|
args: [...this.initialArgs, ...args],
|
|
15
16
|
});
|
|
16
17
|
}
|
|
@@ -18,7 +19,7 @@ export class HookContext {
|
|
|
18
19
|
return this.instance[this.methodName](...args);
|
|
19
20
|
}
|
|
20
21
|
setProperty(fn) {
|
|
21
|
-
this.instance[this.methodName] = fn
|
|
22
|
+
this.instance[this.methodName] = fn({ scope: this.scope });
|
|
22
23
|
}
|
|
23
24
|
getProperty() {
|
|
24
25
|
return this.instance[this.methodName];
|
package/esm/hooks/injectProp.js
CHANGED
package/esm/index.js
CHANGED
|
@@ -3,7 +3,7 @@ export { Container } from './container/Container.js';
|
|
|
3
3
|
export { AutoResolveModule } from './container/AutoResolveModule.js';
|
|
4
4
|
export { EmptyContainer } from './container/EmptyContainer.js';
|
|
5
5
|
export { Injector, } from './injector/IInjector.js';
|
|
6
|
-
export { MetadataInjector, inject, arg, args, argsFn, resolveArgs } from './injector/MetadataInjector.js';
|
|
6
|
+
export { MetadataInjector, inject, arg, args, argsFn, by, resolveArgs } from './injector/MetadataInjector.js';
|
|
7
7
|
export { SimpleInjector } from './injector/SimpleInjector.js';
|
|
8
8
|
export { ProxyInjector } from './injector/ProxyInjector.js';
|
|
9
9
|
export { Provider } from './provider/Provider.js';
|
|
@@ -26,7 +26,7 @@ export { injectProp } from './hooks/injectProp.js';
|
|
|
26
26
|
export { sequential, parallel, oncePerInstance } from './hooks/combinators.js';
|
|
27
27
|
export { HookCollector, toTask, } from './hooks/HookCollector.js';
|
|
28
28
|
export { InjectionToken, isInjectionToken, forwardArgs } from './token/InjectionToken.js';
|
|
29
|
-
export { toToken,
|
|
29
|
+
export { toToken, argToToken } from './token/toToken.js';
|
|
30
30
|
export { GroupAliasToken, toGroupAlias } from './token/GroupAliasToken.js';
|
|
31
31
|
export { SingleAliasToken, toSingleAlias } from './token/SingleAliasToken.js';
|
|
32
32
|
export { ClassToken } from './token/ClassToken.js';
|
|
@@ -35,9 +35,9 @@ export { FunctionToken } from './token/FunctionToken.js';
|
|
|
35
35
|
export { ConstantToken } from './token/ConstantToken.js';
|
|
36
36
|
export { GroupInstanceToken } from './token/GroupInstanceToken.js';
|
|
37
37
|
export { resolveConstructor } from './metadata/target.js';
|
|
38
|
-
export { addClassMeta, getClassMeta, addClassLabel, getClassLabels, addClassTag, getClassTags } from './metadata/class.js';
|
|
39
|
-
export { addParamMeta, getParamMeta, addParamLabel, getParamLabels, addParamTag, getParamTags, } from './metadata/parameter.js';
|
|
40
|
-
export { addMethodMeta, getMethodMeta, addMethodLabel, getMethodLabels, addMethodTag, getMethodTags, } from './metadata/method.js';
|
|
38
|
+
export { addClassMeta, getClassMeta, addClassLabel, getClassLabels, addClassTag, getClassTags, createComposeClassDecorator, } from './metadata/class.js';
|
|
39
|
+
export { addParamMeta, getParamMeta, addParamLabel, getParamLabels, addParamTag, getParamTags, createComposeParameterDecorator, } from './metadata/parameter.js';
|
|
40
|
+
export { addMethodMeta, getMethodMeta, addMethodLabel, getMethodLabels, addMethodTag, getMethodTags, createComposeMethodDecorator, } from './metadata/method.js';
|
|
41
41
|
export { handleError, handleAsyncError } from './utils/errorHandler.js';
|
|
42
42
|
export { runInOrder, runAtOnce } from './utils/task.js';
|
|
43
43
|
export { throttle } from './utils/throttle.js';
|
|
@@ -5,9 +5,9 @@ export class Injector {
|
|
|
5
5
|
constructor(proxyRegistry = ProxyRegistry.getInstance()) {
|
|
6
6
|
this.proxyRegistry = proxyRegistry;
|
|
7
7
|
}
|
|
8
|
-
resolve(
|
|
8
|
+
resolve(Target, { scope, args, lazy }) {
|
|
9
9
|
return this.proxyRegistry.toLazyIf(() => {
|
|
10
|
-
const instance = this.createInstance(
|
|
10
|
+
const instance = this.createInstance(Target, { scope, args });
|
|
11
11
|
scope.addInstance(instance);
|
|
12
12
|
for (const onConstructed of this.onConstructedHookList) {
|
|
13
13
|
onConstructed(instance, scope);
|