jssm 5.45.0 → 5.47.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.
Files changed (82) hide show
  1. package/dist/es6/jssm.d.ts +3 -1
  2. package/dist/es6/jssm.js +13 -6
  3. package/dist/es6/jssm_types.d.ts +6 -5
  4. package/dist/es6/version.js +1 -1
  5. package/dist/jssm.es5.cjs.js +1 -1
  6. package/jssm.d.ts +3 -1
  7. package/jssm_types.d.ts +6 -5
  8. package/package.json +2 -3
  9. package/.codeclimate.yml +0 -22
  10. package/.editorconfig +0 -12
  11. package/.eslintrc +0 -20
  12. package/.nycrc +0 -6
  13. package/.travis.yml +0 -9
  14. package/dist/jssm.es5.iife.js +0 -1
  15. package/jest-spec.config.js +0 -27
  16. package/jest-stoch.config.js +0 -27
  17. package/rollup.config.iife.js +0 -44
  18. package/rollup.config.js +0 -44
  19. package/src/demo/index.html +0 -38
  20. package/src/demo/style.css +0 -2
  21. package/src/ts/jssm-dot.peg +0 -928
  22. package/src/ts/jssm.ts +0 -1239
  23. package/src/ts/jssm_types.ts +0 -385
  24. package/src/ts/jssm_util.ts +0 -117
  25. package/src/ts/tests/actions.spec.ts +0 -167
  26. package/src/ts/tests/arrange.spec.ts +0 -72
  27. package/src/ts/tests/arrange.stoch.ts +0 -4
  28. package/src/ts/tests/array_box_if_string.spec.ts +0 -30
  29. package/src/ts/tests/array_transitions.spec.ts +0 -129
  30. package/src/ts/tests/arrow unicode.spec.ts +0 -88
  31. package/src/ts/tests/arrow.spec.ts +0 -124
  32. package/src/ts/tests/colors.spec.ts +0 -58
  33. package/src/ts/tests/comment.spec.ts +0 -134
  34. package/src/ts/tests/compile.spec.ts +0 -79
  35. package/src/ts/tests/constants.spec.ts +0 -98
  36. package/src/ts/tests/cycles.spec.ts +0 -153
  37. package/src/ts/tests/dot_preamble.spec.ts +0 -16
  38. package/src/ts/tests/embedded_sm.spec.ts +0 -36
  39. package/src/ts/tests/flow.spec.ts +0 -22
  40. package/src/ts/tests/forced transitions.spec.ts +0 -26
  41. package/src/ts/tests/general.spec.ts +0 -933
  42. package/src/ts/tests/graph node lists.spec.ts +0 -21
  43. package/src/ts/tests/histo.spec.ts +0 -24
  44. package/src/ts/tests/hooks.spec.ts +0 -209
  45. package/src/ts/tests/language.spec.ts +0 -37
  46. package/src/ts/tests/language_data/belarussian.json +0 -14
  47. package/src/ts/tests/language_data/bengali.json +0 -16
  48. package/src/ts/tests/language_data/emoji.json +0 -22
  49. package/src/ts/tests/language_data/english.json +0 -17
  50. package/src/ts/tests/language_data/french.json +0 -17
  51. package/src/ts/tests/language_data/german.json +0 -17
  52. package/src/ts/tests/language_data/hebrew.json +0 -16
  53. package/src/ts/tests/language_data/portuguese.json +0 -13
  54. package/src/ts/tests/language_data/russian.json +0 -13
  55. package/src/ts/tests/language_data/spanish.json +0 -17
  56. package/src/ts/tests/language_data/ukrainian.json +0 -19
  57. package/src/ts/tests/layout.spec.ts +0 -29
  58. package/src/ts/tests/machine_attributes.spec.ts +0 -398
  59. package/src/ts/tests/machine_name.spec.ts +0 -14
  60. package/src/ts/tests/named lists.spec.ts +0 -24
  61. package/src/ts/tests/nominated states.spec.ts +0 -133
  62. package/src/ts/tests/parse actions.spec.ts +0 -32
  63. package/src/ts/tests/parse.spec.ts +0 -94
  64. package/src/ts/tests/probability.spec.ts +0 -146
  65. package/src/ts/tests/r639.spec.ts +0 -27
  66. package/src/ts/tests/sample_select.spec.ts +0 -173
  67. package/src/ts/tests/seq.spec.ts +0 -14
  68. package/src/ts/tests/seq.stoch.ts +0 -83
  69. package/src/ts/tests/shapes.spec.ts +0 -63
  70. package/src/ts/tests/sm_tag.spec.ts +0 -37
  71. package/src/ts/tests/special characters.spec.ts +0 -39
  72. package/src/ts/tests/state_declaration.spec.ts +0 -214
  73. package/src/ts/tests/state_style.spec.ts +0 -82
  74. package/src/ts/tests/stop light.spec.ts +0 -157
  75. package/src/ts/tests/stripes.spec.ts +0 -52
  76. package/src/ts/tests/theme.spec.ts +0 -45
  77. package/src/ts/tests/weighted_histo_key.spec.ts +0 -22
  78. package/src/ts/tests/weighted_rand_select.spec.ts +0 -27
  79. package/src/ts/tests/weighted_sample_select.spec.ts +0 -24
  80. package/src/ts/version.ts +0 -3
  81. package/tree.txt +0 -1794
  82. package/tsconfig.json +0 -27
@@ -1,6 +1,6 @@
1
1
  declare type StateType = string;
2
2
  import { JssmGenericState, JssmGenericConfig, JssmTransition, JssmTransitionList, // JssmTransitionRule,
3
- JssmMachineInternalState, JssmParseTree, JssmStateDeclaration, JssmArrow, JssmArrowDirection, JssmArrowKind, JssmLayout, FslDirection, FslTheme, HookDescription } from './jssm_types';
3
+ JssmMachineInternalState, JssmParseTree, JssmStateDeclaration, JssmArrow, JssmArrowDirection, JssmArrowKind, JssmLayout, FslDirection, FslTheme, HookDescription, HookHandler } from './jssm_types';
4
4
  import { seq, weighted_rand_select, weighted_sample_select, histograph, weighted_histo_key } from './jssm_util';
5
5
  import { version } from './version';
6
6
  declare function arrow_direction(arrow: JssmArrow): JssmArrowDirection;
@@ -90,6 +90,8 @@ declare class Machine<mDT> {
90
90
  state_is_complete(whichState: StateType): boolean;
91
91
  has_completes(): boolean;
92
92
  set_hook(HookDesc: HookDescription): void;
93
+ hook(from: string, to: string, handler: HookHandler): Machine<mDT>;
94
+ hook_action(from: string, to: string, action: string, handler: HookHandler): Machine<mDT>;
93
95
  action(name: StateType, newData?: mDT): boolean;
94
96
  transition(newState: StateType, newData?: mDT): boolean;
95
97
  force_transition(newState: StateType, newData?: mDT): boolean;
package/dist/es6/jssm.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import { reduce as reduce_to_639 } from 'reduce-to-639-1';
3
3
  import { seq, weighted_rand_select, weighted_sample_select, histograph, weighted_histo_key, array_box_if_string, hook_name, named_hook_name } from './jssm_util';
4
4
  import { parse } from './jssm-dot'; // TODO FIXME WHARGARBL this could be post-typed
5
- import { version } from './version'; // replaced from package.js in build // TODO FIXME currently broken
5
+ import { version } from './version'; // replaced from package.js in build
6
6
  /* eslint-disable complexity */
7
7
  function arrow_direction(arrow) {
8
8
  switch (String(arrow)) {
@@ -404,7 +404,7 @@ class Machine {
404
404
  // set up the action mapping, so that actions can be looked up by origin
405
405
  if (tr.action) {
406
406
  // forward mapping first by action name
407
- let actionMap = this._actions.get(tr.action); // TODO FIXME ?Map equiv
407
+ let actionMap = this._actions.get(tr.action);
408
408
  if (!(actionMap)) {
409
409
  actionMap = new Map();
410
410
  this._actions.set(tr.action, actionMap);
@@ -416,7 +416,7 @@ class Machine {
416
416
  actionMap.set(tr.from, thisEdgeId);
417
417
  }
418
418
  // reverse mapping first by state origin name
419
- let rActionMap = this._reverse_actions.get(tr.from); // TODO FIXME ?Map equiv
419
+ let rActionMap = this._reverse_actions.get(tr.from);
420
420
  if (!(rActionMap)) {
421
421
  rActionMap = new Map();
422
422
  this._reverse_actions.set(tr.from, rActionMap);
@@ -720,6 +720,16 @@ class Machine {
720
720
  throw new RangeError(`Unknown hook type ${HookDesc.kind}, should be impossible`);
721
721
  }
722
722
  }
723
+ hook(from, to, handler) {
724
+ // TODO: should this throw if setting the hook fails, or ignore it and continue?
725
+ this.set_hook({ kind: 'hook', from, to, handler });
726
+ return this;
727
+ }
728
+ hook_action(from, to, action, handler) {
729
+ // TODO: should this throw if setting the hook fails, or ignore it and continue?
730
+ this.set_hook({ kind: 'named', from, to, action, handler });
731
+ return this;
732
+ }
723
733
  // remove_hook(HookDesc: HookDescription) {
724
734
  // throw 'TODO: Should remove hook here';
725
735
  // }
@@ -832,13 +842,11 @@ class Machine {
832
842
  return this._edges[idx];
833
843
  }
834
844
  valid_action(action, _newData) {
835
- // todo whargarbl implement hooks
836
845
  // todo whargarbl implement data stuff
837
846
  // todo major incomplete whargarbl comeback
838
847
  return this.current_action_for(action) !== undefined;
839
848
  }
840
849
  valid_transition(newState, _newData) {
841
- // todo whargarbl implement hooks
842
850
  // todo whargarbl implement data stuff
843
851
  // todo major incomplete whargarbl comeback
844
852
  const transition_for = this.lookup_transition_for(this.state(), newState);
@@ -851,7 +859,6 @@ class Machine {
851
859
  return true;
852
860
  }
853
861
  valid_force_transition(newState, _newData) {
854
- // todo whargarbl implement hooks
855
862
  // todo whargarbl implement data stuff
856
863
  // todo major incomplete whargarbl comeback
857
864
  return (this.lookup_transition_for(this.state(), newState) !== undefined);
@@ -148,28 +148,29 @@ declare type JssmCompileSeStart<DataType> = {
148
148
  };
149
149
  declare type JssmParseTree = Array<JssmCompileSeStart<StateType>>;
150
150
  declare type JssmParseFunctionType = (string: any) => JssmParseTree;
151
+ declare type HookHandler = Function;
151
152
  declare type BasicHookDescription = {
152
153
  kind: 'hook';
153
154
  from: string;
154
155
  to: string;
155
- handler: Function;
156
+ handler: HookHandler;
156
157
  };
157
158
  declare type HookDescriptionWithAction = {
158
159
  kind: 'named';
159
160
  from: string;
160
161
  to: string;
161
162
  action: string;
162
- handler: Function;
163
+ handler: HookHandler;
163
164
  };
164
165
  declare type EntryHook = {
165
166
  kind: 'entry';
166
167
  to: string;
167
- handler: Function;
168
+ handler: HookHandler;
168
169
  };
169
170
  declare type ExitHook = {
170
171
  kind: 'exit';
171
172
  from: string;
172
- handler: Function;
173
+ handler: HookHandler;
173
174
  };
174
175
  declare type HookDescription = BasicHookDescription | HookDescriptionWithAction | EntryHook | ExitHook;
175
- 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 };
176
+ 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 };
@@ -1,2 +1,2 @@
1
- const version = "5.45.0";
1
+ const version = "5.47.0";
2
2
  export { version };