@diagrammo/dgmo 0.10.1 → 0.10.2

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 (48) hide show
  1. package/dist/auto.cjs +1 -1
  2. package/dist/auto.js +1 -1
  3. package/dist/auto.mjs +1 -1
  4. package/package.json +2 -2
  5. package/docs/guide/chart-arc.md +0 -71
  6. package/docs/guide/chart-area.md +0 -73
  7. package/docs/guide/chart-bar-stacked.md +0 -61
  8. package/docs/guide/chart-bar.md +0 -62
  9. package/docs/guide/chart-boxes-and-lines.md +0 -243
  10. package/docs/guide/chart-c4.md +0 -298
  11. package/docs/guide/chart-chord.md +0 -43
  12. package/docs/guide/chart-class.md +0 -204
  13. package/docs/guide/chart-cycle.md +0 -156
  14. package/docs/guide/chart-doughnut.md +0 -38
  15. package/docs/guide/chart-er.md +0 -218
  16. package/docs/guide/chart-flowchart.md +0 -102
  17. package/docs/guide/chart-function.md +0 -56
  18. package/docs/guide/chart-funnel.md +0 -38
  19. package/docs/guide/chart-gantt.md +0 -368
  20. package/docs/guide/chart-heatmap.md +0 -41
  21. package/docs/guide/chart-infra.md +0 -694
  22. package/docs/guide/chart-journey-map.md +0 -179
  23. package/docs/guide/chart-kanban.md +0 -158
  24. package/docs/guide/chart-line.md +0 -79
  25. package/docs/guide/chart-mindmap.md +0 -198
  26. package/docs/guide/chart-multi-line.md +0 -84
  27. package/docs/guide/chart-org.md +0 -209
  28. package/docs/guide/chart-pie.md +0 -39
  29. package/docs/guide/chart-polar-area.md +0 -38
  30. package/docs/guide/chart-pyramid.md +0 -111
  31. package/docs/guide/chart-quadrant.md +0 -69
  32. package/docs/guide/chart-radar.md +0 -38
  33. package/docs/guide/chart-sankey.md +0 -103
  34. package/docs/guide/chart-scatter.md +0 -91
  35. package/docs/guide/chart-sequence.md +0 -354
  36. package/docs/guide/chart-sitemap.md +0 -265
  37. package/docs/guide/chart-slope.md +0 -56
  38. package/docs/guide/chart-state.md +0 -171
  39. package/docs/guide/chart-tech-radar.md +0 -219
  40. package/docs/guide/chart-timeline.md +0 -229
  41. package/docs/guide/chart-venn.md +0 -81
  42. package/docs/guide/chart-wireframe.md +0 -100
  43. package/docs/guide/chart-wordcloud.md +0 -66
  44. package/docs/guide/colors.md +0 -287
  45. package/docs/guide/how-dgmo-thinks.md +0 -277
  46. package/docs/guide/index.md +0 -63
  47. package/docs/guide/keyboard-shortcuts.md +0 -49
  48. package/docs/guide/registry.json +0 -58
@@ -1,354 +0,0 @@
1
- # Sequence Diagram
2
-
3
- ```dgmo
4
- sequence Treasure Hunt App
5
-
6
- User -Search nearby loot-> WebApp
7
- WebApp -GET /treasures?nearby-> TreasureAPI | c: Search
8
- note
9
- - check location
10
- - use compass
11
- - http://example.com
12
- TreasureAPI -Find within 5nm-> MapDB | c: Search
13
- MapDB -3 results-> TreasureAPI
14
- TreasureAPI -locations-> WebApp
15
- WebApp -Show treasure map-> User
16
- ```
17
-
18
- Notice that `User` renders as a stick figure, `OrderDB` as a cylinder, `WebApp` as a monitor, and `PaymentGateway` as a hexagon — all inferred automatically from the names. No declarations needed.
19
-
20
- ## Overview
21
-
22
- The sequence diagram uses an **inference-driven** syntax. Just write messages between participants and Diagrammo automatically:
23
-
24
- - **Creates participants** from their first mention — no declarations needed
25
- - **Infers participant shapes** from naming conventions — `User` gets a stick figure, `OrderDB` gets a cylinder, `API` gets a rounded box
26
- - **Tracks activation bars** from call stacks
27
-
28
- No `end` keywords are needed — blocks are scoped by indentation.
29
-
30
- ## Syntax
31
-
32
- ```
33
- sequence Diagram Title
34
- no-activations
35
-
36
- == Section Label ==
37
-
38
- A -message-> B
39
- A ~async message~> B
40
-
41
- if condition
42
- A -message-> B
43
- else
44
- A -alternative-> C
45
-
46
- loop description
47
- A -retry-> B
48
- ```
49
-
50
- ## Settings
51
-
52
- | Key | Description | Default |
53
- | ---------------- | --------------------------------------- | -------- |
54
- | `chart` | `sequence` (inferred from `->` content) | Optional |
55
- | `title` | Diagram title | None |
56
- | `no-activations` | Hide activation bars (on by default) | off |
57
- | `active-tag` | Tag group to activate on load | None |
58
- | `collapse-notes` | Collapse notes by default | off |
59
-
60
- ## Participants
61
-
62
- ### Automatic Type Inference
63
-
64
- Participants are created automatically when first mentioned in a message. Their shape is inferred from the name — just use descriptive names and Diagrammo does the rest:
65
-
66
- ```
67
- User -createOrder-> OrderService
68
- OrderService -save-> OrderDB
69
- OrderService -cache result-> Redis
70
- OrderService ~publish event~> EventBus
71
- ```
72
-
73
- This creates five participants, each with a different shape — no declarations needed.
74
-
75
- The inference rules are checked in priority order (first match wins):
76
-
77
- | Type | Shape | Naming Patterns |
78
- | ------------ | ------------------- | ---------------------------------------------------------------------------------------------------- |
79
- | `actor` | Stick figure | `User`, `Customer`, `Client`, `Admin`, `Guest`, `Visitor`, `Operator` |
80
- | `database` | Cylinder | Names ending in `DB`; `Database`, `Store`, `Storage`, `Repo`, `Postgres`, `MySQL`, `Mongo`, `Dynamo` |
81
- | `cache` | Dashed cylinder | `Cache`, `Redis`, `Memcache` |
82
- | `queue` | Horizontal cylinder | `Queue`, `Kafka`, `RabbitMQ`, `EventBus`, `SQS`, `SNS`, `PubSub`, `Topic`, `Stream` |
83
- | `networking` | Hexagon | `Gateway`, `Proxy`, `CDN`, `LoadBalancer`, `Firewall`, `DNS`, `Ingress` |
84
- | `frontend` | Monitor | `WebApp`, `Dashboard`, `MobileApp`, `Browser`, `CLI`, `Terminal` |
85
- | `service` | Rounded rectangle | `Service`, `API`, `Lambda`, `Handler`, `Controller`, `Processor`, `Worker` |
86
- | `external` | Dashed rectangle | `External`, `ThirdParty`, `Vendor` |
87
- | `default` | Rectangle | Anything unrecognized |
88
-
89
- Names like `Router`, `Scheduler`, `Controller`, `Handler`, `Worker`, etc. are treated as services (not actors), even though they end in `-er`.
90
-
91
- ### Explicit Declarations (Optional)
92
-
93
- You only need explicit declarations when you want to **override** the inferred type, set a **display alias**, or control **position**:
94
-
95
- ```
96
- // Override type when the name doesn't match conventions
97
- Stripe is an external
98
-
99
- // Set a display alias for a cleaner label
100
- PaymentGW is a networking aka "Payment Gateway"
101
-
102
- // Control left-to-right ordering
103
- OrderDB position -1
104
- ```
105
-
106
- ## Participant Ordering
107
-
108
- Participants are laid out left-to-right based on **first appearance in messages** — the first participant mentioned gets the leftmost column.
109
-
110
- **Position values:**
111
- - `0` = leftmost, `1` = second from left, etc.
112
- - `-1` = rightmost, `-2` = second from right
113
- - If two participants target the same slot, the later one shifts to the nearest free position
114
-
115
- **Groups affect ordering:** members of the same group always stay adjacent (see [Groups](#groups) below). The group is placed where its first member would naturally appear.
116
-
117
- **Priority (highest wins):**
118
- 1. Explicit `position N`
119
- 2. Group adjacency
120
- 3. First appearance in messages
121
-
122
- ```
123
- // Example: force the database to the far right
124
- sequence
125
- User -placeOrder-> OrderService
126
- OrderService -save-> OrderDB
127
- OrderDB position -1
128
- ```
129
-
130
- ## Messages
131
-
132
- ### Call Arrows
133
-
134
- A solid arrow from one participant to another:
135
-
136
- ```
137
- User -login-> API
138
- ```
139
-
140
- ### Return Arrows
141
-
142
- Return arrows are generated automatically from the call stack. When A calls B, a dashed return arrow from B back to A appears once B's work is done:
143
-
144
- ```
145
- User -login-> API
146
- API -query-> UserDB
147
- // Auto-return: UserDB → API (dashed)
148
- // Auto-return: API → User (dashed)
149
- ```
150
-
151
- ### Async / Fire-and-Forget
152
-
153
- No return arrow, no activation on the target — use the `~` arrow:
154
-
155
- ```
156
- API ~sendWelcomeEmail~> EmailService
157
- API ~logEvent~> LogService
158
- ```
159
-
160
- ### Self-Calls
161
-
162
- A participant calling itself renders as a loopback arrow:
163
-
164
- ```
165
- OrderService -validate-> OrderService
166
- ```
167
-
168
- ## Blocks
169
-
170
- Blocks use **indentation** for scoping — no `end` keyword needed.
171
-
172
- ### If / Else
173
-
174
- ```
175
- if user authenticated
176
- API -getOrders-> OrderService
177
- OrderService -query-> OrderDB
178
- else
179
- API -401 Unauthorized-> User
180
- ```
181
-
182
- Renders as a dashed frame with an `if` label and an optional `else` divider.
183
-
184
- ### Loop
185
-
186
- ```
187
- loop retry up to 3 times
188
- OrderService -request-> ExternalAPI
189
- ```
190
-
191
- ### Parallel
192
-
193
- ```
194
- parallel send notifications
195
- API ~email~> EmailService
196
- API ~text~> SMSService
197
- ```
198
-
199
- Blocks can nest inside each other. Unindent to end a block.
200
-
201
- ## Notes
202
-
203
- Add context between messages with `note`:
204
-
205
- ```
206
- User -POST /login-> API
207
- note Validates credentials against LDAP
208
- API -query-> UserDB
209
- ```
210
-
211
- The note appears between the two surrounding messages.
212
-
213
- ## Sections
214
-
215
- Full-width horizontal dividers to organize phases:
216
-
217
- ```
218
- == Authentication ==
219
-
220
- User -login-> API
221
-
222
- == Data Fetch ==
223
-
224
- API -query-> OrderDB
225
-
226
- == Response ==
227
-
228
- API -results-> User
229
- ```
230
-
231
- ## Groups
232
-
233
- Organize participants into labeled boxes in the header:
234
-
235
- ```
236
- [Backend]
237
- OrderService
238
- PaymentService
239
- OrderDB
240
-
241
- [Frontend]
242
- WebApp
243
- MobileApp
244
- ```
245
-
246
- - `[Name]` declares a named group
247
- - Indented names belong to the group
248
- - Grouped participants stay adjacent in the layout
249
- - Groups can carry tag metadata: `[Backend | team: Product]`
250
-
251
- ## Activation Bars
252
-
253
- Thin vertical rectangles on lifelines show when a participant has an active call. They are computed automatically from the call stack:
254
-
255
- - Appear from call arrow to auto-generated return
256
- - Nested calls show overlapping bars
257
- - Self-calls show offset overlapping bars
258
- - Disabled with `no-activations`
259
-
260
- ## Comments
261
-
262
- ```
263
- // This is a comment
264
- // Use // for all comments
265
- ```
266
-
267
- Lines starting with `//` are ignored by the parser.
268
-
269
- ## Tags
270
-
271
- Tags add color-coded metadata dimensions to sequence diagrams. Define a tag group, list its values with colors, then attach values to participants, messages, and groups with pipe metadata.
272
-
273
- ### Defining Tag Groups
274
-
275
- ```
276
- tag Concern alias c
277
- Caching(blue)
278
- Auth(green)
279
- BusinessLogic(purple) default
280
- ```
281
-
282
- - `tag Name` declares a tag group; `alias x` adds a shorthand
283
- - Each entry: `Value(color)` — named color for that value
284
- - `default` on an entry applies it to untagged elements when the group is active
285
-
286
- ### Attaching Tags
287
-
288
- Use `| key: value` after participant declarations, message lines, or group headers:
289
-
290
- ```
291
- API is a service | concern: Caching, team: Platform
292
- User -login-> API | concern: Auth
293
- [Backend | concern: BusinessLogic]
294
- OrderAPI
295
- DB
296
- ```
297
-
298
- - Multiple tags: `| key1: val1, key2: val2`
299
- - Aliases work: `| c: Caching` (if `alias c` was declared)
300
-
301
- ### Tag Resolution
302
-
303
- When a tag group is active, colors are resolved in priority order:
304
-
305
- 1. Explicit metadata on the element
306
- 2. Group propagation (participant inherits from its group)
307
- 3. Receiver inheritance (all incoming tagged messages agree on the same value)
308
- 4. `default` entry value
309
- 5. Neutral (no color)
310
-
311
- ### Legend
312
-
313
- A legend is rendered automatically above participants when tag groups exist. The active group expands to show colored entry dots. In the desktop app, click a group pill to activate it — participants and messages recolor to show that dimension.
314
-
315
- Set `active-tag GroupName` in settings to activate a group on load.
316
-
317
- ## Complete Example
318
-
319
- ```dgmo
320
- sequence E-Commerce Checkout
321
-
322
- tag Layer alias l
323
- Frontend(teal)
324
- Backend(blue)
325
- Storage(purple)
326
-
327
- [Backend]
328
- OrderService
329
- PaymentGateway
330
- OrderDB
331
-
332
- == Browse & Select ==
333
-
334
- User -Add items to cart-> WebApp
335
- WebApp -validateCart-> OrderService
336
-
337
- == Payment ==
338
-
339
- User -Submit payment-> WebApp
340
- WebApp -createOrder-> OrderService
341
- OrderService -charge(amount)-> PaymentGateway
342
-
343
- if payment successful
344
- OrderService -saveOrder-> OrderDB
345
- OrderService ~sendReceipt~> EmailService
346
- WebApp -Order confirmed-> User
347
- else
348
- WebApp -Payment declined-> User
349
-
350
- == Cleanup ==
351
-
352
- loop expire stale carts
353
- OrderService -purgeExpired-> OrderDB
354
- ```
@@ -1,265 +0,0 @@
1
- # Sitemap
2
-
3
- ```dgmo
4
- sitemap The Salty Compass
5
-
6
- tag Auth
7
- Public(green)
8
- Crew Only(blue)
9
-
10
- Home | Auth: Public, description: Landing page with interactive demos
11
- -shop-> Shop
12
- -voyages-> Upcoming Voyages
13
- -join crew-> Sign Up
14
- -sign in-> Login
15
-
16
- [Ship Store]
17
- Shop | Auth: Public
18
- -> Eye Patches
19
- -> Flags & Banners
20
- Eye Patches | Auth: Public
21
- -add to chest-> Cart
22
- Flags & Banners | Auth: Public
23
- -add to chest-> Cart
24
- Cart | Auth: Public
25
- -checkout-> Checkout
26
- Checkout | Auth: Crew Only
27
- -done-> My Orders
28
-
29
- [Voyages]
30
- Upcoming Voyages | Auth: Public
31
- -details-> Voyage Detail
32
- Voyage Detail | Auth: Public
33
- -enlist-> Sign Up
34
-
35
- [Crew Quarters]
36
- Login | Auth: Public
37
- -welcome aboard-> Dashboard
38
- -new pirate-> Sign Up
39
- Sign Up | Auth: Public
40
- -welcome aboard-> Dashboard
41
- Dashboard | Auth: Crew Only
42
- description Full overview of crew activity and orders
43
- -> My Orders
44
- My Orders | Auth: Crew Only
45
- -reorder-> Shop
46
- ```
47
-
48
- ## Overview
49
-
50
- Sitemap diagrams visualize website structure as a hierarchy of pages. Indentation defines the parent-child relationship between pages. Pages can be grouped into containers, connected with arrows, and annotated with metadata and color-coded tag groups.
51
-
52
- ## Syntax
53
-
54
- ```
55
- sitemap Site Title
56
-
57
- Page Name
58
- Child Page
59
- Grandchild Page
60
- ```
61
-
62
- ## Settings
63
-
64
- | Key | Description | Default |
65
- | -------------- | --------------------------------------------- | -------- |
66
- | `chart` | Must be `sitemap` | — |
67
- | `title` | Diagram title | None |
68
- | `direction-tb` | Top-to-bottom layout (omit for left-to-right) | off (LR) |
69
- | `hide` | Comma-separated metadata to hide | None |
70
-
71
- ## Pages
72
-
73
- Each line of text creates a page node. Indentation creates child pages:
74
-
75
- ```
76
- Home
77
- About
78
- Products
79
- Enterprise
80
- Starter
81
- Contact
82
- ```
83
-
84
- ## Groups (Containers)
85
-
86
- Use `[Group Name]` to create a visual container that groups its children:
87
-
88
- ```
89
- Home
90
- [Product Section]
91
- Products
92
- Pricing
93
- Demo
94
-
95
- [Support Section]
96
- Help Center
97
- Documentation
98
- ```
99
-
100
- Containers render as labeled boxes. They can have their own metadata.
101
-
102
- ## Arrows
103
-
104
- Add arrows between pages using `->` syntax indented under a page:
105
-
106
- ```
107
- Home
108
- -> Products
109
- -explore-> Blog
110
- Products
111
- Pricing
112
- -upgrade(green)-> Enterprise
113
- ```
114
-
115
- - `-> Target` — plain arrow
116
- - `-label-> Target` — labeled arrow
117
- - `-label(color)-> Target` — labeled and colored arrow
118
-
119
- ## Metadata
120
-
121
- Add key-value pairs indented under a page:
122
-
123
- ```
124
- Home
125
- status: Live
126
- owner: Marketing
127
-
128
- Products
129
- status: Draft
130
- owner: Product Team
131
- ```
132
-
133
- Metadata renders as secondary text on the page card.
134
-
135
- ### Pipe Syntax
136
-
137
- For concise entries, use `|` to put metadata on a single line:
138
-
139
- ```
140
- Home | status: Live | owner: Marketing
141
- Products | status: Draft | owner: Product Team
142
- ```
143
-
144
- ## Descriptions
145
-
146
- Add a description to any page using the `description` keyword (indented) or pipe metadata:
147
-
148
- ```
149
- // Pipe metadata form
150
- Pricing | description: Compare plans and features
151
-
152
- // Indented keyword form (colon optional)
153
- Dashboard
154
- description Full overview of crew activity and orders
155
- My Orders
156
- ```
157
-
158
- Descriptions render as secondary text on the page card. The indented form must come before child pages. Multiple `description` lines accumulate into a multi-line description.
159
-
160
- ## Node Colors
161
-
162
- Add a color name in parentheses after a page or group name:
163
-
164
- ```
165
- Home(blue)
166
- [Admin Section(red)]
167
- Dashboard
168
- Settings
169
- ```
170
-
171
- ## Tag Groups
172
-
173
- Define color-coded tags for metadata values. Tag groups must appear before page content:
174
-
175
- ```
176
- sitemap Company Site
177
-
178
- tag Status
179
- Live(green)
180
- Draft(yellow)
181
- Deprecated(red)
182
-
183
- tag Owner
184
- Marketing(blue)
185
- Engineering(purple)
186
-
187
- Home
188
- status: Live
189
- owner: Marketing
190
- ```
191
-
192
- - `tag GroupName` starts a tag group
193
- - When a tag group is active, pages are colored by their matching tag value
194
- - Click a tag group pill to activate it; click the eye icon to toggle that metadata's visibility on cards
195
-
196
- ## Direction
197
-
198
- The default layout is left-to-right. Add `direction-tb` to switch to top-to-bottom:
199
-
200
- ```
201
- sitemap
202
- direction-tb
203
- ```
204
-
205
- ## Collapse / Expand
206
-
207
- In the app, click a page or group that has children to focus it. Click again to collapse its subtree — a "+N" label shows how many nodes are hidden. Click once more to expand.
208
-
209
- Keyboard: Tab to focus a node, Enter or Space to toggle.
210
-
211
- ## Comments
212
-
213
- ```
214
- // This line is ignored by the parser
215
- ```
216
-
217
- ## Complete Example
218
-
219
- ```dgmo
220
- sitemap The Salty Compass
221
-
222
- tag Auth
223
- Public(green)
224
- Crew Only(blue)
225
-
226
- tag Status
227
- Live(cyan)
228
- Coming Soon(yellow)
229
-
230
- Home | Auth: Public | Status: Live
231
- -shop-> Shop
232
- -voyages-> Upcoming Voyages
233
- -join crew-> Sign Up
234
- -sign in-> Login
235
-
236
- [Ship Store]
237
- Shop | Auth: Public | Status: Live
238
- -> Eye Patches
239
- -> Flags & Banners
240
- Eye Patches | Auth: Public | Status: Live
241
- -add to chest-> Cart
242
- Flags & Banners | Auth: Public | Status: Coming Soon
243
- -add to chest-> Cart
244
- Cart | Auth: Public | Status: Live
245
- -checkout-> Checkout
246
- Checkout | Auth: Crew Only | Status: Live
247
- -done-> My Orders
248
-
249
- [Voyages]
250
- Upcoming Voyages | Auth: Public | Status: Live
251
- -details-> Voyage Detail
252
- Voyage Detail | Auth: Public | Status: Live
253
- -enlist-> Sign Up
254
-
255
- [Crew Quarters]
256
- Login | Auth: Public | Status: Live
257
- -welcome aboard-> Dashboard
258
- -new pirate-> Sign Up
259
- Sign Up | Auth: Public | Status: Live
260
- -welcome aboard-> Dashboard
261
- Dashboard | Auth: Crew Only | Status: Live
262
- -> My Orders
263
- My Orders | Auth: Crew Only | Status: Live
264
- -reorder-> Shop
265
- ```
@@ -1,56 +0,0 @@
1
- # Slope Chart
2
-
3
- ```dgmo
4
- slope Pirate Fleet Strength: 1715 vs 1725
5
-
6
- period 1715 1725
7
-
8
- Blackbeard 40 4
9
- Bartholomew Roberts 12 52
10
- Charles Vane 20 2
11
- Anne Bonny 8 15
12
- Calico Jack 18 6
13
- ```
14
-
15
- ## Syntax
16
-
17
- ```
18
- slope Chart Title
19
-
20
- period Period1 Period2
21
-
22
- Label value1 value2
23
- ```
24
-
25
- For multi-token period labels, use an indented block:
26
-
27
- ```
28
- period
29
- Before COVID
30
- After COVID
31
- ```
32
-
33
- ## Data Format
34
-
35
- The `period` directive defines the period labels (minimum 2 required). Data rows are space-separated with no colons:
36
-
37
- ```
38
- period 2020 2025
39
-
40
- Product A 40 80
41
- Product B 70 30
42
- ```
43
-
44
- Lines slope upward for increases and downward for decreases.
45
-
46
- ## Color Annotations
47
-
48
- Add `(color)` after the label to set a custom color:
49
-
50
- ```
51
- Python (blue) 3 1 1
52
- ```
53
-
54
- ## Thousands Commas
55
-
56
- Values can contain thousands commas: `Revenue 1,000 2,500`