@cda/adapter-xma 0.4.3 → 0.6.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 (214) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +54 -20
  3. package/dist/cjs/diagnostics/diagnostics.d.ts.map +1 -0
  4. package/dist/cjs/diagnostics/diagnostics.js +23 -0
  5. package/dist/cjs/diagnostics/diagnostics.js.map +1 -0
  6. package/dist/cjs/diagnostics/errors.d.ts.map +1 -0
  7. package/dist/cjs/diagnostics/errors.js +24 -0
  8. package/dist/cjs/diagnostics/errors.js.map +1 -0
  9. package/dist/cjs/geometry/bendpoints.d.ts.map +1 -0
  10. package/dist/cjs/geometry/bendpoints.js +51 -0
  11. package/dist/cjs/geometry/bendpoints.js.map +1 -0
  12. package/dist/cjs/geometry/geometry.d.ts +75 -0
  13. package/dist/cjs/geometry/geometry.d.ts.map +1 -0
  14. package/dist/cjs/geometry/geometry.js +77 -0
  15. package/dist/cjs/geometry/geometry.js.map +1 -0
  16. package/dist/cjs/index.d.ts.map +1 -0
  17. package/dist/cjs/index.js +9 -0
  18. package/dist/cjs/index.js.map +1 -0
  19. package/dist/cjs/infrastructure/assert.d.ts +10 -0
  20. package/dist/cjs/infrastructure/assert.d.ts.map +1 -0
  21. package/dist/cjs/infrastructure/assert.js +18 -0
  22. package/dist/cjs/infrastructure/assert.js.map +1 -0
  23. package/dist/cjs/infrastructure/id-allocator.d.ts.map +1 -0
  24. package/dist/cjs/infrastructure/id-allocator.js +59 -0
  25. package/dist/cjs/infrastructure/id-allocator.js.map +1 -0
  26. package/dist/cjs/infrastructure/xml-writer.d.ts.map +1 -0
  27. package/dist/cjs/infrastructure/xml-writer.js +94 -0
  28. package/dist/cjs/infrastructure/xml-writer.js.map +1 -0
  29. package/dist/cjs/mapping/element-mapping.d.ts.map +1 -0
  30. package/dist/cjs/mapping/element-mapping.js +117 -0
  31. package/dist/cjs/mapping/element-mapping.js.map +1 -0
  32. package/dist/cjs/mapping/generic-relationship-mapping.d.ts.map +1 -0
  33. package/dist/cjs/mapping/generic-relationship-mapping.js +71 -0
  34. package/dist/cjs/mapping/generic-relationship-mapping.js.map +1 -0
  35. package/dist/cjs/mapping/relationship-mapping.d.ts.map +1 -0
  36. package/dist/cjs/mapping/relationship-mapping.js +697 -0
  37. package/dist/cjs/mapping/relationship-mapping.js.map +1 -0
  38. package/dist/cjs/mapping/scheme-mapping.d.ts.map +1 -0
  39. package/dist/cjs/mapping/scheme-mapping.js +42 -0
  40. package/dist/cjs/mapping/scheme-mapping.js.map +1 -0
  41. package/dist/{mapping → cjs/mapping}/visual-mapping.d.ts +8 -0
  42. package/dist/cjs/mapping/visual-mapping.d.ts.map +1 -0
  43. package/dist/cjs/mapping/visual-mapping.js +51 -0
  44. package/dist/cjs/mapping/visual-mapping.js.map +1 -0
  45. package/dist/cjs/package.json +3 -0
  46. package/dist/cjs/serializer/document-writer.d.ts.map +1 -0
  47. package/dist/cjs/serializer/document-writer.js +143 -0
  48. package/dist/cjs/serializer/document-writer.js.map +1 -0
  49. package/dist/{serializer → cjs/serializer}/graphical-writer.d.ts +8 -6
  50. package/dist/cjs/serializer/graphical-writer.d.ts.map +1 -0
  51. package/dist/cjs/serializer/graphical-writer.js +521 -0
  52. package/dist/cjs/serializer/graphical-writer.js.map +1 -0
  53. package/dist/cjs/serializer/profile-values.d.ts.map +1 -0
  54. package/dist/cjs/serializer/profile-values.js +28 -0
  55. package/dist/cjs/serializer/profile-values.js.map +1 -0
  56. package/dist/cjs/serializer/relationship-writer.d.ts.map +1 -0
  57. package/dist/cjs/serializer/relationship-writer.js +109 -0
  58. package/dist/cjs/serializer/relationship-writer.js.map +1 -0
  59. package/dist/cjs/serializer/rtf.d.ts.map +1 -0
  60. package/dist/cjs/serializer/rtf.js +67 -0
  61. package/dist/cjs/serializer/rtf.js.map +1 -0
  62. package/dist/cjs/serializer/semantic-writer.d.ts.map +1 -0
  63. package/dist/cjs/serializer/semantic-writer.js +170 -0
  64. package/dist/cjs/serializer/semantic-writer.js.map +1 -0
  65. package/dist/cjs/serializer/serialize-xma.d.ts.map +1 -0
  66. package/dist/cjs/serializer/serialize-xma.js +113 -0
  67. package/dist/cjs/serializer/serialize-xma.js.map +1 -0
  68. package/dist/{serializer → cjs/serializer}/view-writer.d.ts +6 -0
  69. package/dist/cjs/serializer/view-writer.d.ts.map +1 -0
  70. package/dist/cjs/serializer/view-writer.js +239 -0
  71. package/dist/cjs/serializer/view-writer.js.map +1 -0
  72. package/dist/esm/diagnostics/diagnostics.d.ts +20 -0
  73. package/dist/esm/diagnostics/diagnostics.d.ts.map +1 -0
  74. package/dist/esm/diagnostics/diagnostics.js.map +1 -0
  75. package/dist/esm/diagnostics/errors.d.ts +13 -0
  76. package/dist/esm/diagnostics/errors.d.ts.map +1 -0
  77. package/dist/esm/diagnostics/errors.js.map +1 -0
  78. package/dist/esm/geometry/bendpoints.d.ts +33 -0
  79. package/dist/esm/geometry/bendpoints.d.ts.map +1 -0
  80. package/dist/{geometry → esm/geometry}/bendpoints.js +6 -2
  81. package/dist/esm/geometry/bendpoints.js.map +1 -0
  82. package/dist/esm/geometry/geometry.d.ts +75 -0
  83. package/dist/esm/geometry/geometry.d.ts.map +1 -0
  84. package/dist/{geometry → esm/geometry}/geometry.js +25 -6
  85. package/dist/esm/geometry/geometry.js.map +1 -0
  86. package/dist/esm/index.d.ts +5 -0
  87. package/dist/esm/index.d.ts.map +1 -0
  88. package/dist/esm/index.js.map +1 -0
  89. package/dist/esm/infrastructure/assert.d.ts +10 -0
  90. package/dist/esm/infrastructure/assert.d.ts.map +1 -0
  91. package/dist/esm/infrastructure/assert.js +15 -0
  92. package/dist/esm/infrastructure/assert.js.map +1 -0
  93. package/dist/esm/infrastructure/id-allocator.d.ts +34 -0
  94. package/dist/esm/infrastructure/id-allocator.d.ts.map +1 -0
  95. package/dist/esm/infrastructure/id-allocator.js.map +1 -0
  96. package/dist/esm/infrastructure/xml-writer.d.ts +20 -0
  97. package/dist/esm/infrastructure/xml-writer.d.ts.map +1 -0
  98. package/dist/{infrastructure → esm/infrastructure}/xml-writer.js +37 -2
  99. package/dist/esm/infrastructure/xml-writer.js.map +1 -0
  100. package/dist/esm/mapping/element-mapping.d.ts +31 -0
  101. package/dist/esm/mapping/element-mapping.d.ts.map +1 -0
  102. package/dist/esm/mapping/element-mapping.js.map +1 -0
  103. package/dist/esm/mapping/generic-relationship-mapping.d.ts +18 -0
  104. package/dist/esm/mapping/generic-relationship-mapping.d.ts.map +1 -0
  105. package/dist/esm/mapping/generic-relationship-mapping.js.map +1 -0
  106. package/dist/esm/mapping/relationship-mapping.d.ts +47 -0
  107. package/dist/esm/mapping/relationship-mapping.d.ts.map +1 -0
  108. package/dist/esm/mapping/relationship-mapping.js.map +1 -0
  109. package/dist/esm/mapping/scheme-mapping.d.ts +38 -0
  110. package/dist/esm/mapping/scheme-mapping.d.ts.map +1 -0
  111. package/dist/esm/mapping/scheme-mapping.js.map +1 -0
  112. package/dist/esm/mapping/visual-mapping.d.ts +32 -0
  113. package/dist/esm/mapping/visual-mapping.d.ts.map +1 -0
  114. package/dist/{mapping → esm/mapping}/visual-mapping.js +8 -0
  115. package/dist/esm/mapping/visual-mapping.js.map +1 -0
  116. package/dist/esm/serializer/document-writer.d.ts +40 -0
  117. package/dist/esm/serializer/document-writer.d.ts.map +1 -0
  118. package/dist/{serializer → esm/serializer}/document-writer.js +5 -0
  119. package/dist/esm/serializer/document-writer.js.map +1 -0
  120. package/dist/esm/serializer/graphical-writer.d.ts +29 -0
  121. package/dist/esm/serializer/graphical-writer.d.ts.map +1 -0
  122. package/dist/{serializer → esm/serializer}/graphical-writer.js +213 -54
  123. package/dist/esm/serializer/graphical-writer.js.map +1 -0
  124. package/dist/esm/serializer/profile-values.d.ts +8 -0
  125. package/dist/esm/serializer/profile-values.d.ts.map +1 -0
  126. package/dist/esm/serializer/profile-values.js.map +1 -0
  127. package/dist/esm/serializer/relationship-writer.d.ts +41 -0
  128. package/dist/esm/serializer/relationship-writer.d.ts.map +1 -0
  129. package/dist/{serializer → esm/serializer}/relationship-writer.js +4 -1
  130. package/dist/esm/serializer/relationship-writer.js.map +1 -0
  131. package/dist/esm/serializer/rtf.d.ts +9 -0
  132. package/dist/esm/serializer/rtf.d.ts.map +1 -0
  133. package/dist/{serializer → esm/serializer}/rtf.js +14 -0
  134. package/dist/esm/serializer/rtf.js.map +1 -0
  135. package/dist/esm/serializer/semantic-writer.d.ts +51 -0
  136. package/dist/esm/serializer/semantic-writer.d.ts.map +1 -0
  137. package/dist/{serializer → esm/serializer}/semantic-writer.js +24 -0
  138. package/dist/esm/serializer/semantic-writer.js.map +1 -0
  139. package/dist/esm/serializer/serialize-xma.d.ts +29 -0
  140. package/dist/esm/serializer/serialize-xma.d.ts.map +1 -0
  141. package/dist/{serializer → esm/serializer}/serialize-xma.js +40 -1
  142. package/dist/esm/serializer/serialize-xma.js.map +1 -0
  143. package/dist/esm/serializer/view-writer.d.ts +33 -0
  144. package/dist/esm/serializer/view-writer.d.ts.map +1 -0
  145. package/dist/esm/serializer/view-writer.js +236 -0
  146. package/dist/esm/serializer/view-writer.js.map +1 -0
  147. package/package.json +20 -9
  148. package/dist/diagnostics/diagnostics.d.ts.map +0 -1
  149. package/dist/diagnostics/diagnostics.js.map +0 -1
  150. package/dist/diagnostics/errors.d.ts.map +0 -1
  151. package/dist/diagnostics/errors.js.map +0 -1
  152. package/dist/geometry/bendpoints.d.ts.map +0 -1
  153. package/dist/geometry/bendpoints.js.map +0 -1
  154. package/dist/geometry/geometry.d.ts +0 -48
  155. package/dist/geometry/geometry.d.ts.map +0 -1
  156. package/dist/geometry/geometry.js.map +0 -1
  157. package/dist/index.d.ts.map +0 -1
  158. package/dist/index.js.map +0 -1
  159. package/dist/infrastructure/id-allocator.d.ts.map +0 -1
  160. package/dist/infrastructure/id-allocator.js.map +0 -1
  161. package/dist/infrastructure/xml-writer.d.ts.map +0 -1
  162. package/dist/infrastructure/xml-writer.js.map +0 -1
  163. package/dist/mapping/element-mapping.d.ts.map +0 -1
  164. package/dist/mapping/element-mapping.js.map +0 -1
  165. package/dist/mapping/generic-relationship-mapping.d.ts.map +0 -1
  166. package/dist/mapping/generic-relationship-mapping.js.map +0 -1
  167. package/dist/mapping/relationship-mapping.d.ts.map +0 -1
  168. package/dist/mapping/relationship-mapping.js.map +0 -1
  169. package/dist/mapping/scheme-mapping.d.ts.map +0 -1
  170. package/dist/mapping/scheme-mapping.js.map +0 -1
  171. package/dist/mapping/visual-mapping.d.ts.map +0 -1
  172. package/dist/mapping/visual-mapping.js.map +0 -1
  173. package/dist/serializer/document-writer.d.ts.map +0 -1
  174. package/dist/serializer/document-writer.js.map +0 -1
  175. package/dist/serializer/graphical-writer.d.ts.map +0 -1
  176. package/dist/serializer/graphical-writer.js.map +0 -1
  177. package/dist/serializer/profile-values.d.ts.map +0 -1
  178. package/dist/serializer/profile-values.js.map +0 -1
  179. package/dist/serializer/relationship-writer.d.ts.map +0 -1
  180. package/dist/serializer/relationship-writer.js.map +0 -1
  181. package/dist/serializer/rtf.d.ts.map +0 -1
  182. package/dist/serializer/rtf.js.map +0 -1
  183. package/dist/serializer/semantic-writer.d.ts.map +0 -1
  184. package/dist/serializer/semantic-writer.js.map +0 -1
  185. package/dist/serializer/serialize-xma.d.ts.map +0 -1
  186. package/dist/serializer/serialize-xma.js.map +0 -1
  187. package/dist/serializer/view-writer.d.ts.map +0 -1
  188. package/dist/serializer/view-writer.js +0 -145
  189. package/dist/serializer/view-writer.js.map +0 -1
  190. /package/dist/{diagnostics → cjs/diagnostics}/diagnostics.d.ts +0 -0
  191. /package/dist/{diagnostics → cjs/diagnostics}/errors.d.ts +0 -0
  192. /package/dist/{geometry → cjs/geometry}/bendpoints.d.ts +0 -0
  193. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  194. /package/dist/{infrastructure → cjs/infrastructure}/id-allocator.d.ts +0 -0
  195. /package/dist/{infrastructure → cjs/infrastructure}/xml-writer.d.ts +0 -0
  196. /package/dist/{mapping → cjs/mapping}/element-mapping.d.ts +0 -0
  197. /package/dist/{mapping → cjs/mapping}/generic-relationship-mapping.d.ts +0 -0
  198. /package/dist/{mapping → cjs/mapping}/relationship-mapping.d.ts +0 -0
  199. /package/dist/{mapping → cjs/mapping}/scheme-mapping.d.ts +0 -0
  200. /package/dist/{serializer → cjs/serializer}/document-writer.d.ts +0 -0
  201. /package/dist/{serializer → cjs/serializer}/profile-values.d.ts +0 -0
  202. /package/dist/{serializer → cjs/serializer}/relationship-writer.d.ts +0 -0
  203. /package/dist/{serializer → cjs/serializer}/rtf.d.ts +0 -0
  204. /package/dist/{serializer → cjs/serializer}/semantic-writer.d.ts +0 -0
  205. /package/dist/{serializer → cjs/serializer}/serialize-xma.d.ts +0 -0
  206. /package/dist/{diagnostics → esm/diagnostics}/diagnostics.js +0 -0
  207. /package/dist/{diagnostics → esm/diagnostics}/errors.js +0 -0
  208. /package/dist/{index.js → esm/index.js} +0 -0
  209. /package/dist/{infrastructure → esm/infrastructure}/id-allocator.js +0 -0
  210. /package/dist/{mapping → esm/mapping}/element-mapping.js +0 -0
  211. /package/dist/{mapping → esm/mapping}/generic-relationship-mapping.js +0 -0
  212. /package/dist/{mapping → esm/mapping}/relationship-mapping.js +0 -0
  213. /package/dist/{mapping → esm/mapping}/scheme-mapping.js +0 -0
  214. /package/dist/{serializer → esm/serializer}/profile-values.js +0 -0
@@ -0,0 +1,521 @@
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 a `DiagramModelReference` ("insert view as reference") node —
250
+ * confirmed against both instances in the agile-manifesto fixture:
251
+ * `mm_graphicType="3"` (like Junction, not the usual `"5"`), but *unlike*
252
+ * Junction it does carry an icon decoration and a fixed fill/line color
253
+ * (`VIEW_REFERENCE_FILL_COLOR`/`DEFAULT_LINE_COLOR` — no `style` element on
254
+ * either source object, so this is the construct's fixed default, not a
255
+ * style-resolution result). `semanticObject` is the Ref id pointing at the
256
+ * *referenced view's own* `ArchiMate:AllView` — see `view-writer.ts`.
257
+ */
258
+ function buildViewReferenceNode(ids, nodeXmaId, semanticObject, bounds, nestedChildrenXml = []) {
259
+ return (0, xml_writer_js_1.element)('MM_Diagram:MM_Node', [
260
+ ['id', String(nodeXmaId)],
261
+ ['mm_graphicType', '3'],
262
+ ['mm_concept', 'AllView'],
263
+ ['mm_lineOpacity', String(visual_mapping_js_1.DEFAULT_OPACITY)],
264
+ ['mm_fillOpacity', String(visual_mapping_js_1.DEFAULT_OPACITY)],
265
+ ['mm_semanticObject', String(semanticObject)],
266
+ ], [
267
+ (0, xml_writer_js_1.element)('MM_Diagram:MM_Graphics', [['name', 'mm_graphics'], ['id', String(ids.fresh())]], [
268
+ buildIconDecoration(ids.fresh()),
269
+ buildLabelDecoration(ids.fresh(), visual_mapping_js_1.DEFAULT_FONT_NAME, visual_mapping_js_1.DEFAULT_FONT_SIZE),
270
+ ...nestedChildrenXml,
271
+ ]),
272
+ colorElement('mm_lineColor', visual_mapping_js_1.DEFAULT_LINE_COLOR, ids.fresh()),
273
+ (0, xml_writer_js_1.element)('MM_Diagram:MM_Colors', [['name', 'mm_fillColors'], ['id', String(ids.fresh())]], [colorElement(null, visual_mapping_js_1.VIEW_REFERENCE_FILL_COLOR, ids.fresh())]),
274
+ rectElement(ids.fresh(), bounds),
275
+ ]);
276
+ }
277
+ /**
278
+ * Builds the `GraphicalModule`'s `MM_Diagram` for one view: a Canvas node
279
+ * wrapping one `MM_Node` per drawable diagram object/group/note (nested
280
+ * diagram objects recursively nested inside their parent's `MM_Node`, via
281
+ * `buildNodeTree` — see `tests/fixtures/README.md`, "Nested diagram
282
+ * objects"), and one `MM_DirectedRel` per drawable connection.
283
+ *
284
+ * `mm_fromx`/`mm_fromy`/`mm_tox`/`mm_toy` (manual connector anchor
285
+ * metadata) are deliberately omitted — present on only a minority of
286
+ * connections in three of the four fixtures (5/93 in agile-manifesto, 1/3
287
+ * in relaciones, 15/346 in sabsa), never on all of them, which isn't
288
+ * enough evidence to derive a general formula for which connections get
289
+ * one or confirm they're mandatory for import (see project docs,
290
+ * "unresolved reverse-engineering limitations"). If a future fixture
291
+ * proves them required, add that behavior here, isolated from the rest of
292
+ * this function.
293
+ */
294
+ function buildGraphicalModule(model, view, ids, refIds, allocator, mappedElements, mappedRelationships, viewResult, diagnostics) {
295
+ const diagramObjectById = new Map(model.diagramObjects.map((o) => [o.id, o]));
296
+ const noteById = new Map(model.notes.map((n) => [n.id, n]));
297
+ const nodeIds = new id_allocator_js_1.XmaIdRegistry(allocator);
298
+ const canvasChildren = [];
299
+ /**
300
+ * Builds one diagram object's node, recursively building and nesting its
301
+ * children first (bottom-up) — confirmed structure: a child `MM_Node`
302
+ * nests as a sibling of its parent's icon/label decorations, inside the
303
+ * same `MM_Graphics`, up to 3 levels deep in the sabsa fixture. Applies
304
+ * equally to element-backed objects and Groups (both confirmed to nest
305
+ * children this way). Returns `null` for an object this pass can't draw
306
+ * (already diagnosed elsewhere).
307
+ */
308
+ function buildNodeTree(objId, ancestorIds = new Set()) {
309
+ const obj = diagramObjectById.get(objId);
310
+ if (!obj)
311
+ return null;
312
+ if (ancestorIds.has(objId)) {
313
+ diagnostics.error({
314
+ code: 'cyclic-diagram-object-nesting',
315
+ message: `Diagram object "${objId}" is its own descendant (a cyclic parent/child chain) and cannot be drawn.`,
316
+ entityId: objId,
317
+ entityType: 'ArchiDiagramObject',
318
+ });
319
+ return null;
320
+ }
321
+ const nextAncestorIds = new Set(ancestorIds).add(objId);
322
+ const nestedChildrenXml = obj.childrenIds
323
+ .map((childId) => buildNodeTree(childId, nextAncestorIds))
324
+ .filter((xml) => xml !== null);
325
+ if (viewResult.validElementNodeObjectIds.has(objId) && obj.archimateElementId) {
326
+ 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}")`);
327
+ 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)`);
328
+ const nodeXmaId = nodeIds.idFor(obj.id);
329
+ const bounds = resolveDrawableBounds(obj.bounds, diagnostics, obj.id, 'ArchiDiagramObject');
330
+ if (!bounds)
331
+ return null;
332
+ if (JUNCTION_XMA_TYPES.has(mapping.xmaType)) {
333
+ reportUnsupportedJunctionStyle(obj, diagnostics);
334
+ return buildJunctionNode(ids, nodeXmaId, mapping.xmaType, refId, bounds);
335
+ }
336
+ const visuals = resolveNodeVisuals(obj.style, visual_mapping_js_1.CATEGORY_FILL_COLOR[mapping.category], diagnostics, obj.id, 'ArchiDiagramObject');
337
+ return buildStyledNode(ids, nodeXmaId, mapping.xmaType, refId, mapping.hasIcon, visuals, bounds, null, [], nestedChildrenXml);
338
+ }
339
+ if (viewResult.validGroupObjectIds.has(objId)) {
340
+ 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)`);
341
+ const visuals = resolveNodeVisuals(obj.style, visual_mapping_js_1.GROUP_FILL_COLOR, diagnostics, obj.id, 'ArchiDiagramObject');
342
+ const nodeXmaId = nodeIds.idFor(obj.id);
343
+ const bounds = resolveDrawableBounds(obj.bounds, diagnostics, obj.id, 'ArchiDiagramObject');
344
+ if (!bounds)
345
+ return null;
346
+ return buildStyledNode(ids, nodeXmaId, 'ViewGraphic', groupSemanticId, false, visuals, bounds, 'group', [['mm_frameStrategy', '12']], nestedChildrenXml);
347
+ }
348
+ if (viewResult.validViewReferenceObjectIds.has(objId)) {
349
+ if (obj.referencedModelId === null) {
350
+ throw new Error(`Internal invariant violation: diagram object "${obj.id}" is in validViewReferenceObjectIds but has no referencedModelId.`);
351
+ }
352
+ const refId = (0, assert_js_1.assertDefined)(refIds.get(obj.referencedModelId), `no ref id registered for referenced view "${obj.referencedModelId}" (view-writer should have registered it before graphical-writer runs)`);
353
+ const nodeXmaId = nodeIds.idFor(obj.id);
354
+ const bounds = resolveDrawableBounds(obj.bounds, diagnostics, obj.id, 'ArchiDiagramObject');
355
+ if (!bounds)
356
+ return null;
357
+ return buildViewReferenceNode(ids, nodeXmaId, refId, bounds, nestedChildrenXml);
358
+ }
359
+ return null;
360
+ }
361
+ for (const objId of view.diagramObjectIds) {
362
+ const nodeXml = buildNodeTree(objId);
363
+ if (nodeXml)
364
+ canvasChildren.push(nodeXml);
365
+ }
366
+ for (const noteId of view.noteIds) {
367
+ if (!viewResult.validNoteIds.has(noteId))
368
+ continue;
369
+ const note = noteById.get(noteId);
370
+ if (!note)
371
+ continue;
372
+ const bounds = resolveDrawableBounds(note.bounds, diagnostics, note.id, 'ArchiNote');
373
+ if (!bounds)
374
+ continue;
375
+ 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)`);
376
+ const visuals = resolveNodeVisuals(note.style, visual_mapping_js_1.NOTE_FILL_COLOR, diagnostics, note.id, 'ArchiNote');
377
+ const nodeXmaId = nodeIds.idFor(note.id);
378
+ canvasChildren.push(buildStyledNode(ids, nodeXmaId, 'ViewGraphic', noteSemanticId, false, visuals, bounds, null));
379
+ }
380
+ const connectionById = new Map(model.diagramConnections.map((c) => [c.id, c]));
381
+ for (const connId of view.diagramConnectionIds) {
382
+ const connection = connectionById.get(connId);
383
+ if (!connection || connection.viewId !== view.id)
384
+ continue;
385
+ const relId = connection.archimateRelationshipId;
386
+ let xmaType;
387
+ let semanticObjectId;
388
+ if (relId) {
389
+ const mapping = mappedRelationships.get(relId);
390
+ if (!mapping)
391
+ continue; // already diagnosed by relationship-writer
392
+ xmaType = mapping.xmaType;
393
+ semanticObjectId = (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)`);
394
+ }
395
+ else {
396
+ // A purely-visual connection (no underlying ArchiMate relationship) —
397
+ // view-writer already resolved this to a ViewEdge if both endpoints
398
+ // had a semantic id to reference; otherwise it already diagnosed the
399
+ // unsupported-connection-no-relationship error, so there's nothing to
400
+ // draw here.
401
+ const viewEdgeSemanticId = viewResult.viewEdgeSemanticIds.get(connection.id);
402
+ if (viewEdgeSemanticId === undefined)
403
+ continue;
404
+ xmaType = 'ViewEdge';
405
+ semanticObjectId = viewEdgeSemanticId;
406
+ }
407
+ const sourceNodeXmaId = nodeIds.get(connection.sourceId);
408
+ const targetNodeXmaId = nodeIds.get(connection.targetId);
409
+ if (sourceNodeXmaId === undefined || targetNodeXmaId === undefined) {
410
+ diagnostics.error({
411
+ code: 'unsupported-connection-invalid-endpoint',
412
+ message: `Connection "${connection.id}" has a source/target diagram object that was not drawable.`,
413
+ entityId: connection.id,
414
+ entityType: 'ArchiDiagramConnection',
415
+ });
416
+ continue;
417
+ }
418
+ const sourceObj = diagramObjectById.get(connection.sourceId);
419
+ const targetObj = diagramObjectById.get(connection.targetId);
420
+ // A connection between a diagram object and its own visual parent is
421
+ // already conveyed by the nesting itself — confirmed against both
422
+ // fixtures: e.g. agile-manifesto's two BusinessProcessBusinessFunction-
423
+ // Composition relations exist in the semantic Relations collection (so
424
+ // they're still emitted below via relationship-writer/view-writer) but
425
+ // have zero MM_DirectedRel graphics; sabsa's ElementGroupingComposition
426
+ // (Grouping as target, not a nesting pair) is drawn normally while its
427
+ // GroupingElementComposition (Grouping as source, always a nesting pair
428
+ // in both fixtures) never is. Applies regardless of relationship type —
429
+ // nesting evidence isn't type-specific, only "is this endpoint the
430
+ // other's visual parent" is.
431
+ if (sourceObj && targetObj && (sourceObj.parentId === targetObj.id || targetObj.parentId === sourceObj.id)) {
432
+ continue;
433
+ }
434
+ const points = [];
435
+ if (connection.bendpoints.length > 0 && sourceObj && targetObj && (0, geometry_js_1.hasCompleteBounds)(sourceObj.bounds) && (0, geometry_js_1.hasCompleteBounds)(targetObj.bounds)) {
436
+ const sourceRect = (0, geometry_js_1.toRect)(sourceObj.bounds);
437
+ const targetRect = (0, geometry_js_1.toRect)(targetObj.bounds);
438
+ for (const bp of connection.bendpoints) {
439
+ const resolution = (0, bendpoints_js_1.resolveBendpoint)(bp, sourceRect, targetRect);
440
+ if (!resolution) {
441
+ diagnostics.error({
442
+ code: 'unresolvable-bendpoint',
443
+ message: `Connection "${connection.id}" has a bendpoint with neither source- nor target-relative offsets set.`,
444
+ entityId: connection.id,
445
+ entityType: 'ArchiDiagramConnection',
446
+ });
447
+ continue;
448
+ }
449
+ if (resolution.mismatch) {
450
+ // Not a data-loss case: resolution.point (the source-relative form,
451
+ // used below regardless) is a perfectly usable point — this is a
452
+ // small precision disagreement in Archi's own stored offsets, not a
453
+ // construct XMA has no representation for. Warning, not an error
454
+ // that discards the whole document.
455
+ diagnostics.warning({
456
+ code: 'bendpoint-endpoint-mismatch',
457
+ 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.`,
458
+ entityId: connection.id,
459
+ entityType: 'ArchiDiagramConnection',
460
+ });
461
+ }
462
+ const scaled = (0, geometry_js_1.scalePoint)(resolution.point);
463
+ 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)]]));
464
+ }
465
+ }
466
+ const directedRelChildren = [];
467
+ if (points.length > 0) {
468
+ directedRelChildren.push((0, xml_writer_js_1.element)('MM_Diagram:MM_MultiLine', [['name', 'mm_line'], ['id', String(ids.fresh())]], points));
469
+ }
470
+ // Confirmed against the sabsa fixture's one explicit connection
471
+ // lineColor override (#ff0000): the DirectedRel's MM_Color carries the
472
+ // parsed RGB, in the exact same structural slot as a node's line color.
473
+ let connectionLineColor = null;
474
+ if (connection.style?.lineColor) {
475
+ const parsed = (0, visual_mapping_js_1.parseArchiHexColor)(connection.style.lineColor);
476
+ if (parsed) {
477
+ connectionLineColor = parsed;
478
+ }
479
+ else {
480
+ diagnostics.warning({
481
+ code: 'unsupported-style-connection-line-color',
482
+ message: `Connection line color "${connection.style.lineColor}" is not a recognized hex color and was not applied.`,
483
+ entityId: connection.id,
484
+ entityType: 'ArchiDiagramConnection',
485
+ });
486
+ }
487
+ }
488
+ directedRelChildren.push((0, xml_writer_js_1.element)('MM_Diagram:MM_Graphics', [['name', 'mm_graphics'], ['id', String(ids.fresh())]], [
489
+ buildLabelDecoration(ids.fresh(), visual_mapping_js_1.DEFAULT_FONT_NAME, visual_mapping_js_1.DEFAULT_FONT_SIZE),
490
+ ]));
491
+ directedRelChildren.push(colorElement('mm_lineColor', connectionLineColor, ids.fresh()));
492
+ canvasChildren.push((0, xml_writer_js_1.element)('MM_Diagram:MM_DirectedRel', [
493
+ ['id', String(ids.fresh())],
494
+ ['mm_from', String(sourceNodeXmaId)],
495
+ ['mm_to', String(targetNodeXmaId)],
496
+ ['mm_graphicType', '7'],
497
+ ['mm_concept', xmaType],
498
+ ['mm_semanticObject', String(semanticObjectId)],
499
+ ], directedRelChildren));
500
+ }
501
+ const canvasSemanticId = ids.idFor(view.id);
502
+ const canvasNode = (0, xml_writer_js_1.element)('MM_Diagram:MM_Node', [
503
+ ['name', 'mm_canvas'],
504
+ ['id', String(ids.fresh())],
505
+ ['mm_graphicType', '5'],
506
+ ['mm_concept', 'Canvas'],
507
+ ['mm_semanticObject', String(canvasSemanticId)],
508
+ ], [
509
+ (0, xml_writer_js_1.element)('MM_Diagram:MM_Graphics', [['name', 'mm_graphics'], ['id', String(ids.fresh())]], canvasChildren),
510
+ (0, xml_writer_js_1.element)('MM_Rect', [
511
+ ['name', 'mm_rect'],
512
+ ['x', '0'],
513
+ ['y', '0'],
514
+ ['w', String(visual_mapping_js_1.CANVAS_EXTENT)],
515
+ ['h', String(visual_mapping_js_1.CANVAS_EXTENT)],
516
+ ]),
517
+ ]);
518
+ const diagramXml = (0, xml_writer_js_1.element)('MM_Diagram:MM_Diagram', [['name', 'root'], ['id', String(ids.fresh())]], [canvasNode]);
519
+ return { diagramXml };
520
+ }
521
+ //# 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"}