@diagrammo/dgmo 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/README.md +23 -10
  2. package/dist/advanced.cjs +53094 -0
  3. package/dist/advanced.d.cts +4690 -0
  4. package/dist/advanced.d.ts +4690 -0
  5. package/dist/advanced.js +52849 -0
  6. package/dist/auto.cjs +2298 -2069
  7. package/dist/auto.js +132 -109
  8. package/dist/auto.mjs +2294 -2065
  9. package/dist/cli.cjs +175 -152
  10. package/dist/editor.cjs +8 -9
  11. package/dist/editor.js +8 -9
  12. package/dist/highlight.cjs +8 -9
  13. package/dist/highlight.js +8 -9
  14. package/dist/index.cjs +2281 -2048
  15. package/dist/index.d.cts +45 -1
  16. package/dist/index.d.ts +45 -1
  17. package/dist/index.js +2276 -2044
  18. package/dist/internal.cjs +2064 -1831
  19. package/dist/internal.d.cts +113 -113
  20. package/dist/internal.d.ts +113 -113
  21. package/dist/internal.js +2059 -1826
  22. package/dist/pert.cjs +325 -0
  23. package/dist/pert.d.cts +542 -0
  24. package/dist/pert.d.ts +542 -0
  25. package/dist/pert.js +294 -0
  26. package/docs/language-reference.md +83 -66
  27. package/gallery/fixtures/area.dgmo +3 -3
  28. package/gallery/fixtures/bar-stacked.dgmo +5 -5
  29. package/gallery/fixtures/boxes-and-lines.dgmo +2 -2
  30. package/gallery/fixtures/c4-full.dgmo +8 -8
  31. package/gallery/fixtures/class-full.dgmo +2 -2
  32. package/gallery/fixtures/doughnut.dgmo +6 -6
  33. package/gallery/fixtures/flowchart-colors.dgmo +3 -3
  34. package/gallery/fixtures/function.dgmo +3 -3
  35. package/gallery/fixtures/gantt-full.dgmo +9 -9
  36. package/gallery/fixtures/gantt.dgmo +7 -7
  37. package/gallery/fixtures/infra-full.dgmo +6 -6
  38. package/gallery/fixtures/infra.dgmo +2 -2
  39. package/gallery/fixtures/kanban.dgmo +9 -9
  40. package/gallery/fixtures/line.dgmo +2 -2
  41. package/gallery/fixtures/multi-line.dgmo +3 -3
  42. package/gallery/fixtures/org-full.dgmo +6 -6
  43. package/gallery/fixtures/quadrant.dgmo +2 -2
  44. package/gallery/fixtures/sankey.dgmo +9 -9
  45. package/gallery/fixtures/scatter.dgmo +3 -3
  46. package/gallery/fixtures/sequence-tags-protocols.dgmo +8 -8
  47. package/gallery/fixtures/sequence-tags.dgmo +7 -7
  48. package/gallery/fixtures/sitemap-full.dgmo +7 -7
  49. package/gallery/fixtures/slope.dgmo +5 -5
  50. package/gallery/fixtures/spr-eras.dgmo +9 -9
  51. package/gallery/fixtures/timeline.dgmo +3 -3
  52. package/gallery/fixtures/venn.dgmo +3 -3
  53. package/package.json +28 -3
  54. package/src/advanced.ts +730 -0
  55. package/src/auto/index.ts +14 -13
  56. package/src/boxes-and-lines/layout.ts +481 -445
  57. package/src/boxes-and-lines/renderer.ts +5 -1
  58. package/src/c4/parser.ts +8 -8
  59. package/src/c4/renderer.ts +15 -8
  60. package/src/chart-types.ts +0 -5
  61. package/src/chart.ts +18 -9
  62. package/src/class/parser.ts +8 -15
  63. package/src/class/renderer.ts +17 -6
  64. package/src/cli.ts +15 -13
  65. package/src/completion-types.ts +28 -0
  66. package/src/completion.ts +28 -21
  67. package/src/cycle/layout.ts +2 -2
  68. package/src/cycle/parser.ts +14 -0
  69. package/src/cycle/renderer.ts +6 -3
  70. package/src/d3.ts +1537 -1164
  71. package/src/echarts.ts +37 -20
  72. package/src/editor/dgmo.grammar +1 -3
  73. package/src/editor/dgmo.grammar.js +8 -8
  74. package/src/editor/dgmo.grammar.terms.js +11 -12
  75. package/src/editor/highlight-api.ts +0 -1
  76. package/src/editor/highlight.ts +0 -1
  77. package/src/er/parser.ts +19 -20
  78. package/src/er/renderer.ts +20 -8
  79. package/src/gantt/calculator.ts +1 -11
  80. package/src/gantt/parser.ts +17 -17
  81. package/src/gantt/renderer.ts +9 -6
  82. package/src/graph/flowchart-parser.ts +19 -85
  83. package/src/graph/flowchart-renderer.ts +4 -9
  84. package/src/graph/layout.ts +0 -2
  85. package/src/graph/state-parser.ts +17 -62
  86. package/src/graph/state-renderer.ts +4 -9
  87. package/src/index.ts +17 -1
  88. package/src/infra/parser.ts +40 -30
  89. package/src/infra/renderer.ts +9 -6
  90. package/src/internal.ts +9 -721
  91. package/src/journey-map/parser.ts +10 -3
  92. package/src/journey-map/renderer.ts +3 -1
  93. package/src/kanban/parser.ts +12 -8
  94. package/src/kanban/renderer.ts +3 -1
  95. package/src/mindmap/layout.ts +1 -1
  96. package/src/mindmap/parser.ts +3 -3
  97. package/src/mindmap/renderer.ts +2 -1
  98. package/src/org/parser.ts +3 -3
  99. package/src/org/renderer.ts +5 -4
  100. package/src/pert/layout.ts +1 -1
  101. package/src/pert/monte-carlo.ts +2 -2
  102. package/src/pert/parser.ts +10 -10
  103. package/src/pert/renderer.ts +7 -2
  104. package/src/pert/types.ts +1 -1
  105. package/src/pyramid/parser.ts +12 -0
  106. package/src/raci/parser.ts +44 -14
  107. package/src/raci/renderer.ts +3 -2
  108. package/src/raci/types.ts +4 -3
  109. package/src/ring/parser.ts +12 -0
  110. package/src/sequence/parser.ts +15 -9
  111. package/src/sequence/renderer.ts +2 -5
  112. package/src/sitemap/layout.ts +0 -2
  113. package/src/sitemap/parser.ts +12 -38
  114. package/src/sitemap/renderer.ts +13 -13
  115. package/src/sitemap/types.ts +0 -1
  116. package/src/tech-radar/interactive.ts +1 -1
  117. package/src/tech-radar/renderer.ts +6 -4
  118. package/src/tech-radar/types.ts +2 -0
  119. package/src/utils/arrows.ts +3 -28
  120. package/src/utils/legend-d3.ts +12 -6
  121. package/src/utils/legend-layout.ts +1 -1
  122. package/src/utils/legend-types.ts +1 -1
  123. package/src/utils/parsing.ts +64 -35
  124. package/src/utils/tag-groups.ts +109 -30
  125. package/src/wireframe/layout.ts +11 -7
  126. package/src/wireframe/parser.ts +4 -4
  127. package/src/wireframe/renderer.ts +5 -2
@@ -3,11 +3,11 @@ x-label Month
3
3
  y-label Tickets
4
4
 
5
5
  series
6
- Critical (red)
7
- High (orange)
8
- Medium (yellow)
9
- Low (green)
10
- Info (blue)
6
+ Critical red
7
+ High orange
8
+ Medium yellow
9
+ Low green
10
+ Info blue
11
11
 
12
12
  January 8 24 45 62 31
13
13
  February 12 19 51 58 28
@@ -1,7 +1,7 @@
1
1
  boxes-and-lines E-Commerce Platform
2
2
 
3
- tag Team t Backend(blue), Frontend(green), Platform(purple)
4
- tag Priority p High(red), Medium(orange), Low(gray)
3
+ tag Team t Backend blue, Frontend green, Platform purple
4
+ tag Priority p High red, Medium orange, Low gray
5
5
 
6
6
  active-tag Team
7
7
  hide priority:Low
@@ -1,16 +1,16 @@
1
1
  c4 Online Bookstore — C4 Architecture
2
2
 
3
3
  tag Technology as tech
4
- React(blue)
5
- Node(green)
6
- Python(orange)
7
- PostgreSQL(purple)
4
+ React blue
5
+ Node green
6
+ Python orange
7
+ PostgreSQL purple
8
8
 
9
9
  tag Team as t
10
- Frontend(blue)
11
- Backend(green)
12
- Platform(teal)
13
- Data(purple)
10
+ Frontend blue
11
+ Backend green
12
+ Platform teal
13
+ Data purple
14
14
 
15
15
  Customer is a person | t: Frontend
16
16
  description: Browses and purchases books online
@@ -4,7 +4,7 @@ Drawable [interface]
4
4
  + draw(): void
5
5
  + resize(w: number, h: number): void
6
6
 
7
- Shape implements Drawable [abstract] (purple)
7
+ Shape implements Drawable [abstract] purple
8
8
  # x: number
9
9
  # y: number
10
10
  + area(): number
@@ -20,7 +20,7 @@ Rectangle extends Shape
20
20
  - height: number
21
21
  + getDiagonal(): number
22
22
 
23
- Color [enum] (yellow)
23
+ Color [enum] yellow
24
24
  Red
25
25
  Green
26
26
  Blue
@@ -1,8 +1,8 @@
1
1
  doughnut Cloud Spending by Service
2
2
 
3
- Compute (blue) 34
4
- Storage (cyan) 22
5
- Database (green) 18
6
- Networking (orange) 12
7
- AI/ML (purple) 8
8
- Other (gray) 6
3
+ Compute blue 34
4
+ Storage cyan 22
5
+ Database green 18
6
+ Networking orange 12
7
+ AI/ML purple 8
8
+ Other gray 6
@@ -1,5 +1,5 @@
1
1
  flowchart Color Demo
2
2
 
3
- (Start(green)) -> [Parse Input] -> <Valid?(blue)>
4
- -yes(green)-> [Process(teal)] -> (Success(green))
5
- -no(red)-> [Error Handler(red)] -> /Log Error(orange)/ -> (Failure(red))
3
+ (Start) -> [Parse Input] -> <Valid?>
4
+ -yes-> [Process] -> (Success)
5
+ -no-> [Error Handler] -> /Log Error/ -> (Failure)
@@ -3,6 +3,6 @@ x-label x
3
3
  y-label f(x)
4
4
 
5
5
  x -6 to 6
6
- f(x) (blue) sin(x)
7
- g(x) (red) x^2 / 10
8
- h(x) (green) cos(x) * 2
6
+ f(x) blue: sin(x)
7
+ g(x) red: x^2 / 10
8
+ h(x) green: cos(x) * 2
@@ -5,20 +5,20 @@ critical-path
5
5
  dependencies
6
6
 
7
7
  tag Team as t
8
- Engineering(blue)
9
- Design(purple)
10
- QA(orange)
11
- Marketing(green)
8
+ Engineering blue
9
+ Design purple
10
+ QA orange
11
+ Marketing green
12
12
 
13
13
  tag Phase as p
14
- Foundation(green)
15
- Growth(orange)
16
- Launch(red)
14
+ Foundation green
15
+ Growth orange
16
+ Launch red
17
17
 
18
18
  era 2024-01-15 -> 2024-02-15 Investor Review
19
- era 2024-03-10 -> 2024-03-14 GDC 2024 (purple)
19
+ era 2024-03-10 -> 2024-03-14 GDC 2024 purple
20
20
  marker 2024-02-26 Board Meeting
21
- marker 2024-04-08 Trade Show Demo (orange)
21
+ marker 2024-04-08 Trade Show Demo orange
22
22
 
23
23
  // Independent task with offset — starts 8bd after project start
24
24
  10bd Brand Guidelines | t: Design, p: Foundation, offset: 8bd
@@ -5,18 +5,18 @@ critical-path
5
5
  dependencies
6
6
 
7
7
  tag Team as t
8
- Engineering(blue)
9
- Design(purple)
10
- QA(orange)
8
+ Engineering blue
9
+ Design purple
10
+ QA orange
11
11
 
12
12
  tag Phase as p
13
- Foundation(green)
14
- Growth(orange)
13
+ Foundation green
14
+ Growth orange
15
15
 
16
16
  era 2024-01-15 -> 2024-02-15 Investor Review
17
- era 2024-03-10 -> 2024-03-14 GDC 2024 (purple)
17
+ era 2024-03-10 -> 2024-03-14 GDC 2024 purple
18
18
  marker 2024-02-26 Board Meeting
19
- marker 2024-04-08 Trade Show Demo (orange)
19
+ marker 2024-04-08 Trade Show Demo orange
20
20
 
21
21
  // Independent task with offset — starts 8bd after project start
22
22
  10bd Brand Guidelines | t: Design, p: Foundation, offset: 8bd
@@ -1,14 +1,14 @@
1
1
  infra E-Commerce Platform — Full Infrastructure
2
2
 
3
3
  tag Team as t
4
- Backend(blue)
5
- Platform(teal)
6
- Data(purple)
4
+ Backend blue
5
+ Platform teal
6
+ Data purple
7
7
 
8
8
  tag Tier as r
9
- Edge(green)
10
- Core(blue)
11
- Storage(orange)
9
+ Edge green
10
+ Core blue
11
+ Storage orange
12
12
 
13
13
  edge
14
14
  rps: 15000
@@ -1,8 +1,8 @@
1
1
  infra Production Traffic Flow
2
2
 
3
3
  tag Team as t
4
- Backend(blue)
5
- Platform(teal)
4
+ Backend blue
5
+ Platform teal
6
6
 
7
7
  edge
8
8
  rps: 10000
@@ -1,27 +1,27 @@
1
1
  kanban Plunder Sprint 7
2
2
 
3
3
  tag Priority
4
- Low(green)
5
- Urgent(red)
6
- High(orange)
4
+ Low green
5
+ Urgent red
6
+ High orange
7
7
 
8
8
  tag Crew as c
9
- Blackbeard(red)
10
- Anne Bonny(purple)
11
- Calico Jack(teal)
9
+ Blackbeard red
10
+ Anne Bonny purple
11
+ Calico Jack teal
12
12
 
13
- [Awaiting Orders](red)
13
+ [Awaiting Orders] red
14
14
  Recruit gunners at Tortuga | priority: High, c: Calico Jack
15
15
  Chart new trade route | priority: Urgent, c: Anne Bonny
16
16
  Scout the Windward Passage
17
17
  Avoid Royal Navy patrols
18
18
  Resupply rum and powder | priority: Low, c: Calico Jack
19
19
 
20
- [Underway](orange) | wip: 2
20
+ [Underway] orange | wip: 2
21
21
  Forge letters of marque | priority: High, c: Anne Bonny
22
22
  Raid merchant convoy | priority: Urgent, c: Blackbeard
23
23
  Three ships spotted off Nassau
24
24
 
25
- [Done](green)
25
+ [Done] green
26
26
  Bribe the harbour master | priority: High, c: Anne Bonny
27
27
  Repair hull damage | priority: Low, c: Blackbeard
@@ -2,8 +2,8 @@ line Daily Active Users (Q1 2025)
2
2
  x-label Week
3
3
  y-label Users (thousands)
4
4
 
5
- era Week 1 -> Week 6 Phase 1 (blue)
6
- era Week 6 -> Week 12 Phase 2 (green)
5
+ era Week 1 -> Week 6 Phase 1 blue
6
+ era Week 6 -> Week 12 Phase 2 green
7
7
 
8
8
  Week 1 12.4
9
9
  Week 2 13.1
@@ -3,9 +3,9 @@ x-label Quarter
3
3
  y-label Amount ($M)
4
4
 
5
5
  series
6
- Revenue (blue)
7
- Operating Cost (red)
8
- Net Profit (green)
6
+ Revenue blue
7
+ Operating Cost red
8
+ Net Profit green
9
9
 
10
10
  Q1 2023 4.2 3.1 1.1
11
11
  Q2 2023 4.8 3.3 1.5
@@ -1,14 +1,14 @@
1
1
  org Acme Corp
2
2
 
3
3
  tag Location
4
- NY(blue)
5
- LA(yellow)
6
- CO(green)
7
- Remote(purple)
4
+ NY blue
5
+ LA yellow
6
+ CO green
7
+ Remote purple
8
8
 
9
9
  tag Status
10
- FTE(green)
11
- Contractor(orange)
10
+ FTE green
11
+ Contractor orange
12
12
 
13
13
  Jane Smith
14
14
  role: CEO
@@ -8,8 +8,8 @@ top-right Major Projects
8
8
  bottom-left Fill-ins
9
9
  bottom-right Avoid
10
10
 
11
- Dark Mode (blue) 0.25 0.85
12
- API v2 (red) 0.8 0.9
11
+ Dark Mode blue 0.25 0.85
12
+ API v2 red 0.8 0.9
13
13
  Fix Typos 0.1 0.15
14
14
  SSO Integration 0.75 0.7
15
15
  Export CSV 0.3 0.6
@@ -1,22 +1,22 @@
1
1
  sankey Website Traffic Flow
2
2
 
3
3
  // Source channels — colored by type
4
- Organic Search (green)
4
+ Organic Search green
5
5
  Landing Page 450
6
- Paid Ads (orange)
6
+ Paid Ads orange
7
7
  Landing Page 280
8
- Social Media (blue)
8
+ Social Media blue
9
9
  Landing Page 180
10
- Email (purple)
10
+ Email purple
11
11
  Landing Page 120
12
- Direct (teal)
12
+ Direct teal
13
13
  Landing Page 90
14
14
 
15
15
  // Engagement & Conversion
16
16
  Landing Page
17
17
  Sign Up 340
18
18
  Browse Products 520
19
- Bounce 260 (red)
19
+ Bounce 260 red
20
20
 
21
21
  Sign Up
22
22
  Free Trial 240
@@ -24,8 +24,8 @@ Sign Up
24
24
 
25
25
  Browse Products
26
26
  Add to Cart 310
27
- Exit 210 (red)
27
+ Exit 210 red
28
28
 
29
29
  Add to Cart
30
- Purchase (green) 220
31
- Abandon 90 (red)
30
+ Purchase green 220
31
+ Abandon 90 red
@@ -2,20 +2,20 @@ scatter Startup Funding vs Revenue
2
2
  x-label Funding ($M)
3
3
  y-label Annual Revenue ($M)
4
4
 
5
- [SaaS](blue)
5
+ [SaaS] blue
6
6
  Acme Cloud 12 8.5
7
7
  DataSync 5.2 3.1
8
8
  CloudOps 25 18.4
9
9
  PlatformX 8 5.7
10
10
  NexGen 3.5 1.2
11
11
 
12
- [Fintech](green)
12
+ [Fintech] green
13
13
  PayFlow 45 32
14
14
  LendTech 18 12.5
15
15
  CoinBase+ 60 41
16
16
  QuickPay 9 6.8
17
17
 
18
- [HealthTech](red)
18
+ [HealthTech] red
19
19
  MediScan 15 7.2
20
20
  HealthAI 22 14.1
21
21
  CareLink 7 3.8
@@ -2,16 +2,16 @@ sequence Order Fulfillment — Protocols & Ownership
2
2
  active-tag Protocol
3
3
 
4
4
  tag Protocol as p
5
- REST(blue)
6
- gRPC(green)
7
- Async(orange)
8
- SQL(purple)
5
+ REST blue
6
+ gRPC green
7
+ Async orange
8
+ SQL purple
9
9
 
10
10
  tag Owner as o
11
- Checkout(teal)
12
- Fulfillment(orange)
13
- Payments(red)
14
- Data(blue)
11
+ Checkout teal
12
+ Fulfillment orange
13
+ Payments red
14
+ Data blue
15
15
 
16
16
  Buyer is an actor
17
17
  CheckoutSvc is a service | o: Checkout
@@ -2,15 +2,15 @@ sequence API Gateway — Infrastructure Concerns
2
2
  active-tag Concern
3
3
 
4
4
  tag Concern as c
5
- Caching(blue)
6
- Auth(green)
7
- RateLimiting(orange)
8
- BusinessLogic(purple) default
5
+ Caching blue
6
+ Auth green
7
+ RateLimiting orange
8
+ BusinessLogic purple default
9
9
 
10
10
  tag Team as t
11
- Platform(teal)
12
- Product(orange)
13
- Security(red)
11
+ Platform teal
12
+ Product orange
13
+ Security red
14
14
 
15
15
  Mobile is an actor
16
16
  Gateway is a gateway | t: Platform
@@ -2,15 +2,15 @@ sitemap Grand Slam Tickets
2
2
  direction-tb
3
3
 
4
4
  tag Auth
5
- Public(green)
6
- Required(blue)
7
- Admin(red)
5
+ Public green
6
+ Required blue
7
+ Admin red
8
8
 
9
9
  tag Type
10
- Landing(purple)
11
- Form(orange)
12
- Content(cyan)
13
- Transactional(yellow)
10
+ Landing purple
11
+ Form orange
12
+ Content cyan
13
+ Transactional yellow
14
14
 
15
15
  Home
16
16
  Auth: Public
@@ -2,8 +2,8 @@ slope Programming Language Popularity
2
2
 
3
3
  period 2020 2022 2025
4
4
 
5
- Python (blue) 3 1 1
6
- JavaScript (yellow) 1 2 2
7
- TypeScript (cyan) 7 4 3
8
- Rust (orange) 18 12 5
9
- Go (green) 10 8 7
5
+ Python blue 3 1 1
6
+ JavaScript yellow 1 2 2
7
+ TypeScript cyan 7 4 3
8
+ Rust orange 18 12 5
9
+ Go green 10 8 7
@@ -1,15 +1,15 @@
1
1
  line U.S. Strategic Petroleum Reserve
2
2
  y-label Million Barrels
3
3
 
4
- era '77 -> '81 Carter (blue)
5
- era '81 -> '89 Reagan (red)
6
- era '89 -> '93 Bush (red)
7
- era '93 -> '01 Clinton (blue)
8
- era '01 -> '09 Bush (red)
9
- era '09 -> '17 Obama (blue)
10
- era '17 -> '21 Trump (red)
11
- era '21 -> '25 Biden (blue)
12
- era '25 -> '25 Trump (red)
4
+ era '77 -> '81 Carter blue
5
+ era '81 -> '89 Reagan red
6
+ era '89 -> '93 Bush red
7
+ era '93 -> '01 Clinton blue
8
+ era '01 -> '09 Bush red
9
+ era '09 -> '17 Obama blue
10
+ era '17 -> '21 Trump red
11
+ era '21 -> '25 Biden blue
12
+ era '25 -> '25 Trump red
13
13
 
14
14
  '77 7
15
15
  '78 67
@@ -2,9 +2,9 @@ timeline Product Roadmap 2024-2025
2
2
  sort tag:Team
3
3
 
4
4
  tag Team as t
5
- Engineering(blue)
6
- Design(purple)
7
- Product(green)
5
+ Engineering blue
6
+ Design purple
7
+ Product green
8
8
 
9
9
  era 2024-01 -> 2024-06 Phase 1 - Foundation
10
10
  era 2024-07 -> 2024-12 Phase 2 - Growth
@@ -1,8 +1,8 @@
1
1
  venn Full-Stack Developer Skills
2
2
 
3
- Frontend(blue) as fe
4
- Backend(green) as be
5
- DevOps(orange) as de
3
+ Frontend blue as fe
4
+ Backend green as be
5
+ DevOps orange as de
6
6
 
7
7
  fe + be Web Systems
8
8
  be + de Platform Ops
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diagrammo/dgmo",
3
- "version": "0.15.0",
3
+ "version": "0.16.0",
4
4
  "description": "DGMO diagram markup language — parser, renderer, and color system",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -9,6 +9,9 @@
9
9
  },
10
10
  "homepage": "https://github.com/diagrammo/dgmo#readme",
11
11
  "type": "module",
12
+ "engines": {
13
+ "node": ">=20.6"
14
+ },
12
15
  "bin": {
13
16
  "dgmo": "dist/cli.cjs"
14
17
  },
@@ -46,6 +49,16 @@
46
49
  "default": "./dist/highlight.cjs"
47
50
  }
48
51
  },
52
+ "./advanced": {
53
+ "import": {
54
+ "types": "./dist/advanced.d.ts",
55
+ "default": "./dist/advanced.js"
56
+ },
57
+ "require": {
58
+ "types": "./dist/advanced.d.cts",
59
+ "default": "./dist/advanced.cjs"
60
+ }
61
+ },
49
62
  "./internal": {
50
63
  "import": {
51
64
  "types": "./dist/internal.d.ts",
@@ -56,6 +69,16 @@
56
69
  "default": "./dist/internal.cjs"
57
70
  }
58
71
  },
72
+ "./pert": {
73
+ "import": {
74
+ "types": "./dist/pert.d.ts",
75
+ "default": "./dist/pert.js"
76
+ },
77
+ "require": {
78
+ "types": "./dist/pert.d.cts",
79
+ "default": "./dist/pert.cjs"
80
+ }
81
+ },
59
82
  "./auto": {
60
83
  "import": {
61
84
  "types": "./dist/auto.d.ts",
@@ -96,7 +119,7 @@
96
119
  "typecheck": "tsc --noEmit",
97
120
  "dev": "tsup --watch",
98
121
  "pretest": "pnpm codegen",
99
- "test": "vitest run",
122
+ "test": "vitest run --coverage",
100
123
  "test:watch": "vitest",
101
124
  "test:auto": "pnpm build && vitest run tests/auto.test.ts tests/safe-href.test.ts",
102
125
  "sri": "node scripts/sri.mjs",
@@ -111,7 +134,7 @@
111
134
  "check:deadcode": "knip",
112
135
  "check:spelling": "cspell \"src/**/*.ts\" \"tests/**/*.ts\"",
113
136
  "check:all": "pnpm check:deadcode && pnpm check:spelling && pnpm check:duplication && pnpm check:circular && pnpm check:deps && pnpm check:security && pnpm build && pnpm check:publish && pnpm check:types",
114
- "check:circular": "madge --circular --extensions ts src/ --json | node -e \"const c=JSON.parse(require('fs').readFileSync('/dev/stdin','utf8')); const n=c.length; if(n>10){console.error('New circular deps found ('+n+' > 10 known type-only cycles)');process.exit(1)}else if(n>0){console.log(n+' known type-only/dynamic cycles (safe)')}else{console.log('No circular dependencies')}\"",
137
+ "check:circular": "madge --circular --extensions ts src/ --json | node -e \"const c=JSON.parse(require('fs').readFileSync('/dev/stdin','utf8')); const n=c.length; if(n>4){console.error('New circular deps found ('+n+' > 4 known type-only cycles)');process.exit(1)}else if(n>0){console.log(n+' known type-only/dynamic cycles (safe)')}else{console.log('No circular dependencies')}\"",
115
138
  "check:deps": "depcheck --ignores='@codemirror/language,@lezer/*,husky,lint-staged,tsup,axe-core'",
116
139
  "check:security": "pnpm audit --prod",
117
140
  "check:publish": "publint",
@@ -130,6 +153,7 @@
130
153
  "d3-selection": "^3.0.0",
131
154
  "d3-shape": "^3.2.0",
132
155
  "echarts": "^6.0.0",
156
+ "elkjs": "^0.11.1",
133
157
  "jsdom": "^29.0.2",
134
158
  "lz-string": "^1.5.0"
135
159
  },
@@ -145,6 +169,7 @@
145
169
  "@types/d3-selection": "^3.0.11",
146
170
  "@types/d3-shape": "^3.1.8",
147
171
  "@types/jsdom": "^28.0.1",
172
+ "@vitest/coverage-v8": "^4.1.6",
148
173
  "axe-core": "^4.10.0",
149
174
  "cspell": "^10.0.0",
150
175
  "depcheck": "^1.4.7",