jssm 5.65.7 → 5.65.10

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.
@@ -9,7 +9,7 @@ import { version } from './version';
9
9
  * Return the direction of an arrow - `right`, `left`, or `both`.
10
10
  *
11
11
  * ```typescript
12
- * import { arrow_direction } from './jssm';
12
+ * import { arrow_direction } from 'jssm';
13
13
  *
14
14
  * arrow_direction('->'); // 'right'
15
15
  * arrow_direction('<~=>'); // 'both'
@@ -22,7 +22,7 @@ declare function arrow_direction(arrow: JssmArrow): JssmArrowDirection;
22
22
  * Return the direction of an arrow - `right`, `left`, or `both`.
23
23
  *
24
24
  * ```typescript
25
- * import { arrow_left_kind } from './jssm';
25
+ * import { arrow_left_kind } from 'jssm';
26
26
  *
27
27
  * arrow_left_kind('<-'); // 'legal'
28
28
  * arrow_left_kind('<='); // 'main'
@@ -38,7 +38,7 @@ declare function arrow_left_kind(arrow: JssmArrow): JssmArrowKind;
38
38
  * Return the direction of an arrow - `right`, `left`, or `both`.
39
39
  *
40
40
  * ```typescript
41
- * import { arrow_left_kind } from './jssm';
41
+ * import { arrow_left_kind } from 'jssm';
42
42
  *
43
43
  * arrow_left_kind('->'); // 'legal'
44
44
  * arrow_left_kind('=>'); // 'main'
@@ -60,7 +60,7 @@ declare function arrow_right_kind(arrow: JssmArrow): JssmArrowKind;
60
60
  * probably also using {@link compile} and {@link Machine.constructor}.
61
61
  *
62
62
  * ```typescript
63
- * import { parse, compile, Machine } from './jssm';
63
+ * import { parse, compile, Machine } from 'jssm';
64
64
  *
65
65
  * const intermediate = wrap_parse('a -> b;', {});
66
66
  * // [ {key:'transition', from:'a', se:{kind:'->',to:'b'}} ]
@@ -85,7 +85,7 @@ declare function arrow_right_kind(arrow: JssmArrow): JssmArrowKind;
85
85
  * Operator {@link sm}:
86
86
  *
87
87
  * ```typescript
88
- * import { sm } from './jssm';
88
+ * import { sm } from 'jssm';
89
89
  *
90
90
  * const switch = sm`on <=> off;`;
91
91
  * ```
@@ -93,7 +93,7 @@ declare function arrow_right_kind(arrow: JssmArrow): JssmArrowKind;
93
93
  * Method {@link from}:
94
94
  *
95
95
  * ```typescript
96
- * import * as jssm from './jssm';
96
+ * import * as jssm from 'jssm';
97
97
  *
98
98
  * const toggle = jssm.from('up <=> down;');
99
99
  * ```
@@ -111,7 +111,7 @@ declare function wrap_parse(input: string, options?: Object): any;
111
111
  * {@link Machine.construct} to turn the config object into a workable machine.
112
112
  *
113
113
  * ```typescript
114
- * import { parse, compile, Machine } from './jssm';
114
+ * import { parse, compile, Machine } from 'jssm';
115
115
  *
116
116
  * const intermediate = parse('a -> b;');
117
117
  * // [ {key:'transition', from:'a', se:{kind:'->',to:'b'}} ]
@@ -136,7 +136,7 @@ declare function wrap_parse(input: string, options?: Object): any;
136
136
  * Operator {@link sm}:
137
137
  *
138
138
  * ```typescript
139
- * import { sm } from './jssm';
139
+ * import { sm } from 'jssm';
140
140
  *
141
141
  * const switch = sm`on <=> off;`;
142
142
  * ```
@@ -144,7 +144,7 @@ declare function wrap_parse(input: string, options?: Object): any;
144
144
  * Method {@link from}:
145
145
  *
146
146
  * ```typescript
147
- * import * as jssm from './jssm';
147
+ * import * as jssm from 'jssm';
148
148
  *
149
149
  * const toggle = jssm.from('up <=> down;');
150
150
  * ```
@@ -213,13 +213,18 @@ declare class Machine<mDT> {
213
213
  _forced_transition_hook: HookHandler | undefined;
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
+ /********
217
+ *
218
+ * Internal method for fabricating states. Not meant for external use.
219
+ *
220
+ */
216
221
  _new_state(state_config: JssmGenericState): StateType;
217
222
  /*********
218
223
  *
219
224
  * Get the current state of a machine.
220
225
  *
221
226
  * ```typescript
222
- * import * as jssm from './jssm';
227
+ * import * as jssm from 'jssm';
223
228
  *
224
229
  * const switch = jssm.from('on <=> off;');
225
230
  * console.log( switch.state() ); // 'on'
@@ -230,7 +235,38 @@ declare class Machine<mDT> {
230
235
  *
231
236
  */
232
237
  state(): StateType;
238
+ /********
239
+ *
240
+ * Check whether a given state is final (either has no exits or is marked
241
+ * `complete`.)
242
+ *
243
+ * ```typescript
244
+ * import { sm, state_is_final } from 'jssm';
245
+ *
246
+ * const final_test = sm`first -> second;`;
247
+ *
248
+ * console.log( final_test.state_is_final('first') ); // false
249
+ * console.log( final_test.state_is_final('second') ); // true
250
+ * ```
251
+ *
252
+ */
233
253
  state_is_final(whichState: StateType): boolean;
254
+ /********
255
+ *
256
+ * Check whether the current state is final (either has no exits or is marked
257
+ * `complete`.)
258
+ *
259
+ * ```typescript
260
+ * import { sm, state_is_final } from 'jssm';
261
+ *
262
+ * const final_test = sm`first -> second;`;
263
+ *
264
+ * console.log( final_test.is_final() ); // false
265
+ * state.transition('second');
266
+ * console.log( final_test.is_final() ); // true
267
+ * ```
268
+ *
269
+ */
234
270
  is_final(): boolean;
235
271
  graph_layout(): string;
236
272
  dot_preamble(): string;
@@ -253,7 +289,7 @@ declare class Machine<mDT> {
253
289
  * these states is not guaranteed.
254
290
  *
255
291
  * ```typescript
256
- * import * as jssm from './jssm';
292
+ * import * as jssm from 'jssm';
257
293
  *
258
294
  * const switch = jssm.from('on <=> off;');
259
295
  * console.log( switch.states() ); // ['on', 'off']
@@ -267,10 +303,10 @@ declare class Machine<mDT> {
267
303
  * Check whether the machine knows a given state.
268
304
  *
269
305
  * ```typescript
270
- * import * as jssm from './jssm';
306
+ * import * as jssm from 'jssm';
271
307
  *
272
308
  * const switch = jssm.from('on <=> off;');
273
-
309
+ *
274
310
  * console.log( switch.has_state('off') ); // true
275
311
  * console.log( switch.has_state('dance') ); // false
276
312
  * ```
@@ -291,7 +327,55 @@ declare class Machine<mDT> {
291
327
  probabilistic_transition(): boolean;
292
328
  probabilistic_walk(n: number): Array<StateType>;
293
329
  probabilistic_histo_walk(n: number): Map<StateType, number>;
330
+ /********
331
+ *
332
+ * List all actions available from this state. Please note that the order of
333
+ * the actions is not guaranteed.
334
+ *
335
+ * ```typescript
336
+ * import { sm } from 'jssm';
337
+ *
338
+ * const machine = sm`
339
+ * red 'next' -> green 'next' -> yellow 'next' -> red;
340
+ * [red yellow green] 'shutdown' ~> off 'start' -> red;
341
+ * `;
342
+ *
343
+ * console.log( machine.state() ); // logs 'red'
344
+ * console.log( machine.actions() ); // logs ['next', 'shutdown']
345
+ *
346
+ * machine.action('next'); // true
347
+ * console.log( machine.state() ); // logs 'green'
348
+ * console.log( machine.actions() ); // logs ['next', 'shutdown']
349
+ *
350
+ * machine.action('shutdown'); // true
351
+ * console.log( machine.state() ); // logs 'off'
352
+ * console.log( machine.actions() ); // logs ['start']
353
+ *
354
+ * machine.action('start'); // true
355
+ * console.log( machine.state() ); // logs 'red'
356
+ * console.log( machine.actions() ); // logs ['next', 'shutdown']
357
+ * ```
358
+ *
359
+ */
294
360
  actions(whichState?: StateType): Array<StateType>;
361
+ /********
362
+ *
363
+ * List all states that have a specific action attached. Please note that
364
+ * the order of the states is not guaranteed.
365
+ *
366
+ * ```typescript
367
+ * import { sm } from 'jssm';
368
+ *
369
+ * const machine = sm`
370
+ * red 'next' -> green 'next' -> yellow 'next' -> red;
371
+ * [red yellow green] 'shutdown' ~> off 'start' -> red;
372
+ * `;
373
+ *
374
+ * console.log( machine.list_states_having_action('next') ); // ['red', 'green', 'yellow']
375
+ * console.log( machine.list_states_having_action('start') ); // ['off']
376
+ * ```
377
+ *
378
+ */
295
379
  list_states_having_action(whichState: StateType): Array<StateType>;
296
380
  list_exit_actions(whichState?: StateType): Array<StateType>;
297
381
  probable_action_exits(whichState?: StateType): Array<any>;
@@ -338,7 +422,7 @@ declare class Machine<mDT> {
338
422
  *
339
423
  *
340
424
  * ```typescript
341
- * import * as jssm from './jssm';
425
+ * import * as jssm from 'jssm';
342
426
  *
343
427
  * const switch = jssm.from('on <=> off;');
344
428
  * ```
@@ -355,7 +439,7 @@ declare function sm<mDT>(template_strings: TemplateStringsArray, ...remainder: a
355
439
  * template expression.
356
440
  *
357
441
  * ```typescript
358
- * import * as jssm from './jssm';
442
+ * import * as jssm from 'jssm';
359
443
  *
360
444
  * const switch = jssm.from('on <=> off;');
361
445
  * ```
package/dist/es6/jssm.js CHANGED
@@ -11,7 +11,7 @@ import { JssmError } from './jssm_error';
11
11
  * Return the direction of an arrow - `right`, `left`, or `both`.
12
12
  *
13
13
  * ```typescript
14
- * import { arrow_direction } from './jssm';
14
+ * import { arrow_direction } from 'jssm';
15
15
  *
16
16
  * arrow_direction('->'); // 'right'
17
17
  * arrow_direction('<~=>'); // 'both'
@@ -76,7 +76,7 @@ function arrow_direction(arrow) {
76
76
  * Return the direction of an arrow - `right`, `left`, or `both`.
77
77
  *
78
78
  * ```typescript
79
- * import { arrow_left_kind } from './jssm';
79
+ * import { arrow_left_kind } from 'jssm';
80
80
  *
81
81
  * arrow_left_kind('<-'); // 'legal'
82
82
  * arrow_left_kind('<='); // 'main'
@@ -133,7 +133,7 @@ function arrow_left_kind(arrow) {
133
133
  * Return the direction of an arrow - `right`, `left`, or `both`.
134
134
  *
135
135
  * ```typescript
136
- * import { arrow_left_kind } from './jssm';
136
+ * import { arrow_left_kind } from 'jssm';
137
137
  *
138
138
  * arrow_left_kind('->'); // 'legal'
139
139
  * arrow_left_kind('=>'); // 'main'
@@ -231,7 +231,7 @@ function makeTransition(this_se, from, to, isRight, _wasList, _wasIndex) {
231
231
  * probably also using {@link compile} and {@link Machine.constructor}.
232
232
  *
233
233
  * ```typescript
234
- * import { parse, compile, Machine } from './jssm';
234
+ * import { parse, compile, Machine } from 'jssm';
235
235
  *
236
236
  * const intermediate = wrap_parse('a -> b;', {});
237
237
  * // [ {key:'transition', from:'a', se:{kind:'->',to:'b'}} ]
@@ -256,7 +256,7 @@ function makeTransition(this_se, from, to, isRight, _wasList, _wasIndex) {
256
256
  * Operator {@link sm}:
257
257
  *
258
258
  * ```typescript
259
- * import { sm } from './jssm';
259
+ * import { sm } from 'jssm';
260
260
  *
261
261
  * const switch = sm`on <=> off;`;
262
262
  * ```
@@ -264,7 +264,7 @@ function makeTransition(this_se, from, to, isRight, _wasList, _wasIndex) {
264
264
  * Method {@link from}:
265
265
  *
266
266
  * ```typescript
267
- * import * as jssm from './jssm';
267
+ * import * as jssm from 'jssm';
268
268
  *
269
269
  * const toggle = jssm.from('up <=> down;');
270
270
  * ```
@@ -356,7 +356,7 @@ function compile_rule_handler(rule) {
356
356
  * {@link Machine.construct} to turn the config object into a workable machine.
357
357
  *
358
358
  * ```typescript
359
- * import { parse, compile, Machine } from './jssm';
359
+ * import { parse, compile, Machine } from 'jssm';
360
360
  *
361
361
  * const intermediate = parse('a -> b;');
362
362
  * // [ {key:'transition', from:'a', se:{kind:'->',to:'b'}} ]
@@ -381,7 +381,7 @@ function compile_rule_handler(rule) {
381
381
  * Operator {@link sm}:
382
382
  *
383
383
  * ```typescript
384
- * import { sm } from './jssm';
384
+ * import { sm } from 'jssm';
385
385
  *
386
386
  * const switch = sm`on <=> off;`;
387
387
  * ```
@@ -389,7 +389,7 @@ function compile_rule_handler(rule) {
389
389
  * Method {@link from}:
390
390
  *
391
391
  * ```typescript
392
- * import * as jssm from './jssm';
392
+ * import * as jssm from 'jssm';
393
393
  *
394
394
  * const toggle = jssm.from('up <=> down;');
395
395
  * ```
@@ -643,6 +643,11 @@ class Machine {
643
643
  }
644
644
  });
645
645
  }
646
+ /********
647
+ *
648
+ * Internal method for fabricating states. Not meant for external use.
649
+ *
650
+ */
646
651
  _new_state(state_config) {
647
652
  if (this._states.has(state_config.name)) {
648
653
  throw new JssmError(this, `state ${JSON.stringify(state_config.name)} already exists`);
@@ -655,7 +660,7 @@ class Machine {
655
660
  * Get the current state of a machine.
656
661
  *
657
662
  * ```typescript
658
- * import * as jssm from './jssm';
663
+ * import * as jssm from 'jssm';
659
664
  *
660
665
  * const switch = jssm.from('on <=> off;');
661
666
  * console.log( switch.state() ); // 'on'
@@ -675,9 +680,40 @@ class Machine {
675
680
  return true; // todo whargarbl
676
681
  }
677
682
  */
683
+ /********
684
+ *
685
+ * Check whether a given state is final (either has no exits or is marked
686
+ * `complete`.)
687
+ *
688
+ * ```typescript
689
+ * import { sm, state_is_final } from 'jssm';
690
+ *
691
+ * const final_test = sm`first -> second;`;
692
+ *
693
+ * console.log( final_test.state_is_final('first') ); // false
694
+ * console.log( final_test.state_is_final('second') ); // true
695
+ * ```
696
+ *
697
+ */
678
698
  state_is_final(whichState) {
679
699
  return ((this.state_is_terminal(whichState)) && (this.state_is_complete(whichState)));
680
700
  }
701
+ /********
702
+ *
703
+ * Check whether the current state is final (either has no exits or is marked
704
+ * `complete`.)
705
+ *
706
+ * ```typescript
707
+ * import { sm, state_is_final } from 'jssm';
708
+ *
709
+ * const final_test = sm`first -> second;`;
710
+ *
711
+ * console.log( final_test.is_final() ); // false
712
+ * state.transition('second');
713
+ * console.log( final_test.is_final() ); // true
714
+ * ```
715
+ *
716
+ */
681
717
  is_final() {
682
718
  // return ((!this.is_changing()) && this.state_is_final(this.state()));
683
719
  return this.state_is_final(this.state());
@@ -748,7 +784,7 @@ class Machine {
748
784
  * these states is not guaranteed.
749
785
  *
750
786
  * ```typescript
751
- * import * as jssm from './jssm';
787
+ * import * as jssm from 'jssm';
752
788
  *
753
789
  * const switch = jssm.from('on <=> off;');
754
790
  * console.log( switch.states() ); // ['on', 'off']
@@ -772,10 +808,10 @@ class Machine {
772
808
  * Check whether the machine knows a given state.
773
809
  *
774
810
  * ```typescript
775
- * import * as jssm from './jssm';
811
+ * import * as jssm from 'jssm';
776
812
  *
777
813
  * const switch = jssm.from('on <=> off;');
778
-
814
+ *
779
815
  * console.log( switch.has_state('off') ); // true
780
816
  * console.log( switch.has_state('dance') ); // false
781
817
  * ```
@@ -851,6 +887,36 @@ class Machine {
851
887
  probabilistic_histo_walk(n) {
852
888
  return histograph(this.probabilistic_walk(n));
853
889
  }
890
+ /********
891
+ *
892
+ * List all actions available from this state. Please note that the order of
893
+ * the actions is not guaranteed.
894
+ *
895
+ * ```typescript
896
+ * import { sm } from 'jssm';
897
+ *
898
+ * const machine = sm`
899
+ * red 'next' -> green 'next' -> yellow 'next' -> red;
900
+ * [red yellow green] 'shutdown' ~> off 'start' -> red;
901
+ * `;
902
+ *
903
+ * console.log( machine.state() ); // logs 'red'
904
+ * console.log( machine.actions() ); // logs ['next', 'shutdown']
905
+ *
906
+ * machine.action('next'); // true
907
+ * console.log( machine.state() ); // logs 'green'
908
+ * console.log( machine.actions() ); // logs ['next', 'shutdown']
909
+ *
910
+ * machine.action('shutdown'); // true
911
+ * console.log( machine.state() ); // logs 'off'
912
+ * console.log( machine.actions() ); // logs ['start']
913
+ *
914
+ * machine.action('start'); // true
915
+ * console.log( machine.state() ); // logs 'red'
916
+ * console.log( machine.actions() ); // logs ['next', 'shutdown']
917
+ * ```
918
+ *
919
+ */
854
920
  actions(whichState = this.state()) {
855
921
  const wstate = this._reverse_actions.get(whichState);
856
922
  if (wstate) {
@@ -860,6 +926,24 @@ class Machine {
860
926
  throw new JssmError(this, `No such state ${JSON.stringify(whichState)}`);
861
927
  }
862
928
  }
929
+ /********
930
+ *
931
+ * List all states that have a specific action attached. Please note that
932
+ * the order of the states is not guaranteed.
933
+ *
934
+ * ```typescript
935
+ * import { sm } from 'jssm';
936
+ *
937
+ * const machine = sm`
938
+ * red 'next' -> green 'next' -> yellow 'next' -> red;
939
+ * [red yellow green] 'shutdown' ~> off 'start' -> red;
940
+ * `;
941
+ *
942
+ * console.log( machine.list_states_having_action('next') ); // ['red', 'green', 'yellow']
943
+ * console.log( machine.list_states_having_action('start') ); // ['off']
944
+ * ```
945
+ *
946
+ */
863
947
  list_states_having_action(whichState) {
864
948
  const wstate = this._actions.get(whichState);
865
949
  if (wstate) {
@@ -1252,7 +1336,7 @@ class Machine {
1252
1336
  *
1253
1337
  *
1254
1338
  * ```typescript
1255
- * import * as jssm from './jssm';
1339
+ * import * as jssm from 'jssm';
1256
1340
  *
1257
1341
  * const switch = jssm.from('on <=> off;');
1258
1342
  * ```
@@ -1281,7 +1365,7 @@ function sm(template_strings, ...remainder /* , arguments */) {
1281
1365
  * template expression.
1282
1366
  *
1283
1367
  * ```typescript
1284
- * import * as jssm from './jssm';
1368
+ * import * as jssm from 'jssm';
1285
1369
  *
1286
1370
  * const switch = jssm.from('on <=> off;');
1287
1371
  * ```
@@ -1,2 +1,2 @@
1
- const version = "5.65.7";
1
+ const version = "5.65.10";
2
2
  export { version };