@joist/di 4.0.0-next.1 → 4.0.0-next.11
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 +52 -34
- package/package.json +4 -14
- package/src/lib/dom-injector.test.ts +16 -18
- package/src/lib/dom-injector.ts +3 -4
- package/src/lib/inject.test.ts +33 -56
- package/src/lib/inject.ts +4 -6
- package/src/lib/injectable-el.test.ts +130 -0
- package/src/lib/injectable-el.ts +63 -0
- package/src/lib/injectable.test.ts +19 -116
- package/src/lib/injectable.ts +21 -57
- package/src/lib/injector.test.ts +132 -130
- package/src/lib/injector.ts +33 -19
- package/src/lib/lifecycle.test.ts +68 -64
- package/src/lib/lifecycle.ts +19 -4
- package/src/lib/metadata.ts +12 -0
- package/src/lib/provider.ts +16 -8
- package/src/lib.ts +1 -1
- package/target/lib/dom-injector.js +3 -4
- package/target/lib/dom-injector.js.map +1 -1
- package/target/lib/dom-injector.test.js +16 -18
- package/target/lib/dom-injector.test.js.map +1 -1
- package/target/lib/inject.js +3 -3
- package/target/lib/inject.js.map +1 -1
- package/target/lib/inject.test.js +58 -90
- package/target/lib/inject.test.js.map +1 -1
- package/target/lib/injectable-el.d.ts +334 -0
- package/target/lib/injectable-el.js +40 -0
- package/target/lib/injectable-el.js.map +1 -0
- package/target/lib/injectable-el.test.js +238 -0
- package/target/lib/injectable-el.test.js.map +1 -0
- package/target/lib/injectable.d.ts +5 -7
- package/target/lib/injectable.js +13 -42
- package/target/lib/injectable.js.map +1 -1
- package/target/lib/injectable.test.js +49 -204
- package/target/lib/injectable.test.js.map +1 -1
- package/target/lib/injector.d.ts +1 -1
- package/target/lib/injector.js +18 -14
- package/target/lib/injector.js.map +1 -1
- package/target/lib/injector.test.js +215 -216
- package/target/lib/injector.test.js.map +1 -1
- package/target/lib/lifecycle.d.ts +2 -4
- package/target/lib/lifecycle.js +15 -4
- package/target/lib/lifecycle.js.map +1 -1
- package/target/lib/lifecycle.test.js +142 -123
- package/target/lib/lifecycle.test.js.map +1 -1
- package/target/lib/metadata.d.ts +6 -0
- package/target/lib/metadata.js +5 -0
- package/target/lib/metadata.js.map +1 -0
- package/target/lib/provider.d.ts +6 -5
- package/target/lib/provider.js +10 -4
- package/target/lib/provider.js.map +1 -1
- package/target/lib.d.ts +1 -1
- package/target/lib.js +1 -1
- package/target/lib.js.map +1 -1
- package/src/lib/injectable-map.test.ts +0 -18
- package/src/lib/injectable-map.ts +0 -3
- package/src/lib/injector.test-node.ts +0 -187
- package/target/lib/injectable-map.d.ts +0 -3
- package/target/lib/injectable-map.js +0 -3
- package/target/lib/injectable-map.js.map +0 -1
- package/target/lib/injectable-map.test.js +0 -15
- package/target/lib/injectable-map.test.js.map +0 -1
- package/target/lib/injector.test-node.d.ts +0 -1
- package/target/lib/injector.test-node.js +0 -231
- package/target/lib/injector.test-node.js.map +0 -1
- /package/target/lib/{injectable-map.test.d.ts → injectable-el.test.d.ts} +0 -0
|
@@ -1,231 +1,230 @@
|
|
|
1
1
|
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import {
|
|
2
|
+
import { assert } from 'chai';
|
|
3
3
|
import { Injector } from './injector.js';
|
|
4
4
|
import { inject } from './inject.js';
|
|
5
5
|
import { injectable } from './injectable.js';
|
|
6
6
|
import { StaticToken } from './provider.js';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
let
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
33
|
-
}
|
|
34
|
-
a = inject(A);
|
|
35
|
-
b = inject(B);
|
|
36
|
-
};
|
|
37
|
-
return MyService = _classThis;
|
|
38
|
-
})();
|
|
39
|
-
const app = new Injector();
|
|
40
|
-
const instance = app.inject(MyService);
|
|
41
|
-
expect(instance.a()).to.be.instanceOf(A);
|
|
42
|
-
expect(instance.b()).to.be.instanceOf(B);
|
|
43
|
-
});
|
|
44
|
-
it('should create a new instance of a provider that has a full dep tree', () => {
|
|
45
|
-
class A {
|
|
46
|
-
}
|
|
47
|
-
let B = (() => {
|
|
48
|
-
let _classDecorators = [injectable];
|
|
49
|
-
let _classDescriptor;
|
|
50
|
-
let _classExtraInitializers = [];
|
|
51
|
-
let _classThis;
|
|
52
|
-
var B = class {
|
|
53
|
-
static { _classThis = this; }
|
|
54
|
-
static {
|
|
55
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
56
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
57
|
-
B = _classThis = _classDescriptor.value;
|
|
58
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
59
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
60
|
-
}
|
|
61
|
-
a = inject(A);
|
|
62
|
-
};
|
|
63
|
-
return B = _classThis;
|
|
64
|
-
})();
|
|
65
|
-
let C = (() => {
|
|
66
|
-
let _classDecorators = [injectable];
|
|
67
|
-
let _classDescriptor;
|
|
68
|
-
let _classExtraInitializers = [];
|
|
69
|
-
let _classThis;
|
|
70
|
-
var C = class {
|
|
71
|
-
static { _classThis = this; }
|
|
72
|
-
static {
|
|
73
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
74
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
75
|
-
C = _classThis = _classDescriptor.value;
|
|
76
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
77
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
78
|
-
}
|
|
79
|
-
b = inject(B);
|
|
80
|
-
};
|
|
81
|
-
return C = _classThis;
|
|
82
|
-
})();
|
|
83
|
-
let D = (() => {
|
|
84
|
-
let _classDecorators = [injectable];
|
|
85
|
-
let _classDescriptor;
|
|
86
|
-
let _classExtraInitializers = [];
|
|
87
|
-
let _classThis;
|
|
88
|
-
var D = class {
|
|
89
|
-
static { _classThis = this; }
|
|
90
|
-
static {
|
|
91
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
92
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
93
|
-
D = _classThis = _classDescriptor.value;
|
|
94
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
95
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
96
|
-
}
|
|
97
|
-
c = inject(C);
|
|
98
|
-
};
|
|
99
|
-
return D = _classThis;
|
|
100
|
-
})();
|
|
101
|
-
let E = (() => {
|
|
102
|
-
let _classDecorators = [injectable];
|
|
103
|
-
let _classDescriptor;
|
|
104
|
-
let _classExtraInitializers = [];
|
|
105
|
-
let _classThis;
|
|
106
|
-
var E = class {
|
|
107
|
-
static { _classThis = this; }
|
|
108
|
-
static {
|
|
109
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
110
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
111
|
-
E = _classThis = _classDescriptor.value;
|
|
112
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
113
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
114
|
-
}
|
|
115
|
-
d = inject(D);
|
|
116
|
-
};
|
|
117
|
-
return E = _classThis;
|
|
118
|
-
})();
|
|
119
|
-
const app = new Injector();
|
|
120
|
-
const instance = app.inject(E);
|
|
121
|
-
expect(instance.d().c().b().a()).to.be.instanceOf(A);
|
|
122
|
-
});
|
|
123
|
-
it('should override a provider if explicitly instructed', () => {
|
|
124
|
-
class A {
|
|
125
|
-
}
|
|
126
|
-
let B = (() => {
|
|
127
|
-
let _classDecorators = [injectable];
|
|
128
|
-
let _classDescriptor;
|
|
129
|
-
let _classExtraInitializers = [];
|
|
130
|
-
let _classThis;
|
|
131
|
-
var B = class {
|
|
132
|
-
static { _classThis = this; }
|
|
133
|
-
static {
|
|
134
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
135
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
136
|
-
B = _classThis = _classDescriptor.value;
|
|
137
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
138
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
139
|
-
}
|
|
140
|
-
a = inject(A);
|
|
141
|
-
};
|
|
142
|
-
return B = _classThis;
|
|
143
|
-
})();
|
|
144
|
-
class AltA extends A {
|
|
145
|
-
}
|
|
146
|
-
const app = new Injector([{ provide: A, use: AltA }]);
|
|
147
|
-
expect(app.inject(B).a()).to.be.instanceOf(AltA);
|
|
148
|
-
});
|
|
149
|
-
it('should return an existing instance from a parent injector', () => {
|
|
150
|
-
class A {
|
|
151
|
-
}
|
|
152
|
-
const parent = new Injector();
|
|
153
|
-
const app = new Injector([], parent);
|
|
154
|
-
expect(parent.inject(A)).to.equal(app.inject(A));
|
|
155
|
-
});
|
|
156
|
-
it('should use a factory if provided', () => {
|
|
157
|
-
class Service {
|
|
158
|
-
hello() {
|
|
159
|
-
return 'world';
|
|
7
|
+
it('should create a new instance of a single provider', () => {
|
|
8
|
+
class A {
|
|
9
|
+
}
|
|
10
|
+
const app = new Injector();
|
|
11
|
+
assert(app.inject(A) instanceof A);
|
|
12
|
+
assert.equal(app.inject(A), app.inject(A));
|
|
13
|
+
});
|
|
14
|
+
it('should inject providers in the correct order', () => {
|
|
15
|
+
class A {
|
|
16
|
+
}
|
|
17
|
+
class B {
|
|
18
|
+
}
|
|
19
|
+
let MyService = (() => {
|
|
20
|
+
let _classDecorators = [injectable()];
|
|
21
|
+
let _classDescriptor;
|
|
22
|
+
let _classExtraInitializers = [];
|
|
23
|
+
let _classThis;
|
|
24
|
+
var MyService = class {
|
|
25
|
+
static { _classThis = this; }
|
|
26
|
+
static {
|
|
27
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
28
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
29
|
+
MyService = _classThis = _classDescriptor.value;
|
|
30
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
31
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
160
32
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
33
|
+
a = inject(A);
|
|
34
|
+
b = inject(B);
|
|
35
|
+
};
|
|
36
|
+
return MyService = _classThis;
|
|
37
|
+
})();
|
|
38
|
+
const app = new Injector();
|
|
39
|
+
const instance = app.inject(MyService);
|
|
40
|
+
assert(instance.a() instanceof A);
|
|
41
|
+
assert(instance.b() instanceof B);
|
|
42
|
+
});
|
|
43
|
+
it('should create a new instance of a provider that has a full dep tree', () => {
|
|
44
|
+
class A {
|
|
45
|
+
}
|
|
46
|
+
let B = (() => {
|
|
47
|
+
let _classDecorators = [injectable()];
|
|
48
|
+
let _classDescriptor;
|
|
49
|
+
let _classExtraInitializers = [];
|
|
50
|
+
let _classThis;
|
|
51
|
+
var B = class {
|
|
52
|
+
static { _classThis = this; }
|
|
53
|
+
static {
|
|
54
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
55
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
56
|
+
B = _classThis = _classDescriptor.value;
|
|
57
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
58
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
172
59
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
60
|
+
a = inject(A);
|
|
61
|
+
};
|
|
62
|
+
return B = _classThis;
|
|
63
|
+
})();
|
|
64
|
+
let C = (() => {
|
|
65
|
+
let _classDecorators = [injectable()];
|
|
66
|
+
let _classDescriptor;
|
|
67
|
+
let _classExtraInitializers = [];
|
|
68
|
+
let _classThis;
|
|
69
|
+
var C = class {
|
|
70
|
+
static { _classThis = this; }
|
|
71
|
+
static {
|
|
72
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
73
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
74
|
+
C = _classThis = _classDescriptor.value;
|
|
75
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
76
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
180
77
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
78
|
+
b = inject(B);
|
|
79
|
+
};
|
|
80
|
+
return C = _classThis;
|
|
81
|
+
})();
|
|
82
|
+
let D = (() => {
|
|
83
|
+
let _classDecorators = [injectable()];
|
|
84
|
+
let _classDescriptor;
|
|
85
|
+
let _classExtraInitializers = [];
|
|
86
|
+
let _classThis;
|
|
87
|
+
var D = class {
|
|
88
|
+
static { _classThis = this; }
|
|
89
|
+
static {
|
|
90
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
91
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
92
|
+
D = _classThis = _classDescriptor.value;
|
|
93
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
94
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
185
95
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
96
|
+
c = inject(C);
|
|
97
|
+
};
|
|
98
|
+
return D = _classThis;
|
|
99
|
+
})();
|
|
100
|
+
let E = (() => {
|
|
101
|
+
let _classDecorators = [injectable()];
|
|
102
|
+
let _classDescriptor;
|
|
103
|
+
let _classExtraInitializers = [];
|
|
104
|
+
let _classThis;
|
|
105
|
+
var E = class {
|
|
106
|
+
static { _classThis = this; }
|
|
107
|
+
static {
|
|
108
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
109
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
110
|
+
E = _classThis = _classDescriptor.value;
|
|
111
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
112
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
193
113
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
114
|
+
d = inject(D);
|
|
115
|
+
};
|
|
116
|
+
return E = _classThis;
|
|
117
|
+
})();
|
|
118
|
+
const app = new Injector();
|
|
119
|
+
const instance = app.inject(E);
|
|
120
|
+
assert(instance.d().c().b().a() instanceof A);
|
|
121
|
+
});
|
|
122
|
+
it('should override a provider if explicitly instructed', () => {
|
|
123
|
+
class A {
|
|
124
|
+
}
|
|
125
|
+
let B = (() => {
|
|
126
|
+
let _classDecorators = [injectable()];
|
|
127
|
+
let _classDescriptor;
|
|
128
|
+
let _classExtraInitializers = [];
|
|
129
|
+
let _classThis;
|
|
130
|
+
var B = class {
|
|
131
|
+
static { _classThis = this; }
|
|
132
|
+
static {
|
|
133
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
134
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
135
|
+
B = _classThis = _classDescriptor.value;
|
|
136
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
137
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
202
138
|
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
139
|
+
a = inject(A);
|
|
140
|
+
};
|
|
141
|
+
return B = _classThis;
|
|
142
|
+
})();
|
|
143
|
+
class AltA extends A {
|
|
144
|
+
}
|
|
145
|
+
const app = new Injector([{ provide: A, use: AltA }]);
|
|
146
|
+
assert(app.inject(B).a() instanceof AltA);
|
|
147
|
+
});
|
|
148
|
+
it('should return an existing instance from a parent injector', () => {
|
|
149
|
+
class A {
|
|
150
|
+
}
|
|
151
|
+
const parent = new Injector();
|
|
152
|
+
const app = new Injector([], parent);
|
|
153
|
+
assert.equal(parent.inject(A), app.inject(A));
|
|
154
|
+
});
|
|
155
|
+
it('should use a factory if provided', () => {
|
|
156
|
+
class Service {
|
|
157
|
+
hello() {
|
|
158
|
+
return 'world';
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
const injector = new Injector([
|
|
162
|
+
{
|
|
163
|
+
provide: Service,
|
|
222
164
|
factory() {
|
|
223
|
-
return
|
|
165
|
+
return {
|
|
166
|
+
hello() {
|
|
167
|
+
return 'world';
|
|
168
|
+
}
|
|
169
|
+
};
|
|
224
170
|
}
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
171
|
+
}
|
|
172
|
+
]);
|
|
173
|
+
assert.equal(injector.inject(Service).hello(), 'world');
|
|
174
|
+
});
|
|
175
|
+
it('should throw an error if provider is missing both factory and use', () => {
|
|
176
|
+
class Service {
|
|
177
|
+
hello() {
|
|
178
|
+
return 'world';
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
const injector = new Injector([
|
|
182
|
+
{
|
|
183
|
+
provide: Service
|
|
184
|
+
}
|
|
185
|
+
]);
|
|
186
|
+
assert.throws(() => injector.inject(Service), "Provider for Service found but is missing either 'use' or 'factory'");
|
|
187
|
+
});
|
|
188
|
+
it('should pass factories and instance of the injector', async () => {
|
|
189
|
+
class Service {
|
|
190
|
+
hello() {
|
|
191
|
+
return 'world';
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
let factoryInjector = null;
|
|
195
|
+
const injector = new Injector([
|
|
196
|
+
{
|
|
197
|
+
provide: Service,
|
|
198
|
+
factory(i) {
|
|
199
|
+
factoryInjector = i;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
]);
|
|
203
|
+
injector.inject(Service);
|
|
204
|
+
assert.equal(factoryInjector, injector);
|
|
205
|
+
});
|
|
206
|
+
it('should create an instance from a StaticToken factory', () => {
|
|
207
|
+
const TOKEN = new StaticToken('test', () => 'Hello World');
|
|
208
|
+
const injector = new Injector();
|
|
209
|
+
const res = injector.inject(TOKEN);
|
|
210
|
+
assert.equal(res, 'Hello World');
|
|
211
|
+
});
|
|
212
|
+
it('should create an instance from an async StaticToken factory', async () => {
|
|
213
|
+
const TOKEN = new StaticToken('test', () => Promise.resolve('Hello World'));
|
|
214
|
+
const injector = new Injector();
|
|
215
|
+
const res = await injector.inject(TOKEN);
|
|
216
|
+
assert.equal(res, 'Hello World');
|
|
217
|
+
});
|
|
218
|
+
it('should allow static token to be overridden', () => {
|
|
219
|
+
const TOKEN = new StaticToken('test');
|
|
220
|
+
const provider = {
|
|
221
|
+
provide: TOKEN,
|
|
222
|
+
factory() {
|
|
223
|
+
return 'Hello World';
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
const injector = new Injector([provider]);
|
|
227
|
+
const res = injector.inject(TOKEN);
|
|
228
|
+
assert.equal(res, 'Hello World');
|
|
230
229
|
});
|
|
231
230
|
//# sourceMappingURL=injector.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injector.test.js","sourceRoot":"","sources":["../../src/lib/injector.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"injector.test.js","sourceRoot":"","sources":["../../src/lib/injector.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
export declare
|
|
2
|
-
|
|
3
|
-
readonly onInject: symbol;
|
|
4
|
-
};
|
|
1
|
+
export declare function injected(): (val: Function, ctx: ClassMethodDecoratorContext) => void;
|
|
2
|
+
export declare function created(): (val: Function, ctx: ClassMethodDecoratorContext) => void;
|
package/target/lib/lifecycle.js
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
Symbol.metadata ??= Symbol('Symbol.metadata');
|
|
2
|
+
export function injected() {
|
|
3
|
+
return function onInjectDecorator(val, ctx) {
|
|
4
|
+
const metadata = ctx.metadata;
|
|
5
|
+
metadata.onInjected ??= [];
|
|
6
|
+
metadata.onInjected.push(val);
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export function created() {
|
|
10
|
+
return function onInjectDecorator(val, ctx) {
|
|
11
|
+
const metadata = ctx.metadata;
|
|
12
|
+
metadata.onCreated ??= [];
|
|
13
|
+
metadata.onCreated.push(val);
|
|
14
|
+
};
|
|
15
|
+
}
|
|
5
16
|
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/lib/lifecycle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/lib/lifecycle.ts"],"names":[],"mappings":"AAEC,MAAc,CAAC,QAAQ,KAAK,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAEvD,MAAM,UAAU,QAAQ;IACtB,OAAO,SAAS,iBAAiB,CAAC,GAAa,EAAE,GAAgC;QAC/E,MAAM,QAAQ,GAAuB,GAAG,CAAC,QAAQ,CAAC;QAClD,QAAQ,CAAC,UAAU,KAAK,EAAE,CAAC;QAC3B,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,SAAS,iBAAiB,CAAC,GAAa,EAAE,GAAgC;QAC/E,MAAM,QAAQ,GAAuB,GAAG,CAAC,QAAQ,CAAC;QAClD,QAAQ,CAAC,SAAS,KAAK,EAAE,CAAC;QAC1B,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC,CAAC;AACJ,CAAC"}
|