@diagrammo/dgmo 0.8.2 → 0.8.4

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 (120) hide show
  1. package/.claude/commands/dgmo-diagram-this.md +60 -0
  2. package/.claude/commands/dgmo-document-project.md +128 -0
  3. package/.claude/commands/dgmo.md +185 -50
  4. package/.cursorrules +32 -37
  5. package/.github/copilot-instructions.md +35 -44
  6. package/.windsurfrules +32 -37
  7. package/README.md +4 -4
  8. package/dist/cli.cjs +189 -194
  9. package/dist/editor.cjs +336 -0
  10. package/dist/editor.cjs.map +1 -0
  11. package/dist/editor.d.cts +27 -0
  12. package/dist/editor.d.ts +27 -0
  13. package/dist/editor.js +305 -0
  14. package/dist/editor.js.map +1 -0
  15. package/dist/index.cjs +3699 -1564
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts +7 -6
  18. package/dist/index.d.ts +7 -6
  19. package/dist/index.js +3699 -1564
  20. package/dist/index.js.map +1 -1
  21. package/docs/language-reference.md +822 -1060
  22. package/gallery/fixtures/arc.dgmo +18 -0
  23. package/gallery/fixtures/area.dgmo +19 -0
  24. package/gallery/fixtures/bar-stacked.dgmo +10 -0
  25. package/gallery/fixtures/bar.dgmo +10 -0
  26. package/gallery/fixtures/c4-full.dgmo +52 -0
  27. package/gallery/fixtures/c4.dgmo +17 -0
  28. package/gallery/fixtures/chord.dgmo +12 -0
  29. package/gallery/fixtures/class-basic.dgmo +14 -0
  30. package/gallery/fixtures/class-full.dgmo +43 -0
  31. package/gallery/fixtures/doughnut.dgmo +8 -0
  32. package/gallery/fixtures/flowchart-basic.dgmo +3 -0
  33. package/gallery/fixtures/flowchart-colors.dgmo +5 -0
  34. package/gallery/fixtures/flowchart-complex.dgmo +17 -0
  35. package/gallery/fixtures/flowchart-decision.dgmo +5 -0
  36. package/gallery/fixtures/flowchart-full.dgmo +13 -0
  37. package/gallery/fixtures/flowchart-groups.dgmo +10 -0
  38. package/gallery/fixtures/flowchart-loop.dgmo +7 -0
  39. package/gallery/fixtures/flowchart-nested.dgmo +7 -0
  40. package/gallery/fixtures/flowchart-shapes.dgmo +5 -0
  41. package/gallery/fixtures/function.dgmo +8 -0
  42. package/gallery/fixtures/funnel.dgmo +7 -0
  43. package/gallery/fixtures/gantt-full.dgmo +49 -0
  44. package/gallery/fixtures/gantt.dgmo +42 -0
  45. package/gallery/fixtures/heatmap.dgmo +8 -0
  46. package/gallery/fixtures/infra-full.dgmo +78 -0
  47. package/gallery/fixtures/infra-overload.dgmo +25 -0
  48. package/gallery/fixtures/infra.dgmo +47 -0
  49. package/gallery/fixtures/initiative-status-full.dgmo +46 -0
  50. package/gallery/fixtures/initiative-status-phases.dgmo +29 -0
  51. package/gallery/fixtures/initiative-status.dgmo +9 -0
  52. package/gallery/fixtures/line.dgmo +19 -0
  53. package/gallery/fixtures/multi-line.dgmo +11 -0
  54. package/gallery/fixtures/org-basic.dgmo +16 -0
  55. package/gallery/fixtures/org-full.dgmo +69 -0
  56. package/gallery/fixtures/org-teams.dgmo +25 -0
  57. package/gallery/fixtures/pie.dgmo +9 -0
  58. package/gallery/fixtures/polar-area.dgmo +8 -0
  59. package/gallery/fixtures/quadrant.dgmo +18 -0
  60. package/gallery/fixtures/radar.dgmo +8 -0
  61. package/gallery/fixtures/sankey.dgmo +31 -0
  62. package/gallery/fixtures/scatter.dgmo +21 -0
  63. package/gallery/fixtures/sequence-tags-protocols.dgmo +45 -0
  64. package/gallery/fixtures/sequence-tags.dgmo +41 -0
  65. package/gallery/fixtures/sequence.dgmo +35 -0
  66. package/gallery/fixtures/sitemap-basic.dgmo +12 -0
  67. package/gallery/fixtures/sitemap-full.dgmo +156 -0
  68. package/gallery/fixtures/slope.dgmo +8 -0
  69. package/gallery/fixtures/spr-eras.dgmo +62 -0
  70. package/gallery/fixtures/state.dgmo +30 -0
  71. package/gallery/fixtures/timeline-intraday.dgmo +14 -0
  72. package/gallery/fixtures/timeline.dgmo +32 -0
  73. package/gallery/fixtures/venn.dgmo +10 -0
  74. package/gallery/fixtures/wordcloud.dgmo +24 -0
  75. package/package.json +51 -2
  76. package/src/c4/layout.ts +372 -90
  77. package/src/c4/parser.ts +113 -62
  78. package/src/chart.ts +149 -64
  79. package/src/class/parser.ts +84 -28
  80. package/src/class/renderer.ts +2 -2
  81. package/src/cli.ts +179 -77
  82. package/src/completion.ts +381 -182
  83. package/src/d3.ts +1026 -428
  84. package/src/dgmo-mermaid.ts +16 -13
  85. package/src/dgmo-router.ts +70 -24
  86. package/src/echarts.ts +682 -169
  87. package/src/editor/dgmo.grammar +69 -0
  88. package/src/editor/dgmo.grammar.d.ts +2 -0
  89. package/src/editor/dgmo.grammar.js +18 -0
  90. package/src/editor/dgmo.grammar.terms.d.ts +5 -0
  91. package/src/editor/dgmo.grammar.terms.js +35 -0
  92. package/src/editor/highlight.ts +36 -0
  93. package/src/editor/index.ts +28 -0
  94. package/src/editor/keywords.ts +220 -0
  95. package/src/editor/tokens.ts +30 -0
  96. package/src/er/parser.ts +55 -29
  97. package/src/er/renderer.ts +112 -53
  98. package/src/gantt/calculator.ts +91 -29
  99. package/src/gantt/parser.ts +291 -97
  100. package/src/gantt/renderer.ts +1120 -350
  101. package/src/graph/flowchart-parser.ts +48 -75
  102. package/src/graph/state-parser.ts +54 -27
  103. package/src/infra/parser.ts +161 -177
  104. package/src/infra/renderer.ts +723 -271
  105. package/src/infra/types.ts +0 -1
  106. package/src/initiative-status/parser.ts +144 -56
  107. package/src/kanban/parser.ts +27 -19
  108. package/src/org/layout.ts +111 -44
  109. package/src/org/parser.ts +71 -27
  110. package/src/org/resolver.ts +3 -3
  111. package/src/palettes/index.ts +3 -2
  112. package/src/render.ts +1 -2
  113. package/src/sequence/parser.ts +209 -100
  114. package/src/sitemap/parser.ts +73 -44
  115. package/src/utils/arrows.ts +2 -22
  116. package/src/utils/duration.ts +39 -21
  117. package/src/utils/legend-constants.ts +0 -2
  118. package/src/utils/parsing.ts +82 -72
  119. package/src/utils/tag-groups.ts +4 -41
  120. package/src/infra/serialize.ts +0 -67
package/dist/editor.js ADDED
@@ -0,0 +1,305 @@
1
+ // src/editor/index.ts
2
+ import { LRLanguage, LanguageSupport } from "@codemirror/language";
3
+
4
+ // src/editor/dgmo.grammar.js
5
+ import { LRParser } from "@lezer/lr";
6
+
7
+ // src/editor/dgmo.grammar.terms.js
8
+ var ChartType = 1;
9
+ var TagKeyword = 2;
10
+ var DirectiveKeyword = 3;
11
+ var ControlKeyword = 4;
12
+ var ModifierKeyword = 5;
13
+
14
+ // src/editor/keywords.ts
15
+ var CHART_TYPES = /* @__PURE__ */ new Set([
16
+ // Diagram types
17
+ "sequence",
18
+ "flowchart",
19
+ "class",
20
+ "er",
21
+ "org",
22
+ "kanban",
23
+ "c4",
24
+ "initiative-status",
25
+ "state",
26
+ "sitemap",
27
+ "infra",
28
+ "gantt",
29
+ // Data chart types
30
+ "bar",
31
+ "line",
32
+ "pie",
33
+ "doughnut",
34
+ "area",
35
+ "polar-area",
36
+ "radar",
37
+ "bar-stacked",
38
+ "multi-line",
39
+ "scatter",
40
+ "sankey",
41
+ "chord",
42
+ "function",
43
+ "heatmap",
44
+ "funnel",
45
+ // Visualization types
46
+ "slope",
47
+ "wordcloud",
48
+ "arc",
49
+ "timeline",
50
+ "venn",
51
+ "quadrant"
52
+ ]);
53
+ var METADATA_KEYS = /* @__PURE__ */ new Set([
54
+ "title",
55
+ "series",
56
+ "orientation",
57
+ "x-label",
58
+ "y-label",
59
+ "size-label",
60
+ "x",
61
+ "columns",
62
+ "rows",
63
+ "labels",
64
+ "rotate",
65
+ "max",
66
+ "size",
67
+ "order",
68
+ "sort",
69
+ "scale",
70
+ "values",
71
+ "notation",
72
+ "x-axis",
73
+ "y-axis",
74
+ "top-right",
75
+ "top-left",
76
+ "bottom-right",
77
+ "bottom-left"
78
+ ]);
79
+ var TAG_KEYWORD = "tag";
80
+ var DIRECTIVE_KEYWORDS = /* @__PURE__ */ new Set([
81
+ // Gantt
82
+ "start",
83
+ "era",
84
+ "marker",
85
+ "holiday",
86
+ "workweek",
87
+ "today-marker",
88
+ "critical-path",
89
+ "no-dependencies",
90
+ "sort",
91
+ // Tags
92
+ "tags",
93
+ "import",
94
+ "active-tag",
95
+ "hide",
96
+ // ER
97
+ "notation",
98
+ // Class
99
+ "extends",
100
+ "implements",
101
+ "abstract",
102
+ "interface",
103
+ "enum",
104
+ // C4
105
+ "containers",
106
+ "components",
107
+ "deployment",
108
+ // Infra directives
109
+ "sub-node-label",
110
+ "show-sub-node-count",
111
+ "no-auto-color",
112
+ // Infra node properties
113
+ "description",
114
+ "instances",
115
+ "max-rps",
116
+ "latency-ms",
117
+ "uptime",
118
+ "firewall-block",
119
+ "ratelimit-rps",
120
+ "cb-error-threshold",
121
+ "cb-latency-threshold-ms",
122
+ "buffer",
123
+ "drain-rate",
124
+ "retention-hours",
125
+ "partitions",
126
+ "split",
127
+ "slo-p90-latency-ms",
128
+ "slo-availability",
129
+ "cache-hit",
130
+ "concurrency",
131
+ "duration-ms",
132
+ "cold-start-ms",
133
+ "rps",
134
+ // Sequence
135
+ "activations",
136
+ "no-activations",
137
+ "collapse-notes",
138
+ "no-collapse-notes",
139
+ // Data charts
140
+ "stacked",
141
+ "no-label-name",
142
+ "no-label-value",
143
+ "no-label-percent",
144
+ // Quadrant
145
+ "x-axis",
146
+ "y-axis",
147
+ "top-right",
148
+ "top-left",
149
+ "bottom-right",
150
+ "bottom-left",
151
+ // Layout
152
+ "direction-tb",
153
+ "direction-lr",
154
+ // Initiative-status
155
+ "contains",
156
+ // Data chart metadata
157
+ "title",
158
+ "series",
159
+ "orientation",
160
+ "x-label",
161
+ "y-label",
162
+ "size-label",
163
+ "columns",
164
+ "rows",
165
+ "labels",
166
+ "rotate",
167
+ "scale",
168
+ "values"
169
+ ]);
170
+ var CONTROL_KEYWORDS = /* @__PURE__ */ new Set([
171
+ "if",
172
+ "else",
173
+ "loop",
174
+ "parallel",
175
+ "note"
176
+ ]);
177
+ var STATUS_KEYWORDS = /* @__PURE__ */ new Set([
178
+ "na",
179
+ "todo",
180
+ "wip",
181
+ "done",
182
+ "blocked",
183
+ "in-progress",
184
+ "backlog",
185
+ "ready"
186
+ ]);
187
+ var MODIFIER_KEYWORDS = /* @__PURE__ */ new Set([
188
+ "alias",
189
+ "aka",
190
+ "position",
191
+ "default",
192
+ // Sequence participant types
193
+ "actor",
194
+ "service",
195
+ "database",
196
+ "queue",
197
+ "cache",
198
+ "gateway",
199
+ "external",
200
+ "networking",
201
+ "frontend",
202
+ // C4 element types
203
+ "system",
204
+ "person",
205
+ "container",
206
+ "component",
207
+ // ER column modifiers
208
+ "pk",
209
+ "fk",
210
+ "nullable",
211
+ "unique",
212
+ // ER data types
213
+ "int",
214
+ "varchar",
215
+ "text",
216
+ "boolean",
217
+ "date",
218
+ "timestamp",
219
+ "float",
220
+ "decimal"
221
+ ]);
222
+
223
+ // src/editor/tokens.ts
224
+ function specializeKeyword(value) {
225
+ if (CHART_TYPES.has(value)) return ChartType;
226
+ if (value === TAG_KEYWORD) return TagKeyword;
227
+ if (DIRECTIVE_KEYWORDS.has(value)) return DirectiveKeyword;
228
+ if (CONTROL_KEYWORDS.has(value)) return ControlKeyword;
229
+ if (STATUS_KEYWORDS.has(value)) return ModifierKeyword;
230
+ if (MODIFIER_KEYWORDS.has(value)) return ModifierKeyword;
231
+ return -1;
232
+ }
233
+
234
+ // src/editor/dgmo.grammar.js
235
+ var parser = LRParser.deserialize({
236
+ version: 14,
237
+ states: "!WQVQPOOOOQO'#DU'#DUOOQO'#DP'#DPO%]QPO'#CdOOQO'#DO'#DOQVQPOOOOQO-E6}-E6}OOQO,59O,59OOOQO-E6|-E6|",
238
+ stateData: "&Q~OvOS~OPPOQPORPOSPOTPOVSOXPOYPOZPO[PO]PO^PO_PO`POaPObPOcPOdPOePOfPOgPOhPOiPOjPOkPOlPOmPOnPOoPOpPOqPOwSO~OPPOQPORPOSPOTPOXPOYPOZPO[PO]PO^PO_PO`POaPObPOcPOdPOePOfPOgPOhPOiPOjPOkPOlPOmPOnPOoPOpPOqPO~OwVO~P#]OVXYZ[]^_`ghijklmnoabcdefpqk~",
239
+ goto: "!byPPPPPPPPzPPPPPPPPPPPPPPPPPPPPPPPPP!O!UPPPP!]TSOTQTORWTSROTRURVQORT",
240
+ nodeNames: "\u26A0 ChartType TagKeyword DirectiveKeyword ControlKeyword ModifierKeyword Document Comment ContentLine SyncArrow AsyncArrow Duration DateLiteral Percentage Number SectionMarker Url OpenBracket CloseBracket OpenParen CloseParen OpenAngle CloseAngle ColorAnnotation Pipe Colon Comma Plus Dash Tilde Star Question Identifier Punct",
241
+ maxTerm: 40,
242
+ skippedNodes: [0],
243
+ repeatNodeCount: 2,
244
+ tokenData: "9q~RxOX#oXY#tYZ$PZp#opq#tqt#oux#oxy$Uyz$tz{${{|%S|}%Z}!O%b!O!P#o!P!Q%q!Q![&b![!],v!]!^#o!^!_,}!_!`-U!`!a-c!a!b-j!b!c#o!c!}-q!}#O0w#O#P#o#P#Q0|#Q#R#o#R#S-q#S#T#o#T#[-q#[#]1T#]#o-q#o#p#o#p#q9T#q#r#o#r#s9[#s;'S#o;'S;=`9k<%lO#o~#tOq~~#yQv~XY#tpq#t~$UOw~~$]Qc~q~}!O$c#T#o$c~$fRyz$o}!O$c#T#o$c~$tOg~~${Od~q~~%SOn~q~~%ZOk~q~~%bOj~q~~%iPl~q~!`!a%l~%qOX~~%vPq~!P!Q%y~&OSV~OY%yZ;'S%y;'S;=`&[<%lO%y~&_P;=`<%l%y~&iY^~q~uv'X!O!P'^!Q![(z#U#V(U#W#X([#[#]([#a#b(i#e#f([#k#l([#m#n([~'^O]~~'aP!Q!['d~'iX^~uv'X!Q!['d#U#V(U#W#X([#[#]([#a#b(i#e#f([#k#l([#m#n([~(XP#W#X([~(aPZ~!a!b(d~(iOZ~~(nQZ~!a!b(d#]#^(t~(wP#b#c([~)PY^~uv'X!O!P'^!Q![)o#U#V(U#W#X([#[#]([#a#b(i#e#f([#k#l([#m#n([~)tY^~uv'X!O!P'^!Q![*d#U#V(U#W#X([#[#]([#a#b(i#e#f([#k#l([#m#n([~*iZ^~uv'X}!O+[!O!P'^!Q![,R#U#V(U#W#X([#[#]([#a#b(i#e#f([#k#l([#m#n([~+_P!Q![+b~+eP!Q![+h~+mP[~}!O+p~+sP!Q![+v~+yP!Q![+|~,RO[~~,WY^~uv'X!O!P'^!Q![,R#U#V(U#W#X([#[#]([#a#b(i#e#f([#k#l([#m#n([~,}Oi~q~~-UOe~q~~-ZPq~!_!`-^~-cO_~~-jOf~q~~-qOo~q~~-x_p~q~qr.wst.wvw.wwx.w{|.w}!O/{!O!P.w!P!Q.w!Q![.w!_!`.w!a!b.w!b!c.w!c!}.w#R#S.w#T#o.w~.|_p~qr.wst.wvw.wwx.w{|.w}!O/{!O!P.w!P!Q.w!Q![.w!_!`.w!a!b.w!b!c.w!c!}.w#R#S.w#T#o.w~0O]qr.wst.wvw.wwx.w{|.w!O!P.w!P!Q.w!_!`.w!a!b.w!b!c.w!c!}.w#R#S.w#T#o.w~0|Oa~~1TOb~q~~1[ap~q~qr.wst.wvw.wwx.w{|.w}!O/{!O!P.w!P!Q.w!Q![.w!_!`.w!a!b.w!b!c.w!c!}.w#R#S.w#T#h.w#h#i2a#i#o.w~2fap~qr.wst.wvw.wwx.w{|.w}!O/{!O!P.w!P!Q.w!Q![.w!_!`.w!a!b.w!b!c.w!c!}.w#R#S.w#T#h.w#h#i3k#i#o.w~3pap~qr.wst.wvw.wwx.w{|.w}!O/{!O!P.w!P!Q.w!Q![.w!_!`.w!a!b.w!b!c.w!c!}.w#R#S.w#T#d.w#d#e4u#e#o.w~4zbp~qr.wst.wvw.wwx.w{|.w}!O/{!O!P.w!P!Q.w!Q![.w![!]6S!_!`.w!a!b.w!b!c.w!c!}.w#R#S.w#T#g.w#g#h7|#h#o.w~6VP!P!Q6Y~6]P!P!Q6`~6cYOX7RZp7Rqy7Rz|7R}!`7R!a#P7R#Q#p7R#q;'S7R;'S;=`7v<%lO7R~7WY`~OX7RZp7Rqy7Rz|7R}!`7R!a#P7R#Q#p7R#q;'S7R;'S;=`7v<%lO7R~7yP;=`<%l7R~8R`p~qr.wst.wvw.wwx.w{|.w}!O/{!O!P.w!P!Q.w!Q![.w![!]6S!_!`.w!a!b.w!b!c.w!c!}.w#R#S.w#T#o.w~9[Oh~q~~9cPm~q~!`!a9f~9kOY~~9nP;=`<%l#o",
245
+ tokenizers: [0],
246
+ topRules: { "Document": [0, 6] },
247
+ specialized: [{ term: 32, get: (value, stack) => specializeKeyword(value, stack) << 1, external: specializeKeyword }],
248
+ tokenPrec: 204
249
+ });
250
+
251
+ // src/editor/highlight.ts
252
+ import { styleTags, tags as t } from "@lezer/highlight";
253
+ var dgmoHighlighting = styleTags({
254
+ Comment: t.lineComment,
255
+ ChartType: t.typeName,
256
+ TagKeyword: t.definitionKeyword,
257
+ DirectiveKeyword: t.keyword,
258
+ ControlKeyword: t.controlKeyword,
259
+ ModifierKeyword: t.modifier,
260
+ SyncArrow: t.operator,
261
+ AsyncArrow: t.operator,
262
+ Duration: t.number,
263
+ DateLiteral: t.number,
264
+ Number: t.number,
265
+ Percentage: t.number,
266
+ SectionMarker: t.heading,
267
+ OpenBracket: t.squareBracket,
268
+ CloseBracket: t.squareBracket,
269
+ OpenParen: t.paren,
270
+ CloseParen: t.paren,
271
+ OpenAngle: t.angleBracket,
272
+ CloseAngle: t.angleBracket,
273
+ Url: t.url,
274
+ ColorAnnotation: t.atom,
275
+ Pipe: t.separator,
276
+ Colon: t.separator,
277
+ Plus: t.separator,
278
+ Comma: t.punctuation,
279
+ Dash: t.operator,
280
+ Tilde: t.operator,
281
+ Star: t.operator,
282
+ Question: t.operator,
283
+ Punct: t.punctuation
284
+ });
285
+
286
+ // src/editor/index.ts
287
+ var dgmoParser = parser.configure({
288
+ props: [dgmoHighlighting]
289
+ });
290
+ var dgmoLanguage = LRLanguage.define({
291
+ name: "dgmo",
292
+ parser: dgmoParser
293
+ });
294
+ var dgmoLanguageSupport = new LanguageSupport(dgmoLanguage);
295
+ var dgmoExtension = dgmoLanguageSupport;
296
+ export {
297
+ CHART_TYPES,
298
+ METADATA_KEYS,
299
+ dgmoExtension,
300
+ dgmoHighlighting,
301
+ dgmoLanguage,
302
+ dgmoLanguageSupport,
303
+ dgmoParser
304
+ };
305
+ //# sourceMappingURL=editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/editor/index.ts","../src/editor/dgmo.grammar.js","../src/editor/dgmo.grammar.terms.js","../src/editor/keywords.ts","../src/editor/tokens.ts","../src/editor/highlight.ts"],"sourcesContent":["import { LRLanguage, LanguageSupport } from '@codemirror/language';\nimport type { Extension } from '@codemirror/state';\nimport { parser } from './dgmo.grammar.js';\nimport { dgmoHighlighting } from './highlight';\n\nexport { CHART_TYPES, METADATA_KEYS } from './keywords';\nexport { dgmoHighlighting } from './highlight';\n\n/** The raw Lezer parser for DGMO. */\nexport const dgmoParser = parser.configure({\n props: [dgmoHighlighting],\n});\n\n/** LRLanguage wrapper for CodeMirror. */\nexport const dgmoLanguage = LRLanguage.define({\n name: 'dgmo',\n parser: dgmoParser,\n});\n\n/** Full language support (language + extensions). */\nexport const dgmoLanguageSupport = new LanguageSupport(dgmoLanguage);\n\n/**\n * Drop-in replacement for the old dgmoExtension.\n * Consumers should add indentationMarkers() separately if desired\n * (from @replit/codemirror-indentation-markers).\n */\nexport const dgmoExtension: Extension = dgmoLanguageSupport;\n","// This file was generated by lezer-generator. You probably shouldn't edit it.\nimport {LRParser} from \"@lezer/lr\"\nimport {specializeKeyword} from \"./tokens\"\nexport const parser = LRParser.deserialize({\n version: 14,\n states: \"!WQVQPOOOOQO'#DU'#DUOOQO'#DP'#DPO%]QPO'#CdOOQO'#DO'#DOQVQPOOOOQO-E6}-E6}OOQO,59O,59OOOQO-E6|-E6|\",\n stateData: \"&Q~OvOS~OPPOQPORPOSPOTPOVSOXPOYPOZPO[PO]PO^PO_PO`POaPObPOcPOdPOePOfPOgPOhPOiPOjPOkPOlPOmPOnPOoPOpPOqPOwSO~OPPOQPORPOSPOTPOXPOYPOZPO[PO]PO^PO_PO`POaPObPOcPOdPOePOfPOgPOhPOiPOjPOkPOlPOmPOnPOoPOpPOqPO~OwVO~P#]OVXYZ[]^_`ghijklmnoabcdefpqk~\",\n goto: \"!byPPPPPPPPzPPPPPPPPPPPPPPPPPPPPPPPPP!O!UPPPP!]TSOTQTORWTSROTRURVQORT\",\n nodeNames: \"⚠ ChartType TagKeyword DirectiveKeyword ControlKeyword ModifierKeyword Document Comment ContentLine SyncArrow AsyncArrow Duration DateLiteral Percentage Number SectionMarker Url OpenBracket CloseBracket OpenParen CloseParen OpenAngle CloseAngle ColorAnnotation Pipe Colon Comma Plus Dash Tilde Star Question Identifier Punct\",\n maxTerm: 40,\n skippedNodes: [0],\n repeatNodeCount: 2,\n tokenData: \"9q~RxOX#oXY#tYZ$PZp#opq#tqt#oux#oxy$Uyz$tz{${{|%S|}%Z}!O%b!O!P#o!P!Q%q!Q![&b![!],v!]!^#o!^!_,}!_!`-U!`!a-c!a!b-j!b!c#o!c!}-q!}#O0w#O#P#o#P#Q0|#Q#R#o#R#S-q#S#T#o#T#[-q#[#]1T#]#o-q#o#p#o#p#q9T#q#r#o#r#s9[#s;'S#o;'S;=`9k<%lO#o~#tOq~~#yQv~XY#tpq#t~$UOw~~$]Qc~q~}!O$c#T#o$c~$fRyz$o}!O$c#T#o$c~$tOg~~${Od~q~~%SOn~q~~%ZOk~q~~%bOj~q~~%iPl~q~!`!a%l~%qOX~~%vPq~!P!Q%y~&OSV~OY%yZ;'S%y;'S;=`&[<%lO%y~&_P;=`<%l%y~&iY^~q~uv'X!O!P'^!Q![(z#U#V(U#W#X([#[#]([#a#b(i#e#f([#k#l([#m#n([~'^O]~~'aP!Q!['d~'iX^~uv'X!Q!['d#U#V(U#W#X([#[#]([#a#b(i#e#f([#k#l([#m#n([~(XP#W#X([~(aPZ~!a!b(d~(iOZ~~(nQZ~!a!b(d#]#^(t~(wP#b#c([~)PY^~uv'X!O!P'^!Q![)o#U#V(U#W#X([#[#]([#a#b(i#e#f([#k#l([#m#n([~)tY^~uv'X!O!P'^!Q![*d#U#V(U#W#X([#[#]([#a#b(i#e#f([#k#l([#m#n([~*iZ^~uv'X}!O+[!O!P'^!Q![,R#U#V(U#W#X([#[#]([#a#b(i#e#f([#k#l([#m#n([~+_P!Q![+b~+eP!Q![+h~+mP[~}!O+p~+sP!Q![+v~+yP!Q![+|~,RO[~~,WY^~uv'X!O!P'^!Q![,R#U#V(U#W#X([#[#]([#a#b(i#e#f([#k#l([#m#n([~,}Oi~q~~-UOe~q~~-ZPq~!_!`-^~-cO_~~-jOf~q~~-qOo~q~~-x_p~q~qr.wst.wvw.wwx.w{|.w}!O/{!O!P.w!P!Q.w!Q![.w!_!`.w!a!b.w!b!c.w!c!}.w#R#S.w#T#o.w~.|_p~qr.wst.wvw.wwx.w{|.w}!O/{!O!P.w!P!Q.w!Q![.w!_!`.w!a!b.w!b!c.w!c!}.w#R#S.w#T#o.w~0O]qr.wst.wvw.wwx.w{|.w!O!P.w!P!Q.w!_!`.w!a!b.w!b!c.w!c!}.w#R#S.w#T#o.w~0|Oa~~1TOb~q~~1[ap~q~qr.wst.wvw.wwx.w{|.w}!O/{!O!P.w!P!Q.w!Q![.w!_!`.w!a!b.w!b!c.w!c!}.w#R#S.w#T#h.w#h#i2a#i#o.w~2fap~qr.wst.wvw.wwx.w{|.w}!O/{!O!P.w!P!Q.w!Q![.w!_!`.w!a!b.w!b!c.w!c!}.w#R#S.w#T#h.w#h#i3k#i#o.w~3pap~qr.wst.wvw.wwx.w{|.w}!O/{!O!P.w!P!Q.w!Q![.w!_!`.w!a!b.w!b!c.w!c!}.w#R#S.w#T#d.w#d#e4u#e#o.w~4zbp~qr.wst.wvw.wwx.w{|.w}!O/{!O!P.w!P!Q.w!Q![.w![!]6S!_!`.w!a!b.w!b!c.w!c!}.w#R#S.w#T#g.w#g#h7|#h#o.w~6VP!P!Q6Y~6]P!P!Q6`~6cYOX7RZp7Rqy7Rz|7R}!`7R!a#P7R#Q#p7R#q;'S7R;'S;=`7v<%lO7R~7WY`~OX7RZp7Rqy7Rz|7R}!`7R!a#P7R#Q#p7R#q;'S7R;'S;=`7v<%lO7R~7yP;=`<%l7R~8R`p~qr.wst.wvw.wwx.w{|.w}!O/{!O!P.w!P!Q.w!Q![.w![!]6S!_!`.w!a!b.w!b!c.w!c!}.w#R#S.w#T#o.w~9[Oh~q~~9cPm~q~!`!a9f~9kOY~~9nP;=`<%l#o\",\n tokenizers: [0],\n topRules: {\"Document\":[0,6]},\n specialized: [{term: 32, get: (value, stack) => (specializeKeyword(value, stack) << 1), external: specializeKeyword}],\n tokenPrec: 204\n})\n","// This file was generated by lezer-generator. You probably shouldn't edit it.\nexport const\n ChartType = 1,\n TagKeyword = 2,\n DirectiveKeyword = 3,\n ControlKeyword = 4,\n ModifierKeyword = 5,\n Document = 6,\n Comment = 7,\n ContentLine = 8,\n SyncArrow = 9,\n AsyncArrow = 10,\n Duration = 11,\n DateLiteral = 12,\n Percentage = 13,\n Number = 14,\n SectionMarker = 15,\n Url = 16,\n OpenBracket = 17,\n CloseBracket = 18,\n OpenParen = 19,\n CloseParen = 20,\n OpenAngle = 21,\n CloseAngle = 22,\n ColorAnnotation = 23,\n Pipe = 24,\n Colon = 25,\n Comma = 26,\n Plus = 27,\n Dash = 28,\n Tilde = 29,\n Star = 30,\n Question = 31,\n Identifier = 32,\n Punct = 33\n","/** All supported DGMO chart types. */\nexport const CHART_TYPES = new Set([\n // Diagram types\n 'sequence',\n 'flowchart',\n 'class',\n 'er',\n 'org',\n 'kanban',\n 'c4',\n 'initiative-status',\n 'state',\n 'sitemap',\n 'infra',\n 'gantt',\n // Data chart types\n 'bar',\n 'line',\n 'pie',\n 'doughnut',\n 'area',\n 'polar-area',\n 'radar',\n 'bar-stacked',\n 'multi-line',\n 'scatter',\n 'sankey',\n 'chord',\n 'function',\n 'heatmap',\n 'funnel',\n // Visualization types\n 'slope',\n 'wordcloud',\n 'arc',\n 'timeline',\n 'venn',\n 'quadrant',\n]);\n\n/** Metadata keys recognized across chart types. */\nexport const METADATA_KEYS = new Set([\n 'title',\n 'series',\n 'orientation',\n 'x-label',\n 'y-label',\n 'size-label',\n 'x',\n 'columns',\n 'rows',\n 'labels',\n 'rotate',\n 'max',\n 'size',\n 'order',\n 'sort',\n 'scale',\n 'values',\n 'notation',\n 'x-axis',\n 'y-axis',\n 'top-right',\n 'top-left',\n 'bottom-right',\n 'bottom-left',\n]);\n\n/** Tag declaration keyword. */\nexport const TAG_KEYWORD = 'tag';\n\n/** Directive keywords — commands that configure chart behavior. */\nexport const DIRECTIVE_KEYWORDS = new Set([\n // Gantt\n 'start',\n 'era',\n 'marker',\n 'holiday',\n 'workweek',\n 'today-marker',\n 'critical-path',\n 'no-dependencies',\n 'sort',\n // Tags\n 'tags',\n 'import',\n 'active-tag',\n 'hide',\n // ER\n 'notation',\n // Class\n 'extends',\n 'implements',\n 'abstract',\n 'interface',\n 'enum',\n // C4\n 'containers',\n 'components',\n 'deployment',\n // Infra directives\n 'sub-node-label',\n 'show-sub-node-count',\n 'no-auto-color',\n // Infra node properties\n 'description',\n 'instances',\n 'max-rps',\n 'latency-ms',\n 'uptime',\n 'firewall-block',\n 'ratelimit-rps',\n 'cb-error-threshold',\n 'cb-latency-threshold-ms',\n 'buffer',\n 'drain-rate',\n 'retention-hours',\n 'partitions',\n 'split',\n 'slo-p90-latency-ms',\n 'slo-availability',\n 'cache-hit',\n 'concurrency',\n 'duration-ms',\n 'cold-start-ms',\n 'rps',\n // Sequence\n 'activations',\n 'no-activations',\n 'collapse-notes',\n 'no-collapse-notes',\n // Data charts\n 'stacked',\n 'no-label-name',\n 'no-label-value',\n 'no-label-percent',\n // Quadrant\n 'x-axis',\n 'y-axis',\n 'top-right',\n 'top-left',\n 'bottom-right',\n 'bottom-left',\n // Layout\n 'direction-tb',\n 'direction-lr',\n // Initiative-status\n 'contains',\n // Data chart metadata\n 'title',\n 'series',\n 'orientation',\n 'x-label',\n 'y-label',\n 'size-label',\n 'columns',\n 'rows',\n 'labels',\n 'rotate',\n 'scale',\n 'values',\n]);\n\n/** Control flow keywords — structural blocks. */\nexport const CONTROL_KEYWORDS = new Set([\n 'if',\n 'else',\n 'loop',\n 'parallel',\n 'note',\n]);\n\n/** Status keywords — initiative-status, kanban. */\nexport const STATUS_KEYWORDS = new Set([\n 'na',\n 'todo',\n 'wip',\n 'done',\n 'blocked',\n 'in-progress',\n 'backlog',\n 'ready',\n]);\n\n/** Modifier keywords — adjust declarations. */\nexport const MODIFIER_KEYWORDS = new Set([\n 'alias',\n 'aka',\n 'position',\n 'default',\n // Sequence participant types\n 'actor',\n 'service',\n 'database',\n 'queue',\n 'cache',\n 'gateway',\n 'external',\n 'networking',\n 'frontend',\n // C4 element types\n 'system',\n 'person',\n 'container',\n 'component',\n // ER column modifiers\n 'pk',\n 'fk',\n 'nullable',\n 'unique',\n // ER data types\n 'int',\n 'varchar',\n 'text',\n 'boolean',\n 'date',\n 'timestamp',\n 'float',\n 'decimal',\n]);\n","import {\n ChartType,\n TagKeyword,\n DirectiveKeyword,\n ControlKeyword,\n ModifierKeyword,\n} from './dgmo.grammar.terms.js';\nimport {\n CHART_TYPES,\n TAG_KEYWORD,\n DIRECTIVE_KEYWORDS,\n CONTROL_KEYWORDS,\n STATUS_KEYWORDS,\n MODIFIER_KEYWORDS,\n} from './keywords';\n\n/**\n * Keyword specializer for the Lezer grammar.\n * Called on every Identifier token — returns a specialized term ID\n * or -1 to keep it as a plain Identifier.\n */\nexport function specializeKeyword(value: string): number {\n if (CHART_TYPES.has(value)) return ChartType;\n if (value === TAG_KEYWORD) return TagKeyword;\n if (DIRECTIVE_KEYWORDS.has(value)) return DirectiveKeyword;\n if (CONTROL_KEYWORDS.has(value)) return ControlKeyword;\n if (STATUS_KEYWORDS.has(value)) return ModifierKeyword;\n if (MODIFIER_KEYWORDS.has(value)) return ModifierKeyword;\n return -1;\n}\n","import type { NodePropSource } from '@lezer/common';\nimport { styleTags, tags as t } from '@lezer/highlight';\n\n/** Maps grammar node names to semantic highlight tags. */\nexport const dgmoHighlighting: NodePropSource = styleTags({\n Comment: t.lineComment,\n ChartType: t.typeName,\n TagKeyword: t.definitionKeyword,\n DirectiveKeyword: t.keyword,\n ControlKeyword: t.controlKeyword,\n ModifierKeyword: t.modifier,\n SyncArrow: t.operator,\n AsyncArrow: t.operator,\n Duration: t.number,\n DateLiteral: t.number,\n Number: t.number,\n Percentage: t.number,\n SectionMarker: t.heading,\n OpenBracket: t.squareBracket,\n CloseBracket: t.squareBracket,\n OpenParen: t.paren,\n CloseParen: t.paren,\n OpenAngle: t.angleBracket,\n CloseAngle: t.angleBracket,\n Url: t.url,\n ColorAnnotation: t.atom,\n Pipe: t.separator,\n Colon: t.separator,\n Plus: t.separator,\n Comma: t.punctuation,\n Dash: t.operator,\n Tilde: t.operator,\n Star: t.operator,\n Question: t.operator,\n Punct: t.punctuation,\n});\n"],"mappings":"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","names":[]}