8 lines
90 KiB
Plaintext
Raw Permalink Normal View History

2026-05-31 13:21:13 +02:00
{
"version": 3,
"sources": ["../../../src/diagrams/wardley/wardleyParser.ts", "../../../src/diagrams/wardley/wardleyBuilder.ts", "../../../src/diagrams/wardley/wardleyDb.ts", "../../../src/diagrams/wardley/wardleyRenderer.ts", "../../../src/diagrams/wardley/styles.ts", "../../../src/diagrams/wardley/wardleyDiagram.ts"],
"sourcesContent": ["import type { Wardley } from '@mermaid-js/parser';\nimport { parse } from '@mermaid-js/parser';\nimport type { ParserDefinition } from '../../diagram-api/types.js';\nimport { log } from '../../logger.js';\nimport { populateCommonDb } from '../common/populateCommonDb.js';\nimport type { WardleyDB } from './wardleyTypes.js';\n\nconst toPercent = (value: number, context: string): number => {\n // Accept values in 0-1 range (converted to percentage) or 0-100 range (used as-is)\n const normalized = value <= 1 ? value * 100 : value;\n if (normalized < 0 || normalized > 100) {\n throw new Error(\n `${context} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${value}`\n );\n }\n return normalized;\n};\n\nconst toCoordinates = (\n visibility: number,\n evolution: number,\n context: string\n): { x: number; y: number } => {\n return {\n x: toPercent(evolution, `${context} evolution`),\n y: toPercent(visibility, `${context} visibility`),\n };\n};\n\nconst getFlowFromPort = (port?: string): 'forward' | 'backward' | 'bidirectional' | undefined => {\n if (!port) {\n return undefined;\n }\n if (port === '+<>') {\n return 'bidirectional';\n }\n if (port === '+<') {\n return 'backward';\n }\n if (port === '+>') {\n return 'forward';\n }\n return undefined;\n};\n\nconst extractFlowFromArrow = (\n arrow?: string\n): { flow?: 'forward' | 'backward' | 'bidirectional'; label?: string } => {\n if (!arrow?.startsWith('+')) {\n return {};\n }\n\n const labelMatch = /^\\+'([^']*)'/.exec(arrow);\n const flowLabel = labelMatch?.[1];\n\n if (arrow.includes('<>')) {\n return { flow: 'bidirectional', label: flowLabel };\n }\n if (arrow.includes('<')) {\n return { flow: 'backward', label: flowLabel };\n }\n if (arrow.includes('>')) {\n return { flow: 'forward', label: flowLabel };\n }\n return { label: flowLabel };\n};\n\nconst populateDb = (ast: Wardley, db: WardleyDB) => {\n populateCommonDb(ast, db);\n\n // Set size if provided\n if (ast.size) {\n db.setSize(ast.size.width, ast.size.height);\n }\n\n // Process evolution stages\n if (ast.evolution) {\n const stages = ast.evolution.stages.map((stage) => {\n // Handle dual-label stages like \"Genesis / Concept\"\n if (stage.secondName) {\n return `${stage.name.trim()} / ${stage.secondName.trim()}`;\n }\n return stage.name.trim();\n });\n const stageBoundaries = ast.evolution.stages\n .filter((stage) => stage.boundary !== undefined)\n .map((stage) => stage.boundary!);\n\n db.updateAxes({ stages, stageBoundaries });\n }\n\n // Add anchors as nodes with className 'anchor'\n ast.anchors.forEach((anchor) => {\n const coords = toCoordinates(anchor.visibility, anchor.evolution, `Anchor \"${anchor.name}\"`);\n db.addNode(anchor.name, anchor.name, coords.x, coords.y, 'anchor');\n });\n\n // Add components\n ast.components.forEach((component) => {\n const coords = toCoordinates(\n component.visibility,\n component.evolution,\n `Component \"${component.name}\"`\n );\n const labelOffsetX = component.label\n ? (component.label.negX ? -1 : 1) * component.label.offsetX\n : undefined;\n const labelOffsetY = component.label\n ? (component.label.negY ? -1 : 1) * component.label.offsetY\n : undefined;\n const sourceStrategy = component.decorator?.strategy as\n | 'build'\n | 'buy'\n | 'outsource'\n | 'market'\n | undefined;\n\n db.addNode(\n component.name,\n component.name,\n coords.x,\n coords.y,\n 'component',\n labelOffsetX,\n labelOffsetY,\n component.inertia,\n sourceStrategy\n );\n });\n\n // Add notes\n ast.notes.forEach((note) => {\n const coords = toCoordinates(note.visibility, note.evolution, `Note \"${note.text}\"`);\n db.addNote(note.text, coords.x, coords.y);\n });\n\n // Process pipelines\n ast.pipelines.forEach((pipeline) => {\n const parentNode = db.getNode(pipeline.parent);\n if (!parentN
"mappings": "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
"names": ["getConfig", "clear", "getConfig", "id", "height", "text"]
}