@navios/di 0.6.1 → 0.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/CHANGELOG.md +39 -0
- package/lib/browser/index.d.mts +5 -84
- package/lib/browser/index.d.mts.map +1 -1
- package/lib/browser/index.mjs +103 -484
- package/lib/browser/index.mjs.map +1 -1
- package/lib/{testing-DIaIRiJz.cjs → container-BCv3XS6m.cjs} +63 -459
- package/lib/container-BCv3XS6m.cjs.map +1 -0
- package/lib/{testing-BG_fa9TJ.mjs → container-Bv6PZZLJ.mjs} +63 -446
- package/lib/container-Bv6PZZLJ.mjs.map +1 -0
- package/lib/{index-DW3K5sOX.d.cts → container-CXDYDJSM.d.mts} +7 -62
- package/lib/container-CXDYDJSM.d.mts.map +1 -0
- package/lib/{index-7jfWsiG4.d.mts → container-b6mDUdGq.d.cts} +2 -67
- package/lib/container-b6mDUdGq.d.cts.map +1 -0
- package/lib/index.cjs +44 -52
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +6 -25
- package/lib/index.d.cts.map +1 -1
- package/lib/index.d.mts +6 -25
- package/lib/index.d.mts.map +1 -1
- package/lib/index.mjs +2 -2
- package/lib/testing/index.cjs +343 -4
- package/lib/testing/index.cjs.map +1 -0
- package/lib/testing/index.d.cts +65 -2
- package/lib/testing/index.d.cts.map +1 -0
- package/lib/testing/index.d.mts +65 -2
- package/lib/testing/index.d.mts.map +1 -0
- package/lib/testing/index.mjs +341 -2
- package/lib/testing/index.mjs.map +1 -0
- package/package.json +1 -1
- package/src/__tests__/async-local-storage.browser.spec.mts +18 -92
- package/src/__tests__/container.spec.mts +93 -0
- package/src/__tests__/e2e.browser.spec.mts +7 -15
- package/src/__tests__/library-findings.spec.mts +23 -21
- package/src/browser.mts +4 -9
- package/src/container/scoped-container.mts +14 -8
- package/src/index.mts +5 -8
- package/src/internal/context/async-local-storage.browser.mts +19 -0
- package/src/internal/context/async-local-storage.mts +46 -98
- package/src/internal/context/async-local-storage.types.mts +7 -0
- package/src/internal/context/resolution-context.mts +23 -5
- package/src/internal/context/sync-local-storage.mts +3 -1
- package/src/internal/core/instance-resolver.mts +8 -1
- package/src/internal/lifecycle/circular-detector.mts +15 -0
- package/tsdown.config.mts +12 -1
- package/vitest.config.mts +25 -3
- package/lib/index-7jfWsiG4.d.mts.map +0 -1
- package/lib/index-DW3K5sOX.d.cts.map +0 -1
- package/lib/testing-BG_fa9TJ.mjs.map +0 -1
- package/lib/testing-DIaIRiJz.cjs.map +0 -1
|
@@ -10,10 +10,11 @@
|
|
|
10
10
|
|
|
11
11
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
|
12
12
|
|
|
13
|
+
import type { OnServiceDestroy } from '../interfaces/on-service-destroy.interface.mjs'
|
|
14
|
+
|
|
13
15
|
import { Container } from '../container/container.mjs'
|
|
14
16
|
import { Injectable } from '../decorators/injectable.decorator.mjs'
|
|
15
17
|
import { InjectableScope } from '../enums/index.mjs'
|
|
16
|
-
import type { OnServiceDestroy } from '../interfaces/on-service-destroy.interface.mjs'
|
|
17
18
|
import { Registry } from '../token/registry.mjs'
|
|
18
19
|
import { getInjectors } from '../utils/get-injectors.mjs'
|
|
19
20
|
|
|
@@ -244,19 +245,17 @@ describe('FINDING #3: Error Recovery', () => {
|
|
|
244
245
|
})
|
|
245
246
|
|
|
246
247
|
/**
|
|
247
|
-
* DOCUMENTED BEHAVIOR: Container
|
|
248
|
+
* DOCUMENTED BEHAVIOR: Container allows retry after constructor errors
|
|
248
249
|
*
|
|
249
250
|
* When a service constructor throws on first attempt, the container
|
|
250
|
-
*
|
|
251
|
-
* attempts
|
|
251
|
+
* removes the failed holder from storage. This allows subsequent
|
|
252
|
+
* attempts to retry creating the service.
|
|
252
253
|
*
|
|
253
|
-
* This is
|
|
254
|
-
*
|
|
255
|
-
*
|
|
256
|
-
* IMPLICATION: If you need retry logic for transient failures, implement
|
|
257
|
-
* it inside the service (e.g., in onServiceInit) or use a factory pattern.
|
|
254
|
+
* This is useful for services that might fail due to transient errors
|
|
255
|
+
* (network issues, resource unavailability, etc.) - they can be
|
|
256
|
+
* successfully created on retry once the transient issue is resolved.
|
|
258
257
|
*/
|
|
259
|
-
it('
|
|
258
|
+
it('allows retry after constructor errors (documented behavior)', async () => {
|
|
260
259
|
let attemptCount = 0
|
|
261
260
|
const shouldFail = { value: true }
|
|
262
261
|
|
|
@@ -283,12 +282,11 @@ describe('FINDING #3: Error Recovery', () => {
|
|
|
283
282
|
// Allow success on retry
|
|
284
283
|
shouldFail.value = false
|
|
285
284
|
|
|
286
|
-
// Second attempt - container
|
|
287
|
-
// The constructor
|
|
288
|
-
await
|
|
289
|
-
|
|
290
|
-
)
|
|
291
|
-
expect(attemptCount).toBe(1) // Still 1, constructor was not retried
|
|
285
|
+
// Second attempt - container allows retry by removing the error holder
|
|
286
|
+
// The constructor IS called again
|
|
287
|
+
const instance = await container.get(FlakeyService)
|
|
288
|
+
expect(instance.getValue()).toBe('success')
|
|
289
|
+
expect(attemptCount).toBe(2) // Constructor was retried
|
|
292
290
|
})
|
|
293
291
|
|
|
294
292
|
/**
|
|
@@ -502,15 +500,19 @@ describe('FINDING #5: Cross-Storage Dependency Invalidation', () => {
|
|
|
502
500
|
|
|
503
501
|
// Check that the singleton's holder has the request service in deps
|
|
504
502
|
const manager = container.getServiceLocator().getManager()
|
|
505
|
-
const singletonHolders = Array.from(
|
|
503
|
+
const singletonHolders = Array.from(
|
|
504
|
+
manager.filter((h) => h.scope === InjectableScope.Singleton).values(),
|
|
505
|
+
)
|
|
506
506
|
|
|
507
507
|
// Find the SingletonWithDep holder
|
|
508
|
-
const singletonHolder = singletonHolders.find(h =>
|
|
508
|
+
const singletonHolder = singletonHolders.find((h) =>
|
|
509
|
+
h.name.includes('SingletonWithDep'),
|
|
510
|
+
)
|
|
509
511
|
|
|
510
512
|
if (singletonHolder) {
|
|
511
513
|
// The deps should contain the RequestService instance name
|
|
512
|
-
const hasRequestDep = Array.from(singletonHolder.deps).some(dep =>
|
|
513
|
-
dep.includes('RequestService')
|
|
514
|
+
const hasRequestDep = Array.from(singletonHolder.deps).some((dep) =>
|
|
515
|
+
dep.includes('RequestService'),
|
|
514
516
|
)
|
|
515
517
|
expect(hasRequestDep).toBe(true)
|
|
516
518
|
}
|
|
@@ -547,7 +549,7 @@ describe('FINDING #5: Cross-Storage Dependency Invalidation', () => {
|
|
|
547
549
|
* invalidated when the request ends
|
|
548
550
|
*
|
|
549
551
|
* EDGE CASES (documented behavior):
|
|
550
|
-
* 3. Error recovery behavior - constructor errors are cached
|
|
552
|
+
* 3. Error recovery behavior - constructor errors are cached - FIXED
|
|
551
553
|
* - Priority: Low
|
|
552
554
|
* - Impact: May prevent retry after transient failures
|
|
553
555
|
* - Documented: This is intentional, use onServiceInit for retry logic
|
package/src/browser.mts
CHANGED
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Browser-specific entry point for @navios/di.
|
|
3
3
|
*
|
|
4
|
-
* This entry point
|
|
5
|
-
* Node's AsyncLocalStorage, making it safe for browser environments.
|
|
6
|
-
*
|
|
7
|
-
* The browser build is automatically selected by bundlers that respect
|
|
4
|
+
* This entry point is automatically selected by bundlers that respect
|
|
8
5
|
* the "browser" condition in package.json exports.
|
|
6
|
+
*
|
|
7
|
+
* The browser build uses SyncLocalStorage instead of Node's AsyncLocalStorage,
|
|
8
|
+
* which is sufficient for synchronous DI resolution in browser environments.
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
// Force sync mode before any other imports initialize the storage
|
|
12
|
-
import { __testing__ } from './internal/context/async-local-storage.mjs'
|
|
13
|
-
__testing__.forceSyncMode()
|
|
14
|
-
|
|
15
|
-
// Re-export everything from the main entry
|
|
16
11
|
export * from './index.mjs'
|
|
@@ -302,15 +302,21 @@ export class ScopedContainer implements IContainer {
|
|
|
302
302
|
// Check if we already have this instance (or one is being created)
|
|
303
303
|
const existingHolder = this.requestContextHolder.get(instanceName)
|
|
304
304
|
if (existingHolder) {
|
|
305
|
-
//
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
305
|
+
// If the holder is in error state, remove it so we can retry
|
|
306
|
+
if (existingHolder.status === InstanceStatus.Error) {
|
|
307
|
+
this.requestContextHolder.delete(instanceName)
|
|
308
|
+
// Fall through to create a new instance
|
|
309
|
+
} else {
|
|
310
|
+
// Wait for the holder to be ready if it's still being created
|
|
311
|
+
// This prevents race conditions where multiple concurrent calls
|
|
312
|
+
// might try to create the same service
|
|
313
|
+
const [error, readyHolder] =
|
|
314
|
+
await BaseHolderManager.waitForHolderReady(existingHolder)
|
|
315
|
+
if (error) {
|
|
316
|
+
throw error
|
|
317
|
+
}
|
|
318
|
+
return readyHolder.instance
|
|
312
319
|
}
|
|
313
|
-
return readyHolder.instance
|
|
314
320
|
}
|
|
315
321
|
|
|
316
322
|
// Create new instance using parent's resolution mechanism
|
package/src/index.mts
CHANGED
|
@@ -36,7 +36,11 @@ export {
|
|
|
36
36
|
type InjectionTokenSchemaType,
|
|
37
37
|
} from './token/injection-token.mjs'
|
|
38
38
|
|
|
39
|
-
export {
|
|
39
|
+
export {
|
|
40
|
+
Registry,
|
|
41
|
+
globalRegistry,
|
|
42
|
+
type FactoryRecord,
|
|
43
|
+
} from './token/registry.mjs'
|
|
40
44
|
|
|
41
45
|
// ============================================================================
|
|
42
46
|
// PUBLIC API - Decorators
|
|
@@ -93,12 +97,6 @@ export {
|
|
|
93
97
|
provideFactoryContext,
|
|
94
98
|
} from './injectors.mjs'
|
|
95
99
|
|
|
96
|
-
// ============================================================================
|
|
97
|
-
// PUBLIC API - Testing
|
|
98
|
-
// ============================================================================
|
|
99
|
-
|
|
100
|
-
export * from './testing/index.mjs'
|
|
101
|
-
|
|
102
100
|
// ============================================================================
|
|
103
101
|
// INTERNAL API (exported for advanced use cases)
|
|
104
102
|
// ============================================================================
|
|
@@ -113,7 +111,6 @@ export {
|
|
|
113
111
|
} from './internal/context/request-context.mjs'
|
|
114
112
|
export {
|
|
115
113
|
type ResolutionContextData,
|
|
116
|
-
resolutionContext,
|
|
117
114
|
withResolutionContext,
|
|
118
115
|
getCurrentResolutionContext,
|
|
119
116
|
withoutResolutionContext,
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser implementation using SyncLocalStorage.
|
|
3
|
+
*
|
|
4
|
+
* This module is used in browser environments where async_hooks is not available.
|
|
5
|
+
* It provides synchronous-only context tracking which is sufficient for
|
|
6
|
+
* browser-based DI resolution.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { SyncLocalStorage } from './sync-local-storage.mjs'
|
|
10
|
+
|
|
11
|
+
export type { IAsyncLocalStorage } from './async-local-storage.types.mjs'
|
|
12
|
+
|
|
13
|
+
export function createAsyncLocalStorage<T>() {
|
|
14
|
+
return new SyncLocalStorage<T>()
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function isUsingNativeAsyncLocalStorage(): boolean {
|
|
18
|
+
return false
|
|
19
|
+
}
|
|
@@ -1,120 +1,68 @@
|
|
|
1
|
-
|
|
2
|
-
* Cross-platform AsyncLocalStorage wrapper.
|
|
3
|
-
*
|
|
4
|
-
* Provides AsyncLocalStorage on Node.js/Bun and falls back to
|
|
5
|
-
* a synchronous-only polyfill in browser environments.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { SyncLocalStorage } from './sync-local-storage.mjs'
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Interface matching the subset of AsyncLocalStorage API we use.
|
|
12
|
-
*/
|
|
13
|
-
export interface IAsyncLocalStorage<T> {
|
|
14
|
-
run<R>(store: T, fn: () => R): R
|
|
15
|
-
getStore(): T | undefined
|
|
16
|
-
}
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks'
|
|
17
2
|
|
|
18
3
|
/**
|
|
19
|
-
*
|
|
4
|
+
* Cross-platform AsyncLocalStorage switcher.
|
|
5
|
+
*
|
|
6
|
+
* Provides the appropriate implementation based on environment:
|
|
7
|
+
* - Production: No-op implementation (circular detection disabled)
|
|
8
|
+
* - Development: Native AsyncLocalStorage from node:async_hooks
|
|
9
|
+
*
|
|
10
|
+
* Browser environments use a separate entry point via package.json exports
|
|
11
|
+
* that directly uses SyncLocalStorage.
|
|
12
|
+
*
|
|
13
|
+
* Uses lazy initialization to avoid import overhead until first use,
|
|
14
|
+
* and works with both ESM and CJS builds.
|
|
20
15
|
*/
|
|
21
|
-
function hasAsyncHooksSupport(): boolean {
|
|
22
|
-
// Check for Node.js
|
|
23
|
-
if (
|
|
24
|
-
typeof process !== 'undefined' &&
|
|
25
|
-
process.versions &&
|
|
26
|
-
process.versions.node
|
|
27
|
-
) {
|
|
28
|
-
return true
|
|
29
|
-
}
|
|
30
16
|
|
|
31
|
-
|
|
32
|
-
if (typeof process !== 'undefined' && process.versions && 'bun' in process.versions) {
|
|
33
|
-
return true
|
|
34
|
-
}
|
|
17
|
+
import type { IAsyncLocalStorage } from './async-local-storage.types.mjs'
|
|
35
18
|
|
|
36
|
-
|
|
37
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
38
|
-
if (typeof (globalThis as any).Deno !== 'undefined') {
|
|
39
|
-
return true
|
|
40
|
-
}
|
|
19
|
+
export type { IAsyncLocalStorage }
|
|
41
20
|
|
|
42
|
-
|
|
43
|
-
}
|
|
21
|
+
const isProduction = process.env.NODE_ENV === 'production'
|
|
44
22
|
|
|
45
|
-
//
|
|
46
|
-
let
|
|
47
|
-
|
|
48
|
-
|
|
23
|
+
// Lazy-loaded module cache
|
|
24
|
+
let loadedModule: {
|
|
25
|
+
createAsyncLocalStorage: <T>() => IAsyncLocalStorage<T>
|
|
26
|
+
isUsingNativeAsyncLocalStorage: () => boolean
|
|
27
|
+
} | null = null
|
|
49
28
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
* - On Node.js/Bun/Deno: Returns the native AsyncLocalStorage
|
|
54
|
-
* - On browsers: Returns SyncLocalStorage polyfill
|
|
55
|
-
*/
|
|
56
|
-
function getAsyncLocalStorageClass(): new <T>() => IAsyncLocalStorage<T> {
|
|
57
|
-
if (initialized) {
|
|
58
|
-
return AsyncLocalStorageClass!
|
|
29
|
+
function getModule() {
|
|
30
|
+
if (loadedModule) {
|
|
31
|
+
return loadedModule
|
|
59
32
|
}
|
|
60
33
|
|
|
61
|
-
|
|
34
|
+
if (isProduction) {
|
|
35
|
+
// In production, use the noop implementation
|
|
36
|
+
// Inline to avoid any import overhead
|
|
37
|
+
class NoopLocalStorage<T> implements IAsyncLocalStorage<T> {
|
|
38
|
+
run<R>(_store: T, fn: () => R): R {
|
|
39
|
+
return fn()
|
|
40
|
+
}
|
|
41
|
+
getStore(): T | undefined {
|
|
42
|
+
return undefined
|
|
43
|
+
}
|
|
44
|
+
}
|
|
62
45
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
67
|
-
const asyncHooks = require('node:async_hooks')
|
|
68
|
-
AsyncLocalStorageClass = asyncHooks.AsyncLocalStorage
|
|
69
|
-
} catch {
|
|
70
|
-
// Fallback if require fails (shouldn't happen in Node/Bun)
|
|
71
|
-
AsyncLocalStorageClass = SyncLocalStorage as any
|
|
46
|
+
loadedModule = {
|
|
47
|
+
createAsyncLocalStorage: <T,>() => new NoopLocalStorage<T>(),
|
|
48
|
+
isUsingNativeAsyncLocalStorage: () => false,
|
|
72
49
|
}
|
|
73
50
|
} else {
|
|
74
|
-
|
|
51
|
+
// In development, use native AsyncLocalStorage
|
|
52
|
+
|
|
53
|
+
loadedModule = {
|
|
54
|
+
createAsyncLocalStorage: <T,>() => new AsyncLocalStorage<T>(),
|
|
55
|
+
isUsingNativeAsyncLocalStorage: () => true,
|
|
56
|
+
}
|
|
75
57
|
}
|
|
76
58
|
|
|
77
|
-
return
|
|
59
|
+
return loadedModule
|
|
78
60
|
}
|
|
79
61
|
|
|
80
|
-
/**
|
|
81
|
-
* Creates a new AsyncLocalStorage instance appropriate for the current environment.
|
|
82
|
-
*/
|
|
83
62
|
export function createAsyncLocalStorage<T>(): IAsyncLocalStorage<T> {
|
|
84
|
-
|
|
85
|
-
return new StorageClass<T>()
|
|
63
|
+
return getModule().createAsyncLocalStorage<T>()
|
|
86
64
|
}
|
|
87
65
|
|
|
88
|
-
/**
|
|
89
|
-
* Returns true if we're using the real AsyncLocalStorage (Node/Bun/Deno).
|
|
90
|
-
* Returns false if we're using the sync-only polyfill (browser).
|
|
91
|
-
*/
|
|
92
66
|
export function isUsingNativeAsyncLocalStorage(): boolean {
|
|
93
|
-
|
|
94
|
-
return AsyncLocalStorageClass !== (SyncLocalStorage as any)
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Testing utilities for forcing specific modes.
|
|
99
|
-
* Only exported for testing purposes.
|
|
100
|
-
*/
|
|
101
|
-
export const __testing__ = {
|
|
102
|
-
/**
|
|
103
|
-
* Resets the initialization state and forces sync mode.
|
|
104
|
-
* Call this before creating new storage instances in tests.
|
|
105
|
-
*/
|
|
106
|
-
forceSyncMode: () => {
|
|
107
|
-
initialized = false
|
|
108
|
-
forceSyncMode = true
|
|
109
|
-
AsyncLocalStorageClass = null
|
|
110
|
-
},
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* Resets to default behavior (auto-detect environment).
|
|
114
|
-
*/
|
|
115
|
-
reset: () => {
|
|
116
|
-
initialized = false
|
|
117
|
-
forceSyncMode = false
|
|
118
|
-
AsyncLocalStorageClass = null
|
|
119
|
-
},
|
|
67
|
+
return getModule().isUsingNativeAsyncLocalStorage()
|
|
120
68
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { InstanceHolder } from '../holder/instance-holder.mjs'
|
|
2
|
+
import type { IAsyncLocalStorage } from './async-local-storage.types.mjs'
|
|
2
3
|
|
|
3
4
|
import { createAsyncLocalStorage } from './async-local-storage.mjs'
|
|
4
5
|
|
|
@@ -18,8 +19,20 @@ export interface ResolutionContextData {
|
|
|
18
19
|
* This allows tracking which service is being instantiated even across
|
|
19
20
|
* async boundaries (like when inject() is called inside a constructor).
|
|
20
21
|
* Essential for circular dependency detection.
|
|
22
|
+
*
|
|
23
|
+
* The actual implementation varies by environment:
|
|
24
|
+
* - Production: No-op (returns undefined, run() just calls fn directly)
|
|
25
|
+
* - Development: Real AsyncLocalStorage with full async tracking
|
|
26
|
+
* - Browser: SyncLocalStorage for synchronous-only tracking
|
|
21
27
|
*/
|
|
22
|
-
|
|
28
|
+
let resolutionContext: IAsyncLocalStorage<ResolutionContextData> | null = null
|
|
29
|
+
|
|
30
|
+
function getResolutionContext(): IAsyncLocalStorage<ResolutionContextData> {
|
|
31
|
+
if (!resolutionContext) {
|
|
32
|
+
resolutionContext = createAsyncLocalStorage<ResolutionContextData>()
|
|
33
|
+
}
|
|
34
|
+
return resolutionContext
|
|
35
|
+
}
|
|
23
36
|
|
|
24
37
|
/**
|
|
25
38
|
* Runs a function within a resolution context.
|
|
@@ -36,7 +49,7 @@ export function withResolutionContext<T>(
|
|
|
36
49
|
getHolder: (name: string) => InstanceHolder | undefined,
|
|
37
50
|
fn: () => T,
|
|
38
51
|
): T {
|
|
39
|
-
return
|
|
52
|
+
return getResolutionContext().run({ waiterHolder, getHolder }, fn)
|
|
40
53
|
}
|
|
41
54
|
|
|
42
55
|
/**
|
|
@@ -45,8 +58,10 @@ export function withResolutionContext<T>(
|
|
|
45
58
|
* Returns undefined if we're not inside a resolution context
|
|
46
59
|
* (e.g., when resolving a top-level service that has no parent).
|
|
47
60
|
*/
|
|
48
|
-
export function getCurrentResolutionContext():
|
|
49
|
-
|
|
61
|
+
export function getCurrentResolutionContext():
|
|
62
|
+
| ResolutionContextData
|
|
63
|
+
| undefined {
|
|
64
|
+
return getResolutionContext().getStore()
|
|
50
65
|
}
|
|
51
66
|
|
|
52
67
|
/**
|
|
@@ -59,5 +74,8 @@ export function getCurrentResolutionContext(): ResolutionContextData | undefined
|
|
|
59
74
|
*/
|
|
60
75
|
export function withoutResolutionContext<T>(fn: () => T): T {
|
|
61
76
|
// Run with undefined context to clear any current context
|
|
62
|
-
return
|
|
77
|
+
return getResolutionContext().run(
|
|
78
|
+
undefined as unknown as ResolutionContextData,
|
|
79
|
+
fn,
|
|
80
|
+
)
|
|
63
81
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { IAsyncLocalStorage } from './async-local-storage.types.mjs'
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* A synchronous-only polyfill for AsyncLocalStorage.
|
|
3
5
|
*
|
|
@@ -12,7 +14,7 @@
|
|
|
12
14
|
* 1. Constructors are typically synchronous
|
|
13
15
|
* 2. Circular dependency detection mainly needs sync tracking
|
|
14
16
|
*/
|
|
15
|
-
export class SyncLocalStorage<T> {
|
|
17
|
+
export class SyncLocalStorage<T> implements IAsyncLocalStorage<T> {
|
|
16
18
|
private stack: T[] = []
|
|
17
19
|
|
|
18
20
|
/**
|
|
@@ -213,7 +213,14 @@ export class InstanceResolver {
|
|
|
213
213
|
return null // Proceed with creation
|
|
214
214
|
|
|
215
215
|
default:
|
|
216
|
-
|
|
216
|
+
// For error states, remove the failed holder from storage so we can retry
|
|
217
|
+
if (holder) {
|
|
218
|
+
this.logger?.log(
|
|
219
|
+
`[InstanceResolver] Removing failed instance ${instanceName} from storage to allow retry`,
|
|
220
|
+
)
|
|
221
|
+
storage.delete(instanceName)
|
|
222
|
+
}
|
|
223
|
+
return null // Proceed with creation
|
|
217
224
|
}
|
|
218
225
|
}
|
|
219
226
|
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import type { InstanceHolder } from '../holder/instance-holder.mjs'
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Whether we're running in production mode.
|
|
5
|
+
* In production, circular dependency detection is skipped for performance.
|
|
6
|
+
*/
|
|
7
|
+
const isProduction = process.env.NODE_ENV === 'production'
|
|
8
|
+
|
|
3
9
|
/**
|
|
4
10
|
* Detects circular dependencies by analyzing the waitingFor relationships
|
|
5
11
|
* between service holders.
|
|
6
12
|
*
|
|
7
13
|
* Uses BFS to traverse the waitingFor graph starting from a target holder
|
|
8
14
|
* and checks if following the chain leads back to the waiter, indicating a circular dependency.
|
|
15
|
+
*
|
|
16
|
+
* Note: In production (NODE_ENV === 'production'), detection is skipped for performance.
|
|
9
17
|
*/
|
|
10
18
|
export class CircularDetector {
|
|
11
19
|
/**
|
|
@@ -14,6 +22,8 @@ export class CircularDetector {
|
|
|
14
22
|
* This works by checking if `targetName` (or any holder in its waitingFor chain)
|
|
15
23
|
* is currently waiting for `waiterName`. If so, waiting would create a deadlock.
|
|
16
24
|
*
|
|
25
|
+
* In production mode, this always returns null to skip the BFS traversal overhead.
|
|
26
|
+
*
|
|
17
27
|
* @param waiterName The name of the holder that wants to wait
|
|
18
28
|
* @param targetName The name of the holder being waited on
|
|
19
29
|
* @param getHolder Function to retrieve a holder by name
|
|
@@ -24,6 +34,11 @@ export class CircularDetector {
|
|
|
24
34
|
targetName: string,
|
|
25
35
|
getHolder: (name: string) => InstanceHolder | undefined,
|
|
26
36
|
): string[] | null {
|
|
37
|
+
// Skip circular dependency detection in production for performance
|
|
38
|
+
if (isProduction) {
|
|
39
|
+
return null
|
|
40
|
+
}
|
|
41
|
+
|
|
27
42
|
// Use BFS to find if there's a path from targetName back to waiterName
|
|
28
43
|
const visited = new Set<string>()
|
|
29
44
|
const queue: Array<{ name: string; path: string[] }> = [
|
package/tsdown.config.mts
CHANGED
|
@@ -33,7 +33,7 @@ export default defineConfig([
|
|
|
33
33
|
),
|
|
34
34
|
],
|
|
35
35
|
},
|
|
36
|
-
// Browser build - uses
|
|
36
|
+
// Browser build - uses SyncLocalStorage and skips async_hooks entirely
|
|
37
37
|
{
|
|
38
38
|
entry: {
|
|
39
39
|
'browser/index': 'src/browser.mts',
|
|
@@ -45,6 +45,17 @@ export default defineConfig([
|
|
|
45
45
|
platform: 'browser',
|
|
46
46
|
dts: true,
|
|
47
47
|
target: 'es2022',
|
|
48
|
+
inputOptions(options) {
|
|
49
|
+
return {
|
|
50
|
+
...options,
|
|
51
|
+
resolve: {
|
|
52
|
+
...options.resolve,
|
|
53
|
+
alias: {
|
|
54
|
+
'./async-local-storage.mjs': './async-local-storage.browser.mjs',
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
}
|
|
58
|
+
},
|
|
48
59
|
plugins: [
|
|
49
60
|
withFilter(
|
|
50
61
|
swc.rolldown({
|
package/vitest.config.mts
CHANGED
|
@@ -2,8 +2,30 @@ import { defineProject } from 'vitest/config'
|
|
|
2
2
|
|
|
3
3
|
export default defineProject({
|
|
4
4
|
test: {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
projects: [
|
|
6
|
+
{
|
|
7
|
+
test: {
|
|
8
|
+
include: ['src/**/__tests__/**/*.spec.mts'],
|
|
9
|
+
exclude: ['src/**/__tests__/**/*.browser.spec.mts'],
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
test: {
|
|
14
|
+
include: ['src/**/__tests__/**/*.browser.spec.mts'],
|
|
15
|
+
},
|
|
16
|
+
resolve: {
|
|
17
|
+
alias: {
|
|
18
|
+
'./async-local-storage.mjs': './async-local-storage.browser.mjs',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
test: {
|
|
24
|
+
typecheck: {
|
|
25
|
+
enabled: true,
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
],
|
|
8
30
|
},
|
|
9
31
|
})
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-7jfWsiG4.d.mts","names":[],"sources":["../src/utils/types.mts","../src/interfaces/factory.interface.mts","../src/interfaces/container.interface.mts","../src/utils/get-injectors.mts","../src/utils/get-injectable-token.mts","../src/internal/context/factory-context.mts","../src/token/injection-token.mts","../src/enums/injectable-scope.enum.mts","../src/enums/injectable-type.enum.mts","../src/token/registry.mts","../src/errors/di-error.mts","../src/internal/holder/instance-holder.mts","../src/internal/holder/holder-storage.interface.mts","../src/internal/holder/base-holder-manager.mts","../src/internal/context/request-context.mts","../src/container/scoped-container.mts","../src/internal/lifecycle/lifecycle-event-bus.mts","../src/internal/holder/holder-manager.mts","../src/internal/core/invalidator.mts","../src/internal/core/token-processor.mts","../src/internal/core/service-locator.mts","../src/container/container.mts","../src/testing/test-container.mts"],"sourcesContent":[],"mappings":"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"}
|