-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathtypes.ts
More file actions
88 lines (69 loc) · 2.7 KB
/
types.ts
File metadata and controls
88 lines (69 loc) · 2.7 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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import SplitIO from '../../types/splitio';
/** Readiness event types */
export type SDK_READY_TIMED_OUT = 'init::timeout'
export type SDK_READY = 'init::ready'
export type SDK_READY_FROM_CACHE = 'init::cache-ready'
export type SDK_UPDATE = 'state::update'
export type SDK_DESTROY = 'state::destroy'
export type IReadinessEvent = SDK_READY_TIMED_OUT | SDK_READY | SDK_READY_FROM_CACHE | SDK_UPDATE | SDK_DESTROY
export interface IReadinessEventEmitter extends SplitIO.IEventEmitter {
emit(event: IReadinessEvent, ...args: any[]): boolean
}
/** Splits data emitter */
type SDK_SPLITS_ARRIVED = 'state::splits-arrived'
type SDK_SPLITS_CACHE_LOADED = 'state::splits-cache-loaded'
type ISplitsEvent = SDK_SPLITS_ARRIVED | SDK_SPLITS_CACHE_LOADED
export interface ISplitsEventEmitter extends SplitIO.IEventEmitter {
emit(event: ISplitsEvent, ...args: any[]): boolean
on(event: ISplitsEvent, listener: (...args: any[]) => void): this;
on(event: SDK_UPDATE, listener: (metadata: SplitIO.SdkUpdateMetadata) => void): this;
once(event: ISplitsEvent, listener: (...args: any[]) => void): this;
splitsArrived: boolean
splitsCacheLoaded: boolean
hasInit: boolean,
initCallbacks: (() => void)[]
}
/** Segments data emitter */
type SDK_SEGMENTS_ARRIVED = 'state::segments-arrived'
type ISegmentsEvent = SDK_SEGMENTS_ARRIVED
export interface ISegmentsEventEmitter extends SplitIO.IEventEmitter {
emit(event: ISegmentsEvent, ...args: any[]): boolean
on(event: ISegmentsEvent, listener: (...args: any[]) => void): this;
on(event: SDK_UPDATE, listener: (metadata: SplitIO.SdkUpdateMetadata) => void): this;
once(event: ISegmentsEvent, listener: (...args: any[]) => void): this;
segmentsArrived: boolean
}
/** Readiness manager */
export interface IReadinessManager {
/** Event emitters */
splits: ISplitsEventEmitter,
segments: ISegmentsEventEmitter,
gate: IReadinessEventEmitter,
/** Readiness status */
isReady(): boolean,
isReadyFromCache(): boolean,
isTimedout(): boolean,
hasTimedout(): boolean,
isDestroyed(): boolean,
isOperational(): boolean,
lastUpdate(): number,
metadataReady(): SplitIO.SdkReadyMetadata,
timeout(): void,
setDestroyed(): void,
destroy(): void,
init(): void,
/** for client-side */
shared(): IReadinessManager,
}
/** SDK readiness manager */
export interface ISdkReadinessManager {
readinessManager: IReadinessManager
sdkStatus: SplitIO.IStatusInterface
/**
* Increment internalReadyCbCount, an offset value of SDK_READY listeners that are added/removed internally
* by the SDK. It is required to properly log the warning 'No listeners for SDK Readiness detected'
*/
incInternalReadyCbCount(): void
/** for client-side */
shared(): ISdkReadinessManager
}