@cda/adapter-xma 0.4.2 → 0.5.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 +31 -6
- package/dist/cjs/diagnostics/diagnostics.d.ts.map +1 -0
- package/dist/cjs/diagnostics/diagnostics.js +23 -0
- package/dist/cjs/diagnostics/diagnostics.js.map +1 -0
- package/dist/cjs/diagnostics/errors.d.ts.map +1 -0
- package/dist/cjs/diagnostics/errors.js +24 -0
- package/dist/cjs/diagnostics/errors.js.map +1 -0
- package/dist/cjs/geometry/bendpoints.d.ts.map +1 -0
- package/dist/cjs/geometry/bendpoints.js +51 -0
- package/dist/cjs/geometry/bendpoints.js.map +1 -0
- package/dist/cjs/geometry/geometry.d.ts +75 -0
- package/dist/cjs/geometry/geometry.d.ts.map +1 -0
- package/dist/cjs/geometry/geometry.js +77 -0
- package/dist/cjs/geometry/geometry.js.map +1 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +9 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/infrastructure/assert.d.ts +10 -0
- package/dist/cjs/infrastructure/assert.d.ts.map +1 -0
- package/dist/cjs/infrastructure/assert.js +18 -0
- package/dist/cjs/infrastructure/assert.js.map +1 -0
- package/dist/cjs/infrastructure/id-allocator.d.ts.map +1 -0
- package/dist/cjs/infrastructure/id-allocator.js +59 -0
- package/dist/cjs/infrastructure/id-allocator.js.map +1 -0
- package/dist/cjs/infrastructure/xml-writer.d.ts.map +1 -0
- package/dist/cjs/infrastructure/xml-writer.js +94 -0
- package/dist/cjs/infrastructure/xml-writer.js.map +1 -0
- package/dist/cjs/mapping/element-mapping.d.ts.map +1 -0
- package/dist/cjs/mapping/element-mapping.js +117 -0
- package/dist/cjs/mapping/element-mapping.js.map +1 -0
- package/dist/cjs/mapping/generic-relationship-mapping.d.ts.map +1 -0
- package/dist/cjs/mapping/generic-relationship-mapping.js +71 -0
- package/dist/cjs/mapping/generic-relationship-mapping.js.map +1 -0
- package/dist/cjs/mapping/relationship-mapping.d.ts.map +1 -0
- package/dist/cjs/mapping/relationship-mapping.js +697 -0
- package/dist/cjs/mapping/relationship-mapping.js.map +1 -0
- package/dist/cjs/mapping/scheme-mapping.d.ts.map +1 -0
- package/dist/cjs/mapping/scheme-mapping.js +42 -0
- package/dist/cjs/mapping/scheme-mapping.js.map +1 -0
- package/dist/cjs/mapping/visual-mapping.d.ts.map +1 -0
- package/dist/cjs/mapping/visual-mapping.js +43 -0
- package/dist/cjs/mapping/visual-mapping.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/serializer/document-writer.d.ts.map +1 -0
- package/dist/cjs/serializer/document-writer.js +138 -0
- package/dist/cjs/serializer/document-writer.js.map +1 -0
- package/dist/cjs/serializer/graphical-writer.d.ts.map +1 -0
- package/dist/cjs/serializer/graphical-writer.js +464 -0
- package/dist/cjs/serializer/graphical-writer.js.map +1 -0
- package/dist/cjs/serializer/profile-values.d.ts.map +1 -0
- package/dist/cjs/serializer/profile-values.js +28 -0
- package/dist/cjs/serializer/profile-values.js.map +1 -0
- package/dist/cjs/serializer/relationship-writer.d.ts.map +1 -0
- package/dist/cjs/serializer/relationship-writer.js +109 -0
- package/dist/cjs/serializer/relationship-writer.js.map +1 -0
- package/dist/cjs/serializer/rtf.d.ts.map +1 -0
- package/dist/cjs/serializer/rtf.js +67 -0
- package/dist/cjs/serializer/rtf.js.map +1 -0
- package/dist/cjs/serializer/semantic-writer.d.ts.map +1 -0
- package/dist/cjs/serializer/semantic-writer.js +170 -0
- package/dist/cjs/serializer/semantic-writer.js.map +1 -0
- package/dist/cjs/serializer/serialize-xma.d.ts.map +1 -0
- package/dist/cjs/serializer/serialize-xma.js +113 -0
- package/dist/cjs/serializer/serialize-xma.js.map +1 -0
- package/dist/cjs/serializer/view-writer.d.ts.map +1 -0
- package/dist/cjs/serializer/view-writer.js +148 -0
- package/dist/cjs/serializer/view-writer.js.map +1 -0
- package/dist/esm/diagnostics/diagnostics.d.ts +20 -0
- package/dist/esm/diagnostics/diagnostics.d.ts.map +1 -0
- package/dist/esm/diagnostics/diagnostics.js.map +1 -0
- package/dist/esm/diagnostics/errors.d.ts +13 -0
- package/dist/esm/diagnostics/errors.d.ts.map +1 -0
- package/dist/esm/diagnostics/errors.js.map +1 -0
- package/dist/esm/geometry/bendpoints.d.ts +33 -0
- package/dist/esm/geometry/bendpoints.d.ts.map +1 -0
- package/dist/{geometry → esm/geometry}/bendpoints.js +6 -2
- package/dist/esm/geometry/bendpoints.js.map +1 -0
- package/dist/esm/geometry/geometry.d.ts +75 -0
- package/dist/esm/geometry/geometry.d.ts.map +1 -0
- package/dist/{geometry → esm/geometry}/geometry.js +25 -6
- package/dist/esm/geometry/geometry.js.map +1 -0
- package/dist/esm/index.d.ts +5 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/infrastructure/assert.d.ts +10 -0
- package/dist/esm/infrastructure/assert.d.ts.map +1 -0
- package/dist/esm/infrastructure/assert.js +15 -0
- package/dist/esm/infrastructure/assert.js.map +1 -0
- package/dist/esm/infrastructure/id-allocator.d.ts +34 -0
- package/dist/esm/infrastructure/id-allocator.d.ts.map +1 -0
- package/dist/esm/infrastructure/id-allocator.js.map +1 -0
- package/dist/esm/infrastructure/xml-writer.d.ts +20 -0
- package/dist/esm/infrastructure/xml-writer.d.ts.map +1 -0
- package/dist/{infrastructure → esm/infrastructure}/xml-writer.js +37 -2
- package/dist/esm/infrastructure/xml-writer.js.map +1 -0
- package/dist/esm/mapping/element-mapping.d.ts +31 -0
- package/dist/esm/mapping/element-mapping.d.ts.map +1 -0
- package/dist/esm/mapping/element-mapping.js.map +1 -0
- package/dist/esm/mapping/generic-relationship-mapping.d.ts +18 -0
- package/dist/esm/mapping/generic-relationship-mapping.d.ts.map +1 -0
- package/dist/esm/mapping/generic-relationship-mapping.js.map +1 -0
- package/dist/esm/mapping/relationship-mapping.d.ts +47 -0
- package/dist/esm/mapping/relationship-mapping.d.ts.map +1 -0
- package/dist/esm/mapping/relationship-mapping.js.map +1 -0
- package/dist/esm/mapping/scheme-mapping.d.ts +38 -0
- package/dist/esm/mapping/scheme-mapping.d.ts.map +1 -0
- package/dist/esm/mapping/scheme-mapping.js.map +1 -0
- package/dist/esm/mapping/visual-mapping.d.ts +24 -0
- package/dist/esm/mapping/visual-mapping.d.ts.map +1 -0
- package/dist/esm/mapping/visual-mapping.js.map +1 -0
- package/dist/esm/serializer/document-writer.d.ts +40 -0
- package/dist/esm/serializer/document-writer.d.ts.map +1 -0
- package/dist/esm/serializer/document-writer.js.map +1 -0
- package/dist/esm/serializer/graphical-writer.d.ts +27 -0
- package/dist/esm/serializer/graphical-writer.d.ts.map +1 -0
- package/dist/{serializer → esm/serializer}/graphical-writer.js +156 -40
- package/dist/esm/serializer/graphical-writer.js.map +1 -0
- package/dist/esm/serializer/profile-values.d.ts +8 -0
- package/dist/esm/serializer/profile-values.d.ts.map +1 -0
- package/dist/esm/serializer/profile-values.js.map +1 -0
- package/dist/esm/serializer/relationship-writer.d.ts +41 -0
- package/dist/esm/serializer/relationship-writer.d.ts.map +1 -0
- package/dist/{serializer → esm/serializer}/relationship-writer.js +4 -1
- package/dist/esm/serializer/relationship-writer.js.map +1 -0
- package/dist/esm/serializer/rtf.d.ts +9 -0
- package/dist/esm/serializer/rtf.d.ts.map +1 -0
- package/dist/{serializer → esm/serializer}/rtf.js +14 -0
- package/dist/esm/serializer/rtf.js.map +1 -0
- package/dist/esm/serializer/semantic-writer.d.ts +51 -0
- package/dist/esm/serializer/semantic-writer.d.ts.map +1 -0
- package/dist/{serializer → esm/serializer}/semantic-writer.js +24 -0
- package/dist/esm/serializer/semantic-writer.js.map +1 -0
- package/dist/esm/serializer/serialize-xma.d.ts +29 -0
- package/dist/esm/serializer/serialize-xma.d.ts.map +1 -0
- package/dist/{serializer → esm/serializer}/serialize-xma.js +40 -1
- package/dist/esm/serializer/serialize-xma.js.map +1 -0
- package/dist/esm/serializer/view-writer.d.ts +27 -0
- package/dist/esm/serializer/view-writer.d.ts.map +1 -0
- package/dist/esm/serializer/view-writer.js.map +1 -0
- package/package.json +19 -8
- package/dist/diagnostics/diagnostics.d.ts.map +0 -1
- package/dist/diagnostics/diagnostics.js.map +0 -1
- package/dist/diagnostics/errors.d.ts.map +0 -1
- package/dist/diagnostics/errors.js.map +0 -1
- package/dist/geometry/bendpoints.d.ts.map +0 -1
- package/dist/geometry/bendpoints.js.map +0 -1
- package/dist/geometry/geometry.d.ts +0 -48
- package/dist/geometry/geometry.d.ts.map +0 -1
- package/dist/geometry/geometry.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/infrastructure/id-allocator.d.ts.map +0 -1
- package/dist/infrastructure/id-allocator.js.map +0 -1
- package/dist/infrastructure/xml-writer.d.ts.map +0 -1
- package/dist/infrastructure/xml-writer.js.map +0 -1
- package/dist/mapping/element-mapping.d.ts.map +0 -1
- package/dist/mapping/element-mapping.js.map +0 -1
- package/dist/mapping/generic-relationship-mapping.d.ts.map +0 -1
- package/dist/mapping/generic-relationship-mapping.js.map +0 -1
- package/dist/mapping/relationship-mapping.d.ts.map +0 -1
- package/dist/mapping/relationship-mapping.js.map +0 -1
- package/dist/mapping/scheme-mapping.d.ts.map +0 -1
- package/dist/mapping/scheme-mapping.js.map +0 -1
- package/dist/mapping/visual-mapping.d.ts.map +0 -1
- package/dist/mapping/visual-mapping.js.map +0 -1
- package/dist/serializer/document-writer.d.ts.map +0 -1
- package/dist/serializer/document-writer.js.map +0 -1
- package/dist/serializer/graphical-writer.d.ts.map +0 -1
- package/dist/serializer/graphical-writer.js.map +0 -1
- package/dist/serializer/profile-values.d.ts.map +0 -1
- package/dist/serializer/profile-values.js.map +0 -1
- package/dist/serializer/relationship-writer.d.ts.map +0 -1
- package/dist/serializer/relationship-writer.js.map +0 -1
- package/dist/serializer/rtf.d.ts.map +0 -1
- package/dist/serializer/rtf.js.map +0 -1
- package/dist/serializer/semantic-writer.d.ts.map +0 -1
- package/dist/serializer/semantic-writer.js.map +0 -1
- package/dist/serializer/serialize-xma.d.ts.map +0 -1
- package/dist/serializer/serialize-xma.js.map +0 -1
- package/dist/serializer/view-writer.d.ts.map +0 -1
- package/dist/serializer/view-writer.js.map +0 -1
- /package/dist/{diagnostics → cjs/diagnostics}/diagnostics.d.ts +0 -0
- /package/dist/{diagnostics → cjs/diagnostics}/errors.d.ts +0 -0
- /package/dist/{geometry → cjs/geometry}/bendpoints.d.ts +0 -0
- /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
- /package/dist/{infrastructure → cjs/infrastructure}/id-allocator.d.ts +0 -0
- /package/dist/{infrastructure → cjs/infrastructure}/xml-writer.d.ts +0 -0
- /package/dist/{mapping → cjs/mapping}/element-mapping.d.ts +0 -0
- /package/dist/{mapping → cjs/mapping}/generic-relationship-mapping.d.ts +0 -0
- /package/dist/{mapping → cjs/mapping}/relationship-mapping.d.ts +0 -0
- /package/dist/{mapping → cjs/mapping}/scheme-mapping.d.ts +0 -0
- /package/dist/{mapping → cjs/mapping}/visual-mapping.d.ts +0 -0
- /package/dist/{serializer → cjs/serializer}/document-writer.d.ts +0 -0
- /package/dist/{serializer → cjs/serializer}/graphical-writer.d.ts +0 -0
- /package/dist/{serializer → cjs/serializer}/profile-values.d.ts +0 -0
- /package/dist/{serializer → cjs/serializer}/relationship-writer.d.ts +0 -0
- /package/dist/{serializer → cjs/serializer}/rtf.d.ts +0 -0
- /package/dist/{serializer → cjs/serializer}/semantic-writer.d.ts +0 -0
- /package/dist/{serializer → cjs/serializer}/serialize-xma.d.ts +0 -0
- /package/dist/{serializer → cjs/serializer}/view-writer.d.ts +0 -0
- /package/dist/{diagnostics → esm/diagnostics}/diagnostics.js +0 -0
- /package/dist/{diagnostics → esm/diagnostics}/errors.js +0 -0
- /package/dist/{index.js → esm/index.js} +0 -0
- /package/dist/{infrastructure → esm/infrastructure}/id-allocator.js +0 -0
- /package/dist/{mapping → esm/mapping}/element-mapping.js +0 -0
- /package/dist/{mapping → esm/mapping}/generic-relationship-mapping.js +0 -0
- /package/dist/{mapping → esm/mapping}/relationship-mapping.js +0 -0
- /package/dist/{mapping → esm/mapping}/scheme-mapping.js +0 -0
- /package/dist/{mapping → esm/mapping}/visual-mapping.js +0 -0
- /package/dist/{serializer → esm/serializer}/document-writer.js +0 -0
- /package/dist/{serializer → esm/serializer}/profile-values.js +0 -0
- /package/dist/{serializer → esm/serializer}/view-writer.js +0 -0
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildGraphicalModule = buildGraphicalModule;
|
|
4
|
+
const xml_writer_js_1 = require("../infrastructure/xml-writer.js");
|
|
5
|
+
const id_allocator_js_1 = require("../infrastructure/id-allocator.js");
|
|
6
|
+
const assert_js_1 = require("../infrastructure/assert.js");
|
|
7
|
+
const visual_mapping_js_1 = require("../mapping/visual-mapping.js");
|
|
8
|
+
const geometry_js_1 = require("../geometry/geometry.js");
|
|
9
|
+
const bendpoints_js_1 = require("../geometry/bendpoints.js");
|
|
10
|
+
/**
|
|
11
|
+
* Converts a diagram object's/note's `bounds` into a `Rect`, re-checking
|
|
12
|
+
* completeness explicitly rather than trusting it across the function
|
|
13
|
+
* boundary from view-writer's earlier validation pass via an unchecked
|
|
14
|
+
* cast. `bounds` is only ever incomplete here if that invariant is somehow
|
|
15
|
+
* violated — in which case this reports the same `missing-bounds`
|
|
16
|
+
* diagnostic view-writer would have, instead of emitting `NaN`/`null`
|
|
17
|
+
* arithmetic into the output.
|
|
18
|
+
*/
|
|
19
|
+
function resolveDrawableBounds(bounds, diagnostics, entityId, entityType) {
|
|
20
|
+
if (!(0, geometry_js_1.hasCompleteBounds)(bounds)) {
|
|
21
|
+
diagnostics.error({
|
|
22
|
+
code: 'missing-bounds',
|
|
23
|
+
message: `"${entityId}" has incomplete geometry (x/y/width/height) and cannot be positioned in XMA.`,
|
|
24
|
+
entityId,
|
|
25
|
+
entityType,
|
|
26
|
+
});
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
return (0, geometry_js_1.toRect)(bounds);
|
|
30
|
+
}
|
|
31
|
+
function colorElement(name, rgb, id) {
|
|
32
|
+
const attrs = [['id', String(id)]];
|
|
33
|
+
if (name !== null) {
|
|
34
|
+
attrs.push(['name', name]);
|
|
35
|
+
}
|
|
36
|
+
// Only regular styled colors carry r/g/b; a bare default (e.g. relationship line color) omits them — confirmed shape.
|
|
37
|
+
// A zero-valued channel is itself omitted rather than written as "0" —
|
|
38
|
+
// confirmed against the sabsa fixture's one explicit connection lineColor
|
|
39
|
+
// override (#ff0000): its MM_Color is `mm_r="255"` alone, g/b entirely
|
|
40
|
+
// absent, not `mm_g="0" mm_b="0"`. Same omit-when-zero convention already
|
|
41
|
+
// confirmed for bounds x/y in geometry.ts.
|
|
42
|
+
if (rgb) {
|
|
43
|
+
if (rgb.r !== 0)
|
|
44
|
+
attrs.push(['mm_r', String(rgb.r)]);
|
|
45
|
+
if (rgb.g !== 0)
|
|
46
|
+
attrs.push(['mm_g', String(rgb.g)]);
|
|
47
|
+
if (rgb.b !== 0)
|
|
48
|
+
attrs.push(['mm_b', String(rgb.b)]);
|
|
49
|
+
}
|
|
50
|
+
return (0, xml_writer_js_1.element)('MM_Diagram:MM_Color', attrs);
|
|
51
|
+
}
|
|
52
|
+
function rectElement(id, rect) {
|
|
53
|
+
const scaled = (0, geometry_js_1.scaleRect)(rect);
|
|
54
|
+
return (0, xml_writer_js_1.element)('MM_Rect', [
|
|
55
|
+
['name', 'mm_rect'],
|
|
56
|
+
['x', String(scaled.x)],
|
|
57
|
+
['y', String(scaled.y)],
|
|
58
|
+
['w', String(scaled.width)],
|
|
59
|
+
['h', String(scaled.height)],
|
|
60
|
+
]);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Resolves a node's effective fill/line/font, applying explicit Archi
|
|
64
|
+
* styling only where mechanically lossless (a direct hex RGB copy, a
|
|
65
|
+
* verbatim font-name substitution into the same structural slot, or the
|
|
66
|
+
* confirmed font-size formula) — per v0.1 policy, everything else explicit
|
|
67
|
+
* (bold/italic, line width, font color) is diagnosed as an unsupported
|
|
68
|
+
* style override rather than guessed.
|
|
69
|
+
*/
|
|
70
|
+
function resolveNodeVisuals(style, defaultFill, diagnostics, entityId, entityType) {
|
|
71
|
+
let fill = defaultFill;
|
|
72
|
+
let line = visual_mapping_js_1.DEFAULT_LINE_COLOR;
|
|
73
|
+
let fontName = visual_mapping_js_1.DEFAULT_FONT_NAME;
|
|
74
|
+
let fontSize = visual_mapping_js_1.DEFAULT_FONT_SIZE;
|
|
75
|
+
// Never reassigned: alpha has zero fixture evidence, so it's diagnosed
|
|
76
|
+
// (see below) rather than applied — fillOpacity always stays the default.
|
|
77
|
+
const fillOpacity = visual_mapping_js_1.DEFAULT_OPACITY;
|
|
78
|
+
if (style) {
|
|
79
|
+
if (style.fillColor !== null) {
|
|
80
|
+
const parsed = (0, visual_mapping_js_1.parseArchiHexColor)(style.fillColor);
|
|
81
|
+
if (parsed) {
|
|
82
|
+
fill = parsed;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
diagnostics.warning({
|
|
86
|
+
code: 'unsupported-style-fill-color',
|
|
87
|
+
message: `Fill color "${style.fillColor}" is not a recognized hex color and was not applied.`,
|
|
88
|
+
entityId,
|
|
89
|
+
entityType,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (style.lineColor !== null) {
|
|
94
|
+
const parsed = (0, visual_mapping_js_1.parseArchiHexColor)(style.lineColor);
|
|
95
|
+
if (parsed) {
|
|
96
|
+
line = parsed;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
diagnostics.warning({
|
|
100
|
+
code: 'unsupported-style-line-color',
|
|
101
|
+
message: `Line color "${style.lineColor}" is not a recognized hex color and was not applied.`,
|
|
102
|
+
entityId,
|
|
103
|
+
entityType,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (style.fontName !== null) {
|
|
108
|
+
fontName = style.fontName;
|
|
109
|
+
}
|
|
110
|
+
if (style.alpha !== null) {
|
|
111
|
+
// Not applied: zero occurrences of an explicit `alpha` in any of the
|
|
112
|
+
// four reference fixtures — no evidence for how (or whether) it maps
|
|
113
|
+
// to `mm_fillOpacity`, so per v0.1 policy this is diagnosed like every
|
|
114
|
+
// other unconfirmed style override, not guessed.
|
|
115
|
+
diagnostics.warning({
|
|
116
|
+
code: 'unsupported-style-alpha',
|
|
117
|
+
message: 'Explicit fill opacity (alpha) has no confirmed XMA representation and was not applied (default used).',
|
|
118
|
+
entityId,
|
|
119
|
+
entityType,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
if (style.fontColor !== null) {
|
|
123
|
+
diagnostics.warning({
|
|
124
|
+
code: 'unsupported-style-font-color',
|
|
125
|
+
message: 'Explicit font color has no confirmed XMA representation and was not applied.',
|
|
126
|
+
entityId,
|
|
127
|
+
entityType,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
if (style.fontSize !== null) {
|
|
131
|
+
// `mm_fontSize = floor(pt) * 20` — confirmed by both data points in
|
|
132
|
+
// the agile-manifesto fixture: an 11.25pt override -> mm_fontSize=220,
|
|
133
|
+
// a 14.25pt override -> mm_fontSize=280.
|
|
134
|
+
fontSize = Math.floor(style.fontSize) * 20;
|
|
135
|
+
}
|
|
136
|
+
if (style.fontStyle !== null && (style.fontStyle.bold || style.fontStyle.italic)) {
|
|
137
|
+
diagnostics.warning({
|
|
138
|
+
code: 'unsupported-style-font-style',
|
|
139
|
+
message: 'Explicit bold/italic font style has no confirmed XMA representation and was not applied.',
|
|
140
|
+
entityId,
|
|
141
|
+
entityType,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
if (style.lineWidth !== null) {
|
|
145
|
+
diagnostics.warning({
|
|
146
|
+
code: 'unsupported-style-line-width',
|
|
147
|
+
message: 'Explicit line width has no confirmed XMA representation and was not applied.',
|
|
148
|
+
entityId,
|
|
149
|
+
entityType,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return { fill, line, fontName, fontSize, fillOpacity };
|
|
154
|
+
}
|
|
155
|
+
function buildLabelDecoration(id, fontName, fontSize, extraAttrs = []) {
|
|
156
|
+
return (0, xml_writer_js_1.element)('MM_Diagram:MM_Decoration', [['id', String(id)], ['mm_fontSize', String(fontSize)], ['mm_graphicType', '2'], ['mm_concept', 'label'], ...extraAttrs], [(0, xml_writer_js_1.textElement)('mm_font', fontName)]);
|
|
157
|
+
}
|
|
158
|
+
function buildIconDecoration(id) {
|
|
159
|
+
return (0, xml_writer_js_1.element)('MM_Diagram:MM_Decoration', [
|
|
160
|
+
['id', String(id)],
|
|
161
|
+
['mm_graphicType', '2'],
|
|
162
|
+
['mm_concept', 'icon'],
|
|
163
|
+
]);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Builds a fully-styled `MM_Node` for an element-backed diagram object, a
|
|
167
|
+
* Group, or a Note/ViewGraphic. `nestedChildrenXml` are already-built child
|
|
168
|
+
* `MM_Node`s (from nested diagram objects) — confirmed to nest as siblings
|
|
169
|
+
* of the icon/label `MM_Decoration`s inside the same `MM_Graphics`, after
|
|
170
|
+
* them, in both fixtures. Their `MM_Rect` bounds are used as-is (the same
|
|
171
|
+
* ×3 scale as every other node) — confirmed to already be relative to the
|
|
172
|
+
* parent in both Archi and XMA, so no offset math is needed.
|
|
173
|
+
*/
|
|
174
|
+
function buildStyledNode(ids, nodeXmaId, concept, semanticObject, hasIcon, visuals, bounds, symbolName, labelExtraAttrs = [], nestedChildrenXml = []) {
|
|
175
|
+
const graphicsChildren = [];
|
|
176
|
+
if (hasIcon) {
|
|
177
|
+
graphicsChildren.push(buildIconDecoration(ids.fresh()));
|
|
178
|
+
}
|
|
179
|
+
graphicsChildren.push(buildLabelDecoration(ids.fresh(), visuals.fontName, visuals.fontSize, labelExtraAttrs));
|
|
180
|
+
graphicsChildren.push(...nestedChildrenXml);
|
|
181
|
+
const attrs = [
|
|
182
|
+
['id', String(nodeXmaId)],
|
|
183
|
+
['mm_graphicType', '5'],
|
|
184
|
+
['mm_concept', concept],
|
|
185
|
+
];
|
|
186
|
+
if (symbolName) {
|
|
187
|
+
attrs.push(['mm_symbolName', symbolName]);
|
|
188
|
+
}
|
|
189
|
+
attrs.push(['mm_lineOpacity', String(visual_mapping_js_1.DEFAULT_OPACITY)], ['mm_fillOpacity', String(visuals.fillOpacity)], ['mm_semanticObject', String(semanticObject)]);
|
|
190
|
+
return (0, xml_writer_js_1.element)('MM_Diagram:MM_Node', attrs, [
|
|
191
|
+
(0, xml_writer_js_1.element)('MM_Diagram:MM_Graphics', [['name', 'mm_graphics'], ['id', String(ids.fresh())]], graphicsChildren),
|
|
192
|
+
colorElement('mm_lineColor', visuals.line, ids.fresh()),
|
|
193
|
+
(0, xml_writer_js_1.element)('MM_Diagram:MM_Colors', [['name', 'mm_fillColors'], ['id', String(ids.fresh())]], [colorElement(null, visuals.fill, ids.fresh())]),
|
|
194
|
+
rectElement(ids.fresh(), bounds),
|
|
195
|
+
]);
|
|
196
|
+
}
|
|
197
|
+
const JUNCTION_XMA_TYPES = new Set(['Junction', 'OrJunction']);
|
|
198
|
+
/**
|
|
199
|
+
* A Junction carries no fill/line/font styling at all in either fixture
|
|
200
|
+
* (see `buildJunctionNode`) — so unlike `resolveNodeVisuals`'s per-field
|
|
201
|
+
* diagnostics for a regular node, any style override at all on a Junction
|
|
202
|
+
* diagram object is unsupported. Previously this was discarded with no
|
|
203
|
+
* indication anything was dropped.
|
|
204
|
+
*/
|
|
205
|
+
function reportUnsupportedJunctionStyle(obj, diagnostics) {
|
|
206
|
+
const style = obj.style;
|
|
207
|
+
if (!style)
|
|
208
|
+
return;
|
|
209
|
+
const hasOverride = style.fillColor !== null ||
|
|
210
|
+
style.lineColor !== null ||
|
|
211
|
+
style.fontColor !== null ||
|
|
212
|
+
style.fontName !== null ||
|
|
213
|
+
style.fontSize !== null ||
|
|
214
|
+
style.lineWidth !== null ||
|
|
215
|
+
style.alpha !== null ||
|
|
216
|
+
(style.fontStyle !== null && (style.fontStyle.bold || style.fontStyle.italic));
|
|
217
|
+
if (!hasOverride)
|
|
218
|
+
return;
|
|
219
|
+
diagnostics.warning({
|
|
220
|
+
code: 'unsupported-style-junction',
|
|
221
|
+
message: `Diagram object "${obj.id}" is a Junction with an explicit style override — Junctions have no confirmed styling representation in XMA (drawn with a fixed, colorless form) and the override was not applied.`,
|
|
222
|
+
entityId: obj.id,
|
|
223
|
+
entityType: 'ArchiDiagramObject',
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Builds a `Junction`/`OrJunction` node — confirmed structurally different
|
|
228
|
+
* from every other element node: `mm_graphicType="3"` (not `"5"`), and no
|
|
229
|
+
* `MM_Color`/`MM_Colors` at all (a Junction carries no fill/line styling in
|
|
230
|
+
* either fixture). Fabricating a color here would contradict that evidence,
|
|
231
|
+
* not fill a gap in it.
|
|
232
|
+
*/
|
|
233
|
+
function buildJunctionNode(ids, nodeXmaId, concept, semanticObject, bounds) {
|
|
234
|
+
return (0, xml_writer_js_1.element)('MM_Diagram:MM_Node', [
|
|
235
|
+
['id', String(nodeXmaId)],
|
|
236
|
+
['mm_graphicType', '3'],
|
|
237
|
+
['mm_concept', concept],
|
|
238
|
+
['mm_lineOpacity', String(visual_mapping_js_1.DEFAULT_OPACITY)],
|
|
239
|
+
['mm_fillOpacity', String(visual_mapping_js_1.DEFAULT_OPACITY)],
|
|
240
|
+
['mm_semanticObject', String(semanticObject)],
|
|
241
|
+
], [
|
|
242
|
+
(0, xml_writer_js_1.element)('MM_Diagram:MM_Graphics', [['name', 'mm_graphics'], ['id', String(ids.fresh())]], [
|
|
243
|
+
buildLabelDecoration(ids.fresh(), visual_mapping_js_1.DEFAULT_FONT_NAME, visual_mapping_js_1.DEFAULT_FONT_SIZE),
|
|
244
|
+
]),
|
|
245
|
+
rectElement(ids.fresh(), bounds),
|
|
246
|
+
]);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Builds the `GraphicalModule`'s `MM_Diagram` for one view: a Canvas node
|
|
250
|
+
* wrapping one `MM_Node` per drawable diagram object/group/note (nested
|
|
251
|
+
* diagram objects recursively nested inside their parent's `MM_Node`, via
|
|
252
|
+
* `buildNodeTree` — see `tests/fixtures/README.md`, "Nested diagram
|
|
253
|
+
* objects"), and one `MM_DirectedRel` per drawable connection.
|
|
254
|
+
*
|
|
255
|
+
* `mm_fromx`/`mm_fromy`/`mm_tox`/`mm_toy` (manual connector anchor
|
|
256
|
+
* metadata) are deliberately omitted — exactly one fixture exhibited them,
|
|
257
|
+
* which is not enough evidence to derive a general formula or confirm
|
|
258
|
+
* they're mandatory for import (see project docs, "unresolved
|
|
259
|
+
* reverse-engineering limitations"). If a future fixture proves them
|
|
260
|
+
* required, add that behavior here, isolated from the rest of this
|
|
261
|
+
* function.
|
|
262
|
+
*/
|
|
263
|
+
function buildGraphicalModule(model, view, ids, refIds, allocator, mappedElements, mappedRelationships, viewResult, diagnostics) {
|
|
264
|
+
const diagramObjectById = new Map(model.diagramObjects.map((o) => [o.id, o]));
|
|
265
|
+
const noteById = new Map(model.notes.map((n) => [n.id, n]));
|
|
266
|
+
const nodeIds = new id_allocator_js_1.XmaIdRegistry(allocator);
|
|
267
|
+
const canvasChildren = [];
|
|
268
|
+
/**
|
|
269
|
+
* Builds one diagram object's node, recursively building and nesting its
|
|
270
|
+
* children first (bottom-up) — confirmed structure: a child `MM_Node`
|
|
271
|
+
* nests as a sibling of its parent's icon/label decorations, inside the
|
|
272
|
+
* same `MM_Graphics`, up to 3 levels deep in the sabsa fixture. Applies
|
|
273
|
+
* equally to element-backed objects and Groups (both confirmed to nest
|
|
274
|
+
* children this way). Returns `null` for an object this pass can't draw
|
|
275
|
+
* (already diagnosed elsewhere).
|
|
276
|
+
*/
|
|
277
|
+
function buildNodeTree(objId, ancestorIds = new Set()) {
|
|
278
|
+
const obj = diagramObjectById.get(objId);
|
|
279
|
+
if (!obj)
|
|
280
|
+
return null;
|
|
281
|
+
if (ancestorIds.has(objId)) {
|
|
282
|
+
diagnostics.error({
|
|
283
|
+
code: 'cyclic-diagram-object-nesting',
|
|
284
|
+
message: `Diagram object "${objId}" is its own descendant (a cyclic parent/child chain) and cannot be drawn.`,
|
|
285
|
+
entityId: objId,
|
|
286
|
+
entityType: 'ArchiDiagramObject',
|
|
287
|
+
});
|
|
288
|
+
return null;
|
|
289
|
+
}
|
|
290
|
+
const nextAncestorIds = new Set(ancestorIds).add(objId);
|
|
291
|
+
const nestedChildrenXml = obj.childrenIds
|
|
292
|
+
.map((childId) => buildNodeTree(childId, nextAncestorIds))
|
|
293
|
+
.filter((xml) => xml !== null);
|
|
294
|
+
if (viewResult.validElementNodeObjectIds.has(objId) && obj.archimateElementId) {
|
|
295
|
+
const mapping = (0, assert_js_1.assertDefined)(mappedElements.get(obj.archimateElementId), `no mapping for element "${obj.archimateElementId}" (view-writer should have skipped diagram object "${obj.id}")`);
|
|
296
|
+
const refId = (0, assert_js_1.assertDefined)(refIds.get(obj.archimateElementId), `no ref id registered for element "${obj.archimateElementId}" (view-writer should have registered it before graphical-writer runs)`);
|
|
297
|
+
const nodeXmaId = nodeIds.idFor(obj.id);
|
|
298
|
+
const bounds = resolveDrawableBounds(obj.bounds, diagnostics, obj.id, 'ArchiDiagramObject');
|
|
299
|
+
if (!bounds)
|
|
300
|
+
return null;
|
|
301
|
+
if (JUNCTION_XMA_TYPES.has(mapping.xmaType)) {
|
|
302
|
+
reportUnsupportedJunctionStyle(obj, diagnostics);
|
|
303
|
+
return buildJunctionNode(ids, nodeXmaId, mapping.xmaType, refId, bounds);
|
|
304
|
+
}
|
|
305
|
+
const visuals = resolveNodeVisuals(obj.style, visual_mapping_js_1.CATEGORY_FILL_COLOR[mapping.category], diagnostics, obj.id, 'ArchiDiagramObject');
|
|
306
|
+
return buildStyledNode(ids, nodeXmaId, mapping.xmaType, refId, mapping.hasIcon, visuals, bounds, null, [], nestedChildrenXml);
|
|
307
|
+
}
|
|
308
|
+
if (viewResult.validGroupObjectIds.has(objId)) {
|
|
309
|
+
const groupSemanticId = (0, assert_js_1.assertDefined)(ids.get(obj.id), `no semantic id registered for group "${obj.id}" (view-writer should have registered it before graphical-writer runs)`);
|
|
310
|
+
const visuals = resolveNodeVisuals(obj.style, visual_mapping_js_1.GROUP_FILL_COLOR, diagnostics, obj.id, 'ArchiDiagramObject');
|
|
311
|
+
const nodeXmaId = nodeIds.idFor(obj.id);
|
|
312
|
+
const bounds = resolveDrawableBounds(obj.bounds, diagnostics, obj.id, 'ArchiDiagramObject');
|
|
313
|
+
if (!bounds)
|
|
314
|
+
return null;
|
|
315
|
+
return buildStyledNode(ids, nodeXmaId, 'ViewGraphic', groupSemanticId, false, visuals, bounds, 'group', [['mm_frameStrategy', '12']], nestedChildrenXml);
|
|
316
|
+
}
|
|
317
|
+
return null;
|
|
318
|
+
}
|
|
319
|
+
for (const objId of view.diagramObjectIds) {
|
|
320
|
+
const nodeXml = buildNodeTree(objId);
|
|
321
|
+
if (nodeXml)
|
|
322
|
+
canvasChildren.push(nodeXml);
|
|
323
|
+
}
|
|
324
|
+
for (const noteId of view.noteIds) {
|
|
325
|
+
if (!viewResult.validNoteIds.has(noteId))
|
|
326
|
+
continue;
|
|
327
|
+
const note = noteById.get(noteId);
|
|
328
|
+
if (!note)
|
|
329
|
+
continue;
|
|
330
|
+
const bounds = resolveDrawableBounds(note.bounds, diagnostics, note.id, 'ArchiNote');
|
|
331
|
+
if (!bounds)
|
|
332
|
+
continue;
|
|
333
|
+
const noteSemanticId = (0, assert_js_1.assertDefined)(ids.get(note.id), `no semantic id registered for note "${note.id}" (view-writer should have registered it before graphical-writer runs)`);
|
|
334
|
+
const visuals = resolveNodeVisuals(note.style, visual_mapping_js_1.NOTE_FILL_COLOR, diagnostics, note.id, 'ArchiNote');
|
|
335
|
+
const nodeXmaId = nodeIds.idFor(note.id);
|
|
336
|
+
canvasChildren.push(buildStyledNode(ids, nodeXmaId, 'ViewGraphic', noteSemanticId, false, visuals, bounds, null));
|
|
337
|
+
}
|
|
338
|
+
const connectionById = new Map(model.diagramConnections.map((c) => [c.id, c]));
|
|
339
|
+
for (const connId of view.diagramConnectionIds) {
|
|
340
|
+
const connection = connectionById.get(connId);
|
|
341
|
+
if (!connection || connection.viewId !== view.id)
|
|
342
|
+
continue;
|
|
343
|
+
const relId = connection.archimateRelationshipId;
|
|
344
|
+
if (!relId)
|
|
345
|
+
continue; // already diagnosed by view-writer
|
|
346
|
+
const mapping = mappedRelationships.get(relId);
|
|
347
|
+
if (!mapping)
|
|
348
|
+
continue; // already diagnosed by relationship-writer
|
|
349
|
+
const sourceNodeXmaId = nodeIds.get(connection.sourceId);
|
|
350
|
+
const targetNodeXmaId = nodeIds.get(connection.targetId);
|
|
351
|
+
if (sourceNodeXmaId === undefined || targetNodeXmaId === undefined) {
|
|
352
|
+
diagnostics.error({
|
|
353
|
+
code: 'unsupported-connection-invalid-endpoint',
|
|
354
|
+
message: `Connection "${connection.id}" has a source/target diagram object that was not drawable.`,
|
|
355
|
+
entityId: connection.id,
|
|
356
|
+
entityType: 'ArchiDiagramConnection',
|
|
357
|
+
});
|
|
358
|
+
continue;
|
|
359
|
+
}
|
|
360
|
+
const sourceObj = diagramObjectById.get(connection.sourceId);
|
|
361
|
+
const targetObj = diagramObjectById.get(connection.targetId);
|
|
362
|
+
// A connection between a diagram object and its own visual parent is
|
|
363
|
+
// already conveyed by the nesting itself — confirmed against both
|
|
364
|
+
// fixtures: e.g. agile-manifesto's two BusinessProcessBusinessFunction-
|
|
365
|
+
// Composition relations exist in the semantic Relations collection (so
|
|
366
|
+
// they're still emitted below via relationship-writer/view-writer) but
|
|
367
|
+
// have zero MM_DirectedRel graphics; sabsa's ElementGroupingComposition
|
|
368
|
+
// (Grouping as target, not a nesting pair) is drawn normally while its
|
|
369
|
+
// GroupingElementComposition (Grouping as source, always a nesting pair
|
|
370
|
+
// in both fixtures) never is. Applies regardless of relationship type —
|
|
371
|
+
// nesting evidence isn't type-specific, only "is this endpoint the
|
|
372
|
+
// other's visual parent" is.
|
|
373
|
+
if (sourceObj && targetObj && (sourceObj.parentId === targetObj.id || targetObj.parentId === sourceObj.id)) {
|
|
374
|
+
continue;
|
|
375
|
+
}
|
|
376
|
+
const points = [];
|
|
377
|
+
if (connection.bendpoints.length > 0 && sourceObj && targetObj && (0, geometry_js_1.hasCompleteBounds)(sourceObj.bounds) && (0, geometry_js_1.hasCompleteBounds)(targetObj.bounds)) {
|
|
378
|
+
const sourceRect = (0, geometry_js_1.toRect)(sourceObj.bounds);
|
|
379
|
+
const targetRect = (0, geometry_js_1.toRect)(targetObj.bounds);
|
|
380
|
+
for (const bp of connection.bendpoints) {
|
|
381
|
+
const resolution = (0, bendpoints_js_1.resolveBendpoint)(bp, sourceRect, targetRect);
|
|
382
|
+
if (!resolution) {
|
|
383
|
+
diagnostics.error({
|
|
384
|
+
code: 'unresolvable-bendpoint',
|
|
385
|
+
message: `Connection "${connection.id}" has a bendpoint with neither source- nor target-relative offsets set.`,
|
|
386
|
+
entityId: connection.id,
|
|
387
|
+
entityType: 'ArchiDiagramConnection',
|
|
388
|
+
});
|
|
389
|
+
continue;
|
|
390
|
+
}
|
|
391
|
+
if (resolution.mismatch) {
|
|
392
|
+
// Not a data-loss case: resolution.point (the source-relative form,
|
|
393
|
+
// used below regardless) is a perfectly usable point — this is a
|
|
394
|
+
// small precision disagreement in Archi's own stored offsets, not a
|
|
395
|
+
// construct XMA has no representation for. Warning, not an error
|
|
396
|
+
// that discards the whole document.
|
|
397
|
+
diagnostics.warning({
|
|
398
|
+
code: 'bendpoint-endpoint-mismatch',
|
|
399
|
+
message: `Connection "${connection.id}" has a bendpoint whose source-relative and target-relative offsets disagree materially (source: ${resolution.mismatch.fromSource.x},${resolution.mismatch.fromSource.y}; target: ${resolution.mismatch.fromTarget.x},${resolution.mismatch.fromTarget.y}); used the source-relative point.`,
|
|
400
|
+
entityId: connection.id,
|
|
401
|
+
entityType: 'ArchiDiagramConnection',
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
const scaled = (0, geometry_js_1.scalePoint)(resolution.point);
|
|
405
|
+
points.push((0, xml_writer_js_1.element)('MM_Diagram:MM_Point', [['id', String(ids.fresh())], ['mm_x', String(scaled.x)], ['mm_y', String(scaled.y)]]));
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
const relRefId = (0, assert_js_1.assertDefined)(refIds.get(relId), `no ref id registered for relationship "${relId}" (view-writer should have registered it before graphical-writer runs)`);
|
|
409
|
+
const directedRelChildren = [];
|
|
410
|
+
if (points.length > 0) {
|
|
411
|
+
directedRelChildren.push((0, xml_writer_js_1.element)('MM_Diagram:MM_MultiLine', [['name', 'mm_line'], ['id', String(ids.fresh())]], points));
|
|
412
|
+
}
|
|
413
|
+
// Confirmed against the sabsa fixture's one explicit connection
|
|
414
|
+
// lineColor override (#ff0000): the DirectedRel's MM_Color carries the
|
|
415
|
+
// parsed RGB, in the exact same structural slot as a node's line color.
|
|
416
|
+
let connectionLineColor = null;
|
|
417
|
+
if (connection.style?.lineColor) {
|
|
418
|
+
const parsed = (0, visual_mapping_js_1.parseArchiHexColor)(connection.style.lineColor);
|
|
419
|
+
if (parsed) {
|
|
420
|
+
connectionLineColor = parsed;
|
|
421
|
+
}
|
|
422
|
+
else {
|
|
423
|
+
diagnostics.warning({
|
|
424
|
+
code: 'unsupported-style-connection-line-color',
|
|
425
|
+
message: `Connection line color "${connection.style.lineColor}" is not a recognized hex color and was not applied.`,
|
|
426
|
+
entityId: connection.id,
|
|
427
|
+
entityType: 'ArchiDiagramConnection',
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
directedRelChildren.push((0, xml_writer_js_1.element)('MM_Diagram:MM_Graphics', [['name', 'mm_graphics'], ['id', String(ids.fresh())]], [
|
|
432
|
+
buildLabelDecoration(ids.fresh(), visual_mapping_js_1.DEFAULT_FONT_NAME, visual_mapping_js_1.DEFAULT_FONT_SIZE),
|
|
433
|
+
]));
|
|
434
|
+
directedRelChildren.push(colorElement('mm_lineColor', connectionLineColor, ids.fresh()));
|
|
435
|
+
canvasChildren.push((0, xml_writer_js_1.element)('MM_Diagram:MM_DirectedRel', [
|
|
436
|
+
['id', String(ids.fresh())],
|
|
437
|
+
['mm_from', String(sourceNodeXmaId)],
|
|
438
|
+
['mm_to', String(targetNodeXmaId)],
|
|
439
|
+
['mm_graphicType', '7'],
|
|
440
|
+
['mm_concept', mapping.xmaType],
|
|
441
|
+
['mm_semanticObject', String(relRefId)],
|
|
442
|
+
], directedRelChildren));
|
|
443
|
+
}
|
|
444
|
+
const canvasSemanticId = ids.idFor(view.id);
|
|
445
|
+
const canvasNode = (0, xml_writer_js_1.element)('MM_Diagram:MM_Node', [
|
|
446
|
+
['name', 'mm_canvas'],
|
|
447
|
+
['id', String(ids.fresh())],
|
|
448
|
+
['mm_graphicType', '5'],
|
|
449
|
+
['mm_concept', 'Canvas'],
|
|
450
|
+
['mm_semanticObject', String(canvasSemanticId)],
|
|
451
|
+
], [
|
|
452
|
+
(0, xml_writer_js_1.element)('MM_Diagram:MM_Graphics', [['name', 'mm_graphics'], ['id', String(ids.fresh())]], canvasChildren),
|
|
453
|
+
(0, xml_writer_js_1.element)('MM_Rect', [
|
|
454
|
+
['name', 'mm_rect'],
|
|
455
|
+
['x', '0'],
|
|
456
|
+
['y', '0'],
|
|
457
|
+
['w', String(visual_mapping_js_1.CANVAS_EXTENT)],
|
|
458
|
+
['h', String(visual_mapping_js_1.CANVAS_EXTENT)],
|
|
459
|
+
]),
|
|
460
|
+
]);
|
|
461
|
+
const diagramXml = (0, xml_writer_js_1.element)('MM_Diagram:MM_Diagram', [['name', 'root'], ['id', String(ids.fresh())]], [canvasNode]);
|
|
462
|
+
return { diagramXml };
|
|
463
|
+
}
|
|
464
|
+
//# sourceMappingURL=graphical-writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphical-writer.js","sourceRoot":"","sources":["../../../src/serializer/graphical-writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-values.d.ts","sourceRoot":"","sources":["../../../src/serializer/profile-values.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAIlE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,UAAU,CAkB5G"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildProfileValues = buildProfileValues;
|
|
4
|
+
const xml_writer_js_1 = require("../infrastructure/xml-writer.js");
|
|
5
|
+
const rtf_js_1 = require("./rtf.js");
|
|
6
|
+
/**
|
|
7
|
+
* Builds an `<MM_ProfileValues>` block: a `nm` (display name) value, and
|
|
8
|
+
* optionally a `doc` (RTF documentation) value — confirmed order and shape
|
|
9
|
+
* from both reference fixtures (`nm` always precedes `doc`).
|
|
10
|
+
*/
|
|
11
|
+
function buildProfileValues(language, name, documentation) {
|
|
12
|
+
const children = [
|
|
13
|
+
(0, xml_writer_js_1.textElement)('MM_Value', name, [
|
|
14
|
+
['name', 'nm'],
|
|
15
|
+
['type', 'string'],
|
|
16
|
+
['xml:lang', language],
|
|
17
|
+
]),
|
|
18
|
+
];
|
|
19
|
+
if (documentation) {
|
|
20
|
+
children.push((0, xml_writer_js_1.textElement)('MM_Value', (0, rtf_js_1.toRtfDocument)(documentation), [
|
|
21
|
+
['name', 'doc'],
|
|
22
|
+
['type', 'rtf'],
|
|
23
|
+
['xml:lang', language],
|
|
24
|
+
]));
|
|
25
|
+
}
|
|
26
|
+
return (0, xml_writer_js_1.element)('MM_ProfileValues', undefined, children);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=profile-values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-values.js","sourceRoot":"","sources":["../../../src/serializer/profile-values.ts"],"names":[],"mappings":";;AASA,gDAkBC;AA1BD,mEAAuE;AACvE,qCAAyC;AAEzC;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,IAAY,EAAE,aAA6B;IAC9F,MAAM,QAAQ,GAAiB;QAC7B,IAAA,2BAAW,EAAC,UAAU,EAAE,IAAI,EAAE;YAC5B,CAAC,MAAM,EAAE,IAAI,CAAC;YACd,CAAC,MAAM,EAAE,QAAQ,CAAC;YAClB,CAAC,UAAU,EAAE,QAAQ,CAAC;SACvB,CAAC;KACH,CAAC;IACF,IAAI,aAAa,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,CACX,IAAA,2BAAW,EAAC,UAAU,EAAE,IAAA,sBAAa,EAAC,aAAa,CAAC,EAAE;YACpD,CAAC,MAAM,EAAE,KAAK,CAAC;YACf,CAAC,MAAM,EAAE,KAAK,CAAC;YACf,CAAC,UAAU,EAAE,QAAQ,CAAC;SACvB,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,IAAA,uBAAO,EAAC,kBAAkB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationship-writer.d.ts","sourceRoot":"","sources":["../../../src/serializer/relationship-writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE5F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,2GAA2G;AAC3G,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;CACjB;AAWD,MAAM,WAAW,2BAA2B;IAC1C,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;IAC9D;;;;;;;;OAQG;IACH,gBAAgB,EAAE,UAAU,EAAE,CAAC;CAChC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,aAAa,EAClB,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,EAC/C,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACzD,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACxD,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EACtC,WAAW,EAAE,mBAAmB,GAC/B,2BAA2B,CAqF7B"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildSemanticRelationships = buildSemanticRelationships;
|
|
4
|
+
const xml_writer_js_1 = require("../infrastructure/xml-writer.js");
|
|
5
|
+
const assert_js_1 = require("../infrastructure/assert.js");
|
|
6
|
+
const relationship_mapping_js_1 = require("../mapping/relationship-mapping.js");
|
|
7
|
+
const generic_relationship_mapping_js_1 = require("../mapping/generic-relationship-mapping.js");
|
|
8
|
+
function getOrCreateScheme(schemeBuilds, tag) {
|
|
9
|
+
let build = schemeBuilds.get(tag);
|
|
10
|
+
if (!build) {
|
|
11
|
+
build = { tag, collections: new Map(), relations: [] };
|
|
12
|
+
schemeBuilds.set(tag, build);
|
|
13
|
+
}
|
|
14
|
+
return build;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Builds the semantic `<ArchiMate:{RelationshipType} from="..." to="..."/>`
|
|
18
|
+
* elements for every `ArchiRelationship` that resolves either to a confirmed
|
|
19
|
+
* exact-triple mapping or a confirmed generic form. Every relation — exact
|
|
20
|
+
* or generic — is appended to its **source element's own scheme's**
|
|
21
|
+
* `Relations` collection (falling back to the root-level container only
|
|
22
|
+
* when the source has no scheme, i.e. a Junction/OrJunction). Confirmed
|
|
23
|
+
* against the agile-manifesto fixture by cross-referencing three generic-form
|
|
24
|
+
* relations' `from` ids against their defining element: an
|
|
25
|
+
* `ElementElementAssociation` sourced from an `ApplicationComponent` sits in
|
|
26
|
+
* `ApplicationScheme`'s `Relations`; a `GroupingElementComposition` sourced
|
|
27
|
+
* from a `Grouping` sits in `CompositeScheme`'s; an `InfluenceRelation`
|
|
28
|
+
* sourced from a `Junction` sits in the root's. Everything unmapped is
|
|
29
|
+
* diagnosed, never guessed — see `mapping/relationship-mapping.ts` and
|
|
30
|
+
* `mapping/generic-relationship-mapping.ts`.
|
|
31
|
+
*/
|
|
32
|
+
function buildSemanticRelationships(model, ids, elementIndex, relationshipIndex, mappedElements, schemeBuilds, diagnostics) {
|
|
33
|
+
const mappedRelationships = new Map();
|
|
34
|
+
const rootRelationsXml = [];
|
|
35
|
+
for (const rel of model.relationships) {
|
|
36
|
+
const sourceEl = elementIndex.get(rel.sourceId);
|
|
37
|
+
const targetEl = elementIndex.get(rel.targetId);
|
|
38
|
+
if (!sourceEl || !targetEl) {
|
|
39
|
+
const endpointIsRelationship = (!sourceEl && relationshipIndex.has(rel.sourceId)) || (!targetEl && relationshipIndex.has(rel.targetId));
|
|
40
|
+
diagnostics.error({
|
|
41
|
+
code: endpointIsRelationship ? 'unsupported-relationship-endpoint' : 'dangling-relationship-reference',
|
|
42
|
+
message: endpointIsRelationship
|
|
43
|
+
? `Relationship "${rel.type}" (${rel.id}) has another relationship as an endpoint — relationship-to-relationship endpoints are not supported in XMA v0.1.`
|
|
44
|
+
: `Relationship "${rel.type}" (${rel.id}) references a source/target id not found among the model's elements.`,
|
|
45
|
+
entityId: rel.id,
|
|
46
|
+
entityType: 'ArchiRelationship',
|
|
47
|
+
});
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
if (!mappedElements.has(sourceEl.id) || !mappedElements.has(targetEl.id)) {
|
|
51
|
+
// The endpoint element itself already produced an unsupported-element-type
|
|
52
|
+
// diagnostic; this is the knock-on effect on the relationship.
|
|
53
|
+
diagnostics.error({
|
|
54
|
+
code: 'unsupported-relationship-endpoint-type',
|
|
55
|
+
message: `Relationship "${rel.type}" (${rel.id}) has an endpoint whose element type has no XMA mapping.`,
|
|
56
|
+
entityId: rel.id,
|
|
57
|
+
entityType: 'ArchiRelationship',
|
|
58
|
+
});
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
const exactMapping = (0, relationship_mapping_js_1.lookupRelationshipMapping)(rel.type, sourceEl.type, targetEl.type);
|
|
62
|
+
const genericMapping = exactMapping ? undefined : (0, generic_relationship_mapping_js_1.lookupGenericRelationshipMapping)(rel.type, sourceEl.type, targetEl.type);
|
|
63
|
+
const mapping = exactMapping ?? genericMapping;
|
|
64
|
+
if (!mapping) {
|
|
65
|
+
diagnostics.error({
|
|
66
|
+
code: 'unsupported-relationship',
|
|
67
|
+
message: `Relationship "${rel.type}" from ${sourceEl.type} to ${targetEl.type} has no confirmed XMA mapping.`,
|
|
68
|
+
entityId: rel.id,
|
|
69
|
+
entityType: 'ArchiRelationship',
|
|
70
|
+
});
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (rel.properties.length > 0) {
|
|
74
|
+
diagnostics.warning({
|
|
75
|
+
code: 'unsupported-properties',
|
|
76
|
+
message: `Relationship "${rel.name ?? rel.id}" has ${rel.properties.length} propert${rel.properties.length === 1 ? 'y' : 'ies'} not represented in XMA v0.1.`,
|
|
77
|
+
entityId: rel.id,
|
|
78
|
+
entityType: 'ArchiRelationship',
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
if (rel.profiles.length > 0) {
|
|
82
|
+
diagnostics.warning({
|
|
83
|
+
code: 'unsupported-profile',
|
|
84
|
+
message: `Relationship "${rel.name ?? rel.id}" references ${rel.profiles.length} profile(s)/specialization(s) not represented in XMA v0.1.`,
|
|
85
|
+
entityId: rel.id,
|
|
86
|
+
entityType: 'ArchiRelationship',
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
mappedRelationships.set(rel.id, mapping);
|
|
90
|
+
const xmaId = ids.idFor(rel.id);
|
|
91
|
+
const relationXml = (0, xml_writer_js_1.element)(`ArchiMate:${mapping.xmaType}`, [
|
|
92
|
+
['id', String(xmaId)],
|
|
93
|
+
['from', String(ids.idFor(sourceEl.id))],
|
|
94
|
+
['to', String(ids.idFor(targetEl.id))],
|
|
95
|
+
]);
|
|
96
|
+
const schemeTag = exactMapping
|
|
97
|
+
? exactMapping.scheme
|
|
98
|
+
: (0, assert_js_1.assertDefined)(mappedElements.get(sourceEl.id), `no mapping for source element "${sourceEl.id}" (checked present earlier in this same function)`).scheme;
|
|
99
|
+
if (schemeTag === 'root') {
|
|
100
|
+
rootRelationsXml.push(relationXml);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
const scheme = getOrCreateScheme(schemeBuilds, schemeTag);
|
|
104
|
+
scheme.relations.push(relationXml);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return { mappedRelationships, rootRelationsXml };
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=relationship-writer.js.map
|