-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
types.d.ts
31 lines (29 loc) · 1 KB
/
types.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { ExtractPropTypes, Ref } from 'vue'
export type Function = (...args: any[]) => {
name: string
}
export interface UseStateEffectConfig {
readonly name?: string | null
readonly destroy?: boolean | 'custom'
readonly debug?: boolean
}
export type UseStateEffectOptions<T = any> = {
readonly destroyLabels: string[]
readonly props: ExtractPropTypes<{ stateEffectDestroyLabel: string } | T>
}
export type UseStateEffect = (
args: UseStateEffectOptions<args.props>,
) => Ref<null> | { [x: string]: Ref<null> | UseStateEffectSignature }
export type UseStateEffectSignature = { _syg: string | 'StateEffect'; _uid: number }
export class StateEffect<T = Function> {
[state: 'StateEffect']: T
_syg: string | 'StateEffect'
_uid: number
constructor(state: T, uid: number): state
}
export function useStateEffect<T extends (...args: any[]) => ReturnType<T>>(
composable: T,
config?: UseStateEffectConfig,
): (opts?: UseStateEffectOptions<opts.props>) => {
[keyof in string | 'state']: ReturnType<T>
}