ts-ioc-container 41.1.2 → 41.2.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/cjm/DepKey.js +1 -5
- package/cjm/container/IContainer.js +1 -5
- package/cjm/hooks/hook.js +1 -1
- package/cjm/index.js +3 -4
- package/cjm/injector/inject.js +3 -4
- package/cjm/registration/IRegistration.js +2 -2
- package/cjm/registration/Registration.js +1 -1
- package/cjm/resolve.js +4 -5
- package/cjm/utils.js +4 -13
- package/esm/DepKey.js +0 -3
- package/esm/container/IContainer.js +2 -5
- package/esm/hooks/hook.js +2 -2
- package/esm/index.js +1 -2
- package/esm/injector/inject.js +4 -5
- package/esm/registration/IRegistration.js +2 -2
- package/esm/registration/Registration.js +2 -2
- package/esm/resolve.js +4 -5
- package/esm/utils.js +3 -10
- package/package.json +1 -1
- package/typings/DepKey.d.ts +0 -1
- package/typings/container/IContainer.d.ts +0 -1
- package/typings/index.d.ts +2 -2
- package/typings/registration/IRegistration.d.ts +1 -1
- package/typings/registration/Registration.d.ts +1 -1
- package/typings/utils.d.ts +2 -8
package/cjm/DepKey.js
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.depKey =
|
|
3
|
+
exports.depKey = void 0;
|
|
4
4
|
const Registration_1 = require("./registration/Registration");
|
|
5
5
|
const Provider_1 = require("./provider/Provider");
|
|
6
|
-
const isDepKey = (key) => {
|
|
7
|
-
return typeof key === 'object' && key !== null && 'key' in key;
|
|
8
|
-
};
|
|
9
|
-
exports.isDepKey = isDepKey;
|
|
10
6
|
const depKey = (key) => {
|
|
11
7
|
const scopePredicates = [];
|
|
12
8
|
const mappers = [];
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DEFAULT_CONTAINER_RESOLVER = void 0;
|
|
4
|
-
exports.isDependencyKey = isDependencyKey;
|
|
5
4
|
const utils_1 = require("../utils");
|
|
6
5
|
const DependencyNotFoundError_1 = require("../errors/DependencyNotFoundError");
|
|
7
|
-
function isDependencyKey(token) {
|
|
8
|
-
return ['string', 'symbol'].includes(typeof token);
|
|
9
|
-
}
|
|
10
6
|
const DEFAULT_CONTAINER_RESOLVER = (scope, keyOrAlias, options) => {
|
|
11
|
-
if (
|
|
7
|
+
if (utils_1.Is.constructor(keyOrAlias)) {
|
|
12
8
|
return scope.resolveClass(keyOrAlias, options);
|
|
13
9
|
}
|
|
14
10
|
try {
|
package/cjm/hooks/hook.js
CHANGED
|
@@ -8,7 +8,7 @@ const utils_1 = require("../utils");
|
|
|
8
8
|
const UnexpectedHookResultError_1 = require("../errors/UnexpectedHookResultError");
|
|
9
9
|
const inject_1 = require("../injector/inject");
|
|
10
10
|
const isHookClassConstructor = (execute) => {
|
|
11
|
-
return
|
|
11
|
+
return utils_1.Is.constructor(execute) && execute.prototype.execute;
|
|
12
12
|
};
|
|
13
13
|
const toHookFn = (execute) => isHookClassConstructor(execute) ? (context) => context.scope.resolveOne(execute).execute(context) : execute;
|
|
14
14
|
exports.toHookFn = toHookFn;
|
package/cjm/index.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.depKey = exports.by = exports.getParameterMetadata = exports.getMethodMetadata = exports.setMethodMetadata = exports.setParameterMetadata = exports.getMetadata = exports.setMetadata = exports.HookContext = exports.runOnDisposeHooks = exports.runOnConstructHooks = exports.onConstruct = exports.onDispose = exports.injectProp = exports.runHooksAsync = exports.runHooks = exports.hasHooks = exports.hook = exports.getHooks = exports.UnexpectedHookResultError = exports.ContainerDisposedError = exports.MethodNotImplementedError = exports.DependencyNotFoundError = exports.Registration = exports.register = exports.scope = exports.asAlias = exports.asKey = exports.decorate = exports.MultiCache = exports.multiCache = exports.SingletonProvider = exports.singleton = exports.Provider = exports.ProviderDecorator = exports.args = exports.argsFn = exports.lazy = exports.scopeAccess = exports.ProxyInjector = exports.SimpleInjector = exports.MetadataInjector = exports.resolveArgs = exports.inject = exports.AutoMockedContainer = exports.EmptyContainer = exports.Container =
|
|
4
|
-
// Containers
|
|
5
|
-
var IContainer_1 = require("./container/IContainer");
|
|
6
|
-
Object.defineProperty(exports, "isDependencyKey", { enumerable: true, get: function () { return IContainer_1.isDependencyKey; } });
|
|
3
|
+
exports.depKey = exports.Is = exports.by = exports.getParameterMetadata = exports.getMethodMetadata = exports.setMethodMetadata = exports.setParameterMetadata = exports.getMetadata = exports.setMetadata = exports.HookContext = exports.runOnDisposeHooks = exports.runOnConstructHooks = exports.onConstruct = exports.onDispose = exports.injectProp = exports.runHooksAsync = exports.runHooks = exports.hasHooks = exports.hook = exports.getHooks = exports.UnexpectedHookResultError = exports.ContainerDisposedError = exports.MethodNotImplementedError = exports.DependencyNotFoundError = exports.Registration = exports.register = exports.scope = exports.asAlias = exports.asKey = exports.decorate = exports.MultiCache = exports.multiCache = exports.SingletonProvider = exports.singleton = exports.Provider = exports.ProviderDecorator = exports.args = exports.argsFn = exports.lazy = exports.scopeAccess = exports.ProxyInjector = exports.SimpleInjector = exports.MetadataInjector = exports.resolveArgs = exports.inject = exports.AutoMockedContainer = exports.EmptyContainer = exports.Container = void 0;
|
|
7
4
|
var Container_1 = require("./container/Container");
|
|
8
5
|
Object.defineProperty(exports, "Container", { enumerable: true, get: function () { return Container_1.Container; } });
|
|
9
6
|
var EmptyContainer_1 = require("./container/EmptyContainer");
|
|
@@ -79,5 +76,7 @@ Object.defineProperty(exports, "getParameterMetadata", { enumerable: true, get:
|
|
|
79
76
|
// Others
|
|
80
77
|
var resolve_1 = require("./resolve");
|
|
81
78
|
Object.defineProperty(exports, "by", { enumerable: true, get: function () { return resolve_1.by; } });
|
|
79
|
+
var utils_1 = require("./utils");
|
|
80
|
+
Object.defineProperty(exports, "Is", { enumerable: true, get: function () { return utils_1.Is; } });
|
|
82
81
|
var DepKey_1 = require("./DepKey");
|
|
83
82
|
Object.defineProperty(exports, "depKey", { enumerable: true, get: function () { return DepKey_1.depKey; } });
|
package/cjm/injector/inject.js
CHANGED
|
@@ -4,10 +4,9 @@ exports.resolveArgs = exports.toInjectFn = exports.inject = void 0;
|
|
|
4
4
|
exports.isInjectBuilder = isInjectBuilder;
|
|
5
5
|
const metadata_1 = require("../metadata");
|
|
6
6
|
const utils_1 = require("../utils");
|
|
7
|
-
const IContainer_1 = require("../container/IContainer");
|
|
8
7
|
const HookContext_1 = require("../hooks/HookContext");
|
|
9
8
|
const inject = (fn) => (target, propertyKey, parameterIndex) => {
|
|
10
|
-
(0, metadata_1.setParameterMetadata)((0, HookContext_1.hookMetaKey)(propertyKey), (0, exports.toInjectFn)(fn))(
|
|
9
|
+
(0, metadata_1.setParameterMetadata)((0, HookContext_1.hookMetaKey)(propertyKey), (0, exports.toInjectFn)(fn))(utils_1.Is.instance(target) ? target.constructor : target, propertyKey, parameterIndex);
|
|
11
10
|
};
|
|
12
11
|
exports.inject = inject;
|
|
13
12
|
function isInjectBuilder(fn) {
|
|
@@ -17,10 +16,10 @@ const toInjectFn = (target) => {
|
|
|
17
16
|
if (typeof target === 'object' && isInjectBuilder(target)) {
|
|
18
17
|
return (s) => target.resolve(s);
|
|
19
18
|
}
|
|
20
|
-
if (
|
|
19
|
+
if (utils_1.Is.constructor(target)) {
|
|
21
20
|
return (scope) => scope.resolveClass(target);
|
|
22
21
|
}
|
|
23
|
-
if (
|
|
22
|
+
if (utils_1.Is.dependencyKey(target)) {
|
|
24
23
|
return (scope) => scope.resolveOne(target);
|
|
25
24
|
}
|
|
26
25
|
return target;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.asKey = exports.asAlias = exports.register = exports.getTransformers = exports.scope = void 0;
|
|
4
|
-
const
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
5
|
const metadata_1 = require("../metadata");
|
|
6
6
|
const ProviderPipe_1 = require("../provider/ProviderPipe");
|
|
7
7
|
const scope = (...predicates) => (r) => r.when(...predicates);
|
|
@@ -11,7 +11,7 @@ const getTransformers = (Target) => (0, metadata_1.getMetadata)(Target, METADATA
|
|
|
11
11
|
exports.getTransformers = getTransformers;
|
|
12
12
|
const register = (...mappers) => (0, metadata_1.setMetadata)(METADATA_KEY, mappers.map((m) => ((0, ProviderPipe_1.isProviderPipe)(m) ? (r) => m.mapRegistration(r) : m)));
|
|
13
13
|
exports.register = register;
|
|
14
|
-
const asAlias = (target) => (r) => r.bindToAlias(
|
|
14
|
+
const asAlias = (target) => (r) => r.bindToAlias(utils_1.Is.dependencyKey(target) ? target : target.key);
|
|
15
15
|
exports.asAlias = asAlias;
|
|
16
16
|
const asKey = (key) => (r) => r.bindToKey(key);
|
|
17
17
|
exports.asKey = asKey;
|
|
@@ -15,7 +15,7 @@ class Registration {
|
|
|
15
15
|
return transform(new Registration(() => Provider_1.Provider.fromClass(Target), Target.name));
|
|
16
16
|
}
|
|
17
17
|
static fromValue(value) {
|
|
18
|
-
if (
|
|
18
|
+
if (utils_1.Is.constructor(value)) {
|
|
19
19
|
const transform = (0, utils_1.pipe)(...(0, IRegistration_1.getTransformers)(value));
|
|
20
20
|
return transform(new Registration(() => Provider_1.Provider.fromValue(value), value.name));
|
|
21
21
|
}
|
package/cjm/resolve.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.by = exports.InstancesResolver = exports.InjectionResolver = void 0;
|
|
4
|
-
const
|
|
5
|
-
const DepKey_1 = require("./DepKey");
|
|
4
|
+
const utils_1 = require("./utils");
|
|
6
5
|
class InjectionResolver {
|
|
7
6
|
resolveByOptions;
|
|
8
7
|
isLazy = false;
|
|
@@ -55,18 +54,18 @@ class InstancesResolver {
|
|
|
55
54
|
exports.InstancesResolver = InstancesResolver;
|
|
56
55
|
exports.by = {
|
|
57
56
|
many: (target) => {
|
|
58
|
-
const alias =
|
|
57
|
+
const alias = utils_1.Is.dependencyKey(target) ? target : target.key;
|
|
59
58
|
return new InjectionResolver((s, options) => s.resolveMany(alias, options));
|
|
60
59
|
},
|
|
61
60
|
one: (target) => {
|
|
62
|
-
const key =
|
|
61
|
+
const key = utils_1.Is.DepKey(target) ? target.key : target;
|
|
63
62
|
return new InjectionResolver((s, options) => s.resolveOne(key, options));
|
|
64
63
|
},
|
|
65
64
|
/**
|
|
66
65
|
* Use it only for optimization. Otherwise, recommended to use `by.one`
|
|
67
66
|
*/
|
|
68
67
|
aliasOne: (target) => {
|
|
69
|
-
const alias =
|
|
68
|
+
const alias = utils_1.Is.DepKey(target) ? target.key : target;
|
|
70
69
|
return new InjectionResolver((s, options) => s.resolveOneByAlias(alias, options));
|
|
71
70
|
},
|
|
72
71
|
instances: (predicate = () => true) => new InstancesResolver(predicate),
|
package/cjm/utils.js
CHANGED
|
@@ -1,20 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Is = exports.Filter = exports.List = exports.promisify = exports.constant = exports.pipe =
|
|
4
|
-
exports.isInstance = isInstance;
|
|
3
|
+
exports.Is = exports.Filter = exports.List = exports.promisify = exports.constant = exports.pipe = void 0;
|
|
5
4
|
exports.fillEmptyIndexes = fillEmptyIndexes;
|
|
6
5
|
exports.lazyProxy = lazyProxy;
|
|
7
|
-
/**
|
|
8
|
-
* @deprecated Use Is.constructor instead
|
|
9
|
-
*/
|
|
10
|
-
const isConstructor = (T) => typeof T === 'function' && !!T.prototype;
|
|
11
|
-
exports.isConstructor = isConstructor;
|
|
12
|
-
/**
|
|
13
|
-
* @deprecated Use Is.instance instead
|
|
14
|
-
*/
|
|
15
|
-
function isInstance(target) {
|
|
16
|
-
return Object.prototype.hasOwnProperty.call(target, 'constructor');
|
|
17
|
-
}
|
|
18
6
|
const pipe = (...mappers) => (value) => mappers.reduce((acc, current) => current(acc), value);
|
|
19
7
|
exports.pipe = pipe;
|
|
20
8
|
function fillEmptyIndexes(baseArr, insertArr) {
|
|
@@ -56,4 +44,7 @@ exports.Is = {
|
|
|
56
44
|
constructor: (target) => typeof target === 'function' && !!target.prototype,
|
|
57
45
|
dependencyKey: (target) => ['string', 'symbol'].includes(typeof target),
|
|
58
46
|
injectBuilder: (target) => exports.Is.object(target) && 'resolve' in target && typeof target['resolve'] === 'function',
|
|
47
|
+
DepKey: (key) => {
|
|
48
|
+
return typeof key === 'object' && key !== null && 'key' in key;
|
|
49
|
+
},
|
|
59
50
|
};
|
package/esm/DepKey.js
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import { Registration } from './registration/Registration';
|
|
2
2
|
import { Provider } from './provider/Provider';
|
|
3
|
-
export const isDepKey = (key) => {
|
|
4
|
-
return typeof key === 'object' && key !== null && 'key' in key;
|
|
5
|
-
};
|
|
6
3
|
export const depKey = (key) => {
|
|
7
4
|
const scopePredicates = [];
|
|
8
5
|
const mappers = [];
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Is } from '../utils';
|
|
2
2
|
import { DependencyNotFoundError } from '../errors/DependencyNotFoundError';
|
|
3
|
-
export function isDependencyKey(token) {
|
|
4
|
-
return ['string', 'symbol'].includes(typeof token);
|
|
5
|
-
}
|
|
6
3
|
export const DEFAULT_CONTAINER_RESOLVER = (scope, keyOrAlias, options) => {
|
|
7
|
-
if (
|
|
4
|
+
if (Is.constructor(keyOrAlias)) {
|
|
8
5
|
return scope.resolveClass(keyOrAlias, options);
|
|
9
6
|
}
|
|
10
7
|
try {
|
package/esm/hooks/hook.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createHookContext } from './HookContext';
|
|
2
|
-
import {
|
|
2
|
+
import { Is, promisify } from '../utils';
|
|
3
3
|
import { UnexpectedHookResultError } from '../errors/UnexpectedHookResultError';
|
|
4
4
|
import { toInjectFn } from '../injector/inject';
|
|
5
5
|
const isHookClassConstructor = (execute) => {
|
|
6
|
-
return
|
|
6
|
+
return Is.constructor(execute) && execute.prototype.execute;
|
|
7
7
|
};
|
|
8
8
|
export const toHookFn = (execute) => isHookClassConstructor(execute) ? (context) => context.scope.resolveOne(execute).execute(context) : execute;
|
|
9
9
|
export const hook = (key, ...fns) => (target, propertyKey) => {
|
package/esm/index.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// Containers
|
|
2
|
-
export { isDependencyKey, } from './container/IContainer';
|
|
3
1
|
export { Container } from './container/Container';
|
|
4
2
|
export { EmptyContainer } from './container/EmptyContainer';
|
|
5
3
|
export { AutoMockedContainer } from './container/AutoMockedContainer';
|
|
@@ -29,4 +27,5 @@ export { HookContext } from './hooks/HookContext';
|
|
|
29
27
|
export { setMetadata, getMetadata, setParameterMetadata, setMethodMetadata, getMethodMetadata, getParameterMetadata, } from './metadata';
|
|
30
28
|
// Others
|
|
31
29
|
export { by } from './resolve';
|
|
30
|
+
export { Is } from './utils';
|
|
32
31
|
export { depKey } from './DepKey';
|
package/esm/injector/inject.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { getParameterMetadata, setParameterMetadata } from '../metadata';
|
|
2
|
-
import { constant, fillEmptyIndexes,
|
|
3
|
-
import { isDependencyKey } from '../container/IContainer';
|
|
2
|
+
import { constant, fillEmptyIndexes, Is } from '../utils';
|
|
4
3
|
import { hookMetaKey } from '../hooks/HookContext';
|
|
5
4
|
export const inject = (fn) => (target, propertyKey, parameterIndex) => {
|
|
6
|
-
setParameterMetadata(hookMetaKey(propertyKey), toInjectFn(fn))(
|
|
5
|
+
setParameterMetadata(hookMetaKey(propertyKey), toInjectFn(fn))(Is.instance(target) ? target.constructor : target, propertyKey, parameterIndex);
|
|
7
6
|
};
|
|
8
7
|
export function isInjectBuilder(fn) {
|
|
9
8
|
return 'resolve' in fn && typeof fn['resolve'] === 'function';
|
|
@@ -12,10 +11,10 @@ export const toInjectFn = (target) => {
|
|
|
12
11
|
if (typeof target === 'object' && isInjectBuilder(target)) {
|
|
13
12
|
return (s) => target.resolve(s);
|
|
14
13
|
}
|
|
15
|
-
if (
|
|
14
|
+
if (Is.constructor(target)) {
|
|
16
15
|
return (scope) => scope.resolveClass(target);
|
|
17
16
|
}
|
|
18
|
-
if (
|
|
17
|
+
if (Is.dependencyKey(target)) {
|
|
19
18
|
return (scope) => scope.resolveOne(target);
|
|
20
19
|
}
|
|
21
20
|
return target;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Is } from '../utils';
|
|
2
2
|
import { getMetadata, setMetadata } from '../metadata';
|
|
3
3
|
import { isProviderPipe } from '../provider/ProviderPipe';
|
|
4
4
|
export const scope = (...predicates) => (r) => r.when(...predicates);
|
|
5
5
|
const METADATA_KEY = 'registration';
|
|
6
6
|
export const getTransformers = (Target) => getMetadata(Target, METADATA_KEY) ?? [];
|
|
7
7
|
export const register = (...mappers) => setMetadata(METADATA_KEY, mappers.map((m) => (isProviderPipe(m) ? (r) => m.mapRegistration(r) : m)));
|
|
8
|
-
export const asAlias = (target) => (r) => r.bindToAlias(
|
|
8
|
+
export const asAlias = (target) => (r) => r.bindToAlias(Is.dependencyKey(target) ? target : target.key);
|
|
9
9
|
export const asKey = (key) => (r) => r.bindToKey(key);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Is, pipe } from '../utils';
|
|
2
2
|
import { Provider } from '../provider/Provider';
|
|
3
3
|
import { DependencyMissingKeyError } from '../errors/DependencyMissingKeyError';
|
|
4
4
|
import { getTransformers } from './IRegistration';
|
|
@@ -12,7 +12,7 @@ export class Registration {
|
|
|
12
12
|
return transform(new Registration(() => Provider.fromClass(Target), Target.name));
|
|
13
13
|
}
|
|
14
14
|
static fromValue(value) {
|
|
15
|
-
if (
|
|
15
|
+
if (Is.constructor(value)) {
|
|
16
16
|
const transform = pipe(...getTransformers(value));
|
|
17
17
|
return transform(new Registration(() => Provider.fromValue(value), value.name));
|
|
18
18
|
}
|
package/esm/resolve.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { isDepKey } from './DepKey';
|
|
1
|
+
import { Is } from './utils';
|
|
3
2
|
export class InjectionResolver {
|
|
4
3
|
resolveByOptions;
|
|
5
4
|
isLazy = false;
|
|
@@ -50,18 +49,18 @@ export class InstancesResolver {
|
|
|
50
49
|
}
|
|
51
50
|
export const by = {
|
|
52
51
|
many: (target) => {
|
|
53
|
-
const alias =
|
|
52
|
+
const alias = Is.dependencyKey(target) ? target : target.key;
|
|
54
53
|
return new InjectionResolver((s, options) => s.resolveMany(alias, options));
|
|
55
54
|
},
|
|
56
55
|
one: (target) => {
|
|
57
|
-
const key =
|
|
56
|
+
const key = Is.DepKey(target) ? target.key : target;
|
|
58
57
|
return new InjectionResolver((s, options) => s.resolveOne(key, options));
|
|
59
58
|
},
|
|
60
59
|
/**
|
|
61
60
|
* Use it only for optimization. Otherwise, recommended to use `by.one`
|
|
62
61
|
*/
|
|
63
62
|
aliasOne: (target) => {
|
|
64
|
-
const alias =
|
|
63
|
+
const alias = Is.DepKey(target) ? target.key : target;
|
|
65
64
|
return new InjectionResolver((s, options) => s.resolveOneByAlias(alias, options));
|
|
66
65
|
},
|
|
67
66
|
instances: (predicate = () => true) => new InstancesResolver(predicate),
|
package/esm/utils.js
CHANGED
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @deprecated Use Is.constructor instead
|
|
3
|
-
*/
|
|
4
|
-
export const isConstructor = (T) => typeof T === 'function' && !!T.prototype;
|
|
5
|
-
/**
|
|
6
|
-
* @deprecated Use Is.instance instead
|
|
7
|
-
*/
|
|
8
|
-
export function isInstance(target) {
|
|
9
|
-
return Object.prototype.hasOwnProperty.call(target, 'constructor');
|
|
10
|
-
}
|
|
11
1
|
export const pipe = (...mappers) => (value) => mappers.reduce((acc, current) => current(acc), value);
|
|
12
2
|
export function fillEmptyIndexes(baseArr, insertArr) {
|
|
13
3
|
const a = [...baseArr];
|
|
@@ -46,4 +36,7 @@ export const Is = {
|
|
|
46
36
|
constructor: (target) => typeof target === 'function' && !!target.prototype,
|
|
47
37
|
dependencyKey: (target) => ['string', 'symbol'].includes(typeof target),
|
|
48
38
|
injectBuilder: (target) => Is.object(target) && 'resolve' in target && typeof target['resolve'] === 'function',
|
|
39
|
+
DepKey: (key) => {
|
|
40
|
+
return typeof key === 'object' && key !== null && 'key' in key;
|
|
41
|
+
},
|
|
49
42
|
};
|
package/package.json
CHANGED
package/typings/DepKey.d.ts
CHANGED
|
@@ -12,5 +12,4 @@ export type DepKey<T> = IInjectFnResolver<T> & {
|
|
|
12
12
|
when(value: ScopePredicate): DepKey<T>;
|
|
13
13
|
asAlias: (registration: IRegistration<T>) => IRegistration<T>;
|
|
14
14
|
};
|
|
15
|
-
export declare const isDepKey: <T>(key: unknown) => key is DepKey<T>;
|
|
16
15
|
export declare const depKey: <T>(key: DependencyKey) => DepKey<T>;
|
|
@@ -3,7 +3,6 @@ import { type constructor } from '../utils';
|
|
|
3
3
|
import { type IRegistration } from '../registration/IRegistration';
|
|
4
4
|
export type Tag = string;
|
|
5
5
|
export type DependencyKey = string | symbol;
|
|
6
|
-
export declare function isDependencyKey(token: unknown): token is DependencyKey;
|
|
7
6
|
export type InjectionToken<T = unknown> = constructor<T> | DependencyKey;
|
|
8
7
|
export type ResolveOneOptions = {
|
|
9
8
|
args?: unknown[];
|
package/typings/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { type IContainer, type Resolvable, type IContainerModule,
|
|
1
|
+
export { type IContainer, type Resolvable, type IContainerModule, type DependencyKey, type InjectionToken, type Tag, type Tagged, type Instance, } from './container/IContainer';
|
|
2
2
|
export { Container } from './container/Container';
|
|
3
3
|
export { EmptyContainer } from './container/EmptyContainer';
|
|
4
4
|
export { AutoMockedContainer } from './container/AutoMockedContainer';
|
|
@@ -23,6 +23,6 @@ export { getHooks, hook, hasHooks, type HookFn, type HookClass, runHooks, runHoo
|
|
|
23
23
|
export { HookContext, type InjectFn, type IHookContext } from './hooks/HookContext';
|
|
24
24
|
export { setMetadata, getMetadata, setParameterMetadata, setMethodMetadata, getMethodMetadata, getParameterMetadata, } from './metadata';
|
|
25
25
|
export { by } from './resolve';
|
|
26
|
-
export { type constructor } from './utils';
|
|
26
|
+
export { type constructor, Is } from './utils';
|
|
27
27
|
export { depKey, type DepKey } from './DepKey';
|
|
28
28
|
export { type InstancePredicate } from './resolve';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DependencyKey, IContainer, IContainerModule } from '../container/IContainer';
|
|
2
|
-
import
|
|
2
|
+
import { constructor, MapFn } from '../utils';
|
|
3
3
|
import type { IProvider } from '../provider/IProvider';
|
|
4
4
|
import type { DepKey } from '../DepKey';
|
|
5
5
|
import { ProviderPipe } from '../provider/ProviderPipe';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DependencyKey, IContainer } from '../container/IContainer';
|
|
2
|
-
import
|
|
2
|
+
import { constructor, MapFn } from '../utils';
|
|
3
3
|
import type { IProvider, ResolveDependency } from '../provider/IProvider';
|
|
4
4
|
import type { IRegistration, ScopePredicate } from './IRegistration';
|
|
5
5
|
import type { ProviderPipe } from '../provider/ProviderPipe';
|
package/typings/utils.d.ts
CHANGED
|
@@ -1,17 +1,10 @@
|
|
|
1
1
|
import { DependencyKey } from './container/IContainer';
|
|
2
2
|
import { IInjectFnResolver } from './injector/IInjector';
|
|
3
|
+
import { DepKey } from './DepKey';
|
|
3
4
|
export type constructor<T> = new (...args: any[]) => T;
|
|
4
|
-
/**
|
|
5
|
-
* @deprecated Use Is.constructor instead
|
|
6
|
-
*/
|
|
7
|
-
export declare const isConstructor: (T: unknown) => T is constructor<unknown>;
|
|
8
5
|
export interface InstanceOfClass<T = unknown> {
|
|
9
6
|
new (...args: unknown[]): T;
|
|
10
7
|
}
|
|
11
|
-
/**
|
|
12
|
-
* @deprecated Use Is.instance instead
|
|
13
|
-
*/
|
|
14
|
-
export declare function isInstance(target: object): target is InstanceOfClass;
|
|
15
8
|
export type MapFn<T> = (value: T) => T;
|
|
16
9
|
export declare const pipe: <T>(...mappers: MapFn<T>[]) => MapFn<T>;
|
|
17
10
|
export declare function fillEmptyIndexes<T>(baseArr: (T | undefined)[], insertArr: T[]): T[];
|
|
@@ -30,4 +23,5 @@ export declare const Is: {
|
|
|
30
23
|
constructor: (target: unknown) => target is constructor<unknown>;
|
|
31
24
|
dependencyKey: (target: unknown) => target is DependencyKey;
|
|
32
25
|
injectBuilder: (target: unknown) => target is IInjectFnResolver<unknown>;
|
|
26
|
+
DepKey: <T>(key: unknown) => key is DepKey<T>;
|
|
33
27
|
};
|