UNPKG

1.56 kBTypeScriptView Raw
1import { Capabilities } from './capabilities';
2import { Arguments } from '../runtime';
3
4export interface ComponentCapabilitiesVersions {
5 '3.4': {
6 asyncLifecycleCallbacks?: boolean;
7 destructor?: boolean;
8 };
9
10 '3.13': {
11 asyncLifecycleCallbacks?: boolean;
12 destructor?: boolean;
13 updateHook?: boolean;
14 };
15}
16
17export interface ComponentCapabilities extends Capabilities {
18 asyncLifeCycleCallbacks: boolean;
19 destructor: boolean;
20 updateHook: boolean;
21}
22
23export interface ComponentManager<ComponentStateBucket> {
24 capabilities: ComponentCapabilities;
25 createComponent(factory: object, args: Arguments): ComponentStateBucket;
26 getContext(instance: ComponentStateBucket): unknown;
27}
28
29export interface ComponentManagerWithAsyncLifeCycleCallbacks<ComponentStateBucket>
30 extends ComponentManager<ComponentStateBucket> {
31 didCreateComponent(instance: ComponentStateBucket): void;
32}
33
34export interface ComponentManagerWithUpdateHook<ComponentStateBucket>
35 extends ComponentManager<ComponentStateBucket> {
36 updateComponent(instance: ComponentStateBucket, args: Arguments): void;
37}
38
39export interface ComponentManagerWithAsyncUpdateHook<ComponentStateBucket>
40 extends ComponentManagerWithAsyncLifeCycleCallbacks<ComponentStateBucket>,
41 ComponentManagerWithUpdateHook<ComponentStateBucket> {
42 didUpdateComponent(instance: ComponentStateBucket): void;
43}
44
45export interface ComponentManagerWithDestructors<ComponentStateBucket>
46 extends ComponentManager<ComponentStateBucket> {
47 destroyComponent(instance: ComponentStateBucket): void;
48}