jssm 5.97.0 → 5.98.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.
@@ -20651,7 +20651,7 @@ var constants = /*#__PURE__*/Object.freeze({
20651
20651
  named_colors: named_colors$1
20652
20652
  });
20653
20653
 
20654
- const version = "5.97.0", build_time = 1707171988789;
20654
+ const version = "5.98.0", build_time = 1711419354245;
20655
20655
 
20656
20656
  // whargarbl lots of these return arrays could/should be sets
20657
20657
  const { shapes, gviz_shapes, named_colors } = constants;
@@ -20770,11 +20770,10 @@ function state_style_condense(jssk) {
20770
20770
  // TODO add a lotta docblock here
20771
20771
  class Machine {
20772
20772
  // whargarbl this badly needs to be broken up, monolith master
20773
- constructor({ start_states, end_states = [], complete = [], transitions, machine_author, machine_comment, machine_contributor, machine_definition, machine_language, machine_license, machine_name, machine_version, state_declaration, property_definition, state_property, fsl_version, dot_preamble = undefined, arrange_declaration = [], arrange_start_declaration = [], arrange_end_declaration = [], theme = ['default'], flow = 'down', graph_layout = 'dot', instance_name, history, data, default_state_config, default_active_state_config, default_hooked_state_config, default_terminal_state_config, default_start_state_config, default_end_state_config, allows_override, config_allows_override, rng_seed, time_source, timeout_source, clear_timeout_source }) {
20773
+ constructor({ start_states, end_states = [], initial_state, start_states_no_enforce, complete = [], transitions, machine_author, machine_comment, machine_contributor, machine_definition, machine_language, machine_license, machine_name, machine_version, state_declaration, property_definition, state_property, fsl_version, dot_preamble = undefined, arrange_declaration = [], arrange_start_declaration = [], arrange_end_declaration = [], theme = ['default'], flow = 'down', graph_layout = 'dot', instance_name, history, data, default_state_config, default_active_state_config, default_hooked_state_config, default_terminal_state_config, default_start_state_config, default_end_state_config, allows_override, config_allows_override, rng_seed, time_source, timeout_source, clear_timeout_source }) {
20774
20774
  this._time_source = () => new Date().getTime();
20775
20775
  this._create_started = this._time_source();
20776
20776
  this._instance_name = instance_name;
20777
- this._state = start_states[0];
20778
20777
  this._states = new Map();
20779
20778
  this._state_declarations = new Map();
20780
20779
  this._edges = [];
@@ -20996,6 +20995,19 @@ class Machine {
20996
20995
  this._state_properties.set(sp.name, sp.default_value);
20997
20996
  });
20998
20997
  }
20998
+ // set initial state either from the specified or the start state list. validate admission behavior.
20999
+ if (initial_state) {
21000
+ if (!(this._states.has(initial_state))) {
21001
+ throw new JssmError(this, `requested start state ${initial_state} does not exist`);
21002
+ }
21003
+ if ((!(start_states_no_enforce)) && (!(start_states.includes(initial_state)))) {
21004
+ throw new JssmError(this, `requested start state ${initial_state} is not in start state list; add {start_states_no_enforce:true} to constructor options if desired`);
21005
+ }
21006
+ this._state = initial_state;
21007
+ }
21008
+ else {
21009
+ this._state = start_states[0];
21010
+ }
20999
21011
  // done building, do checks
21000
21012
  // assert all props are valid
21001
21013
  this._state_properties.forEach((_value, key) => {
package/jssm.d.ts CHANGED
@@ -110,7 +110,7 @@ declare class Machine<mDT> {
110
110
  _timeout_handle: number | undefined;
111
111
  _timeout_target: string | undefined;
112
112
  _timeout_target_time: number | undefined;
113
- constructor({ start_states, end_states, complete, transitions, machine_author, machine_comment, machine_contributor, machine_definition, machine_language, machine_license, machine_name, machine_version, state_declaration, property_definition, state_property, fsl_version, dot_preamble, arrange_declaration, arrange_start_declaration, arrange_end_declaration, theme, flow, graph_layout, instance_name, history, data, default_state_config, default_active_state_config, default_hooked_state_config, default_terminal_state_config, default_start_state_config, default_end_state_config, allows_override, config_allows_override, rng_seed, time_source, timeout_source, clear_timeout_source }: JssmGenericConfig<StateType, mDT>);
113
+ constructor({ start_states, end_states, initial_state, start_states_no_enforce, complete, transitions, machine_author, machine_comment, machine_contributor, machine_definition, machine_language, machine_license, machine_name, machine_version, state_declaration, property_definition, state_property, fsl_version, dot_preamble, arrange_declaration, arrange_start_declaration, arrange_end_declaration, theme, flow, graph_layout, instance_name, history, data, default_state_config, default_active_state_config, default_hooked_state_config, default_terminal_state_config, default_start_state_config, default_end_state_config, allows_override, config_allows_override, rng_seed, time_source, timeout_source, clear_timeout_source }: JssmGenericConfig<StateType, mDT>);
114
114
  /********
115
115
  *
116
116
  * Internal method for fabricating states. Not meant for external use.
package/jssm_types.d.ts CHANGED
@@ -198,6 +198,8 @@ declare type JssmGenericConfig<StateType, DataType> = {
198
198
  dot_preamble?: string;
199
199
  start_states: Array<StateType>;
200
200
  end_states?: Array<StateType>;
201
+ initial_state?: StateType;
202
+ start_states_no_enforce?: boolean;
201
203
  state_declaration?: Object[];
202
204
  property_definition?: JssmPropertyDefinition[];
203
205
  state_property?: JssmPropertyDefinition[];
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "jssm",
3
- "version": "5.97.0",
3
+ "version": "5.98.0",
4
4
  "engines": {
5
5
  "node": ">=10.0.0"
6
6
  },
7
7
  "exports": {
8
8
  "require": "./dist/jssm.es5.cjs",
9
- "import": "./dist/jssm.es6.js",
9
+ "import": "./dist/jssm.es6.mjs",
10
10
  "default": "./dist/jssm.es5.cjs",
11
- "browser": "dist/jssm.es5.iife.js"
11
+ "browser": "dist/jssm.es5.iife.cjs"
12
12
  },
13
13
  "autoupdate": {
14
14
  "source": "git",
@@ -60,7 +60,7 @@
60
60
  "minify": "mv dist/es6/fsl_parser.js dist/es6/fsl_parser.nonmin.js && terser dist/es6/fsl_parser.nonmin.js > dist/es6/fsl_parser.js",
61
61
  "min_iife": "mv dist/jssm.es5.iife.js dist/jssm.es5.iife.nonmin.cjs && terser dist/jssm.es5.iife.nonmin.cjs > dist/jssm.es5.iife.cjs && cp dist/jssm.es5.iife.nonmin.cjs ./src/tools/",
62
62
  "min_cjs": "mv dist/jssm.es5.cjs.js dist/jssm.es5.nonmin.cjs && terser dist/jssm.es5.nonmin.cjs > dist/jssm.es5.cjs",
63
- "min_es6": "mv dist/jssm.es6.cjs.js dist/jssm.es6.nonmin.cjs && terser dist/jssm.es6.nonmin.cjs > dist/jssm.es6.cjs",
63
+ "min_es6": "mv dist/jssm.es6.js dist/jssm.es6.nonmin.cjs && terser dist/jssm.es6.nonmin.cjs > dist/jssm.es6.mjs",
64
64
  "min_deno": "terser dist/deno/jssm.deno-esm.nonmin.js > dist/deno/jssm.js",
65
65
  "site": "cp src/site/* docs/ && cp -r src/assets docs/assets/",
66
66
  "docs": "typedoc src/ts/jssm.ts src/ts/jssm_types.ts src/ts/jssm_constants.ts src/ts/jssm_error.ts src/ts/jssm_util.ts src/ts/version.ts --options typedoc-options.cjs",
@@ -13,7 +13,7 @@ const config = {
13
13
  input: 'dist/es6/jssm.js',
14
14
 
15
15
  output: {
16
- file : 'dist/jssm.es6.cjs.js',
16
+ file : 'dist/jssm.es6.js',
17
17
  format : 'es',
18
18
  name : 'jssm'
19
19
  },