@joist/di 3.4.0 → 3.5.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/README.md +32 -2
- package/package.json +1 -1
- package/src/lib/environment.test.ts +1 -1
- package/src/lib/inject.test.ts +2 -2
- package/src/lib/inject.ts +3 -3
- package/src/lib/injectable-map.test.ts +18 -0
- package/src/lib/injectable-map.ts +13 -0
- package/src/lib/injectable.test.ts +1 -1
- package/src/lib/injectable.ts +5 -10
- package/src/lib/injector.test.ts +12 -12
- package/src/lib/injector.ts +11 -3
- package/src/lib.ts +1 -1
- package/target/lib/environment.test.js +1 -1
- package/target/lib/environment.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 +2 -2
- package/target/lib/inject.test.js.map +1 -1
- package/target/lib/injectable-map.d.ts +6 -0
- package/target/lib/injectable-map.js +10 -0
- package/target/lib/injectable-map.js.map +1 -0
- package/target/lib/injectable-map.test.d.ts +1 -0
- package/target/lib/injectable-map.test.js +15 -0
- package/target/lib/injectable-map.test.js.map +1 -0
- package/target/lib/injectable.d.ts +2 -3
- package/target/lib/injectable.js +5 -9
- package/target/lib/injectable.js.map +1 -1
- package/target/lib/injectable.test.js +1 -1
- package/target/lib/injectable.test.js.map +1 -1
- package/target/lib/injector.d.ts +2 -0
- package/target/lib/injector.js +9 -3
- package/target/lib/injector.js.map +1 -1
- package/target/lib/injector.test.js +12 -12
- package/target/lib/injector.test.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/README.md
CHANGED
|
@@ -103,6 +103,34 @@ const app = new Injector([
|
|
|
103
103
|
}
|
|
104
104
|
]);
|
|
105
105
|
```
|
|
106
|
+
### Accessing the injector
|
|
107
|
+
|
|
108
|
+
Factories provide more flexibility but often times cannot use the `inject()` function. To get around this all factories are passed an instance of the current injector.
|
|
109
|
+
|
|
110
|
+
```ts
|
|
111
|
+
class Logger {
|
|
112
|
+
log(args: any[]): void {
|
|
113
|
+
console.log(...args)
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
class Feature {
|
|
118
|
+
#logger;
|
|
119
|
+
|
|
120
|
+
constructor(logger: Logger) {
|
|
121
|
+
this.#logger = logger;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const app = new Injector([
|
|
126
|
+
{
|
|
127
|
+
provide: Feature,
|
|
128
|
+
factory(i) {
|
|
129
|
+
return new Feature(i.get(Logger));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
]);
|
|
133
|
+
```
|
|
106
134
|
|
|
107
135
|
## Static Tokens
|
|
108
136
|
|
|
@@ -125,7 +153,7 @@ const app = new Injector([
|
|
|
125
153
|
A static token can be provided a default factory function to use on creation.
|
|
126
154
|
|
|
127
155
|
```ts
|
|
128
|
-
const URL_TOKEN = new StaticToken
|
|
156
|
+
const URL_TOKEN = new StaticToken('app_url', () => '/default-url/');
|
|
129
157
|
```
|
|
130
158
|
|
|
131
159
|
### Async values
|
|
@@ -133,7 +161,8 @@ const URL_TOKEN = new StaticToken<string>('app_url', () => '/default-url/');
|
|
|
133
161
|
Static tokens can also leverage promises for cases when you need to async create your service instances.
|
|
134
162
|
|
|
135
163
|
```ts
|
|
136
|
-
|
|
164
|
+
// StaticToken<Promise<string>>
|
|
165
|
+
const URL_TOKEN = new StaticToken('app_url', () => Promise.resolve('/default-url/'));
|
|
137
166
|
|
|
138
167
|
const app = new Injector();
|
|
139
168
|
|
|
@@ -154,6 +183,7 @@ class HttpService {
|
|
|
154
183
|
}
|
|
155
184
|
}
|
|
156
185
|
|
|
186
|
+
@injectable
|
|
157
187
|
class ApiService {
|
|
158
188
|
#http = inject(HttpService);
|
|
159
189
|
|
package/package.json
CHANGED
package/src/lib/inject.test.ts
CHANGED
|
@@ -35,7 +35,7 @@ describe('inject', () => {
|
|
|
35
35
|
const parent = new Injector();
|
|
36
36
|
|
|
37
37
|
try {
|
|
38
|
-
parent.
|
|
38
|
+
parent.inject(BarService);
|
|
39
39
|
|
|
40
40
|
throw new Error('Should not succeed');
|
|
41
41
|
} catch (err) {
|
|
@@ -66,6 +66,6 @@ describe('inject', () => {
|
|
|
66
66
|
}
|
|
67
67
|
]);
|
|
68
68
|
|
|
69
|
-
expect(parent.
|
|
69
|
+
expect(parent.inject(BarService).foo().value).to.equal('100');
|
|
70
70
|
});
|
|
71
71
|
});
|
package/src/lib/inject.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ConstructableToken } from './provider.js';
|
|
2
|
-
import {
|
|
2
|
+
import { INJECTABLE_MAP } from './injectable.js';
|
|
3
3
|
|
|
4
4
|
export type Injected<T> = () => T;
|
|
5
5
|
|
|
@@ -7,7 +7,7 @@ export function inject<This extends object, T extends object>(
|
|
|
7
7
|
token: ConstructableToken<T>
|
|
8
8
|
): Injected<T> {
|
|
9
9
|
return function (this: This) {
|
|
10
|
-
const injector =
|
|
10
|
+
const injector = INJECTABLE_MAP.get(this);
|
|
11
11
|
|
|
12
12
|
if (injector === undefined) {
|
|
13
13
|
const name = Object.getPrototypeOf(this.constructor).name;
|
|
@@ -17,6 +17,6 @@ export function inject<This extends object, T extends object>(
|
|
|
17
17
|
);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
return injector.
|
|
20
|
+
return injector.inject(token);
|
|
21
21
|
};
|
|
22
22
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { expect } from '@open-wc/testing';
|
|
2
|
+
|
|
3
|
+
import { InjectableMap } from './injectable-map.js';
|
|
4
|
+
import { Injector } from './injector.js';
|
|
5
|
+
|
|
6
|
+
describe('InjectableMap', () => {
|
|
7
|
+
it('should add a new weak reference for an injector', () => {
|
|
8
|
+
const map = new InjectableMap();
|
|
9
|
+
const app = {
|
|
10
|
+
key: {},
|
|
11
|
+
injector: new Injector()
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
map.set(app.key, app.injector);
|
|
15
|
+
|
|
16
|
+
expect(map.get(app.key)).to.equal(app.injector);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Injector } from './injector.js';
|
|
2
|
+
|
|
3
|
+
export class InjectableMap {
|
|
4
|
+
#injectables = new WeakMap<object, Injector>();
|
|
5
|
+
|
|
6
|
+
get(key: object) {
|
|
7
|
+
return this.#injectables.get(key);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
set(key: object, injector: Injector) {
|
|
11
|
+
return this.#injectables.set(key, injector);
|
|
12
|
+
}
|
|
13
|
+
}
|
package/src/lib/injectable.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ConstructableToken } from './provider.js';
|
|
2
2
|
import { Injector } from './injector.js';
|
|
3
3
|
import { environment } from './environment.js';
|
|
4
|
+
import { InjectableMap } from './injectable-map.js';
|
|
4
5
|
|
|
5
|
-
export const
|
|
6
|
+
export const INJECTABLE_MAP = new InjectableMap();
|
|
6
7
|
|
|
7
8
|
export function injectable<T extends ConstructableToken<any>>(Base: T, _?: unknown) {
|
|
8
9
|
return class InjectableNode extends Base {
|
|
@@ -11,7 +12,7 @@ export function injectable<T extends ConstructableToken<any>>(Base: T, _?: unkno
|
|
|
11
12
|
|
|
12
13
|
const injector = new Injector(Base.providers);
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
INJECTABLE_MAP.set(this, injector);
|
|
15
16
|
|
|
16
17
|
try {
|
|
17
18
|
if (this instanceof HTMLElement) {
|
|
@@ -28,12 +29,6 @@ export function injectable<T extends ConstructableToken<any>>(Base: T, _?: unkno
|
|
|
28
29
|
} catch {}
|
|
29
30
|
}
|
|
30
31
|
|
|
31
|
-
onInject() {
|
|
32
|
-
if (super.onInject) {
|
|
33
|
-
super.onInject();
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
32
|
connectedCallback() {
|
|
38
33
|
try {
|
|
39
34
|
if (this instanceof HTMLElement) {
|
|
@@ -47,7 +42,7 @@ export function injectable<T extends ConstructableToken<any>>(Base: T, _?: unkno
|
|
|
47
42
|
}
|
|
48
43
|
|
|
49
44
|
disconnectedCallback() {
|
|
50
|
-
const injector =
|
|
45
|
+
const injector = INJECTABLE_MAP.get(this);
|
|
51
46
|
|
|
52
47
|
if (injector) {
|
|
53
48
|
injector.setParent(undefined);
|
|
@@ -68,7 +63,7 @@ function findInjectorRoot(e: Event): Injector | null {
|
|
|
68
63
|
for (let i = 1; i < path.length; i++) {
|
|
69
64
|
const part = path[i];
|
|
70
65
|
|
|
71
|
-
const injector =
|
|
66
|
+
const injector = INJECTABLE_MAP.get(part);
|
|
72
67
|
|
|
73
68
|
if (injector) {
|
|
74
69
|
return injector;
|
package/src/lib/injector.test.ts
CHANGED
|
@@ -11,8 +11,8 @@ describe('Injector', () => {
|
|
|
11
11
|
|
|
12
12
|
const app = new Injector();
|
|
13
13
|
|
|
14
|
-
expect(app.
|
|
15
|
-
expect(app.
|
|
14
|
+
expect(app.inject(A)).to.be.instanceOf(A);
|
|
15
|
+
expect(app.inject(A)).to.equal(app.inject(A));
|
|
16
16
|
});
|
|
17
17
|
|
|
18
18
|
it('should inject providers in the correct order', () => {
|
|
@@ -26,7 +26,7 @@ describe('Injector', () => {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
const app = new Injector();
|
|
29
|
-
const instance = app.
|
|
29
|
+
const instance = app.inject(MyService);
|
|
30
30
|
|
|
31
31
|
expect(instance.a()).to.be.instanceOf(A);
|
|
32
32
|
expect(instance.b()).to.be.instanceOf(B);
|
|
@@ -56,7 +56,7 @@ describe('Injector', () => {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
const app = new Injector();
|
|
59
|
-
const instance = app.
|
|
59
|
+
const instance = app.inject(E);
|
|
60
60
|
|
|
61
61
|
expect(instance.d().c().b().a()).to.be.instanceOf(A);
|
|
62
62
|
});
|
|
@@ -72,7 +72,7 @@ describe('Injector', () => {
|
|
|
72
72
|
class AltA extends A {}
|
|
73
73
|
const app = new Injector([{ provide: A, use: AltA }]);
|
|
74
74
|
|
|
75
|
-
expect(app.
|
|
75
|
+
expect(app.inject(B).a()).to.be.instanceOf(AltA);
|
|
76
76
|
});
|
|
77
77
|
|
|
78
78
|
it('should return an existing instance from a parent injector', () => {
|
|
@@ -82,7 +82,7 @@ describe('Injector', () => {
|
|
|
82
82
|
|
|
83
83
|
const app = new Injector([], parent);
|
|
84
84
|
|
|
85
|
-
expect(parent.
|
|
85
|
+
expect(parent.inject(A)).to.equal(app.inject(A));
|
|
86
86
|
});
|
|
87
87
|
|
|
88
88
|
it('should use a factory if provided', () => {
|
|
@@ -105,7 +105,7 @@ describe('Injector', () => {
|
|
|
105
105
|
}
|
|
106
106
|
]);
|
|
107
107
|
|
|
108
|
-
expect(injector.
|
|
108
|
+
expect(injector.inject(Service).hello()).to.equal('you');
|
|
109
109
|
});
|
|
110
110
|
|
|
111
111
|
it('should throw an error if provider is missing both factory and use', () => {
|
|
@@ -121,7 +121,7 @@ describe('Injector', () => {
|
|
|
121
121
|
}
|
|
122
122
|
]);
|
|
123
123
|
|
|
124
|
-
expect(() => injector.
|
|
124
|
+
expect(() => injector.inject(Service)).to.throw(
|
|
125
125
|
"Provider for Service found but is missing either 'use' or 'factory'"
|
|
126
126
|
);
|
|
127
127
|
});
|
|
@@ -144,14 +144,14 @@ describe('Injector', () => {
|
|
|
144
144
|
}
|
|
145
145
|
]);
|
|
146
146
|
|
|
147
|
-
injector.
|
|
147
|
+
injector.inject(Service);
|
|
148
148
|
});
|
|
149
149
|
|
|
150
150
|
it('should create an instance from a StaticToken factory', () => {
|
|
151
151
|
const token = new StaticToken('test', () => 'Hello World');
|
|
152
152
|
const injector = new Injector();
|
|
153
153
|
|
|
154
|
-
const res = injector.
|
|
154
|
+
const res = injector.inject(token);
|
|
155
155
|
|
|
156
156
|
expect(res).to.equal('Hello World');
|
|
157
157
|
});
|
|
@@ -160,7 +160,7 @@ describe('Injector', () => {
|
|
|
160
160
|
const token = new StaticToken('test', () => Promise.resolve('Hello World'));
|
|
161
161
|
const injector = new Injector();
|
|
162
162
|
|
|
163
|
-
const res = await injector.
|
|
163
|
+
const res = await injector.inject(token);
|
|
164
164
|
|
|
165
165
|
expect(res).to.equal('Hello World');
|
|
166
166
|
});
|
|
@@ -177,7 +177,7 @@ describe('Injector', () => {
|
|
|
177
177
|
|
|
178
178
|
const injector = new Injector([provider]);
|
|
179
179
|
|
|
180
|
-
const res = injector.
|
|
180
|
+
const res = injector.inject(token);
|
|
181
181
|
|
|
182
182
|
expect(res).to.equal('Hello World');
|
|
183
183
|
});
|
package/src/lib/injector.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { INJECTABLE_MAP } from './injectable.js';
|
|
2
2
|
import { InjectionToken, Provider, StaticToken } from './provider.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -30,6 +30,10 @@ export class Injector {
|
|
|
30
30
|
this.providers = providers;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
inject<T>(token: InjectionToken<T>): T {
|
|
34
|
+
return this.get(token);
|
|
35
|
+
}
|
|
36
|
+
|
|
33
37
|
// resolves and retuns and instance of the requested service
|
|
34
38
|
get<T>(token: InjectionToken<T>): T {
|
|
35
39
|
// check for a local instance
|
|
@@ -58,7 +62,7 @@ export class Injector {
|
|
|
58
62
|
|
|
59
63
|
// check for a parent and attempt to get there
|
|
60
64
|
if (this.parent) {
|
|
61
|
-
return this.parent.
|
|
65
|
+
return this.parent.inject(token);
|
|
62
66
|
}
|
|
63
67
|
|
|
64
68
|
if (token instanceof StaticToken) {
|
|
@@ -89,7 +93,7 @@ export class Injector {
|
|
|
89
93
|
* Only values that are objects are able to have associated injectors
|
|
90
94
|
*/
|
|
91
95
|
if (typeof instance === 'object' && instance !== null) {
|
|
92
|
-
const injector =
|
|
96
|
+
const injector = INJECTABLE_MAP.get(instance);
|
|
93
97
|
|
|
94
98
|
if (injector) {
|
|
95
99
|
/**
|
|
@@ -127,3 +131,7 @@ export class Injector {
|
|
|
127
131
|
return undefined;
|
|
128
132
|
}
|
|
129
133
|
}
|
|
134
|
+
|
|
135
|
+
export function injector(providers: Provider<unknown>[] = [], parent?: Injector) {
|
|
136
|
+
return new Injector(providers, parent);
|
|
137
|
+
}
|
package/src/lib.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { Injector } from './lib/injector.js';
|
|
2
2
|
export { Provider, ConstructableToken, StaticToken } from './lib/provider.js';
|
|
3
|
-
export { injectable } from './lib/injectable.js';
|
|
3
|
+
export { injectable, INJECTABLE_MAP } from './lib/injectable.js';
|
|
4
4
|
export { inject, Injected } from './lib/inject.js';
|
|
5
5
|
export { defineEnvironment, clearEnvironment } from './lib/environment.js';
|
|
@@ -48,7 +48,7 @@ describe('environment', () => {
|
|
|
48
48
|
})();
|
|
49
49
|
customElements.define('env-1', MyElement);
|
|
50
50
|
const el = await fixture(html `<env-1></env-1>`);
|
|
51
|
-
expect(el.my()).to.equal(environment().
|
|
51
|
+
expect(el.my()).to.equal(environment().inject(MyService));
|
|
52
52
|
});
|
|
53
53
|
});
|
|
54
54
|
//# sourceMappingURL=environment.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.test.js","sourceRoot":"","sources":["../../src/lib/environment.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAE5B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YAE7D,SAAS;oCADd,UAAU;;;;;;;;oBACX,6KAAkB;;;oBAAZ,uDAAS;;;;;YAGT,SAAS;oCADd,UAAU;;;;8BACa,WAAW;iCAAnB,SAAQ,WAAW;;;;oBAAnC,6KAEC;;;oBAFK,uDAAS;;gBACb,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;;;;QAGzB,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE1C,MAAM,EAAE,GAAG,MAAM,OAAO,CAAY,IAAI,CAAA,iBAAiB,CAAC,CAAC;QAE3D,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"environment.test.js","sourceRoot":"","sources":["../../src/lib/environment.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAE5B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YAE7D,SAAS;oCADd,UAAU;;;;;;;;oBACX,6KAAkB;;;oBAAZ,uDAAS;;;;;YAGT,SAAS;oCADd,UAAU;;;;8BACa,WAAW;iCAAnB,SAAQ,WAAW;;;;oBAAnC,6KAEC;;;oBAFK,uDAAS;;gBACb,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;;;;QAGzB,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE1C,MAAM,EAAE,GAAG,MAAM,OAAO,CAAY,IAAI,CAAA,iBAAiB,CAAC,CAAC;QAE3D,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/target/lib/inject.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { INJECTABLE_MAP } from './injectable.js';
|
|
2
2
|
export function inject(token) {
|
|
3
3
|
return function () {
|
|
4
|
-
const injector =
|
|
4
|
+
const injector = INJECTABLE_MAP.get(this);
|
|
5
5
|
if (injector === undefined) {
|
|
6
6
|
const name = Object.getPrototypeOf(this.constructor).name;
|
|
7
7
|
throw new Error(`${name} is either not injectable or a service is being called in the constructor. \n Either add the @injectable to your class or use the onInject callback method.`);
|
|
8
8
|
}
|
|
9
|
-
return injector.
|
|
9
|
+
return injector.inject(token);
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=inject.js.map
|
package/target/lib/inject.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../../src/lib/inject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../../src/lib/inject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,UAAU,MAAM,CACpB,KAA4B;IAE5B,OAAO;QACL,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE1C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;YAE1D,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,6JAA6J,CACrK,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -56,7 +56,7 @@ describe('inject', () => {
|
|
|
56
56
|
})();
|
|
57
57
|
const parent = new Injector();
|
|
58
58
|
try {
|
|
59
|
-
parent.
|
|
59
|
+
parent.inject(BarService);
|
|
60
60
|
throw new Error('Should not succeed');
|
|
61
61
|
}
|
|
62
62
|
catch (err) {
|
|
@@ -94,7 +94,7 @@ describe('inject', () => {
|
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
]);
|
|
97
|
-
expect(parent.
|
|
97
|
+
expect(parent.inject(BarService).foo().value).to.equal('100');
|
|
98
98
|
});
|
|
99
99
|
});
|
|
100
100
|
//# sourceMappingURL=inject.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inject.test.js","sourceRoot":"","sources":["../../src/lib/inject.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACrB,MAAM,YAAY;SAAG;YAGf,UAAU;oCADf,UAAU;;;;8BACc,WAAW;kCAAnB,SAAQ,WAAW;;;;oBAApC,6KAEC;;;oBAFK,uDAAU;;gBACd,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;;;;QAG/B,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAE9C,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,UAAU;YACd,KAAK,GAAG,GAAG,CAAC;SACb;YAGK,UAAU;oCADf,UAAU;;;;;;;;oBACX,6KAMC;;;oBANK,uDAAU;;gBACd,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;gBAEzB;oBACE,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,CAAC;;;;QAGH,MAAM,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAE9B,IAAI,CAAC;YACH,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"inject.test.js","sourceRoot":"","sources":["../../src/lib/inject.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACrB,MAAM,YAAY;SAAG;YAGf,UAAU;oCADf,UAAU;;;;8BACc,WAAW;kCAAnB,SAAQ,WAAW;;;;oBAApC,6KAEC;;;oBAFK,uDAAU;;gBACd,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;;;;QAG/B,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAE9C,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,UAAU;YACd,KAAK,GAAG,GAAG,CAAC;SACb;YAGK,UAAU;oCADf,UAAU;;;;;;;;oBACX,6KAMC;;;oBANK,uDAAU;;gBACd,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;gBAEzB;oBACE,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,CAAC;;;;QAGH,MAAM,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAE9B,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAE1B,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,GAAY,CAAC;YAE3B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAC5B,uKAAuK,CACxK,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,UAAU;YACd,KAAK,GAAG,GAAG,CAAC;SACb;YAGK,UAAU;oCADf,UAAU;;;;;;;;oBACX,6KAEC;;;oBAFK,uDAAU;;gBACd,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;;;;QAG3B,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC;YAC1B;gBACE,OAAO,EAAE,UAAU;gBACnB,GAAG,EAAE,KAAM,SAAQ,UAAU;oBAC3B,KAAK,GAAG,KAAK,CAAC;iBACf;aACF;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectable-map.js","sourceRoot":"","sources":["../../src/lib/injectable-map.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IACxB,YAAY,GAAG,IAAI,OAAO,EAAoB,CAAC;IAE/C,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,QAAkB;QACjC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { expect } from '@open-wc/testing';
|
|
2
|
+
import { InjectableMap } from './injectable-map.js';
|
|
3
|
+
import { Injector } from './injector.js';
|
|
4
|
+
describe('InjectableMap', () => {
|
|
5
|
+
it('should add a new weak reference for an injector', () => {
|
|
6
|
+
const map = new InjectableMap();
|
|
7
|
+
const app = {
|
|
8
|
+
key: {},
|
|
9
|
+
injector: new Injector()
|
|
10
|
+
};
|
|
11
|
+
map.set(app.key, app.injector);
|
|
12
|
+
expect(map.get(app.key)).to.equal(app.injector);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=injectable-map.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectable-map.test.js","sourceRoot":"","sources":["../../src/lib/injectable-map.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,GAAG,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG;YACV,GAAG,EAAE,EAAE;YACP,QAAQ,EAAE,IAAI,QAAQ,EAAE;SACzB,CAAC;QAEF,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE/B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { ConstructableToken } from './provider.js';
|
|
2
|
-
import {
|
|
3
|
-
export declare const
|
|
2
|
+
import { InjectableMap } from './injectable-map.js';
|
|
3
|
+
export declare const INJECTABLE_MAP: InjectableMap;
|
|
4
4
|
export declare function injectable<T extends ConstructableToken<any>>(Base: T, _?: unknown): {
|
|
5
5
|
new (..._: any[]): {
|
|
6
6
|
[x: string]: any;
|
|
7
|
-
onInject(): void;
|
|
8
7
|
connectedCallback(): void;
|
|
9
8
|
disconnectedCallback(): void;
|
|
10
9
|
};
|
package/target/lib/injectable.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Injector } from './injector.js';
|
|
2
2
|
import { environment } from './environment.js';
|
|
3
|
-
|
|
3
|
+
import { InjectableMap } from './injectable-map.js';
|
|
4
|
+
export const INJECTABLE_MAP = new InjectableMap();
|
|
4
5
|
export function injectable(Base, _) {
|
|
5
6
|
return class InjectableNode extends Base {
|
|
6
7
|
constructor(..._) {
|
|
7
8
|
super();
|
|
8
9
|
const injector = new Injector(Base.providers);
|
|
9
|
-
|
|
10
|
+
INJECTABLE_MAP.set(this, injector);
|
|
10
11
|
try {
|
|
11
12
|
if (this instanceof HTMLElement) {
|
|
12
13
|
this.addEventListener('finddiroot', (e) => {
|
|
@@ -22,11 +23,6 @@ export function injectable(Base, _) {
|
|
|
22
23
|
}
|
|
23
24
|
catch { }
|
|
24
25
|
}
|
|
25
|
-
onInject() {
|
|
26
|
-
if (super.onInject) {
|
|
27
|
-
super.onInject();
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
26
|
connectedCallback() {
|
|
31
27
|
try {
|
|
32
28
|
if (this instanceof HTMLElement) {
|
|
@@ -39,7 +35,7 @@ export function injectable(Base, _) {
|
|
|
39
35
|
catch { }
|
|
40
36
|
}
|
|
41
37
|
disconnectedCallback() {
|
|
42
|
-
const injector =
|
|
38
|
+
const injector = INJECTABLE_MAP.get(this);
|
|
43
39
|
if (injector) {
|
|
44
40
|
injector.setParent(undefined);
|
|
45
41
|
}
|
|
@@ -53,7 +49,7 @@ function findInjectorRoot(e) {
|
|
|
53
49
|
const path = e.composedPath();
|
|
54
50
|
for (let i = 1; i < path.length; i++) {
|
|
55
51
|
const part = path[i];
|
|
56
|
-
const injector =
|
|
52
|
+
const injector = INJECTABLE_MAP.get(part);
|
|
57
53
|
if (injector) {
|
|
58
54
|
return injector;
|
|
59
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injectable.js","sourceRoot":"","sources":["../../src/lib/injectable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"injectable.js","sourceRoot":"","sources":["../../src/lib/injectable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,aAAa,EAAE,CAAC;AAElD,MAAM,UAAU,UAAU,CAAoC,IAAO,EAAE,CAAW;IAChF,OAAO,MAAM,cAAe,SAAQ,IAAI;QACtC,YAAY,GAAG,CAAQ;YACrB,KAAK,EAAE,CAAC;YAER,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE9C,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAEnC,IAAI,CAAC;gBACH,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;oBAChC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;wBACxC,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;wBAE3C,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;4BAC5B,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;wBACrC,CAAC;6BAAM,CAAC;4BACN,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;wBACpC,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;QAED,iBAAiB;YACf,IAAI,CAAC;gBACH,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;oBAChC,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;oBAE5C,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;wBAC5B,KAAK,CAAC,iBAAiB,EAAE,CAAC;oBAC5B,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;QAED,oBAAoB;YAClB,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAE1C,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAChC,CAAC;YAED,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;gBAC/B,KAAK,CAAC,oBAAoB,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAQ;IAChC,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;IAI9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAErB,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE1C,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injectable.test.js","sourceRoot":"","sources":["../../src/lib/injectable.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,GAAG;SAAG;QACZ,MAAM,GAAG;SAAG;YAGN,SAAS;oCADd,UAAU;;;;8BACa,WAAW;iCAAnB,SAAQ,WAAW;;;;oBAAnC,6KAGC;;;oBAHK,uDAAS;;gBACb,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAClB,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;;;;QAGpB,cAAc,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAEjD,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAc,CAAC;QAE/D,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,GAAG;SAAG;QAEZ,MAAM,GAAI,SAAQ,GAAG;SAAG;QAExB,MAAM,SAAS,GAAG,UAAU,CAC1B;YACE,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAEhD,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;SACnB,CACF,CAAC;QAEF,MAAM,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;QAE3B,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC;SAAG;YAGJ,CAAC;oCADN,UAAU;;;;;;;;oBACX,6KAMC;;;oBANK,uDAAC;;gBACL,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBAEd,QAAQ;oBACN,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACvC,CAAC;;;;QAGH,IAAI,QAAQ,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"injectable.test.js","sourceRoot":"","sources":["../../src/lib/injectable.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,GAAG;SAAG;QACZ,MAAM,GAAG;SAAG;YAGN,SAAS;oCADd,UAAU;;;;8BACa,WAAW;iCAAnB,SAAQ,WAAW;;;;oBAAnC,6KAGC;;;oBAHK,uDAAS;;gBACb,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAClB,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;;;;QAGpB,cAAc,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAEjD,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAc,CAAC;QAE/D,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,GAAG;SAAG;QAEZ,MAAM,GAAI,SAAQ,GAAG;SAAG;QAExB,MAAM,SAAS,GAAG,UAAU,CAC1B;YACE,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAEhD,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;SACnB,CACF,CAAC;QAEF,MAAM,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;QAE3B,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC;SAAG;YAGJ,CAAC;oCADN,UAAU;;;;;;;;oBACX,6KAMC;;;oBANK,uDAAC;;gBACL,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBAEd,QAAQ;oBACN,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACvC,CAAC;;;;QAGH,IAAI,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YAE7C,CAAC;oCADN,UAAU;;;;;;;;oBACX,6KAAU;;;oBAAJ,uDAAC;;;;;QAEP,MAAM,CAAC,GAAG,UAAU,CAClB;YACE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;SACf,CACF,CAAC;QAEF,MAAM,IAAI;SAAgB;YAGpB,MAAM;oCADX,UAAU;;;;8BACU,WAAW;8BAAnB,SAAQ,WAAW;;;;oBAAhC,6KAKC;;;;gBAJC,MAAM,CAAC,SAAS,GAAG;oBACjB,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;oBACtB,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE;iBAC1B,CAAC;;oBAJE,uDAAM;;;;;YAQN,KAAK;oCADV,UAAU;;;;8BACS,WAAW;6BAAnB,SAAQ,WAAW;;;;oBAA/B,6KAEC;;;oBAFK,uDAAK;;gBACT,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;;;QAGhB,cAAc,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QACrD,cAAc,CAAC,MAAM,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAEnD,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAA;;;;KAI5B,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,EAAE,CAAC,aAAa,CAAQ,oBAAoB,CAAE,CAAC;QAE7D,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,CAAC;SAAG;QACV,MAAM,IAAI;SAAgB;YAGpB,IAAI;oCADT,UAAU;;;;8BACQ,WAAW;4BAAnB,SAAQ,WAAW;;;;oBAA9B,6KAEC;;;;gBADC,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;;oBADxC,uDAAI;;;;;YAKJ,IAAI;oCADT,UAAU;;;;8BACQ,WAAW;4BAAnB,SAAQ,WAAW;;;;oBAA9B,6KAEC;;;;gBADC,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;;oBAD3C,uDAAI;;;;;YAKJ,KAAK;oCADV,UAAU;;;;8BACS,WAAW;6BAAnB,SAAQ,WAAW;;;;oBAA/B,6KAEC;;;oBAFK,uDAAK;;gBACT,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;;;QAGhB,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrC,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAE1C,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAA;;;;;;;;KAQ5B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAE,CAAC;QAExC,IAAI,KAAK,GAAG,EAAE,CAAC,aAAa,CAAQ,WAAW,CAAE,CAAC;QAElD,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAEtC,KAAK,CAAC,MAAM,EAAE,CAAC;QAEf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnB,KAAK,GAAG,EAAE,CAAC,aAAa,CAAQ,WAAW,CAAE,CAAC;QAE9C,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/target/lib/injector.d.ts
CHANGED
|
@@ -4,7 +4,9 @@ export declare class Injector {
|
|
|
4
4
|
parent: Injector | undefined;
|
|
5
5
|
providers: Provider<unknown>[];
|
|
6
6
|
constructor(providers?: Provider<unknown>[], parent?: Injector);
|
|
7
|
+
inject<T>(token: InjectionToken<T>): T;
|
|
7
8
|
get<T>(token: InjectionToken<T>): T;
|
|
8
9
|
setParent(parent: Injector | undefined): void;
|
|
9
10
|
clear(): void;
|
|
10
11
|
}
|
|
12
|
+
export declare function injector(providers?: Provider<unknown>[], parent?: Injector): Injector;
|
package/target/lib/injector.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { INJECTABLE_MAP } from './injectable.js';
|
|
2
2
|
import { StaticToken } from './provider.js';
|
|
3
3
|
export class Injector {
|
|
4
4
|
#instances = new WeakMap();
|
|
@@ -8,6 +8,9 @@ export class Injector {
|
|
|
8
8
|
this.parent = parent;
|
|
9
9
|
this.providers = providers;
|
|
10
10
|
}
|
|
11
|
+
inject(token) {
|
|
12
|
+
return this.get(token);
|
|
13
|
+
}
|
|
11
14
|
get(token) {
|
|
12
15
|
if (this.#instances.has(token)) {
|
|
13
16
|
return this.#instances.get(token);
|
|
@@ -27,7 +30,7 @@ export class Injector {
|
|
|
27
30
|
}
|
|
28
31
|
}
|
|
29
32
|
if (this.parent) {
|
|
30
|
-
return this.parent.
|
|
33
|
+
return this.parent.inject(token);
|
|
31
34
|
}
|
|
32
35
|
if (token instanceof StaticToken) {
|
|
33
36
|
if (!token.factory) {
|
|
@@ -47,7 +50,7 @@ export class Injector {
|
|
|
47
50
|
const instance = factory(this);
|
|
48
51
|
this.#instances.set(token, instance);
|
|
49
52
|
if (typeof instance === 'object' && instance !== null) {
|
|
50
|
-
const injector =
|
|
53
|
+
const injector = INJECTABLE_MAP.get(instance);
|
|
51
54
|
if (injector) {
|
|
52
55
|
injector.setParent(this);
|
|
53
56
|
if ('onInject' in instance && typeof instance.onInject === 'function') {
|
|
@@ -69,4 +72,7 @@ export class Injector {
|
|
|
69
72
|
return undefined;
|
|
70
73
|
}
|
|
71
74
|
}
|
|
75
|
+
export function injector(providers = [], parent) {
|
|
76
|
+
return new Injector(providers, parent);
|
|
77
|
+
}
|
|
72
78
|
//# sourceMappingURL=injector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injector.js","sourceRoot":"","sources":["../../src/lib/injector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"injector.js","sourceRoot":"","sources":["../../src/lib/injector.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,8 +9,8 @@ describe('Injector', () => {
|
|
|
9
9
|
class A {
|
|
10
10
|
}
|
|
11
11
|
const app = new Injector();
|
|
12
|
-
expect(app.
|
|
13
|
-
expect(app.
|
|
12
|
+
expect(app.inject(A)).to.be.instanceOf(A);
|
|
13
|
+
expect(app.inject(A)).to.equal(app.inject(A));
|
|
14
14
|
});
|
|
15
15
|
it('should inject providers in the correct order', () => {
|
|
16
16
|
class A {
|
|
@@ -37,7 +37,7 @@ describe('Injector', () => {
|
|
|
37
37
|
return MyService = _classThis;
|
|
38
38
|
})();
|
|
39
39
|
const app = new Injector();
|
|
40
|
-
const instance = app.
|
|
40
|
+
const instance = app.inject(MyService);
|
|
41
41
|
expect(instance.a()).to.be.instanceOf(A);
|
|
42
42
|
expect(instance.b()).to.be.instanceOf(B);
|
|
43
43
|
});
|
|
@@ -117,7 +117,7 @@ describe('Injector', () => {
|
|
|
117
117
|
return E = _classThis;
|
|
118
118
|
})();
|
|
119
119
|
const app = new Injector();
|
|
120
|
-
const instance = app.
|
|
120
|
+
const instance = app.inject(E);
|
|
121
121
|
expect(instance.d().c().b().a()).to.be.instanceOf(A);
|
|
122
122
|
});
|
|
123
123
|
it('should override a provider if explicitly instructed', () => {
|
|
@@ -144,14 +144,14 @@ describe('Injector', () => {
|
|
|
144
144
|
class AltA extends A {
|
|
145
145
|
}
|
|
146
146
|
const app = new Injector([{ provide: A, use: AltA }]);
|
|
147
|
-
expect(app.
|
|
147
|
+
expect(app.inject(B).a()).to.be.instanceOf(AltA);
|
|
148
148
|
});
|
|
149
149
|
it('should return an existing instance from a parent injector', () => {
|
|
150
150
|
class A {
|
|
151
151
|
}
|
|
152
152
|
const parent = new Injector();
|
|
153
153
|
const app = new Injector([], parent);
|
|
154
|
-
expect(parent.
|
|
154
|
+
expect(parent.inject(A)).to.equal(app.inject(A));
|
|
155
155
|
});
|
|
156
156
|
it('should use a factory if provided', () => {
|
|
157
157
|
class Service {
|
|
@@ -171,7 +171,7 @@ describe('Injector', () => {
|
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
173
|
]);
|
|
174
|
-
expect(injector.
|
|
174
|
+
expect(injector.inject(Service).hello()).to.equal('you');
|
|
175
175
|
});
|
|
176
176
|
it('should throw an error if provider is missing both factory and use', () => {
|
|
177
177
|
class Service {
|
|
@@ -184,7 +184,7 @@ describe('Injector', () => {
|
|
|
184
184
|
provide: Service
|
|
185
185
|
}
|
|
186
186
|
]);
|
|
187
|
-
expect(() => injector.
|
|
187
|
+
expect(() => injector.inject(Service)).to.throw("Provider for Service found but is missing either 'use' or 'factory'");
|
|
188
188
|
});
|
|
189
189
|
it('should pass factories and instance of the injector', (done) => {
|
|
190
190
|
class Service {
|
|
@@ -201,18 +201,18 @@ describe('Injector', () => {
|
|
|
201
201
|
}
|
|
202
202
|
}
|
|
203
203
|
]);
|
|
204
|
-
injector.
|
|
204
|
+
injector.inject(Service);
|
|
205
205
|
});
|
|
206
206
|
it('should create an instance from a StaticToken factory', () => {
|
|
207
207
|
const token = new StaticToken('test', () => 'Hello World');
|
|
208
208
|
const injector = new Injector();
|
|
209
|
-
const res = injector.
|
|
209
|
+
const res = injector.inject(token);
|
|
210
210
|
expect(res).to.equal('Hello World');
|
|
211
211
|
});
|
|
212
212
|
it('should create an instance from an async StaticToken factory', async () => {
|
|
213
213
|
const token = new StaticToken('test', () => Promise.resolve('Hello World'));
|
|
214
214
|
const injector = new Injector();
|
|
215
|
-
const res = await injector.
|
|
215
|
+
const res = await injector.inject(token);
|
|
216
216
|
expect(res).to.equal('Hello World');
|
|
217
217
|
});
|
|
218
218
|
it('should allow static token to be overridden', () => {
|
|
@@ -224,7 +224,7 @@ describe('Injector', () => {
|
|
|
224
224
|
}
|
|
225
225
|
};
|
|
226
226
|
const injector = new Injector([provider]);
|
|
227
|
-
const res = injector.
|
|
227
|
+
const res = injector.inject(token);
|
|
228
228
|
expect(res).to.equal('Hello World');
|
|
229
229
|
});
|
|
230
230
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injector.test.js","sourceRoot":"","sources":["../../src/lib/injector.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAY,WAAW,EAAE,MAAM,eAAe,CAAC;AAEtD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC;SAAG;QAEV,MAAM,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC;QAE3B,MAAM,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"injector.test.js","sourceRoot":"","sources":["../../src/lib/injector.test.ts"],"names":[],"mappings":"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"}
|
package/target/lib.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { Injector } from './lib/injector.js';
|
|
2
2
|
export { Provider, ConstructableToken, StaticToken } from './lib/provider.js';
|
|
3
|
-
export { injectable } from './lib/injectable.js';
|
|
3
|
+
export { injectable, INJECTABLE_MAP } from './lib/injectable.js';
|
|
4
4
|
export { inject, Injected } from './lib/inject.js';
|
|
5
5
|
export { defineEnvironment, clearEnvironment } from './lib/environment.js';
|
package/target/lib.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { Injector } from './lib/injector.js';
|
|
2
2
|
export { StaticToken } from './lib/provider.js';
|
|
3
|
-
export { injectable } from './lib/injectable.js';
|
|
3
|
+
export { injectable, INJECTABLE_MAP } from './lib/injectable.js';
|
|
4
4
|
export { inject } from './lib/inject.js';
|
|
5
5
|
export { defineEnvironment, clearEnvironment } from './lib/environment.js';
|
|
6
6
|
//# sourceMappingURL=lib.js.map
|
package/target/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAgC,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAgC,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAY,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
|