diff --git a/state-machine/state-machine-2.2.d.ts b/state-machine/state-machine-2.2.d.ts index a8682cdd54..0a0967c834 100644 --- a/state-machine/state-machine-2.2.d.ts +++ b/state-machine/state-machine-2.2.d.ts @@ -2,17 +2,11 @@ // Project: https://github.com/jakesgordon/javascript-state-machine // Definitions by: Boris Yankov // Definitions: https://github.com/borisyankov/DefinitelyTyped +// Updated: 2013/01/22 by Maarten Docter interface ErrorCallback { - (name: string, from: string, to: string, args: any[]): void; -} - -interface EventCallback { - event: string; - from: string; - to: string; - msg?: string; + (eventName?: string, from?: string, to?: string, args?: any[], errorCode?: number, errorMessage?: string, ex?: Error): void; // NB. errorCode? See: StateMachine.Error } interface StateMachineEvent { @@ -24,26 +18,50 @@ interface StateMachineEvent { interface StateMachineConfig { initial?: any; // string or { state: 'foo', event: 'setup', defer: true|false } events?: StateMachineEvent[]; - callbacks?: any; + callbacks?: { + [s: string]: (event?: string, from?: string, to?: string, ...args: any[]) => any; + }; target?: any; error?: ErrorCallback; } interface StateMachineStatic { + + VERSION: string; // = "2.2.0" + WILDCARD: string; // = '*' + ASYNC: string; // = 'async' + + Result: { + SUCCEEDED: number; // = 1, the event transitioned successfully from one state to another + NOTRANSITION: number; // = 2, the event was successfull but no state transition was necessary + CANCELLED: number; // = 3, the event was cancelled by the caller in a beforeEvent callback + ASYNC: number; // = 4, the event is asynchronous and the caller is in control of when the transition occurs + }; + + Error: { + INVALID_TRANSITION: number; // = 100, caller tried to fire an event that was innapropriate in the current state + PENDING_TRANSITION: number; // = 200, caller tried to fire an event while an async transition was still pending + INVALID_CALLBACK: number; // = 300, caller provided callback function threw an exception + }; + create(config: StateMachineConfig, target?: any): StateMachine; } interface StateMachine { current: string; - is(sstate: string): bool; + is(state: string): bool; can(event: StateMachineEvent): bool; cannot(event: StateMachineEvent): bool; error: ErrorCallback; - onbeforeevent: EventCallback; - onleaveevent: EventCallback; - onenterevent: EventCallback; - onafterevent: EventCallback; + /* transition - only available when performing async state transitions; otherwise null. Can be a: + [1] function without arguments (see: https://github.com/jakesgordon/javascript-state-machine#asynchronous-state-transitions) + [2] property with a cancel function to cancel the ASYNC event. Example usages: + + [1] fsm.transition(); // called form async callback + [2] fsm.transition.cancel(); + */ + transition?: any; } declare var StateMachine: StateMachineStatic; \ No newline at end of file