@cda/adapter-xma 0.4.3 → 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.
Files changed (213) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +28 -5
  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/cjs/mapping/visual-mapping.d.ts.map +1 -0
  42. package/dist/cjs/mapping/visual-mapping.js +43 -0
  43. package/dist/cjs/mapping/visual-mapping.js.map +1 -0
  44. package/dist/cjs/package.json +3 -0
  45. package/dist/cjs/serializer/document-writer.d.ts.map +1 -0
  46. package/dist/cjs/serializer/document-writer.js +138 -0
  47. package/dist/cjs/serializer/document-writer.js.map +1 -0
  48. package/dist/cjs/serializer/graphical-writer.d.ts.map +1 -0
  49. package/dist/cjs/serializer/graphical-writer.js +464 -0
  50. package/dist/cjs/serializer/graphical-writer.js.map +1 -0
  51. package/dist/cjs/serializer/profile-values.d.ts.map +1 -0
  52. package/dist/cjs/serializer/profile-values.js +28 -0
  53. package/dist/cjs/serializer/profile-values.js.map +1 -0
  54. package/dist/cjs/serializer/relationship-writer.d.ts.map +1 -0
  55. package/dist/cjs/serializer/relationship-writer.js +109 -0
  56. package/dist/cjs/serializer/relationship-writer.js.map +1 -0
  57. package/dist/cjs/serializer/rtf.d.ts.map +1 -0
  58. package/dist/cjs/serializer/rtf.js +67 -0
  59. package/dist/cjs/serializer/rtf.js.map +1 -0
  60. package/dist/cjs/serializer/semantic-writer.d.ts.map +1 -0
  61. package/dist/cjs/serializer/semantic-writer.js +170 -0
  62. package/dist/cjs/serializer/semantic-writer.js.map +1 -0
  63. package/dist/cjs/serializer/serialize-xma.d.ts.map +1 -0
  64. package/dist/cjs/serializer/serialize-xma.js +113 -0
  65. package/dist/cjs/serializer/serialize-xma.js.map +1 -0
  66. package/dist/cjs/serializer/view-writer.d.ts.map +1 -0
  67. package/dist/cjs/serializer/view-writer.js +148 -0
  68. package/dist/cjs/serializer/view-writer.js.map +1 -0
  69. package/dist/esm/diagnostics/diagnostics.d.ts +20 -0
  70. package/dist/esm/diagnostics/diagnostics.d.ts.map +1 -0
  71. package/dist/esm/diagnostics/diagnostics.js.map +1 -0
  72. package/dist/esm/diagnostics/errors.d.ts +13 -0
  73. package/dist/esm/diagnostics/errors.d.ts.map +1 -0
  74. package/dist/esm/diagnostics/errors.js.map +1 -0
  75. package/dist/esm/geometry/bendpoints.d.ts +33 -0
  76. package/dist/esm/geometry/bendpoints.d.ts.map +1 -0
  77. package/dist/{geometry → esm/geometry}/bendpoints.js +6 -2
  78. package/dist/esm/geometry/bendpoints.js.map +1 -0
  79. package/dist/esm/geometry/geometry.d.ts +75 -0
  80. package/dist/esm/geometry/geometry.d.ts.map +1 -0
  81. package/dist/{geometry → esm/geometry}/geometry.js +25 -6
  82. package/dist/esm/geometry/geometry.js.map +1 -0
  83. package/dist/esm/index.d.ts +5 -0
  84. package/dist/esm/index.d.ts.map +1 -0
  85. package/dist/esm/index.js.map +1 -0
  86. package/dist/esm/infrastructure/assert.d.ts +10 -0
  87. package/dist/esm/infrastructure/assert.d.ts.map +1 -0
  88. package/dist/esm/infrastructure/assert.js +15 -0
  89. package/dist/esm/infrastructure/assert.js.map +1 -0
  90. package/dist/esm/infrastructure/id-allocator.d.ts +34 -0
  91. package/dist/esm/infrastructure/id-allocator.d.ts.map +1 -0
  92. package/dist/esm/infrastructure/id-allocator.js.map +1 -0
  93. package/dist/esm/infrastructure/xml-writer.d.ts +20 -0
  94. package/dist/esm/infrastructure/xml-writer.d.ts.map +1 -0
  95. package/dist/{infrastructure → esm/infrastructure}/xml-writer.js +37 -2
  96. package/dist/esm/infrastructure/xml-writer.js.map +1 -0
  97. package/dist/esm/mapping/element-mapping.d.ts +31 -0
  98. package/dist/esm/mapping/element-mapping.d.ts.map +1 -0
  99. package/dist/esm/mapping/element-mapping.js.map +1 -0
  100. package/dist/esm/mapping/generic-relationship-mapping.d.ts +18 -0
  101. package/dist/esm/mapping/generic-relationship-mapping.d.ts.map +1 -0
  102. package/dist/esm/mapping/generic-relationship-mapping.js.map +1 -0
  103. package/dist/esm/mapping/relationship-mapping.d.ts +47 -0
  104. package/dist/esm/mapping/relationship-mapping.d.ts.map +1 -0
  105. package/dist/esm/mapping/relationship-mapping.js.map +1 -0
  106. package/dist/esm/mapping/scheme-mapping.d.ts +38 -0
  107. package/dist/esm/mapping/scheme-mapping.d.ts.map +1 -0
  108. package/dist/esm/mapping/scheme-mapping.js.map +1 -0
  109. package/dist/esm/mapping/visual-mapping.d.ts +24 -0
  110. package/dist/esm/mapping/visual-mapping.d.ts.map +1 -0
  111. package/dist/esm/mapping/visual-mapping.js.map +1 -0
  112. package/dist/esm/serializer/document-writer.d.ts +40 -0
  113. package/dist/esm/serializer/document-writer.d.ts.map +1 -0
  114. package/dist/esm/serializer/document-writer.js.map +1 -0
  115. package/dist/esm/serializer/graphical-writer.d.ts +27 -0
  116. package/dist/esm/serializer/graphical-writer.d.ts.map +1 -0
  117. package/dist/{serializer → esm/serializer}/graphical-writer.js +142 -40
  118. package/dist/esm/serializer/graphical-writer.js.map +1 -0
  119. package/dist/esm/serializer/profile-values.d.ts +8 -0
  120. package/dist/esm/serializer/profile-values.d.ts.map +1 -0
  121. package/dist/esm/serializer/profile-values.js.map +1 -0
  122. package/dist/esm/serializer/relationship-writer.d.ts +41 -0
  123. package/dist/esm/serializer/relationship-writer.d.ts.map +1 -0
  124. package/dist/{serializer → esm/serializer}/relationship-writer.js +4 -1
  125. package/dist/esm/serializer/relationship-writer.js.map +1 -0
  126. package/dist/esm/serializer/rtf.d.ts +9 -0
  127. package/dist/esm/serializer/rtf.d.ts.map +1 -0
  128. package/dist/{serializer → esm/serializer}/rtf.js +14 -0
  129. package/dist/esm/serializer/rtf.js.map +1 -0
  130. package/dist/esm/serializer/semantic-writer.d.ts +51 -0
  131. package/dist/esm/serializer/semantic-writer.d.ts.map +1 -0
  132. package/dist/{serializer → esm/serializer}/semantic-writer.js +24 -0
  133. package/dist/esm/serializer/semantic-writer.js.map +1 -0
  134. package/dist/esm/serializer/serialize-xma.d.ts +29 -0
  135. package/dist/esm/serializer/serialize-xma.d.ts.map +1 -0
  136. package/dist/{serializer → esm/serializer}/serialize-xma.js +40 -1
  137. package/dist/esm/serializer/serialize-xma.js.map +1 -0
  138. package/dist/esm/serializer/view-writer.d.ts +27 -0
  139. package/dist/esm/serializer/view-writer.d.ts.map +1 -0
  140. package/dist/esm/serializer/view-writer.js.map +1 -0
  141. package/package.json +19 -8
  142. package/dist/diagnostics/diagnostics.d.ts.map +0 -1
  143. package/dist/diagnostics/diagnostics.js.map +0 -1
  144. package/dist/diagnostics/errors.d.ts.map +0 -1
  145. package/dist/diagnostics/errors.js.map +0 -1
  146. package/dist/geometry/bendpoints.d.ts.map +0 -1
  147. package/dist/geometry/bendpoints.js.map +0 -1
  148. package/dist/geometry/geometry.d.ts +0 -48
  149. package/dist/geometry/geometry.d.ts.map +0 -1
  150. package/dist/geometry/geometry.js.map +0 -1
  151. package/dist/index.d.ts.map +0 -1
  152. package/dist/index.js.map +0 -1
  153. package/dist/infrastructure/id-allocator.d.ts.map +0 -1
  154. package/dist/infrastructure/id-allocator.js.map +0 -1
  155. package/dist/infrastructure/xml-writer.d.ts.map +0 -1
  156. package/dist/infrastructure/xml-writer.js.map +0 -1
  157. package/dist/mapping/element-mapping.d.ts.map +0 -1
  158. package/dist/mapping/element-mapping.js.map +0 -1
  159. package/dist/mapping/generic-relationship-mapping.d.ts.map +0 -1
  160. package/dist/mapping/generic-relationship-mapping.js.map +0 -1
  161. package/dist/mapping/relationship-mapping.d.ts.map +0 -1
  162. package/dist/mapping/relationship-mapping.js.map +0 -1
  163. package/dist/mapping/scheme-mapping.d.ts.map +0 -1
  164. package/dist/mapping/scheme-mapping.js.map +0 -1
  165. package/dist/mapping/visual-mapping.d.ts.map +0 -1
  166. package/dist/mapping/visual-mapping.js.map +0 -1
  167. package/dist/serializer/document-writer.d.ts.map +0 -1
  168. package/dist/serializer/document-writer.js.map +0 -1
  169. package/dist/serializer/graphical-writer.d.ts.map +0 -1
  170. package/dist/serializer/graphical-writer.js.map +0 -1
  171. package/dist/serializer/profile-values.d.ts.map +0 -1
  172. package/dist/serializer/profile-values.js.map +0 -1
  173. package/dist/serializer/relationship-writer.d.ts.map +0 -1
  174. package/dist/serializer/relationship-writer.js.map +0 -1
  175. package/dist/serializer/rtf.d.ts.map +0 -1
  176. package/dist/serializer/rtf.js.map +0 -1
  177. package/dist/serializer/semantic-writer.d.ts.map +0 -1
  178. package/dist/serializer/semantic-writer.js.map +0 -1
  179. package/dist/serializer/serialize-xma.d.ts.map +0 -1
  180. package/dist/serializer/serialize-xma.js.map +0 -1
  181. package/dist/serializer/view-writer.d.ts.map +0 -1
  182. package/dist/serializer/view-writer.js.map +0 -1
  183. /package/dist/{diagnostics → cjs/diagnostics}/diagnostics.d.ts +0 -0
  184. /package/dist/{diagnostics → cjs/diagnostics}/errors.d.ts +0 -0
  185. /package/dist/{geometry → cjs/geometry}/bendpoints.d.ts +0 -0
  186. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  187. /package/dist/{infrastructure → cjs/infrastructure}/id-allocator.d.ts +0 -0
  188. /package/dist/{infrastructure → cjs/infrastructure}/xml-writer.d.ts +0 -0
  189. /package/dist/{mapping → cjs/mapping}/element-mapping.d.ts +0 -0
  190. /package/dist/{mapping → cjs/mapping}/generic-relationship-mapping.d.ts +0 -0
  191. /package/dist/{mapping → cjs/mapping}/relationship-mapping.d.ts +0 -0
  192. /package/dist/{mapping → cjs/mapping}/scheme-mapping.d.ts +0 -0
  193. /package/dist/{mapping → cjs/mapping}/visual-mapping.d.ts +0 -0
  194. /package/dist/{serializer → cjs/serializer}/document-writer.d.ts +0 -0
  195. /package/dist/{serializer → cjs/serializer}/graphical-writer.d.ts +0 -0
  196. /package/dist/{serializer → cjs/serializer}/profile-values.d.ts +0 -0
  197. /package/dist/{serializer → cjs/serializer}/relationship-writer.d.ts +0 -0
  198. /package/dist/{serializer → cjs/serializer}/rtf.d.ts +0 -0
  199. /package/dist/{serializer → cjs/serializer}/semantic-writer.d.ts +0 -0
  200. /package/dist/{serializer → cjs/serializer}/serialize-xma.d.ts +0 -0
  201. /package/dist/{serializer → cjs/serializer}/view-writer.d.ts +0 -0
  202. /package/dist/{diagnostics → esm/diagnostics}/diagnostics.js +0 -0
  203. /package/dist/{diagnostics → esm/diagnostics}/errors.js +0 -0
  204. /package/dist/{index.js → esm/index.js} +0 -0
  205. /package/dist/{infrastructure → esm/infrastructure}/id-allocator.js +0 -0
  206. /package/dist/{mapping → esm/mapping}/element-mapping.js +0 -0
  207. /package/dist/{mapping → esm/mapping}/generic-relationship-mapping.js +0 -0
  208. /package/dist/{mapping → esm/mapping}/relationship-mapping.js +0 -0
  209. /package/dist/{mapping → esm/mapping}/scheme-mapping.js +0 -0
  210. /package/dist/{mapping → esm/mapping}/visual-mapping.js +0 -0
  211. /package/dist/{serializer → esm/serializer}/document-writer.js +0 -0
  212. /package/dist/{serializer → esm/serializer}/profile-values.js +0 -0
  213. /package/dist/{serializer → esm/serializer}/view-writer.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationship-writer.js","sourceRoot":"","sources":["../../../src/serializer/relationship-writer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtf.d.ts","sourceRoot":"","sources":["../../../src/serializer/rtf.ts"],"names":[],"mappings":"AAiDA;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toRtfDocument = toRtfDocument;
4
+ /**
5
+ * Deterministic, dependency-free RTF encoding for Archi `documentation`
6
+ * text, used as the `doc` profile value's content.
7
+ *
8
+ * RTF control characters (`\\`, `{`, `}`) are escaped, line breaks become
9
+ * `\par`, and every non-ASCII / control code unit is escaped as a signed
10
+ * `\uN?` Unicode destination (RTF 1.5+, one fallback byte per `\uc1`) rather
11
+ * than interpolated raw — this keeps the output valid RTF regardless of
12
+ * source locale (Spanish, accented Latin text, etc.) without guessing a
13
+ * target ANSI code page.
14
+ */
15
+ /**
16
+ * Iterates by UTF-16 code unit (not by Unicode code point) deliberately: a
17
+ * character outside the Basic Multilingual Plane (e.g. an emoji) is stored
18
+ * in JS strings as a surrogate pair, and this naturally emits it as two
19
+ * consecutive `\uN?` escapes, one per surrogate half — the standard,
20
+ * widely-implemented RTF technique for supplementary-plane characters
21
+ * (RTF's own `\u` model is itself UTF-16-code-unit-based). This is not
22
+ * splitting one character across two escapes by accident; recombining a
23
+ * code point first and emitting one escape would be the non-standard
24
+ * choice. No fixture contains an astral character in documentation text to
25
+ * confirm this against directly, but the signed-16-bit conversion below is
26
+ * applied uniformly and correctly regardless of whether a given code unit
27
+ * happens to be a surrogate half.
28
+ */
29
+ function escapeRtfBody(text) {
30
+ const normalized = text.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
31
+ const out = [];
32
+ for (let i = 0; i < normalized.length; i += 1) {
33
+ const ch = normalized[i];
34
+ const code = normalized.charCodeAt(i);
35
+ if (ch === '\n') {
36
+ out.push('\\par\n');
37
+ }
38
+ else if (ch === '\\') {
39
+ out.push('\\\\');
40
+ }
41
+ else if (ch === '{') {
42
+ out.push('\\{');
43
+ }
44
+ else if (ch === '}') {
45
+ out.push('\\}');
46
+ }
47
+ else if (code >= 0x20 && code <= 0x7e) {
48
+ out.push(ch);
49
+ }
50
+ else {
51
+ const signed = code > 0x7fff ? code - 0x10000 : code;
52
+ out.push(`\\u${signed}?`);
53
+ }
54
+ }
55
+ return out.join('');
56
+ }
57
+ /**
58
+ * Wraps escaped documentation text into an RTF document, matching the exact
59
+ * minimal shape confirmed by both reference fixtures: `{\rtf1 <text>}`, with
60
+ * no additional header control words — the reference tool emits nothing
61
+ * beyond that, and RTF 1.5+'s `\uN` Unicode escapes are valid on their own
62
+ * (the per-`\u` fallback byte count defaults to 1 with no `\ucN` present).
63
+ */
64
+ function toRtfDocument(text) {
65
+ return `{\\rtf1 ${escapeRtfBody(text)}}`;
66
+ }
67
+ //# sourceMappingURL=rtf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtf.js","sourceRoot":"","sources":["../../../src/serializer/rtf.ts"],"names":[],"mappings":";;AAwDA,sCAEC;AA1DD;;;;;;;;;;GAUG;AACH;;;;;;;;;;;;;GAaG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACpE,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,CAAC;aAAM,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACxC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YACrD,GAAG,CAAC,IAAI,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,IAAY;IACxC,OAAO,WAAW,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3C,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-writer.d.ts","sourceRoot":"","sources":["../../../src/serializer/semantic-writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAkD,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGzH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,uHAAuH;IACvH,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC,CAAC;IACnE,8FAA8F;IAC9F,SAAS,EAAE,UAAU,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,sHAAsH;IACtH,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACjD;;;;;;OAMG;IACH,iBAAiB,EAAE,UAAU,EAAE,CAAC;CACjC;AAgGD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,aAAa,EAClB,WAAW,EAAE,mBAAmB,EAChC,QAAQ,EAAE,MAAM,GACf,mBAAmB,CA6CrB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,GAAG,IAAI,EAAE,GAAG,EAAE,aAAa,GAAG,UAAU,EAAE,CAgBzH"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildSemanticElements = buildSemanticElements;
4
+ exports.renderSchemeChildren = renderSchemeChildren;
5
+ const xml_writer_js_1 = require("../infrastructure/xml-writer.js");
6
+ const element_mapping_js_1 = require("../mapping/element-mapping.js");
7
+ const profile_values_js_1 = require("./profile-values.js");
8
+ /**
9
+ * `ArchiElement.type` is always the literal string `"Junction"` for both
10
+ * AND and OR junctions — the And/Or distinction lives in the separate
11
+ * `junctionType` field. Confirmed directly in both fixtures: XMA has two
12
+ * distinct element tags for this, `Junction` (AND) and `OrJunction` (OR),
13
+ * each living in the root `Connectors` container. This resolves the XMA tag
14
+ * for a Junction element; unlike every other type, it can't be a static
15
+ * `ELEMENT_MAPPINGS` table entry keyed by `archiType` alone.
16
+ */
17
+ function junctionXmaType(el) {
18
+ return el.junctionType === 'Or' ? 'OrJunction' : 'Junction';
19
+ }
20
+ /**
21
+ * `archi-semantic-core` already defaults an unrecognized native junction
22
+ * `type` attribute to `'And'` rather than guessing (see its `junctionType`
23
+ * doc comment) — but it also preserves the original value verbatim in
24
+ * `rawJunctionType` specifically so a downstream consumer can tell "really
25
+ * absent/empty, the documented default" apart from "an unrecognized value
26
+ * that got silently defaulted". This reports the latter as a warning
27
+ * instead of drawing an `And` Junction with no indication anything was
28
+ * guessed.
29
+ */
30
+ function reportUnrecognizedJunctionType(el, diagnostics) {
31
+ if (el.junctionType !== 'And')
32
+ return;
33
+ const raw = el.rawJunctionType ?? '';
34
+ if (raw === '' || raw === 'or')
35
+ return;
36
+ diagnostics.warning({
37
+ code: 'unrecognized-junction-type',
38
+ message: `Junction "${el.name ?? el.id}" has an unrecognized native type value ("${raw}") — treated as AND (Archi's documented default for an unrecognized value), not necessarily what was intended.`,
39
+ entityId: el.id,
40
+ entityType: 'ArchiElement',
41
+ });
42
+ }
43
+ /**
44
+ * A `Junction`'s own `category`/`hasIcon` are never read: `graphical-writer`
45
+ * draws Junctions via a dedicated, colorless node form (confirmed in both
46
+ * fixtures — no `MM_Color`/`MM_Colors`, `mm_graphicType="3"` instead of the
47
+ * usual `"5"`) before ever consulting `CATEGORY_FILL_COLOR`. `category`
48
+ * still needs *some* valid value to satisfy `ElementMappingEntry`'s type;
49
+ * `'Grouping'` is used as an inert placeholder, not a claim about Junction's
50
+ * real presentation category.
51
+ */
52
+ function junctionMappingEntry(el) {
53
+ const xmaType = junctionXmaType(el);
54
+ return {
55
+ archiType: 'Junction',
56
+ xmaType,
57
+ scheme: 'root',
58
+ collectionTag: 'Connectors',
59
+ collectionName: 'connectors',
60
+ category: 'Grouping',
61
+ hasIcon: false,
62
+ };
63
+ }
64
+ function getOrCreateScheme(schemeBuilds, tag) {
65
+ let build = schemeBuilds.get(tag);
66
+ if (!build) {
67
+ build = { tag, collections: new Map(), relations: [] };
68
+ schemeBuilds.set(tag, build);
69
+ }
70
+ return build;
71
+ }
72
+ function reportUnsupportedElement(element, diagnostics) {
73
+ diagnostics.error({
74
+ code: 'unsupported-element-type',
75
+ message: `Archi element type "${element.type}" has no confirmed XMA mapping and would be silently lost.`,
76
+ entityId: element.id,
77
+ entityType: 'ArchiElement',
78
+ });
79
+ }
80
+ function reportAncillaryLossWarnings(el, diagnostics) {
81
+ if (el.properties.length > 0) {
82
+ diagnostics.warning({
83
+ code: 'unsupported-properties',
84
+ message: `Element "${el.name ?? el.id}" has ${el.properties.length} propert${el.properties.length === 1 ? 'y' : 'ies'} not represented in XMA v0.1.`,
85
+ entityId: el.id,
86
+ entityType: 'ArchiElement',
87
+ });
88
+ }
89
+ if (el.profiles.length > 0) {
90
+ diagnostics.warning({
91
+ code: 'unsupported-profile',
92
+ message: `Element "${el.name ?? el.id}" references ${el.profiles.length} profile(s)/specialization(s) not represented in XMA v0.1.`,
93
+ entityId: el.id,
94
+ entityType: 'ArchiElement',
95
+ });
96
+ }
97
+ }
98
+ /**
99
+ * Builds the per-scheme element collections (`<ArchiMate:BusinessActors>`
100
+ * etc.) for every `ArchiElement` in the model, regardless of whether it
101
+ * appears in the (single supported) view — semantic elements are model-wide,
102
+ * not view-scoped.
103
+ */
104
+ function buildSemanticElements(model, ids, diagnostics, language) {
105
+ const schemeBuilds = new Map();
106
+ const mappedElements = new Map();
107
+ const rootConnectorsXml = [];
108
+ for (const el of model.elements) {
109
+ if (el.type === 'Junction') {
110
+ const mapping = junctionMappingEntry(el);
111
+ mappedElements.set(el.id, mapping);
112
+ reportAncillaryLossWarnings(el, diagnostics);
113
+ reportUnrecognizedJunctionType(el, diagnostics);
114
+ const xmaId = ids.idFor(el.id);
115
+ rootConnectorsXml.push((0, xml_writer_js_1.element)(`ArchiMate:${mapping.xmaType}`, [['id', String(xmaId)]], [
116
+ (0, profile_values_js_1.buildProfileValues)(language, el.name ?? '', el.documentation),
117
+ ]));
118
+ continue;
119
+ }
120
+ const mapping = (0, element_mapping_js_1.lookupElementMapping)(el.type);
121
+ if (!mapping) {
122
+ reportUnsupportedElement(el, diagnostics);
123
+ continue;
124
+ }
125
+ mappedElements.set(el.id, mapping);
126
+ reportAncillaryLossWarnings(el, diagnostics);
127
+ const scheme = getOrCreateScheme(schemeBuilds, mapping.scheme);
128
+ let collection = scheme.collections.get(mapping.collectionTag);
129
+ if (!collection) {
130
+ collection = { name: mapping.collectionName, children: [] };
131
+ scheme.collections.set(mapping.collectionTag, collection);
132
+ }
133
+ const xmaId = ids.idFor(el.id);
134
+ const concept = (0, xml_writer_js_1.element)(`ArchiMate:${mapping.xmaType}`, [['id', String(xmaId)]], [(0, profile_values_js_1.buildProfileValues)(language, el.name ?? '', el.documentation)]);
135
+ collection.children.push(concept);
136
+ }
137
+ return { schemeBuilds, mappedElements, rootConnectorsXml };
138
+ }
139
+ /**
140
+ * Renders a `SchemeBuild`'s children (an optional `nm` profile, then each
141
+ * populated collection in confirmed order, then `Relations` last) — the
142
+ * caller wraps these in the actual `<ArchiMate:{schemeTag} id="...">`
143
+ * element, since only the caller (`document-writer`) knows the scheme's
144
+ * allocated id.
145
+ *
146
+ * Every collection element (including `Relations`) carries its own `id` —
147
+ * confirmed against the real fixture (e.g. `ApplicationComponents id="222"`,
148
+ * `Relations id="72"`), unlike a bare element concept which doesn't need one
149
+ * beyond its own. Previously omitted here; Enterprise Studio rejected the
150
+ * resulting document outright ("could not generate the object: unknown
151
+ * type") rather than merely losing content.
152
+ */
153
+ function renderSchemeChildren(build, nameProfile, ids) {
154
+ const children = [];
155
+ if (nameProfile) {
156
+ children.push(nameProfile);
157
+ }
158
+ for (const { tag, name } of (0, element_mapping_js_1.getSchemeCollectionOrder)(build.tag)) {
159
+ const collection = build.collections.get(tag);
160
+ if (!collection || collection.children.length === 0) {
161
+ continue;
162
+ }
163
+ children.push((0, xml_writer_js_1.element)(`ArchiMate:${tag}`, [['name', name], ['id', String(ids.fresh())]], collection.children));
164
+ }
165
+ if (build.relations.length > 0) {
166
+ children.push((0, xml_writer_js_1.element)('ArchiMate:Relations', [['name', 'relations'], ['id', String(ids.fresh())]], build.relations));
167
+ }
168
+ return children;
169
+ }
170
+ //# sourceMappingURL=semantic-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-writer.js","sourceRoot":"","sources":["../../../src/serializer/semantic-writer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize-xma.d.ts","sourceRoot":"","sources":["../../../src/serializer/serialize-xma.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAG3D,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAQxF,MAAM,WAAW,mBAAmB;IAClC,2IAA2I;IAC3I,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iJAAiJ;IACjJ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6IAA6I;IAC7I,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA6GD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAMrF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,aAAa,EAAE,CAEnG"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serializeXma = serializeXma;
4
+ exports.inspectXmaSupport = inspectXmaSupport;
5
+ const xml_writer_js_1 = require("../infrastructure/xml-writer.js");
6
+ const id_allocator_js_1 = require("../infrastructure/id-allocator.js");
7
+ const diagnostics_js_1 = require("../diagnostics/diagnostics.js");
8
+ const errors_js_1 = require("../diagnostics/errors.js");
9
+ const semantic_writer_js_1 = require("./semantic-writer.js");
10
+ const relationship_writer_js_1 = require("./relationship-writer.js");
11
+ const view_writer_js_1 = require("./view-writer.js");
12
+ const graphical_writer_js_1 = require("./graphical-writer.js");
13
+ const document_writer_js_1 = require("./document-writer.js");
14
+ const DEFAULT_PACKAGE_NAME = 'CDA XMA Package';
15
+ const REQUIRED_MODEL_ARRAY_FIELDS = [
16
+ 'elements',
17
+ 'relationships',
18
+ 'views',
19
+ 'diagramObjects',
20
+ 'diagramConnections',
21
+ 'notes',
22
+ 'folders',
23
+ ];
24
+ /**
25
+ * `ArchiModel`'s shape is only enforced by TypeScript at compile time. A
26
+ * caller passing `null`/`undefined`, or an object missing a collection,
27
+ * would otherwise hit the first `.map()`/`.filter()` deep inside a writer
28
+ * and get a raw `Cannot read properties of undefined` — not an actionable
29
+ * error for a public library API. This is a caller-contract violation, not
30
+ * a "construct XMA can't represent" diagnostic, so it throws directly
31
+ * instead of going through `DiagnosticCollector`/`XmaSerializationError`.
32
+ */
33
+ function assertValidModelShape(model) {
34
+ if (typeof model !== 'object' || model === null) {
35
+ throw new TypeError(`serializeXma: expected an ArchiModel object, got ${model === null ? 'null' : typeof model}.`);
36
+ }
37
+ if (typeof model.metadata !== 'object' || model.metadata === null) {
38
+ throw new TypeError('serializeXma: model.metadata is missing or invalid — expected an ArchiModel.');
39
+ }
40
+ for (const field of REQUIRED_MODEL_ARRAY_FIELDS) {
41
+ if (!Array.isArray(model[field])) {
42
+ throw new TypeError(`serializeXma: model.${field} is missing or not an array — expected an ArchiModel.`);
43
+ }
44
+ }
45
+ }
46
+ function planXmaDocument(model, options) {
47
+ assertValidModelShape(model);
48
+ const diagnostics = new diagnostics_js_1.DiagnosticCollector();
49
+ const language = options?.language ?? 'en';
50
+ const modelName = options?.modelName ?? model.metadata.name;
51
+ const packageName = options?.packageName ?? DEFAULT_PACKAGE_NAME;
52
+ const allocator = new id_allocator_js_1.XmaIdAllocator();
53
+ const ids = new id_allocator_js_1.XmaIdRegistry(allocator);
54
+ const { schemeBuilds, mappedElements, rootConnectorsXml } = (0, semantic_writer_js_1.buildSemanticElements)(model, ids, diagnostics, language);
55
+ const elementIndex = new Map(model.elements.map((e) => [e.id, e]));
56
+ const relationshipIndex = new Map(model.relationships.map((r) => [r.id, r]));
57
+ const { mappedRelationships, rootRelationsXml } = (0, relationship_writer_js_1.buildSemanticRelationships)(model, ids, elementIndex, relationshipIndex, mappedElements, schemeBuilds, diagnostics);
58
+ const builtViews = model.views.map((view) => {
59
+ // A fresh RefObjects registry per view — confirmed against the sabsa
60
+ // fixture (38 views): each `AllView`'s `RefObjects` is self-contained,
61
+ // so an element referenced from multiple views gets its own ref id in
62
+ // each one (840 total Ref elements for 735 distinct semantic targets in
63
+ // sabsa.xma, never a ref id reused across two views). A shared registry
64
+ // would leave every view after the first missing Ref entries for
65
+ // elements first seen in an earlier view.
66
+ const refIds = new id_allocator_js_1.XmaIdRegistry(allocator);
67
+ const viewResult = (0, view_writer_js_1.buildView)(model, view, ids, refIds, mappedElements, mappedRelationships, diagnostics, language);
68
+ const { diagramXml } = (0, graphical_writer_js_1.buildGraphicalModule)(model, view, ids, refIds, allocator, mappedElements, mappedRelationships, viewResult, diagnostics);
69
+ return { view, viewResult, graphicalDiagramXml: diagramXml };
70
+ });
71
+ if (diagnostics.hasErrors) {
72
+ return { diagnostics: diagnostics.all, documentXml: null };
73
+ }
74
+ const documentXml = (0, document_writer_js_1.buildXmaDocument)({
75
+ modelName,
76
+ packageName,
77
+ language,
78
+ ids,
79
+ schemeBuilds,
80
+ folders: model.folders,
81
+ views: builtViews,
82
+ rootConnectorsXml,
83
+ rootRelationsXml,
84
+ });
85
+ return { diagnostics: diagnostics.all, documentXml };
86
+ }
87
+ /**
88
+ * Serializes an `ArchiModel` (from `@cda/archi-semantic-core`) into an XMA
89
+ * document string.
90
+ *
91
+ * Strict by default: if any construct in the model would be silently lost
92
+ * (an unsupported element/relationship type, a second view, incomplete
93
+ * geometry, ...) this throws `XmaSerializationError` carrying the full
94
+ * structured diagnostic list, rather than producing an approximate or
95
+ * partial XMA document. Use `inspectXmaSupport` to preview what would be
96
+ * unsupported without throwing.
97
+ */
98
+ function serializeXma(model, options) {
99
+ const { diagnostics, documentXml } = planXmaDocument(model, options);
100
+ if (documentXml === null) {
101
+ throw new errors_js_1.XmaSerializationError(diagnostics);
102
+ }
103
+ return (0, xml_writer_js_1.renderXmlDocument)(documentXml);
104
+ }
105
+ /**
106
+ * Non-mutating diagnostic pass: reports every construct in `model` that
107
+ * `serializeXma` would refuse to convert, without throwing and without
108
+ * requiring the model to be fully convertible.
109
+ */
110
+ function inspectXmaSupport(model, options) {
111
+ return planXmaDocument(model, options).diagnostics;
112
+ }
113
+ //# sourceMappingURL=serialize-xma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize-xma.js","sourceRoot":"","sources":["../../../src/serializer/serialize-xma.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-writer.d.ts","sourceRoot":"","sources":["../../../src/serializer/view-writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAI5E,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,UAAU,EAAE,CAAC;IAC9B,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,qGAAqG;IACrG,yBAAyB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,+EAA+E;IAC/E,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,+DAA+D;IAC/D,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,aAAa,EACrB,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACxD,mBAAmB,EAAE,WAAW,CAAC,MAAM,EAAE,2BAA2B,CAAC,EACrE,WAAW,EAAE,mBAAmB,EAChC,QAAQ,EAAE,MAAM,GACf,eAAe,CAiJjB"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildView = buildView;
4
+ const xml_writer_js_1 = require("../infrastructure/xml-writer.js");
5
+ const profile_values_js_1 = require("./profile-values.js");
6
+ const geometry_js_1 = require("../geometry/geometry.js");
7
+ /**
8
+ * Builds one `AllView`'s `ViewGraphics` (Notes/Groups) and `RefObjects`
9
+ * (the three-layer view-reference indirection — see module docs on
10
+ * `graphical-writer.ts`). Also validates every diagram object/note/connection
11
+ * in the view, since geometry and view membership are model-wide
12
+ * preservation guarantees, not just node drawing concerns. Nested diagram
13
+ * objects (a `parentId` or non-empty `childrenIds`) are valid here — see
14
+ * `graphical-writer.ts`'s recursive node building for how nesting is drawn.
15
+ */
16
+ function buildView(model, view, ids, refIds, mappedElements, mappedRelationships, diagnostics, language) {
17
+ const viewGraphicsXml = [];
18
+ const refObjectsXml = [];
19
+ const validElementNodeObjectIds = new Set();
20
+ const validGroupObjectIds = new Set();
21
+ const validNoteIds = new Set();
22
+ for (const obj of model.diagramObjects) {
23
+ if (obj.viewId !== view.id) {
24
+ continue;
25
+ }
26
+ if (obj.referencedModelId !== null) {
27
+ // Confirmed against the agile-manifesto fixture: Archi's own XMA export
28
+ // contains no trace whatsoever of a DiagramModelReference node or its
29
+ // connections (grepped for both ids and the referenced view ids — zero
30
+ // matches). Dropping it here, like the rest of this loop's unsupported
31
+ // cases, exactly reproduces that behavior, so it's a warning, not a
32
+ // blocking error.
33
+ diagnostics.warning({
34
+ code: 'unsupported-diagram-model-reference',
35
+ message: `Diagram object "${obj.id}" is a view-reference (DiagramModelReference) and was omitted, matching Archi's own XMA export.`,
36
+ entityId: obj.id,
37
+ entityType: 'ArchiDiagramObject',
38
+ });
39
+ continue;
40
+ }
41
+ if (obj.archimateElementId === null) {
42
+ if (obj.xsiType !== 'archimate:Group') {
43
+ diagnostics.error({
44
+ code: 'unsupported-diagram-object',
45
+ message: `Diagram object "${obj.id}" (${obj.xsiType}) has no backing semantic element and is not a recognized Group — not supported in XMA v0.1.`,
46
+ entityId: obj.id,
47
+ entityType: 'ArchiDiagramObject',
48
+ });
49
+ continue;
50
+ }
51
+ if (!(0, geometry_js_1.hasCompleteBounds)(obj.bounds)) {
52
+ diagnostics.error({
53
+ code: 'missing-bounds',
54
+ message: `Group "${obj.id}" has incomplete geometry (x/y/width/height) and cannot be positioned in XMA.`,
55
+ entityId: obj.id,
56
+ entityType: 'ArchiDiagramObject',
57
+ });
58
+ continue;
59
+ }
60
+ const groupXmaId = ids.idFor(obj.id);
61
+ viewGraphicsXml.push((0, xml_writer_js_1.element)('ArchiMate:ViewGraphic', [['id', String(groupXmaId)]], [
62
+ (0, profile_values_js_1.buildProfileValues)(language, obj.name ?? '', obj.documentation),
63
+ ]));
64
+ validGroupObjectIds.add(obj.id);
65
+ continue;
66
+ }
67
+ // Element-backed diagram object.
68
+ if (!(0, geometry_js_1.hasCompleteBounds)(obj.bounds)) {
69
+ diagnostics.error({
70
+ code: 'missing-bounds',
71
+ message: `Diagram object "${obj.id}" has incomplete geometry (x/y/width/height) and cannot be positioned in XMA.`,
72
+ entityId: obj.id,
73
+ entityType: 'ArchiDiagramObject',
74
+ });
75
+ continue;
76
+ }
77
+ const mapping = mappedElements.get(obj.archimateElementId);
78
+ if (!mapping) {
79
+ // The backing element already produced an unsupported-element-type diagnostic.
80
+ continue;
81
+ }
82
+ if (!refIds.has(obj.archimateElementId)) {
83
+ const refId = refIds.idFor(obj.archimateElementId);
84
+ refObjectsXml.push((0, xml_writer_js_1.element)(`ArchiMate:${mapping.xmaType}Ref`, [
85
+ ['id', String(refId)],
86
+ ['to', String(ids.idFor(obj.archimateElementId))],
87
+ ]));
88
+ }
89
+ validElementNodeObjectIds.add(obj.id);
90
+ }
91
+ for (const note of model.notes) {
92
+ if (note.viewId !== view.id) {
93
+ continue;
94
+ }
95
+ if (note.parentId !== null) {
96
+ // Unlike nested ArchiDiagramObjects (supported — see graphical-writer.ts's
97
+ // buildNodeTree), a nested Note has no fixture evidence: only one instance
98
+ // exists across all four fixtures, not enough to confirm its representation.
99
+ diagnostics.error({
100
+ code: 'unsupported-nested-diagram-object',
101
+ message: `Note "${note.id}" is nested inside another diagram object — not supported in XMA v0.1.`,
102
+ entityId: note.id,
103
+ entityType: 'ArchiNote',
104
+ });
105
+ continue;
106
+ }
107
+ if (!(0, geometry_js_1.hasCompleteBounds)(note.bounds)) {
108
+ diagnostics.error({
109
+ code: 'missing-bounds',
110
+ message: `Note "${note.id}" has incomplete geometry (x/y/width/height) and cannot be positioned in XMA.`,
111
+ entityId: note.id,
112
+ entityType: 'ArchiNote',
113
+ });
114
+ continue;
115
+ }
116
+ const noteXmaId = ids.idFor(note.id);
117
+ viewGraphicsXml.push((0, xml_writer_js_1.element)('ArchiMate:ViewGraphic', [['id', String(noteXmaId)]], [(0, profile_values_js_1.buildProfileValues)(language, note.content ?? '')]));
118
+ validNoteIds.add(note.id);
119
+ }
120
+ for (const connection of model.diagramConnections) {
121
+ if (connection.viewId !== view.id) {
122
+ continue;
123
+ }
124
+ if (connection.archimateRelationshipId === null) {
125
+ diagnostics.error({
126
+ code: 'unsupported-connection-no-relationship',
127
+ message: `Connection "${connection.id}" has no underlying semantic relationship (a purely visual connector) — not supported in XMA v0.1.`,
128
+ entityId: connection.id,
129
+ entityType: 'ArchiDiagramConnection',
130
+ });
131
+ continue;
132
+ }
133
+ const mapping = mappedRelationships.get(connection.archimateRelationshipId);
134
+ if (!mapping) {
135
+ // The underlying relationship already produced its own diagnostic.
136
+ continue;
137
+ }
138
+ if (!refIds.has(connection.archimateRelationshipId)) {
139
+ const refId = refIds.idFor(connection.archimateRelationshipId);
140
+ refObjectsXml.push((0, xml_writer_js_1.element)(`ArchiMate:${mapping.xmaType}Ref`, [
141
+ ['id', String(refId)],
142
+ ['to', String(ids.idFor(connection.archimateRelationshipId))],
143
+ ]));
144
+ }
145
+ }
146
+ return { viewGraphicsXml, refObjectsXml, validElementNodeObjectIds, validGroupObjectIds, validNoteIds };
147
+ }
148
+ //# sourceMappingURL=view-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-writer.js","sourceRoot":"","sources":["../../../src/serializer/view-writer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export type XmaDiagnosticSeverity = 'error' | 'warning';
2
+ export interface XmaDiagnostic {
3
+ /** Stable machine-readable code, e.g. "unsupported-element-type". */
4
+ code: string;
5
+ severity: XmaDiagnosticSeverity;
6
+ message: string;
7
+ /** Id of the offending source entity (Archi element/relationship/view/diagram id), when applicable. */
8
+ entityId?: string;
9
+ /** Kind of the offending source entity, e.g. "ArchiElement", "ArchiRelationship". */
10
+ entityType?: string;
11
+ }
12
+ /** Accumulates diagnostics during a single serialization pass. */
13
+ export declare class DiagnosticCollector {
14
+ private readonly items;
15
+ error(diagnostic: Omit<XmaDiagnostic, 'severity'>): void;
16
+ warning(diagnostic: Omit<XmaDiagnostic, 'severity'>): void;
17
+ get all(): XmaDiagnostic[];
18
+ get hasErrors(): boolean;
19
+ }
20
+ //# sourceMappingURL=diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../src/diagnostics/diagnostics.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,SAAS,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,qBAAqB,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,uGAAuG;IACvG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,kEAAkE;AAClE,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAE7C,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,IAAI;IAIxD,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,IAAI;IAI1D,IAAI,GAAG,IAAI,aAAa,EAAE,CAEzB;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;CACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/diagnostics/diagnostics.ts"],"names":[],"mappings":"AAaA,kEAAkE;AAClE,MAAM,OAAO,mBAAmB;IAAhC;QACmB,UAAK,GAAoB,EAAE,CAAC;IAiB/C,CAAC;IAfC,KAAK,CAAC,UAA2C;QAC/C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,CAAC,UAA2C;QACjD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,GAAG;QACL,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IACxD,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import type { XmaDiagnostic } from './diagnostics.js';
2
+ /**
3
+ * Thrown by `serializeXma` whenever serializing would silently lose
4
+ * semantics or presentation intent. Carries the full structured diagnostic
5
+ * list (not just the first failure) so callers can report everything wrong
6
+ * in one pass — see `inspectXmaSupport` to obtain the same list without
7
+ * throwing.
8
+ */
9
+ export declare class XmaSerializationError extends Error {
10
+ readonly diagnostics: XmaDiagnostic[];
11
+ constructor(diagnostics: XmaDiagnostic[]);
12
+ }
13
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/diagnostics/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC;gBAE1B,WAAW,EAAE,aAAa,EAAE;CAYzC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/diagnostics/errors.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAG9C,YAAY,WAA4B;QACtC,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;QAC5E,KAAK,CACH,6BAA6B,UAAU,uEAAuE;YAC5G,WAAW;iBACR,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC;iBACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;iBACtC,IAAI,CAAC,IAAI,CAAC,CAChB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF"}