jssm 5.59.1 → 5.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es6/jssm.d.ts +2 -0
- package/dist/es6/jssm.js +28 -1
- package/dist/es6/jssm_types.d.ts +7 -1
- package/dist/es6/version.js +1 -1
- package/dist/jssm.es5.cjs.js +1 -1
- package/dist/jssm.es5.iife.js +1 -1
- package/jssm.d.ts +2 -0
- package/jssm_types.d.ts +7 -1
- package/package.json +1 -1
package/dist/es6/jssm.d.ts
CHANGED
|
@@ -48,6 +48,7 @@ declare class Machine<mDT> {
|
|
|
48
48
|
_exit_hooks: Map<string, Function>;
|
|
49
49
|
_global_action_hooks: Map<string, Function>;
|
|
50
50
|
_any_action_hook: HookHandler | undefined;
|
|
51
|
+
_standard_transition_hook: HookHandler | undefined;
|
|
51
52
|
_any_transition_hook: HookHandler | undefined;
|
|
52
53
|
constructor({ start_states, complete, transitions, machine_author, machine_comment, machine_contributor, machine_definition, machine_language, machine_license, machine_name, machine_version, state_declaration, fsl_version, dot_preamble, arrange_declaration, arrange_start_declaration, arrange_end_declaration, theme, flow, graph_layout }: JssmGenericConfig<mDT>);
|
|
53
54
|
_new_state(state_config: JssmGenericState): StateType;
|
|
@@ -106,6 +107,7 @@ declare class Machine<mDT> {
|
|
|
106
107
|
hook_any_transition(handler: HookHandler): Machine<mDT>;
|
|
107
108
|
hook_entry(to: string, handler: HookHandler): Machine<mDT>;
|
|
108
109
|
hook_exit(from: string, handler: HookHandler): Machine<mDT>;
|
|
110
|
+
edges_between(from: string, to: string): JssmTransition<mDT>[];
|
|
109
111
|
transition_impl(newStateOrAction: StateType, newData: mDT | undefined, wasForced: boolean, wasAction: boolean): boolean;
|
|
110
112
|
action(actionName: StateType, newData?: mDT): boolean;
|
|
111
113
|
transition(newState: StateType, newData?: mDT): boolean;
|
package/dist/es6/jssm.js
CHANGED
|
@@ -357,7 +357,9 @@ class Machine {
|
|
|
357
357
|
this._exit_hooks = new Map();
|
|
358
358
|
this._global_action_hooks = new Map();
|
|
359
359
|
this._any_action_hook = undefined;
|
|
360
|
+
this._standard_transition_hook = undefined;
|
|
360
361
|
this._any_transition_hook = undefined;
|
|
362
|
+
this._standard_transition_hook = undefined;
|
|
361
363
|
if (state_declaration) {
|
|
362
364
|
state_declaration.map((state_decl) => {
|
|
363
365
|
if (this._state_declarations.has(state_decl.state)) { // no repeats
|
|
@@ -728,6 +730,10 @@ class Machine {
|
|
|
728
730
|
this._any_action_hook = HookDesc.handler;
|
|
729
731
|
this._has_hooks = true;
|
|
730
732
|
break;
|
|
733
|
+
case 'standard transition':
|
|
734
|
+
this._standard_transition_hook = HookDesc.handler;
|
|
735
|
+
this._has_hooks = true;
|
|
736
|
+
break;
|
|
731
737
|
case 'any transition':
|
|
732
738
|
this._any_transition_hook = HookDesc.handler;
|
|
733
739
|
this._has_hooks = true;
|
|
@@ -783,11 +789,17 @@ class Machine {
|
|
|
783
789
|
// remove_hook(HookDesc: HookDescription) {
|
|
784
790
|
// throw 'TODO: Should remove hook here';
|
|
785
791
|
// }
|
|
792
|
+
edges_between(from, to) {
|
|
793
|
+
return this._edges.filter(edge => ((edge.from === from) && (edge.to === to)));
|
|
794
|
+
}
|
|
786
795
|
transition_impl(newStateOrAction, newData, wasForced, wasAction) {
|
|
787
|
-
|
|
796
|
+
// TODO the forced-ness behavior needs to be cleaned up a lot here
|
|
797
|
+
// TODO all the callbacks are wrong on forced, action, etc
|
|
798
|
+
let valid = false, trans_type, newState;
|
|
788
799
|
if (wasForced) {
|
|
789
800
|
if (this.valid_force_transition(newStateOrAction, newData)) {
|
|
790
801
|
valid = true;
|
|
802
|
+
trans_type = 'forced';
|
|
791
803
|
newState = newStateOrAction;
|
|
792
804
|
}
|
|
793
805
|
}
|
|
@@ -795,12 +807,14 @@ class Machine {
|
|
|
795
807
|
if (this.valid_action(newStateOrAction, newData)) {
|
|
796
808
|
const edge = this.current_action_edge_for(newStateOrAction);
|
|
797
809
|
valid = true;
|
|
810
|
+
trans_type = edge.kind;
|
|
798
811
|
newState = edge.to;
|
|
799
812
|
}
|
|
800
813
|
}
|
|
801
814
|
else {
|
|
802
815
|
if (this.valid_transition(newStateOrAction, newData)) {
|
|
803
816
|
valid = true;
|
|
817
|
+
trans_type = this.edges_between(this._state, newStateOrAction)[0].kind; // TODO this won't do the right thing if various edges have different types
|
|
804
818
|
newState = newStateOrAction;
|
|
805
819
|
}
|
|
806
820
|
}
|
|
@@ -853,6 +867,19 @@ class Machine {
|
|
|
853
867
|
}
|
|
854
868
|
}
|
|
855
869
|
// 7. edge type hook
|
|
870
|
+
// 7a. standard transition hook
|
|
871
|
+
if (trans_type === 'legal') {
|
|
872
|
+
if (this._standard_transition_hook !== undefined) {
|
|
873
|
+
// todo handle actions
|
|
874
|
+
// todo handle forced
|
|
875
|
+
if (this._standard_transition_hook({ from: this._state, to: newState }) === false) {
|
|
876
|
+
return false;
|
|
877
|
+
}
|
|
878
|
+
}
|
|
879
|
+
}
|
|
880
|
+
// 7b. main type hook
|
|
881
|
+
// not yet implemented
|
|
882
|
+
// 7c. forced transition hook
|
|
856
883
|
// not yet implemented
|
|
857
884
|
// 8. entry hook
|
|
858
885
|
const maybe_en_hook = this._entry_hooks.get(newState);
|
package/dist/es6/jssm_types.d.ts
CHANGED
|
@@ -162,6 +162,12 @@ declare type HookDescriptionWithAction = {
|
|
|
162
162
|
action: string;
|
|
163
163
|
handler: HookHandler;
|
|
164
164
|
};
|
|
165
|
+
declare type StandardTransitionHook = {
|
|
166
|
+
kind: 'standard transition';
|
|
167
|
+
from: string;
|
|
168
|
+
to: string;
|
|
169
|
+
handler: HookHandler;
|
|
170
|
+
};
|
|
165
171
|
declare type AnyTransitionHook = {
|
|
166
172
|
kind: 'any transition';
|
|
167
173
|
handler: HookHandler;
|
|
@@ -185,5 +191,5 @@ declare type ExitHook = {
|
|
|
185
191
|
from: string;
|
|
186
192
|
handler: HookHandler;
|
|
187
193
|
};
|
|
188
|
-
declare type HookDescription = BasicHookDescription | HookDescriptionWithAction | GlobalActionHook | AnyActionHook | AnyTransitionHook | EntryHook | ExitHook;
|
|
194
|
+
declare type HookDescription = BasicHookDescription | HookDescriptionWithAction | GlobalActionHook | AnyActionHook | StandardTransitionHook | AnyTransitionHook | EntryHook | ExitHook;
|
|
189
195
|
export { JssmColor, JssmTransition, JssmTransitions, JssmTransitionList, JssmTransitionRule, JssmArrow, JssmArrowKind, JssmArrowDirection, JssmGenericConfig, JssmGenericState, JssmGenericMachine, JssmParseTree, JssmCompileSe, JssmCompileSeStart, JssmCompileRule, JssmPermitted, JssmPermittedOpt, JssmResult, JssmStateDeclaration, JssmStateDeclarationRule, JssmLayout, JssmParseFunctionType, JssmMachineInternalState, FslDirection, FslTheme, HookDescription, HookHandler };
|
package/dist/es6/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const version = "5.
|
|
1
|
+
const version = "5.60.0";
|
|
2
2
|
export { version };
|