ts-ioc-container 26.4.2 → 26.4.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/esm/by.js +3 -7
- package/esm/container/AutoMockedContainer.js +5 -9
- package/esm/container/Container.js +8 -12
- package/esm/container/ContainerDisposedError.js +1 -5
- package/esm/container/DependencyNotFoundError.js +1 -5
- package/esm/container/EmptyContainer.js +10 -14
- package/esm/container/IContainer.js +2 -7
- package/esm/container/MethodNotImplementedError.js +1 -5
- package/esm/hook.js +2 -7
- package/esm/index.js +20 -52
- package/esm/injector/IInjector.js +1 -2
- package/esm/injector/ProxyInjector.js +1 -5
- package/esm/injector/ReflectionInjector.js +4 -9
- package/esm/injector/SimpleInjector.js +1 -5
- package/esm/metadata.js +2 -7
- package/esm/provider/ArgsProvider.js +4 -10
- package/esm/provider/IProvider.js +1 -5
- package/esm/provider/Provider.js +6 -11
- package/esm/provider/ProviderDecorator.js +3 -7
- package/esm/provider/SingletonProvider.js +3 -8
- package/esm/provider/TaggedProvider.js +3 -8
- package/esm/registration/DependencyMissingKeyError.js +1 -5
- package/esm/registration/Registration.js +8 -13
- package/esm/utils.js +3 -9
- package/package.json +2 -2
package/esm/by.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.by = exports.all = void 0;
|
|
4
|
-
const all = () => true;
|
|
5
|
-
exports.all = all;
|
|
6
|
-
exports.by = {
|
|
1
|
+
export const all = () => true;
|
|
2
|
+
export const by = {
|
|
7
3
|
alias: {
|
|
8
4
|
/**
|
|
9
5
|
* Get all instances that have at least one of the given aliases
|
|
@@ -31,7 +27,7 @@ exports.by = {
|
|
|
31
27
|
* Get all instances that match the given predicate
|
|
32
28
|
* @param predicate
|
|
33
29
|
*/
|
|
34
|
-
instances: (predicate =
|
|
30
|
+
instances: (predicate = all) => (l) => l.getInstances().filter(predicate),
|
|
35
31
|
scope: {
|
|
36
32
|
/**
|
|
37
33
|
* Get the current scope
|
|
@@ -1,27 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.AutoMockedContainer = void 0;
|
|
4
|
-
const index_1 = require("../index");
|
|
5
|
-
class AutoMockedContainer {
|
|
1
|
+
import { MethodNotImplementedError, } from '../index';
|
|
2
|
+
export class AutoMockedContainer {
|
|
6
3
|
getTokensByProvider(predicate) {
|
|
7
4
|
return [];
|
|
8
5
|
}
|
|
9
6
|
createScope(...tags) {
|
|
10
|
-
throw new
|
|
7
|
+
throw new MethodNotImplementedError();
|
|
11
8
|
}
|
|
12
9
|
dispose() { }
|
|
13
10
|
cloneAndImportProvidersFrom() {
|
|
14
11
|
return new Map();
|
|
15
12
|
}
|
|
16
13
|
register(key, value) {
|
|
17
|
-
throw new
|
|
14
|
+
throw new MethodNotImplementedError();
|
|
18
15
|
}
|
|
19
16
|
getInstances() {
|
|
20
17
|
return [];
|
|
21
18
|
}
|
|
22
19
|
removeScope() { }
|
|
23
20
|
use(module) {
|
|
24
|
-
throw new
|
|
21
|
+
throw new MethodNotImplementedError();
|
|
25
22
|
}
|
|
26
23
|
getAllProviders() {
|
|
27
24
|
return new Map();
|
|
@@ -30,4 +27,3 @@ class AutoMockedContainer {
|
|
|
30
27
|
return false;
|
|
31
28
|
}
|
|
32
29
|
}
|
|
33
|
-
exports.AutoMockedContainer = AutoMockedContainer;
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const EmptyContainer_1 = require("./EmptyContainer");
|
|
6
|
-
const ContainerDisposedError_1 = require("./ContainerDisposedError");
|
|
7
|
-
class Container {
|
|
1
|
+
import { isConstructor } from './IContainer';
|
|
2
|
+
import { EmptyContainer } from './EmptyContainer';
|
|
3
|
+
import { ContainerDisposedError } from './ContainerDisposedError';
|
|
4
|
+
export class Container {
|
|
8
5
|
constructor(injector, options = {}) {
|
|
9
6
|
var _a, _b;
|
|
10
7
|
this.injector = injector;
|
|
@@ -12,7 +9,7 @@ class Container {
|
|
|
12
9
|
this.isDisposed = false;
|
|
13
10
|
this.scopes = new Set();
|
|
14
11
|
this.instances = new Set();
|
|
15
|
-
this.parent = (_a = options.parent) !== null && _a !== void 0 ? _a : new
|
|
12
|
+
this.parent = (_a = options.parent) !== null && _a !== void 0 ? _a : new EmptyContainer();
|
|
16
13
|
this.tags = (_b = options.tags) !== null && _b !== void 0 ? _b : [];
|
|
17
14
|
}
|
|
18
15
|
register(key, provider) {
|
|
@@ -22,7 +19,7 @@ class Container {
|
|
|
22
19
|
}
|
|
23
20
|
resolve(token, ...args) {
|
|
24
21
|
this.validateContainer();
|
|
25
|
-
if (
|
|
22
|
+
if (isConstructor(token)) {
|
|
26
23
|
const instance = this.injector.resolve(this, token, ...args);
|
|
27
24
|
this.instances.add(instance);
|
|
28
25
|
return instance;
|
|
@@ -50,7 +47,7 @@ class Container {
|
|
|
50
47
|
this.validateContainer();
|
|
51
48
|
this.isDisposed = true;
|
|
52
49
|
this.parent.removeScope(this);
|
|
53
|
-
this.parent = new
|
|
50
|
+
this.parent = new EmptyContainer();
|
|
54
51
|
for (const scope of this.scopes) {
|
|
55
52
|
scope.dispose();
|
|
56
53
|
}
|
|
@@ -94,7 +91,6 @@ class Container {
|
|
|
94
91
|
this.scopes.delete(child);
|
|
95
92
|
}
|
|
96
93
|
validateContainer() {
|
|
97
|
-
|
|
94
|
+
ContainerDisposedError.assert(!this.isDisposed, 'Container is already disposed');
|
|
98
95
|
}
|
|
99
96
|
}
|
|
100
|
-
exports.Container = Container;
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ContainerDisposedError = void 0;
|
|
4
|
-
class ContainerDisposedError extends Error {
|
|
1
|
+
export class ContainerDisposedError extends Error {
|
|
5
2
|
constructor(message) {
|
|
6
3
|
super(message);
|
|
7
4
|
this.name = 'ContainerDisposedError';
|
|
@@ -13,4 +10,3 @@ class ContainerDisposedError extends Error {
|
|
|
13
10
|
}
|
|
14
11
|
}
|
|
15
12
|
}
|
|
16
|
-
exports.ContainerDisposedError = ContainerDisposedError;
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DependencyNotFoundError = void 0;
|
|
4
|
-
class DependencyNotFoundError extends Error {
|
|
1
|
+
export class DependencyNotFoundError extends Error {
|
|
5
2
|
constructor(message) {
|
|
6
3
|
super(message);
|
|
7
4
|
this.name = 'DependencyNotFoundError';
|
|
8
5
|
Object.setPrototypeOf(this, DependencyNotFoundError.prototype);
|
|
9
6
|
}
|
|
10
7
|
}
|
|
11
|
-
exports.DependencyNotFoundError = DependencyNotFoundError;
|
|
@@ -1,39 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const MethodNotImplementedError_1 = require("./MethodNotImplementedError");
|
|
5
|
-
const DependencyNotFoundError_1 = require("./DependencyNotFoundError");
|
|
6
|
-
class EmptyContainer {
|
|
1
|
+
import { MethodNotImplementedError } from './MethodNotImplementedError';
|
|
2
|
+
import { DependencyNotFoundError } from './DependencyNotFoundError';
|
|
3
|
+
export class EmptyContainer {
|
|
7
4
|
getTokensByProvider(predicate) {
|
|
8
5
|
return [];
|
|
9
6
|
}
|
|
10
7
|
hasTag(tag) {
|
|
11
|
-
throw new
|
|
8
|
+
throw new MethodNotImplementedError();
|
|
12
9
|
}
|
|
13
10
|
createScope(...tags) {
|
|
14
|
-
throw new
|
|
11
|
+
throw new MethodNotImplementedError();
|
|
15
12
|
}
|
|
16
13
|
dispose() {
|
|
17
|
-
throw new
|
|
14
|
+
throw new MethodNotImplementedError();
|
|
18
15
|
}
|
|
19
16
|
register(key, value) {
|
|
20
|
-
throw new
|
|
17
|
+
throw new MethodNotImplementedError();
|
|
21
18
|
}
|
|
22
19
|
resolve(key) {
|
|
23
|
-
throw new
|
|
20
|
+
throw new DependencyNotFoundError(`Cannot find ${key.toString()}`);
|
|
24
21
|
}
|
|
25
22
|
getAllProviders() {
|
|
26
23
|
return new Map();
|
|
27
24
|
}
|
|
28
25
|
cloneAndImportProvidersFrom() {
|
|
29
|
-
throw new
|
|
26
|
+
throw new MethodNotImplementedError();
|
|
30
27
|
}
|
|
31
28
|
getInstances() {
|
|
32
29
|
return [];
|
|
33
30
|
}
|
|
34
31
|
removeScope() { }
|
|
35
32
|
use(module) {
|
|
36
|
-
throw new
|
|
33
|
+
throw new MethodNotImplementedError();
|
|
37
34
|
}
|
|
38
35
|
}
|
|
39
|
-
exports.EmptyContainer = EmptyContainer;
|
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isConstructor = exports.isDependencyKey = void 0;
|
|
4
|
-
function isDependencyKey(token) {
|
|
1
|
+
export function isDependencyKey(token) {
|
|
5
2
|
return ['string', 'symbol'].includes(typeof token);
|
|
6
3
|
}
|
|
7
|
-
|
|
8
|
-
function isConstructor(token) {
|
|
4
|
+
export function isConstructor(token) {
|
|
9
5
|
return typeof token === 'function';
|
|
10
6
|
}
|
|
11
|
-
exports.isConstructor = isConstructor;
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MethodNotImplementedError = void 0;
|
|
4
|
-
class MethodNotImplementedError extends Error {
|
|
1
|
+
export class MethodNotImplementedError extends Error {
|
|
5
2
|
constructor(message) {
|
|
6
3
|
super(message);
|
|
7
4
|
this.name = 'MethodNotImplementedError';
|
|
8
5
|
Object.setPrototypeOf(this, MethodNotImplementedError.prototype);
|
|
9
6
|
}
|
|
10
7
|
}
|
|
11
|
-
exports.MethodNotImplementedError = MethodNotImplementedError;
|
package/esm/hook.js
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getHooks = exports.hook = void 0;
|
|
4
|
-
const hook = (key) => (target, propertyKey) => {
|
|
1
|
+
export const hook = (key) => (target, propertyKey) => {
|
|
5
2
|
const hooks = Reflect.hasMetadata(key, target.constructor) ? Reflect.getMetadata(key, target) : [];
|
|
6
3
|
Reflect.defineMetadata(key, [...hooks, propertyKey], target.constructor); // eslint-disable-line @typescript-eslint/ban-types
|
|
7
4
|
};
|
|
8
|
-
exports.hook = hook;
|
|
9
5
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
10
|
-
function getHooks(target, key) {
|
|
6
|
+
export function getHooks(target, key) {
|
|
11
7
|
return Reflect.hasMetadata(key, target.constructor) ? Reflect.getMetadata(key, target.constructor) : [];
|
|
12
8
|
}
|
|
13
|
-
exports.getHooks = getHooks;
|
package/esm/index.js
CHANGED
|
@@ -1,52 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
var ArgsProvider_1 = require("./provider/ArgsProvider");
|
|
22
|
-
Object.defineProperty(exports, "argsFn", { enumerable: true, get: function () { return ArgsProvider_1.argsFn; } });
|
|
23
|
-
Object.defineProperty(exports, "args", { enumerable: true, get: function () { return ArgsProvider_1.args; } });
|
|
24
|
-
Object.defineProperty(exports, "ArgsProvider", { enumerable: true, get: function () { return ArgsProvider_1.ArgsProvider; } });
|
|
25
|
-
var SingletonProvider_1 = require("./provider/SingletonProvider");
|
|
26
|
-
Object.defineProperty(exports, "singleton", { enumerable: true, get: function () { return SingletonProvider_1.singleton; } });
|
|
27
|
-
Object.defineProperty(exports, "SingletonProvider", { enumerable: true, get: function () { return SingletonProvider_1.SingletonProvider; } });
|
|
28
|
-
var TaggedProvider_1 = require("./provider/TaggedProvider");
|
|
29
|
-
Object.defineProperty(exports, "tags", { enumerable: true, get: function () { return TaggedProvider_1.tags; } });
|
|
30
|
-
Object.defineProperty(exports, "TaggedProvider", { enumerable: true, get: function () { return TaggedProvider_1.TaggedProvider; } });
|
|
31
|
-
var AutoMockedContainer_1 = require("./container/AutoMockedContainer");
|
|
32
|
-
Object.defineProperty(exports, "AutoMockedContainer", { enumerable: true, get: function () { return AutoMockedContainer_1.AutoMockedContainer; } });
|
|
33
|
-
var Registration_1 = require("./registration/Registration");
|
|
34
|
-
Object.defineProperty(exports, "key", { enumerable: true, get: function () { return Registration_1.key; } });
|
|
35
|
-
Object.defineProperty(exports, "Registration", { enumerable: true, get: function () { return Registration_1.Registration; } });
|
|
36
|
-
var DependencyMissingKeyError_1 = require("./registration/DependencyMissingKeyError");
|
|
37
|
-
Object.defineProperty(exports, "DependencyMissingKeyError", { enumerable: true, get: function () { return DependencyMissingKeyError_1.DependencyMissingKeyError; } });
|
|
38
|
-
var ReflectionInjector_1 = require("./injector/ReflectionInjector");
|
|
39
|
-
Object.defineProperty(exports, "ReflectionInjector", { enumerable: true, get: function () { return ReflectionInjector_1.ReflectionInjector; } });
|
|
40
|
-
Object.defineProperty(exports, "inject", { enumerable: true, get: function () { return ReflectionInjector_1.inject; } });
|
|
41
|
-
var SimpleInjector_1 = require("./injector/SimpleInjector");
|
|
42
|
-
Object.defineProperty(exports, "SimpleInjector", { enumerable: true, get: function () { return SimpleInjector_1.SimpleInjector; } });
|
|
43
|
-
var ProxyInjector_1 = require("./injector/ProxyInjector");
|
|
44
|
-
Object.defineProperty(exports, "ProxyInjector", { enumerable: true, get: function () { return ProxyInjector_1.ProxyInjector; } });
|
|
45
|
-
var hook_1 = require("./hook");
|
|
46
|
-
Object.defineProperty(exports, "getHooks", { enumerable: true, get: function () { return hook_1.getHooks; } });
|
|
47
|
-
Object.defineProperty(exports, "hook", { enumerable: true, get: function () { return hook_1.hook; } });
|
|
48
|
-
var by_1 = require("./by");
|
|
49
|
-
Object.defineProperty(exports, "by", { enumerable: true, get: function () { return by_1.by; } });
|
|
50
|
-
var metadata_1 = require("./metadata");
|
|
51
|
-
Object.defineProperty(exports, "setMetadata", { enumerable: true, get: function () { return metadata_1.setMetadata; } });
|
|
52
|
-
Object.defineProperty(exports, "getMetadata", { enumerable: true, get: function () { return metadata_1.getMetadata; } });
|
|
1
|
+
export { isDependencyKey, } from './container/IContainer';
|
|
2
|
+
export { Container } from './container/Container';
|
|
3
|
+
export { EmptyContainer } from './container/EmptyContainer';
|
|
4
|
+
export { alias } from './provider/IProvider';
|
|
5
|
+
export { DependencyNotFoundError } from './container/DependencyNotFoundError';
|
|
6
|
+
export { MethodNotImplementedError } from './container/MethodNotImplementedError';
|
|
7
|
+
export { ContainerDisposedError } from './container/ContainerDisposedError';
|
|
8
|
+
export { Provider, provider } from './provider/Provider';
|
|
9
|
+
export { argsFn, args, ArgsProvider } from './provider/ArgsProvider';
|
|
10
|
+
export { singleton, SingletonProvider } from './provider/SingletonProvider';
|
|
11
|
+
export { tags, TaggedProvider } from './provider/TaggedProvider';
|
|
12
|
+
export { AutoMockedContainer } from './container/AutoMockedContainer';
|
|
13
|
+
export { key, Registration } from './registration/Registration';
|
|
14
|
+
export { DependencyMissingKeyError } from './registration/DependencyMissingKeyError';
|
|
15
|
+
export { ReflectionInjector, inject } from './injector/ReflectionInjector';
|
|
16
|
+
export { SimpleInjector } from './injector/SimpleInjector';
|
|
17
|
+
export { ProxyInjector } from './injector/ProxyInjector';
|
|
18
|
+
export { getHooks, hook } from './hook';
|
|
19
|
+
export { by } from './by';
|
|
20
|
+
export { setMetadata, getMetadata } from './metadata';
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
export {};
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ProxyInjector = void 0;
|
|
4
1
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
5
2
|
function getProp(target, key) {
|
|
6
3
|
// @ts-ignore
|
|
7
4
|
return target[key];
|
|
8
5
|
}
|
|
9
|
-
class ProxyInjector {
|
|
6
|
+
export class ProxyInjector {
|
|
10
7
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
11
8
|
resolve(container, Target, ...deps) {
|
|
12
9
|
const args = deps.reduce((acc, it) => (Object.assign(Object.assign({}, acc), it)), {});
|
|
@@ -20,4 +17,3 @@ class ProxyInjector {
|
|
|
20
17
|
return new Target(proxy);
|
|
21
18
|
}
|
|
22
19
|
}
|
|
23
|
-
exports.ProxyInjector = ProxyInjector;
|
|
@@ -1,21 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ReflectionInjector = exports.inject = void 0;
|
|
4
|
-
const utils_1 = require("../utils");
|
|
1
|
+
import { constant, merge } from '../utils';
|
|
5
2
|
const INJECT_KEY = 'INJECT_FN_LIST';
|
|
6
|
-
const inject = (value) => (target, propertyKey, parameterIndex) => {
|
|
3
|
+
export const inject = (value) => (target, propertyKey, parameterIndex) => {
|
|
7
4
|
var _a;
|
|
8
5
|
const metadata = (_a = Reflect.getOwnMetadata(INJECT_KEY, target)) !== null && _a !== void 0 ? _a : [];
|
|
9
6
|
metadata[parameterIndex] = value;
|
|
10
7
|
Reflect.defineMetadata(INJECT_KEY, metadata, target);
|
|
11
8
|
};
|
|
12
|
-
|
|
13
|
-
class ReflectionInjector {
|
|
9
|
+
export class ReflectionInjector {
|
|
14
10
|
resolve(container, Target, ...deps) {
|
|
15
11
|
var _a;
|
|
16
12
|
const injectionFns = (_a = Reflect.getOwnMetadata(INJECT_KEY, Target)) !== null && _a !== void 0 ? _a : [];
|
|
17
|
-
const args =
|
|
13
|
+
const args = merge(injectionFns, deps.map(constant)).map((fn) => fn(container));
|
|
18
14
|
return new Target(...args);
|
|
19
15
|
}
|
|
20
16
|
}
|
|
21
|
-
exports.ReflectionInjector = ReflectionInjector;
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SimpleInjector = void 0;
|
|
4
|
-
class SimpleInjector {
|
|
1
|
+
export class SimpleInjector {
|
|
5
2
|
resolve(container, Target, ...deps) {
|
|
6
3
|
return new Target(container, ...deps);
|
|
7
4
|
}
|
|
8
5
|
}
|
|
9
|
-
exports.SimpleInjector = SimpleInjector;
|
package/esm/metadata.js
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getMetadata = exports.setMetadata = void 0;
|
|
4
|
-
const setMetadata = (key, value) => (target) => {
|
|
1
|
+
export const setMetadata = (key, value) => (target) => {
|
|
5
2
|
Reflect.defineMetadata(key, value, target);
|
|
6
3
|
};
|
|
7
|
-
exports.setMetadata = setMetadata;
|
|
8
4
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
9
|
-
function getMetadata(target, key) {
|
|
5
|
+
export function getMetadata(target, key) {
|
|
10
6
|
return Reflect.getOwnMetadata(key, target);
|
|
11
7
|
}
|
|
12
|
-
exports.getMetadata = getMetadata;
|
|
@@ -1,16 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.ArgsProvider = exports.argsFn = exports.args = void 0;
|
|
4
|
-
const ProviderDecorator_1 = require("./ProviderDecorator");
|
|
5
|
-
function args(...extraArgs) {
|
|
1
|
+
import { ProviderDecorator } from './ProviderDecorator';
|
|
2
|
+
export function args(...extraArgs) {
|
|
6
3
|
return (provider) => new ArgsProvider(provider, () => extraArgs);
|
|
7
4
|
}
|
|
8
|
-
|
|
9
|
-
function argsFn(value) {
|
|
5
|
+
export function argsFn(value) {
|
|
10
6
|
return (provider) => new ArgsProvider(provider, value);
|
|
11
7
|
}
|
|
12
|
-
|
|
13
|
-
class ArgsProvider extends ProviderDecorator_1.ProviderDecorator {
|
|
8
|
+
export class ArgsProvider extends ProviderDecorator {
|
|
14
9
|
constructor(provider, argsFn) {
|
|
15
10
|
super(provider);
|
|
16
11
|
this.provider = provider;
|
|
@@ -23,4 +18,3 @@ class ArgsProvider extends ProviderDecorator_1.ProviderDecorator {
|
|
|
23
18
|
return new ArgsProvider(this.provider.clone(), this.argsFn);
|
|
24
19
|
}
|
|
25
20
|
}
|
|
26
|
-
exports.ArgsProvider = ArgsProvider;
|
package/esm/provider/Provider.js
CHANGED
|
@@ -1,26 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.Provider = exports.provider = void 0;
|
|
4
|
-
const utils_1 = require("../utils");
|
|
5
|
-
const metadata_1 = require("../metadata");
|
|
1
|
+
import { pipe } from '../utils';
|
|
2
|
+
import { getMetadata, setMetadata } from '../metadata';
|
|
6
3
|
const PROVIDER_KEY = 'provider';
|
|
7
|
-
const provider = (...mappers) =>
|
|
8
|
-
|
|
9
|
-
class Provider {
|
|
4
|
+
export const provider = (...mappers) => setMetadata(PROVIDER_KEY, mappers);
|
|
5
|
+
export class Provider {
|
|
10
6
|
constructor(resolveDependency) {
|
|
11
7
|
this.resolveDependency = resolveDependency;
|
|
12
8
|
this.aliases = new Set();
|
|
13
9
|
}
|
|
14
10
|
static fromClass(Target) {
|
|
15
11
|
var _a;
|
|
16
|
-
const mappers = (_a =
|
|
12
|
+
const mappers = (_a = getMetadata(Target, PROVIDER_KEY)) !== null && _a !== void 0 ? _a : [];
|
|
17
13
|
return new Provider((container, ...args) => container.resolve(Target, ...args)).pipe(...mappers);
|
|
18
14
|
}
|
|
19
15
|
static fromValue(value) {
|
|
20
16
|
return new Provider(() => value);
|
|
21
17
|
}
|
|
22
18
|
pipe(...mappers) {
|
|
23
|
-
return
|
|
19
|
+
return pipe(...mappers)(this);
|
|
24
20
|
}
|
|
25
21
|
addAliases(...aliases) {
|
|
26
22
|
for (const alias of aliases) {
|
|
@@ -41,4 +37,3 @@ class Provider {
|
|
|
41
37
|
return true;
|
|
42
38
|
}
|
|
43
39
|
}
|
|
44
|
-
exports.Provider = Provider;
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.ProviderDecorator = void 0;
|
|
4
|
-
const utils_1 = require("../utils");
|
|
5
|
-
class ProviderDecorator {
|
|
1
|
+
import { pipe } from '../utils';
|
|
2
|
+
export class ProviderDecorator {
|
|
6
3
|
constructor(decorated) {
|
|
7
4
|
this.decorated = decorated;
|
|
8
5
|
}
|
|
@@ -20,7 +17,6 @@ class ProviderDecorator {
|
|
|
20
17
|
return this.decorated.resolve(container, ...args);
|
|
21
18
|
}
|
|
22
19
|
pipe(...mappers) {
|
|
23
|
-
return
|
|
20
|
+
return pipe(...mappers)(this);
|
|
24
21
|
}
|
|
25
22
|
}
|
|
26
|
-
exports.ProviderDecorator = ProviderDecorator;
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.SingletonProvider = exports.singleton = void 0;
|
|
4
|
-
const ProviderDecorator_1 = require("./ProviderDecorator");
|
|
5
|
-
function singleton() {
|
|
1
|
+
import { ProviderDecorator } from './ProviderDecorator';
|
|
2
|
+
export function singleton() {
|
|
6
3
|
return (provider) => new SingletonProvider(provider);
|
|
7
4
|
}
|
|
8
|
-
|
|
9
|
-
class SingletonProvider extends ProviderDecorator_1.ProviderDecorator {
|
|
5
|
+
export class SingletonProvider extends ProviderDecorator {
|
|
10
6
|
constructor(provider) {
|
|
11
7
|
super(provider);
|
|
12
8
|
this.provider = provider;
|
|
@@ -20,4 +16,3 @@ class SingletonProvider extends ProviderDecorator_1.ProviderDecorator {
|
|
|
20
16
|
return this.instance.value;
|
|
21
17
|
}
|
|
22
18
|
}
|
|
23
|
-
exports.SingletonProvider = SingletonProvider;
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.TaggedProvider = exports.tags = void 0;
|
|
4
|
-
const ProviderDecorator_1 = require("./ProviderDecorator");
|
|
5
|
-
function tags(...values) {
|
|
1
|
+
import { ProviderDecorator } from './ProviderDecorator';
|
|
2
|
+
export function tags(...values) {
|
|
6
3
|
return (provider) => new TaggedProvider(provider, values);
|
|
7
4
|
}
|
|
8
|
-
|
|
9
|
-
class TaggedProvider extends ProviderDecorator_1.ProviderDecorator {
|
|
5
|
+
export class TaggedProvider extends ProviderDecorator {
|
|
10
6
|
constructor(provider, tags) {
|
|
11
7
|
super(provider);
|
|
12
8
|
this.provider = provider;
|
|
@@ -19,4 +15,3 @@ class TaggedProvider extends ProviderDecorator_1.ProviderDecorator {
|
|
|
19
15
|
return this.tags.some((t) => filters.hasTag(t)) && this.provider.isValid(filters);
|
|
20
16
|
}
|
|
21
17
|
}
|
|
22
|
-
exports.TaggedProvider = TaggedProvider;
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DependencyMissingKeyError = void 0;
|
|
4
|
-
class DependencyMissingKeyError extends Error {
|
|
1
|
+
export class DependencyMissingKeyError extends Error {
|
|
5
2
|
constructor(message) {
|
|
6
3
|
super(message);
|
|
7
4
|
this.name = 'DependencyMissingKeyError';
|
|
8
5
|
Object.setPrototypeOf(this, DependencyMissingKeyError.prototype);
|
|
9
6
|
}
|
|
10
7
|
}
|
|
11
|
-
exports.DependencyMissingKeyError = DependencyMissingKeyError;
|
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const DependencyMissingKeyError_1 = require("./DependencyMissingKeyError");
|
|
5
|
-
const metadata_1 = require("../metadata");
|
|
6
|
-
const Provider_1 = require("../provider/Provider");
|
|
1
|
+
import { DependencyMissingKeyError } from './DependencyMissingKeyError';
|
|
2
|
+
import { getMetadata, setMetadata } from '../metadata';
|
|
3
|
+
import { Provider } from '../provider/Provider';
|
|
7
4
|
const DEPENDENCY_KEY = 'DependencyKey';
|
|
8
|
-
const key = (value) =>
|
|
9
|
-
|
|
10
|
-
class Registration {
|
|
5
|
+
export const key = (value) => setMetadata(DEPENDENCY_KEY, value);
|
|
6
|
+
export class Registration {
|
|
11
7
|
constructor(key, provider) {
|
|
12
8
|
this.key = key;
|
|
13
9
|
this.provider = provider;
|
|
14
10
|
}
|
|
15
11
|
static fromClass(Target) {
|
|
16
|
-
const dependencyKey =
|
|
12
|
+
const dependencyKey = getMetadata(Target, DEPENDENCY_KEY);
|
|
17
13
|
if (dependencyKey === undefined) {
|
|
18
|
-
throw new
|
|
14
|
+
throw new DependencyMissingKeyError(`Pls provide dependency key for ${Target.name}`);
|
|
19
15
|
}
|
|
20
|
-
return new Registration(dependencyKey,
|
|
16
|
+
return new Registration(dependencyKey, Provider.fromClass(Target));
|
|
21
17
|
}
|
|
22
18
|
pipe(...mappers) {
|
|
23
19
|
this.provider = this.provider.pipe(...mappers);
|
|
@@ -27,4 +23,3 @@ class Registration {
|
|
|
27
23
|
container.register(this.key, this.provider);
|
|
28
24
|
}
|
|
29
25
|
}
|
|
30
|
-
exports.Registration = Registration;
|
package/esm/utils.js
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.constant = exports.merge = exports.pipe = void 0;
|
|
4
|
-
function pipe(...mappers) {
|
|
1
|
+
export function pipe(...mappers) {
|
|
5
2
|
return (value) => mappers.reduce((acc, current) => current(acc), value);
|
|
6
3
|
}
|
|
7
|
-
|
|
8
|
-
function merge(baseArr, insertArr) {
|
|
4
|
+
export function merge(baseArr, insertArr) {
|
|
9
5
|
if (baseArr.length === 0) {
|
|
10
6
|
return insertArr;
|
|
11
7
|
}
|
|
@@ -18,6 +14,4 @@ function merge(baseArr, insertArr) {
|
|
|
18
14
|
? [i1].concat(merge(restBaseArr, restInsertArr))
|
|
19
15
|
: [b1].concat(merge(restBaseArr, insertArr));
|
|
20
16
|
}
|
|
21
|
-
|
|
22
|
-
const constant = (value) => () => value;
|
|
23
|
-
exports.constant = constant;
|
|
17
|
+
export const constant = (value) => () => value;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-ioc-container",
|
|
3
|
-
"version": "26.4.
|
|
3
|
+
"version": "26.4.4",
|
|
4
4
|
"description": "Typescript IoC container",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -60,5 +60,5 @@
|
|
|
60
60
|
"ts-node": "^10.9.1",
|
|
61
61
|
"typescript": "4.4.3"
|
|
62
62
|
},
|
|
63
|
-
"gitHead": "
|
|
63
|
+
"gitHead": "00c7af79e564dabca893b5bc88c0d46888978202"
|
|
64
64
|
}
|