@avijs/di 1.0.0-rc.4 → 1.0.0-rc.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/dist/inject.d.ts +2 -2
- package/dist/inject.d.ts.map +1 -1
- package/dist/inject.js +6 -6
- package/dist/inject.js.map +1 -1
- package/dist/provider.js +3 -2
- package/dist/provider.js.map +1 -1
- package/package.json +1 -1
- package/src/inject.ts +6 -11
- package/src/provider.ts +3 -2
package/dist/inject.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ type Entries = readonly (readonly [Class, readonly Token[]])[];
|
|
|
8
8
|
export declare function registerInjects(entries: Entries | (() => Entries)): void;
|
|
9
9
|
/** Applies lists registered as functions. Avi.js calls it before it reads `static inject`. */
|
|
10
10
|
export declare function resolveInjects(): void;
|
|
11
|
-
/** Why a class cannot be built: it has no dependency list
|
|
12
|
-
export declare function injectListError(name: string, needed: number,
|
|
11
|
+
/** Why a class cannot be built: its constructor takes arguments and it has no dependency list. */
|
|
12
|
+
export declare function injectListError(name: string, needed: number, where?: string): TypeError;
|
|
13
13
|
export {};
|
|
14
14
|
//# sourceMappingURL=inject.d.ts.map
|
package/dist/inject.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,KAAK,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAE7D,KAAK,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;AAM/D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,IAAI,CAGxE;AAED,8FAA8F;AAC9F,wBAAgB,cAAc,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,KAAK,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAE7D,KAAK,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;AAM/D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,IAAI,CAGxE;AAED,8FAA8F;AAC9F,wBAAgB,cAAc,IAAI,IAAI,CAiBrC;AAmBD,kGAAkG;AAClG,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAMvF"}
|
package/dist/inject.js
CHANGED
|
@@ -16,17 +16,19 @@ export function registerInjects(entries) {
|
|
|
16
16
|
/** Applies lists registered as functions. Avi.js calls it before it reads `static inject`. */
|
|
17
17
|
export function resolveInjects() {
|
|
18
18
|
while (pending.length > 0) {
|
|
19
|
-
const next = pending
|
|
19
|
+
const next = pending[0];
|
|
20
20
|
let entries;
|
|
21
21
|
try {
|
|
22
22
|
entries = next();
|
|
23
23
|
}
|
|
24
24
|
catch (error) {
|
|
25
|
+
// It stays queued, so the next app that starts reports the same reason.
|
|
25
26
|
if (!(error instanceof ReferenceError))
|
|
26
27
|
throw error;
|
|
27
28
|
throw new TypeError(`inject.gen.ts lists a class that is not created yet (${error.message}): declare it before the app starts`, { cause: error });
|
|
28
29
|
}
|
|
29
30
|
apply(entries);
|
|
31
|
+
pending.shift();
|
|
30
32
|
}
|
|
31
33
|
}
|
|
32
34
|
function apply(entries) {
|
|
@@ -44,12 +46,10 @@ function apply(entries) {
|
|
|
44
46
|
Object.defineProperty(cls, 'inject', { value: Object.freeze([...tokens]), configurable: true });
|
|
45
47
|
}
|
|
46
48
|
}
|
|
47
|
-
/** Why a class cannot be built: it has no dependency list
|
|
48
|
-
export function injectListError(name, needed,
|
|
49
|
+
/** Why a class cannot be built: its constructor takes arguments and it has no dependency list. */
|
|
50
|
+
export function injectListError(name, needed, where) {
|
|
49
51
|
const args = `${String(needed)} constructor argument${needed === 1 ? '' : 's'}`;
|
|
50
52
|
const at = where ? ` (at ${where})` : '';
|
|
51
|
-
return new TypeError(list
|
|
52
|
-
? `${name} has no dependency list for its ${args}${at}: import inject.gen.ts before the app starts, as app.module.ts does, or add static inject. avi dev reports AVI201 when it cannot infer a list`
|
|
53
|
-
: `${name} takes ${args} but static inject lists ${String(list.length)}${at}`);
|
|
53
|
+
return new TypeError(`${name} has no dependency list for its ${args}${at}: add import './inject.gen.js' before the app starts, as app.module.ts does, or add static inject. avi dev reports AVI201 when it cannot infer a list`);
|
|
54
54
|
}
|
|
55
55
|
//# sourceMappingURL=inject.js.map
|
package/dist/inject.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA0B,MAAM,YAAY,CAAC;AAI7D,gGAAgG;AAChG,8EAA8E;AAC9E,MAAM,OAAO,GAAsB,EAAE,CAAC;AAEtC;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,OAAkC;IAChE,IAAI,OAAO,OAAO,KAAK,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;QACpD,KAAK,CAAC,OAAO,CAAC,CAAC;AACtB,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA0B,MAAM,YAAY,CAAC;AAI7D,gGAAgG;AAChG,8EAA8E;AAC9E,MAAM,OAAO,GAAsB,EAAE,CAAC;AAEtC;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,OAAkC;IAChE,IAAI,OAAO,OAAO,KAAK,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;QACpD,KAAK,CAAC,OAAO,CAAC,CAAC;AACtB,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAkB,CAAC;QACzC,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,EAAE,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wEAAwE;YACxE,IAAI,CAAC,CAAC,KAAK,YAAY,cAAc,CAAC;gBAAE,MAAM,KAAK,CAAC;YACpD,MAAM,IAAI,SAAS,CACjB,wDAAwD,KAAK,CAAC,OAAO,qCAAqC,EAC1G,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,OAAgB;IAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACpC,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9B,MAAM,IAAI,SAAS,CAAC,iEAAiE,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,MAAM,IAAI,SAAS,CACjB,+BAA+B,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,+CAA+C,CACvG,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC;YAAE,SAAS;QAC3C,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IAClG,CAAC;AACH,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,MAAc,EAAE,KAAc;IAC1E,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,wBAAwB,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAChF,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,OAAO,IAAI,SAAS,CAClB,GAAG,IAAI,mCAAmC,IAAI,GAAG,EAAE,uJAAuJ,CAC3M,CAAC;AACJ,CAAC"}
|
package/dist/provider.js
CHANGED
|
@@ -68,8 +68,9 @@ export function normalizeProvider(provider, where) {
|
|
|
68
68
|
}
|
|
69
69
|
function classSpec(token, cls, scope, where) {
|
|
70
70
|
const deps = checkInject(cls.inject, `${where} ${cls.name}.inject`);
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
// A shorter list is fine: the parameters left out may be optional, which only types can tell.
|
|
72
|
+
if (cls.inject === undefined && cls.length > 0) {
|
|
73
|
+
throw injectListError(cls.name || 'Class', cls.length, where);
|
|
73
74
|
}
|
|
74
75
|
const Ctor = cls;
|
|
75
76
|
return {
|
package/dist/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/inject.ts
CHANGED
|
@@ -19,11 +19,12 @@ export function registerInjects(entries: Entries | (() => Entries)): void {
|
|
|
19
19
|
/** Applies lists registered as functions. Avi.js calls it before it reads `static inject`. */
|
|
20
20
|
export function resolveInjects(): void {
|
|
21
21
|
while (pending.length > 0) {
|
|
22
|
-
const next = pending
|
|
22
|
+
const next = pending[0] as () => Entries;
|
|
23
23
|
let entries: Entries;
|
|
24
24
|
try {
|
|
25
25
|
entries = next();
|
|
26
26
|
} catch (error) {
|
|
27
|
+
// It stays queued, so the next app that starts reports the same reason.
|
|
27
28
|
if (!(error instanceof ReferenceError)) throw error;
|
|
28
29
|
throw new TypeError(
|
|
29
30
|
`inject.gen.ts lists a class that is not created yet (${error.message}): declare it before the app starts`,
|
|
@@ -31,6 +32,7 @@ export function resolveInjects(): void {
|
|
|
31
32
|
);
|
|
32
33
|
}
|
|
33
34
|
apply(entries);
|
|
35
|
+
pending.shift();
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
38
|
|
|
@@ -51,18 +53,11 @@ function apply(entries: Entries): void {
|
|
|
51
53
|
}
|
|
52
54
|
}
|
|
53
55
|
|
|
54
|
-
/** Why a class cannot be built: it has no dependency list
|
|
55
|
-
export function injectListError(
|
|
56
|
-
name: string,
|
|
57
|
-
needed: number,
|
|
58
|
-
list: readonly unknown[] | undefined,
|
|
59
|
-
where?: string,
|
|
60
|
-
): TypeError {
|
|
56
|
+
/** Why a class cannot be built: its constructor takes arguments and it has no dependency list. */
|
|
57
|
+
export function injectListError(name: string, needed: number, where?: string): TypeError {
|
|
61
58
|
const args = `${String(needed)} constructor argument${needed === 1 ? '' : 's'}`;
|
|
62
59
|
const at = where ? ` (at ${where})` : '';
|
|
63
60
|
return new TypeError(
|
|
64
|
-
list
|
|
65
|
-
? `${name} has no dependency list for its ${args}${at}: import inject.gen.ts before the app starts, as app.module.ts does, or add static inject. avi dev reports AVI201 when it cannot infer a list`
|
|
66
|
-
: `${name} takes ${args} but static inject lists ${String(list.length)}${at}`,
|
|
61
|
+
`${name} has no dependency list for its ${args}${at}: add import './inject.gen.js' before the app starts, as app.module.ts does, or add static inject. avi dev reports AVI201 when it cannot infer a list`,
|
|
67
62
|
);
|
|
68
63
|
}
|
package/src/provider.ts
CHANGED
|
@@ -137,8 +137,9 @@ export function normalizeProvider(provider: unknown, where: string): ProviderSpe
|
|
|
137
137
|
|
|
138
138
|
function classSpec(token: Token, cls: Constructor, scope: Scope, where: string): ProviderSpec {
|
|
139
139
|
const deps = checkInject(cls.inject, `${where} ${cls.name}.inject`);
|
|
140
|
-
|
|
141
|
-
|
|
140
|
+
// A shorter list is fine: the parameters left out may be optional, which only types can tell.
|
|
141
|
+
if (cls.inject === undefined && cls.length > 0) {
|
|
142
|
+
throw injectListError(cls.name || 'Class', cls.length, where);
|
|
142
143
|
}
|
|
143
144
|
const Ctor = cls as unknown as new (...args: unknown[]) => unknown;
|
|
144
145
|
return {
|