chartmind 1.0.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/LICENSE +21 -0
- package/README.md +140 -0
- package/build/src/engine/actions/base-action.d.ts +13 -0
- package/build/src/engine/actions/base-action.js +15 -0
- package/build/src/engine/actions/base-action.js.map +1 -0
- package/build/src/engine/actions/decision-action.d.ts +10 -0
- package/build/src/engine/actions/decision-action.js +34 -0
- package/build/src/engine/actions/decision-action.js.map +1 -0
- package/build/src/engine/actions/end-action.d.ts +6 -0
- package/build/src/engine/actions/end-action.js +14 -0
- package/build/src/engine/actions/end-action.js.map +1 -0
- package/build/src/engine/actions/predefined-process-action.d.ts +7 -0
- package/build/src/engine/actions/predefined-process-action.js +21 -0
- package/build/src/engine/actions/predefined-process-action.js.map +1 -0
- package/build/src/engine/actions/process-action.d.ts +7 -0
- package/build/src/engine/actions/process-action.js +26 -0
- package/build/src/engine/actions/process-action.js.map +1 -0
- package/build/src/engine/actions/start-action.d.ts +6 -0
- package/build/src/engine/actions/start-action.js +18 -0
- package/build/src/engine/actions/start-action.js.map +1 -0
- package/build/src/engine/chart/chart.d.ts +15 -0
- package/build/src/engine/chart/chart.js +43 -0
- package/build/src/engine/chart/chart.js.map +1 -0
- package/build/src/engine/chart/context/chart-context.d.ts +31 -0
- package/build/src/engine/chart/context/chart-context.js +44 -0
- package/build/src/engine/chart/context/chart-context.js.map +1 -0
- package/build/src/engine/chart/instance/chart-instance.d.ts +12 -0
- package/build/src/engine/chart/instance/chart-instance.js +49 -0
- package/build/src/engine/chart/instance/chart-instance.js.map +1 -0
- package/build/src/engine/chart/manager/chart-manager.d.ts +61 -0
- package/build/src/engine/chart/manager/chart-manager.js +108 -0
- package/build/src/engine/chart/manager/chart-manager.js.map +1 -0
- package/build/src/engine/chart/parser/chart-parser.d.ts +12 -0
- package/build/src/engine/chart/parser/chart-parser.js +58 -0
- package/build/src/engine/chart/parser/chart-parser.js.map +1 -0
- package/build/src/engine/chart/validation/chart-validator.d.ts +7 -0
- package/build/src/engine/chart/validation/chart-validator.js +67 -0
- package/build/src/engine/chart/validation/chart-validator.js.map +1 -0
- package/build/src/engine/chart/validation/rules/has-connection-source-and-target-value.d.ts +6 -0
- package/build/src/engine/chart/validation/rules/has-connection-source-and-target-value.js +19 -0
- package/build/src/engine/chart/validation/rules/has-connection-source-and-target-value.js.map +1 -0
- package/build/src/engine/chart/validation/rules/has-connection-with-condition-or-default.d.ts +7 -0
- package/build/src/engine/chart/validation/rules/has-connection-with-condition-or-default.js +24 -0
- package/build/src/engine/chart/validation/rules/has-connection-with-condition-or-default.js.map +1 -0
- package/build/src/engine/chart/validation/rules/has-no-source-connection.d.ts +7 -0
- package/build/src/engine/chart/validation/rules/has-no-source-connection.js +18 -0
- package/build/src/engine/chart/validation/rules/has-no-source-connection.js.map +1 -0
- package/build/src/engine/chart/validation/rules/has-single-or-multiple-source-connection.d.ts +7 -0
- package/build/src/engine/chart/validation/rules/has-single-or-multiple-source-connection.js +18 -0
- package/build/src/engine/chart/validation/rules/has-single-or-multiple-source-connection.js.map +1 -0
- package/build/src/engine/chart/validation/rules/has-single-or-multiple-target-connection.d.ts +7 -0
- package/build/src/engine/chart/validation/rules/has-single-or-multiple-target-connection.js +18 -0
- package/build/src/engine/chart/validation/rules/has-single-or-multiple-target-connection.js.map +1 -0
- package/build/src/engine/chart/validation/rules/has-single-source-connection.d.ts +7 -0
- package/build/src/engine/chart/validation/rules/has-single-source-connection.js +18 -0
- package/build/src/engine/chart/validation/rules/has-single-source-connection.js.map +1 -0
- package/build/src/engine/chart/validation/rules/is-single-symbol.d.ts +7 -0
- package/build/src/engine/chart/validation/rules/is-single-symbol.js +15 -0
- package/build/src/engine/chart/validation/rules/is-single-symbol.js.map +1 -0
- package/build/src/engine/file/file-service.d.ts +7 -0
- package/build/src/engine/file/file-service.js +34 -0
- package/build/src/engine/file/file-service.js.map +1 -0
- package/build/src/engine/registry/executable-registry.d.ts +34 -0
- package/build/src/engine/registry/executable-registry.js +49 -0
- package/build/src/engine/registry/executable-registry.js.map +1 -0
- package/build/src/index.d.ts +4 -0
- package/build/src/index.js +10 -0
- package/build/src/index.js.map +1 -0
- package/build/src/interfaces/action-context.interface.d.ts +8 -0
- package/build/src/interfaces/action-context.interface.js +3 -0
- package/build/src/interfaces/action-context.interface.js.map +1 -0
- package/build/src/interfaces/chart-validation-rule.interface.d.ts +6 -0
- package/build/src/interfaces/chart-validation-rule.interface.js +3 -0
- package/build/src/interfaces/chart-validation-rule.interface.js.map +1 -0
- package/build/src/interfaces/chart.interface.d.ts +5 -0
- package/build/src/interfaces/chart.interface.js +3 -0
- package/build/src/interfaces/chart.interface.js.map +1 -0
- package/build/src/interfaces/executable.interface.d.ts +16 -0
- package/build/src/interfaces/executable.interface.js +3 -0
- package/build/src/interfaces/executable.interface.js.map +1 -0
- package/build/src/interfaces/parsed-chart.interface.d.ts +5 -0
- package/build/src/interfaces/parsed-chart.interface.js +3 -0
- package/build/src/interfaces/parsed-chart.interface.js.map +1 -0
- package/build/src/interfaces/parsed-diagram.interface.d.ts +9 -0
- package/build/src/interfaces/parsed-diagram.interface.js +3 -0
- package/build/src/interfaces/parsed-diagram.interface.js.map +1 -0
- package/build/src/interfaces/symbol-connection.interface.d.ts +7 -0
- package/build/src/interfaces/symbol-connection.interface.js +3 -0
- package/build/src/interfaces/symbol-connection.interface.js.map +1 -0
- package/build/src/interfaces/symbol-decision.interface.d.ts +2 -0
- package/build/src/interfaces/symbol-decision.interface.js +3 -0
- package/build/src/interfaces/symbol-decision.interface.js.map +1 -0
- package/build/src/interfaces/symbol-end.interface.d.ts +2 -0
- package/build/src/interfaces/symbol-end.interface.js +3 -0
- package/build/src/interfaces/symbol-end.interface.js.map +1 -0
- package/build/src/interfaces/symbol-meta.interface.d.ts +4 -0
- package/build/src/interfaces/symbol-meta.interface.js +3 -0
- package/build/src/interfaces/symbol-meta.interface.js.map +1 -0
- package/build/src/interfaces/symbol-predefined-process.interface.d.ts +4 -0
- package/build/src/interfaces/symbol-predefined-process.interface.js +3 -0
- package/build/src/interfaces/symbol-predefined-process.interface.js.map +1 -0
- package/build/src/interfaces/symbol-process.interface.d.ts +4 -0
- package/build/src/interfaces/symbol-process.interface.js +3 -0
- package/build/src/interfaces/symbol-process.interface.js.map +1 -0
- package/build/src/interfaces/symbol-start.interface.d.ts +2 -0
- package/build/src/interfaces/symbol-start.interface.js +3 -0
- package/build/src/interfaces/symbol-start.interface.js.map +1 -0
- package/build/src/interfaces/symbol.interface.d.ts +6 -0
- package/build/src/interfaces/symbol.interface.js +3 -0
- package/build/src/interfaces/symbol.interface.js.map +1 -0
- package/build/src/types/executable-constructor.type.d.ts +1 -0
- package/build/src/types/executable-constructor.type.js +3 -0
- package/build/src/types/executable-constructor.type.js.map +1 -0
- package/build/src/types/symbol-chart.type.d.ts +6 -0
- package/build/src/types/symbol-chart.type.js +3 -0
- package/build/src/types/symbol-chart.type.js.map +1 -0
- package/build/src/types/symbol-type.type.d.ts +1 -0
- package/build/src/types/symbol-type.type.js +3 -0
- package/build/src/types/symbol-type.type.js.map +1 -0
- package/build/tsconfig.tsbuildinfo +1 -0
- package/package.json +49 -0
package/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2025 Timo Martin
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
package/README.md
ADDED
@@ -0,0 +1,140 @@
|
|
1
|
+
# 🧠 chartmind
|
2
|
+
|
3
|
+
[![Code Style: Google][gts-badge-image]][gts-github-url]
|
4
|
+
|
5
|
+
**chartmind** is a minimalist workflow engine that loads flowcharts from [draw.io (diagrams.net)][drawio-url] and executes the underlying classes sequentially.
|
6
|
+
|
7
|
+
---
|
8
|
+
|
9
|
+
## Features
|
10
|
+
- Custom draw.io symbol library tailored for use with chartmind
|
11
|
+
- Interpret flowcharts as executable workflows
|
12
|
+
- Support for decisions, loops, custom and predefined actions
|
13
|
+
- Built-in validator for flowchart development
|
14
|
+
|
15
|
+
---
|
16
|
+
|
17
|
+
## Getting Started
|
18
|
+
|
19
|
+
### Installation
|
20
|
+
```bash
|
21
|
+
npm install --save chartmind
|
22
|
+
```
|
23
|
+
|
24
|
+
---
|
25
|
+
|
26
|
+
### Import the Provided Symbol Library
|
27
|
+
|
28
|
+
Download the [symbol library][symbol-library] provided in the project and import it into draw.io.
|
29
|
+
|
30
|
+
File 🠊 Open Library... 🠊 Select the downloaded `flow-chart.xml` file
|
31
|
+
|
32
|
+
---
|
33
|
+
|
34
|
+
### Draw Your Flowchart
|
35
|
+
|
36
|
+
Start by creating your flowchart diagram.
|
37
|
+
|
38
|
+
**⚠️ Make sure to use only the symbols from the provided symbol library (including the connection symbol), as they already contain the necessary properties to be executable.**
|
39
|
+
|
40
|
+
The image below shows a minimalist example:
|
41
|
+
|
42
|
+
![Minimalist flowchart][docs-flow-chart]
|
43
|
+
|
44
|
+
Once your diagram is complete, right-click on the process symbol `Increment counter` and choose `Edit Data...`.
|
45
|
+
Add a key for your class in the executable field — this will be used to register your class later in the registry.
|
46
|
+
Here’s how the configuration window looks:
|
47
|
+
|
48
|
+
![Process symbol configuration window][docs-process-symbol-settings]
|
49
|
+
|
50
|
+
Also, give your flowchart a name so you can reference it later for execution.
|
51
|
+
Right-click the toolbar at the bottom of draw.io and select `Rename...`.
|
52
|
+
This is what the rename dialog looks like:
|
53
|
+
|
54
|
+
![Rename flowchart dialog][docs-rename-flowchart]
|
55
|
+
|
56
|
+
Save the diagram somewhere in your project, for example under a folder called `charts`.
|
57
|
+
|
58
|
+
**⚠️ Make sure to save the file with the `.drawio` extension.**
|
59
|
+
|
60
|
+
---
|
61
|
+
|
62
|
+
### Run the Flowchart
|
63
|
+
|
64
|
+
Now, implement your classes and register them in the registry. Then you can start the flowchart by its name. The following example demonstrates how:
|
65
|
+
|
66
|
+
📄**increment-counter-task.ts**
|
67
|
+
```ts
|
68
|
+
import { ChartContext, Executable } from 'chartmind';
|
69
|
+
|
70
|
+
export class IncrementCounter implements Executable {
|
71
|
+
async execute(chartContext: ChartContext): Promise<void> {
|
72
|
+
const counter = chartContext.getVariable('counter') as number;
|
73
|
+
chartContext.setVariable('counter', counter + 1);
|
74
|
+
}
|
75
|
+
}
|
76
|
+
```
|
77
|
+
|
78
|
+
📄**main.ts**
|
79
|
+
```ts
|
80
|
+
import { ChartManager, ExecutableRegistry } from 'chartmind';
|
81
|
+
import { IncrementCounter } from './increment-counter';
|
82
|
+
|
83
|
+
const chartManager = new ChartManager()
|
84
|
+
.loadCharts('./charts')
|
85
|
+
.validateCharts(); // Optional chart validation
|
86
|
+
|
87
|
+
ExecutableRegistry.instance
|
88
|
+
.addExecutable('increment-counter', IncrementCounter);
|
89
|
+
|
90
|
+
start();
|
91
|
+
|
92
|
+
async function start() {
|
93
|
+
try {
|
94
|
+
const chartName = 'Test Chart';
|
95
|
+
const chartContext = new Map<string, unknown>([
|
96
|
+
['counter', 1]
|
97
|
+
]);
|
98
|
+
|
99
|
+
await chartManager.startProcess(chartName, chartContext);
|
100
|
+
|
101
|
+
console.log(chartContext.get('counter')); // Output: 2
|
102
|
+
} catch(error: unknown) {
|
103
|
+
console.log(error);
|
104
|
+
}
|
105
|
+
}
|
106
|
+
```
|
107
|
+
|
108
|
+
> 🧪 **Tip:** You can validate your charts before runtime to catch misconfigured symbols early.
|
109
|
+
|
110
|
+
|
111
|
+
---
|
112
|
+
|
113
|
+
## Symbol Properties
|
114
|
+
|
115
|
+
The following table describes the available symbol properties, on which symbols these can be used, valid values, and descriptions:
|
116
|
+
|
117
|
+
Name | Symbol(s) | Possible Values | Description | Required
|
118
|
+
---------|------------------------|-------------------------|-----------------------|:----------:
|
119
|
+
type | Start, End, Connection, Decision, Process, Predefined process | start, end, connection, decision, process, predefined | Defines how the symbol will be interpreted by the engine. | Always
|
120
|
+
condition | Connection | e.g. counter % 2 === 0 or text === 'foo' | Controls the flow from a decision symbol. Every connection must have a condition except the one marked as default. | All outgoing connections from a decision symbol must have a condition, except the one marked as default.
|
121
|
+
default | Connection | 1 | Marks a connection as the default path. If all other conditions evaluate to false, this path is taken. Only one default should exist. | At least one outgoing connection from a decision symbol must be marked as the default.
|
122
|
+
executable | Process | e.g. increment-counter | Key for the class registered in the registry. | Always
|
123
|
+
name | Predefined process | e.g. Test Chart | Name of the flowchart to execute (as defined in draw.io). | Always
|
124
|
+
|
125
|
+
All of these properties are pre-configured in the provided symbol library.
|
126
|
+
Only the `type` field is already filled — the rest must be completed manually for each symbol.
|
127
|
+
|
128
|
+
## License
|
129
|
+
|
130
|
+
This project is licensed under the [MIT License][license].
|
131
|
+
|
132
|
+
|
133
|
+
[license]: LICENSE
|
134
|
+
[symbol-library]: flow-chart.xml
|
135
|
+
[drawio-url]: https://draw.io
|
136
|
+
[docs-flow-chart]: docs/images/flow-chart.png
|
137
|
+
[docs-process-symbol-settings]: docs/images/process-symbol-settings.png
|
138
|
+
[docs-rename-flowchart]: docs/images/rename-flow-chart.png
|
139
|
+
[gts-badge-image]: https://img.shields.io/badge/code%20style-google-blueviolet.svg
|
140
|
+
[gts-github-url]: https://github.com/google/gts
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { ChartContext } from '../chart/context/chart-context';
|
2
|
+
import { ActionContext } from '../../interfaces/action-context.interface';
|
3
|
+
import { ChartManager } from '../chart/manager/chart-manager';
|
4
|
+
import { SymbolChart } from '../../types/symbol-chart.type';
|
5
|
+
import { Chart } from '../chart/chart';
|
6
|
+
export declare abstract class BaseAction {
|
7
|
+
protected symbol: SymbolChart;
|
8
|
+
protected chart: Chart;
|
9
|
+
protected chartManager: ChartManager;
|
10
|
+
constructor(context: ActionContext);
|
11
|
+
abstract execute(chartContext: ChartContext): Promise<void>;
|
12
|
+
abstract getNext(chartContext: ChartContext): SymbolChart | undefined;
|
13
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.BaseAction = void 0;
|
4
|
+
class BaseAction {
|
5
|
+
symbol;
|
6
|
+
chart;
|
7
|
+
chartManager;
|
8
|
+
constructor(context) {
|
9
|
+
this.symbol = context.symbol;
|
10
|
+
this.chart = context.chart;
|
11
|
+
this.chartManager = context.chartManager;
|
12
|
+
}
|
13
|
+
}
|
14
|
+
exports.BaseAction = BaseAction;
|
15
|
+
//# sourceMappingURL=base-action.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"base-action.js","sourceRoot":"","sources":["../../../../src/engine/actions/base-action.ts"],"names":[],"mappings":";;;AAMA,MAAsB,UAAU;IACpB,MAAM,CAAc;IACpB,KAAK,CAAQ;IACb,YAAY,CAAe;IAErC,YAAY,OAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC3C,CAAC;CAKF;AAdD,gCAcC"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { SymbolChart } from '../../types/symbol-chart.type';
|
2
|
+
import { ChartContext } from '../chart/context/chart-context';
|
3
|
+
import { BaseAction } from './base-action';
|
4
|
+
export declare class DecisionAction extends BaseAction {
|
5
|
+
execute(): Promise<void>;
|
6
|
+
getNext(chartContext: ChartContext): SymbolChart | undefined;
|
7
|
+
private getEvaluatedConnection;
|
8
|
+
private evaluateCondition;
|
9
|
+
private getDefaultConnection;
|
10
|
+
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.DecisionAction = void 0;
|
4
|
+
const base_action_1 = require("./base-action");
|
5
|
+
class DecisionAction extends base_action_1.BaseAction {
|
6
|
+
async execute() {
|
7
|
+
// console.log(`SymbolEnd ${this.symbol.label} executed.`);
|
8
|
+
}
|
9
|
+
getNext(chartContext) {
|
10
|
+
const connections = this.chart.getConnectionsBySourceId(this.symbol.id);
|
11
|
+
const evaluatedConnection = this.getEvaluatedConnection(connections, chartContext);
|
12
|
+
if (evaluatedConnection && evaluatedConnection.mxCell.target) {
|
13
|
+
return this.chart.getSymbolById(evaluatedConnection.mxCell.target);
|
14
|
+
}
|
15
|
+
const defaultConnection = this.getDefaultConnection(connections);
|
16
|
+
if (defaultConnection && defaultConnection.mxCell.target) {
|
17
|
+
return this.chart.getSymbolById(defaultConnection.mxCell.target);
|
18
|
+
}
|
19
|
+
return undefined;
|
20
|
+
}
|
21
|
+
getEvaluatedConnection(connections, chartContext) {
|
22
|
+
return connections.find(connection => connection.default !== '1' &&
|
23
|
+
this.evaluateCondition(connection.condition, chartContext));
|
24
|
+
}
|
25
|
+
evaluateCondition(condition, chartContext) {
|
26
|
+
chartContext.context.forEach((value, key) => (condition = condition.replaceAll(key.toString(), String(value))));
|
27
|
+
return eval(condition);
|
28
|
+
}
|
29
|
+
getDefaultConnection(connections) {
|
30
|
+
return connections.find(connections => connections.default === '1');
|
31
|
+
}
|
32
|
+
}
|
33
|
+
exports.DecisionAction = DecisionAction;
|
34
|
+
//# sourceMappingURL=decision-action.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"decision-action.js","sourceRoot":"","sources":["../../../../src/engine/actions/decision-action.ts"],"names":[],"mappings":";;;AAGA,+CAAyC;AAEzC,MAAa,cAAe,SAAQ,wBAAU;IACrC,KAAK,CAAC,OAAO;QAClB,2DAA2D;IAC7D,CAAC;IAEM,OAAO,CAAC,YAA0B;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAExE,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CACrD,WAAW,EACX,YAAY,CACb,CAAC;QACF,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE;YAC5D,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACpE;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE;YACxD,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAClE;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,sBAAsB,CAC5B,WAA+B,EAC/B,YAA0B;QAE1B,OAAO,WAAW,CAAC,IAAI,CACrB,UAAU,CAAC,EAAE,CACX,UAAU,CAAC,OAAO,KAAK,GAAG;YAC1B,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,CAC7D,CAAC;IACJ,CAAC;IAEO,iBAAiB,CACvB,SAAiB,EACjB,YAA0B;QAE1B,YAAY,CAAC,OAAO,CAAC,OAAO,CAC1B,CAAC,KAAc,EAAE,GAAW,EAAE,EAAE,CAC9B,CAAC,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CACpE,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAY,CAAC;IACpC,CAAC;IAEO,oBAAoB,CAC1B,WAA+B;QAE/B,OAAO,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC;IACtE,CAAC;CACF;AApDD,wCAoDC"}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.EndAction = void 0;
|
4
|
+
const base_action_1 = require("./base-action");
|
5
|
+
class EndAction extends base_action_1.BaseAction {
|
6
|
+
async execute() {
|
7
|
+
// console.log(`SymbolEnd ${this.symbol.label} executed.`);
|
8
|
+
}
|
9
|
+
getNext() {
|
10
|
+
return undefined;
|
11
|
+
}
|
12
|
+
}
|
13
|
+
exports.EndAction = EndAction;
|
14
|
+
//# sourceMappingURL=end-action.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"end-action.js","sourceRoot":"","sources":["../../../../src/engine/actions/end-action.ts"],"names":[],"mappings":";;;AACA,+CAAyC;AAEzC,MAAa,SAAU,SAAQ,wBAAU;IAChC,KAAK,CAAC,OAAO;QAClB,2DAA2D;IAC7D,CAAC;IAEM,OAAO;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AARD,8BAQC"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { SymbolChart } from '../../types/symbol-chart.type';
|
2
|
+
import { ChartContext } from '../chart/context/chart-context';
|
3
|
+
import { BaseAction } from './base-action';
|
4
|
+
export declare class PredefinedProcessAction extends BaseAction {
|
5
|
+
execute(chartContext: ChartContext): Promise<void>;
|
6
|
+
getNext(): SymbolChart | undefined;
|
7
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.PredefinedProcessAction = void 0;
|
4
|
+
const base_action_1 = require("./base-action");
|
5
|
+
class PredefinedProcessAction extends base_action_1.BaseAction {
|
6
|
+
async execute(chartContext) {
|
7
|
+
const predefinedProcess = this.symbol;
|
8
|
+
const name = predefinedProcess.name;
|
9
|
+
return this.chartManager.startProcess(name, chartContext.context);
|
10
|
+
// console.log(`SymbolPredefinedProcess ${this.symbol.label} executed.`);
|
11
|
+
}
|
12
|
+
getNext() {
|
13
|
+
const connection = this.chart.getConnectionBySourceId(this.symbol.id);
|
14
|
+
if (!connection || !connection.mxCell.target) {
|
15
|
+
return undefined;
|
16
|
+
}
|
17
|
+
return this.chart.getSymbolById(connection.mxCell.target);
|
18
|
+
}
|
19
|
+
}
|
20
|
+
exports.PredefinedProcessAction = PredefinedProcessAction;
|
21
|
+
//# sourceMappingURL=predefined-process-action.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"predefined-process-action.js","sourceRoot":"","sources":["../../../../src/engine/actions/predefined-process-action.ts"],"names":[],"mappings":";;;AAGA,+CAAyC;AAEzC,MAAa,uBAAwB,SAAQ,wBAAU;IAC9C,KAAK,CAAC,OAAO,CAAC,YAA0B;QAC7C,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAiC,CAAC;QACjE,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC;QAEpC,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;QAElE,yEAAyE;IAC3E,CAAC;IAEM,OAAO;QACZ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEtE,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE;YAC5C,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;CACF;AAnBD,0DAmBC"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { ChartContext } from '../chart/context/chart-context';
|
2
|
+
import { BaseAction } from './base-action';
|
3
|
+
import { SymbolChart } from '../../types/symbol-chart.type';
|
4
|
+
export declare class ProcessAction extends BaseAction {
|
5
|
+
execute(chartContext: ChartContext): Promise<void>;
|
6
|
+
getNext(): SymbolChart | undefined;
|
7
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.ProcessAction = void 0;
|
4
|
+
const base_action_1 = require("./base-action");
|
5
|
+
const executable_registry_1 = require("../registry/executable-registry");
|
6
|
+
class ProcessAction extends base_action_1.BaseAction {
|
7
|
+
async execute(chartContext) {
|
8
|
+
const processSymbol = this.symbol;
|
9
|
+
const executableName = processSymbol.executable;
|
10
|
+
const Executable = executable_registry_1.ExecutableRegistry.instance.getExecutableByName(executableName);
|
11
|
+
if (Executable) {
|
12
|
+
const instance = new Executable();
|
13
|
+
return instance.execute(chartContext);
|
14
|
+
}
|
15
|
+
// console.log(`SymbolProcess ${this.symbol.label} executed.`);
|
16
|
+
}
|
17
|
+
getNext() {
|
18
|
+
const connection = this.chart.getConnectionBySourceId(this.symbol.id);
|
19
|
+
if (!connection || !connection.mxCell.target) {
|
20
|
+
return undefined;
|
21
|
+
}
|
22
|
+
return this.chart.getSymbolById(connection.mxCell.target);
|
23
|
+
}
|
24
|
+
}
|
25
|
+
exports.ProcessAction = ProcessAction;
|
26
|
+
//# sourceMappingURL=process-action.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"process-action.js","sourceRoot":"","sources":["../../../../src/engine/actions/process-action.ts"],"names":[],"mappings":";;;AACA,+CAAyC;AAEzC,yEAAmE;AAGnE,MAAa,aAAc,SAAQ,wBAAU;IACpC,KAAK,CAAC,OAAO,CAAC,YAA0B;QAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,MAAuB,CAAC;QACnD,MAAM,cAAc,GAAG,aAAa,CAAC,UAAU,CAAC;QAChD,MAAM,UAAU,GACd,wCAAkB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;QAElE,IAAI,UAAU,EAAE;YACd,MAAM,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAC;YAClC,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;SACvC;QAED,+DAA+D;IACjE,CAAC;IAEM,OAAO;QACZ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEtE,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE;YAC5C,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;CACF;AAxBD,sCAwBC"}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.StartAction = void 0;
|
4
|
+
const base_action_1 = require("./base-action");
|
5
|
+
class StartAction extends base_action_1.BaseAction {
|
6
|
+
async execute() {
|
7
|
+
// console.log(`SymbolStart ${this.symbol.label} executed.`);
|
8
|
+
}
|
9
|
+
getNext() {
|
10
|
+
const connection = this.chart.getConnectionBySourceId(this.symbol.id);
|
11
|
+
if (!connection || !connection.mxCell.target) {
|
12
|
+
return undefined;
|
13
|
+
}
|
14
|
+
return this.chart.getSymbolById(connection.mxCell.target);
|
15
|
+
}
|
16
|
+
}
|
17
|
+
exports.StartAction = StartAction;
|
18
|
+
//# sourceMappingURL=start-action.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"start-action.js","sourceRoot":"","sources":["../../../../src/engine/actions/start-action.ts"],"names":[],"mappings":";;;AACA,+CAAyC;AAEzC,MAAa,WAAY,SAAQ,wBAAU;IAClC,KAAK,CAAC,OAAO;QAClB,6DAA6D;IAC/D,CAAC;IAEM,OAAO;QACZ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEtE,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE;YAC5C,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;CACF;AAdD,kCAcC"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import { SymbolConnection } from '../../interfaces/symbol-connection.interface';
|
2
|
+
import { SymbolStart } from '../../interfaces/symbol-start.interface';
|
3
|
+
import { SymbolChart } from '../../types/symbol-chart.type';
|
4
|
+
export declare class Chart {
|
5
|
+
private _name;
|
6
|
+
private _symbols;
|
7
|
+
constructor(name: string, symbols: SymbolChart[]);
|
8
|
+
get name(): string;
|
9
|
+
get symbols(): SymbolChart[];
|
10
|
+
getStartSymbol(): SymbolStart | undefined;
|
11
|
+
getSymbolById(id: string): SymbolChart | undefined;
|
12
|
+
getConnectionsBySourceId(id: string): SymbolConnection[];
|
13
|
+
getConnectionByTargetId(id: string): SymbolConnection | undefined;
|
14
|
+
getConnectionBySourceId(id: string): SymbolConnection | undefined;
|
15
|
+
}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.Chart = void 0;
|
4
|
+
class Chart {
|
5
|
+
_name;
|
6
|
+
_symbols;
|
7
|
+
constructor(name, symbols) {
|
8
|
+
this._name = name;
|
9
|
+
this._symbols = symbols;
|
10
|
+
}
|
11
|
+
get name() {
|
12
|
+
return this._name;
|
13
|
+
}
|
14
|
+
get symbols() {
|
15
|
+
return this._symbols;
|
16
|
+
}
|
17
|
+
getStartSymbol() {
|
18
|
+
return this.symbols.find(symbol => symbol.type === 'start');
|
19
|
+
}
|
20
|
+
getSymbolById(id) {
|
21
|
+
return this.symbols.find(symbol => symbol.id === id);
|
22
|
+
}
|
23
|
+
getConnectionsBySourceId(id) {
|
24
|
+
return this.symbols
|
25
|
+
.filter(symbol => symbol.type === 'connection')
|
26
|
+
.map(symbol => symbol)
|
27
|
+
.filter(symbol => symbol.mxCell.source === id);
|
28
|
+
}
|
29
|
+
getConnectionByTargetId(id) {
|
30
|
+
return this.symbols
|
31
|
+
.filter(symbol => symbol.type === 'connection')
|
32
|
+
.map(symbol => symbol)
|
33
|
+
.find(symbol => symbol.mxCell.target === id);
|
34
|
+
}
|
35
|
+
getConnectionBySourceId(id) {
|
36
|
+
return this.symbols
|
37
|
+
.filter(symbol => symbol.type === 'connection')
|
38
|
+
.map(symbol => symbol)
|
39
|
+
.find(symbol => symbol.mxCell.source === id);
|
40
|
+
}
|
41
|
+
}
|
42
|
+
exports.Chart = Chart;
|
43
|
+
//# sourceMappingURL=chart.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"chart.js","sourceRoot":"","sources":["../../../../src/engine/chart/chart.ts"],"names":[],"mappings":";;;AAIA,MAAa,KAAK;IACR,KAAK,CAAS;IACd,QAAQ,CAAgB;IAEhC,YAAY,IAAY,EAAE,OAAsB;QAC9C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAC9D,CAAC;IAEM,aAAa,CAAC,EAAU;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,CAAC;IAEM,wBAAwB,CAAC,EAAU;QACxC,OAAO,IAAI,CAAC,OAAO;aAChB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC;aAC9C,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAA0B,CAAC;aACzC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;IAEM,uBAAuB,CAAC,EAAU;QACvC,OAAO,IAAI,CAAC,OAAO;aAChB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC;aAC9C,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAA0B,CAAC;aACzC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC;IAEM,uBAAuB,CAAC,EAAU;QACvC,OAAO,IAAI,CAAC,OAAO;aAChB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC;aAC9C,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAA0B,CAAC;aACzC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC;CACF;AA7CD,sBA6CC"}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
/**
|
2
|
+
* Represents a context for storing and retrieving chart-related variables.
|
3
|
+
*
|
4
|
+
* The `ChartContext` class encapsulates a map-based context that allows
|
5
|
+
* variables to be set and retrieved by name. This is useful for managing
|
6
|
+
* state or configuration relevant to chart components.
|
7
|
+
*/
|
8
|
+
export declare class ChartContext {
|
9
|
+
private _context;
|
10
|
+
constructor(context: Map<String, unknown>);
|
11
|
+
/**
|
12
|
+
* Gets the underlying context map containing all variables.
|
13
|
+
*
|
14
|
+
* @returns The map of variable names to their corresponding values.
|
15
|
+
*/
|
16
|
+
get context(): Map<String, unknown>;
|
17
|
+
/**
|
18
|
+
* Sets a variable in the context.
|
19
|
+
*
|
20
|
+
* @param name - The name of the variable to set.
|
21
|
+
* @param value - The value to associate with the variable name.
|
22
|
+
*/
|
23
|
+
setVariable(name: string, value: unknown): void;
|
24
|
+
/**
|
25
|
+
* Retrieves the value of a variable from the context.
|
26
|
+
*
|
27
|
+
* @param name - The name of the variable to retrieve.
|
28
|
+
* @returns The value associated with the variable name, or `undefined` if not found.
|
29
|
+
*/
|
30
|
+
getVariable(name: string): unknown;
|
31
|
+
}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.ChartContext = void 0;
|
4
|
+
/**
|
5
|
+
* Represents a context for storing and retrieving chart-related variables.
|
6
|
+
*
|
7
|
+
* The `ChartContext` class encapsulates a map-based context that allows
|
8
|
+
* variables to be set and retrieved by name. This is useful for managing
|
9
|
+
* state or configuration relevant to chart components.
|
10
|
+
*/
|
11
|
+
class ChartContext {
|
12
|
+
_context;
|
13
|
+
constructor(context) {
|
14
|
+
this._context = context;
|
15
|
+
}
|
16
|
+
/**
|
17
|
+
* Gets the underlying context map containing all variables.
|
18
|
+
*
|
19
|
+
* @returns The map of variable names to their corresponding values.
|
20
|
+
*/
|
21
|
+
get context() {
|
22
|
+
return this._context;
|
23
|
+
}
|
24
|
+
/**
|
25
|
+
* Sets a variable in the context.
|
26
|
+
*
|
27
|
+
* @param name - The name of the variable to set.
|
28
|
+
* @param value - The value to associate with the variable name.
|
29
|
+
*/
|
30
|
+
setVariable(name, value) {
|
31
|
+
this._context.set(name, value);
|
32
|
+
}
|
33
|
+
/**
|
34
|
+
* Retrieves the value of a variable from the context.
|
35
|
+
*
|
36
|
+
* @param name - The name of the variable to retrieve.
|
37
|
+
* @returns The value associated with the variable name, or `undefined` if not found.
|
38
|
+
*/
|
39
|
+
getVariable(name) {
|
40
|
+
return this._context.get(name);
|
41
|
+
}
|
42
|
+
}
|
43
|
+
exports.ChartContext = ChartContext;
|
44
|
+
//# sourceMappingURL=chart-context.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"chart-context.js","sourceRoot":"","sources":["../../../../../src/engine/chart/context/chart-context.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,MAAa,YAAY;IACf,QAAQ,CAAuB;IAEvC,YAAY,OAA6B;QACvC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACI,WAAW,CAAC,IAAY,EAAE,KAAc;QAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACI,WAAW,CAAC,IAAY;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;CACF;AAnCD,oCAmCC"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { ChartContext } from '../context/chart-context';
|
2
|
+
import { ChartManager } from '../manager/chart-manager';
|
3
|
+
import { Chart } from '../chart';
|
4
|
+
export declare class ChartInstance {
|
5
|
+
private readonly actions;
|
6
|
+
private chartContext;
|
7
|
+
private chart;
|
8
|
+
private chartManager;
|
9
|
+
constructor(chartContext: ChartContext, chart: Chart, chartManager: ChartManager);
|
10
|
+
run(): Promise<void>;
|
11
|
+
private executeSymbol;
|
12
|
+
}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.ChartInstance = void 0;
|
4
|
+
const decision_action_1 = require("../../actions/decision-action");
|
5
|
+
const end_action_1 = require("../../actions/end-action");
|
6
|
+
const process_action_1 = require("../../actions/process-action");
|
7
|
+
const start_action_1 = require("../../actions/start-action");
|
8
|
+
const predefined_process_action_1 = require("../../actions/predefined-process-action");
|
9
|
+
class ChartInstance {
|
10
|
+
actions = new Map([
|
11
|
+
['start', (context) => new start_action_1.StartAction(context)],
|
12
|
+
['end', (context) => new end_action_1.EndAction(context)],
|
13
|
+
['process', (context) => new process_action_1.ProcessAction(context)],
|
14
|
+
[
|
15
|
+
'predefined',
|
16
|
+
(context) => new predefined_process_action_1.PredefinedProcessAction(context),
|
17
|
+
],
|
18
|
+
['decision', (context) => new decision_action_1.DecisionAction(context)],
|
19
|
+
]);
|
20
|
+
chartContext;
|
21
|
+
chart;
|
22
|
+
chartManager;
|
23
|
+
constructor(chartContext, chart, chartManager) {
|
24
|
+
this.chartContext = chartContext;
|
25
|
+
this.chart = chart;
|
26
|
+
this.chartManager = chartManager;
|
27
|
+
}
|
28
|
+
async run() {
|
29
|
+
let next = this.chart.getStartSymbol();
|
30
|
+
while (next) {
|
31
|
+
next = await this.executeSymbol(next);
|
32
|
+
}
|
33
|
+
}
|
34
|
+
async executeSymbol(next) {
|
35
|
+
const action = this.actions.get(next.type);
|
36
|
+
if (!action) {
|
37
|
+
throw new Error(`no action defined for symbol type ${next.type}`);
|
38
|
+
}
|
39
|
+
const actionInstance = action({
|
40
|
+
symbol: next,
|
41
|
+
chart: this.chart,
|
42
|
+
chartManager: this.chartManager,
|
43
|
+
});
|
44
|
+
await actionInstance.execute(this.chartContext);
|
45
|
+
return actionInstance.getNext(this.chartContext);
|
46
|
+
}
|
47
|
+
}
|
48
|
+
exports.ChartInstance = ChartInstance;
|
49
|
+
//# sourceMappingURL=chart-instance.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"chart-instance.js","sourceRoot":"","sources":["../../../../../src/engine/chart/instance/chart-instance.ts"],"names":[],"mappings":";;;AACA,mEAA6D;AAC7D,yDAAmD;AACnD,iEAA2D;AAC3D,6DAAuD;AAGvD,uFAAgF;AAMhF,MAAa,aAAa;IACP,OAAO,GAGpB,IAAI,GAAG,CAAqD;QAC9D,CAAC,OAAO,EAAE,CAAC,OAAsB,EAAE,EAAE,CAAC,IAAI,0BAAW,CAAC,OAAO,CAAC,CAAC;QAC/D,CAAC,KAAK,EAAE,CAAC,OAAsB,EAAE,EAAE,CAAC,IAAI,sBAAS,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC,SAAS,EAAE,CAAC,OAAsB,EAAE,EAAE,CAAC,IAAI,8BAAa,CAAC,OAAO,CAAC,CAAC;QACnE;YACE,YAAY;YACZ,CAAC,OAAsB,EAAE,EAAE,CAAC,IAAI,mDAAuB,CAAC,OAAO,CAAC;SACjE;QACD,CAAC,UAAU,EAAE,CAAC,OAAsB,EAAE,EAAE,CAAC,IAAI,gCAAc,CAAC,OAAO,CAAC,CAAC;KACtE,CAAC,CAAC;IAEK,YAAY,CAAe;IAC3B,KAAK,CAAQ;IACb,YAAY,CAAe;IAEnC,YACE,YAA0B,EAC1B,KAAY,EACZ,YAA0B;QAE1B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,GAAG;QACd,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvC,OAAO,IAAI,EAAE;YACX,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SACvC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,IAAiB;QAEjB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3C,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACnE;QAED,MAAM,cAAc,GAAG,MAAM,CAAC;YAC5B,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC,CAAC;QAEH,MAAM,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChD,OAAO,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC;CACF;AAvDD,sCAuDC"}
|