@joist/di 3.5.0 → 3.7.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 +5 -4
- package/package.json +1 -1
- package/src/lib/injector.test.ts +8 -8
- package/src/lib/provider.ts +4 -0
- package/src/lib.ts +1 -1
- package/target/lib/injector.test.js +8 -8
- package/target/lib/injector.test.js.map +1 -1
- package/target/lib/provider.d.ts +1 -0
- package/target/lib/provider.js +3 -0
- 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/README.md
CHANGED
|
@@ -103,6 +103,7 @@ const app = new Injector([
|
|
|
103
103
|
}
|
|
104
104
|
]);
|
|
105
105
|
```
|
|
106
|
+
|
|
106
107
|
### Accessing the injector
|
|
107
108
|
|
|
108
109
|
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.
|
|
@@ -110,7 +111,7 @@ Factories provide more flexibility but often times cannot use the `inject()` fun
|
|
|
110
111
|
```ts
|
|
111
112
|
class Logger {
|
|
112
113
|
log(args: any[]): void {
|
|
113
|
-
console.log(...args)
|
|
114
|
+
console.log(...args);
|
|
114
115
|
}
|
|
115
116
|
}
|
|
116
117
|
|
|
@@ -138,7 +139,7 @@ In most cases a token is any constructable class. There are cases where you migh
|
|
|
138
139
|
|
|
139
140
|
```ts
|
|
140
141
|
// token that resolves to a string
|
|
141
|
-
const URL_TOKEN =
|
|
142
|
+
const URL_TOKEN = token<string>('app_url');
|
|
142
143
|
|
|
143
144
|
const app = new Injector([
|
|
144
145
|
{
|
|
@@ -153,7 +154,7 @@ const app = new Injector([
|
|
|
153
154
|
A static token can be provided a default factory function to use on creation.
|
|
154
155
|
|
|
155
156
|
```ts
|
|
156
|
-
const URL_TOKEN =
|
|
157
|
+
const URL_TOKEN = token('app_url', () => '/default-url/');
|
|
157
158
|
```
|
|
158
159
|
|
|
159
160
|
### Async values
|
|
@@ -162,7 +163,7 @@ Static tokens can also leverage promises for cases when you need to async create
|
|
|
162
163
|
|
|
163
164
|
```ts
|
|
164
165
|
// StaticToken<Promise<string>>
|
|
165
|
-
const URL_TOKEN =
|
|
166
|
+
const URL_TOKEN = token('app_url', () => Promise.resolve('/default-url/'));
|
|
166
167
|
|
|
167
168
|
const app = new Injector();
|
|
168
169
|
|
package/package.json
CHANGED
package/src/lib/injector.test.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { expect } from '@open-wc/testing';
|
|
|
3
3
|
import { Injector } from './injector.js';
|
|
4
4
|
import { inject } from './inject.js';
|
|
5
5
|
import { injectable } from './injectable.js';
|
|
6
|
-
import { Provider,
|
|
6
|
+
import { Provider, token } from './provider.js';
|
|
7
7
|
|
|
8
8
|
describe('Injector', () => {
|
|
9
9
|
it('should create a new instance of a single provider', () => {
|
|
@@ -148,28 +148,28 @@ describe('Injector', () => {
|
|
|
148
148
|
});
|
|
149
149
|
|
|
150
150
|
it('should create an instance from a StaticToken factory', () => {
|
|
151
|
-
const
|
|
151
|
+
const TOKEN = token('test', () => 'Hello World');
|
|
152
152
|
const injector = new Injector();
|
|
153
153
|
|
|
154
|
-
const res = injector.inject(
|
|
154
|
+
const res = injector.inject(TOKEN);
|
|
155
155
|
|
|
156
156
|
expect(res).to.equal('Hello World');
|
|
157
157
|
});
|
|
158
158
|
|
|
159
159
|
it('should create an instance from an async StaticToken factory', async () => {
|
|
160
|
-
const
|
|
160
|
+
const TOKEN = token('test', () => Promise.resolve('Hello World'));
|
|
161
161
|
const injector = new Injector();
|
|
162
162
|
|
|
163
|
-
const res = await injector.inject(
|
|
163
|
+
const res = await injector.inject(TOKEN);
|
|
164
164
|
|
|
165
165
|
expect(res).to.equal('Hello World');
|
|
166
166
|
});
|
|
167
167
|
|
|
168
168
|
it('should allow static token to be overridden', () => {
|
|
169
|
-
const
|
|
169
|
+
const TOKEN = token<string>('test');
|
|
170
170
|
|
|
171
171
|
const provider: Provider<string> = {
|
|
172
|
-
provide:
|
|
172
|
+
provide: TOKEN,
|
|
173
173
|
factory() {
|
|
174
174
|
return 'Hello World';
|
|
175
175
|
}
|
|
@@ -177,7 +177,7 @@ describe('Injector', () => {
|
|
|
177
177
|
|
|
178
178
|
const injector = new Injector([provider]);
|
|
179
179
|
|
|
180
|
-
const res = injector.inject(
|
|
180
|
+
const res = injector.inject(TOKEN);
|
|
181
181
|
|
|
182
182
|
expect(res).to.equal('Hello World');
|
|
183
183
|
});
|
package/src/lib/provider.ts
CHANGED
package/src/lib.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { Injector } from './lib/injector.js';
|
|
2
|
-
export { Provider, ConstructableToken, StaticToken } from './lib/provider.js';
|
|
2
|
+
export { Provider, ConstructableToken, StaticToken, token } from './lib/provider.js';
|
|
3
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';
|
|
@@ -3,7 +3,7 @@ import { expect } from '@open-wc/testing';
|
|
|
3
3
|
import { Injector } from './injector.js';
|
|
4
4
|
import { inject } from './inject.js';
|
|
5
5
|
import { injectable } from './injectable.js';
|
|
6
|
-
import {
|
|
6
|
+
import { token } from './provider.js';
|
|
7
7
|
describe('Injector', () => {
|
|
8
8
|
it('should create a new instance of a single provider', () => {
|
|
9
9
|
class A {
|
|
@@ -204,27 +204,27 @@ describe('Injector', () => {
|
|
|
204
204
|
injector.inject(Service);
|
|
205
205
|
});
|
|
206
206
|
it('should create an instance from a StaticToken factory', () => {
|
|
207
|
-
const
|
|
207
|
+
const TOKEN = token('test', () => 'Hello World');
|
|
208
208
|
const injector = new Injector();
|
|
209
|
-
const res = injector.inject(
|
|
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
|
-
const
|
|
213
|
+
const TOKEN = token('test', () => Promise.resolve('Hello World'));
|
|
214
214
|
const injector = new Injector();
|
|
215
|
-
const res = await injector.inject(
|
|
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', () => {
|
|
219
|
-
const
|
|
219
|
+
const TOKEN = token('test');
|
|
220
220
|
const provider = {
|
|
221
|
-
provide:
|
|
221
|
+
provide: TOKEN,
|
|
222
222
|
factory() {
|
|
223
223
|
return 'Hello World';
|
|
224
224
|
}
|
|
225
225
|
};
|
|
226
226
|
const injector = new Injector([provider]);
|
|
227
|
-
const res = injector.inject(
|
|
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,
|
|
1
|
+
{"version":3,"file":"injector.test.js","sourceRoot":"","sources":["../../src/lib/injector.test.ts"],"names":[],"mappings":"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"}
|
package/target/lib/provider.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export declare class StaticToken<T> {
|
|
|
4
4
|
factory: (() => T) | undefined;
|
|
5
5
|
constructor(name: string, factory?: () => T);
|
|
6
6
|
}
|
|
7
|
+
export declare function token<T>(name: string, factory?: () => T): StaticToken<T>;
|
|
7
8
|
export interface ConstructableToken<T> {
|
|
8
9
|
providers?: Provider<any>[];
|
|
9
10
|
new (...args: any[]): T;
|
package/target/lib/provider.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/lib/provider.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAW;IACtB,IAAI,CAAC;IACL,OAAO,CAAC;IAER,YAAY,IAAY,EAAE,OAAiB;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/lib/provider.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAW;IACtB,IAAI,CAAC;IACL,OAAO,CAAC;IAER,YAAY,IAAY,EAAE,OAAiB;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,MAAM,UAAU,KAAK,CAAI,IAAY,EAAE,OAAiB;IACtD,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC"}
|
package/target/lib.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { Injector } from './lib/injector.js';
|
|
2
|
-
export { Provider, ConstructableToken, StaticToken } from './lib/provider.js';
|
|
2
|
+
export { Provider, ConstructableToken, StaticToken, token } from './lib/provider.js';
|
|
3
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,5 +1,5 @@
|
|
|
1
1
|
export { Injector } from './lib/injector.js';
|
|
2
|
-
export { StaticToken } from './lib/provider.js';
|
|
2
|
+
export { StaticToken, token } from './lib/provider.js';
|
|
3
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';
|
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;
|
|
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,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACrF,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"}
|