ts-ioc-container 30.6.0 → 30.8.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/hook.js +1 -1
- package/cjm/index.js +3 -1
- package/cjm/provider/Registration.js +7 -6
- package/cjm/utils.js +1 -3
- package/esm/hook.js +1 -1
- package/esm/index.js +1 -0
- package/esm/provider/Registration.js +8 -7
- package/esm/utils.js +0 -1
- package/package.json +2 -2
- package/typings/index.d.ts +1 -0
- package/typings/provider/ProviderDecorator.d.ts +1 -1
- package/typings/provider/Registration.d.ts +2 -2
- package/typings/utils.d.ts +0 -1
package/cjm/hook.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getHooks = exports.hook = void 0;
|
|
4
4
|
const hook = (key) => (target, propertyKey) => {
|
|
5
|
-
const hooks = Reflect.hasMetadata(key, target.constructor) ? Reflect.getMetadata(key, target) : [];
|
|
5
|
+
const hooks = Reflect.hasMetadata(key, target.constructor) ? Reflect.getMetadata(key, target.constructor) : [];
|
|
6
6
|
Reflect.defineMetadata(key, [...hooks, propertyKey], target.constructor); // eslint-disable-line @typescript-eslint/ban-types
|
|
7
7
|
};
|
|
8
8
|
exports.hook = hook;
|
package/cjm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setParameterMetadata = exports.getMetadata = exports.setMetadata = exports.by = exports.hook = exports.getHooks = exports.ProxyInjector = exports.SimpleInjector = exports.inject = exports.MetadataInjector = exports.alias = exports.register = exports.Registration = exports.key = exports.AutoMockedContainer = exports.SingletonProvider = exports.singleton = exports.ArgsProvider = exports.args = exports.argsFn = exports.Provider = exports.ContainerDisposedError = exports.MethodNotImplementedError = exports.DependencyNotFoundError = exports.visible = exports.scope = exports.provider = exports.EmptyContainer = exports.Container = exports.isDependencyKey = void 0;
|
|
3
|
+
exports.setParameterMetadata = exports.getMetadata = exports.setMetadata = exports.by = exports.hook = exports.getHooks = exports.ProxyInjector = exports.SimpleInjector = exports.inject = exports.MetadataInjector = exports.alias = exports.register = exports.Registration = exports.key = exports.AutoMockedContainer = exports.SingletonProvider = exports.singleton = exports.ArgsProvider = exports.args = exports.argsFn = exports.ProviderDecorator = exports.Provider = exports.ContainerDisposedError = exports.MethodNotImplementedError = exports.DependencyNotFoundError = exports.visible = exports.scope = exports.provider = exports.EmptyContainer = exports.Container = exports.isDependencyKey = void 0;
|
|
4
4
|
var IContainer_1 = require("./container/IContainer");
|
|
5
5
|
Object.defineProperty(exports, "isDependencyKey", { enumerable: true, get: function () { return IContainer_1.isDependencyKey; } });
|
|
6
6
|
var Container_1 = require("./container/Container");
|
|
@@ -19,6 +19,8 @@ var ContainerDisposedError_1 = require("./errors/ContainerDisposedError");
|
|
|
19
19
|
Object.defineProperty(exports, "ContainerDisposedError", { enumerable: true, get: function () { return ContainerDisposedError_1.ContainerDisposedError; } });
|
|
20
20
|
var Provider_1 = require("./provider/Provider");
|
|
21
21
|
Object.defineProperty(exports, "Provider", { enumerable: true, get: function () { return Provider_1.Provider; } });
|
|
22
|
+
var ProviderDecorator_1 = require("./provider/ProviderDecorator");
|
|
23
|
+
Object.defineProperty(exports, "ProviderDecorator", { enumerable: true, get: function () { return ProviderDecorator_1.ProviderDecorator; } });
|
|
22
24
|
var ArgsProvider_1 = require("./provider/ArgsProvider");
|
|
23
25
|
Object.defineProperty(exports, "argsFn", { enumerable: true, get: function () { return ArgsProvider_1.argsFn; } });
|
|
24
26
|
Object.defineProperty(exports, "args", { enumerable: true, get: function () { return ArgsProvider_1.args; } });
|
|
@@ -12,18 +12,19 @@ class Registration {
|
|
|
12
12
|
return transform(new Registration(Provider_1.Provider.fromClass(Target), Target.name));
|
|
13
13
|
}
|
|
14
14
|
static fromValue(value) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
if ((0, utils_1.isConstructor)(value)) {
|
|
16
|
+
const transform = (0, utils_1.pipe)(...((0, metadata_1.getMetadata)(value, DEPENDENCY_KEY) ?? []));
|
|
17
|
+
return transform(new Registration(Provider_1.Provider.fromValue(value), value.name));
|
|
18
|
+
}
|
|
19
|
+
return new Registration(Provider_1.Provider.fromValue(value));
|
|
19
20
|
}
|
|
20
21
|
static fromFn(fn) {
|
|
21
22
|
return new Registration(new Provider_1.Provider(fn));
|
|
22
23
|
}
|
|
23
|
-
constructor(provider, key
|
|
24
|
+
constructor(provider, key) {
|
|
24
25
|
this.provider = provider;
|
|
25
26
|
this.key = key;
|
|
26
|
-
this.aliases =
|
|
27
|
+
this.aliases = [];
|
|
27
28
|
}
|
|
28
29
|
to(key) {
|
|
29
30
|
this.key = key;
|
package/cjm/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isConstructor = exports.
|
|
3
|
+
exports.isConstructor = exports.constant = exports.fillEmptyIndexes = exports.pipe = void 0;
|
|
4
4
|
const pipe = (...mappers) => (value) => mappers.reduce((acc, current) => current(acc), value);
|
|
5
5
|
exports.pipe = pipe;
|
|
6
6
|
function fillEmptyIndexes(baseArr, insertArr) {
|
|
@@ -16,7 +16,5 @@ function fillEmptyIndexes(baseArr, insertArr) {
|
|
|
16
16
|
exports.fillEmptyIndexes = fillEmptyIndexes;
|
|
17
17
|
const constant = (value) => () => value;
|
|
18
18
|
exports.constant = constant;
|
|
19
|
-
const identity = (value) => value;
|
|
20
|
-
exports.identity = identity;
|
|
21
19
|
const isConstructor = (T) => typeof T === 'function' && !!T.prototype;
|
|
22
20
|
exports.isConstructor = isConstructor;
|
package/esm/hook.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export const hook = (key) => (target, propertyKey) => {
|
|
2
|
-
const hooks = Reflect.hasMetadata(key, target.constructor) ? Reflect.getMetadata(key, target) : [];
|
|
2
|
+
const hooks = Reflect.hasMetadata(key, target.constructor) ? Reflect.getMetadata(key, target.constructor) : [];
|
|
3
3
|
Reflect.defineMetadata(key, [...hooks, propertyKey], target.constructor); // eslint-disable-line @typescript-eslint/ban-types
|
|
4
4
|
};
|
|
5
5
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
package/esm/index.js
CHANGED
|
@@ -6,6 +6,7 @@ export { DependencyNotFoundError } from './errors/DependencyNotFoundError';
|
|
|
6
6
|
export { MethodNotImplementedError } from './errors/MethodNotImplementedError';
|
|
7
7
|
export { ContainerDisposedError } from './errors/ContainerDisposedError';
|
|
8
8
|
export { Provider } from './provider/Provider';
|
|
9
|
+
export { ProviderDecorator } from './provider/ProviderDecorator';
|
|
9
10
|
export { argsFn, args, ArgsProvider } from './provider/ArgsProvider';
|
|
10
11
|
export { singleton, SingletonProvider } from './provider/SingletonProvider';
|
|
11
12
|
export { AutoMockedContainer } from './container/AutoMockedContainer';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isConstructor, pipe } from '../utils';
|
|
2
2
|
import { getMetadata, setMetadata } from '../metadata';
|
|
3
3
|
import { Provider } from './Provider';
|
|
4
4
|
import { DependencyMissingKeyError } from '../errors/DependencyMissingKeyError';
|
|
@@ -9,18 +9,19 @@ export class Registration {
|
|
|
9
9
|
return transform(new Registration(Provider.fromClass(Target), Target.name));
|
|
10
10
|
}
|
|
11
11
|
static fromValue(value) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
if (isConstructor(value)) {
|
|
13
|
+
const transform = pipe(...(getMetadata(value, DEPENDENCY_KEY) ?? []));
|
|
14
|
+
return transform(new Registration(Provider.fromValue(value), value.name));
|
|
15
|
+
}
|
|
16
|
+
return new Registration(Provider.fromValue(value));
|
|
16
17
|
}
|
|
17
18
|
static fromFn(fn) {
|
|
18
19
|
return new Registration(new Provider(fn));
|
|
19
20
|
}
|
|
20
|
-
constructor(provider, key
|
|
21
|
+
constructor(provider, key) {
|
|
21
22
|
this.provider = provider;
|
|
22
23
|
this.key = key;
|
|
23
|
-
this.aliases =
|
|
24
|
+
this.aliases = [];
|
|
24
25
|
}
|
|
25
26
|
to(key) {
|
|
26
27
|
this.key = key;
|
package/esm/utils.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-ioc-container",
|
|
3
|
-
"version": "30.
|
|
3
|
+
"version": "30.8.0",
|
|
4
4
|
"description": "Typescript IoC container",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"ts-node": "^10.9.1",
|
|
60
60
|
"typescript": "5.4.3"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "41dae022665a5a6378e1ff282f88aa48e4f848d9"
|
|
63
63
|
}
|
package/typings/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export { DependencyNotFoundError } from './errors/DependencyNotFoundError';
|
|
|
8
8
|
export { MethodNotImplementedError } from './errors/MethodNotImplementedError';
|
|
9
9
|
export { ContainerDisposedError } from './errors/ContainerDisposedError';
|
|
10
10
|
export { Provider } from './provider/Provider';
|
|
11
|
+
export { ProviderDecorator } from './provider/ProviderDecorator';
|
|
11
12
|
export { ArgsFn, argsFn, args, ArgsProvider } from './provider/ArgsProvider';
|
|
12
13
|
export { singleton, SingletonProvider } from './provider/SingletonProvider';
|
|
13
14
|
export { AutoMockedContainer } from './container/AutoMockedContainer';
|
|
@@ -9,6 +9,6 @@ export declare abstract class ProviderDecorator<T> implements IProvider<T> {
|
|
|
9
9
|
abstract clone(): IProvider<T>;
|
|
10
10
|
isValidToClone(container: Tagged): boolean;
|
|
11
11
|
isVisible(parent: IContainer, child: Tagged): boolean;
|
|
12
|
-
resolve(container: IContainer, ...args:
|
|
12
|
+
resolve(container: IContainer, ...args: unknown[]): T;
|
|
13
13
|
pipe(...mappers: MapFn<IProvider<T>>[]): IProvider<T>;
|
|
14
14
|
}
|
|
@@ -4,11 +4,11 @@ import { IProvider, ResolveDependency } from './IProvider';
|
|
|
4
4
|
export declare class Registration<T = unknown> implements IContainerModule {
|
|
5
5
|
private provider;
|
|
6
6
|
private key?;
|
|
7
|
-
private aliases;
|
|
8
7
|
static fromClass<T>(Target: constructor<T>): Registration<T>;
|
|
9
8
|
static fromValue<T>(value: T): Registration<T>;
|
|
10
9
|
static fromFn<T>(fn: ResolveDependency<T>): Registration<T>;
|
|
11
|
-
|
|
10
|
+
private aliases;
|
|
11
|
+
constructor(provider: IProvider<T>, key?: DependencyKey | undefined);
|
|
12
12
|
to(key: DependencyKey): this;
|
|
13
13
|
addAliases(...aliases: Alias[]): this;
|
|
14
14
|
pipe(...mappers: MapFn<IProvider<T>>[]): this;
|
package/typings/utils.d.ts
CHANGED
|
@@ -3,5 +3,4 @@ export type MapFn<T> = (value: T) => T;
|
|
|
3
3
|
export declare const pipe: <T>(...mappers: MapFn<T>[]) => MapFn<T>;
|
|
4
4
|
export declare function fillEmptyIndexes<T>(baseArr: (T | undefined)[], insertArr: T[]): T[];
|
|
5
5
|
export declare const constant: <T>(value: T) => () => T;
|
|
6
|
-
export declare const identity: <T>(value: T) => T;
|
|
7
6
|
export declare const isConstructor: (T: unknown) => T is constructor<unknown>;
|