jssm 5.35.4 → 5.42.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.
- package/.codeclimate.yml +22 -22
- package/.editorconfig +12 -12
- package/.eslintrc +20 -20
- package/.nycrc +6 -6
- package/.travis.yml +8 -8
- package/LICENSE.md +21 -21
- package/README.md +997 -993
- package/dist/es6/jssm-dot.d.ts +6 -6
- package/dist/es6/jssm-dot.js +1 -1
- package/dist/es6/jssm.d.ts +100 -100
- package/dist/es6/jssm.js +792 -792
- package/dist/es6/jssm_types.d.ts +151 -151
- package/dist/es6/jssm_types.js +1 -1
- package/dist/es6/jssm_util.d.ts +8 -8
- package/dist/es6/jssm_util.js +34 -34
- package/dist/es6/version.d.ts +2 -2
- package/dist/es6/version.js +2 -2
- package/dist/jssm.es5.cjs.js +1 -1
- package/dist/jssm.es5.iife.js +1 -0
- package/jest-spec.config.js +27 -27
- package/jest-stoch.config.js +27 -27
- package/jssm-dot.d.ts +6 -6
- package/jssm.d.ts +100 -100
- package/jssm_types.d.ts +151 -151
- package/jssm_util.d.ts +8 -8
- package/package.json +125 -122
- package/rollup.config.iife.js +44 -44
- package/rollup.config.js +44 -44
- package/src/demo/index.html +38 -38
- package/src/demo/style.css +1 -1
- package/src/ts/jssm-dot.peg +928 -874
- package/src/ts/jssm.ts +1120 -1120
- package/src/ts/jssm_types.ts +346 -346
- package/src/ts/jssm_util.ts +100 -100
- package/src/ts/tests/actions.spec.ts +167 -167
- package/src/ts/tests/arrange.spec.ts +72 -72
- package/src/ts/tests/arrange.stoch.ts +4 -4
- package/src/ts/tests/array_box_if_string.spec.ts +30 -31
- package/src/ts/tests/array_transitions.spec.ts +129 -129
- package/src/ts/tests/arrow unicode.spec.ts +88 -88
- package/src/ts/tests/arrow.spec.ts +124 -124
- package/src/ts/tests/colors.spec.ts +58 -58
- package/src/ts/tests/comment.spec.ts +134 -134
- package/src/ts/tests/compile.spec.ts +79 -79
- package/src/ts/tests/constants.spec.ts +98 -98
- package/src/ts/tests/cycles.spec.ts +153 -153
- package/src/ts/tests/dot_preamble.spec.ts +16 -16
- package/src/ts/tests/embedded_sm.spec.ts +36 -36
- package/src/ts/tests/flow.spec.ts +22 -22
- package/src/ts/tests/forced transitions.spec.ts +26 -26
- package/src/ts/tests/general.spec.ts +933 -933
- package/src/ts/tests/graph node lists.spec.ts +21 -21
- package/src/ts/tests/histo.spec.ts +24 -24
- package/src/ts/tests/hooks.spec.ts +28 -0
- package/src/ts/tests/language.spec.ts +37 -37
- package/src/ts/tests/language_data/belarussian.json +13 -13
- package/src/ts/tests/language_data/bengali.json +15 -15
- package/src/ts/tests/language_data/emoji.json +21 -21
- package/src/ts/tests/language_data/english.json +16 -16
- package/src/ts/tests/language_data/french.json +16 -16
- package/src/ts/tests/language_data/german.json +16 -16
- package/src/ts/tests/language_data/hebrew.json +16 -16
- package/src/ts/tests/language_data/portuguese.json +12 -12
- package/src/ts/tests/language_data/russian.json +12 -12
- package/src/ts/tests/language_data/spanish.json +17 -17
- package/src/ts/tests/language_data/ukrainian.json +18 -18
- package/src/ts/tests/layout.spec.ts +29 -29
- package/src/ts/tests/machine_attributes.spec.ts +398 -398
- package/src/ts/tests/machine_name.spec.ts +14 -14
- package/src/ts/tests/named lists.spec.ts +24 -19
- package/src/ts/tests/nominated states.spec.ts +133 -133
- package/src/ts/tests/parse actions.spec.ts +32 -32
- package/src/ts/tests/parse.spec.ts +94 -94
- package/src/ts/tests/probability.spec.ts +146 -146
- package/src/ts/tests/r639.spec.ts +27 -27
- package/src/ts/tests/sample_select.spec.ts +173 -173
- package/src/ts/tests/seq.spec.ts +14 -16
- package/src/ts/tests/seq.stoch.ts +83 -0
- package/src/ts/tests/shapes.spec.ts +63 -63
- package/src/ts/tests/sm_tag.spec.ts +37 -37
- package/src/ts/tests/special characters.spec.ts +39 -39
- package/src/ts/tests/state_declaration.spec.ts +214 -200
- package/src/ts/tests/state_style.spec.ts +82 -39
- package/src/ts/tests/stop light.spec.ts +157 -157
- package/src/ts/tests/stripes.spec.ts +52 -52
- package/src/ts/tests/theme.spec.ts +45 -45
- package/src/ts/tests/weighted_histo_key.spec.ts +22 -22
- package/src/ts/tests/weighted_rand_select.spec.ts +27 -27
- package/src/ts/tests/weighted_sample_select.spec.ts +24 -26
- package/src/ts/version.ts +1 -1
- package/tree.txt +1794 -1794
- package/tsconfig.json +27 -27
- package/version.d.ts +2 -2
package/src/ts/jssm_types.ts
CHANGED
|
@@ -1,346 +1,346 @@
|
|
|
1
|
-
|
|
2
|
-
type StateType = string;
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
type JssmSuccess = { success: true };
|
|
9
|
-
type JssmFailure = { success: false, error: any };
|
|
10
|
-
type JssmIncomplete = { success: 'incomplete' };
|
|
11
|
-
type JssmResult = JssmSuccess | JssmFailure | JssmIncomplete;
|
|
12
|
-
|
|
13
|
-
type JssmColor = string; // TODO FIXME constrain to #RRGGBBAA later // whargarbl
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
type JssmPermitted = 'required' | 'disallowed';
|
|
18
|
-
type JssmPermittedOpt = 'required' | 'disallowed' | 'optional';
|
|
19
|
-
|
|
20
|
-
type JssmArrow = '->' | '<-' | '<->' | '<=->' | '<~->'
|
|
21
|
-
| '=>' | '<=' | '<=>' | '<-=>' | '<~=>'
|
|
22
|
-
| '~>' | '<~' | '<~>' | '<-~>' | '<=~>';
|
|
23
|
-
// | '⇒' | '⇐' | '⇔' | '⇐→' | '↚→'
|
|
24
|
-
// | '→' | '←' | '↔' | '←⇒' | '↚⇒'
|
|
25
|
-
// | '↛' | '↚' | '↮' | '←↛' | '⇐↛';
|
|
26
|
-
|
|
27
|
-
// TODO finish the arrow types - unicode *and* mixed
|
|
28
|
-
|
|
29
|
-
type JssmShape = "box" | "polygon" | "ellipse" | "oval" | "circle" | "point" | "egg" | "triangle"
|
|
30
|
-
| "plaintext" | "plain" | "diamond" | "trapezium" | "parallelogram" | "house" | "pentagon"
|
|
31
|
-
| "hexagon" | "septagon" | "octagon" | "doublecircle" | "doubleoctagon" | "tripleoctagon"
|
|
32
|
-
| "invtriangle" | "invtrapezium" | "invhouse" | "Mdiamond" | "Msquare" | "Mcircle" | "rect"
|
|
33
|
-
| "rectangle" | "square" | "star" | "none" | "underline" | "cylinder" | "note" | "tab"
|
|
34
|
-
| "folder" | "box3d" | "component" | "promoter" | "cds" | "terminator" | "utr" | "primersite"
|
|
35
|
-
| "restrictionsite" | "fivepoverhang" | "threepoverhang" | "noverhang" | "assembly"
|
|
36
|
-
| "signature" | "insulator" | "ribosite" | "rnastab" | "proteasesite" | "proteinstab"
|
|
37
|
-
| "rpromoter" | "rarrow" | "larrow" | "lpromoter" | "record";
|
|
38
|
-
|
|
39
|
-
type JssmArrowDirection = 'left' | 'right' | 'both';
|
|
40
|
-
type JssmArrowKind = 'none' | 'legal' | 'main' | 'forced';
|
|
41
|
-
|
|
42
|
-
type JssmLayout = 'dot' | 'circo' | 'twopi' | 'fdp'; // todo add the rest
|
|
43
|
-
|
|
44
|
-
type JssmCorner = 'regular' | 'rounded' | 'lined';
|
|
45
|
-
type JssmLineStyle = 'solid' | 'dashed' | 'dotted';
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
type FslDirection = 'up' | 'right' | 'down' | 'left';
|
|
52
|
-
type FslTheme = 'default' | 'ocean' | 'modern' | 'none';
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
type State = string;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
type JssmTransitionPermitter<DataType> =
|
|
65
|
-
(OldState: StateType, NewState: StateType, OldData: DataType, NewData: DataType) => boolean;
|
|
66
|
-
|
|
67
|
-
type JssmTransitionPermitterMaybeArray<DataType> =
|
|
68
|
-
JssmTransitionPermitter<DataType>
|
|
69
|
-
| Array< JssmTransitionPermitter<DataType> >;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
type JssmTransition<DataType> = {
|
|
76
|
-
|
|
77
|
-
from : StateType,
|
|
78
|
-
to : StateType,
|
|
79
|
-
name? : string,
|
|
80
|
-
action? : StateType,
|
|
81
|
-
check? : JssmTransitionPermitterMaybeArray<DataType>, // validate this edge's transition; usually about data
|
|
82
|
-
probability? : number, // for stoch modelling, would like to constrain to [0..1], dunno how // TODO FIXME
|
|
83
|
-
kind : JssmArrowKind,
|
|
84
|
-
forced_only : boolean,
|
|
85
|
-
main_path : boolean
|
|
86
|
-
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
type JssmTransitions<DataType> =
|
|
90
|
-
Array< JssmTransition<DataType> >;
|
|
91
|
-
|
|
92
|
-
type JssmTransitionList = {
|
|
93
|
-
entrances : Array<StateType>,
|
|
94
|
-
exits : Array<StateType>
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
type JssmTransitionCycle = {
|
|
98
|
-
key : 'cycle',
|
|
99
|
-
value : StateType
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
type JssmTransitionRule =
|
|
103
|
-
StateType
|
|
104
|
-
| JssmTransitionCycle;
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
type JssmGenericState = {
|
|
111
|
-
|
|
112
|
-
from : Array< StateType > ,
|
|
113
|
-
name : StateType ,
|
|
114
|
-
to : Array< StateType > ,
|
|
115
|
-
complete : boolean
|
|
116
|
-
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
type JssmMachineInternalState<DataType> = {
|
|
124
|
-
|
|
125
|
-
internal_state_impl_version : 1,
|
|
126
|
-
|
|
127
|
-
state : StateType,
|
|
128
|
-
states : Map< StateType, JssmGenericState >,
|
|
129
|
-
named_transitions : Map< StateType, number >,
|
|
130
|
-
edge_map : Map< StateType, Map<StateType, number> >,
|
|
131
|
-
actions : Map< StateType, Map<StateType, number> >,
|
|
132
|
-
reverse_actions : Map< StateType, Map<StateType, number> >,
|
|
133
|
-
edges : Array< JssmTransition<DataType> >
|
|
134
|
-
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
type JssmStatePermitter<DataType> =
|
|
142
|
-
(OldState: StateType, NewState: StateType, OldData: DataType, NewData: DataType) => boolean;
|
|
143
|
-
|
|
144
|
-
type JssmStatePermitterMaybeArray<DataType> =
|
|
145
|
-
JssmStatePermitter<DataType> | Array< JssmStatePermitter<DataType> >;
|
|
146
|
-
|
|
147
|
-
type JssmGenericMachine<DataType> = {
|
|
148
|
-
|
|
149
|
-
name? : string,
|
|
150
|
-
state : StateType,
|
|
151
|
-
data? : DataType,
|
|
152
|
-
nodes? : Array<StateType>,
|
|
153
|
-
transitions : JssmTransitions<DataType>,
|
|
154
|
-
check? : JssmStatePermitterMaybeArray<DataType>,
|
|
155
|
-
|
|
156
|
-
min_transitions? : number,
|
|
157
|
-
max_transitions? : number,
|
|
158
|
-
|
|
159
|
-
allow_empty? : boolean,
|
|
160
|
-
allow_islands? : boolean,
|
|
161
|
-
allow_force? : boolean,
|
|
162
|
-
|
|
163
|
-
keep_history? : boolean | number
|
|
164
|
-
|
|
165
|
-
};
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
type JssmStateDeclarationRule = {
|
|
172
|
-
key : string,
|
|
173
|
-
value : any // TODO FIXME COMEBACK enumerate types against concrete keys
|
|
174
|
-
};
|
|
175
|
-
|
|
176
|
-
type JssmStateDeclaration = {
|
|
177
|
-
|
|
178
|
-
declarations : Array<JssmStateDeclarationRule>,
|
|
179
|
-
|
|
180
|
-
shape? : JssmShape,
|
|
181
|
-
color? : JssmColor,
|
|
182
|
-
corners? : JssmCorner,
|
|
183
|
-
linestyle? : JssmLineStyle,
|
|
184
|
-
|
|
185
|
-
textColor? : JssmColor,
|
|
186
|
-
backgroundColor? : JssmColor,
|
|
187
|
-
borderColor? : JssmColor,
|
|
188
|
-
|
|
189
|
-
state : StateType
|
|
190
|
-
|
|
191
|
-
};
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
type JssmGenericConfig<DataType> = {
|
|
198
|
-
|
|
199
|
-
graph_layout? : JssmLayout,
|
|
200
|
-
|
|
201
|
-
complete? : Array<StateType>,
|
|
202
|
-
transitions : JssmTransitions<DataType>,
|
|
203
|
-
|
|
204
|
-
theme? : FslTheme,
|
|
205
|
-
flow? : FslDirection,
|
|
206
|
-
|
|
207
|
-
name? : string,
|
|
208
|
-
data? : DataType,
|
|
209
|
-
nodes? : Array<StateType>, // uncommon
|
|
210
|
-
check? : JssmStatePermitterMaybeArray<DataType>,
|
|
211
|
-
|
|
212
|
-
//locked? : bool = true,
|
|
213
|
-
min_exits? : number,
|
|
214
|
-
max_exits? : number,
|
|
215
|
-
allow_islands? : false,
|
|
216
|
-
allow_force? : false,
|
|
217
|
-
actions? : JssmPermittedOpt,
|
|
218
|
-
|
|
219
|
-
simplify_bidi? : boolean,
|
|
220
|
-
|
|
221
|
-
dot_preamble? : string,
|
|
222
|
-
|
|
223
|
-
start_states : Array<StateType>,
|
|
224
|
-
end_states? : Array<StateType>,
|
|
225
|
-
|
|
226
|
-
state_declaration? : Array<Object>,
|
|
227
|
-
|
|
228
|
-
arrange_declaration? : Array<Array<StateType>>,
|
|
229
|
-
arrange_start_declaration? : Array<Array<StateType>>,
|
|
230
|
-
arrange_end_declaration? : Array<Array<StateType>>,
|
|
231
|
-
|
|
232
|
-
machine_author? : string | Array<string>,
|
|
233
|
-
machine_comment? : string,
|
|
234
|
-
machine_contributor? : string | Array<string>,
|
|
235
|
-
machine_definition? : string,
|
|
236
|
-
machine_language? : string, // TODO FIXME COMEBACK
|
|
237
|
-
machine_license? : string, // TODO FIXME COMEBACK
|
|
238
|
-
machine_name? : string,
|
|
239
|
-
machine_version? : string, // TODO FIXME COMEBACK
|
|
240
|
-
|
|
241
|
-
fsl_version? : string, // TODO FIXME COMEBACK
|
|
242
|
-
|
|
243
|
-
auto_api? : boolean | string // TODO FIXME COMEBACK // boolean false means don't; boolean true means do; string means do-with-this-prefix
|
|
244
|
-
|
|
245
|
-
};
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
type JssmCompileRule = {
|
|
252
|
-
|
|
253
|
-
agg_as : string,
|
|
254
|
-
val : any // TODO COMEBACK FIXME
|
|
255
|
-
|
|
256
|
-
};
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
type JssmCompileSe = {
|
|
263
|
-
|
|
264
|
-
to : StateType,
|
|
265
|
-
se : JssmCompileSe,
|
|
266
|
-
kind : JssmArrow,
|
|
267
|
-
l_action? : StateType,
|
|
268
|
-
r_action? : StateType,
|
|
269
|
-
l_probability : number,
|
|
270
|
-
r_probability : number
|
|
271
|
-
|
|
272
|
-
};
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
type JssmCompileSeStart<DataType> = {
|
|
279
|
-
|
|
280
|
-
from : DataType,
|
|
281
|
-
se : JssmCompileSe,
|
|
282
|
-
key : string,
|
|
283
|
-
value? : string | number,
|
|
284
|
-
name? : string
|
|
285
|
-
|
|
286
|
-
};
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
type JssmParseTree =
|
|
293
|
-
|
|
294
|
-
Array< JssmCompileSeStart<StateType> >;
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
type JssmParseFunctionType =
|
|
301
|
-
|
|
302
|
-
(string) => JssmParseTree;
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
export {
|
|
309
|
-
|
|
310
|
-
JssmColor,
|
|
311
|
-
|
|
312
|
-
JssmTransition,
|
|
313
|
-
JssmTransitions,
|
|
314
|
-
JssmTransitionList,
|
|
315
|
-
JssmTransitionRule,
|
|
316
|
-
|
|
317
|
-
JssmArrow,
|
|
318
|
-
JssmArrowKind,
|
|
319
|
-
JssmArrowDirection,
|
|
320
|
-
|
|
321
|
-
JssmGenericConfig,
|
|
322
|
-
JssmGenericState,
|
|
323
|
-
JssmGenericMachine,
|
|
324
|
-
|
|
325
|
-
JssmParseTree,
|
|
326
|
-
JssmCompileSe,
|
|
327
|
-
JssmCompileSeStart,
|
|
328
|
-
JssmCompileRule,
|
|
329
|
-
|
|
330
|
-
JssmPermitted,
|
|
331
|
-
JssmPermittedOpt,
|
|
332
|
-
JssmResult,
|
|
333
|
-
|
|
334
|
-
JssmStateDeclaration,
|
|
335
|
-
JssmStateDeclarationRule,
|
|
336
|
-
|
|
337
|
-
JssmLayout,
|
|
338
|
-
|
|
339
|
-
JssmParseFunctionType,
|
|
340
|
-
|
|
341
|
-
JssmMachineInternalState,
|
|
342
|
-
|
|
343
|
-
FslDirection,
|
|
344
|
-
FslTheme
|
|
345
|
-
|
|
346
|
-
};
|
|
1
|
+
|
|
2
|
+
type StateType = string;
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
type JssmSuccess = { success: true };
|
|
9
|
+
type JssmFailure = { success: false, error: any };
|
|
10
|
+
type JssmIncomplete = { success: 'incomplete' };
|
|
11
|
+
type JssmResult = JssmSuccess | JssmFailure | JssmIncomplete;
|
|
12
|
+
|
|
13
|
+
type JssmColor = string; // TODO FIXME constrain to #RRGGBBAA later // whargarbl
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
type JssmPermitted = 'required' | 'disallowed';
|
|
18
|
+
type JssmPermittedOpt = 'required' | 'disallowed' | 'optional';
|
|
19
|
+
|
|
20
|
+
type JssmArrow = '->' | '<-' | '<->' | '<=->' | '<~->'
|
|
21
|
+
| '=>' | '<=' | '<=>' | '<-=>' | '<~=>'
|
|
22
|
+
| '~>' | '<~' | '<~>' | '<-~>' | '<=~>';
|
|
23
|
+
// | '⇒' | '⇐' | '⇔' | '⇐→' | '↚→'
|
|
24
|
+
// | '→' | '←' | '↔' | '←⇒' | '↚⇒'
|
|
25
|
+
// | '↛' | '↚' | '↮' | '←↛' | '⇐↛';
|
|
26
|
+
|
|
27
|
+
// TODO finish the arrow types - unicode *and* mixed
|
|
28
|
+
|
|
29
|
+
type JssmShape = "box" | "polygon" | "ellipse" | "oval" | "circle" | "point" | "egg" | "triangle"
|
|
30
|
+
| "plaintext" | "plain" | "diamond" | "trapezium" | "parallelogram" | "house" | "pentagon"
|
|
31
|
+
| "hexagon" | "septagon" | "octagon" | "doublecircle" | "doubleoctagon" | "tripleoctagon"
|
|
32
|
+
| "invtriangle" | "invtrapezium" | "invhouse" | "Mdiamond" | "Msquare" | "Mcircle" | "rect"
|
|
33
|
+
| "rectangle" | "square" | "star" | "none" | "underline" | "cylinder" | "note" | "tab"
|
|
34
|
+
| "folder" | "box3d" | "component" | "promoter" | "cds" | "terminator" | "utr" | "primersite"
|
|
35
|
+
| "restrictionsite" | "fivepoverhang" | "threepoverhang" | "noverhang" | "assembly"
|
|
36
|
+
| "signature" | "insulator" | "ribosite" | "rnastab" | "proteasesite" | "proteinstab"
|
|
37
|
+
| "rpromoter" | "rarrow" | "larrow" | "lpromoter" | "record";
|
|
38
|
+
|
|
39
|
+
type JssmArrowDirection = 'left' | 'right' | 'both';
|
|
40
|
+
type JssmArrowKind = 'none' | 'legal' | 'main' | 'forced';
|
|
41
|
+
|
|
42
|
+
type JssmLayout = 'dot' | 'circo' | 'twopi' | 'fdp'; // todo add the rest
|
|
43
|
+
|
|
44
|
+
type JssmCorner = 'regular' | 'rounded' | 'lined';
|
|
45
|
+
type JssmLineStyle = 'solid' | 'dashed' | 'dotted';
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
type FslDirection = 'up' | 'right' | 'down' | 'left';
|
|
52
|
+
type FslTheme = 'default' | 'ocean' | 'modern' | 'none';
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
type State = string;
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
type JssmTransitionPermitter<DataType> =
|
|
65
|
+
(OldState: StateType, NewState: StateType, OldData: DataType, NewData: DataType) => boolean;
|
|
66
|
+
|
|
67
|
+
type JssmTransitionPermitterMaybeArray<DataType> =
|
|
68
|
+
JssmTransitionPermitter<DataType>
|
|
69
|
+
| Array< JssmTransitionPermitter<DataType> >;
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
type JssmTransition<DataType> = {
|
|
76
|
+
|
|
77
|
+
from : StateType,
|
|
78
|
+
to : StateType,
|
|
79
|
+
name? : string,
|
|
80
|
+
action? : StateType,
|
|
81
|
+
check? : JssmTransitionPermitterMaybeArray<DataType>, // validate this edge's transition; usually about data
|
|
82
|
+
probability? : number, // for stoch modelling, would like to constrain to [0..1], dunno how // TODO FIXME
|
|
83
|
+
kind : JssmArrowKind,
|
|
84
|
+
forced_only : boolean,
|
|
85
|
+
main_path : boolean
|
|
86
|
+
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
type JssmTransitions<DataType> =
|
|
90
|
+
Array< JssmTransition<DataType> >;
|
|
91
|
+
|
|
92
|
+
type JssmTransitionList = {
|
|
93
|
+
entrances : Array<StateType>,
|
|
94
|
+
exits : Array<StateType>
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
type JssmTransitionCycle = {
|
|
98
|
+
key : 'cycle',
|
|
99
|
+
value : StateType
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
type JssmTransitionRule =
|
|
103
|
+
StateType
|
|
104
|
+
| JssmTransitionCycle;
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
type JssmGenericState = {
|
|
111
|
+
|
|
112
|
+
from : Array< StateType > ,
|
|
113
|
+
name : StateType ,
|
|
114
|
+
to : Array< StateType > ,
|
|
115
|
+
complete : boolean
|
|
116
|
+
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
type JssmMachineInternalState<DataType> = {
|
|
124
|
+
|
|
125
|
+
internal_state_impl_version : 1,
|
|
126
|
+
|
|
127
|
+
state : StateType,
|
|
128
|
+
states : Map< StateType, JssmGenericState >,
|
|
129
|
+
named_transitions : Map< StateType, number >,
|
|
130
|
+
edge_map : Map< StateType, Map<StateType, number> >,
|
|
131
|
+
actions : Map< StateType, Map<StateType, number> >,
|
|
132
|
+
reverse_actions : Map< StateType, Map<StateType, number> >,
|
|
133
|
+
edges : Array< JssmTransition<DataType> >
|
|
134
|
+
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
type JssmStatePermitter<DataType> =
|
|
142
|
+
(OldState: StateType, NewState: StateType, OldData: DataType, NewData: DataType) => boolean;
|
|
143
|
+
|
|
144
|
+
type JssmStatePermitterMaybeArray<DataType> =
|
|
145
|
+
JssmStatePermitter<DataType> | Array< JssmStatePermitter<DataType> >;
|
|
146
|
+
|
|
147
|
+
type JssmGenericMachine<DataType> = {
|
|
148
|
+
|
|
149
|
+
name? : string,
|
|
150
|
+
state : StateType,
|
|
151
|
+
data? : DataType,
|
|
152
|
+
nodes? : Array<StateType>,
|
|
153
|
+
transitions : JssmTransitions<DataType>,
|
|
154
|
+
check? : JssmStatePermitterMaybeArray<DataType>,
|
|
155
|
+
|
|
156
|
+
min_transitions? : number,
|
|
157
|
+
max_transitions? : number,
|
|
158
|
+
|
|
159
|
+
allow_empty? : boolean,
|
|
160
|
+
allow_islands? : boolean,
|
|
161
|
+
allow_force? : boolean,
|
|
162
|
+
|
|
163
|
+
keep_history? : boolean | number
|
|
164
|
+
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
type JssmStateDeclarationRule = {
|
|
172
|
+
key : string,
|
|
173
|
+
value : any // TODO FIXME COMEBACK enumerate types against concrete keys
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
type JssmStateDeclaration = {
|
|
177
|
+
|
|
178
|
+
declarations : Array<JssmStateDeclarationRule>,
|
|
179
|
+
|
|
180
|
+
shape? : JssmShape,
|
|
181
|
+
color? : JssmColor,
|
|
182
|
+
corners? : JssmCorner,
|
|
183
|
+
linestyle? : JssmLineStyle,
|
|
184
|
+
|
|
185
|
+
textColor? : JssmColor,
|
|
186
|
+
backgroundColor? : JssmColor,
|
|
187
|
+
borderColor? : JssmColor,
|
|
188
|
+
|
|
189
|
+
state : StateType
|
|
190
|
+
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
type JssmGenericConfig<DataType> = {
|
|
198
|
+
|
|
199
|
+
graph_layout? : JssmLayout,
|
|
200
|
+
|
|
201
|
+
complete? : Array<StateType>,
|
|
202
|
+
transitions : JssmTransitions<DataType>,
|
|
203
|
+
|
|
204
|
+
theme? : FslTheme,
|
|
205
|
+
flow? : FslDirection,
|
|
206
|
+
|
|
207
|
+
name? : string,
|
|
208
|
+
data? : DataType,
|
|
209
|
+
nodes? : Array<StateType>, // uncommon
|
|
210
|
+
check? : JssmStatePermitterMaybeArray<DataType>,
|
|
211
|
+
|
|
212
|
+
//locked? : bool = true,
|
|
213
|
+
min_exits? : number,
|
|
214
|
+
max_exits? : number,
|
|
215
|
+
allow_islands? : false,
|
|
216
|
+
allow_force? : false,
|
|
217
|
+
actions? : JssmPermittedOpt,
|
|
218
|
+
|
|
219
|
+
simplify_bidi? : boolean,
|
|
220
|
+
|
|
221
|
+
dot_preamble? : string,
|
|
222
|
+
|
|
223
|
+
start_states : Array<StateType>,
|
|
224
|
+
end_states? : Array<StateType>,
|
|
225
|
+
|
|
226
|
+
state_declaration? : Array<Object>,
|
|
227
|
+
|
|
228
|
+
arrange_declaration? : Array<Array<StateType>>,
|
|
229
|
+
arrange_start_declaration? : Array<Array<StateType>>,
|
|
230
|
+
arrange_end_declaration? : Array<Array<StateType>>,
|
|
231
|
+
|
|
232
|
+
machine_author? : string | Array<string>,
|
|
233
|
+
machine_comment? : string,
|
|
234
|
+
machine_contributor? : string | Array<string>,
|
|
235
|
+
machine_definition? : string,
|
|
236
|
+
machine_language? : string, // TODO FIXME COMEBACK
|
|
237
|
+
machine_license? : string, // TODO FIXME COMEBACK
|
|
238
|
+
machine_name? : string,
|
|
239
|
+
machine_version? : string, // TODO FIXME COMEBACK
|
|
240
|
+
|
|
241
|
+
fsl_version? : string, // TODO FIXME COMEBACK
|
|
242
|
+
|
|
243
|
+
auto_api? : boolean | string // TODO FIXME COMEBACK // boolean false means don't; boolean true means do; string means do-with-this-prefix
|
|
244
|
+
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
type JssmCompileRule = {
|
|
252
|
+
|
|
253
|
+
agg_as : string,
|
|
254
|
+
val : any // TODO COMEBACK FIXME
|
|
255
|
+
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
type JssmCompileSe = {
|
|
263
|
+
|
|
264
|
+
to : StateType,
|
|
265
|
+
se : JssmCompileSe,
|
|
266
|
+
kind : JssmArrow,
|
|
267
|
+
l_action? : StateType,
|
|
268
|
+
r_action? : StateType,
|
|
269
|
+
l_probability : number,
|
|
270
|
+
r_probability : number
|
|
271
|
+
|
|
272
|
+
};
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
type JssmCompileSeStart<DataType> = {
|
|
279
|
+
|
|
280
|
+
from : DataType,
|
|
281
|
+
se : JssmCompileSe,
|
|
282
|
+
key : string,
|
|
283
|
+
value? : string | number,
|
|
284
|
+
name? : string
|
|
285
|
+
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
type JssmParseTree =
|
|
293
|
+
|
|
294
|
+
Array< JssmCompileSeStart<StateType> >;
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
type JssmParseFunctionType =
|
|
301
|
+
|
|
302
|
+
(string) => JssmParseTree;
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
export {
|
|
309
|
+
|
|
310
|
+
JssmColor,
|
|
311
|
+
|
|
312
|
+
JssmTransition,
|
|
313
|
+
JssmTransitions,
|
|
314
|
+
JssmTransitionList,
|
|
315
|
+
JssmTransitionRule,
|
|
316
|
+
|
|
317
|
+
JssmArrow,
|
|
318
|
+
JssmArrowKind,
|
|
319
|
+
JssmArrowDirection,
|
|
320
|
+
|
|
321
|
+
JssmGenericConfig,
|
|
322
|
+
JssmGenericState,
|
|
323
|
+
JssmGenericMachine,
|
|
324
|
+
|
|
325
|
+
JssmParseTree,
|
|
326
|
+
JssmCompileSe,
|
|
327
|
+
JssmCompileSeStart,
|
|
328
|
+
JssmCompileRule,
|
|
329
|
+
|
|
330
|
+
JssmPermitted,
|
|
331
|
+
JssmPermittedOpt,
|
|
332
|
+
JssmResult,
|
|
333
|
+
|
|
334
|
+
JssmStateDeclaration,
|
|
335
|
+
JssmStateDeclarationRule,
|
|
336
|
+
|
|
337
|
+
JssmLayout,
|
|
338
|
+
|
|
339
|
+
JssmParseFunctionType,
|
|
340
|
+
|
|
341
|
+
JssmMachineInternalState,
|
|
342
|
+
|
|
343
|
+
FslDirection,
|
|
344
|
+
FslTheme
|
|
345
|
+
|
|
346
|
+
};
|