📄 index.ts
¶
📊 Analysis Summary¶
Metric | Count |
---|---|
🔧 Functions | 2 |
📦 Imports | 4 |
📊 Variables & Constants | 3 |
📑 Type Aliases | 1 |
📚 Table of Contents¶
🛠️ File Location:¶
📂 packages/shared/createSharedComposable/index.ts
📦 Imports¶
Name | Source |
---|---|
EffectScope |
vue |
AnyFn |
../utils |
effectScope |
vue |
tryOnScopeDispose |
../tryOnScopeDispose |
Variables & Constants¶
Name | Type | Kind | Value | Exported |
---|---|---|---|---|
subscribers |
number |
let/var | 0 |
✗ |
state |
ReturnType<Fn> | undefined |
let/var | *not shown* |
✗ |
scope |
EffectScope | undefined |
let/var | *not shown* |
✗ |
Functions¶
createSharedComposable(composable: Fn): SharedComposableReturn<Fn>
¶
Code
export function createSharedComposable<Fn extends AnyFn>(composable: Fn): SharedComposableReturn<Fn> {
let subscribers = 0
let state: ReturnType<Fn> | undefined
let scope: EffectScope | undefined
const dispose = () => {
subscribers -= 1
if (scope && subscribers <= 0) {
scope.stop()
state = undefined
scope = undefined
}
}
return <Fn>((...args) => {
subscribers += 1
if (!scope) {
scope = effectScope(true)
state = scope.run(() => composable(...args))
}
tryOnScopeDispose(dispose)
return state
})
}
-
JSDoc:
-
Parameters:
composable: Fn
- Return Type:
SharedComposableReturn<Fn>
- Calls:
scope.stop
effectScope (from vue)
scope.run
composable
tryOnScopeDispose (from ../tryOnScopeDispose)
dispose(): void
¶
Code
- Return Type:
void
- Calls:
scope.stop