nano-injector 1.0.3 → 1.0.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/LICENSE +21 -21
- package/README.md +240 -221
- package/lib/Binder.js +83 -86
- package/lib/Injector.js +158 -159
- package/lib/InjectorsStack.js +33 -33
- package/lib/Provider.js +60 -59
- package/lib/index.js +18 -14
- package/package.json +52 -57
- package/typings/Binder.d.ts +44 -47
- package/typings/Injector.d.ts +93 -96
- package/typings/InjectorsStack.d.ts +16 -16
- package/typings/Provider.d.ts +48 -50
- package/typings/index.d.ts +2 -2
package/lib/Provider.js
CHANGED
|
@@ -1,59 +1,60 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createProvider = createProvider;
|
|
4
|
+
exports.isProvider = isProvider;
|
|
5
|
+
exports.getProviderID = getProviderID;
|
|
6
|
+
exports.getProviderName = getProviderName;
|
|
7
|
+
const InjectorsStack_1 = require("./InjectorsStack");
|
|
8
|
+
/**
|
|
9
|
+
* Symbol used to store the unique ID of a provider.
|
|
10
|
+
*/
|
|
11
|
+
const ID_SYMBOL = Symbol('id');
|
|
12
|
+
/**
|
|
13
|
+
* Symbol used for storing the name of a provider
|
|
14
|
+
*/
|
|
15
|
+
const NAME_SYMBOL = Symbol('name');
|
|
16
|
+
let PROVIDER_ID = 0;
|
|
17
|
+
/**
|
|
18
|
+
* Creates a new provider for a specific value type.
|
|
19
|
+
* @param name name for this provider used mainly for debugging purposes
|
|
20
|
+
*/
|
|
21
|
+
function createProvider(name) {
|
|
22
|
+
function callback(defValue) {
|
|
23
|
+
const hasDefaultValue = arguments.length > 0;
|
|
24
|
+
const { activeInjector } = InjectorsStack_1.InjectorsStack;
|
|
25
|
+
if (hasDefaultValue) {
|
|
26
|
+
return activeInjector.tryGetValue(provider, defValue);
|
|
27
|
+
}
|
|
28
|
+
return activeInjector.getValue(provider);
|
|
29
|
+
}
|
|
30
|
+
const provider = Object.assign(callback, {
|
|
31
|
+
[NAME_SYMBOL]: name,
|
|
32
|
+
[ID_SYMBOL]: PROVIDER_ID++,
|
|
33
|
+
});
|
|
34
|
+
return provider;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Determines whether the given value is a provider.
|
|
38
|
+
* @param value value which should be tested
|
|
39
|
+
*/
|
|
40
|
+
function isProvider(value) {
|
|
41
|
+
if (typeof value !== 'function') {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
const provider = value;
|
|
45
|
+
return typeof provider[ID_SYMBOL] !== 'undefined';
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Returns the unique ID of the specified provider.
|
|
49
|
+
* @param provider
|
|
50
|
+
*/
|
|
51
|
+
function getProviderID(provider) {
|
|
52
|
+
return provider[ID_SYMBOL];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Returns the name of the specified provider
|
|
56
|
+
* @param provider
|
|
57
|
+
*/
|
|
58
|
+
function getProviderName(provider) {
|
|
59
|
+
return provider[NAME_SYMBOL];
|
|
60
|
+
}
|
package/lib/index.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
__exportStar(
|
|
14
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./Injector"), exports);
|
|
18
|
+
__exportStar(require("./Provider"), exports);
|
package/package.json
CHANGED
|
@@ -1,57 +1,52 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "nano-injector",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Miniature dependency injection library for TypeScript and JavaScript",
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
"
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
"ts-standard": "^11.0.0",
|
|
54
|
-
"typedoc": "^0.22.10",
|
|
55
|
-
"typescript": "^4.4.3"
|
|
56
|
-
}
|
|
57
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "nano-injector",
|
|
3
|
+
"version": "1.0.5",
|
|
4
|
+
"description": "Miniature dependency injection library for TypeScript and JavaScript",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"typescript",
|
|
7
|
+
"dependency injection",
|
|
8
|
+
"di",
|
|
9
|
+
"ioc",
|
|
10
|
+
"inversion of control"
|
|
11
|
+
],
|
|
12
|
+
"homepage": "https://github.com/protoukr/nano-injector",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/protoukr/nano-injector/issues"
|
|
15
|
+
},
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "git+ssh://git@github.com/protoukr/nano-injector"
|
|
19
|
+
},
|
|
20
|
+
"license": "MIT",
|
|
21
|
+
"author": "Roman Pukhalskyi",
|
|
22
|
+
"main": "./lib/index.js",
|
|
23
|
+
"types": "./typings/index.d.ts",
|
|
24
|
+
"files": [
|
|
25
|
+
"lib",
|
|
26
|
+
"typings"
|
|
27
|
+
],
|
|
28
|
+
"scripts": {
|
|
29
|
+
"prebuild": "npm run clean",
|
|
30
|
+
"build": "tsc",
|
|
31
|
+
"clean": "rimraf typings docs lib",
|
|
32
|
+
"docs": "typedoc src/index.ts",
|
|
33
|
+
"example": "npx ts-node ./examples/index.ts",
|
|
34
|
+
"format:check": "prettier --check .",
|
|
35
|
+
"format:fix": "prettier --write .",
|
|
36
|
+
"prepublishOnly": "npm run verify",
|
|
37
|
+
"test": "jest",
|
|
38
|
+
"verify": "npm run format:check && npm test && npm run build"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/jest": "^30.0.0",
|
|
42
|
+
"@types/node": "^24.10.9",
|
|
43
|
+
"jest": "^30.2.0",
|
|
44
|
+
"prettier": "^3.8.1",
|
|
45
|
+
"prettier-plugin-packagejson": "^3.0.0",
|
|
46
|
+
"rimraf": "^3.0.2",
|
|
47
|
+
"ts-jest": "^29.4.6",
|
|
48
|
+
"ts-node": "^10.9.2",
|
|
49
|
+
"typedoc": "^0.28.16",
|
|
50
|
+
"typescript": "^5.9.3"
|
|
51
|
+
}
|
|
52
|
+
}
|
package/typings/Binder.d.ts
CHANGED
|
@@ -1,47 +1,44 @@
|
|
|
1
|
-
import { Injector } from './Injector';
|
|
2
|
-
export declare class NoCreationMethodSpecifiedError extends Error {
|
|
3
|
-
constructor();
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
export declare class Binder<T> {
|
|
9
|
-
private readonly injector;
|
|
10
|
-
private value;
|
|
11
|
-
private ctor;
|
|
12
|
-
private factory;
|
|
13
|
-
private isSingleton;
|
|
14
|
-
constructor(injector: Injector);
|
|
15
|
-
/**
|
|
16
|
-
* Creates
|
|
17
|
-
*/
|
|
18
|
-
getValue(): T;
|
|
19
|
-
/**
|
|
20
|
-
*
|
|
21
|
-
* @param value
|
|
22
|
-
*/
|
|
23
|
-
toValue(value: T): Binder<T>;
|
|
24
|
-
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
*
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
*/
|
|
46
|
-
private createValue;
|
|
47
|
-
}
|
|
1
|
+
import { Injector } from './Injector';
|
|
2
|
+
export declare class NoCreationMethodSpecifiedError extends Error {
|
|
3
|
+
constructor();
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* A class that defines how to create a value for this binder.
|
|
7
|
+
*/
|
|
8
|
+
export declare class Binder<T> {
|
|
9
|
+
private readonly injector;
|
|
10
|
+
private value;
|
|
11
|
+
private ctor;
|
|
12
|
+
private factory;
|
|
13
|
+
private isSingleton;
|
|
14
|
+
constructor(injector: Injector);
|
|
15
|
+
/**
|
|
16
|
+
* Creates a new value (if needed) using the defined creation method, and returns it.
|
|
17
|
+
*/
|
|
18
|
+
getValue(): T;
|
|
19
|
+
/**
|
|
20
|
+
* Sets a specific value for this binder.
|
|
21
|
+
* @param value
|
|
22
|
+
*/
|
|
23
|
+
toValue(value: T): Binder<T>;
|
|
24
|
+
/**
|
|
25
|
+
* Use a class constructor to create the value. Previous creation methods are cleared.
|
|
26
|
+
* @param ctor
|
|
27
|
+
*/
|
|
28
|
+
toConstructor(ctor: new () => T): Binder<T>;
|
|
29
|
+
/**
|
|
30
|
+
* Use a factory function to create the value. Previous creation methods are cleared.
|
|
31
|
+
* @param factory
|
|
32
|
+
*/
|
|
33
|
+
toFactory(factory: (injector: Injector) => T): Binder<T>;
|
|
34
|
+
/**
|
|
35
|
+
* Configures whether the value should be a singleton. If true, the value is created once and reused for all subsequent requests.
|
|
36
|
+
* @param value
|
|
37
|
+
*/
|
|
38
|
+
asSingleton(value?: boolean): Binder<T>;
|
|
39
|
+
/**
|
|
40
|
+
* Creates the value using the configured creation method.
|
|
41
|
+
* @private
|
|
42
|
+
*/
|
|
43
|
+
private createValue;
|
|
44
|
+
}
|
package/typings/Injector.d.ts
CHANGED
|
@@ -1,96 +1,93 @@
|
|
|
1
|
-
import { Binder } from './Binder';
|
|
2
|
-
import { Provider, ProviderValueType } from './Provider';
|
|
3
|
-
/**
|
|
4
|
-
*
|
|
5
|
-
*/
|
|
6
|
-
export declare class CircularDependencyError extends Error {
|
|
7
|
-
constructor(providers: Array<Provider<unknown>>);
|
|
8
|
-
}
|
|
9
|
-
export declare class NoBinderError extends Error {
|
|
10
|
-
constructor(provider: Provider<unknown>);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
*
|
|
15
|
-
*/
|
|
16
|
-
export declare const $Injector: Provider<Injector>;
|
|
17
|
-
/**
|
|
18
|
-
*
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
private readonly
|
|
23
|
-
private readonly
|
|
24
|
-
private readonly
|
|
25
|
-
private readonly
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
* @param params.
|
|
29
|
-
* @param params.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
*
|
|
45
|
-
* @param
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
*
|
|
51
|
-
* @param
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
*
|
|
57
|
-
* @param
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
*
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
private activateAndCall;
|
|
95
|
-
}
|
|
96
|
-
export {};
|
|
1
|
+
import { Binder } from './Binder';
|
|
2
|
+
import { Provider, ProviderValueType } from './Provider';
|
|
3
|
+
/**
|
|
4
|
+
* Error thrown when a circular dependency is detected.
|
|
5
|
+
*/
|
|
6
|
+
export declare class CircularDependencyError extends Error {
|
|
7
|
+
constructor(providers: Array<Provider<unknown>>);
|
|
8
|
+
}
|
|
9
|
+
export declare class NoBinderError extends Error {
|
|
10
|
+
constructor(provider: Provider<unknown>);
|
|
11
|
+
}
|
|
12
|
+
type UnionToIntersection<T> = (T extends any ? (k: T) => void : never) extends (k: infer R) => void ? R : never;
|
|
13
|
+
/**
|
|
14
|
+
* The provider to which every injector binds itself.
|
|
15
|
+
*/
|
|
16
|
+
export declare const $Injector: Provider<Injector>;
|
|
17
|
+
/**
|
|
18
|
+
* The central entity of the library. It holds provider bindings and resolves dependencies.
|
|
19
|
+
*/
|
|
20
|
+
export declare class Injector {
|
|
21
|
+
private readonly binders;
|
|
22
|
+
private readonly resolvingProviders;
|
|
23
|
+
private readonly name;
|
|
24
|
+
private readonly parent;
|
|
25
|
+
private readonly logger;
|
|
26
|
+
/**
|
|
27
|
+
* @param params.name Name of the injector (useful for debugging).
|
|
28
|
+
* @param params.parent Parent injector for composing injectors.
|
|
29
|
+
* @param params.logger Custom logger function.
|
|
30
|
+
*/
|
|
31
|
+
constructor(params?: {
|
|
32
|
+
name?: string;
|
|
33
|
+
parent?: Injector;
|
|
34
|
+
logger?: (msg: string) => unknown;
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* Creates a new binder and links it to the specified providers.
|
|
38
|
+
* If a provider is already bound, the binding is overridden.
|
|
39
|
+
* @param providers The providers to bind.
|
|
40
|
+
*/
|
|
41
|
+
bindProvider<ProviderT extends Array<Provider<unknown>>, ValueT extends UnionToIntersection<ProviderT extends Array<Provider<infer R>> ? R : never>>(...providers: ProviderT): Binder<ValueT>;
|
|
42
|
+
/**
|
|
43
|
+
* Resolves specific providers to their values and assigns them to the instance's properties.
|
|
44
|
+
* @param instance
|
|
45
|
+
* @param providers
|
|
46
|
+
*/
|
|
47
|
+
injectValues<T extends object, K extends keyof T>(instance: T, providers: Record<K, Provider<T[K]>>): void;
|
|
48
|
+
/**
|
|
49
|
+
* Activates the injector and creates a new instance of the given class using the provided arguments.
|
|
50
|
+
* @param type
|
|
51
|
+
* @param args
|
|
52
|
+
*/
|
|
53
|
+
createInstance<ClassT extends new (...args: any[]) => unknown>(type: ClassT, ...args: ConstructorParameters<ClassT>): InstanceType<ClassT>;
|
|
54
|
+
/**
|
|
55
|
+
* Activates the injector and calls the given function with the provided arguments.
|
|
56
|
+
* @param func function which should be called
|
|
57
|
+
* @param args args which should be passed to the called function
|
|
58
|
+
*/
|
|
59
|
+
callFunc<FuncT extends (...args: any[]) => unknown>(func: FuncT, ...args: Parameters<FuncT>): ReturnType<FuncT>;
|
|
60
|
+
/**
|
|
61
|
+
* Returns the value bound to the specified provider. Throws an exception if the value is not found.
|
|
62
|
+
* @param provider
|
|
63
|
+
*/
|
|
64
|
+
getValue<ProviderT extends Provider<unknown>>(provider: ProviderT): ProviderValueType<ProviderT>;
|
|
65
|
+
/**
|
|
66
|
+
* Returns the value bound to the specified provider, or the default value if the bound value is not found.
|
|
67
|
+
* @param provider
|
|
68
|
+
*/
|
|
69
|
+
tryGetValue<ProviderT extends Provider<unknown>>(provider: ProviderT): ProviderValueType<ProviderT> | undefined;
|
|
70
|
+
tryGetValue<ProviderT extends Provider<unknown>, DefValT>(provider: ProviderT, defVal: DefValT): ProviderValueType<ProviderT> | DefValT;
|
|
71
|
+
private pushResolvingProvider;
|
|
72
|
+
private popResolvingProvder;
|
|
73
|
+
private getBinder;
|
|
74
|
+
/**
|
|
75
|
+
* Recursively looks up the binder for the specified provider, traversing up to the root injector.
|
|
76
|
+
* @param provider
|
|
77
|
+
* @private
|
|
78
|
+
*/
|
|
79
|
+
private tryGetBinderRecursively;
|
|
80
|
+
/**
|
|
81
|
+
* Checks for circular dependencies and throws an error if one is detected.
|
|
82
|
+
* @param provider
|
|
83
|
+
* @private
|
|
84
|
+
*/
|
|
85
|
+
private checkCircularDependency;
|
|
86
|
+
/**
|
|
87
|
+
* Temporarily activates this injector to execute the provided function and return its result.
|
|
88
|
+
* @param func
|
|
89
|
+
* @private
|
|
90
|
+
*/
|
|
91
|
+
private activateAndCall;
|
|
92
|
+
}
|
|
93
|
+
export {};
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { Injector } from './Injector';
|
|
2
|
-
export declare class NoActiveInjectorError extends Error {
|
|
3
|
-
constructor();
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* Private class
|
|
7
|
-
*/
|
|
8
|
-
declare class _InjectorsStack {
|
|
9
|
-
private readonly injectors;
|
|
10
|
-
private _activeInjector?;
|
|
11
|
-
get activeInjector(): Injector;
|
|
12
|
-
push(injector: Injector): void;
|
|
13
|
-
pop(): void;
|
|
14
|
-
}
|
|
15
|
-
export declare const InjectorsStack: _InjectorsStack;
|
|
16
|
-
export {};
|
|
1
|
+
import { Injector } from './Injector';
|
|
2
|
+
export declare class NoActiveInjectorError extends Error {
|
|
3
|
+
constructor();
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Private class to manage the stack of active injectors.
|
|
7
|
+
*/
|
|
8
|
+
declare class _InjectorsStack {
|
|
9
|
+
private readonly injectors;
|
|
10
|
+
private _activeInjector?;
|
|
11
|
+
get activeInjector(): Injector;
|
|
12
|
+
push(injector: Injector): void;
|
|
13
|
+
pop(): void;
|
|
14
|
+
}
|
|
15
|
+
export declare const InjectorsStack: _InjectorsStack;
|
|
16
|
+
export {};
|