-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathall-hooks.type.ts
More file actions
48 lines (48 loc) · 1.57 KB
/
all-hooks.type.ts
File metadata and controls
48 lines (48 loc) · 1.57 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Interface.
import {
AddHook,
AfterAllHook,
AfterEachHook,
BeforeAllHook,
BeforeEachHook,
ChangeHook,
ClearHook,
DestroyHook,
GetHook,
LockHook,
PropertyChangeHook,
SetHook,
SetPropertyHook,
UnlockHook,
UpdateHook,
} from "../interface";
// Type.
import { HookNames } from "./hook-names.type";
/**
* @description The all hooks type.
* @export
* @template T The type of value.
* @template Payload The type of payload.
* @template {HookNames} K The hook names.
* @example
* const example: AllHooks<any, {}, 'add' | 'afterEach'> = {}
*/
export type AllHooks<T, Payload, K extends HookNames> =
(K extends 'add' ? AddHook<T, Payload> : {}) &
(K extends 'afterAll' ? AfterAllHook<T, Payload> : {}) &
(K extends 'afterEach' ? AfterEachHook<T, Payload> : {}) &
(K extends 'beforeAll' ? BeforeAllHook<T, Payload> : {}) &
(K extends 'beforeEach' ? BeforeEachHook<T, Payload> : {}) &
(K extends 'change' ? ChangeHook<T, Payload> : {}) &
(K extends 'clear' ? ClearHook<T, Payload> : {}) &
(K extends 'delete' ? ChangeHook<T, Payload> : {}) &
(K extends 'destroy' ? DestroyHook<Payload> : {}) &
(K extends 'get' ? GetHook<T, Payload> : {}) &
(K extends 'lock' ? LockHook<Payload> : {}) &
(K extends 'propertyChange' ? T extends object ? PropertyChangeHook<T> : {} : {}) &
(K extends 'replace' ? LockHook<Payload> : {}) &
(K extends 'set' ? SetHook<T> : {}) &
(K extends 'setProperty' ? T extends object ? SetPropertyHook<T> : {} : {}) &
(K extends 'unlock' ? UnlockHook<Payload> : {}) &
(K extends 'update' ? UpdateHook<T, Payload> : {})
;