zombie-mermaid 2.2.3 → 2.2.6

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 (321) hide show
  1. package/README.md +4 -4
  2. package/dist/ascii.cjs +1 -11
  3. package/dist/ascii.d.cts +1 -167
  4. package/dist/ascii.d.ts +1 -167
  5. package/dist/ascii.js +1 -6591
  6. package/dist/cli.js +836 -10946
  7. package/dist/index.cjs +2 -81
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.d.cts +42 -680
  10. package/dist/index.d.ts +42 -680
  11. package/dist/index.js +408 -10002
  12. package/dist/index.js.map +1 -1
  13. package/dist/mcp.cjs +1 -17909
  14. package/dist/mcp.d.cts +1 -11
  15. package/dist/mcp.d.ts +1 -11
  16. package/dist/mcp.js +1 -17884
  17. package/package.json +29 -29
  18. package/src/__tests__/workspace-package-boundaries.test.ts +15 -16
  19. package/src/__tests__/xychart-parser-categories.test.ts +78 -0
  20. package/src/ascii-entry.ts +14 -0
  21. package/src/cli/html-viewer.ts +5 -0
  22. package/src/mcp-entry.ts +21 -0
  23. package/dist/ascii.cjs.map +0 -1
  24. package/dist/ascii.js.map +0 -1
  25. package/dist/mcp.cjs.map +0 -1
  26. package/dist/mcp.js.map +0 -1
  27. package/packages/ascii-renderer/LICENSE +0 -22
  28. package/packages/ascii-renderer/src/ansi.ts +0 -490
  29. package/packages/ascii-renderer/src/canvas.ts +0 -658
  30. package/packages/ascii-renderer/src/class-diagram.ts +0 -2001
  31. package/packages/ascii-renderer/src/converter.ts +0 -446
  32. package/packages/ascii-renderer/src/coords.ts +0 -58
  33. package/packages/ascii-renderer/src/display-width.ts +0 -151
  34. package/packages/ascii-renderer/src/draw-arrows.ts +0 -549
  35. package/packages/ascii-renderer/src/draw-boxes.ts +0 -267
  36. package/packages/ascii-renderer/src/draw-bundles.ts +0 -611
  37. package/packages/ascii-renderer/src/draw-lines.ts +0 -174
  38. package/packages/ascii-renderer/src/draw-subgraphs.ts +0 -108
  39. package/packages/ascii-renderer/src/draw.ts +0 -337
  40. package/packages/ascii-renderer/src/edge-bundling.ts +0 -435
  41. package/packages/ascii-renderer/src/edge-cell-styles.ts +0 -81
  42. package/packages/ascii-renderer/src/edge-routing.ts +0 -1049
  43. package/packages/ascii-renderer/src/er-diagram.ts +0 -1488
  44. package/packages/ascii-renderer/src/flowchart.ts +0 -94
  45. package/packages/ascii-renderer/src/grid-occupancy.ts +0 -234
  46. package/packages/ascii-renderer/src/grid.ts +0 -1267
  47. package/packages/ascii-renderer/src/hyperlinks.ts +0 -248
  48. package/packages/ascii-renderer/src/index.ts +0 -163
  49. package/packages/ascii-renderer/src/lane-search.ts +0 -68
  50. package/packages/ascii-renderer/src/multiline-utils.ts +0 -82
  51. package/packages/ascii-renderer/src/pathfinder.ts +0 -448
  52. package/packages/ascii-renderer/src/registry.ts +0 -88
  53. package/packages/ascii-renderer/src/sequence.ts +0 -1318
  54. package/packages/ascii-renderer/src/shapes/circle.ts +0 -31
  55. package/packages/ascii-renderer/src/shapes/corners.ts +0 -273
  56. package/packages/ascii-renderer/src/shapes/diamond.ts +0 -31
  57. package/packages/ascii-renderer/src/shapes/hexagon.ts +0 -31
  58. package/packages/ascii-renderer/src/shapes/index.ts +0 -123
  59. package/packages/ascii-renderer/src/shapes/rectangle.ts +0 -199
  60. package/packages/ascii-renderer/src/shapes/rounded.ts +0 -31
  61. package/packages/ascii-renderer/src/shapes/special.ts +0 -352
  62. package/packages/ascii-renderer/src/shapes/stadium.ts +0 -122
  63. package/packages/ascii-renderer/src/shapes/state.ts +0 -204
  64. package/packages/ascii-renderer/src/shapes/types.ts +0 -78
  65. package/packages/ascii-renderer/src/territory.ts +0 -136
  66. package/packages/ascii-renderer/src/types.ts +0 -454
  67. package/packages/ascii-renderer/src/validate.ts +0 -189
  68. package/packages/ascii-renderer/src/xychart.ts +0 -1085
  69. package/packages/core/LICENSE +0 -22
  70. package/packages/core/src/click-directive.ts +0 -106
  71. package/packages/core/src/color-utils.ts +0 -205
  72. package/packages/core/src/diagram-type.ts +0 -35
  73. package/packages/core/src/direction-override.ts +0 -46
  74. package/packages/core/src/direction.ts +0 -56
  75. package/packages/core/src/index.ts +0 -34
  76. package/packages/core/src/init-directive.ts +0 -248
  77. package/packages/core/src/multiline-utils.ts +0 -275
  78. package/packages/core/src/statements.ts +0 -197
  79. package/packages/core/src/style-directives.ts +0 -214
  80. package/packages/core/src/text-metrics.ts +0 -498
  81. package/packages/core/src/theme.ts +0 -696
  82. package/packages/core/src/types.ts +0 -670
  83. package/packages/mcp/LICENSE +0 -22
  84. package/packages/mcp/src/index.ts +0 -17
  85. package/packages/mcp/src/server.ts +0 -135
  86. package/packages/mcp/src/tools/check-sequence-activations.ts +0 -91
  87. package/packages/mcp/src/tools/fix-sequence-activations.ts +0 -77
  88. package/packages/mcp/src/tools/render-ascii.ts +0 -99
  89. package/packages/mcp/src/tools/render-svg.ts +0 -95
  90. package/packages/mermaid-parser/LICENSE +0 -22
  91. package/packages/mermaid-parser/src/class/format.ts +0 -15
  92. package/packages/mermaid-parser/src/class/parser.ts +0 -593
  93. package/packages/mermaid-parser/src/class/types.ts +0 -166
  94. package/packages/mermaid-parser/src/er/parser.ts +0 -286
  95. package/packages/mermaid-parser/src/er/types.ts +0 -99
  96. package/packages/mermaid-parser/src/expanded-shapes.ts +0 -376
  97. package/packages/mermaid-parser/src/index.ts +0 -48
  98. package/packages/mermaid-parser/src/sequence/activation-check.ts +0 -149
  99. package/packages/mermaid-parser/src/sequence/activation-fix.ts +0 -112
  100. package/packages/mermaid-parser/src/sequence/box-color.ts +0 -85
  101. package/packages/mermaid-parser/src/sequence/parser.ts +0 -613
  102. package/packages/mermaid-parser/src/sequence/types.ts +0 -242
  103. package/packages/mermaid-parser/src/xychart/colors.ts +0 -177
  104. package/packages/mermaid-parser/src/xychart/parser.ts +0 -203
  105. package/packages/mermaid-parser/src/xychart/types.ts +0 -150
  106. package/packages/svg-renderer/LICENSE +0 -22
  107. package/packages/svg-renderer/src/class/layout.ts +0 -360
  108. package/packages/svg-renderer/src/class/renderer.ts +0 -636
  109. package/packages/svg-renderer/src/edge-curves.ts +0 -204
  110. package/packages/svg-renderer/src/elk-instance.ts +0 -292
  111. package/packages/svg-renderer/src/er/layout.ts +0 -200
  112. package/packages/svg-renderer/src/er/renderer.ts +0 -493
  113. package/packages/svg-renderer/src/index.ts +0 -58
  114. package/packages/svg-renderer/src/layout-engine/constants.ts +0 -19
  115. package/packages/svg-renderer/src/layout-engine/edge-bundling.ts +0 -379
  116. package/packages/svg-renderer/src/layout-engine/elk-adapter-utils.ts +0 -81
  117. package/packages/svg-renderer/src/layout-engine/elk-graph-builder.ts +0 -240
  118. package/packages/svg-renderer/src/layout-engine/from-elk.ts +0 -685
  119. package/packages/svg-renderer/src/layout-engine/layer-alignment.ts +0 -174
  120. package/packages/svg-renderer/src/layout-engine/to-elk.ts +0 -695
  121. package/packages/svg-renderer/src/layout-engine.ts +0 -74
  122. package/packages/svg-renderer/src/layout.ts +0 -8
  123. package/packages/svg-renderer/src/renderer.ts +0 -1485
  124. package/packages/svg-renderer/src/resolve-colors.ts +0 -339
  125. package/packages/svg-renderer/src/sequence/layout.ts +0 -698
  126. package/packages/svg-renderer/src/sequence/renderer.ts +0 -546
  127. package/packages/svg-renderer/src/shape-clipping.ts +0 -197
  128. package/packages/svg-renderer/src/styles.ts +0 -118
  129. package/packages/svg-renderer/src/xychart/layout.ts +0 -682
  130. package/packages/svg-renderer/src/xychart/renderer.ts +0 -684
  131. package/src/__tests__/ascii-canvas-write.test.ts +0 -137
  132. package/src/__tests__/ascii-charset-border-junctions.test.ts +0 -63
  133. package/src/__tests__/ascii-cjk-width.test.ts +0 -150
  134. package/src/__tests__/ascii-class-box-occupancy.test.ts +0 -462
  135. package/src/__tests__/ascii-class-column-width-488-489.test.ts +0 -639
  136. package/src/__tests__/ascii-class-cross-level-jog-corruption.test.ts +0 -187
  137. package/src/__tests__/ascii-class-detour-label-routing-487.test.ts +0 -114
  138. package/src/__tests__/ascii-class-diagram-compartments.test.ts +0 -70
  139. package/src/__tests__/ascii-class-label-box-collision.test.ts +0 -60
  140. package/src/__tests__/ascii-class-label-row-collision-531.test.ts +0 -135
  141. package/src/__tests__/ascii-class-label-territory-row-awareness.test.ts +0 -57
  142. package/src/__tests__/ascii-class-padding.test.ts +0 -104
  143. package/src/__tests__/ascii-class-parent-alignment-971.test.ts +0 -139
  144. package/src/__tests__/ascii-class-parent-alignment-972.test.ts +0 -208
  145. package/src/__tests__/ascii-class-reciprocal-relationships-448.test.ts +0 -169
  146. package/src/__tests__/ascii-combining-mark-width.test.ts +0 -70
  147. package/src/__tests__/ascii-coords-overlay.test.ts +0 -64
  148. package/src/__tests__/ascii-decision-lr-box-start.test.ts +0 -106
  149. package/src/__tests__/ascii-display-width-unit.test.ts +0 -154
  150. package/src/__tests__/ascii-draw-arrows-coverage.test.ts +0 -171
  151. package/src/__tests__/ascii-draw-arrows-single-point-path.test.ts +0 -112
  152. package/src/__tests__/ascii-edge-bundling-rank-violation-454.test.ts +0 -72
  153. package/src/__tests__/ascii-edge-ending-glyphs.test.ts +0 -206
  154. package/src/__tests__/ascii-edge-label-diagonal-fallback-418.test.ts +0 -95
  155. package/src/__tests__/ascii-edge-routing-fixes.test.ts +0 -178
  156. package/src/__tests__/ascii-edge-routing-single-point-path.test.ts +0 -107
  157. package/src/__tests__/ascii-edge-styles.test.ts +0 -149
  158. package/src/__tests__/ascii-emoji-cluster-width.test.ts +0 -101
  159. package/src/__tests__/ascii-er-box-occupancy.test.ts +0 -251
  160. package/src/__tests__/ascii-er-cardinality.test.ts +0 -40
  161. package/src/__tests__/ascii-er-corner-glyphs.test.ts +0 -249
  162. package/src/__tests__/ascii-er-jog-stray-line.test.ts +0 -111
  163. package/src/__tests__/ascii-er-label-padding.test.ts +0 -118
  164. package/src/__tests__/ascii-er-padding.test.ts +0 -114
  165. package/src/__tests__/ascii-er-relationship-label-corruption-350.test.ts +0 -458
  166. package/src/__tests__/ascii-er-relationship-overwrite.test.ts +0 -325
  167. package/src/__tests__/ascii-er-stray-connectors.test.ts +0 -347
  168. package/src/__tests__/ascii-er-unrelated-stem-separation-411.test.ts +0 -98
  169. package/src/__tests__/ascii-er-vertical-one-marker.test.ts +0 -110
  170. package/src/__tests__/ascii-label-line-terminal-fallback.test.ts +0 -172
  171. package/src/__tests__/ascii-lane-search.test.ts +0 -207
  172. package/src/__tests__/ascii-multibox-cjk-width.test.ts +0 -184
  173. package/src/__tests__/ascii-multiline.test.ts +0 -291
  174. package/src/__tests__/ascii-padding-edge-cases.test.ts +0 -154
  175. package/src/__tests__/ascii-pathfinder-route-edge.test.ts +0 -194
  176. package/src/__tests__/ascii-sequence-alt-else-label.test.ts +0 -236
  177. package/src/__tests__/ascii-sequence-block-wall-clearance.test.ts +0 -217
  178. package/src/__tests__/ascii-sequence-box-group.test.ts +0 -159
  179. package/src/__tests__/ascii-sequence-cjk-width.test.ts +0 -235
  180. package/src/__tests__/ascii-sequence-create-destroy.test.ts +0 -114
  181. package/src/__tests__/ascii-sequence-form-invariants.test.ts +0 -432
  182. package/src/__tests__/ascii-sequence-mermaid-parity.test.ts +0 -219
  183. package/src/__tests__/ascii-sequence-notes.test.ts +0 -61
  184. package/src/__tests__/ascii-sequence-padding.test.ts +0 -119
  185. package/src/__tests__/ascii-sequence-self-arrow.test.ts +0 -206
  186. package/src/__tests__/ascii-shape-diamond.test.ts +0 -38
  187. package/src/__tests__/ascii-shape-rectangle.test.ts +0 -258
  188. package/src/__tests__/ascii-shape-rounded.test.ts +0 -36
  189. package/src/__tests__/ascii-shapes-circle.test.ts +0 -41
  190. package/src/__tests__/ascii-shapes-hexagon.test.ts +0 -42
  191. package/src/__tests__/ascii-shapes-special.test.ts +0 -349
  192. package/src/__tests__/ascii-shapes-stadium.test.ts +0 -217
  193. package/src/__tests__/ascii-shapes-state.test.ts +0 -234
  194. package/src/__tests__/ascii-state-bidirectional-label-swap-530.test.ts +0 -130
  195. package/src/__tests__/ascii-subgraph-direction-honored-445.test.ts +0 -90
  196. package/src/__tests__/ascii-subgraph-label-border-clip.test.ts +0 -152
  197. package/src/__tests__/ascii-subgraph-title-padding.test.ts +0 -77
  198. package/src/__tests__/ascii-territory-unit.test.ts +0 -219
  199. package/src/__tests__/ascii-validate.test.ts +0 -220
  200. package/src/__tests__/ascii.test.ts +0 -328
  201. package/src/__tests__/box-color.test.ts +0 -80
  202. package/src/__tests__/class-arrow-directions.test.ts +0 -505
  203. package/src/__tests__/click-directive.test.ts +0 -63
  204. package/src/__tests__/color-utils.test.ts +0 -186
  205. package/src/__tests__/diagram-type.test.ts +0 -28
  206. package/src/__tests__/draw-lines.test.ts +0 -93
  207. package/src/__tests__/edge-cell-styles.test.ts +0 -180
  208. package/src/__tests__/elk-adapter-utils.test.ts +0 -166
  209. package/src/__tests__/grid-occupancy.test.ts +0 -240
  210. package/src/__tests__/helpers/ascii-form.ts +0 -142
  211. package/src/__tests__/helpers/terminal-display-width.ts +0 -74
  212. package/src/__tests__/mcp-check-sequence-activations-tool.test.ts +0 -85
  213. package/src/__tests__/mcp-fix-sequence-activations-tool.test.ts +0 -134
  214. package/src/__tests__/mcp-server.test.ts +0 -163
  215. package/src/__tests__/pathfinder.test.ts +0 -246
  216. package/src/__tests__/sequence-activation-fix.test.ts +0 -91
  217. package/src/__tests__/testdata/ascii/ampersand_lhs.txt +0 -18
  218. package/src/__tests__/testdata/ascii/ampersand_lhs_and_rhs.txt +0 -18
  219. package/src/__tests__/testdata/ascii/ampersand_rhs.txt +0 -18
  220. package/src/__tests__/testdata/ascii/ampersand_td_fanin.txt +0 -18
  221. package/src/__tests__/testdata/ascii/ampersand_td_fanout.txt +0 -18
  222. package/src/__tests__/testdata/ascii/ampersand_without_edge.txt +0 -18
  223. package/src/__tests__/testdata/ascii/back_reference_from_child.txt +0 -10
  224. package/src/__tests__/testdata/ascii/backlink_from_bottom.txt +0 -22
  225. package/src/__tests__/testdata/ascii/backlink_from_top.txt +0 -22
  226. package/src/__tests__/testdata/ascii/backlink_with_short_y_padding.txt +0 -20
  227. package/src/__tests__/testdata/ascii/cls_all_relationships.txt +0 -19
  228. package/src/__tests__/testdata/ascii/cls_annotation.txt +0 -29
  229. package/src/__tests__/testdata/ascii/cls_association.txt +0 -14
  230. package/src/__tests__/testdata/ascii/cls_basic.txt +0 -15
  231. package/src/__tests__/testdata/ascii/cls_dependency.txt +0 -14
  232. package/src/__tests__/testdata/ascii/cls_inheritance.txt +0 -20
  233. package/src/__tests__/testdata/ascii/cls_methods.txt +0 -21
  234. package/src/__tests__/testdata/ascii/comments.txt +0 -23
  235. package/src/__tests__/testdata/ascii/custom_padding.txt +0 -10
  236. package/src/__tests__/testdata/ascii/duplicate_labels.txt +0 -19
  237. package/src/__tests__/testdata/ascii/er_attributes.txt +0 -21
  238. package/src/__tests__/testdata/ascii/er_basic.txt +0 -8
  239. package/src/__tests__/testdata/ascii/er_identifying.txt +0 -18
  240. package/src/__tests__/testdata/ascii/flowchart_tb_simple.txt +0 -29
  241. package/src/__tests__/testdata/ascii/graph_bt_direction.txt +0 -28
  242. package/src/__tests__/testdata/ascii/graph_tb_direction.txt +0 -26
  243. package/src/__tests__/testdata/ascii/nested_subgraphs_with_labels.txt +0 -36
  244. package/src/__tests__/testdata/ascii/preserve_order_of_definition.txt +0 -23
  245. package/src/__tests__/testdata/ascii/self_reference.txt +0 -10
  246. package/src/__tests__/testdata/ascii/self_reference_with_edge.txt +0 -10
  247. package/src/__tests__/testdata/ascii/seq_basic.txt +0 -17
  248. package/src/__tests__/testdata/ascii/seq_multiple_messages.txt +0 -25
  249. package/src/__tests__/testdata/ascii/seq_self_message.txt +0 -18
  250. package/src/__tests__/testdata/ascii/single_node.txt +0 -8
  251. package/src/__tests__/testdata/ascii/single_node_longer_name.txt +0 -8
  252. package/src/__tests__/testdata/ascii/subgraph_complex_mixed.txt +0 -38
  253. package/src/__tests__/testdata/ascii/subgraph_complex_nested.txt +0 -49
  254. package/src/__tests__/testdata/ascii/subgraph_direction_override.txt +0 -47
  255. package/src/__tests__/testdata/ascii/subgraph_empty.txt +0 -10
  256. package/src/__tests__/testdata/ascii/subgraph_mixed_nodes.txt +0 -20
  257. package/src/__tests__/testdata/ascii/subgraph_mixed_nodes_td.txt +0 -48
  258. package/src/__tests__/testdata/ascii/subgraph_multiple_edges.txt +0 -32
  259. package/src/__tests__/testdata/ascii/subgraph_multiple_nodes.txt +0 -16
  260. package/src/__tests__/testdata/ascii/subgraph_nested.txt +0 -24
  261. package/src/__tests__/testdata/ascii/subgraph_nested_with_external.txt +0 -30
  262. package/src/__tests__/testdata/ascii/subgraph_node_outside_lr.txt +0 -17
  263. package/src/__tests__/testdata/ascii/subgraph_single_node.txt +0 -16
  264. package/src/__tests__/testdata/ascii/subgraph_td_direction.txt +0 -26
  265. package/src/__tests__/testdata/ascii/subgraph_td_multiple.txt +0 -44
  266. package/src/__tests__/testdata/ascii/subgraph_td_multiple_paddingy.txt +0 -42
  267. package/src/__tests__/testdata/ascii/subgraph_three_levels_nested.txt +0 -32
  268. package/src/__tests__/testdata/ascii/subgraph_three_separate.txt +0 -24
  269. package/src/__tests__/testdata/ascii/subgraph_two_separate.txt +0 -20
  270. package/src/__tests__/testdata/ascii/subgraph_with_labels.txt +0 -20
  271. package/src/__tests__/testdata/ascii/three_nodes.txt +0 -9
  272. package/src/__tests__/testdata/ascii/three_nodes_single_line.txt +0 -8
  273. package/src/__tests__/testdata/ascii/two_layer_single_graph.txt +0 -19
  274. package/src/__tests__/testdata/ascii/two_layer_single_graph_longer_names.txt +0 -19
  275. package/src/__tests__/testdata/ascii/two_nodes_linked.txt +0 -8
  276. package/src/__tests__/testdata/ascii/two_nodes_longer_names.txt +0 -8
  277. package/src/__tests__/testdata/ascii/two_root_nodes.txt +0 -19
  278. package/src/__tests__/testdata/ascii/two_root_nodes_longer_names.txt +0 -19
  279. package/src/__tests__/testdata/ascii/two_single_root_nodes.txt +0 -19
  280. package/src/__tests__/testdata/unicode/ampersand_lhs.txt +0 -18
  281. package/src/__tests__/testdata/unicode/ampersand_lhs_and_rhs.txt +0 -18
  282. package/src/__tests__/testdata/unicode/ampersand_rhs.txt +0 -18
  283. package/src/__tests__/testdata/unicode/ampersand_without_edge.txt +0 -18
  284. package/src/__tests__/testdata/unicode/back_reference_from_child.txt +0 -10
  285. package/src/__tests__/testdata/unicode/backlink_from_bottom.txt +0 -22
  286. package/src/__tests__/testdata/unicode/backlink_from_top.txt +0 -22
  287. package/src/__tests__/testdata/unicode/cls_all_relationships.txt +0 -19
  288. package/src/__tests__/testdata/unicode/cls_annotation.txt +0 -29
  289. package/src/__tests__/testdata/unicode/cls_association.txt +0 -14
  290. package/src/__tests__/testdata/unicode/cls_basic.txt +0 -15
  291. package/src/__tests__/testdata/unicode/cls_dependency.txt +0 -14
  292. package/src/__tests__/testdata/unicode/cls_inheritance.txt +0 -20
  293. package/src/__tests__/testdata/unicode/cls_methods.txt +0 -21
  294. package/src/__tests__/testdata/unicode/comments.txt +0 -23
  295. package/src/__tests__/testdata/unicode/duplicate_labels.txt +0 -19
  296. package/src/__tests__/testdata/unicode/er_attributes.txt +0 -21
  297. package/src/__tests__/testdata/unicode/er_basic.txt +0 -8
  298. package/src/__tests__/testdata/unicode/er_identifying.txt +0 -18
  299. package/src/__tests__/testdata/unicode/graph_bt_direction.txt +0 -28
  300. package/src/__tests__/testdata/unicode/preserve_order_of_definition.txt +0 -23
  301. package/src/__tests__/testdata/unicode/self_reference.txt +0 -10
  302. package/src/__tests__/testdata/unicode/self_reference_with_edge.txt +0 -10
  303. package/src/__tests__/testdata/unicode/seq_basic.txt +0 -17
  304. package/src/__tests__/testdata/unicode/seq_multiple_messages.txt +0 -25
  305. package/src/__tests__/testdata/unicode/seq_self_message.txt +0 -18
  306. package/src/__tests__/testdata/unicode/single_node.txt +0 -8
  307. package/src/__tests__/testdata/unicode/single_node_longer_name.txt +0 -8
  308. package/src/__tests__/testdata/unicode/three_nodes.txt +0 -9
  309. package/src/__tests__/testdata/unicode/three_nodes_single_line.txt +0 -8
  310. package/src/__tests__/testdata/unicode/two_layer_single_graph.txt +0 -19
  311. package/src/__tests__/testdata/unicode/two_layer_single_graph_longer_names.txt +0 -19
  312. package/src/__tests__/testdata/unicode/two_nodes_linked.txt +0 -8
  313. package/src/__tests__/testdata/unicode/two_nodes_longer_names.txt +0 -8
  314. package/src/__tests__/testdata/unicode/two_root_nodes.txt +0 -19
  315. package/src/__tests__/testdata/unicode/two_root_nodes_longer_names.txt +0 -19
  316. package/src/__tests__/testdata/unicode/two_single_root_nodes.txt +0 -19
  317. package/src/__tests__/text-metrics.test.ts +0 -473
  318. package/src/__tests__/theme-palette-contrast.test.ts +0 -84
  319. package/src/__tests__/theme.test.ts +0 -132
  320. package/src/__tests__/xychart-ascii.test.ts +0 -376
  321. package/src/__tests__/xychart-colors.test.ts +0 -149
@@ -1,22 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Craft Docs
4
- Copyright (c) 2026 Dustin Fadler
5
-
6
- Permission is hereby granted, free of charge, to any person obtaining a copy
7
- of this software and associated documentation files (the "Software"), to deal
8
- in the Software without restriction, including without limitation the rights
9
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- copies of the Software, and to permit persons to whom the Software is
11
- furnished to do so, subject to the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be included in all
14
- copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
- SOFTWARE.
@@ -1,17 +0,0 @@
1
- // ============================================================================
2
- // zombie-mermaid/mcp — MCP server entry point
3
- //
4
- // Exposes the library's SVG/ASCII rendering as Model Context Protocol
5
- // tools. Import `createMcpServer()` to embed the server in your own
6
- // process and connect it to any MCP Transport, or run `zombie-mermaid mcp`
7
- // from the CLI for a ready-to-use stdio server (see src/cli/mcp.ts).
8
- //
9
- // Usage:
10
- // import { createMcpServer } from 'zombie-mermaid/mcp'
11
- // import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
12
- //
13
- // const server = createMcpServer()
14
- // await server.connect(new StdioServerTransport())
15
- // ============================================================================
16
-
17
- export { createMcpServer } from './server.ts'
@@ -1,135 +0,0 @@
1
- // ============================================================================
2
- // zombie-mermaid MCP server
3
- //
4
- // Wires the library's existing SVG/ASCII rendering functions, plus a
5
- // mechanical sequence-diagram semantic check, up as Model Context Protocol
6
- // tools. No rendering or checking logic lives here — see src/mcp/tools/*.ts
7
- // for the thin per-tool adapters, src/index.ts / src/ascii/index.ts for the
8
- // actual renderers, and packages/mermaid-parser/src/sequence/activation-check.ts
9
- // for the check.
10
- // ============================================================================
11
-
12
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
13
- import { getPackageVersion } from '../../../src/package-info.ts'
14
- import { renderSvgInputShape, renderSvgHandler } from './tools/render-svg.ts'
15
- import {
16
- renderAsciiInputShape,
17
- renderAsciiHandler,
18
- } from './tools/render-ascii.ts'
19
- import {
20
- checkSequenceActivationsInputShape,
21
- checkSequenceActivationsHandler,
22
- } from './tools/check-sequence-activations.ts'
23
- import {
24
- fixSequenceActivationsInputShape,
25
- fixSequenceActivationsHandler,
26
- } from './tools/fix-sequence-activations.ts'
27
-
28
- /**
29
- * Build a zombie-mermaid MCP server exposing `render_mermaid_svg`,
30
- * `render_mermaid_ascii`, and `check_mermaid_sequence_activations` tools.
31
- *
32
- * Not connected to any transport — callers wire it up. See
33
- * src/cli/mcp.ts for the stdio entry point used by `zombie-mermaid mcp`,
34
- * or connect it to the MCP SDK's `InMemoryTransport` to embed/test it
35
- * in-process without spawning anything.
36
- */
37
- export function createMcpServer(): McpServer {
38
- const server = new McpServer({
39
- name: 'zombie-mermaid',
40
- version: getPackageVersion(),
41
- })
42
-
43
- server.registerTool(
44
- 'render_mermaid_svg',
45
- {
46
- title: 'Render Mermaid diagram to SVG',
47
- description:
48
- 'Render Mermaid diagram source to a self-contained SVG string. ' +
49
- 'Supports flowcharts, state diagrams, sequence diagrams, class ' +
50
- 'diagrams, ER diagrams, and XY charts.',
51
- inputSchema: renderSvgInputShape,
52
- annotations: {
53
- title: 'Render Mermaid diagram to SVG',
54
- readOnlyHint: true,
55
- destructiveHint: false,
56
- idempotentHint: true,
57
- openWorldHint: false,
58
- },
59
- },
60
- renderSvgHandler,
61
- )
62
-
63
- server.registerTool(
64
- 'render_mermaid_ascii',
65
- {
66
- title: 'Render Mermaid diagram to ASCII/Unicode art',
67
- description:
68
- 'Render Mermaid diagram source to a plain-text ASCII or Unicode ' +
69
- 'box-drawing diagram, suitable for a terminal or a chat/agent ' +
70
- 'context. Supports flowcharts, state diagrams, sequence diagrams, ' +
71
- 'class diagrams, and ER diagrams.',
72
- inputSchema: renderAsciiInputShape,
73
- annotations: {
74
- title: 'Render Mermaid diagram to ASCII/Unicode art',
75
- readOnlyHint: true,
76
- destructiveHint: false,
77
- idempotentHint: true,
78
- openWorldHint: false,
79
- },
80
- },
81
- renderAsciiHandler,
82
- )
83
-
84
- server.registerTool(
85
- 'check_mermaid_sequence_activations',
86
- {
87
- title: 'Check Mermaid sequence diagram activation balance',
88
- description:
89
- 'Check a Mermaid sequence diagram for activation/deactivation ' +
90
- 'imbalance: every "activate X" (or "+" arrow shorthand) must be ' +
91
- 'closed by a matching "deactivate X" ("-" shorthand). Returns a ' +
92
- 'JSON report ({ ok, issues }) rather than rendering anything. ' +
93
- 'Mechanical and deterministic — no LLM judgment involved. Only ' +
94
- 'sequence diagrams are supported.',
95
- inputSchema: checkSequenceActivationsInputShape,
96
- annotations: {
97
- title: 'Check Mermaid sequence diagram activation balance',
98
- readOnlyHint: true,
99
- destructiveHint: false,
100
- idempotentHint: true,
101
- openWorldHint: false,
102
- },
103
- },
104
- checkSequenceActivationsHandler,
105
- )
106
-
107
- server.registerTool(
108
- 'fix_mermaid_sequence_activations',
109
- {
110
- title: 'Fix Mermaid sequence diagram activation balance',
111
- description:
112
- 'Check a Mermaid sequence diagram for activation/deactivation ' +
113
- 'imbalance and, where mechanically safe, return a corrected ' +
114
- 'version: a dangling "activate X" (or "+" shorthand) with no ' +
115
- 'matching "deactivate X" gets one appended. An unmatched ' +
116
- '"deactivate X" with nothing open is reported but not auto-fixed ' +
117
- '(no safe, unambiguous edit exists without source-position ' +
118
- 'tracking). Returns a JSON report ({ ok, fixedDiagram, ' +
119
- 'fixesApplied, remainingIssues }) rather than rendering anything. ' +
120
- 'Mechanical and deterministic — no LLM judgment involved. Only ' +
121
- 'sequence diagrams are supported.',
122
- inputSchema: fixSequenceActivationsInputShape,
123
- annotations: {
124
- title: 'Fix Mermaid sequence diagram activation balance',
125
- readOnlyHint: true,
126
- destructiveHint: false,
127
- idempotentHint: true,
128
- openWorldHint: false,
129
- },
130
- },
131
- fixSequenceActivationsHandler,
132
- )
133
-
134
- return server
135
- }
@@ -1,91 +0,0 @@
1
- // ============================================================================
2
- // zombie-mermaid MCP server — `check_mermaid_sequence_activations` tool
3
- //
4
- // A mechanical, deterministic semantic check that complements the existing
5
- // render tools: every "activate X" (or "+" arrow shorthand) in a Mermaid
6
- // sequence diagram must be closed by a matching "deactivate X" ("-"
7
- // shorthand) before the diagram ends. No LLM judge involved — see
8
- // packages/mermaid-parser/src/sequence/activation-check.ts for the actual
9
- // check, which reuses the same activation-stack bookkeeping
10
- // packages/svg-renderer/src/sequence/layout.ts already runs to *draw*
11
- // activation bars.
12
- //
13
- // Why this tool, and why it isn't duplicating agentic-mermaid's `verify`
14
- // tool (github.com/adewale/agentic-mermaid): that tool's own docs describe
15
- // it as reporting "structural, geometric, and lint warnings" — dangling
16
- // edges, label overflow, duplicate/unreachable nodes — a general
17
- // graph-structure check with no sequence-diagram-specific handling. Neither
18
- // it nor ordinary Mermaid syntax validators check activation/deactivation
19
- // balance, which research behind issue #536 found is where LLM-generated
20
- // sequence diagrams actually go wrong most often (not basic syntax).
21
- // ============================================================================
22
-
23
- import { z } from 'zod'
24
- import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js'
25
- import { detectDiagramType, splitStatements } from '@zombie-mermaid/core'
26
- import {
27
- parseSequenceDiagram,
28
- checkActivationBalance,
29
- } from '@zombie-mermaid/mermaid-parser'
30
-
31
- export const checkSequenceActivationsInputShape = {
32
- diagram: z
33
- .string()
34
- .min(1, 'diagram must not be empty')
35
- .describe(
36
- 'Mermaid sequence diagram source text, e.g. "sequenceDiagram\\n ' +
37
- 'A->>+B: hi\\n B-->>-A: bye". Must start with "sequenceDiagram" ' +
38
- '— this tool does not check other diagram types.',
39
- ),
40
- }
41
-
42
- export interface CheckSequenceActivationsToolArgs {
43
- diagram: string
44
- }
45
-
46
- /**
47
- * MCP tool handler for `check_mermaid_sequence_activations`. Parses the
48
- * given source as a Mermaid sequence diagram and reports every
49
- * activation/deactivation imbalance as a structured JSON result (`ok` plus
50
- * an `issues` array) — this tool never renders anything.
51
- *
52
- * Returns an MCP tool error (`isError: true`, not a thrown exception) both
53
- * for invalid Mermaid syntax and for a non-sequence diagram, since this
54
- * check only makes sense for `sequenceDiagram` source.
55
- */
56
- export function checkSequenceActivationsHandler(
57
- input: CheckSequenceActivationsToolArgs,
58
- ): CallToolResult {
59
- try {
60
- const diagramType = detectDiagramType(input.diagram)
61
- if (diagramType !== 'sequence') {
62
- return {
63
- isError: true,
64
- content: [
65
- {
66
- type: 'text',
67
- text:
68
- 'This tool only checks sequence diagrams (source must start ' +
69
- `with "sequenceDiagram"); detected diagram type: "${diagramType}".`,
70
- },
71
- ],
72
- }
73
- }
74
- const lines = splitStatements(input.diagram)
75
- const diagram = parseSequenceDiagram(lines)
76
- const result = checkActivationBalance(diagram)
77
- return {
78
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
79
- }
80
- } catch (err) {
81
- return {
82
- isError: true,
83
- content: [
84
- {
85
- type: 'text',
86
- text: `Failed to check diagram activations: ${err instanceof Error ? err.message : String(err)}`,
87
- },
88
- ],
89
- }
90
- }
91
- }
@@ -1,77 +0,0 @@
1
- // ============================================================================
2
- // zombie-mermaid MCP server — `fix_mermaid_sequence_activations` tool
3
- //
4
- // The "optionally proposes a fix" half of issue #539, complementing
5
- // `check_mermaid_sequence_activations` (which only reports issues). Reuses
6
- // packages/mermaid-parser/src/sequence/activation-fix.ts, which — see that
7
- // file's header — only auto-fixes DANGLING_ACTIVATION (a mechanically safe,
8
- // unambiguous append); UNMATCHED_DEACTIVATION comes back as a remaining
9
- // issue for a human (or a future LLM-based layer) to resolve rather than
10
- // risk an incorrect text edit.
11
- // ============================================================================
12
-
13
- import { z } from 'zod'
14
- import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js'
15
- import { detectDiagramType } from '@zombie-mermaid/core'
16
- import { fixActivationBalance } from '@zombie-mermaid/mermaid-parser'
17
-
18
- export const fixSequenceActivationsInputShape = {
19
- diagram: z
20
- .string()
21
- .min(1, 'diagram must not be empty')
22
- .describe(
23
- 'Mermaid sequence diagram source text, e.g. "sequenceDiagram\\n ' +
24
- 'activate A\\n A->>B: hi". Must start with "sequenceDiagram" — ' +
25
- 'this tool does not check other diagram types.',
26
- ),
27
- }
28
-
29
- export interface FixSequenceActivationsToolArgs {
30
- diagram: string
31
- }
32
-
33
- /**
34
- * MCP tool handler for `fix_mermaid_sequence_activations`. Parses the given
35
- * source as a Mermaid sequence diagram, checks activation/deactivation
36
- * balance, and returns a structured JSON result: `ok`, the (possibly
37
- * unchanged) `fixedDiagram`, `fixesApplied` (human-readable descriptions),
38
- * and any `remainingIssues` that couldn't be auto-fixed.
39
- *
40
- * Returns an MCP tool error (`isError: true`, not a thrown exception) both
41
- * for invalid Mermaid syntax and for a non-sequence diagram, matching
42
- * `check-sequence-activations.ts`'s error handling.
43
- */
44
- export function fixSequenceActivationsHandler(
45
- input: FixSequenceActivationsToolArgs,
46
- ): CallToolResult {
47
- try {
48
- const diagramType = detectDiagramType(input.diagram)
49
- if (diagramType !== 'sequence') {
50
- return {
51
- isError: true,
52
- content: [
53
- {
54
- type: 'text',
55
- text:
56
- 'This tool only fixes sequence diagrams (source must start ' +
57
- `with "sequenceDiagram"); detected diagram type: "${diagramType}".`,
58
- },
59
- ],
60
- }
61
- }
62
- const result = fixActivationBalance(input.diagram)
63
- return {
64
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
65
- }
66
- } catch (err) {
67
- return {
68
- isError: true,
69
- content: [
70
- {
71
- type: 'text',
72
- text: `Failed to fix diagram activations: ${err instanceof Error ? err.message : String(err)}`,
73
- },
74
- ],
75
- }
76
- }
77
- }
@@ -1,99 +0,0 @@
1
- // ============================================================================
2
- // zombie-mermaid MCP server — `render_mermaid_ascii` tool
3
- //
4
- // Thin MCP adapter around the library's own renderMermaidASCII(). No new
5
- // rendering logic lives here — this only maps a validated tool call onto
6
- // AsciiRenderOptions and back onto an MCP CallToolResult.
7
- // ============================================================================
8
-
9
- import { z } from 'zod'
10
- import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js'
11
- import { renderMermaidASCII } from '@zombie-mermaid/ascii-renderer'
12
- import type { AsciiRenderOptions } from '@zombie-mermaid/ascii-renderer'
13
-
14
- export const renderAsciiInputShape = {
15
- diagram: z
16
- .string()
17
- .min(1, 'diagram must not be empty')
18
- .describe(
19
- 'Mermaid diagram source text, e.g. "graph LR\\n A --> B". Supports ' +
20
- 'flowcharts, state diagrams, sequence diagrams, class diagrams, and ' +
21
- 'ER diagrams.',
22
- ),
23
- useAscii: z
24
- .boolean()
25
- .optional()
26
- .describe(
27
- 'true = plain ASCII characters (+, -, |, >); false/unset = Unicode ' +
28
- 'box-drawing characters (┌, ─, │, ►). Default: false.',
29
- ),
30
- paddingX: z
31
- .number()
32
- .int()
33
- .nonnegative()
34
- .optional()
35
- .describe(
36
- 'Horizontal spacing between nodes. Default: 5. Flowchart/state diagrams only.',
37
- ),
38
- paddingY: z
39
- .number()
40
- .int()
41
- .nonnegative()
42
- .optional()
43
- .describe(
44
- 'Vertical spacing between nodes. Default: 5. Flowchart/state diagrams only.',
45
- ),
46
- boxBorderPadding: z
47
- .number()
48
- .int()
49
- .nonnegative()
50
- .optional()
51
- .describe(
52
- 'Padding inside node boxes. Default: 1. Flowchart/state diagrams only.',
53
- ),
54
- }
55
-
56
- export interface RenderAsciiToolArgs {
57
- diagram: string
58
- useAscii?: boolean | undefined
59
- paddingX?: number | undefined
60
- paddingY?: number | undefined
61
- boxBorderPadding?: number | undefined
62
- }
63
-
64
- /**
65
- * MCP tool handler for `render_mermaid_ascii`. Renders Mermaid source to a
66
- * plain ASCII/Unicode-art string.
67
- *
68
- * Color mode is deliberately fixed to `'none'` rather than exposed as an
69
- * option: the CLI's `--theme` flag produces ANSI color escapes meant for a
70
- * real terminal, but an MCP tool result is text inserted into a chat/agent
71
- * context, where raw ANSI escapes would render as garbage rather than
72
- * color. (In practice `renderMermaidASCII`'s own auto-detection already
73
- * resolves to `'none'` here, since the MCP server's stdout is a pipe used
74
- * for the JSON-RPC transport, not a TTY — this makes that outcome explicit
75
- * instead of incidental.)
76
- */
77
- export function renderAsciiHandler(input: RenderAsciiToolArgs): CallToolResult {
78
- try {
79
- const options: AsciiRenderOptions = {
80
- useAscii: input.useAscii,
81
- paddingX: input.paddingX,
82
- paddingY: input.paddingY,
83
- boxBorderPadding: input.boxBorderPadding,
84
- colorMode: 'none',
85
- }
86
- const ascii = renderMermaidASCII(input.diagram, options)
87
- return { content: [{ type: 'text', text: ascii }] }
88
- } catch (err) {
89
- return {
90
- isError: true,
91
- content: [
92
- {
93
- type: 'text',
94
- text: `Failed to render diagram to ASCII: ${err instanceof Error ? err.message : String(err)}`,
95
- },
96
- ],
97
- }
98
- }
99
- }
@@ -1,95 +0,0 @@
1
- // ============================================================================
2
- // zombie-mermaid MCP server — `render_mermaid_svg` tool
3
- //
4
- // Thin MCP adapter around the library's own renderMermaidSVG(). No new
5
- // rendering logic lives here — this only maps a validated tool call onto
6
- // RenderOptions and back onto an MCP CallToolResult.
7
- // ============================================================================
8
-
9
- import { z } from 'zod'
10
- import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js'
11
- import { renderMermaidSVG } from '../../../../src/index.ts'
12
- import { THEMES } from '@zombie-mermaid/core'
13
- import type { DiagramColors } from '@zombie-mermaid/core'
14
-
15
- /**
16
- * Narrow a string array to zod's required non-empty-tuple shape without an
17
- * `as` assertion. `THEMES` always has entries (it's a populated module-level
18
- * const), but `Object.keys()` returns a plain `string[]` the type system
19
- * can't statically know is non-empty.
20
- */
21
- function toNonEmptyStringTuple(values: string[]): [string, ...string[]] {
22
- const [first, ...rest] = values
23
- if (first === undefined) {
24
- throw new Error('Expected at least one built-in theme to be registered')
25
- }
26
- return [first, ...rest]
27
- }
28
-
29
- const themeNames = toNonEmptyStringTuple(Object.keys(THEMES))
30
-
31
- export const renderSvgInputShape = {
32
- diagram: z
33
- .string()
34
- .min(1, 'diagram must not be empty')
35
- .describe(
36
- 'Mermaid diagram source text, e.g. "graph TD\\n A --> B". Supports ' +
37
- 'flowcharts, state diagrams, sequence diagrams, class diagrams, ER ' +
38
- 'diagrams, and XY charts.',
39
- ),
40
- theme: z
41
- .enum(themeNames)
42
- .optional()
43
- .describe(`Built-in theme name. One of: ${themeNames.join(', ')}`),
44
- transparent: z
45
- .boolean()
46
- .optional()
47
- .describe(
48
- 'Render with a transparent background instead of the theme background color. Default: false.',
49
- ),
50
- font: z
51
- .string()
52
- .optional()
53
- .describe('Font family for diagram text. Default: "Inter".'),
54
- }
55
-
56
- export interface RenderSvgToolArgs {
57
- diagram: string
58
- theme?: string | undefined
59
- transparent?: boolean | undefined
60
- font?: string | undefined
61
- }
62
-
63
- /**
64
- * MCP tool handler for `render_mermaid_svg`. Renders Mermaid source to a
65
- * self-contained SVG string, returned as `text` content — SVG is XML text,
66
- * not the raster image the `image` content type expects.
67
- *
68
- * Catches rendering errors (e.g. invalid Mermaid syntax) and returns them
69
- * as an MCP tool error result (`isError: true`) instead of throwing, so a
70
- * bad diagram from the caller surfaces as a normal tool response rather
71
- * than a protocol-level failure.
72
- */
73
- export function renderSvgHandler(input: RenderSvgToolArgs): CallToolResult {
74
- try {
75
- const themeColors: DiagramColors | undefined = input.theme
76
- ? THEMES[input.theme]
77
- : undefined
78
- const svg = renderMermaidSVG(input.diagram, {
79
- ...themeColors,
80
- transparent: input.transparent,
81
- font: input.font,
82
- })
83
- return { content: [{ type: 'text', text: svg }] }
84
- } catch (err) {
85
- return {
86
- isError: true,
87
- content: [
88
- {
89
- type: 'text',
90
- text: `Failed to render diagram to SVG: ${err instanceof Error ? err.message : String(err)}`,
91
- },
92
- ],
93
- }
94
- }
95
- }
@@ -1,22 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Craft Docs
4
- Copyright (c) 2026 Dustin Fadler
5
-
6
- Permission is hereby granted, free of charge, to any person obtaining a copy
7
- of this software and associated documentation files (the "Software"), to deal
8
- in the Software without restriction, including without limitation the rights
9
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- copies of the Software, and to permit persons to whom the Software is
11
- furnished to do so, subject to the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be included in all
14
- copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
- SOFTWARE.
@@ -1,15 +0,0 @@
1
- // ============================================================================
2
- // Class member formatting — shared between the SVG (layout.ts) and ASCII
3
- // (ascii/class-diagram.ts) renderers so method parentheses/params can't drift
4
- // between the two again. See issue #290.
5
- // ============================================================================
6
-
7
- import type { ClassMember } from './types.ts'
8
-
9
- /** Format a class member as a display string: visibility + name(+params for methods) + optional type */
10
- export function formatClassMember(m: ClassMember): string {
11
- const vis = m.visibility ? `${m.visibility} ` : ''
12
- const name = m.isMethod ? `${m.name}(${m.params || ''})` : m.name
13
- const type = m.type ? `: ${m.type}` : ''
14
- return `${vis}${name}${type}`
15
- }