ts-ioc-container 27.3.0 → 27.4.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/index.js +2 -4
- package/cjm/{registration → provider}/Registration.js +13 -10
- package/esm/index.js +1 -2
- package/esm/{registration → provider}/Registration.js +13 -10
- package/package.json +2 -2
- package/typings/index.d.ts +1 -2
- package/typings/provider/Registration.d.ts +15 -0
- package/cjm/errors/RegistrationConflictError.js +0 -16
- package/cjm/registration/IRegistration.js +0 -23
- package/cjm/registration/ThrowErrorIfNoDependency.js +0 -17
- package/esm/errors/RegistrationConflictError.js +0 -12
- package/esm/registration/IRegistration.js +0 -19
- package/esm/registration/ThrowErrorIfNoDependency.js +0 -13
- package/typings/errors/RegistrationConflictError.d.ts +0 -5
- package/typings/registration/IRegistration.d.ts +0 -16
- package/typings/registration/Registration.d.ts +0 -17
- package/typings/registration/ThrowErrorIfNoDependency.d.ts +0 -7
package/cjm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getMetadata = exports.setMetadata = exports.by = exports.hook = exports.getHooks = exports.ProxyInjector = exports.SimpleInjector = exports.inject = exports.ReflectionInjector = exports.Registration = exports.key = exports.AutoMockedContainer = exports.TaggedProvider = exports.tags = exports.SingletonProvider = exports.singleton = exports.ArgsProvider = exports.args = exports.argsFn = exports.provider = exports.Provider = exports.ContainerDisposedError = exports.MethodNotImplementedError = exports.
|
|
3
|
+
exports.getMetadata = exports.setMetadata = exports.by = exports.hook = exports.getHooks = exports.ProxyInjector = exports.SimpleInjector = exports.inject = exports.ReflectionInjector = exports.Registration = exports.key = exports.AutoMockedContainer = exports.TaggedProvider = exports.tags = exports.SingletonProvider = exports.singleton = exports.ArgsProvider = exports.args = exports.argsFn = exports.provider = exports.Provider = exports.ContainerDisposedError = exports.MethodNotImplementedError = exports.DependencyNotFoundError = exports.alias = 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");
|
|
@@ -11,8 +11,6 @@ var IProvider_1 = require("./provider/IProvider");
|
|
|
11
11
|
Object.defineProperty(exports, "alias", { enumerable: true, get: function () { return IProvider_1.alias; } });
|
|
12
12
|
var DependencyNotFoundError_1 = require("./errors/DependencyNotFoundError");
|
|
13
13
|
Object.defineProperty(exports, "DependencyNotFoundError", { enumerable: true, get: function () { return DependencyNotFoundError_1.DependencyNotFoundError; } });
|
|
14
|
-
var RegistrationConflictError_1 = require("./errors/RegistrationConflictError");
|
|
15
|
-
Object.defineProperty(exports, "RegistrationConflictError", { enumerable: true, get: function () { return RegistrationConflictError_1.RegistrationConflictError; } });
|
|
16
14
|
var MethodNotImplementedError_1 = require("./errors/MethodNotImplementedError");
|
|
17
15
|
Object.defineProperty(exports, "MethodNotImplementedError", { enumerable: true, get: function () { return MethodNotImplementedError_1.MethodNotImplementedError; } });
|
|
18
16
|
var ContainerDisposedError_1 = require("./errors/ContainerDisposedError");
|
|
@@ -32,7 +30,7 @@ Object.defineProperty(exports, "tags", { enumerable: true, get: function () { re
|
|
|
32
30
|
Object.defineProperty(exports, "TaggedProvider", { enumerable: true, get: function () { return TaggedProvider_1.TaggedProvider; } });
|
|
33
31
|
var AutoMockedContainer_1 = require("./container/AutoMockedContainer");
|
|
34
32
|
Object.defineProperty(exports, "AutoMockedContainer", { enumerable: true, get: function () { return AutoMockedContainer_1.AutoMockedContainer; } });
|
|
35
|
-
var Registration_1 = require("./
|
|
33
|
+
var Registration_1 = require("./provider/Registration");
|
|
36
34
|
Object.defineProperty(exports, "key", { enumerable: true, get: function () { return Registration_1.key; } });
|
|
37
35
|
Object.defineProperty(exports, "Registration", { enumerable: true, get: function () { return Registration_1.Registration; } });
|
|
38
36
|
var ReflectionInjector_1 = require("./injector/ReflectionInjector");
|
|
@@ -2,35 +2,38 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Registration = exports.key = void 0;
|
|
4
4
|
const metadata_1 = require("../metadata");
|
|
5
|
-
const Provider_1 = require("
|
|
6
|
-
const
|
|
5
|
+
const Provider_1 = require("./Provider");
|
|
6
|
+
const DependencyMissingKeyError_1 = require("../errors/DependencyMissingKeyError");
|
|
7
7
|
const DEPENDENCY_KEY = 'DependencyKey';
|
|
8
8
|
const key = (value) => (0, metadata_1.setMetadata)(DEPENDENCY_KEY, value);
|
|
9
9
|
exports.key = key;
|
|
10
10
|
class Registration {
|
|
11
|
-
constructor(
|
|
12
|
-
this.key = key;
|
|
11
|
+
constructor(provider, key) {
|
|
13
12
|
this.provider = provider;
|
|
13
|
+
this.key = key;
|
|
14
14
|
}
|
|
15
15
|
static fromClass(Target) {
|
|
16
16
|
const dependencyKey = (0, metadata_1.getMetadata)(Target, DEPENDENCY_KEY);
|
|
17
|
-
return new Registration(dependencyKey !== null && dependencyKey !== void 0 ? dependencyKey : Target.name
|
|
17
|
+
return new Registration(Provider_1.Provider.fromClass(Target), dependencyKey !== null && dependencyKey !== void 0 ? dependencyKey : Target.name);
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
return
|
|
19
|
+
static fromValue(value) {
|
|
20
|
+
return new Registration(Provider_1.Provider.fromValue(value));
|
|
21
|
+
}
|
|
22
|
+
static fromFn(fn) {
|
|
23
|
+
return new Registration(new Provider_1.Provider(fn));
|
|
21
24
|
}
|
|
22
25
|
to(key) {
|
|
23
26
|
this.key = key;
|
|
24
27
|
return this;
|
|
25
28
|
}
|
|
26
|
-
throwErrorOnConflict() {
|
|
27
|
-
return new ThrowErrorIfNoDependency_1.ThrowErrorIfNoDependency(this);
|
|
28
|
-
}
|
|
29
29
|
pipe(...mappers) {
|
|
30
30
|
this.provider = this.provider.pipe(...mappers);
|
|
31
31
|
return this;
|
|
32
32
|
}
|
|
33
33
|
applyTo(container) {
|
|
34
|
+
if (!this.key) {
|
|
35
|
+
throw new DependencyMissingKeyError_1.DependencyMissingKeyError('No key provided for registration');
|
|
36
|
+
}
|
|
34
37
|
container.register(this.key, this.provider);
|
|
35
38
|
}
|
|
36
39
|
}
|
package/esm/index.js
CHANGED
|
@@ -3,7 +3,6 @@ export { Container } from './container/Container';
|
|
|
3
3
|
export { EmptyContainer } from './container/EmptyContainer';
|
|
4
4
|
export { alias } from './provider/IProvider';
|
|
5
5
|
export { DependencyNotFoundError } from './errors/DependencyNotFoundError';
|
|
6
|
-
export { RegistrationConflictError } from './errors/RegistrationConflictError';
|
|
7
6
|
export { MethodNotImplementedError } from './errors/MethodNotImplementedError';
|
|
8
7
|
export { ContainerDisposedError } from './errors/ContainerDisposedError';
|
|
9
8
|
export { Provider, provider } from './provider/Provider';
|
|
@@ -11,7 +10,7 @@ export { argsFn, args, ArgsProvider } from './provider/ArgsProvider';
|
|
|
11
10
|
export { singleton, SingletonProvider } from './provider/SingletonProvider';
|
|
12
11
|
export { tags, TaggedProvider } from './provider/TaggedProvider';
|
|
13
12
|
export { AutoMockedContainer } from './container/AutoMockedContainer';
|
|
14
|
-
export { key, Registration } from './
|
|
13
|
+
export { key, Registration } from './provider/Registration';
|
|
15
14
|
export { ReflectionInjector, inject } from './injector/ReflectionInjector';
|
|
16
15
|
export { SimpleInjector } from './injector/SimpleInjector';
|
|
17
16
|
export { ProxyInjector } from './injector/ProxyInjector';
|
|
@@ -1,32 +1,35 @@
|
|
|
1
1
|
import { getMetadata, setMetadata } from '../metadata';
|
|
2
|
-
import { Provider } from '
|
|
3
|
-
import {
|
|
2
|
+
import { Provider } from './Provider';
|
|
3
|
+
import { DependencyMissingKeyError } from '../errors/DependencyMissingKeyError';
|
|
4
4
|
const DEPENDENCY_KEY = 'DependencyKey';
|
|
5
5
|
export const key = (value) => setMetadata(DEPENDENCY_KEY, value);
|
|
6
6
|
export class Registration {
|
|
7
|
-
constructor(
|
|
8
|
-
this.key = key;
|
|
7
|
+
constructor(provider, key) {
|
|
9
8
|
this.provider = provider;
|
|
9
|
+
this.key = key;
|
|
10
10
|
}
|
|
11
11
|
static fromClass(Target) {
|
|
12
12
|
const dependencyKey = getMetadata(Target, DEPENDENCY_KEY);
|
|
13
|
-
return new Registration(dependencyKey !== null && dependencyKey !== void 0 ? dependencyKey : Target.name
|
|
13
|
+
return new Registration(Provider.fromClass(Target), dependencyKey !== null && dependencyKey !== void 0 ? dependencyKey : Target.name);
|
|
14
14
|
}
|
|
15
|
-
|
|
16
|
-
return
|
|
15
|
+
static fromValue(value) {
|
|
16
|
+
return new Registration(Provider.fromValue(value));
|
|
17
|
+
}
|
|
18
|
+
static fromFn(fn) {
|
|
19
|
+
return new Registration(new Provider(fn));
|
|
17
20
|
}
|
|
18
21
|
to(key) {
|
|
19
22
|
this.key = key;
|
|
20
23
|
return this;
|
|
21
24
|
}
|
|
22
|
-
throwErrorOnConflict() {
|
|
23
|
-
return new ThrowErrorIfNoDependency(this);
|
|
24
|
-
}
|
|
25
25
|
pipe(...mappers) {
|
|
26
26
|
this.provider = this.provider.pipe(...mappers);
|
|
27
27
|
return this;
|
|
28
28
|
}
|
|
29
29
|
applyTo(container) {
|
|
30
|
+
if (!this.key) {
|
|
31
|
+
throw new DependencyMissingKeyError('No key provided for registration');
|
|
32
|
+
}
|
|
30
33
|
container.register(this.key, this.provider);
|
|
31
34
|
}
|
|
32
35
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-ioc-container",
|
|
3
|
-
"version": "27.
|
|
3
|
+
"version": "27.4.0",
|
|
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": "917c4879c7452ab78bb70482479e963e451361a3"
|
|
64
64
|
}
|
package/typings/index.d.ts
CHANGED
|
@@ -5,7 +5,6 @@ export { EmptyContainer } from './container/EmptyContainer';
|
|
|
5
5
|
export { ResolveDependency, IProvider, alias } from './provider/IProvider';
|
|
6
6
|
export { IInjector } from './injector/IInjector';
|
|
7
7
|
export { DependencyNotFoundError } from './errors/DependencyNotFoundError';
|
|
8
|
-
export { RegistrationConflictError } from './errors/RegistrationConflictError';
|
|
9
8
|
export { MethodNotImplementedError } from './errors/MethodNotImplementedError';
|
|
10
9
|
export { ContainerDisposedError } from './errors/ContainerDisposedError';
|
|
11
10
|
export { Provider, provider } from './provider/Provider';
|
|
@@ -13,7 +12,7 @@ export { ArgsFn, argsFn, args, ArgsProvider } from './provider/ArgsProvider';
|
|
|
13
12
|
export { singleton, SingletonProvider } from './provider/SingletonProvider';
|
|
14
13
|
export { tags, TaggedProvider } from './provider/TaggedProvider';
|
|
15
14
|
export { AutoMockedContainer } from './container/AutoMockedContainer';
|
|
16
|
-
export { key, Registration } from './
|
|
15
|
+
export { key, Registration } from './provider/Registration';
|
|
17
16
|
export { ReflectionInjector, inject } from './injector/ReflectionInjector';
|
|
18
17
|
export { SimpleInjector } from './injector/SimpleInjector';
|
|
19
18
|
export { ProxyInjector } from './injector/ProxyInjector';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DependencyKey, IContainer } from '../container/IContainer';
|
|
2
|
+
import { constructor, MapFn } from '../utils';
|
|
3
|
+
import { IProvider, ResolveDependency } from './IProvider';
|
|
4
|
+
export declare const key: (value: DependencyKey) => ClassDecorator;
|
|
5
|
+
export declare class Registration<T> {
|
|
6
|
+
private provider;
|
|
7
|
+
private key?;
|
|
8
|
+
static fromClass<T>(Target: constructor<T>): Registration<T>;
|
|
9
|
+
static fromValue<T>(value: T): Registration<T>;
|
|
10
|
+
static fromFn<T>(fn: ResolveDependency<T>): Registration<T>;
|
|
11
|
+
constructor(provider: IProvider<T>, key?: DependencyKey | undefined);
|
|
12
|
+
to(key: DependencyKey): this;
|
|
13
|
+
pipe(...mappers: MapFn<IProvider<T>>[]): this;
|
|
14
|
+
applyTo(container: IContainer): void;
|
|
15
|
+
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RegistrationConflictError = void 0;
|
|
4
|
-
class RegistrationConflictError extends Error {
|
|
5
|
-
constructor(message) {
|
|
6
|
-
super(message);
|
|
7
|
-
this.name = 'RegistrationConflictError';
|
|
8
|
-
Object.setPrototypeOf(this, RegistrationConflictError.prototype);
|
|
9
|
-
}
|
|
10
|
-
static assert(isTrue, failMessage) {
|
|
11
|
-
if (!isTrue) {
|
|
12
|
-
throw new RegistrationConflictError(failMessage);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
exports.RegistrationConflictError = RegistrationConflictError;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RegistrationDecorator = void 0;
|
|
4
|
-
class RegistrationDecorator {
|
|
5
|
-
constructor(decorated) {
|
|
6
|
-
this.decorated = decorated;
|
|
7
|
-
}
|
|
8
|
-
getKey() {
|
|
9
|
-
return this.decorated.getKey();
|
|
10
|
-
}
|
|
11
|
-
to(key) {
|
|
12
|
-
this.decorated.to(key);
|
|
13
|
-
return this;
|
|
14
|
-
}
|
|
15
|
-
pipe(...mappers) {
|
|
16
|
-
this.decorated.pipe(...mappers);
|
|
17
|
-
return this;
|
|
18
|
-
}
|
|
19
|
-
applyTo(container) {
|
|
20
|
-
this.decorated.applyTo(container);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
exports.RegistrationDecorator = RegistrationDecorator;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ThrowErrorIfNoDependency = void 0;
|
|
4
|
-
const RegistrationConflictError_1 = require("../errors/RegistrationConflictError");
|
|
5
|
-
const IRegistration_1 = require("./IRegistration");
|
|
6
|
-
class ThrowErrorIfNoDependency extends IRegistration_1.RegistrationDecorator {
|
|
7
|
-
constructor(module) {
|
|
8
|
-
super(module);
|
|
9
|
-
this.module = module;
|
|
10
|
-
}
|
|
11
|
-
applyTo(c) {
|
|
12
|
-
const key = this.module.getKey();
|
|
13
|
-
RegistrationConflictError_1.RegistrationConflictError.assert(!c.hasDependency(key), `Provider for key ${key.toString()} is already registered`);
|
|
14
|
-
this.module.applyTo(c);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
exports.ThrowErrorIfNoDependency = ThrowErrorIfNoDependency;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export class RegistrationConflictError extends Error {
|
|
2
|
-
constructor(message) {
|
|
3
|
-
super(message);
|
|
4
|
-
this.name = 'RegistrationConflictError';
|
|
5
|
-
Object.setPrototypeOf(this, RegistrationConflictError.prototype);
|
|
6
|
-
}
|
|
7
|
-
static assert(isTrue, failMessage) {
|
|
8
|
-
if (!isTrue) {
|
|
9
|
-
throw new RegistrationConflictError(failMessage);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export class RegistrationDecorator {
|
|
2
|
-
constructor(decorated) {
|
|
3
|
-
this.decorated = decorated;
|
|
4
|
-
}
|
|
5
|
-
getKey() {
|
|
6
|
-
return this.decorated.getKey();
|
|
7
|
-
}
|
|
8
|
-
to(key) {
|
|
9
|
-
this.decorated.to(key);
|
|
10
|
-
return this;
|
|
11
|
-
}
|
|
12
|
-
pipe(...mappers) {
|
|
13
|
-
this.decorated.pipe(...mappers);
|
|
14
|
-
return this;
|
|
15
|
-
}
|
|
16
|
-
applyTo(container) {
|
|
17
|
-
this.decorated.applyTo(container);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { RegistrationConflictError } from '../errors/RegistrationConflictError';
|
|
2
|
-
import { RegistrationDecorator } from './IRegistration';
|
|
3
|
-
export class ThrowErrorIfNoDependency extends RegistrationDecorator {
|
|
4
|
-
constructor(module) {
|
|
5
|
-
super(module);
|
|
6
|
-
this.module = module;
|
|
7
|
-
}
|
|
8
|
-
applyTo(c) {
|
|
9
|
-
const key = this.module.getKey();
|
|
10
|
-
RegistrationConflictError.assert(!c.hasDependency(key), `Provider for key ${key.toString()} is already registered`);
|
|
11
|
-
this.module.applyTo(c);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { DependencyKey, IContainer, IContainerModule } from '../container/IContainer';
|
|
2
|
-
import { MapFn } from '../utils';
|
|
3
|
-
import { IProvider } from '../provider/IProvider';
|
|
4
|
-
export interface IRegistration extends IContainerModule {
|
|
5
|
-
getKey(): DependencyKey;
|
|
6
|
-
to(key: DependencyKey): this;
|
|
7
|
-
pipe(...mappers: MapFn<IProvider>[]): this;
|
|
8
|
-
}
|
|
9
|
-
export declare abstract class RegistrationDecorator implements IRegistration {
|
|
10
|
-
private decorated;
|
|
11
|
-
constructor(decorated: IRegistration);
|
|
12
|
-
getKey(): DependencyKey;
|
|
13
|
-
to(key: DependencyKey): this;
|
|
14
|
-
pipe(...mappers: MapFn<IProvider>[]): this;
|
|
15
|
-
applyTo(container: IContainer): void;
|
|
16
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { DependencyKey, IContainer } from '../container/IContainer';
|
|
2
|
-
import { constructor, MapFn } from '../utils';
|
|
3
|
-
import { IProvider } from '../provider/IProvider';
|
|
4
|
-
import { ThrowErrorIfNoDependency } from './ThrowErrorIfNoDependency';
|
|
5
|
-
import { IRegistration } from './IRegistration';
|
|
6
|
-
export declare const key: (value: DependencyKey) => ClassDecorator;
|
|
7
|
-
export declare class Registration implements IRegistration {
|
|
8
|
-
private key;
|
|
9
|
-
private provider;
|
|
10
|
-
static fromClass(Target: constructor<unknown>): Registration;
|
|
11
|
-
constructor(key: DependencyKey, provider: IProvider);
|
|
12
|
-
getKey(): DependencyKey;
|
|
13
|
-
to(key: DependencyKey): this;
|
|
14
|
-
throwErrorOnConflict(): ThrowErrorIfNoDependency;
|
|
15
|
-
pipe(...mappers: MapFn<IProvider>[]): this;
|
|
16
|
-
applyTo(container: IContainer): void;
|
|
17
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { IContainer } from '../container/IContainer';
|
|
2
|
-
import { IRegistration, RegistrationDecorator } from './IRegistration';
|
|
3
|
-
export declare class ThrowErrorIfNoDependency extends RegistrationDecorator {
|
|
4
|
-
private module;
|
|
5
|
-
constructor(module: IRegistration);
|
|
6
|
-
applyTo(c: IContainer): void;
|
|
7
|
-
}
|