ts-ioc-container 44.0.3 → 44.0.4
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 +15 -15
- package/cjm/container/Container.js +5 -5
- package/cjm/index.js +2 -5
- package/esm/container/Container.js +5 -5
- package/esm/index.js +1 -2
- package/package.json +1 -1
- package/typings/container/Container.d.ts +1 -1
- package/typings/container/IContainer.d.ts +1 -1
- package/typings/index.d.ts +1 -2
package/README.md
CHANGED
|
@@ -261,7 +261,7 @@ describe('Disposing', function () {
|
|
|
261
261
|
Sometimes you want to create dependency only when somebody want to invoke it's method or property. This is what `lazy` is for.
|
|
262
262
|
|
|
263
263
|
```typescript
|
|
264
|
-
import { Container, inject, register, Registration as R,
|
|
264
|
+
import { Container, inject, register, Registration as R, select as s, singleton } from 'ts-ioc-container';
|
|
265
265
|
|
|
266
266
|
describe('lazy provider', () => {
|
|
267
267
|
@register(singleton())
|
|
@@ -286,7 +286,7 @@ describe('lazy provider', () => {
|
|
|
286
286
|
}
|
|
287
287
|
|
|
288
288
|
class App {
|
|
289
|
-
constructor(@inject(
|
|
289
|
+
constructor(@inject(s.token('Service').lazy()) public service: Service) {}
|
|
290
290
|
|
|
291
291
|
run() {
|
|
292
292
|
return this.service.greet();
|
|
@@ -545,8 +545,8 @@ import {
|
|
|
545
545
|
register,
|
|
546
546
|
Registration as R,
|
|
547
547
|
scopeAccess,
|
|
548
|
+
select as s,
|
|
548
549
|
singleton,
|
|
549
|
-
toToken,
|
|
550
550
|
} from 'ts-ioc-container';
|
|
551
551
|
|
|
552
552
|
class Logger {}
|
|
@@ -763,7 +763,7 @@ describe('Provider', () => {
|
|
|
763
763
|
}
|
|
764
764
|
|
|
765
765
|
class Main {
|
|
766
|
-
constructor(@inject(
|
|
766
|
+
constructor(@inject(s.token('ILogger').args({ channel: 'file' })) private logger: Logger) {}
|
|
767
767
|
|
|
768
768
|
getChannel(): string {
|
|
769
769
|
return this.logger.channel;
|
|
@@ -788,7 +788,7 @@ describe('Provider', () => {
|
|
|
788
788
|
|
|
789
789
|
class Main {
|
|
790
790
|
constructor(
|
|
791
|
-
@inject(
|
|
791
|
+
@inject(s.token('ILogger').argsFn((s) => [{ channel: s.resolve('channel') }])) private logger: Logger,
|
|
792
792
|
) {}
|
|
793
793
|
|
|
794
794
|
getChannel(): string {
|
|
@@ -1059,12 +1059,12 @@ import {
|
|
|
1059
1059
|
register,
|
|
1060
1060
|
Registration as R,
|
|
1061
1061
|
scope,
|
|
1062
|
-
|
|
1062
|
+
select as s,
|
|
1063
1063
|
} from 'ts-ioc-container';
|
|
1064
1064
|
|
|
1065
1065
|
describe('alias', () => {
|
|
1066
1066
|
const IMiddlewareKey = 'IMiddleware';
|
|
1067
|
-
const middleware = register(bindTo(
|
|
1067
|
+
const middleware = register(bindTo(s.alias(IMiddlewareKey)));
|
|
1068
1068
|
|
|
1069
1069
|
interface IMiddleware {
|
|
1070
1070
|
applyTo(application: IApplication): void;
|
|
@@ -1092,7 +1092,7 @@ describe('alias', () => {
|
|
|
1092
1092
|
it('should resolve by some alias', () => {
|
|
1093
1093
|
class App implements IApplication {
|
|
1094
1094
|
private appliedMiddleware: Set<string> = new Set();
|
|
1095
|
-
constructor(@inject(
|
|
1095
|
+
constructor(@inject(s.alias(IMiddlewareKey)) public middleware: IMiddleware[]) {}
|
|
1096
1096
|
|
|
1097
1097
|
markMiddlewareAsApplied(name: string): void {
|
|
1098
1098
|
this.appliedMiddleware.add(name);
|
|
@@ -1125,7 +1125,7 @@ describe('alias', () => {
|
|
|
1125
1125
|
});
|
|
1126
1126
|
|
|
1127
1127
|
it('should resolve by some alias', () => {
|
|
1128
|
-
@register(bindTo(
|
|
1128
|
+
@register(bindTo(s.alias('ILogger')))
|
|
1129
1129
|
class FileLogger {}
|
|
1130
1130
|
|
|
1131
1131
|
const container = new Container().addRegistration(R.fromClass(FileLogger));
|
|
@@ -1135,10 +1135,10 @@ describe('alias', () => {
|
|
|
1135
1135
|
});
|
|
1136
1136
|
|
|
1137
1137
|
it('should resolve by alias', () => {
|
|
1138
|
-
@register(bindTo(
|
|
1138
|
+
@register(bindTo(s.alias('ILogger')), scope((s) => s.hasTag('root')))
|
|
1139
1139
|
class FileLogger {}
|
|
1140
1140
|
|
|
1141
|
-
@register(bindTo(
|
|
1141
|
+
@register(bindTo(s.alias('ILogger')), scope((s) => s.hasTag('child')))
|
|
1142
1142
|
class DbLogger {}
|
|
1143
1143
|
|
|
1144
1144
|
const container = new Container({ tags: ['root'] })
|
|
@@ -1169,8 +1169,8 @@ import {
|
|
|
1169
1169
|
inject,
|
|
1170
1170
|
register,
|
|
1171
1171
|
Registration as R,
|
|
1172
|
+
select as s,
|
|
1172
1173
|
singleton,
|
|
1173
|
-
toToken,
|
|
1174
1174
|
} from 'ts-ioc-container';
|
|
1175
1175
|
|
|
1176
1176
|
describe('lazy provider', () => {
|
|
@@ -1199,7 +1199,7 @@ describe('lazy provider', () => {
|
|
|
1199
1199
|
class LogRepository implements IRepository {
|
|
1200
1200
|
constructor(
|
|
1201
1201
|
private repository: IRepository,
|
|
1202
|
-
@inject(
|
|
1202
|
+
@inject(s.token('Logger').lazy()) private logger: Logger,
|
|
1203
1203
|
) {}
|
|
1204
1204
|
|
|
1205
1205
|
async save(item: Todo): Promise<void> {
|
|
@@ -1268,8 +1268,8 @@ import {
|
|
|
1268
1268
|
register,
|
|
1269
1269
|
Registration as R,
|
|
1270
1270
|
scope,
|
|
1271
|
+
select as s,
|
|
1271
1272
|
singleton,
|
|
1272
|
-
toAlias,
|
|
1273
1273
|
} from 'ts-ioc-container';
|
|
1274
1274
|
|
|
1275
1275
|
describe('Registration module', function () {
|
|
@@ -1311,7 +1311,7 @@ describe('Registration module', function () {
|
|
|
1311
1311
|
});
|
|
1312
1312
|
|
|
1313
1313
|
it('should assign additional key which redirects to original one', function () {
|
|
1314
|
-
@register(bindTo('ILogger'), bindTo(
|
|
1314
|
+
@register(bindTo('ILogger'), bindTo(s.alias('Logger')), singleton())
|
|
1315
1315
|
class Logger {}
|
|
1316
1316
|
|
|
1317
1317
|
const root = createContainer().addRegistration(R.fromClass(Logger));
|
|
@@ -30,15 +30,15 @@ class Container {
|
|
|
30
30
|
this.aliases.setAliasesByKey(key, aliases);
|
|
31
31
|
return this;
|
|
32
32
|
}
|
|
33
|
-
resolve(
|
|
33
|
+
resolve(target, { args = [], child = this, lazy } = {}) {
|
|
34
34
|
this.validateContainer();
|
|
35
|
-
if (utils_1.Is.constructor(
|
|
36
|
-
return this.injector.resolve(this,
|
|
35
|
+
if (utils_1.Is.constructor(target)) {
|
|
36
|
+
return this.injector.resolve(this, target, { args, lazy });
|
|
37
37
|
}
|
|
38
|
-
const provider = this.providers.get(
|
|
38
|
+
const provider = this.providers.get(target);
|
|
39
39
|
return provider?.hasAccess({ invocationScope: child, providerScope: this })
|
|
40
40
|
? provider.resolve(this, { args, lazy })
|
|
41
|
-
: this.parent.resolve(
|
|
41
|
+
: this.parent.resolve(target, { args, child, lazy });
|
|
42
42
|
}
|
|
43
43
|
resolveByAlias(alias, { args = [], child = this, lazy, excludedKeys = [] } = {}) {
|
|
44
44
|
this.validateContainer();
|
package/cjm/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.Is = exports.select = exports.
|
|
3
|
+
exports.ClassToken = exports.toAliasUniq = exports.AliasUniqToken = exports.AliasToken = exports.InjectionToken = exports.getParameterMetadata = exports.getMethodMetadata = exports.setMethodMetadata = exports.setParameterMetadata = exports.getMetadata = exports.setMetadata = exports.HooksRunner = exports.onDispose = exports.onDisposeHooksRunner = exports.onConstruct = exports.onConstructHooksRunner = exports.injectProp = exports.HookContext = exports.hasHooks = exports.hook = exports.getHooks = exports.UnexpectedHookResultError = exports.ContainerDisposedError = exports.MethodNotImplementedError = exports.DependencyMissingKeyError = exports.DependencyNotFoundError = exports.Registration = exports.bindTo = exports.register = exports.scope = exports.decorate = exports.MultiCache = exports.multiCache = exports.SingletonProvider = exports.singleton = exports.Provider = exports.resolveByArgs = exports.ProviderDecorator = exports.args = exports.argsFn = exports.lazy = exports.scopeAccess = exports.ProxyInjector = exports.SimpleInjector = exports.MetadataInjector = exports.resolveArgs = exports.inject = exports.EmptyContainer = exports.Container = exports.isDependencyKey = void 0;
|
|
4
|
+
exports.Is = exports.select = exports.InstanceListToken = exports.ConstantToken = exports.FunctionToken = exports.IDToken = void 0;
|
|
5
5
|
// Containers
|
|
6
6
|
var IContainer_1 = require("./container/IContainer");
|
|
7
7
|
Object.defineProperty(exports, "isDependencyKey", { enumerable: true, get: function () { return IContainer_1.isDependencyKey; } });
|
|
@@ -86,7 +86,6 @@ var InjectionToken_1 = require("./token/InjectionToken");
|
|
|
86
86
|
Object.defineProperty(exports, "InjectionToken", { enumerable: true, get: function () { return InjectionToken_1.InjectionToken; } });
|
|
87
87
|
var AliasToken_1 = require("./token/AliasToken");
|
|
88
88
|
Object.defineProperty(exports, "AliasToken", { enumerable: true, get: function () { return AliasToken_1.AliasToken; } });
|
|
89
|
-
Object.defineProperty(exports, "toAlias", { enumerable: true, get: function () { return AliasToken_1.toAlias; } });
|
|
90
89
|
var AliasUniqToken_1 = require("./token/AliasUniqToken");
|
|
91
90
|
Object.defineProperty(exports, "AliasUniqToken", { enumerable: true, get: function () { return AliasUniqToken_1.AliasUniqToken; } });
|
|
92
91
|
Object.defineProperty(exports, "toAliasUniq", { enumerable: true, get: function () { return AliasUniqToken_1.toAliasUniq; } });
|
|
@@ -100,8 +99,6 @@ var ConstantToken_1 = require("./token/ConstantToken");
|
|
|
100
99
|
Object.defineProperty(exports, "ConstantToken", { enumerable: true, get: function () { return ConstantToken_1.ConstantToken; } });
|
|
101
100
|
var InstanceListToken_1 = require("./token/InstanceListToken");
|
|
102
101
|
Object.defineProperty(exports, "InstanceListToken", { enumerable: true, get: function () { return InstanceListToken_1.InstanceListToken; } });
|
|
103
|
-
var toToken_1 = require("./token/toToken");
|
|
104
|
-
Object.defineProperty(exports, "toToken", { enumerable: true, get: function () { return toToken_1.toToken; } });
|
|
105
102
|
// Others
|
|
106
103
|
var select_1 = require("./select");
|
|
107
104
|
Object.defineProperty(exports, "select", { enumerable: true, get: function () { return select_1.select; } });
|
|
@@ -27,15 +27,15 @@ export class Container {
|
|
|
27
27
|
this.aliases.setAliasesByKey(key, aliases);
|
|
28
28
|
return this;
|
|
29
29
|
}
|
|
30
|
-
resolve(
|
|
30
|
+
resolve(target, { args = [], child = this, lazy } = {}) {
|
|
31
31
|
this.validateContainer();
|
|
32
|
-
if (Is.constructor(
|
|
33
|
-
return this.injector.resolve(this,
|
|
32
|
+
if (Is.constructor(target)) {
|
|
33
|
+
return this.injector.resolve(this, target, { args, lazy });
|
|
34
34
|
}
|
|
35
|
-
const provider = this.providers.get(
|
|
35
|
+
const provider = this.providers.get(target);
|
|
36
36
|
return provider?.hasAccess({ invocationScope: child, providerScope: this })
|
|
37
37
|
? provider.resolve(this, { args, lazy })
|
|
38
|
-
: this.parent.resolve(
|
|
38
|
+
: this.parent.resolve(target, { args, child, lazy });
|
|
39
39
|
}
|
|
40
40
|
resolveByAlias(alias, { args = [], child = this, lazy, excludedKeys = [] } = {}) {
|
|
41
41
|
this.validateContainer();
|
package/esm/index.js
CHANGED
|
@@ -34,14 +34,13 @@ export { HooksRunner } from './hooks/HooksRunner';
|
|
|
34
34
|
export { setMetadata, getMetadata, setParameterMetadata, setMethodMetadata, getMethodMetadata, getParameterMetadata, } from './metadata';
|
|
35
35
|
// InjectionToken
|
|
36
36
|
export { InjectionToken } from './token/InjectionToken';
|
|
37
|
-
export { AliasToken
|
|
37
|
+
export { AliasToken } from './token/AliasToken';
|
|
38
38
|
export { AliasUniqToken, toAliasUniq } from './token/AliasUniqToken';
|
|
39
39
|
export { ClassToken } from './token/ClassToken';
|
|
40
40
|
export { IDToken } from './token/IDToken';
|
|
41
41
|
export { FunctionToken } from './token/FunctionToken';
|
|
42
42
|
export { ConstantToken } from './token/ConstantToken';
|
|
43
43
|
export { InstanceListToken } from './token/InstanceListToken';
|
|
44
|
-
export { toToken } from './token/toToken';
|
|
45
44
|
// Others
|
|
46
45
|
export { select } from './select';
|
|
47
46
|
export { Is } from './utils';
|
package/package.json
CHANGED
|
@@ -23,7 +23,7 @@ export declare class Container implements IContainer {
|
|
|
23
23
|
tags?: Tag[];
|
|
24
24
|
});
|
|
25
25
|
register(key: DependencyKey, provider: IProvider, { aliases }?: RegisterOptions): this;
|
|
26
|
-
resolve<T>(
|
|
26
|
+
resolve<T>(target: constructor<T> | DependencyKey, { args, child, lazy }?: ResolveOneOptions): T;
|
|
27
27
|
resolveByAlias<T>(alias: DependencyKey, { args, child, lazy, excludedKeys }?: ResolveManyOptions): T[];
|
|
28
28
|
resolveOneByAlias<T>(alias: DependencyKey, { args, child, lazy }?: ResolveOneOptions): T;
|
|
29
29
|
createScope({ tags }?: CreateScopeOptions): IContainer;
|
|
@@ -33,7 +33,7 @@ export interface IContainer extends Tagged {
|
|
|
33
33
|
register(key: DependencyKey, value: IProvider, options?: RegisterOptions): this;
|
|
34
34
|
addRegistration(registration: IRegistration): this;
|
|
35
35
|
getRegistrations(): IRegistration[];
|
|
36
|
-
resolve<T>(
|
|
36
|
+
resolve<T>(target: constructor<T> | DependencyKey, options?: ResolveOneOptions): T;
|
|
37
37
|
resolveByAlias<T>(alias: DependencyKey, options?: ResolveManyOptions): T[];
|
|
38
38
|
resolveOneByAlias<T>(alias: DependencyKey, options?: ResolveOneOptions): T;
|
|
39
39
|
createScope(options?: CreateScopeOptions): IContainer;
|
package/typings/index.d.ts
CHANGED
|
@@ -27,14 +27,13 @@ export { onDisposeHooksRunner, onDispose } from './hooks/onDispose';
|
|
|
27
27
|
export { HooksRunnerContext, HooksRunner } from './hooks/HooksRunner';
|
|
28
28
|
export { setMetadata, getMetadata, setParameterMetadata, setMethodMetadata, getMethodMetadata, getParameterMetadata, } from './metadata';
|
|
29
29
|
export { InjectionToken } from './token/InjectionToken';
|
|
30
|
-
export { AliasToken
|
|
30
|
+
export { AliasToken } from './token/AliasToken';
|
|
31
31
|
export { AliasUniqToken, toAliasUniq } from './token/AliasUniqToken';
|
|
32
32
|
export { ClassToken } from './token/ClassToken';
|
|
33
33
|
export { IDToken } from './token/IDToken';
|
|
34
34
|
export { FunctionToken } from './token/FunctionToken';
|
|
35
35
|
export { ConstantToken } from './token/ConstantToken';
|
|
36
36
|
export { type InstancePredicate, InstanceListToken } from './token/InstanceListToken';
|
|
37
|
-
export { toToken } from './token/toToken';
|
|
38
37
|
export { select } from './select';
|
|
39
38
|
export { Is } from './utils';
|
|
40
39
|
export { InjectFn } from './hooks/hook';
|