@fluojs/di 1.0.1 → 1.0.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/README.ko.md +8 -1
- package/README.md +8 -1
- package/dist/container.d.ts +7 -2
- package/dist/container.d.ts.map +1 -1
- package/dist/container.js +57 -21
- package/dist/types.d.ts +6 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +6 -1
- package/package.json +2 -2
package/README.ko.md
CHANGED
|
@@ -157,7 +157,7 @@ const service = await container.resolve(DataService);
|
|
|
157
157
|
|
|
158
158
|
## 공개 API
|
|
159
159
|
|
|
160
|
-
|
|
|
160
|
+
| Export | 설명 |
|
|
161
161
|
|---|---|
|
|
162
162
|
| `Container` | 메인 DI 컨테이너 클래스입니다. |
|
|
163
163
|
| `register(...providers)` | 하나 이상의 프로바이더를 등록합니다. |
|
|
@@ -168,8 +168,15 @@ const service = await container.resolve(DataService);
|
|
|
168
168
|
| `hasRequestScopedDependency(token)` | 토큰 해석 시 provider 그래프에 request-scoped 의존성이나 순환이 있어 request-scope 컨테이너가 필요할 수 있는지 확인합니다. |
|
|
169
169
|
| `dispose()` | request child와 루트가 소유한 singleton instance를 정리합니다. |
|
|
170
170
|
| `forwardRef(fn)` | 선언 순서 문제를 위해 조회를 지연하는 토큰 래퍼를 반환합니다. 실제 생성자 순환을 해석 가능하게 만들지는 않습니다. |
|
|
171
|
+
| `isForwardRef(value)` | `forwardRef(...)`가 만든 값인지 확인하는 type guard입니다. 커스텀 provider tooling이 DI token wrapper와 통합될 때 사용할 수 있습니다. |
|
|
171
172
|
| `optional(token)` | 하나의 의존성을 optional로 표시하는 토큰 래퍼를 반환합니다. 누락된 optional dependency는 `undefined`로 해석됩니다. |
|
|
173
|
+
| `isOptionalToken(value)` | `optional(...)`이 만든 값인지 확인하는 type guard입니다. provider 수준 `inject` 배열을 검사할 때 사용할 수 있습니다. |
|
|
172
174
|
| `Scope` | `DEFAULT`, `REQUEST`, `TRANSIENT` scope 상수를 제공합니다. |
|
|
175
|
+
| Provider types | `Provider`, `ClassProvider`, `FactoryProvider`, `ValueProvider`, `ExistingProvider`는 `register(...)`와 `override(...)`가 받는 공개 registration shape를 설명합니다. |
|
|
176
|
+
| Token wrapper types | `ForwardRefFn`과 `OptionalToken`은 `forwardRef(...)`와 `optional(...)`이 반환하는 wrapper 값을 설명합니다. |
|
|
177
|
+
| Container helper types | `ClassType`, `Disposable`, `RequestScopeContainer`는 typed provider 선언, teardown hook, request-scope helper 경계를 지원합니다. |
|
|
178
|
+
| `NormalizedProvider` | 컨테이너가 검증한 provider record shape를 위한 compatibility-only 공개 타입입니다. provider를 작성할 때는 `Provider`나 구체 provider interface를 우선 사용하세요. normalized record 생성은 컨테이너가 소유합니다. |
|
|
179
|
+
| `DiErrorContext` | DI error에 붙는 구조화된 context입니다. 로그와 테스트가 token, scope, module, dependency chain, hint를 검사할 수 있게 합니다. |
|
|
173
180
|
| 에러 클래스 | `InvalidProviderError`, `ContainerResolutionError`, `RequestScopeResolutionError`, `ScopeMismatchError`, `CircularDependencyError`, `DuplicateProviderError`. |
|
|
174
181
|
|
|
175
182
|
multi-provider 토큰을 resolve하면 등록 순서대로 해석된 값의 배열이 반환됩니다.
|
package/README.md
CHANGED
|
@@ -157,7 +157,7 @@ Ensure all required providers are registered in the container. If you use `creat
|
|
|
157
157
|
|
|
158
158
|
## Public API
|
|
159
159
|
|
|
160
|
-
|
|
|
160
|
+
| Export | Description |
|
|
161
161
|
|---|---|
|
|
162
162
|
| `Container` | The main DI container class. |
|
|
163
163
|
| `register(...providers)` | Registers one or more providers. |
|
|
@@ -168,8 +168,15 @@ Ensure all required providers are registered in the container. If you use `creat
|
|
|
168
168
|
| `hasRequestScopedDependency(token)` | Checks whether resolving a token may require a request-scope container because its provider graph contains request-scoped dependencies or is cyclic. |
|
|
169
169
|
| `dispose()` | Disposes request children and root-owned singleton instances. |
|
|
170
170
|
| `forwardRef(fn)` | Returns a token wrapper that defers lookup for declaration-order issues; it does not make constructor dependency cycles resolvable. |
|
|
171
|
+
| `isForwardRef(value)` | Type guard for values produced by `forwardRef(...)`; useful when integrating custom provider tooling with DI token wrappers. |
|
|
171
172
|
| `optional(token)` | Returns a token wrapper that marks one dependency as optional; missing optional dependencies resolve to `undefined`. |
|
|
173
|
+
| `isOptionalToken(value)` | Type guard for values produced by `optional(...)`; useful when inspecting provider-level `inject` arrays. |
|
|
172
174
|
| `Scope` | Exposes `DEFAULT`, `REQUEST`, and `TRANSIENT` scope constants. |
|
|
175
|
+
| Provider types | `Provider`, `ClassProvider`, `FactoryProvider`, `ValueProvider`, and `ExistingProvider` describe the public registration shapes accepted by `register(...)` and `override(...)`. |
|
|
176
|
+
| Token wrapper types | `ForwardRefFn` and `OptionalToken` describe the wrapper values returned by `forwardRef(...)` and `optional(...)`. |
|
|
177
|
+
| Container helper types | `ClassType`, `Disposable`, and `RequestScopeContainer` support typed provider declarations, teardown hooks, and request-scope helper boundaries. |
|
|
178
|
+
| `NormalizedProvider` | Compatibility-only public type for the container's validated provider record shape. Prefer authoring providers with `Provider` or the specific provider interfaces; the container owns normalized record construction. |
|
|
179
|
+
| `DiErrorContext` | Structured context attached to DI errors so logs and tests can inspect tokens, scopes, modules, dependency chains, and hints. |
|
|
173
180
|
| Error classes | `InvalidProviderError`, `ContainerResolutionError`, `RequestScopeResolutionError`, `ScopeMismatchError`, `CircularDependencyError`, `DuplicateProviderError`. |
|
|
174
181
|
|
|
175
182
|
Resolving a multi-provider token returns an array of resolved values in registration order.
|
package/dist/container.d.ts
CHANGED
|
@@ -160,8 +160,13 @@ export declare class Container {
|
|
|
160
160
|
private resolveProviderDependencyToken;
|
|
161
161
|
private resolveForwardRefToken;
|
|
162
162
|
private resolveProviderDeps;
|
|
163
|
-
private
|
|
163
|
+
private invalidateAffectedCachedEntriesInHierarchy;
|
|
164
164
|
private isAncestorOf;
|
|
165
|
-
private
|
|
165
|
+
private invalidateAffectedCachedEntries;
|
|
166
|
+
private shouldInvalidateCachedToken;
|
|
167
|
+
private shouldInvalidateCachedProvider;
|
|
168
|
+
private providerDependsOnToken;
|
|
169
|
+
private dependencyEntryReferencesToken;
|
|
170
|
+
private dependencyTokenReferencesToken;
|
|
166
171
|
}
|
|
167
172
|
//# sourceMappingURL=container.d.ts.map
|
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;AA4IpB;;GAEG;AACH,qBAAa,SAAS;IAsBlB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAtBtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwC;IACtE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA0C;IAC7E,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAoB;IAC1D,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,iBAAiB,CAAwD;IACjF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAmD;IACvF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA4B;IAC/D,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAiB;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+B;IAC9D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAsC;IAC3E,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0E;IAClH,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAyE;IAChH,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAmD;IAChG,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAA0E;IACrH,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAK;gBAGP,MAAM,CAAC,EAAE,SAAS,YAAA,EAClB,mBAAmB,UAAQ,EAC5C,cAAc,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAK/C;;;;;;;;;OASG;IACH,QAAQ,CAAC,GAAG,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI;IA4CxC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,GAAG,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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"}
|
package/dist/container.js
CHANGED
|
@@ -225,11 +225,9 @@ export class Container {
|
|
|
225
225
|
if (!containsMultiProvider && normalizedProviders.length > 1) {
|
|
226
226
|
throw new DuplicateProviderError(token);
|
|
227
227
|
}
|
|
228
|
-
|
|
229
|
-
const existingMultiProviders = this.collectMultiProviders(token);
|
|
228
|
+
this.invalidateAffectedCachedEntriesInHierarchy(token);
|
|
230
229
|
this.registrations.delete(token);
|
|
231
230
|
this.multiRegistrations.delete(token);
|
|
232
|
-
this.invalidateCachedEntryInHierarchy(token, existing?.scope ?? existingMultiProviders[0]?.scope ?? firstProvider.scope);
|
|
233
231
|
if (containsMultiProvider) {
|
|
234
232
|
this.multiRegistrations.set(token, normalizedProviders);
|
|
235
233
|
this.multiOverriddenTokens.add(token);
|
|
@@ -933,15 +931,15 @@ export class Container {
|
|
|
933
931
|
}
|
|
934
932
|
return deps;
|
|
935
933
|
}
|
|
936
|
-
|
|
937
|
-
this.
|
|
934
|
+
invalidateAffectedCachedEntriesInHierarchy(token) {
|
|
935
|
+
this.invalidateAffectedCachedEntries(token);
|
|
938
936
|
const childScopes = this.root().childScopes;
|
|
939
937
|
if (!childScopes) {
|
|
940
938
|
return;
|
|
941
939
|
}
|
|
942
940
|
for (const childScope of childScopes) {
|
|
943
941
|
if (this.isAncestorOf(childScope)) {
|
|
944
|
-
childScope.
|
|
942
|
+
childScope.invalidateAffectedCachedEntries(token);
|
|
945
943
|
}
|
|
946
944
|
}
|
|
947
945
|
}
|
|
@@ -955,27 +953,26 @@ export class Container {
|
|
|
955
953
|
}
|
|
956
954
|
return false;
|
|
957
955
|
}
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
this.scheduleStaleDisposal(cached);
|
|
956
|
+
invalidateAffectedCachedEntries(token) {
|
|
957
|
+
for (const [cachedToken, cached] of this.requestCache?.entries() ?? []) {
|
|
958
|
+
if (!this.shouldInvalidateCachedToken(cachedToken, token)) {
|
|
959
|
+
continue;
|
|
963
960
|
}
|
|
964
|
-
this.
|
|
961
|
+
this.scheduleStaleDisposal(cached);
|
|
962
|
+
this.requestCache?.delete(cachedToken);
|
|
965
963
|
}
|
|
966
|
-
if (!this.parent
|
|
967
|
-
const
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
if (cached) {
|
|
971
|
-
this.scheduleStaleDisposal(cached);
|
|
964
|
+
if (!this.parent) {
|
|
965
|
+
for (const [cachedToken, cached] of this.singletonCache.entries()) {
|
|
966
|
+
if (!this.shouldInvalidateCachedToken(cachedToken, token)) {
|
|
967
|
+
continue;
|
|
972
968
|
}
|
|
973
|
-
|
|
969
|
+
this.scheduleStaleDisposal(cached);
|
|
970
|
+
this.singletonCache.delete(cachedToken);
|
|
974
971
|
}
|
|
975
972
|
}
|
|
976
973
|
if (!this.parent) {
|
|
977
974
|
for (const [provider, cached] of this.multiSingletonCache.entries()) {
|
|
978
|
-
if (provider
|
|
975
|
+
if (!this.shouldInvalidateCachedProvider(provider, token)) {
|
|
979
976
|
continue;
|
|
980
977
|
}
|
|
981
978
|
this.scheduleStaleDisposal(cached);
|
|
@@ -987,11 +984,50 @@ export class Container {
|
|
|
987
984
|
return;
|
|
988
985
|
}
|
|
989
986
|
for (const [provider, cached] of multiRequestCache.entries()) {
|
|
990
|
-
if (provider
|
|
987
|
+
if (!this.shouldInvalidateCachedProvider(provider, token)) {
|
|
991
988
|
continue;
|
|
992
989
|
}
|
|
993
990
|
this.scheduleStaleDisposal(cached);
|
|
994
991
|
multiRequestCache.delete(provider);
|
|
995
992
|
}
|
|
996
993
|
}
|
|
994
|
+
shouldInvalidateCachedToken(cachedToken, overriddenToken) {
|
|
995
|
+
if (cachedToken === overriddenToken) {
|
|
996
|
+
return true;
|
|
997
|
+
}
|
|
998
|
+
const provider = this.lookupProvider(cachedToken);
|
|
999
|
+
const multiProviders = this.collectMultiProviders(cachedToken);
|
|
1000
|
+
if (provider && this.providerDependsOnToken(provider, overriddenToken, new Set([provider.provide]))) {
|
|
1001
|
+
return true;
|
|
1002
|
+
}
|
|
1003
|
+
return multiProviders.some(multiProvider => this.providerDependsOnToken(multiProvider, overriddenToken, new Set([multiProvider.provide])));
|
|
1004
|
+
}
|
|
1005
|
+
shouldInvalidateCachedProvider(provider, overriddenToken) {
|
|
1006
|
+
return provider.provide === overriddenToken || this.providerDependsOnToken(provider, overriddenToken, new Set([provider.provide]));
|
|
1007
|
+
}
|
|
1008
|
+
providerDependsOnToken(provider, token, visited) {
|
|
1009
|
+
if (provider.type === 'existing' && provider.useExisting !== undefined) {
|
|
1010
|
+
return this.dependencyTokenReferencesToken(provider.useExisting, token, visited);
|
|
1011
|
+
}
|
|
1012
|
+
return provider.inject.some(depEntry => this.dependencyEntryReferencesToken(depEntry, token, visited));
|
|
1013
|
+
}
|
|
1014
|
+
dependencyEntryReferencesToken(depEntry, token, visited) {
|
|
1015
|
+
return this.dependencyTokenReferencesToken(this.resolveProviderDependencyToken(depEntry), token, visited);
|
|
1016
|
+
}
|
|
1017
|
+
dependencyTokenReferencesToken(depToken, token, visited) {
|
|
1018
|
+
if (depToken === token) {
|
|
1019
|
+
return true;
|
|
1020
|
+
}
|
|
1021
|
+
if (visited.has(depToken)) {
|
|
1022
|
+
return false;
|
|
1023
|
+
}
|
|
1024
|
+
visited.add(depToken);
|
|
1025
|
+
try {
|
|
1026
|
+
const provider = this.lookupProvider(depToken);
|
|
1027
|
+
const multiProviders = this.collectMultiProviders(depToken);
|
|
1028
|
+
return (provider ? this.providerDependsOnToken(provider, token, visited) : false) || multiProviders.some(multiProvider => this.providerDependsOnToken(multiProvider, token, visited));
|
|
1029
|
+
} finally {
|
|
1030
|
+
visited.delete(depToken);
|
|
1031
|
+
}
|
|
1032
|
+
}
|
|
997
1033
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -86,7 +86,12 @@ export interface RequestScopeContainer {
|
|
|
86
86
|
dispose(): Promise<void>;
|
|
87
87
|
}
|
|
88
88
|
/**
|
|
89
|
-
*
|
|
89
|
+
* Compatibility-only provider record shape produced after the container validates public provider inputs.
|
|
90
|
+
*
|
|
91
|
+
* @remarks
|
|
92
|
+
* This type remains root-exported for consumers that already reference the normalized DI record shape, but
|
|
93
|
+
* application code should author providers with {@link Provider}, {@link ClassProvider}, {@link FactoryProvider},
|
|
94
|
+
* {@link ValueProvider}, or {@link ExistingProvider}. The container owns construction of normalized records.
|
|
90
95
|
*/
|
|
91
96
|
export interface NormalizedProvider<T = unknown> {
|
|
92
97
|
inject: InjectionToken[];
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE3H;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAE1D;;GAEG;AACH,yBAAiB,KAAK,CAAC;IACrB;;OAEG;IACI,MAAM,OAAO,EAAE,KAAmB,CAAC;IAE1C;;OAEG;IACI,MAAM,OAAO,EAAE,KAAiB,CAAC;IAExC;;OAEG;IACI,MAAM,SAAS,EAAE,KAAmB,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,GAAG,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACxC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACxC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,QAAQ,EAAE,CAAC,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,OAAO;IAC3C,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,WAAW,EAAE,KAAK,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,OAAO,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,GAAG,OAAO,IAC5B,SAAS,CAAC,CAAC,CAAC,GACZ,aAAa,CAAC,CAAC,CAAC,GAChB,eAAe,CAAC,CAAC,CAAC,GAClB,aAAa,CAAC,CAAC,CAAC,GAChB,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -41,7 +41,12 @@ export let Scope;
|
|
|
41
41
|
* Minimal request-scope facade exposed to helpers that should not depend on the full `Container` implementation.
|
|
42
42
|
*/
|
|
43
43
|
/**
|
|
44
|
-
*
|
|
44
|
+
* Compatibility-only provider record shape produced after the container validates public provider inputs.
|
|
45
|
+
*
|
|
46
|
+
* @remarks
|
|
47
|
+
* This type remains root-exported for consumers that already reference the normalized DI record shape, but
|
|
48
|
+
* application code should author providers with {@link Provider}, {@link ClassProvider}, {@link FactoryProvider},
|
|
49
|
+
* {@link ValueProvider}, or {@link ExistingProvider}. The container owns construction of normalized records.
|
|
45
50
|
*/
|
|
46
51
|
/**
|
|
47
52
|
* Wraps a token factory so DI metadata can defer token lookup until resolution time.
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"container",
|
|
10
10
|
"provider"
|
|
11
11
|
],
|
|
12
|
-
"version": "1.0.
|
|
12
|
+
"version": "1.0.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.
|
|
39
|
+
"@fluojs/core": "^1.0.3"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"vitest": "^3.2.4"
|