@robinpath/state 0.1.0 → 0.1.1

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/README.md CHANGED
@@ -1,100 +1,100 @@
1
- # @robinpath/state
2
-
3
- > Finite state machine with transitions, guards, actions, context, history, and event listeners
4
-
5
- ![Category](https://img.shields.io/badge/category-Infrastructure-blue) ![Functions](https://img.shields.io/badge/functions-17-green) ![Auth](https://img.shields.io/badge/auth-none-lightgrey) ![License](https://img.shields.io/badge/license-MIT-brightgreen)
6
-
7
- ## Why use this module?
8
-
9
- The `state` module lets you:
10
-
11
- - Create state machine
12
- - Send event to trigger transition
13
- - Get current state
14
- - Get machine context
15
- - Check if event can be sent
16
-
17
- All functions are callable directly from RobinPath scripts with a simple, consistent API.
18
-
19
- ## Installation
20
-
21
- ```bash
22
- npm install @robinpath/state
23
- ```
24
-
25
- ## Quick Start
26
-
27
- No credentials needed — start using it right away:
28
-
29
- ```robinpath
30
- state.send "next" "light"
31
- ```
32
-
33
- ## Available Functions
34
-
35
- | Function | Description |
36
- |----------|-------------|
37
- | `state.create` | Create state machine |
38
- | `state.send` | Send event to trigger transition |
39
- | `state.current` | Get current state |
40
- | `state.context` | Get machine context |
41
- | `state.setContext` | Set machine context |
42
- | `state.can` | Check if event can be sent |
43
- | `state.events` | Get available events from current state |
44
- | `state.is` | Check if in specific state |
45
- | `state.reset` | Reset to initial state |
46
- | `state.history` | Get transition history |
47
- | `state.addTransition` | Add transition at runtime |
48
- | `state.addState` | Add state at runtime |
49
- | `state.on` | Listen for transitions |
50
- | `state.serialize` | Serialize machine to JSON |
51
- | `state.matches` | Check if current state matches any |
52
- | `state.destroy` | Destroy machine |
53
- | `state.list` | List all machines |
54
-
55
- ## Examples
56
-
57
- ### Send event to trigger transition
58
-
59
- ```robinpath
60
- state.send "next" "light"
61
- ```
62
-
63
- ### Get current state
64
-
65
- ```robinpath
66
- state.current "light"
67
- ```
68
-
69
- ### Get machine context
70
-
71
- ```robinpath
72
- state.context "light"
73
- ```
74
-
75
- ## Integration with RobinPath
76
-
77
- ```typescript
78
- import { RobinPath } from "@wiredwp/robinpath";
79
- import Module from "@robinpath/state";
80
-
81
- const rp = new RobinPath();
82
- rp.registerModule(Module.name, Module.functions);
83
- rp.registerModuleMeta(Module.name, Module.functionMetadata);
84
-
85
- const result = await rp.executeScript(`
86
- state.send "next" "light"
87
- `);
88
- ```
89
-
90
- ## Full API Reference
91
-
92
- See [MODULE.md](./MODULE.md) for complete documentation including all parameters, return types, error handling, and advanced examples.
93
-
94
- ## Related Modules
95
-
96
- - [`@robinpath/json`](../json) — JSON module for complementary functionality
97
-
98
- ## License
99
-
100
- MIT
1
+ # @robinpath/state
2
+
3
+ > Finite state machine with transitions, guards, actions, context, history, and event listeners
4
+
5
+ ![Category](https://img.shields.io/badge/category-Infrastructure-blue) ![Functions](https://img.shields.io/badge/functions-17-green) ![Auth](https://img.shields.io/badge/auth-none-lightgrey) ![License](https://img.shields.io/badge/license-MIT-brightgreen)
6
+
7
+ ## Why use this module?
8
+
9
+ The `state` module lets you:
10
+
11
+ - Create state machine
12
+ - Send event to trigger transition
13
+ - Get current state
14
+ - Get machine context
15
+ - Check if event can be sent
16
+
17
+ All functions are callable directly from RobinPath scripts with a simple, consistent API.
18
+
19
+ ## Installation
20
+
21
+ ```bash
22
+ npm install @robinpath/state
23
+ ```
24
+
25
+ ## Quick Start
26
+
27
+ No credentials needed — start using it right away:
28
+
29
+ ```robinpath
30
+ state.send "next" "light"
31
+ ```
32
+
33
+ ## Available Functions
34
+
35
+ | Function | Description |
36
+ |----------|-------------|
37
+ | `state.create` | Create state machine |
38
+ | `state.send` | Send event to trigger transition |
39
+ | `state.current` | Get current state |
40
+ | `state.context` | Get machine context |
41
+ | `state.setContext` | Set machine context |
42
+ | `state.can` | Check if event can be sent |
43
+ | `state.events` | Get available events from current state |
44
+ | `state.is` | Check if in specific state |
45
+ | `state.reset` | Reset to initial state |
46
+ | `state.history` | Get transition history |
47
+ | `state.addTransition` | Add transition at runtime |
48
+ | `state.addState` | Add state at runtime |
49
+ | `state.on` | Listen for transitions |
50
+ | `state.serialize` | Serialize machine to JSON |
51
+ | `state.matches` | Check if current state matches any |
52
+ | `state.destroy` | Destroy machine |
53
+ | `state.list` | List all machines |
54
+
55
+ ## Examples
56
+
57
+ ### Send event to trigger transition
58
+
59
+ ```robinpath
60
+ state.send "next" "light"
61
+ ```
62
+
63
+ ### Get current state
64
+
65
+ ```robinpath
66
+ state.current "light"
67
+ ```
68
+
69
+ ### Get machine context
70
+
71
+ ```robinpath
72
+ state.context "light"
73
+ ```
74
+
75
+ ## Integration with RobinPath
76
+
77
+ ```typescript
78
+ import { RobinPath } from "@wiredwp/robinpath";
79
+ import Module from "@robinpath/state";
80
+
81
+ const rp = new RobinPath();
82
+ rp.registerModule(Module.name, Module.functions);
83
+ rp.registerModuleMeta(Module.name, Module.functionMetadata);
84
+
85
+ const result = await rp.executeScript(`
86
+ state.send "next" "light"
87
+ `);
88
+ ```
89
+
90
+ ## Full API Reference
91
+
92
+ See [MODULE.md](./MODULE.md) for complete documentation including all parameters, return types, error handling, and advanced examples.
93
+
94
+ ## Related Modules
95
+
96
+ - [`@robinpath/json`](../json) — JSON module for complementary functionality
97
+
98
+ ## License
99
+
100
+ MIT
package/package.json CHANGED
@@ -1,13 +1,43 @@
1
1
  {
2
2
  "name": "@robinpath/state",
3
- "version": "0.1.0",
4
- "publishConfig": { "access": "public" },
3
+ "version": "0.1.1",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
5
7
  "type": "module",
6
8
  "main": "dist/index.js",
7
9
  "types": "dist/index.d.ts",
8
- "exports": { ".": { "import": "./dist/index.js", "types": "./dist/index.d.ts" } },
9
- "files": ["dist"],
10
- "scripts": { "build": "tsc", "test": "node --import tsx --test tests/*.test.ts" },
11
- "peerDependencies": { "@wiredwp/robinpath": ">=0.20.0" },
12
- "devDependencies": { "@wiredwp/robinpath": "^0.30.1", "tsx": "^4.19.0", "typescript": "^5.6.0" }
10
+ "exports": {
11
+ ".": {
12
+ "import": "./dist/index.js",
13
+ "types": "./dist/index.d.ts"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "scripts": {
20
+ "build": "tsc",
21
+ "test": "node --import tsx --test tests/*.test.ts"
22
+ },
23
+ "peerDependencies": {
24
+ "@robinpath/core": ">=0.20.0"
25
+ },
26
+ "devDependencies": {
27
+ "@robinpath/core": "^0.30.1",
28
+ "tsx": "^4.19.0",
29
+ "typescript": "^5.6.0"
30
+ },
31
+ "description": "Finite state machine with transitions, guards, actions, context, history, and event listeners",
32
+ "keywords": [
33
+ "state",
34
+ "infrastructure"
35
+ ],
36
+ "license": "MIT",
37
+ "robinpath": {
38
+ "category": "infrastructure",
39
+ "type": "utility",
40
+ "auth": "none",
41
+ "functionCount": 17
42
+ }
13
43
  }
package/dist/index.d.ts DELETED
@@ -1,6 +0,0 @@
1
- import type { ModuleAdapter } from "@wiredwp/robinpath";
2
- declare const StateModule: ModuleAdapter;
3
- export default StateModule;
4
- export { StateModule };
5
- export { StateFunctions, StateFunctionMetadata, StateModuleMetadata } from "./state.js";
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,QAAA,MAAM,WAAW,EAAE,aAAuK,CAAC;AAC3L,eAAe,WAAW,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js DELETED
@@ -1,6 +0,0 @@
1
- import { StateFunctions, StateFunctionMetadata, StateModuleMetadata } from "./state.js";
2
- const StateModule = { name: "state", functions: StateFunctions, functionMetadata: StateFunctionMetadata, moduleMetadata: StateModuleMetadata, global: false };
3
- export default StateModule;
4
- export { StateModule };
5
- export { StateFunctions, StateFunctionMetadata, StateModuleMetadata } from "./state.js";
6
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACxF,MAAM,WAAW,GAAkB,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,qBAA4B,EAAE,cAAc,EAAE,mBAA0B,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC3L,eAAe,WAAW,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
package/dist/state.d.ts DELETED
@@ -1,224 +0,0 @@
1
- import type { BuiltinHandler } from "@wiredwp/robinpath";
2
- export declare const StateFunctions: Record<string, BuiltinHandler>;
3
- export declare const StateFunctionMetadata: {
4
- create: {
5
- description: string;
6
- parameters: {
7
- name: string;
8
- dataType: string;
9
- description: string;
10
- formInputType: string;
11
- required: boolean;
12
- }[];
13
- returnType: string;
14
- returnDescription: string;
15
- example: string;
16
- };
17
- send: {
18
- description: string;
19
- parameters: {
20
- name: string;
21
- dataType: string;
22
- description: string;
23
- formInputType: string;
24
- required: boolean;
25
- }[];
26
- returnType: string;
27
- returnDescription: string;
28
- example: string;
29
- };
30
- current: {
31
- description: string;
32
- parameters: {
33
- name: string;
34
- dataType: string;
35
- description: string;
36
- formInputType: string;
37
- required: boolean;
38
- }[];
39
- returnType: string;
40
- returnDescription: string;
41
- example: string;
42
- };
43
- context: {
44
- description: string;
45
- parameters: {
46
- name: string;
47
- dataType: string;
48
- description: string;
49
- formInputType: string;
50
- required: boolean;
51
- }[];
52
- returnType: string;
53
- returnDescription: string;
54
- example: string;
55
- };
56
- setContext: {
57
- description: string;
58
- parameters: {
59
- name: string;
60
- dataType: string;
61
- description: string;
62
- formInputType: string;
63
- required: boolean;
64
- }[];
65
- returnType: string;
66
- returnDescription: string;
67
- example: string;
68
- };
69
- can: {
70
- description: string;
71
- parameters: {
72
- name: string;
73
- dataType: string;
74
- description: string;
75
- formInputType: string;
76
- required: boolean;
77
- }[];
78
- returnType: string;
79
- returnDescription: string;
80
- example: string;
81
- };
82
- events: {
83
- description: string;
84
- parameters: {
85
- name: string;
86
- dataType: string;
87
- description: string;
88
- formInputType: string;
89
- required: boolean;
90
- }[];
91
- returnType: string;
92
- returnDescription: string;
93
- example: string;
94
- };
95
- is: {
96
- description: string;
97
- parameters: {
98
- name: string;
99
- dataType: string;
100
- description: string;
101
- formInputType: string;
102
- required: boolean;
103
- }[];
104
- returnType: string;
105
- returnDescription: string;
106
- example: string;
107
- };
108
- reset: {
109
- description: string;
110
- parameters: {
111
- name: string;
112
- dataType: string;
113
- description: string;
114
- formInputType: string;
115
- required: boolean;
116
- }[];
117
- returnType: string;
118
- returnDescription: string;
119
- example: string;
120
- };
121
- history: {
122
- description: string;
123
- parameters: {
124
- name: string;
125
- dataType: string;
126
- description: string;
127
- formInputType: string;
128
- required: boolean;
129
- }[];
130
- returnType: string;
131
- returnDescription: string;
132
- example: string;
133
- };
134
- addTransition: {
135
- description: string;
136
- parameters: {
137
- name: string;
138
- dataType: string;
139
- description: string;
140
- formInputType: string;
141
- required: boolean;
142
- }[];
143
- returnType: string;
144
- returnDescription: string;
145
- example: string;
146
- };
147
- addState: {
148
- description: string;
149
- parameters: {
150
- name: string;
151
- dataType: string;
152
- description: string;
153
- formInputType: string;
154
- required: boolean;
155
- }[];
156
- returnType: string;
157
- returnDescription: string;
158
- example: string;
159
- };
160
- on: {
161
- description: string;
162
- parameters: {
163
- name: string;
164
- dataType: string;
165
- description: string;
166
- formInputType: string;
167
- required: boolean;
168
- }[];
169
- returnType: string;
170
- returnDescription: string;
171
- example: string;
172
- };
173
- serialize: {
174
- description: string;
175
- parameters: {
176
- name: string;
177
- dataType: string;
178
- description: string;
179
- formInputType: string;
180
- required: boolean;
181
- }[];
182
- returnType: string;
183
- returnDescription: string;
184
- example: string;
185
- };
186
- matches: {
187
- description: string;
188
- parameters: {
189
- name: string;
190
- dataType: string;
191
- description: string;
192
- formInputType: string;
193
- required: boolean;
194
- }[];
195
- returnType: string;
196
- returnDescription: string;
197
- example: string;
198
- };
199
- destroy: {
200
- description: string;
201
- parameters: {
202
- name: string;
203
- dataType: string;
204
- description: string;
205
- formInputType: string;
206
- required: boolean;
207
- }[];
208
- returnType: string;
209
- returnDescription: string;
210
- example: string;
211
- };
212
- list: {
213
- description: string;
214
- parameters: never[];
215
- returnType: string;
216
- returnDescription: string;
217
- example: string;
218
- };
219
- };
220
- export declare const StateModuleMetadata: {
221
- description: string;
222
- methods: string[];
223
- };
224
- //# sourceMappingURL=state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA2C,MAAM,oBAAoB,CAAC;AAqJlG,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAqM,CAAC;AAEhQ,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkBjC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;CAG/B,CAAC"}
package/dist/state.js DELETED
@@ -1,168 +0,0 @@
1
- const machines = new Map();
2
- const create = (args) => {
3
- const opts = (typeof args[0] === "object" && args[0] !== null ? args[0] : {});
4
- const name = String(opts.name ?? "default");
5
- const states = (Array.isArray(opts.states) ? opts.states.map(String) : []);
6
- const initial = String(opts.initial ?? states[0] ?? "idle");
7
- const transitions = (Array.isArray(opts.transitions) ? opts.transitions : []);
8
- const machine = { name, initial, current: initial, states, transitions, context: opts.context ?? null, history: [], listeners: new Map() };
9
- machines.set(name, machine);
10
- return { name, current: machine.current, states, transitions: transitions.length };
11
- };
12
- const send = (args) => {
13
- const event = String(args[0] ?? "");
14
- const name = String(args[1] ?? "default");
15
- const machine = machines.get(name);
16
- if (!machine)
17
- throw new Error(`State machine "${name}" not found`);
18
- const transition = machine.transitions.find((t) => t.from === machine.current && t.event === event);
19
- if (!transition)
20
- return { changed: false, current: machine.current, event };
21
- if (transition.guard && !transition.guard(machine.context))
22
- return { changed: false, current: machine.current, event, guardFailed: true };
23
- const from = machine.current;
24
- machine.current = transition.to;
25
- if (transition.action)
26
- machine.context = transition.action(machine.context);
27
- machine.history.push({ from, to: transition.to, event, timestamp: Date.now() });
28
- const listeners = machine.listeners.get("transition") ?? [];
29
- for (const fn of listeners)
30
- fn(from, transition.to, event);
31
- return { changed: true, from, current: machine.current, event };
32
- };
33
- const getCurrent = (args) => {
34
- const name = String(args[0] ?? "default");
35
- const machine = machines.get(name);
36
- if (!machine)
37
- throw new Error(`State machine "${name}" not found`);
38
- return machine.current;
39
- };
40
- const getContext = (args) => {
41
- const name = String(args[0] ?? "default");
42
- const machine = machines.get(name);
43
- if (!machine)
44
- throw new Error(`State machine "${name}" not found`);
45
- return machine.context;
46
- };
47
- const setContext = (args) => {
48
- const ctx = args[0];
49
- const name = String(args[1] ?? "default");
50
- const machine = machines.get(name);
51
- if (!machine)
52
- throw new Error(`State machine "${name}" not found`);
53
- machine.context = ctx;
54
- return true;
55
- };
56
- const canSend = (args) => {
57
- const event = String(args[0] ?? "");
58
- const name = String(args[1] ?? "default");
59
- const machine = machines.get(name);
60
- if (!machine)
61
- return false;
62
- return machine.transitions.some((t) => t.from === machine.current && t.event === event);
63
- };
64
- const availableEvents = (args) => {
65
- const name = String(args[0] ?? "default");
66
- const machine = machines.get(name);
67
- if (!machine)
68
- return [];
69
- return [...new Set(machine.transitions.filter((t) => t.from === machine.current).map((t) => t.event))];
70
- };
71
- const is = (args) => {
72
- const state = String(args[0] ?? "");
73
- const name = String(args[1] ?? "default");
74
- const machine = machines.get(name);
75
- return machine?.current === state;
76
- };
77
- const reset = (args) => {
78
- const name = String(args[0] ?? "default");
79
- const machine = machines.get(name);
80
- if (!machine)
81
- throw new Error(`State machine "${name}" not found`);
82
- machine.current = machine.initial;
83
- machine.history = [];
84
- return { current: machine.current };
85
- };
86
- const history = (args) => {
87
- const name = String(args[0] ?? "default");
88
- const limit = args[1] ? Number(args[1]) : undefined;
89
- const machine = machines.get(name);
90
- if (!machine)
91
- return [];
92
- return limit ? machine.history.slice(-limit) : machine.history;
93
- };
94
- const addTransition = (args) => {
95
- const transition = (typeof args[0] === "object" && args[0] !== null ? args[0] : {});
96
- const name = String(args[1] ?? "default");
97
- const machine = machines.get(name);
98
- if (!machine)
99
- throw new Error(`State machine "${name}" not found`);
100
- machine.transitions.push(transition);
101
- return true;
102
- };
103
- const addState = (args) => {
104
- const state = String(args[0] ?? "");
105
- const name = String(args[1] ?? "default");
106
- const machine = machines.get(name);
107
- if (!machine)
108
- throw new Error(`State machine "${name}" not found`);
109
- if (!machine.states.includes(state))
110
- machine.states.push(state);
111
- return true;
112
- };
113
- const on = (args) => {
114
- const event = String(args[0] ?? "transition");
115
- const fn = args[1];
116
- const name = String(args[2] ?? "default");
117
- const machine = machines.get(name);
118
- if (!machine)
119
- throw new Error(`State machine "${name}" not found`);
120
- const listeners = machine.listeners.get(event) ?? [];
121
- listeners.push(fn);
122
- machine.listeners.set(event, listeners);
123
- return true;
124
- };
125
- const serialize = (args) => {
126
- const name = String(args[0] ?? "default");
127
- const machine = machines.get(name);
128
- if (!machine)
129
- throw new Error(`State machine "${name}" not found`);
130
- return JSON.stringify({ name: machine.name, initial: machine.initial, current: machine.current, states: machine.states, transitions: machine.transitions.map((t) => ({ from: t.from, to: t.to, event: t.event })), context: machine.context, history: machine.history });
131
- };
132
- const matches = (args) => {
133
- const states = (Array.isArray(args[0]) ? args[0] : [String(args[0] ?? "")]);
134
- const name = String(args[1] ?? "default");
135
- const machine = machines.get(name);
136
- return machine ? states.includes(machine.current) : false;
137
- };
138
- const destroy = (args) => {
139
- const name = String(args[0] ?? "default");
140
- machines.delete(name);
141
- return true;
142
- };
143
- const list = () => Array.from(machines.keys());
144
- export const StateFunctions = { create, send, current: getCurrent, context: getContext, setContext, can: canSend, events: availableEvents, is, reset, history, addTransition, addState, on, serialize, matches, destroy, list };
145
- export const StateFunctionMetadata = {
146
- create: { description: "Create state machine", parameters: [{ name: "options", dataType: "object", description: "{name, states[], initial, transitions[{from, to, event}], context}", formInputType: "text", required: true }], returnType: "object", returnDescription: "{name, current, states, transitions}", example: 'state.create {"name": "light", "states": ["red", "green", "yellow"], "initial": "red", "transitions": [{"from": "red", "to": "green", "event": "next"}]}' },
147
- send: { description: "Send event to trigger transition", parameters: [{ name: "event", dataType: "string", description: "Event name", formInputType: "text", required: true }, { name: "machine", dataType: "string", description: "Machine name", formInputType: "text", required: false }], returnType: "object", returnDescription: "{changed, from, current, event}", example: 'state.send "next" "light"' },
148
- current: { description: "Get current state", parameters: [{ name: "machine", dataType: "string", description: "Machine name", formInputType: "text", required: false }], returnType: "string", returnDescription: "Current state", example: 'state.current "light"' },
149
- context: { description: "Get machine context", parameters: [{ name: "machine", dataType: "string", description: "Machine name", formInputType: "text", required: false }], returnType: "any", returnDescription: "Context data", example: 'state.context "light"' },
150
- setContext: { description: "Set machine context", parameters: [{ name: "context", dataType: "any", description: "New context", formInputType: "text", required: true }, { name: "machine", dataType: "string", description: "Machine name", formInputType: "text", required: false }], returnType: "boolean", returnDescription: "true", example: 'state.setContext {"count": 0} "light"' },
151
- can: { description: "Check if event can be sent", parameters: [{ name: "event", dataType: "string", description: "Event name", formInputType: "text", required: true }, { name: "machine", dataType: "string", description: "Machine name", formInputType: "text", required: false }], returnType: "boolean", returnDescription: "true if transition exists", example: 'state.can "next" "light"' },
152
- events: { description: "Get available events from current state", parameters: [{ name: "machine", dataType: "string", description: "Machine name", formInputType: "text", required: false }], returnType: "array", returnDescription: "Event names", example: 'state.events "light"' },
153
- is: { description: "Check if in specific state", parameters: [{ name: "state", dataType: "string", description: "State name", formInputType: "text", required: true }, { name: "machine", dataType: "string", description: "Machine name", formInputType: "text", required: false }], returnType: "boolean", returnDescription: "true if matches", example: 'state.is "red" "light"' },
154
- reset: { description: "Reset to initial state", parameters: [{ name: "machine", dataType: "string", description: "Machine name", formInputType: "text", required: false }], returnType: "object", returnDescription: "{current}", example: 'state.reset "light"' },
155
- history: { description: "Get transition history", parameters: [{ name: "machine", dataType: "string", description: "Machine name", formInputType: "text", required: false }, { name: "limit", dataType: "number", description: "Max entries", formInputType: "text", required: false }], returnType: "array", returnDescription: "History entries", example: 'state.history "light" 10' },
156
- addTransition: { description: "Add transition at runtime", parameters: [{ name: "transition", dataType: "object", description: "{from, to, event}", formInputType: "text", required: true }, { name: "machine", dataType: "string", description: "Machine name", formInputType: "text", required: false }], returnType: "boolean", returnDescription: "true", example: 'state.addTransition {"from": "yellow", "to": "red", "event": "next"} "light"' },
157
- addState: { description: "Add state at runtime", parameters: [{ name: "state", dataType: "string", description: "State name", formInputType: "text", required: true }, { name: "machine", dataType: "string", description: "Machine name", formInputType: "text", required: false }], returnType: "boolean", returnDescription: "true", example: 'state.addState "flashing" "light"' },
158
- on: { description: "Listen for transitions", parameters: [{ name: "event", dataType: "string", description: "Event type (transition)", formInputType: "text", required: true }, { name: "handler", dataType: "string", description: "Callback (from, to, event)", formInputType: "text", required: true }, { name: "machine", dataType: "string", description: "Machine name", formInputType: "text", required: false }], returnType: "boolean", returnDescription: "true", example: 'state.on "transition" $handler "light"' },
159
- serialize: { description: "Serialize machine to JSON", parameters: [{ name: "machine", dataType: "string", description: "Machine name", formInputType: "text", required: false }], returnType: "string", returnDescription: "JSON string", example: 'state.serialize "light"' },
160
- matches: { description: "Check if current state matches any", parameters: [{ name: "states", dataType: "array", description: "State names", formInputType: "text", required: true }, { name: "machine", dataType: "string", description: "Machine name", formInputType: "text", required: false }], returnType: "boolean", returnDescription: "true if matches", example: 'state.matches ["red", "yellow"] "light"' },
161
- destroy: { description: "Destroy machine", parameters: [{ name: "machine", dataType: "string", description: "Machine name", formInputType: "text", required: false }], returnType: "boolean", returnDescription: "true", example: 'state.destroy "light"' },
162
- list: { description: "List all machines", parameters: [], returnType: "array", returnDescription: "Machine names", example: 'state.list' },
163
- };
164
- export const StateModuleMetadata = {
165
- description: "Finite state machine with transitions, guards, actions, context, history, and event listeners",
166
- methods: ["create", "send", "current", "context", "setContext", "can", "events", "is", "reset", "history", "addTransition", "addState", "on", "serialize", "matches", "destroy", "list"],
167
- };
168
- //# sourceMappingURL=state.js.map
package/dist/state.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAKA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;AAE5C,MAAM,MAAM,GAAmB,CAAC,IAAI,EAAE,EAAE;IACtC,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAA4B,CAAC;IACzG,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAa,CAAC;IACvF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAiB,CAAC;IAC9F,MAAM,OAAO,GAAY,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;IACpJ,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;AACrF,CAAC,CAAC;AAEF,MAAM,IAAI,GAAmB,CAAC,IAAI,EAAE,EAAE;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,aAAa,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IACzG,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5E,IAAI,UAAU,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC1I,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAC7B,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC;IAChC,IAAI,UAAU,CAAC,MAAM;QAAE,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5E,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAChF,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC5D,KAAK,MAAM,EAAE,IAAI,SAAS;QAAE,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC3D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;AAClE,CAAC,CAAC;AAEF,MAAM,UAAU,GAAmB,CAAC,IAAI,EAAE,EAAE;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,aAAa,CAAC,CAAC;IACnE,OAAO,OAAO,CAAC,OAAO,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,UAAU,GAAmB,CAAC,IAAI,EAAE,EAAE;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,aAAa,CAAC,CAAC;IACnE,OAAO,OAAO,CAAC,OAAO,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,UAAU,GAAmB,CAAC,IAAI,EAAE,EAAE;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,aAAa,CAAC,CAAC;IACnE,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC;IACtB,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,OAAO,GAAmB,CAAC,IAAI,EAAE,EAAE;IACvC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AAC/F,CAAC,CAAC;AAEF,MAAM,eAAe,GAAmB,CAAC,IAAI,EAAE,EAAE;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnH,CAAC,CAAC;AAEF,MAAM,EAAE,GAAmB,CAAC,IAAI,EAAE,EAAE;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,OAAO,EAAE,OAAO,KAAK,KAAK,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,KAAK,GAAmB,CAAC,IAAI,EAAE,EAAE;IACrC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,aAAa,CAAC,CAAC;IACnE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAClC,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;IACrB,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,OAAO,GAAmB,CAAC,IAAI,EAAE,EAAE;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AACjE,CAAC,CAAC;AAEF,MAAM,aAAa,GAAmB,CAAC,IAAI,EAAE,EAAE;IAC7C,MAAM,UAAU,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAe,CAAC;IAClG,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,aAAa,CAAC,CAAC;IACnE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAmB,CAAC,IAAI,EAAE,EAAE;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,aAAa,CAAC,CAAC;IACnE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,EAAE,GAAmB,CAAC,IAAI,EAAE,EAAE;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC;IAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAsD,CAAC;IACxE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,aAAa,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACrD,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,SAAS,GAAmB,CAAC,IAAI,EAAE,EAAE;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,aAAa,CAAC,CAAC;IACnE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAChR,CAAC,CAAC;AAEF,MAAM,OAAO,GAAmB,CAAC,IAAI,EAAE,EAAE;IACvC,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAa,CAAC;IACxF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,OAAO,GAAmB,CAAC,IAAI,EAAE,EAAE;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,IAAI,GAAmB,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAE/D,MAAM,CAAC,MAAM,cAAc,GAAmC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhQ,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM,EAAE,EAAE,WAAW,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,oEAAoE,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,sCAAsC,EAAE,OAAO,EAAE,0JAA0J,EAAE;IACtd,IAAI,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,iCAAiC,EAAE,OAAO,EAAE,2BAA2B,EAAE;IAChZ,OAAO,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,EAAE,OAAO,EAAE,uBAAuB,EAAE;IACrQ,OAAO,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,uBAAuB,EAAE;IACnQ,UAAU,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,uCAAuC,EAAE;IAC3X,GAAG,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,OAAO,EAAE,0BAA0B,EAAE;IACnY,MAAM,EAAE,EAAE,WAAW,EAAE,yCAAyC,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,OAAO,EAAE,sBAAsB,EAAE;IACtR,EAAE,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,EAAE,wBAAwB,EAAE;IACtX,KAAK,EAAE,EAAE,WAAW,EAAE,wBAAwB,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAE,qBAAqB,EAAE;IAClQ,OAAO,EAAE,EAAE,WAAW,EAAE,wBAAwB,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,EAAE,0BAA0B,EAAE;IACzX,aAAa,EAAE,EAAE,WAAW,EAAE,2BAA2B,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,8EAA8E,EAAE;IACvb,QAAQ,EAAE,EAAE,WAAW,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,mCAAmC,EAAE;IACtX,EAAE,EAAE,EAAE,WAAW,EAAE,wBAAwB,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,wCAAwC,EAAE;IAC/f,SAAS,EAAE,EAAE,WAAW,EAAE,2BAA2B,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,OAAO,EAAE,yBAAyB,EAAE;IAC/Q,OAAO,EAAE,EAAE,WAAW,EAAE,oCAAoC,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,EAAE,yCAAyC,EAAE;IACrZ,OAAO,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,EAAE;IAC3P,IAAI,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE;CAC3I,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,WAAW,EAAE,+FAA+F;IAC5G,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;CACzL,CAAC"}