jssm 5.65.4 → 5.65.8

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.
@@ -214,6 +214,21 @@ declare class Machine<mDT> {
214
214
  _any_transition_hook: HookHandler | undefined;
215
215
  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, instance_name }: JssmGenericConfig<mDT>);
216
216
  _new_state(state_config: JssmGenericState): StateType;
217
+ /*********
218
+ *
219
+ * Get the current state of a machine.
220
+ *
221
+ * ```typescript
222
+ * import * as jssm from './jssm';
223
+ *
224
+ * const switch = jssm.from('on <=> off;');
225
+ * console.log( switch.state() ); // 'on'
226
+ *
227
+ * switch.transition('off');
228
+ * console.log( switch.state() ); // 'off'
229
+ * ```
230
+ *
231
+ */
217
232
  state(): StateType;
218
233
  state_is_final(whichState: StateType): boolean;
219
234
  is_final(): boolean;
@@ -232,8 +247,35 @@ declare class Machine<mDT> {
232
247
  state_declarations(): Map<StateType, JssmStateDeclaration>;
233
248
  fsl_version(): string;
234
249
  machine_state(): JssmMachineInternalState<mDT>;
250
+ /*********
251
+ *
252
+ * List all the states known by the machine. Please note that the order of
253
+ * these states is not guaranteed.
254
+ *
255
+ * ```typescript
256
+ * import * as jssm from './jssm';
257
+ *
258
+ * const switch = jssm.from('on <=> off;');
259
+ * console.log( switch.states() ); // ['on', 'off']
260
+ * ```
261
+ *
262
+ */
235
263
  states(): Array<StateType>;
236
264
  state_for(whichState: StateType): JssmGenericState;
265
+ /*********
266
+ *
267
+ * Check whether the machine knows a given state.
268
+ *
269
+ * ```typescript
270
+ * import * as jssm from './jssm';
271
+ *
272
+ * const switch = jssm.from('on <=> off;');
273
+
274
+ * console.log( switch.has_state('off') ); // true
275
+ * console.log( switch.has_state('dance') ); // false
276
+ * ```
277
+ *
278
+ */
237
279
  has_state(whichState: StateType): boolean;
238
280
  list_edges(): Array<JssmTransition<mDT>>;
239
281
  list_named_transitions(): Map<StateType, number>;
package/dist/es6/jssm.js CHANGED
@@ -650,6 +650,21 @@ class Machine {
650
650
  this._states.set(state_config.name, state_config);
651
651
  return state_config.name;
652
652
  }
653
+ /*********
654
+ *
655
+ * Get the current state of a machine.
656
+ *
657
+ * ```typescript
658
+ * import * as jssm from './jssm';
659
+ *
660
+ * const switch = jssm.from('on <=> off;');
661
+ * console.log( switch.state() ); // 'on'
662
+ *
663
+ * switch.transition('off');
664
+ * console.log( switch.state() ); // 'off'
665
+ * ```
666
+ *
667
+ */
653
668
  state() {
654
669
  return this._state;
655
670
  }
@@ -727,6 +742,19 @@ class Machine {
727
742
  return false; // todo whargarbl
728
743
  }
729
744
  */
745
+ /*********
746
+ *
747
+ * List all the states known by the machine. Please note that the order of
748
+ * these states is not guaranteed.
749
+ *
750
+ * ```typescript
751
+ * import * as jssm from './jssm';
752
+ *
753
+ * const switch = jssm.from('on <=> off;');
754
+ * console.log( switch.states() ); // ['on', 'off']
755
+ * ```
756
+ *
757
+ */
730
758
  states() {
731
759
  return Array.from(this._states.keys());
732
760
  }
@@ -739,6 +767,20 @@ class Machine {
739
767
  throw new JssmError(this, 'No such state', { requested_state: whichState });
740
768
  }
741
769
  }
770
+ /*********
771
+ *
772
+ * Check whether the machine knows a given state.
773
+ *
774
+ * ```typescript
775
+ * import * as jssm from './jssm';
776
+ *
777
+ * const switch = jssm.from('on <=> off;');
778
+
779
+ * console.log( switch.has_state('off') ); // true
780
+ * console.log( switch.has_state('dance') ); // false
781
+ * ```
782
+ *
783
+ */
742
784
  has_state(whichState) {
743
785
  return this._states.get(whichState) !== undefined;
744
786
  }
@@ -1,10 +1,52 @@
1
+ /*******
2
+ *
3
+ * Predicate for validating an array for uniqueness. Not generally meant for
4
+ * external use.
5
+ *
6
+ */
1
7
  declare function arr_uniq_p<T>(el: T, i: number, source: T[]): boolean;
2
8
  declare const array_box_if_string: (n: any) => any;
3
9
  declare const weighted_rand_select: Function;
4
- declare const seq: Function;
10
+ /*******
11
+ *
12
+ * Returns, for a non-negative integer argument `n`, the series `[0 .. n]`.
13
+ *
14
+ * ```typescript
15
+ * import { seq } from './jssm';
16
+ *
17
+ * seq(5); // [0, 1, 2, 3, 4]
18
+ * seq(0); // []
19
+ * ```
20
+ *
21
+ */
22
+ declare function seq(n: number): number[];
23
+ /*******
24
+ *
25
+ * Returns the histograph of an array as a `Map`. Makes no attempt to cope
26
+ * with deep equality; will fail for complex contents, as such.
27
+ *
28
+ * ```typescript
29
+ * import { histograph } from './jssm';
30
+ *
31
+ * histograph( [0, 0, 1, 1, 2, 2, 1] ); // Map()
32
+ * ```
33
+ *
34
+ */
5
35
  declare const histograph: Function;
6
36
  declare const weighted_sample_select: Function;
7
37
  declare const weighted_histo_key: Function;
38
+ /*******
39
+ *
40
+ * Internal method generating names for edges for the hook lookup map. Not
41
+ * meant for external use.
42
+ *
43
+ */
8
44
  declare const hook_name: (from: string, to: string) => string;
45
+ /*******
46
+ *
47
+ * Internal method generating names for actions for the hook lookup map. Not
48
+ * meant for external use.
49
+ *
50
+ */
9
51
  declare const named_hook_name: (from: string, to: string, action: string) => string;
10
52
  export { seq, arr_uniq_p, histograph, weighted_histo_key, weighted_rand_select, weighted_sample_select, array_box_if_string, hook_name, named_hook_name };
@@ -1,3 +1,9 @@
1
+ /*******
2
+ *
3
+ * Predicate for validating an array for uniqueness. Not generally meant for
4
+ * external use.
5
+ *
6
+ */
1
7
  function arr_uniq_p(el, i, source) {
2
8
  return source.indexOf(el) === i;
3
9
  }
@@ -17,8 +23,41 @@ const weighted_rand_select = (options, probability_property = 'probability') =>
17
23
  return options[cursor - 1];
18
24
  };
19
25
  /* eslint-enable flowtype/no-weak-types */
20
- const seq = (n) => (new Array(n)).fill(true)
21
- .map((_, i) => i);
26
+ /*******
27
+ *
28
+ * Returns, for a non-negative integer argument `n`, the series `[0 .. n]`.
29
+ *
30
+ * ```typescript
31
+ * import { seq } from './jssm';
32
+ *
33
+ * seq(5); // [0, 1, 2, 3, 4]
34
+ * seq(0); // []
35
+ * ```
36
+ *
37
+ */
38
+ function seq(n) {
39
+ if (!(Number.isInteger(n))) {
40
+ throw new TypeError('seq/1 takes a non-negative integer n as an argument');
41
+ }
42
+ if (n < 0) {
43
+ throw new TypeError('seq/1 takes a non-negative integer n as an argument');
44
+ }
45
+ return (new Array(n))
46
+ .fill(true)
47
+ .map((_, i) => i);
48
+ }
49
+ /*******
50
+ *
51
+ * Returns the histograph of an array as a `Map`. Makes no attempt to cope
52
+ * with deep equality; will fail for complex contents, as such.
53
+ *
54
+ * ```typescript
55
+ * import { histograph } from './jssm';
56
+ *
57
+ * histograph( [0, 0, 1, 1, 2, 2, 1] ); // Map()
58
+ * ```
59
+ *
60
+ */
22
61
  const histograph = (ar) => // eslint-disable-line flowtype/no-weak-types
23
62
  ar.sort()
24
63
  .reduce((m, v) => // TODO FIXME eslint-disable-line flowtype/no-weak-types,no-sequences
@@ -31,6 +70,18 @@ const weighted_histo_key = (n, opts, prob_prop, extract) => // TODO FIXME no any
31
70
  histograph(weighted_sample_select(n, opts, prob_prop)
32
71
  .map((s) => s[extract] // TODO FIXME eslint-disable-line flowtype/no-weak-types
33
72
  ));
73
+ /*******
74
+ *
75
+ * Internal method generating names for edges for the hook lookup map. Not
76
+ * meant for external use.
77
+ *
78
+ */
34
79
  const hook_name = (from, to) => JSON.stringify([from, to]);
80
+ /*******
81
+ *
82
+ * Internal method generating names for actions for the hook lookup map. Not
83
+ * meant for external use.
84
+ *
85
+ */
35
86
  const named_hook_name = (from, to, action) => JSON.stringify([from, to, action]);
36
87
  export { seq, arr_uniq_p, histograph, weighted_histo_key, weighted_rand_select, weighted_sample_select, array_box_if_string, hook_name, named_hook_name };
@@ -1,2 +1,2 @@
1
- const version = "5.65.4";
1
+ const version = "5.65.8";
2
2
  export { version };