ts-ioc-container 27.4.2 → 27.4.5
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 +1 -1
- package/cjm/injector/ReflectionInjector.js +3 -4
- package/cjm/metadata.js +6 -1
- package/cjm/provider/Registration.js +1 -1
- package/cjm/utils.js +1 -3
- package/esm/injector/ReflectionInjector.js +4 -5
- package/esm/metadata.js +4 -0
- package/esm/provider/Registration.js +1 -1
- package/esm/utils.js +1 -3
- package/package.json +2 -2
- package/typings/container/IContainer.d.ts +0 -3
- package/typings/injector/ReflectionInjector.d.ts +1 -1
- package/typings/metadata.d.ts +3 -1
- package/typings/provider/Registration.d.ts +2 -2
- package/typings/utils.d.ts +1 -1
package/README.md
CHANGED
|
@@ -3,13 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ReflectionInjector = exports.inject = void 0;
|
|
4
4
|
const utils_1 = require("../utils");
|
|
5
5
|
const metadata_1 = require("../metadata");
|
|
6
|
-
const
|
|
7
|
-
const inject = (
|
|
6
|
+
const INJECT_FN_LIST_KEY = 'INJECT_FN_LIST';
|
|
7
|
+
const inject = (fn) => (0, metadata_1.setParameterMetadata)(INJECT_FN_LIST_KEY, fn);
|
|
8
8
|
exports.inject = inject;
|
|
9
9
|
class ReflectionInjector {
|
|
10
10
|
resolve(container, Target, ...deps) {
|
|
11
|
-
|
|
12
|
-
const injectionFns = (_a = Reflect.getOwnMetadata(INJECT_KEY, Target)) !== null && _a !== void 0 ? _a : [];
|
|
11
|
+
const injectionFns = (0, metadata_1.getParameterMetadata)(INJECT_FN_LIST_KEY, Target);
|
|
13
12
|
const args = (0, utils_1.fillEmptyIndexes)(injectionFns, deps.map(utils_1.constant)).map((fn) => fn(container));
|
|
14
13
|
return new Target(...args);
|
|
15
14
|
}
|
package/cjm/metadata.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 = void 0;
|
|
3
|
+
exports.getParameterMetadata = exports.setParameterMetadata = exports.getMetadata = exports.setMetadata = void 0;
|
|
4
4
|
const setMetadata = (key, value) => (target) => {
|
|
5
5
|
Reflect.defineMetadata(key, value, target);
|
|
6
6
|
};
|
|
@@ -17,3 +17,8 @@ const setParameterMetadata = (key, value) => (target, propertyKey, parameterInde
|
|
|
17
17
|
Reflect.defineMetadata(key, metadata, target);
|
|
18
18
|
};
|
|
19
19
|
exports.setParameterMetadata = setParameterMetadata;
|
|
20
|
+
const getParameterMetadata = (key, target) => {
|
|
21
|
+
var _a;
|
|
22
|
+
return (_a = Reflect.getOwnMetadata(key, target)) !== null && _a !== void 0 ? _a : [];
|
|
23
|
+
};
|
|
24
|
+
exports.getParameterMetadata = getParameterMetadata;
|
|
@@ -4,7 +4,7 @@ exports.Registration = exports.key = void 0;
|
|
|
4
4
|
const metadata_1 = require("../metadata");
|
|
5
5
|
const Provider_1 = require("./Provider");
|
|
6
6
|
const DependencyMissingKeyError_1 = require("../errors/DependencyMissingKeyError");
|
|
7
|
-
const DEPENDENCY_KEY = '
|
|
7
|
+
const DEPENDENCY_KEY = 'DEPENDENCY_KEY';
|
|
8
8
|
const key = (value) => (0, metadata_1.setMetadata)(DEPENDENCY_KEY, value);
|
|
9
9
|
exports.key = key;
|
|
10
10
|
class Registration {
|
package/cjm/utils.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.constant = exports.fillEmptyIndexes = exports.pipe = void 0;
|
|
4
|
-
|
|
5
|
-
return (value) => mappers.reduce((acc, current) => current(acc), value);
|
|
6
|
-
}
|
|
4
|
+
const pipe = (...mappers) => (value) => mappers.reduce((acc, current) => current(acc), value);
|
|
7
5
|
exports.pipe = pipe;
|
|
8
6
|
function fillEmptyIndexes(baseArr, insertArr) {
|
|
9
7
|
const a = [...baseArr];
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { constant, fillEmptyIndexes } from '../utils';
|
|
2
|
-
import { setParameterMetadata } from '../metadata';
|
|
3
|
-
const
|
|
4
|
-
export const inject = (
|
|
2
|
+
import { setParameterMetadata, getParameterMetadata } from '../metadata';
|
|
3
|
+
const INJECT_FN_LIST_KEY = 'INJECT_FN_LIST';
|
|
4
|
+
export const inject = (fn) => setParameterMetadata(INJECT_FN_LIST_KEY, fn);
|
|
5
5
|
export class ReflectionInjector {
|
|
6
6
|
resolve(container, Target, ...deps) {
|
|
7
|
-
|
|
8
|
-
const injectionFns = (_a = Reflect.getOwnMetadata(INJECT_KEY, Target)) !== null && _a !== void 0 ? _a : [];
|
|
7
|
+
const injectionFns = getParameterMetadata(INJECT_FN_LIST_KEY, Target);
|
|
9
8
|
const args = fillEmptyIndexes(injectionFns, deps.map(constant)).map((fn) => fn(container));
|
|
10
9
|
return new Target(...args);
|
|
11
10
|
}
|
package/esm/metadata.js
CHANGED
|
@@ -11,3 +11,7 @@ export const setParameterMetadata = (key, value) => (target, propertyKey, parame
|
|
|
11
11
|
metadata[parameterIndex] = value;
|
|
12
12
|
Reflect.defineMetadata(key, metadata, target);
|
|
13
13
|
};
|
|
14
|
+
export const getParameterMetadata = (key, target) => {
|
|
15
|
+
var _a;
|
|
16
|
+
return (_a = Reflect.getOwnMetadata(key, target)) !== null && _a !== void 0 ? _a : [];
|
|
17
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getMetadata, setMetadata } from '../metadata';
|
|
2
2
|
import { Provider } from './Provider';
|
|
3
3
|
import { DependencyMissingKeyError } from '../errors/DependencyMissingKeyError';
|
|
4
|
-
const DEPENDENCY_KEY = '
|
|
4
|
+
const DEPENDENCY_KEY = 'DEPENDENCY_KEY';
|
|
5
5
|
export const key = (value) => setMetadata(DEPENDENCY_KEY, value);
|
|
6
6
|
export class Registration {
|
|
7
7
|
constructor(provider, key) {
|
package/esm/utils.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
export
|
|
2
|
-
return (value) => mappers.reduce((acc, current) => current(acc), value);
|
|
3
|
-
}
|
|
1
|
+
export const pipe = (...mappers) => (value) => mappers.reduce((acc, current) => current(acc), value);
|
|
4
2
|
export function fillEmptyIndexes(baseArr, insertArr) {
|
|
5
3
|
const a = [...baseArr];
|
|
6
4
|
const b = [...insertArr];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-ioc-container",
|
|
3
|
-
"version": "27.4.
|
|
3
|
+
"version": "27.4.5",
|
|
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": "bccac96c715b1acc11728654988e823a6f040cff"
|
|
64
64
|
}
|
|
@@ -14,9 +14,6 @@ export interface Resolvable {
|
|
|
14
14
|
export interface IContainerModule {
|
|
15
15
|
applyTo(container: IContainer): void;
|
|
16
16
|
}
|
|
17
|
-
export interface IRegistrationOptions {
|
|
18
|
-
override?: boolean;
|
|
19
|
-
}
|
|
20
17
|
export interface IContainer extends Resolvable {
|
|
21
18
|
createScope(...tags: Tag[]): IContainer;
|
|
22
19
|
register(key: DependencyKey, value: IProvider): this;
|
|
@@ -2,7 +2,7 @@ import { IInjector } from './IInjector';
|
|
|
2
2
|
import { IContainer } from '../container/IContainer';
|
|
3
3
|
import { constructor } from '../utils';
|
|
4
4
|
declare type InjectFn<T = unknown> = (l: IContainer, ...args: unknown[]) => T;
|
|
5
|
-
export declare const inject: (
|
|
5
|
+
export declare const inject: (fn: InjectFn) => ParameterDecorator;
|
|
6
6
|
export declare class ReflectionInjector implements IInjector {
|
|
7
7
|
resolve<T>(container: IContainer, Target: constructor<T>, ...deps: unknown[]): T;
|
|
8
8
|
}
|
package/typings/metadata.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { constructor } from './utils';
|
|
1
2
|
export declare const setMetadata: <T>(key: string | symbol, value: T) => ClassDecorator;
|
|
2
3
|
export declare function getMetadata<T>(target: Object, key: string | symbol): T | undefined;
|
|
3
|
-
export declare const setParameterMetadata:
|
|
4
|
+
export declare const setParameterMetadata: (key: string | symbol, value: unknown) => ParameterDecorator;
|
|
5
|
+
export declare const getParameterMetadata: (key: string | symbol, target: constructor<unknown>) => unknown[];
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { DependencyKey, IContainer } from '../container/IContainer';
|
|
1
|
+
import { DependencyKey, IContainer, IContainerModule } from '../container/IContainer';
|
|
2
2
|
import { constructor, MapFn } from '../utils';
|
|
3
3
|
import { IProvider, ResolveDependency } from './IProvider';
|
|
4
4
|
export declare const key: (value: DependencyKey) => ClassDecorator;
|
|
5
|
-
export declare class Registration<T> {
|
|
5
|
+
export declare class Registration<T> implements IContainerModule {
|
|
6
6
|
private provider;
|
|
7
7
|
private key?;
|
|
8
8
|
static fromClass<T>(Target: constructor<T>): Registration<T>;
|
package/typings/utils.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare type constructor<T> = new (...args: any[]) => T;
|
|
2
2
|
export declare type MapFn<T> = (value: T) => T;
|
|
3
|
-
export declare
|
|
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;
|