From 0c759d007594d098756a105ab24899acb4b89d99 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Thu, 3 Apr 2025 17:10:33 +0530 Subject: [PATCH] chore: Add isDefault to examples --- packages/mermaid/src/diagram-api/detectType.ts | 8 ++++++++ .../src/diagrams/architecture/architectureDetector.ts | 1 + packages/mermaid/src/diagrams/block/blockDetector.ts | 1 + packages/mermaid/src/diagrams/c4/c4Detector.ts | 1 + packages/mermaid/src/diagrams/class/classDetector-V2.ts | 1 + packages/mermaid/src/diagrams/er/erDetector.ts | 1 + .../mermaid/src/diagrams/flowchart/flowDetector-v2.ts | 1 + packages/mermaid/src/diagrams/gantt/ganttDetector.ts | 1 + packages/mermaid/src/diagrams/git/gitGraphDetector.ts | 1 + packages/mermaid/src/diagrams/kanban/detector.ts | 1 + packages/mermaid/src/diagrams/mindmap/detector.ts | 1 + packages/mermaid/src/diagrams/packet/detector.ts | 1 + packages/mermaid/src/diagrams/pie/pieDetector.ts | 1 + .../src/diagrams/quadrant-chart/quadrantDetector.ts | 1 + packages/mermaid/src/diagrams/radar/detector.ts | 1 + .../src/diagrams/requirement/requirementDetector.ts | 1 + packages/mermaid/src/diagrams/sankey/sankeyDetector.ts | 1 + .../mermaid/src/diagrams/sequence/sequenceDetector.ts | 1 + packages/mermaid/src/diagrams/state/stateDetector-V2.ts | 1 + packages/mermaid/src/diagrams/timeline/detector.ts | 1 + .../mermaid/src/diagrams/user-journey/journeyDetector.ts | 1 + packages/mermaid/src/diagrams/xychart/xychartDetector.ts | 1 + 22 files changed, 29 insertions(+) diff --git a/packages/mermaid/src/diagram-api/detectType.ts b/packages/mermaid/src/diagram-api/detectType.ts index 78cd12ab7..8dd44b37d 100644 --- a/packages/mermaid/src/diagram-api/detectType.ts +++ b/packages/mermaid/src/diagram-api/detectType.ts @@ -68,6 +68,14 @@ export const addDiagramDefinition = ({ id, ...definition }: DetectorRecord) => { if (diagramDefinitions[id]) { log.warn(`Detector with key ${id} already exists. Overwriting.`); } + if ( + definition.examples && + definition.examples.filter(({ isDefault }) => isDefault).length !== 1 + ) { + throw new Error( + `Diagram with key ${id} must have exactly one default example. Set isDefault to true for one example.` + ); + } diagramDefinitions[id] = definition; log.debug(`Detector with key ${id} added${definition.loader ? ' with loader' : ''}`); }; diff --git a/packages/mermaid/src/diagrams/architecture/architectureDetector.ts b/packages/mermaid/src/diagrams/architecture/architectureDetector.ts index 4c798c263..e93c954be 100644 --- a/packages/mermaid/src/diagrams/architecture/architectureDetector.ts +++ b/packages/mermaid/src/diagrams/architecture/architectureDetector.ts @@ -23,6 +23,7 @@ const architecture: ExternalDiagramDefinition = { description: 'Visualize system architecture and components', examples: [ { + isDefault: true, code: `architecture-beta group api(cloud)[API] diff --git a/packages/mermaid/src/diagrams/block/blockDetector.ts b/packages/mermaid/src/diagrams/block/blockDetector.ts index 95e1cd5ef..fc631db35 100644 --- a/packages/mermaid/src/diagrams/block/blockDetector.ts +++ b/packages/mermaid/src/diagrams/block/blockDetector.ts @@ -19,6 +19,7 @@ const plugin: ExternalDiagramDefinition = { description: 'Create block-based visualizations with beta styling', examples: [ { + isDefault: true, code: `block-beta columns 1 db(("DB")) diff --git a/packages/mermaid/src/diagrams/c4/c4Detector.ts b/packages/mermaid/src/diagrams/c4/c4Detector.ts index f47316481..9b6caa90b 100644 --- a/packages/mermaid/src/diagrams/c4/c4Detector.ts +++ b/packages/mermaid/src/diagrams/c4/c4Detector.ts @@ -24,6 +24,7 @@ const plugin: ExternalDiagramDefinition = { 'Visualize software architecture using the C4 model (Context, Container, Component, Code)', examples: [ { + isDefault: true, code: `C4Context title System Context diagram for Internet Banking System Enterprise_Boundary(b0, "BankBoundary0") { diff --git a/packages/mermaid/src/diagrams/class/classDetector-V2.ts b/packages/mermaid/src/diagrams/class/classDetector-V2.ts index fb360d61f..2466c7105 100644 --- a/packages/mermaid/src/diagrams/class/classDetector-V2.ts +++ b/packages/mermaid/src/diagrams/class/classDetector-V2.ts @@ -28,6 +28,7 @@ const plugin: ExternalDiagramDefinition = { description: 'Visualize class structures and relationships in object-oriented programming', examples: [ { + isDefault: true, code: `classDiagram Animal <|-- Duck Animal <|-- Fish diff --git a/packages/mermaid/src/diagrams/er/erDetector.ts b/packages/mermaid/src/diagrams/er/erDetector.ts index ea4b0f8c8..23ad0b12b 100644 --- a/packages/mermaid/src/diagrams/er/erDetector.ts +++ b/packages/mermaid/src/diagrams/er/erDetector.ts @@ -23,6 +23,7 @@ const plugin: ExternalDiagramDefinition = { description: 'Visualize database schemas and relationships between entities', examples: [ { + isDefault: true, code: `erDiagram CUSTOMER ||--o{ ORDER : places ORDER ||--|{ ORDER_ITEM : contains diff --git a/packages/mermaid/src/diagrams/flowchart/flowDetector-v2.ts b/packages/mermaid/src/diagrams/flowchart/flowDetector-v2.ts index 01e8eb606..75fad1695 100644 --- a/packages/mermaid/src/diagrams/flowchart/flowDetector-v2.ts +++ b/packages/mermaid/src/diagrams/flowchart/flowDetector-v2.ts @@ -35,6 +35,7 @@ const plugin: ExternalDiagramDefinition = { description: 'Visualize flowcharts and directed graphs', examples: [ { + isDefault: true, code: `flowchart TD A[Christmas] -->|Get money| B(Go shopping) B --> C{Let me think} diff --git a/packages/mermaid/src/diagrams/gantt/ganttDetector.ts b/packages/mermaid/src/diagrams/gantt/ganttDetector.ts index 3c75add65..e225f16fb 100644 --- a/packages/mermaid/src/diagrams/gantt/ganttDetector.ts +++ b/packages/mermaid/src/diagrams/gantt/ganttDetector.ts @@ -23,6 +23,7 @@ const plugin: ExternalDiagramDefinition = { description: 'Visualize project schedules and timelines', examples: [ { + isDefault: true, code: `gantt title A Gantt Diagram dateFormat YYYY-MM-DD diff --git a/packages/mermaid/src/diagrams/git/gitGraphDetector.ts b/packages/mermaid/src/diagrams/git/gitGraphDetector.ts index cc2519767..a4225d364 100644 --- a/packages/mermaid/src/diagrams/git/gitGraphDetector.ts +++ b/packages/mermaid/src/diagrams/git/gitGraphDetector.ts @@ -20,6 +20,7 @@ const plugin: ExternalDiagramDefinition = { description: 'Visualize Git repository history and branch relationships', examples: [ { + isDefault: true, code: `gitGraph commit branch develop diff --git a/packages/mermaid/src/diagrams/kanban/detector.ts b/packages/mermaid/src/diagrams/kanban/detector.ts index b3af12b43..3e026f569 100644 --- a/packages/mermaid/src/diagrams/kanban/detector.ts +++ b/packages/mermaid/src/diagrams/kanban/detector.ts @@ -22,6 +22,7 @@ const plugin: ExternalDiagramDefinition = { description: 'Visualize work items in a Kanban board', examples: [ { + isDefault: true, code: `--- config: kanban: diff --git a/packages/mermaid/src/diagrams/mindmap/detector.ts b/packages/mermaid/src/diagrams/mindmap/detector.ts index 26ff7c684..c2b71ef37 100644 --- a/packages/mermaid/src/diagrams/mindmap/detector.ts +++ b/packages/mermaid/src/diagrams/mindmap/detector.ts @@ -22,6 +22,7 @@ const plugin: ExternalDiagramDefinition = { description: 'Visualize ideas and concepts in a tree-like structure', examples: [ { + isDefault: true, code: `mindmap root((mindmap)) Origins diff --git a/packages/mermaid/src/diagrams/packet/detector.ts b/packages/mermaid/src/diagrams/packet/detector.ts index 1f9e8fbc9..dca09201b 100644 --- a/packages/mermaid/src/diagrams/packet/detector.ts +++ b/packages/mermaid/src/diagrams/packet/detector.ts @@ -23,6 +23,7 @@ export const packet: ExternalDiagramDefinition = { description: 'Visualize packet data and network traffic', examples: [ { + isDefault: true, code: `--- title: "TCP Packet" --- diff --git a/packages/mermaid/src/diagrams/pie/pieDetector.ts b/packages/mermaid/src/diagrams/pie/pieDetector.ts index 66067313a..33e627e2a 100644 --- a/packages/mermaid/src/diagrams/pie/pieDetector.ts +++ b/packages/mermaid/src/diagrams/pie/pieDetector.ts @@ -23,6 +23,7 @@ export const pie: ExternalDiagramDefinition = { description: 'Visualize data as proportional segments of a circle', examples: [ { + isDefault: true, code: `pie title Pets adopted by volunteers "Dogs" : 386 "Cats" : 85 diff --git a/packages/mermaid/src/diagrams/quadrant-chart/quadrantDetector.ts b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDetector.ts index 23f9398eb..ef9244fc8 100644 --- a/packages/mermaid/src/diagrams/quadrant-chart/quadrantDetector.ts +++ b/packages/mermaid/src/diagrams/quadrant-chart/quadrantDetector.ts @@ -23,6 +23,7 @@ const plugin: ExternalDiagramDefinition = { description: 'Visualize items in a 2x2 matrix based on two variables', examples: [ { + isDefault: true, code: `quadrantChart title Reach and engagement of campaigns x-axis Low Reach --> High Reach diff --git a/packages/mermaid/src/diagrams/radar/detector.ts b/packages/mermaid/src/diagrams/radar/detector.ts index 080b276a2..e1f93f4a4 100644 --- a/packages/mermaid/src/diagrams/radar/detector.ts +++ b/packages/mermaid/src/diagrams/radar/detector.ts @@ -23,6 +23,7 @@ export const radar: ExternalDiagramDefinition = { description: 'Visualize data in a radial format', examples: [ { + isDefault: true, code: `--- title: "Grades" --- diff --git a/packages/mermaid/src/diagrams/requirement/requirementDetector.ts b/packages/mermaid/src/diagrams/requirement/requirementDetector.ts index 7abf8627e..d764329b9 100644 --- a/packages/mermaid/src/diagrams/requirement/requirementDetector.ts +++ b/packages/mermaid/src/diagrams/requirement/requirementDetector.ts @@ -23,6 +23,7 @@ const plugin: ExternalDiagramDefinition = { description: 'Visualize system requirements and their relationships', examples: [ { + isDefault: true, code: `requirementDiagram requirement test_req { diff --git a/packages/mermaid/src/diagrams/sankey/sankeyDetector.ts b/packages/mermaid/src/diagrams/sankey/sankeyDetector.ts index 58f168d88..4f3a8d8ee 100644 --- a/packages/mermaid/src/diagrams/sankey/sankeyDetector.ts +++ b/packages/mermaid/src/diagrams/sankey/sankeyDetector.ts @@ -19,6 +19,7 @@ const plugin: ExternalDiagramDefinition = { description: 'Visualize flow quantities between different stages or processes', examples: [ { + isDefault: true, code: `--- config: sankey: diff --git a/packages/mermaid/src/diagrams/sequence/sequenceDetector.ts b/packages/mermaid/src/diagrams/sequence/sequenceDetector.ts index 6ddd1055b..756f565ae 100644 --- a/packages/mermaid/src/diagrams/sequence/sequenceDetector.ts +++ b/packages/mermaid/src/diagrams/sequence/sequenceDetector.ts @@ -23,6 +23,7 @@ const plugin: ExternalDiagramDefinition = { description: 'Visualize interactions between objects over time', examples: [ { + isDefault: true, code: `sequenceDiagram Alice->>+John: Hello John, how are you? Alice->>+John: John, can you hear me? diff --git a/packages/mermaid/src/diagrams/state/stateDetector-V2.ts b/packages/mermaid/src/diagrams/state/stateDetector-V2.ts index 5b86ea2d5..2bfcad010 100644 --- a/packages/mermaid/src/diagrams/state/stateDetector-V2.ts +++ b/packages/mermaid/src/diagrams/state/stateDetector-V2.ts @@ -29,6 +29,7 @@ const plugin: ExternalDiagramDefinition = { description: 'Visualize state transitions and behaviors of a system', examples: [ { + isDefault: true, code: `stateDiagram-v2 [*] --> Still Still --> [*] diff --git a/packages/mermaid/src/diagrams/timeline/detector.ts b/packages/mermaid/src/diagrams/timeline/detector.ts index 982487a9e..fd947aa0f 100644 --- a/packages/mermaid/src/diagrams/timeline/detector.ts +++ b/packages/mermaid/src/diagrams/timeline/detector.ts @@ -23,6 +23,7 @@ const plugin: ExternalDiagramDefinition = { description: 'Visualize events and milestones in chronological order', examples: [ { + isDefault: true, code: `timeline title History of Social Media Platform 2002 : LinkedIn diff --git a/packages/mermaid/src/diagrams/user-journey/journeyDetector.ts b/packages/mermaid/src/diagrams/user-journey/journeyDetector.ts index 5b3ca9c2a..84127f279 100644 --- a/packages/mermaid/src/diagrams/user-journey/journeyDetector.ts +++ b/packages/mermaid/src/diagrams/user-journey/journeyDetector.ts @@ -23,6 +23,7 @@ const plugin: ExternalDiagramDefinition = { description: 'Visualize user interactions and experiences with a system', examples: [ { + isDefault: true, code: `journey title My working day section Go to work diff --git a/packages/mermaid/src/diagrams/xychart/xychartDetector.ts b/packages/mermaid/src/diagrams/xychart/xychartDetector.ts index f12a76c39..7e2c02046 100644 --- a/packages/mermaid/src/diagrams/xychart/xychartDetector.ts +++ b/packages/mermaid/src/diagrams/xychart/xychartDetector.ts @@ -23,6 +23,7 @@ const plugin: ExternalDiagramDefinition = { description: 'Create scatter plots and line charts with customizable axes', examples: [ { + isDefault: true, code: `xychart-beta title "Sales Revenue" x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]