@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.
Files changed (124) hide show
  1. package/README.md +480 -302
  2. package/bin/renderengine.mjs +157 -0
  3. package/dist/renderengine-workspace.umd.js +49217 -37484
  4. package/dist/renderengine.umd.js +24899 -13093
  5. package/documentation/REFERENCE.md +68 -1
  6. package/package.json +13 -3
  7. package/src/CanvasRenderer.js +225 -200
  8. package/src/SVGRenderer.js +476 -454
  9. package/src/archimate.js +22 -2
  10. package/src/archimateArchiFormat.js +1735 -1701
  11. package/src/archimateArchive.js +36 -7
  12. package/src/archimateCSV.js +93 -37
  13. package/src/archimateDrawio.js +2 -0
  14. package/src/archimateExchangeFormat.js +3 -1
  15. package/src/chartCatalog.js +269 -3
  16. package/src/charting/Annotations.js +169 -0
  17. package/src/charting/ArchimateDiagramEditor.js +54 -10
  18. package/src/charting/Axis.js +217 -5
  19. package/src/charting/Chart.js +99 -9
  20. package/src/charting/Chart3D.js +7 -2
  21. package/src/charting/ChartBox.js +8 -1
  22. package/src/charting/ColorPalette.js +42 -4
  23. package/src/charting/DiagramEditor.js +174 -39
  24. package/src/charting/DiagramEditorCommands.js +28 -0
  25. package/src/charting/Edge.js +7 -0
  26. package/src/charting/Hierarchy.js +142 -0
  27. package/src/charting/InteractionManager.js +4 -0
  28. package/src/charting/ModelFileFormat.js +5 -1
  29. package/src/charting/SettingsManager.js +35 -0
  30. package/src/charting/ShapePaths.js +82 -10
  31. package/src/charting/archimate/ArchimateCsvFileFormat.js +51 -12
  32. package/src/charting/archimate/ArchimateElementTemplate.js +235 -231
  33. package/src/charting/ask/AskBar.js +388 -0
  34. package/src/charting/ask/AskView.js +400 -0
  35. package/src/charting/charts/AlluvialDiagram.js +311 -0
  36. package/src/charting/charts/AreaChart.js +69 -15
  37. package/src/charting/charts/BarChart.js +38 -3
  38. package/src/charting/charts/BarChart3D.js +6 -4
  39. package/src/charting/charts/BarChart3DOrbit.js +3 -1
  40. package/src/charting/charts/BarChartBase.js +26 -6
  41. package/src/charting/charts/BeeswarmChart.js +164 -0
  42. package/src/charting/charts/BoxPlotChart.js +25 -3
  43. package/src/charting/charts/BubbleChart.js +4 -1
  44. package/src/charting/charts/CalendarHeatmapChart.js +2 -1
  45. package/src/charting/charts/CandlestickChart.js +172 -4
  46. package/src/charting/charts/ChordDiagram.js +107 -4
  47. package/src/charting/charts/CirclePackChart.js +81 -0
  48. package/src/charting/charts/ComboChart.js +233 -0
  49. package/src/charting/charts/ContourChart.js +310 -0
  50. package/src/charting/charts/DensityChart.js +1 -1
  51. package/src/charting/charts/DonutChart3D.js +13 -0
  52. package/src/charting/charts/DumbbellChart.js +217 -0
  53. package/src/charting/charts/EcdfChart.js +150 -0
  54. package/src/charting/charts/FunnelChart.js +5 -2
  55. package/src/charting/charts/GeoMapChart.js +132 -11
  56. package/src/charting/charts/GroupedBarChart.js +44 -3
  57. package/src/charting/charts/GroupedDistributionChart.js +26 -1
  58. package/src/charting/charts/HeatmapChart.js +6 -3
  59. package/src/charting/charts/HexbinChart.js +137 -0
  60. package/src/charting/charts/HierarchyChart.js +77 -3
  61. package/src/charting/charts/HistogramChart.js +2 -2
  62. package/src/charting/charts/HorizonChart.js +105 -0
  63. package/src/charting/charts/IcicleChart.js +47 -0
  64. package/src/charting/charts/KagiChart.js +167 -0
  65. package/src/charting/charts/LineChart.js +74 -18
  66. package/src/charting/charts/LollipopChart.js +104 -0
  67. package/src/charting/charts/MarimekkoChart.js +75 -0
  68. package/src/charting/charts/OhlcChart.js +79 -0
  69. package/src/charting/charts/OutlineChart.js +10 -8
  70. package/src/charting/charts/ParallelCoordinatesChart.js +11 -3
  71. package/src/charting/charts/ParetoChart.js +92 -0
  72. package/src/charting/charts/PieChart.js +195 -17
  73. package/src/charting/charts/PieChart3D.js +137 -0
  74. package/src/charting/charts/PipeChart.js +5 -2
  75. package/src/charting/charts/PointAndFigureChart.js +198 -0
  76. package/src/charting/charts/PolarAreaChart.js +189 -0
  77. package/src/charting/charts/PopulationPyramidChart.js +4 -4
  78. package/src/charting/charts/RadarChart.js +12 -5
  79. package/src/charting/charts/RadialBarChart.js +6 -3
  80. package/src/charting/charts/RenkoChart.js +178 -0
  81. package/src/charting/charts/RidgelineChart.js +113 -0
  82. package/src/charting/charts/SankeyDiagram.js +129 -6
  83. package/src/charting/charts/ScatterChart.js +19 -3
  84. package/src/charting/charts/ScatterMatrixChart.js +119 -0
  85. package/src/charting/charts/SlopegraphChart.js +205 -0
  86. package/src/charting/charts/SparklineTableChart.js +166 -0
  87. package/src/charting/charts/StackedBarChart.js +125 -11
  88. package/src/charting/charts/StackedBarChart3DOrbit.js +14 -6
  89. package/src/charting/charts/StreamGraphChart.js +18 -3
  90. package/src/charting/charts/SunburstChart.js +28 -8
  91. package/src/charting/charts/SurfaceChart3D.js +157 -0
  92. package/src/charting/charts/TreemapChart.js +31 -11
  93. package/src/charting/charts/ViolinChart.js +20 -2
  94. package/src/charting/charts/WaterfallChart.js +2 -2
  95. package/src/charting/charts/WordCloudChart.js +2 -2
  96. package/src/charting/datamodel/ArchimateDataLink.js +70 -0
  97. package/src/charting/datamodel/DataLineage.js +150 -0
  98. package/src/charting/datamodel/DataModel.js +83 -1
  99. package/src/charting/datamodel/ModelMapping.js +87 -0
  100. package/src/charting/datamodel/SqlDdl.js +110 -85
  101. package/src/charting/datamodel/index.js +3 -0
  102. package/src/charting/decision/DecisionWorkbench.js +295 -0
  103. package/src/charting/diagrams/ArchimateDiagram.js +25 -9
  104. package/src/charting/diagrams/ArchimateModel.js +1382 -1238
  105. package/src/charting/diagrams/GraphDiagram.js +1424 -1350
  106. package/src/charting/diagrams/SketchView.js +121 -0
  107. package/src/charting/diagrams/sketchBoxKinds.js +30 -0
  108. package/src/charting/modelTree/AnalysisPanel.js +101 -23
  109. package/src/charting/modelTree/NavigatorModel.js +410 -0
  110. package/src/charting/modelTree/NavigatorPanel.js +453 -0
  111. package/src/charting/pivot/PivotChart.js +310 -13
  112. package/src/charting/pivot/PivotGridChart.js +322 -34
  113. package/src/charting/pivot/PivotView.js +626 -21
  114. package/src/charting/report/TemplatedReport.js +547 -0
  115. package/src/charting/templates/BoxTemplate.js +28 -27
  116. package/src/charting/templates/PackageTemplate.js +26 -25
  117. package/src/charting/templates/SwimlaneTemplate.js +19 -18
  118. package/src/charting/templates/Template.js +219 -212
  119. package/src/cli.js +146 -0
  120. package/src/index.js +3370 -2899
  121. package/src/workspace/Workspace.js +126 -7
  122. package/src/workspace/archimateServices.js +4 -0
  123. package/src/workspace/parts/ArchimateCanvasPart.js +1 -1
  124. 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
+ }