Skip to content

Commit 3aaa9e6

Browse files
author
hyperandroid
committed
version 3.0.0.
Renders v2 totally incompatible.
1 parent 42fdbe6 commit 3aaa9e6

19 files changed

+1606
-805
lines changed

build/src/automata.d.ts

Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
/**
2+
* Created by ibon on 2/8/16.
3+
*/
4+
export interface Message {
5+
msgId: string;
6+
data?: any;
7+
}
8+
export declare type GenericMap<T> = {
9+
[name: string]: T;
10+
};
11+
export declare type Action = <T>(session: Session<T>, message: Message) => T;
12+
export interface AutoTransitionJson {
13+
millis: number;
14+
data?: any;
15+
}
16+
export interface TransitionJson {
17+
from: string;
18+
to: string;
19+
event: string;
20+
timeout?: AutoTransitionJson;
21+
}
22+
export interface FSMJson {
23+
name: string;
24+
state: string[];
25+
initial_state: string;
26+
transition: TransitionJson[];
27+
}
28+
export declare type SessionMessageCallback = <T>(session: Session<T>, message?: Message) => void;
29+
export declare type SessionMessageCallbackError = <T>(session: Session<T>, message?: string) => void;
30+
export declare class SessionConsumeMessagePromise<T> {
31+
_success: SessionMessageCallback;
32+
_error: SessionMessageCallbackError;
33+
constructor();
34+
then(ok: SessionMessageCallback, error?: SessionMessageCallbackError): this;
35+
__success(s: Session<T>, m: Message): void;
36+
__error(s: Session<T>, message?: string): void;
37+
}
38+
export declare class FSMRegistry {
39+
static _fsm: GenericMap<FSM>;
40+
static FSMFromId(id: string): FSM;
41+
static register(fsm_json: FSMJson): void;
42+
static createSession<T>(session_controller: T, fsm_id: string, o?: SessionObserver<T>): SessionConsumeMessagePromise<T>;
43+
}
44+
export interface StateAutoTransitionElement {
45+
millis: number;
46+
message?: Message;
47+
timer_id?: number;
48+
}
49+
export declare class State {
50+
_name: string;
51+
_exit_transitions: GenericMap<Transition>;
52+
_exit_transitions_count: number;
53+
_enter_action: Action;
54+
_exit_action: Action;
55+
_auto_transition: StateAutoTransitionElement[];
56+
constructor(name: string);
57+
transitionForMessage(m: Message): Transition;
58+
addExitTransition(t: Transition): void;
59+
name: string;
60+
__onExit<T>(s: Session<T>, m: Message): boolean;
61+
__onEnter<T>(s: Session<T>, m: Message): boolean;
62+
__startTimeoutTransitionElements<T>(s: Session<T>): void;
63+
__stopTimeoutTransitionElements(): void;
64+
__notifyTimeoutEvent<T>(s: Session<T>, m: Message): void;
65+
__setTimeoutTransitionInfo(millis: number, message: Message): void;
66+
isFinal(): boolean;
67+
toString(): string;
68+
}
69+
export declare class FSM extends State {
70+
_states: State[];
71+
_transitions: Transition[];
72+
_initial_state: State;
73+
constructor(fsm: FSMJson);
74+
initial_state: State;
75+
serialize(): FSMJson;
76+
__createStates(states: string[], initial: string): void;
77+
__setInitialState(st: State): void;
78+
__createInitialTransition(): void;
79+
__createEnterAction(): void;
80+
__findStateByName(n: string): State;
81+
__createTransitions(transitions: TransitionJson[]): void;
82+
}
83+
export declare class Transition {
84+
static __InitialTransitionEvent: string;
85+
static __InitialTransitionMessage: Message;
86+
_event: string;
87+
_initial_state: State;
88+
_final_state: State;
89+
constructor(from: State, to: State, event: string);
90+
event: string;
91+
final_state: State;
92+
toString(): string;
93+
}
94+
export interface SerializedSessionContext {
95+
current_state: string;
96+
prev_state: string;
97+
}
98+
export declare class SessionContext {
99+
_current_state: State;
100+
_prev_state: State;
101+
constructor(c: State, p: State);
102+
serialize(): SerializedSessionContext;
103+
current_state: State;
104+
prev_state: State;
105+
currentStateName(): string;
106+
prevStateName(): string;
107+
printStackTrace(): void;
108+
}
109+
export interface SessionObserverEvent<T> {
110+
session: Session<T>;
111+
message: Message;
112+
custom_message?: Message;
113+
current_state_name: string;
114+
prev_state_name: string;
115+
}
116+
export interface SessionObserver<T> {
117+
contextCreated(e: SessionObserverEvent<T>): void;
118+
contextDestroyed(e: SessionObserverEvent<T>): void;
119+
sessionEnded(e: SessionObserverEvent<T>): void;
120+
customEvent(e: SessionObserverEvent<T>): void;
121+
stateChanged(e: SessionObserverEvent<T>): void;
122+
}
123+
export interface SerializedSession {
124+
ended: boolean;
125+
controller: any;
126+
states: SerializedSessionContext[];
127+
fsm: FSMJson;
128+
}
129+
export declare class Session<T> {
130+
_fsm: FSM;
131+
_session_controller: T;
132+
_states: SessionContext[];
133+
_ended: boolean;
134+
_messages_controller: SessionMessagesController<T>;
135+
_observers: SessionObserver<T>[];
136+
_sessionEndPromise: SessionConsumeMessagePromise<T>;
137+
constructor(session_controller: T);
138+
__initialize(fsm: FSM): SessionConsumeMessagePromise<T>;
139+
__serializeController(): any;
140+
serialize(): SerializedSession;
141+
static deserialize<T, U>(s: SerializedSession, deserializer: (sg: U) => T): Session<T>;
142+
__deserialize(s: SerializedSession): void;
143+
addObserver(o: SessionObserver<T>): void;
144+
/**
145+
* User side message.
146+
*/
147+
dispatchMessage<U extends Message>(m: U): SessionConsumeMessagePromise<T>;
148+
/**
149+
* From SessionController internals.
150+
*/
151+
postMessage(m: Message): void;
152+
__messageImpl(m: Message): void;
153+
current_state: State;
154+
prev_state: State;
155+
__onEnter(m: Message): void;
156+
__onExit(m: Message): void;
157+
__invoke(method: string, m: Message): any;
158+
__consumeMessageForFSM(m: Message): void;
159+
__findStateWithTransitionForMessage(m: Message): State;
160+
__exitAllStatesUpToStateWithTransitionForMessage(stateWitTransition: State, m: Message): void;
161+
__popAllStates(m: Message): void;
162+
__setCurrentState(s: State, m: Message): void;
163+
__endSession(m: Message): void;
164+
current_state_name: string;
165+
prev_state_name: string;
166+
__consumeMessageForState(m: Message): void;
167+
__processMessage(state_for_message: State, m: Message): void;
168+
fireCustomEvent(message: any): void;
169+
__notifySessionEnded(m: Message): void;
170+
__notifyContextCreated(m: Message): void;
171+
__notifyContextDestroyed(m: Message): void;
172+
__notifyStateChange(m: Message): void;
173+
__notify(m: Message, method: string): void;
174+
controller: T;
175+
printStackTrace(): void;
176+
}
177+
export declare class SessionMessageControllerMessageQueue<T> {
178+
_session: Session<T>;
179+
_triggering_message: Message;
180+
_messages_queue: Message[];
181+
_callback: SessionConsumeMessagePromise<T>;
182+
constructor(session: Session<T>, m: Message, callback?: SessionConsumeMessagePromise<T>);
183+
postMessage(m: Message): void;
184+
__consumeMessage(): boolean;
185+
}
186+
export declare class SessionMessagesController<T> {
187+
_session: Session<T>;
188+
_message_queues: SessionMessageControllerMessageQueue<T>[];
189+
_consuming: boolean;
190+
constructor(session: Session<T>);
191+
dispatchMessage(m: Message, callback?: SessionConsumeMessagePromise<T>): void;
192+
postMessage(m: Message): void;
193+
__consumeMessage(): void;
194+
__consumeOne(): void;
195+
}
196+
export declare class Automata {
197+
static RegisterFSM(file: string | FSMJson): void;
198+
static CreateSession<T>(controller: T, fsm_name: string, o?: SessionObserver<T>): SessionConsumeMessagePromise<T>;
199+
}

0 commit comments

Comments
 (0)