@fluojs/di 1.0.0-beta.2 → 1.0.0-beta.3
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/container.d.ts +3 -0
- package/dist/container.d.ts.map +1 -1
- package/dist/container.js +24 -2
- package/package.json +2 -2
package/dist/container.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export declare class Container {
|
|
|
15
15
|
private readonly staleDisposalTasks;
|
|
16
16
|
private readonly staleDisposalErrors;
|
|
17
17
|
private readonly singletonCache;
|
|
18
|
+
private readonly forwardRefTokenCache;
|
|
18
19
|
private readonly childScopes;
|
|
19
20
|
private disposePromise;
|
|
20
21
|
private disposed;
|
|
@@ -94,6 +95,7 @@ export declare class Container {
|
|
|
94
95
|
private resolveMultiProviderInstance;
|
|
95
96
|
private resolveExistingProviderTarget;
|
|
96
97
|
private resolveScopedOrSingletonInstance;
|
|
98
|
+
private getCachedScopedOrSingletonInstance;
|
|
97
99
|
private shouldResolveFromRoot;
|
|
98
100
|
private shouldResolveMultiProviderFromRoot;
|
|
99
101
|
private resolveDepToken;
|
|
@@ -127,6 +129,7 @@ export declare class Container {
|
|
|
127
129
|
private assertSingletonDependencyScopes;
|
|
128
130
|
private resolveEffectiveProvider;
|
|
129
131
|
private resolveProviderDependencyToken;
|
|
132
|
+
private resolveForwardRefToken;
|
|
130
133
|
private resolveProviderDeps;
|
|
131
134
|
private invalidateCachedEntry;
|
|
132
135
|
}
|
package/dist/container.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,KAAK,KAAK,EAAE,MAAM,cAAc,CAAC;AAW3E,OAAO,KAAK,EASV,QAAQ,EAET,MAAM,YAAY,CAAC;AAuIpB;;GAEG;AACH,qBAAa,SAAS;
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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"}
|
package/dist/container.js
CHANGED
|
@@ -125,6 +125,7 @@ export class Container {
|
|
|
125
125
|
staleDisposalTasks = new Set();
|
|
126
126
|
staleDisposalErrors = [];
|
|
127
127
|
singletonCache;
|
|
128
|
+
forwardRefTokenCache = new WeakMap();
|
|
128
129
|
childScopes = new Set();
|
|
129
130
|
disposePromise;
|
|
130
131
|
disposed = false;
|
|
@@ -362,6 +363,10 @@ export class Container {
|
|
|
362
363
|
if (provider.scope === 'transient') {
|
|
363
364
|
return await this.withTokenInChain(token, chain, activeTokens, async (c, at) => this.instantiate(provider, c, at));
|
|
364
365
|
}
|
|
366
|
+
const cachedInstance = this.getCachedScopedOrSingletonInstance(provider);
|
|
367
|
+
if (cachedInstance) {
|
|
368
|
+
return await cachedInstance;
|
|
369
|
+
}
|
|
365
370
|
return await this.withTokenInChain(token, chain, activeTokens, async (c, at) => this.resolveScopedOrSingletonInstance(provider, c, at));
|
|
366
371
|
}
|
|
367
372
|
requireProvider(token) {
|
|
@@ -431,6 +436,15 @@ export class Container {
|
|
|
431
436
|
}
|
|
432
437
|
return cache.get(provider.provide);
|
|
433
438
|
}
|
|
439
|
+
getCachedScopedOrSingletonInstance(provider) {
|
|
440
|
+
if (provider.scope !== Scope.DEFAULT) {
|
|
441
|
+
return undefined;
|
|
442
|
+
}
|
|
443
|
+
if (this.shouldResolveFromRoot(provider)) {
|
|
444
|
+
return this.root().getCachedScopedOrSingletonInstance(provider);
|
|
445
|
+
}
|
|
446
|
+
return this.cacheFor(provider).get(provider.provide);
|
|
447
|
+
}
|
|
434
448
|
shouldResolveFromRoot(provider) {
|
|
435
449
|
return provider.scope === Scope.DEFAULT && this.requestScopeEnabled && !this.registrations.has(provider.provide);
|
|
436
450
|
}
|
|
@@ -446,7 +460,7 @@ export class Container {
|
|
|
446
460
|
return this.resolveWithChain(innerToken, chain, activeTokens);
|
|
447
461
|
}
|
|
448
462
|
if (isForwardRef(depEntry)) {
|
|
449
|
-
const resolvedToken =
|
|
463
|
+
const resolvedToken = this.resolveForwardRefToken(depEntry);
|
|
450
464
|
return this.resolveWithChain(resolvedToken, chain, activeTokens, /* allowForwardRef */true);
|
|
451
465
|
}
|
|
452
466
|
return this.resolveWithChain(depEntry, chain, activeTokens);
|
|
@@ -679,13 +693,21 @@ export class Container {
|
|
|
679
693
|
}
|
|
680
694
|
resolveProviderDependencyToken(depEntry) {
|
|
681
695
|
if (isForwardRef(depEntry)) {
|
|
682
|
-
return
|
|
696
|
+
return this.resolveForwardRefToken(depEntry);
|
|
683
697
|
}
|
|
684
698
|
if (isOptionalToken(depEntry)) {
|
|
685
699
|
return depEntry.token;
|
|
686
700
|
}
|
|
687
701
|
return depEntry;
|
|
688
702
|
}
|
|
703
|
+
resolveForwardRefToken(forwardRefEntry) {
|
|
704
|
+
if (this.forwardRefTokenCache.has(forwardRefEntry)) {
|
|
705
|
+
return this.forwardRefTokenCache.get(forwardRefEntry);
|
|
706
|
+
}
|
|
707
|
+
const resolvedToken = forwardRefEntry.forwardRef();
|
|
708
|
+
this.forwardRefTokenCache.set(forwardRefEntry, resolvedToken);
|
|
709
|
+
return resolvedToken;
|
|
710
|
+
}
|
|
689
711
|
async resolveProviderDeps(provider, chain, activeTokens) {
|
|
690
712
|
const deps = new Array(provider.inject.length);
|
|
691
713
|
for (const [index, entry] of provider.inject.entries()) {
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"container",
|
|
10
10
|
"provider"
|
|
11
11
|
],
|
|
12
|
-
"version": "1.0.0-beta.
|
|
12
|
+
"version": "1.0.0-beta.3",
|
|
13
13
|
"private": false,
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"repository": {
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"dist"
|
|
37
37
|
],
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@fluojs/core": "^1.0.0-beta.
|
|
39
|
+
"@fluojs/core": "^1.0.0-beta.2"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"vitest": "^3.2.4"
|