jssm 5.65.2 → 5.65.3

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.
@@ -51,13 +51,117 @@ 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
+ * ```typescript
86
+ * import { sm } from './jssm';
87
+ *
88
+ * const switch = sm`on <=> off;`;
89
+ * ```
90
+ *
91
+ * &hellip; or &hellip;
92
+ *
93
+ * ```typescript
94
+ * import * as jssm from './jssm';
95
+ *
96
+ * const toggle = jssm.from('up <=> down;');
97
+ * ```
98
+ *
99
+ * `wrap_parse` itself is an internal convenience method for alting out an
100
+ * object as the options call. Not generally meant for external use.
56
101
  *
57
102
  */
58
103
  declare function wrap_parse(input: string, options?: Object): any;
104
+ /*********
105
+ *
106
+ * Compile a machine's JSON intermediate representation to a config object. If
107
+ * you're using this (probably don't,) you're probably also using
108
+ * {@link parse} to get the IR, and the object constructor
109
+ * {@link Machine.construct} to turn the config object into a workable machine.
110
+ *
111
+ * ```typescript
112
+ * import { parse, compile, Machine } from './jssm';
113
+ *
114
+ * const intermediate = parse('a -> b;');
115
+ * // [ {key:'transition', from:'a', se:{kind:'->',to:'b'}} ]
116
+ *
117
+ * const cfg = compile(intermediate);
118
+ * // { start_states:['a'], transitions: [{ from:'a', to:'b', kind:'legal', forced_only:false, main_path:false }] }
119
+ *
120
+ * const machine = new Machine(cfg);
121
+ * // Machine { _instance_name: undefined, _state: 'a', ...
122
+ * ```
123
+ *
124
+ * This method is mostly for plugin and intermediate tool authors, or people
125
+ * who need to work with the machine's intermediate representation.
126
+ *
127
+ * # Hey!
128
+ *
129
+ * Most people looking at this want either the `sm` operator or method `from`,
130
+ * which perform all the steps in the chain. The library's author mostly uses
131
+ * operator `sm`, and mostly falls back to `.from` when needing to parse
132
+ * strings dynamically instead of from template literals.
133
+ *
134
+ * ```typescript
135
+ * import { sm } from './jssm';
136
+ *
137
+ * const switch = sm`on <=> off;`;
138
+ * ```
139
+ *
140
+ * &hellip; or &hellip;
141
+ *
142
+ * ```typescript
143
+ * import * as jssm from './jssm';
144
+ *
145
+ * const toggle = jssm.from('up <=> down;');
146
+ * ```
147
+ *
148
+ */
59
149
  declare function compile<mDT>(tree: JssmParseTree): JssmGenericConfig<mDT>;
150
+ /*********
151
+ *
152
+ * An internal convenience wrapper for parsing then compiling a machine string.
153
+ * Not generally meant for external use. Please see {@link compile} or
154
+ * {@link sm}.
155
+ *
156
+ */
60
157
  declare function make<mDT>(plan: string): JssmGenericConfig<mDT>;
158
+ /*********
159
+ *
160
+ * An internal method meant to take a series of declarations and fold them into
161
+ * a single multi-faceted declaration, in the process of building a state. Not
162
+ * generally meant for external use.
163
+ *
164
+ */
61
165
  declare function transfer_state_properties(state_decl: JssmStateDeclaration): JssmStateDeclaration;
62
166
  declare class Machine<mDT> {
63
167
  _state: StateType;
package/dist/es6/jssm.js CHANGED
@@ -222,13 +222,64 @@ function makeTransition(this_se, from, to, isRight, _wasList, _wasIndex) {
222
222
  }
223
223
  /*********
224
224
  *
225
- * Internal convenience method for alting out an object as the options call.
226
- * Not generally meant for external use.
225
+ * This method wraps the parser call that comes from the peg grammar,
226
+ * {@link parse}. Generally neither this nor that should be used directly
227
+ * unless you mean to develop plugins or extensions for the machine.
228
+ *
229
+ * Parses the intermediate representation of a compiled string down to a
230
+ * machine configuration object. If you're using this (probably don't,) you're
231
+ * probably also using {@link compile} and {@link Machine.constructor}.
232
+ *
233
+ * ```typescript
234
+ * import { parse, compile, Machine } from './jssm';
235
+ *
236
+ * const intermediate = wrap_parse('a -> b;', {});
237
+ * // [ {key:'transition', from:'a', se:{kind:'->',to:'b'}} ]
238
+ *
239
+ * const cfg = compile(intermediate);
240
+ * // { start_states:['a'], transitions: [{ from:'a', to:'b', kind:'legal', forced_only:false, main_path:false }] }
241
+ *
242
+ * const machine = new Machine(cfg);
243
+ * // Machine { _instance_name: undefined, _state: 'a', ...
244
+ * ```
245
+ *
246
+ * This method is mostly for plugin and intermediate tool authors, or people
247
+ * who need to work with the machine's intermediate representation.
248
+ *
249
+ * # Hey!
250
+ *
251
+ * Most people looking at this want either the `sm` operator or method `from`,
252
+ * which perform all the steps in the chain. The library's author mostly uses
253
+ * operator `sm`, and mostly falls back to `.from` when needing to parse
254
+ * strings dynamically instead of from template literals.
255
+ *
256
+ * ```typescript
257
+ * import { sm } from './jssm';
258
+ *
259
+ * const switch = sm`on <=> off;`;
260
+ * ```
261
+ *
262
+ * &hellip; or &hellip;
263
+ *
264
+ * ```typescript
265
+ * import * as jssm from './jssm';
266
+ *
267
+ * const toggle = jssm.from('up <=> down;');
268
+ * ```
269
+ *
270
+ * `wrap_parse` itself is an internal convenience method for alting out an
271
+ * object as the options call. Not generally meant for external use.
227
272
  *
228
273
  */
229
274
  function wrap_parse(input, options) {
230
275
  return parse(input, options || {});
231
276
  }
277
+ /*********
278
+ *
279
+ * Internal method performing one step in compiling rules for transitions. Not
280
+ * generally meant for external use.
281
+ *
282
+ */
232
283
  function compile_rule_transition_step(acc, from, to, this_se, next_se) {
233
284
  const edges = [];
234
285
  const uFrom = (Array.isArray(from) ? from : [from]), uTo = (Array.isArray(to) ? to : [to]);
@@ -252,9 +303,21 @@ function compile_rule_transition_step(acc, from, to, this_se, next_se) {
252
303
  return new_acc;
253
304
  }
254
305
  }
306
+ /*********
307
+ *
308
+ * Internal method performing one step in compiling rules for transitions. Not
309
+ * generally meant for external use.
310
+ *
311
+ */
255
312
  function compile_rule_handle_transition(rule) {
256
313
  return compile_rule_transition_step([], rule.from, rule.se.to, rule.se, rule.se.se);
257
314
  }
315
+ /*********
316
+ *
317
+ * Internal method performing one step in compiling rules for transitions. Not
318
+ * generally meant for external use.
319
+ *
320
+ */
258
321
  function compile_rule_handler(rule) {
259
322
  if (rule.key === 'transition') {
260
323
  return { agg_as: 'transition', val: compile_rule_handle_transition(rule) };
@@ -283,6 +346,51 @@ function compile_rule_handler(rule) {
283
346
  }
284
347
  throw new JssmError(undefined, `compile_rule_handler: Unknown rule: ${JSON.stringify(rule)}`);
285
348
  }
349
+ /*********
350
+ *
351
+ * Compile a machine's JSON intermediate representation to a config object. If
352
+ * you're using this (probably don't,) you're probably also using
353
+ * {@link parse} to get the IR, and the object constructor
354
+ * {@link Machine.construct} to turn the config object into a workable machine.
355
+ *
356
+ * ```typescript
357
+ * import { parse, compile, Machine } from './jssm';
358
+ *
359
+ * const intermediate = parse('a -> b;');
360
+ * // [ {key:'transition', from:'a', se:{kind:'->',to:'b'}} ]
361
+ *
362
+ * const cfg = compile(intermediate);
363
+ * // { start_states:['a'], transitions: [{ from:'a', to:'b', kind:'legal', forced_only:false, main_path:false }] }
364
+ *
365
+ * const machine = new Machine(cfg);
366
+ * // Machine { _instance_name: undefined, _state: 'a', ...
367
+ * ```
368
+ *
369
+ * This method is mostly for plugin and intermediate tool authors, or people
370
+ * who need to work with the machine's intermediate representation.
371
+ *
372
+ * # Hey!
373
+ *
374
+ * Most people looking at this want either the `sm` operator or method `from`,
375
+ * which perform all the steps in the chain. The library's author mostly uses
376
+ * operator `sm`, and mostly falls back to `.from` when needing to parse
377
+ * strings dynamically instead of from template literals.
378
+ *
379
+ * ```typescript
380
+ * import { sm } from './jssm';
381
+ *
382
+ * const switch = sm`on <=> off;`;
383
+ * ```
384
+ *
385
+ * &hellip; or &hellip;
386
+ *
387
+ * ```typescript
388
+ * import * as jssm from './jssm';
389
+ *
390
+ * const toggle = jssm.from('up <=> down;');
391
+ * ```
392
+ *
393
+ */
286
394
  function compile(tree) {
287
395
  const results = {
288
396
  graph_layout: [],
@@ -340,9 +448,23 @@ function compile(tree) {
340
448
  });
341
449
  return result_cfg;
342
450
  }
451
+ /*********
452
+ *
453
+ * An internal convenience wrapper for parsing then compiling a machine string.
454
+ * Not generally meant for external use. Please see {@link compile} or
455
+ * {@link sm}.
456
+ *
457
+ */
343
458
  function make(plan) {
344
459
  return compile(wrap_parse(plan));
345
460
  }
461
+ /*********
462
+ *
463
+ * An internal method meant to take a series of declarations and fold them into
464
+ * a single multi-faceted declaration, in the process of building a state. Not
465
+ * generally meant for external use.
466
+ *
467
+ */
346
468
  function transfer_state_properties(state_decl) {
347
469
  state_decl.declarations.map((d) => {
348
470
  switch (d.key) {
@@ -1,2 +1,2 @@
1
- const version = "5.65.2";
1
+ const version = "5.65.3";
2
2
  export { version };