jssm 5.65.2 → 5.65.5

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/jssm.d.ts CHANGED
@@ -51,13 +51,121 @@ declare function arrow_left_kind(arrow: JssmArrow): JssmArrowKind;
51
51
  declare function arrow_right_kind(arrow: JssmArrow): JssmArrowKind;
52
52
  /*********
53
53
  *
54
- * Internal convenience method for alting out an object as the options call.
55
- * Not generally meant for external use.
54
+ * This method wraps the parser call that comes from the peg grammar,
55
+ * {@link parse}. Generally neither this nor that should be used directly
56
+ * unless you mean to develop plugins or extensions for the machine.
57
+ *
58
+ * Parses the intermediate representation of a compiled string down to a
59
+ * machine configuration object. If you're using this (probably don't,) you're
60
+ * probably also using {@link compile} and {@link Machine.constructor}.
61
+ *
62
+ * ```typescript
63
+ * import { parse, compile, Machine } from './jssm';
64
+ *
65
+ * const intermediate = wrap_parse('a -> b;', {});
66
+ * // [ {key:'transition', from:'a', se:{kind:'->',to:'b'}} ]
67
+ *
68
+ * const cfg = compile(intermediate);
69
+ * // { start_states:['a'], transitions: [{ from:'a', to:'b', kind:'legal', forced_only:false, main_path:false }] }
70
+ *
71
+ * const machine = new Machine(cfg);
72
+ * // Machine { _instance_name: undefined, _state: 'a', ...
73
+ * ```
74
+ *
75
+ * This method is mostly for plugin and intermediate tool authors, or people
76
+ * who need to work with the machine's intermediate representation.
77
+ *
78
+ * # Hey!
79
+ *
80
+ * Most people looking at this want either the `sm` operator or method `from`,
81
+ * which perform all the steps in the chain. The library's author mostly uses
82
+ * operator `sm`, and mostly falls back to `.from` when needing to parse
83
+ * strings dynamically instead of from template literals.
84
+ *
85
+ * Operator {@link sm}:
86
+ *
87
+ * ```typescript
88
+ * import { sm } from './jssm';
89
+ *
90
+ * const switch = sm`on <=> off;`;
91
+ * ```
92
+ *
93
+ * Method {@link from}:
94
+ *
95
+ * ```typescript
96
+ * import * as jssm from './jssm';
97
+ *
98
+ * const toggle = jssm.from('up <=> down;');
99
+ * ```
100
+ *
101
+ * `wrap_parse` itself is an internal convenience method for alting out an
102
+ * object as the options call. Not generally meant for external use.
56
103
  *
57
104
  */
58
105
  declare function wrap_parse(input: string, options?: Object): any;
106
+ /*********
107
+ *
108
+ * Compile a machine's JSON intermediate representation to a config object. If
109
+ * you're using this (probably don't,) you're probably also using
110
+ * {@link parse} to get the IR, and the object constructor
111
+ * {@link Machine.construct} to turn the config object into a workable machine.
112
+ *
113
+ * ```typescript
114
+ * import { parse, compile, Machine } from './jssm';
115
+ *
116
+ * const intermediate = parse('a -> b;');
117
+ * // [ {key:'transition', from:'a', se:{kind:'->',to:'b'}} ]
118
+ *
119
+ * const cfg = compile(intermediate);
120
+ * // { start_states:['a'], transitions: [{ from:'a', to:'b', kind:'legal', forced_only:false, main_path:false }] }
121
+ *
122
+ * const machine = new Machine(cfg);
123
+ * // Machine { _instance_name: undefined, _state: 'a', ...
124
+ * ```
125
+ *
126
+ * This method is mostly for plugin and intermediate tool authors, or people
127
+ * who need to work with the machine's intermediate representation.
128
+ *
129
+ * # Hey!
130
+ *
131
+ * Most people looking at this want either the `sm` operator or method `from`,
132
+ * which perform all the steps in the chain. The library's author mostly uses
133
+ * operator `sm`, and mostly falls back to `.from` when needing to parse
134
+ * strings dynamically instead of from template literals.
135
+ *
136
+ * Operator {@link sm}:
137
+ *
138
+ * ```typescript
139
+ * import { sm } from './jssm';
140
+ *
141
+ * const switch = sm`on <=> off;`;
142
+ * ```
143
+ *
144
+ * Method {@link from}:
145
+ *
146
+ * ```typescript
147
+ * import * as jssm from './jssm';
148
+ *
149
+ * const toggle = jssm.from('up <=> down;');
150
+ * ```
151
+ *
152
+ */
59
153
  declare function compile<mDT>(tree: JssmParseTree): JssmGenericConfig<mDT>;
154
+ /*********
155
+ *
156
+ * An internal convenience wrapper for parsing then compiling a machine string.
157
+ * Not generally meant for external use. Please see {@link compile} or
158
+ * {@link sm}.
159
+ *
160
+ */
60
161
  declare function make<mDT>(plan: string): JssmGenericConfig<mDT>;
162
+ /*********
163
+ *
164
+ * An internal method meant to take a series of declarations and fold them into
165
+ * a single multi-faceted declaration, in the process of building a state. Not
166
+ * generally meant for external use.
167
+ *
168
+ */
61
169
  declare function transfer_state_properties(state_decl: JssmStateDeclaration): JssmStateDeclaration;
62
170
  declare class Machine<mDT> {
63
171
  _state: StateType;
@@ -177,6 +285,39 @@ declare class Machine<mDT> {
177
285
  instance_name(): string | undefined;
178
286
  sm(template_strings: TemplateStringsArray, ...remainder: any[]): Machine<mDT>;
179
287
  }
288
+ /*********
289
+ *
290
+ * Create a state machine from a template string. This is one of the two main
291
+ * paths for working with JSSM, alongside {@link from}.
292
+ *
293
+ * Use this method when you want to work directly and conveniently with a
294
+ * constant template expression. Use `.from` when you want to pull from
295
+ * dynamic strings.
296
+ *
297
+ *
298
+ * ```typescript
299
+ * import * as jssm from './jssm';
300
+ *
301
+ * const switch = jssm.from('on <=> off;');
302
+ * ```
303
+ *
304
+ */
180
305
  declare function sm<mDT>(template_strings: TemplateStringsArray, ...remainder: any[]): Machine<mDT>;
306
+ /*********
307
+ *
308
+ * Create a state machine from an implementation string. This is one of the
309
+ * two main paths for working with JSSM, alongside {@link sm}.
310
+ *
311
+ * Use this method when you want to conveniently pull a state machine from a
312
+ * string dynamically. Use operator `sm` when you just want to work with a
313
+ * template expression.
314
+ *
315
+ * ```typescript
316
+ * import * as jssm from './jssm';
317
+ *
318
+ * const switch = jssm.from('on <=> off;');
319
+ * ```
320
+ *
321
+ */
181
322
  declare function from<mDT>(MachineAsString: string, ExtraConstructorFields?: Partial<JssmGenericConfig<mDT>> | undefined): Machine<mDT>;
182
323
  export { version, transfer_state_properties, Machine, make, wrap_parse as parse, compile, sm, from, arrow_direction, arrow_left_kind, arrow_right_kind, seq, weighted_rand_select, histograph, weighted_sample_select, weighted_histo_key, shapes, gviz_shapes, named_colors };
package/jssm_util.d.ts CHANGED
@@ -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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jssm",
3
- "version": "5.65.2",
3
+ "version": "5.65.5",
4
4
  "engines": {
5
5
  "node": ">=10.0.0"
6
6
  },