@fluojs/di 1.1.0 → 3.0.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.
@@ -1,34 +1,60 @@
1
1
  import { type Token } from '@fluojs/core';
2
2
  import type { NormalizedProvider, Provider } from './types.js';
3
3
  /**
4
- * Public read/write seam for framework-owned testing and tooling that need to
4
+ * Factory provider resolution mode recorded after a factory returns either synchronously or through a promise.
5
+ */
6
+ export type FactoryResolutionKind = 'async' | 'sync';
7
+ /**
8
+ * Controlled cache adoption seam for framework-owned testing and tooling that
9
+ * need synchronous helpers to preserve container-owned singleton disposal.
10
+ */
11
+ export interface ContainerResolutionCacheOwner {
12
+ readonly deleteMultiSingleton: (provider: NormalizedProvider) => void;
13
+ readonly deleteSingleton: (token: Token) => void;
14
+ readonly recordFactoryResolution: (provider: NormalizedProvider, kind: FactoryResolutionKind) => void;
15
+ readonly setMultiSingleton: (provider: NormalizedProvider, promise: Promise<unknown>) => void;
16
+ readonly setSingleton: (token: Token, promise: Promise<unknown>) => void;
17
+ }
18
+ /**
19
+ * Read-only factory resolution diagnostics recorded by container-owned factory
20
+ * instantiation paths.
21
+ */
22
+ export interface ContainerFactoryResolutionState {
23
+ readonly get: (provider: NormalizedProvider) => FactoryResolutionKind | undefined;
24
+ readonly has: (provider: NormalizedProvider) => boolean;
25
+ }
26
+ /**
27
+ * Public read-only seam for framework-owned testing and tooling that need to
5
28
  * inspect a container's resolved provider graph without depending on private
6
29
  * field names or structural casts.
7
30
  */
8
31
  export interface ContainerResolutionState {
32
+ readonly cacheOwner: ContainerResolutionCacheOwner;
33
+ readonly factoryResolutionKinds: ContainerFactoryResolutionState;
9
34
  readonly parent?: ContainerResolutionState;
10
- readonly registrations: Map<Token, NormalizedProvider>;
11
- readonly multiRegistrations: Map<Token, NormalizedProvider[]>;
12
- readonly multiSingletonCache: Map<NormalizedProvider, Promise<unknown>>;
35
+ readonly registrations: ReadonlyMap<Token, NormalizedProvider>;
36
+ readonly multiRegistrations: ReadonlyMap<Token, readonly NormalizedProvider[]>;
37
+ readonly multiSingletonCache: ReadonlyMap<NormalizedProvider, Promise<unknown>>;
13
38
  readonly requestScopeEnabled: boolean;
14
- readonly singletonCache: Map<Token, Promise<unknown>>;
39
+ readonly singletonCache: ReadonlyMap<Token, Promise<unknown>>;
15
40
  }
16
41
  /**
17
42
  * Scope-aware dependency injection container for Fluo providers.
18
43
  */
19
44
  export declare class Container {
20
- private readonly parent?;
21
- private readonly requestScopeEnabled;
45
+ #private;
22
46
  private readonly registrations;
23
47
  private readonly multiRegistrations;
24
48
  private readonly multiOverriddenTokens;
25
49
  private requestCache;
26
50
  private multiRequestCache;
27
51
  private readonly multiSingletonCache;
52
+ private readonly materializedCachePromises;
53
+ private readonly pendingDisposables;
28
54
  private readonly staleDisposalTasks;
29
- private readonly staleDisposalErrors;
30
55
  private readonly singletonCache;
31
56
  private readonly forwardRefTokenCache;
57
+ private readonly factoryResolutionKinds;
32
58
  private readonly providerLookupPlanCache;
33
59
  private readonly multiProviderPlanCache;
34
60
  private readonly requestScopeVerdictPlanCache;
@@ -36,9 +62,20 @@ export declare class Container {
36
62
  private childScopes;
37
63
  private disposePromise;
38
64
  private disposed;
39
- private trackedByRoot;
65
+ private trackedByParent;
40
66
  private graphRevision;
41
- constructor(parent?: Container | undefined, requestScopeEnabled?: boolean, singletonCache?: Map<Token, Promise<unknown>>);
67
+ private readonly parent;
68
+ private readonly requestScopeEnabled;
69
+ /**
70
+ * Creates a root container that owns its own singleton cache.
71
+ *
72
+ * Child request scopes are package-owned and must be created with
73
+ * {@link Container.createRequestScope}; caller-supplied parent, request-scope,
74
+ * or singleton-cache wiring is rejected.
75
+ *
76
+ * @throws {ContainerResolutionError} When any constructor argument is supplied.
77
+ */
78
+ constructor(...construction: never[]);
42
79
  /**
43
80
  * Registers providers in the current container scope.
44
81
  *
@@ -59,10 +96,16 @@ export declare class Container {
59
96
  * set — the whole set is replaced. If you need to preserve other entries, re-register them
60
97
  * together with the replacement in one `override()` call.
61
98
  *
99
+ * **Batch atomicity**: the whole batch is validated before any registration or cache is touched,
100
+ * so a rejected `override()` call leaves every provider, cached instance, and disposal ownership
101
+ * exactly as it was before the call.
102
+ *
62
103
  * @param providers Provider definitions that should replace existing registrations for each token.
63
104
  * @returns The same container instance for fluent override chains.
64
105
  * @throws {ContainerResolutionError} When called after the container was disposed.
106
+ * @throws {ScopeMismatchError} When a request-scope override would introduce a new singleton token.
65
107
  * @throws {InvalidProviderError} When a provider definition is structurally invalid.
108
+ * @throws {DuplicateProviderError} When one token mixes single and multi replacements or repeats a single replacement.
66
109
  */
67
110
  override(...providers: Provider[]): this;
68
111
  /**
@@ -77,12 +120,16 @@ export declare class Container {
77
120
  *
78
121
  * This method is the supported introspection seam for packages such as
79
122
  * `@fluojs/testing`; callers should prefer ordinary `has(...)` and
80
- * `resolve(...)` unless they need to preserve container cache ownership while
81
- * implementing a framework-level helper.
123
+ * `resolve(...)` unless they need read-only graph/cache visibility while
124
+ * implementing a framework-level helper. Cache adoption for synchronous
125
+ * helpers goes through `cacheOwner`; the returned maps are not mutable
126
+ * container internals.
82
127
  *
83
- * @returns Provider registrations and resolution caches for this container scope.
128
+ * @returns Read-only provider registrations and resolution caches for this container scope.
84
129
  */
85
130
  inspectResolutionState(): ContainerResolutionState;
131
+ private createCacheOwner;
132
+ private createFactoryResolutionState;
86
133
  /**
87
134
  * Returns whether resolving a token may require a request-scope container.
88
135
  *
@@ -108,13 +155,23 @@ export declare class Container {
108
155
  * @throws {CircularDependencyError} When provider dependency resolution detects a cycle.
109
156
  */
110
157
  resolve<T>(token: Token<T>): Promise<T>;
158
+ private resolveMultiContribution;
111
159
  /**
112
160
  * Disposes cached instances and nested request scopes.
113
161
  *
162
+ * Concurrent callers share the active disposal attempt. After a failed attempt,
163
+ * a later explicit call retries only `onDestroy()` hooks that did not complete;
164
+ * successfully completed hooks are never repeated. Disposal remains terminal
165
+ * for registration, resolution, overrides, and child-scope creation. A directly
166
+ * disposed child owns its remaining retries after that attempt settles, while a
167
+ * parent-started failed attempt remains owned by the parent hierarchy.
168
+ *
114
169
  * @returns A promise that settles after all cached disposable instances are torn down.
115
170
  * @throws {Error} Propagates one or more disposal errors (`AggregateError` when multiple failures occur).
116
171
  */
117
172
  dispose(): Promise<void>;
173
+ private disposeFromParent;
174
+ private disposeWithOrigin;
118
175
  private disposeAll;
119
176
  private isDisposedInHierarchy;
120
177
  private hasMulti;
@@ -138,8 +195,7 @@ export declare class Container {
138
195
  private resolveExistingProviderTarget;
139
196
  private resolveScopedOrSingletonInstance;
140
197
  private getCachedScopedOrSingletonInstance;
141
- private shouldResolveFromRoot;
142
- private shouldResolveMultiProviderFromRoot;
198
+ private cacheOwnerFor;
143
199
  private resolveDepToken;
144
200
  private withTokenInChain;
145
201
  private root;
@@ -166,12 +222,18 @@ export declare class Container {
166
222
  private collectDisposableInstances;
167
223
  private disposeInstancesInReverseOrder;
168
224
  private clearDisposalCaches;
225
+ private trackCacheMaterialization;
169
226
  private currentLineageRevision;
170
227
  private readCachedPlan;
171
228
  private writePlanCache;
172
229
  private advanceGraphRevision;
173
230
  private clearResolutionPlanCaches;
174
- private waitForStaleDisposalTasks;
231
+ private assertStaleDisposalsSettled;
232
+ private retainedStaleDisposalTasks;
233
+ private hasRetainedStaleDisposalTasksInSubtree;
234
+ private releaseNonOwnerStaleTaskObservers;
235
+ private releaseNonOwnerStaleTaskObserversInSubtree;
236
+ private retryFailedStaleDisposals;
175
237
  private scheduleStaleDisposal;
176
238
  private throwDisposalErrors;
177
239
  private collectDisposalError;
@@ -180,12 +242,12 @@ export declare class Container {
180
242
  private assertSingletonDependencyScopes;
181
243
  private findRequestScopedDependency;
182
244
  private findRequestScopedDependencyToken;
245
+ private findRequestScopedMultiContribution;
183
246
  private resolveEffectiveProvider;
184
247
  private resolveProviderDependencyToken;
185
248
  private resolveForwardRefToken;
186
249
  private resolveProviderDeps;
187
250
  private invalidateAffectedCachedEntriesInHierarchy;
188
- private isAncestorOf;
189
251
  private invalidateAffectedCachedEntries;
190
252
  private shouldInvalidateCachedToken;
191
253
  private shouldInvalidateCachedProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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"}