@joist/di 4.0.0-next.37 → 4.0.0-next.38
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/package.json
CHANGED
package/src/lib/injector.ts
CHANGED
|
@@ -58,7 +58,7 @@ export class Injector {
|
|
|
58
58
|
const metadata = readMetadata(token as ConstructableToken<T>);
|
|
59
59
|
|
|
60
60
|
if (metadata) {
|
|
61
|
-
callLifecycle(instance, this, metadata.onInjected);
|
|
61
|
+
callLifecycle(instance, injectables.get(instance) ?? this, metadata.onInjected);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
return instance;
|
|
@@ -136,8 +136,8 @@ export class Injector {
|
|
|
136
136
|
const metadata = readMetadata(token as ConstructableToken<T>);
|
|
137
137
|
|
|
138
138
|
if (metadata) {
|
|
139
|
-
callLifecycle(instance, this, metadata.onCreated);
|
|
140
|
-
callLifecycle(instance, this, metadata.onInjected);
|
|
139
|
+
callLifecycle(instance, injector ?? this, metadata.onCreated);
|
|
140
|
+
callLifecycle(instance, injector ?? this, metadata.onInjected);
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
143
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { assert } from 'chai';
|
|
2
2
|
|
|
3
|
-
import { Injector } from './injector.js';
|
|
3
|
+
import { injectables, Injector } from './injector.js';
|
|
4
4
|
import { injected, created } from './lifecycle.js';
|
|
5
5
|
import { injectable } from './injectable.js';
|
|
6
6
|
import { inject } from './inject.js';
|
|
@@ -37,7 +37,9 @@ it('should call onInit and onInject when a service is first created', () => {
|
|
|
37
37
|
it('should pass the injector to all lifecycle callbacks', () => {
|
|
38
38
|
const i = new Injector();
|
|
39
39
|
|
|
40
|
-
@injectable(
|
|
40
|
+
@injectable({
|
|
41
|
+
name: 'MyService'
|
|
42
|
+
})
|
|
41
43
|
class MyService {
|
|
42
44
|
res: Injector[] = [];
|
|
43
45
|
|
|
@@ -53,9 +55,12 @@ it('should pass the injector to all lifecycle callbacks', () => {
|
|
|
53
55
|
}
|
|
54
56
|
|
|
55
57
|
const service = i.inject(MyService);
|
|
58
|
+
const injector = injectables.get(service);
|
|
56
59
|
|
|
57
|
-
assert.equal(service.res[0],
|
|
58
|
-
assert.equal(service.res[
|
|
60
|
+
assert.equal(service.res[0], injector);
|
|
61
|
+
assert.equal(service.res[0].parent, i);
|
|
62
|
+
assert.equal(service.res[1], injector);
|
|
63
|
+
assert.equal(service.res[1].parent, i);
|
|
59
64
|
});
|
|
60
65
|
|
|
61
66
|
it('should call onInject any time a service is returned', () => {
|
package/target/lib/injector.js
CHANGED
|
@@ -16,7 +16,7 @@ export class Injector {
|
|
|
16
16
|
const instance = this.#instances.get(token);
|
|
17
17
|
const metadata = readMetadata(token);
|
|
18
18
|
if (metadata) {
|
|
19
|
-
callLifecycle(instance, this, metadata.onInjected);
|
|
19
|
+
callLifecycle(instance, injectables.get(instance) ?? this, metadata.onInjected);
|
|
20
20
|
}
|
|
21
21
|
return instance;
|
|
22
22
|
}
|
|
@@ -61,8 +61,8 @@ export class Injector {
|
|
|
61
61
|
}
|
|
62
62
|
const metadata = readMetadata(token);
|
|
63
63
|
if (metadata) {
|
|
64
|
-
callLifecycle(instance, this, metadata.onCreated);
|
|
65
|
-
callLifecycle(instance, this, metadata.onInjected);
|
|
64
|
+
callLifecycle(instance, injector ?? this, metadata.onCreated);
|
|
65
|
+
callLifecycle(instance, injector ?? this, metadata.onInjected);
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
return instance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injector.js","sourceRoot":"","sources":["../../src/lib/injector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAKL,WAAW,EACZ,MAAM,eAAe,CAAC;AAKvB,MAAM,CAAC,MAAM,WAAW,GAA8B,IAAI,OAAO,EAAE,CAAC;AAyBpE,MAAM,OAAO,QAAQ;IAEnB,UAAU,GAAG,IAAI,OAAO,EAA4B,CAAC;IAErD,IAAI,CAAU;IACd,MAAM,CAAY;IAClB,SAAS,CAAsB;IAE/B,YAAY,IAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;IACzC,CAAC;IAGD,MAAM,CAAI,KAAwB;QAEhC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;YAE7C,MAAM,QAAQ,GAAG,YAAY,CAAC,KAA8B,CAAC,CAAC;YAE9D,IAAI,QAAQ,EAAE,CAAC;gBACb,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"injector.js","sourceRoot":"","sources":["../../src/lib/injector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
2
|
import { assert } from 'chai';
|
|
3
|
-
import { Injector } from './injector.js';
|
|
3
|
+
import { injectables, Injector } from './injector.js';
|
|
4
4
|
import { injected, created } from './lifecycle.js';
|
|
5
5
|
import { injectable } from './injectable.js';
|
|
6
6
|
import { inject } from './inject.js';
|
|
@@ -49,7 +49,9 @@ it('should call onInit and onInject when a service is first created', () => {
|
|
|
49
49
|
it('should pass the injector to all lifecycle callbacks', () => {
|
|
50
50
|
const i = new Injector();
|
|
51
51
|
let MyService = (() => {
|
|
52
|
-
let _classDecorators = [injectable(
|
|
52
|
+
let _classDecorators = [injectable({
|
|
53
|
+
name: 'MyService'
|
|
54
|
+
})];
|
|
53
55
|
let _classDescriptor;
|
|
54
56
|
let _classExtraInitializers = [];
|
|
55
57
|
let _classThis;
|
|
@@ -80,8 +82,11 @@ it('should pass the injector to all lifecycle callbacks', () => {
|
|
|
80
82
|
return MyService = _classThis;
|
|
81
83
|
})();
|
|
82
84
|
const service = i.inject(MyService);
|
|
83
|
-
|
|
84
|
-
assert.equal(service.res[
|
|
85
|
+
const injector = injectables.get(service);
|
|
86
|
+
assert.equal(service.res[0], injector);
|
|
87
|
+
assert.equal(service.res[0].parent, i);
|
|
88
|
+
assert.equal(service.res[1], injector);
|
|
89
|
+
assert.equal(service.res[1].parent, i);
|
|
85
90
|
});
|
|
86
91
|
it('should call onInject any time a service is returned', () => {
|
|
87
92
|
const i = new Injector();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.test.js","sourceRoot":"","sources":["../../src/lib/lifecycle.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"lifecycle.test.js","sourceRoot":"","sources":["../../src/lib/lifecycle.test.ts"],"names":[],"mappings":"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"}
|