@peter.prib/renderengine 0.13.0 → 0.15.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/README.md +480 -302
- package/bin/renderengine.mjs +157 -0
- package/dist/renderengine-workspace.umd.js +49217 -37484
- package/dist/renderengine.umd.js +24899 -13093
- package/documentation/REFERENCE.md +68 -1
- package/package.json +13 -3
- package/src/CanvasRenderer.js +225 -200
- package/src/SVGRenderer.js +476 -454
- package/src/archimate.js +22 -2
- package/src/archimateArchiFormat.js +1735 -1701
- package/src/archimateArchive.js +36 -7
- package/src/archimateCSV.js +93 -37
- package/src/archimateDrawio.js +2 -0
- package/src/archimateExchangeFormat.js +3 -1
- package/src/chartCatalog.js +269 -3
- package/src/charting/Annotations.js +169 -0
- package/src/charting/ArchimateDiagramEditor.js +54 -10
- package/src/charting/Axis.js +217 -5
- package/src/charting/Chart.js +99 -9
- package/src/charting/Chart3D.js +7 -2
- package/src/charting/ChartBox.js +8 -1
- package/src/charting/ColorPalette.js +42 -4
- package/src/charting/DiagramEditor.js +174 -39
- package/src/charting/DiagramEditorCommands.js +28 -0
- package/src/charting/Edge.js +7 -0
- package/src/charting/Hierarchy.js +142 -0
- package/src/charting/InteractionManager.js +4 -0
- package/src/charting/ModelFileFormat.js +5 -1
- package/src/charting/SettingsManager.js +35 -0
- package/src/charting/ShapePaths.js +82 -10
- package/src/charting/archimate/ArchimateCsvFileFormat.js +51 -12
- package/src/charting/archimate/ArchimateElementTemplate.js +235 -231
- package/src/charting/ask/AskBar.js +388 -0
- package/src/charting/ask/AskView.js +400 -0
- package/src/charting/charts/AlluvialDiagram.js +311 -0
- package/src/charting/charts/AreaChart.js +69 -15
- package/src/charting/charts/BarChart.js +38 -3
- package/src/charting/charts/BarChart3D.js +6 -4
- package/src/charting/charts/BarChart3DOrbit.js +3 -1
- package/src/charting/charts/BarChartBase.js +26 -6
- package/src/charting/charts/BeeswarmChart.js +164 -0
- package/src/charting/charts/BoxPlotChart.js +25 -3
- package/src/charting/charts/BubbleChart.js +4 -1
- package/src/charting/charts/CalendarHeatmapChart.js +2 -1
- package/src/charting/charts/CandlestickChart.js +172 -4
- package/src/charting/charts/ChordDiagram.js +107 -4
- package/src/charting/charts/CirclePackChart.js +81 -0
- package/src/charting/charts/ComboChart.js +233 -0
- package/src/charting/charts/ContourChart.js +310 -0
- package/src/charting/charts/DensityChart.js +1 -1
- package/src/charting/charts/DonutChart3D.js +13 -0
- package/src/charting/charts/DumbbellChart.js +217 -0
- package/src/charting/charts/EcdfChart.js +150 -0
- package/src/charting/charts/FunnelChart.js +5 -2
- package/src/charting/charts/GeoMapChart.js +132 -11
- package/src/charting/charts/GroupedBarChart.js +44 -3
- package/src/charting/charts/GroupedDistributionChart.js +26 -1
- package/src/charting/charts/HeatmapChart.js +6 -3
- package/src/charting/charts/HexbinChart.js +137 -0
- package/src/charting/charts/HierarchyChart.js +77 -3
- package/src/charting/charts/HistogramChart.js +2 -2
- package/src/charting/charts/HorizonChart.js +105 -0
- package/src/charting/charts/IcicleChart.js +47 -0
- package/src/charting/charts/KagiChart.js +167 -0
- package/src/charting/charts/LineChart.js +74 -18
- package/src/charting/charts/LollipopChart.js +104 -0
- package/src/charting/charts/MarimekkoChart.js +75 -0
- package/src/charting/charts/OhlcChart.js +79 -0
- package/src/charting/charts/OutlineChart.js +10 -8
- package/src/charting/charts/ParallelCoordinatesChart.js +11 -3
- package/src/charting/charts/ParetoChart.js +92 -0
- package/src/charting/charts/PieChart.js +195 -17
- package/src/charting/charts/PieChart3D.js +137 -0
- package/src/charting/charts/PipeChart.js +5 -2
- package/src/charting/charts/PointAndFigureChart.js +198 -0
- package/src/charting/charts/PolarAreaChart.js +189 -0
- package/src/charting/charts/PopulationPyramidChart.js +4 -4
- package/src/charting/charts/RadarChart.js +12 -5
- package/src/charting/charts/RadialBarChart.js +6 -3
- package/src/charting/charts/RenkoChart.js +178 -0
- package/src/charting/charts/RidgelineChart.js +113 -0
- package/src/charting/charts/SankeyDiagram.js +129 -6
- package/src/charting/charts/ScatterChart.js +19 -3
- package/src/charting/charts/ScatterMatrixChart.js +119 -0
- package/src/charting/charts/SlopegraphChart.js +205 -0
- package/src/charting/charts/SparklineTableChart.js +166 -0
- package/src/charting/charts/StackedBarChart.js +125 -11
- package/src/charting/charts/StackedBarChart3DOrbit.js +14 -6
- package/src/charting/charts/StreamGraphChart.js +18 -3
- package/src/charting/charts/SunburstChart.js +28 -8
- package/src/charting/charts/SurfaceChart3D.js +157 -0
- package/src/charting/charts/TreemapChart.js +31 -11
- package/src/charting/charts/ViolinChart.js +20 -2
- package/src/charting/charts/WaterfallChart.js +2 -2
- package/src/charting/charts/WordCloudChart.js +2 -2
- package/src/charting/datamodel/ArchimateDataLink.js +70 -0
- package/src/charting/datamodel/DataLineage.js +150 -0
- package/src/charting/datamodel/DataModel.js +83 -1
- package/src/charting/datamodel/ModelMapping.js +87 -0
- package/src/charting/datamodel/SqlDdl.js +110 -85
- package/src/charting/datamodel/index.js +3 -0
- package/src/charting/decision/DecisionWorkbench.js +295 -0
- package/src/charting/diagrams/ArchimateDiagram.js +25 -9
- package/src/charting/diagrams/ArchimateModel.js +1382 -1238
- package/src/charting/diagrams/GraphDiagram.js +1424 -1350
- package/src/charting/diagrams/SketchView.js +121 -0
- package/src/charting/diagrams/sketchBoxKinds.js +30 -0
- package/src/charting/modelTree/AnalysisPanel.js +101 -23
- package/src/charting/modelTree/NavigatorModel.js +410 -0
- package/src/charting/modelTree/NavigatorPanel.js +453 -0
- package/src/charting/pivot/PivotChart.js +310 -13
- package/src/charting/pivot/PivotGridChart.js +322 -34
- package/src/charting/pivot/PivotView.js +626 -21
- package/src/charting/report/TemplatedReport.js +547 -0
- package/src/charting/templates/BoxTemplate.js +28 -27
- package/src/charting/templates/PackageTemplate.js +26 -25
- package/src/charting/templates/SwimlaneTemplate.js +19 -18
- package/src/charting/templates/Template.js +219 -212
- package/src/cli.js +146 -0
- package/src/index.js +3370 -2899
- package/src/workspace/Workspace.js +126 -7
- package/src/workspace/archimateServices.js +4 -0
- package/src/workspace/parts/ArchimateCanvasPart.js +1 -1
- package/src/workspace/styles.js +36 -1
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import fs from 'node:fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { loadModel, checkModel, reportModel, saveModel, formatFindings } from '../src/cli.js';
|
|
7
|
+
|
|
8
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
+
const __dirname = path.dirname(__filename);
|
|
10
|
+
|
|
11
|
+
function getPackageVersion() {
|
|
12
|
+
try {
|
|
13
|
+
const pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../package.json'), 'utf8'));
|
|
14
|
+
return pkg.version || '0.0.0';
|
|
15
|
+
} catch {
|
|
16
|
+
return '0.0.0';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function printUsage() {
|
|
21
|
+
console.log(`RenderEngine CLI v${getPackageVersion()}
|
|
22
|
+
|
|
23
|
+
Usage:
|
|
24
|
+
renderengine <command> [options]
|
|
25
|
+
|
|
26
|
+
Commands:
|
|
27
|
+
check <modelPath> Validate a model and display issues
|
|
28
|
+
--json Output findings as JSON
|
|
29
|
+
--severity <level> Filter by severity: error, warning, info
|
|
30
|
+
|
|
31
|
+
report <modelPath> Generate a standalone HTML report
|
|
32
|
+
--output, -o <file> Output HTML path (default: <modelName>-report.html)
|
|
33
|
+
--title <title> Report title
|
|
34
|
+
|
|
35
|
+
save <modelPath> Convert or save a model
|
|
36
|
+
--output, -o <file> Output file path (required)
|
|
37
|
+
--format <format> Output format: archi (default), exchange, json
|
|
38
|
+
|
|
39
|
+
General Options:
|
|
40
|
+
--help, -h Show this help message
|
|
41
|
+
--version, -v Show version number
|
|
42
|
+
`);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function parseArgs(args) {
|
|
46
|
+
const parsed = { _: [], flags: {} };
|
|
47
|
+
for (let i = 0; i < args.length; i++) {
|
|
48
|
+
const arg = args[i];
|
|
49
|
+
if (arg === '--help' || arg === '-h') {
|
|
50
|
+
parsed.flags.help = true;
|
|
51
|
+
} else if (arg === '--version' || arg === '-v') {
|
|
52
|
+
parsed.flags.version = true;
|
|
53
|
+
} else if (arg === '--json') {
|
|
54
|
+
parsed.flags.json = true;
|
|
55
|
+
} else if (arg === '--output' || arg === '-o') {
|
|
56
|
+
parsed.flags.output = args[++i];
|
|
57
|
+
} else if (arg === '--format') {
|
|
58
|
+
parsed.flags.format = args[++i];
|
|
59
|
+
} else if (arg === '--title') {
|
|
60
|
+
parsed.flags.title = args[++i];
|
|
61
|
+
} else if (arg === '--severity') {
|
|
62
|
+
parsed.flags.severity = args[++i];
|
|
63
|
+
} else if (arg.startsWith('--')) {
|
|
64
|
+
const [k, v] = arg.slice(2).split('=');
|
|
65
|
+
parsed.flags[k] = v ?? true;
|
|
66
|
+
} else {
|
|
67
|
+
parsed._.push(arg);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return parsed;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export async function run(argv = process.argv.slice(2)) {
|
|
74
|
+
const { _, flags } = parseArgs(argv);
|
|
75
|
+
|
|
76
|
+
if (flags.version) {
|
|
77
|
+
console.log(`v${getPackageVersion()}`);
|
|
78
|
+
return 0;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (flags.help || !_.length) {
|
|
82
|
+
printUsage();
|
|
83
|
+
return 0;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const command = _[0];
|
|
87
|
+
const modelPath = _[1];
|
|
88
|
+
|
|
89
|
+
if (!modelPath && command !== 'help') {
|
|
90
|
+
console.error(`Error: Model path required for '${command}'`);
|
|
91
|
+
printUsage();
|
|
92
|
+
return 1;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
try {
|
|
96
|
+
const readInput = (file) => {
|
|
97
|
+
if (!fs.existsSync(file)) throw new Error(`File not found: ${file}`);
|
|
98
|
+
return fs.readFileSync(file);
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
if (command === 'check') {
|
|
102
|
+
const model = loadModel(readInput(modelPath));
|
|
103
|
+
const { findings, summary } = checkModel(model, { severity: flags.severity });
|
|
104
|
+
|
|
105
|
+
if (flags.json) {
|
|
106
|
+
console.log(JSON.stringify({ findings, summary }, null, 2));
|
|
107
|
+
} else {
|
|
108
|
+
console.log(formatFindings(findings, summary));
|
|
109
|
+
}
|
|
110
|
+
return summary.errors > 0 ? 1 : 0;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (command === 'report') {
|
|
114
|
+
const model = loadModel(readInput(modelPath));
|
|
115
|
+
const title = flags.title || model.name || 'Model Report';
|
|
116
|
+
const html = reportModel(model, { title });
|
|
117
|
+
const defaultOut = `${path.basename(modelPath, path.extname(modelPath))}-report.html`;
|
|
118
|
+
const outPath = flags.output || defaultOut;
|
|
119
|
+
|
|
120
|
+
fs.writeFileSync(outPath, html, 'utf8');
|
|
121
|
+
console.log(`Report generated: ${outPath} (${html.length} bytes)`);
|
|
122
|
+
return 0;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
if (command === 'save') {
|
|
126
|
+
if (!flags.output) {
|
|
127
|
+
console.error('Error: --output (-o) is required for the save command');
|
|
128
|
+
return 1;
|
|
129
|
+
}
|
|
130
|
+
const model = loadModel(readInput(modelPath));
|
|
131
|
+
const format = flags.format || 'archi';
|
|
132
|
+
const { data } = saveModel(model, { format });
|
|
133
|
+
|
|
134
|
+
if (data instanceof Uint8Array || Buffer.isBuffer(data)) {
|
|
135
|
+
fs.writeFileSync(flags.output, Buffer.from(data));
|
|
136
|
+
} else {
|
|
137
|
+
fs.writeFileSync(flags.output, String(data), 'utf8');
|
|
138
|
+
}
|
|
139
|
+
console.log(`Saved model to: ${flags.output} (${format})`);
|
|
140
|
+
return 0;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
console.error(`Unknown command: ${command}`);
|
|
144
|
+
printUsage();
|
|
145
|
+
return 1;
|
|
146
|
+
} catch (err) {
|
|
147
|
+
console.error(`Error: ${err.message}`);
|
|
148
|
+
return 1;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// Only execute when run directly from the command line
|
|
153
|
+
if (process.argv[1] && path.resolve(process.argv[1]) === path.resolve(__filename)) {
|
|
154
|
+
run().then(code => {
|
|
155
|
+
if (code !== 0) process.exit(code);
|
|
156
|
+
});
|
|
157
|
+
}
|