Generation of diagrams like flowcharts or sequence diagrams from text in a similar manner as markdown
This report summarizes scanner evidence for mermaid-js/mermaid, a TypeScript project with 90,942 GitHub stars. SynthScan examined 341,457 lines of code across 1657 source files, recording 383 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 1.9 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 282 finding(s).
Are imports declared and package/API names verified? 13 finding(s).
Are wrappers, guards, and repeated structures necessary? 230 finding(s).
Which changes need focused human review? 383 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 383 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …c/rendering-util/layout-algorithms/ddlt/sizeCapture.ts | 5 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …c/rendering-util/layout-algorithms/ddlt/sizeCapture.ts | 25 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …dering-util/layout-algorithms/layout-utils/geometry.ts | 9 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …dering-util/layout-algorithms/layout-utils/geometry.ts | 11 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …dering-util/layout-algorithms/layout-utils/geometry.ts | 18 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …dering-util/layout-algorithms/layout-utils/geometry.ts | 20 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …dering-util/layout-algorithms/layout-utils/geometry.ts | 34 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …dering-util/layout-algorithms/layout-utils/geometry.ts | 36 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ing-util/layout-algorithms/layout-utils/scoreLayout.ts | 16 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ing-util/layout-algorithms/layout-utils/scoreLayout.ts | 18 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ing-util/layout-algorithms/layout-utils/scoreLayout.ts | 55 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ing-util/layout-algorithms/layout-utils/scoreLayout.ts | 57 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ing-util/layout-algorithms/layout-utils/scoreLayout.ts | 109 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ing-util/layout-algorithms/layout-utils/scoreLayout.ts | 111 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ing-util/layout-algorithms/layout-utils/scoreLayout.ts | 143 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ing-util/layout-algorithms/layout-utils/scoreLayout.ts | 145 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ing-util/layout-algorithms/layout-utils/scoreLayout.ts | 251 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ing-util/layout-algorithms/layout-utils/scoreLayout.ts | 253 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ing-util/layout-algorithms/layout-utils/scoreLayout.ts | 271 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ing-util/layout-algorithms/layout-utils/scoreLayout.ts | 273 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …ing-util/layout-algorithms/layout-utils/scoreLayout.ts | 358 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …ing-util/layout-algorithms/layout-utils/scoreLayout.ts | 360 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ing-util/layout-algorithms/layout-utils/scoreLayout.ts | 457 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ing-util/layout-algorithms/layout-utils/scoreLayout.ts | 459 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ing-util/layout-algorithms/layout-utils/scoreLayout.ts | 499 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ing-util/layout-algorithms/layout-utils/scoreLayout.ts | 501 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 16 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 18 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 35 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 37 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 94 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 96 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 165 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 167 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 662 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 664 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 726 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 738 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 776 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 778 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 798 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 800 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 825 | // ─── New: edge-bend-near-endpoint ──────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 1099 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 1114 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 1244 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 1246 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 1294 | // ─── New: edge-shared-attachment-point ─────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 1318 | // ─── New: edge-shared-projected-port ───────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 1360 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 1362 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 1448 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 1450 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 1467 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …-util/layout-algorithms/layout-utils/validateLayout.ts | 1469 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/mermaid/src/diagrams/flowchart/flowDb.ts | 1179 | // ── Collapsible subgraphs (issue #7784) ────────────────────────────── | COMMENT |
| MEDIUM | packages/mermaid/src/diagrams/flowchart/flowDb.ts | 1179 | // ── Collapsible subgraphs (issue #7784) ────────────────────────────── | COMMENT |
| MEDIUM | packages/mermaid/src/diagrams/agentflow/agentflowDb.ts | 232 | // ── Element-mapping infrastructure (PR 2a) ─────────────────────────── | COMMENT |
| MEDIUM | packages/mermaid/src/diagrams/agentflow/agentflowDb.ts | 246 | // ── Diagnostic layer (PR 2b) ────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/mermaid/src/diagrams/agentflow/agentflowDb.ts | 1978 | // ── Semantic-model projection (PR 3) ───────────────────────────────── | COMMENT |
| 28 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/screenshot-sheets.ts | 590 | function sheetMetadataFromManifest(manifest: SheetManifest): ArgosScreenshotMetadata { | CODE |
| LOW | scripts/screenshot-sheets.ts | 629 | export async function ensureSheetMetadataSidecars(outDir: string): Promise<number> { | CODE |
| LOW | packages/mermaid-layout-tidy-tree/src/layout.ts | 166 | function convertNodeToTidyTreeTransposed( | CODE |
| LOW | packages/mermaid-layout-tidy-tree/src/layout.ts | 298 | function positionLeftTreeBidirectional( | CODE |
| LOW | packages/mermaid-layout-tidy-tree/src/layout.ts | 332 | function positionRightTreeBidirectional( | CODE |
| LOW | packages/mermaid-layout-tidy-tree/src/layout.ts | 369 | function computeCircleEdgeIntersection(circle: Bounds, lineStart: Point, lineEnd: Point): Point { | CODE |
| LOW | packages/parser/tests/test-util.ts | 40 | export function expectNoErrorsOrAlternatives(result: ParseResult) { | CODE |
| LOW | packages/parser/tests/test-util.ts | 62 | export function createArchitectureTestServices() { | CODE |
| LOW | packages/parser/tests/test-util.ts | 106 | export function createGitGraphTestServices() { | CODE |
| LOW | packages/parser/tests/test-util.ts | 118 | export function createEventModelingTestServices() { | CODE |
| LOW | packages/parser/tests/test-util.ts | 128 | export function createTreeViewTestServices() { | CODE |
| LOW | packages/parser/src/language/architecture/module.ts | 65 | export function createArchitectureServices( | CODE |
| LOW | packages/parser/src/language/eventmodeling/module.ts | 44 | export function createEventModelingServices( | CODE |
| LOW | packages/parser/src/language/railroad-ebnf/module.ts | 41 | export function createRailroadEbnfServices( | CODE |
| LOW | packages/parser/src/language/railroad-abnf/module.ts | 41 | export function createRailroadAbnfServices( | CODE |
| LOW | packages/parser/src/language/railroad-peg/module.ts | 41 | export function createRailroadPegServices( | CODE |
| LOW | packages/mermaid/src/mermaidAPI.ts | 73 | function processAndSetConfigs(text: string) { | CODE |
| LOW | packages/mermaid/src/utils.ts | 398 | function calcTerminalLabelPosition( | CODE |
| LOW | packages/mermaid/src/styles.spec.ts | 37 | function checkValidStylisCSSStyleSheet(stylisString: string) { | CODE |
| LOW | packages/mermaid/src/rendering-util/createText.ts | 237 | function updateTextContentAndStyles( | CODE |
| LOW | packages/mermaid/src/rendering-util/createGraph.ts | 29 | export function createLayoutElementGroups( | CODE |
| LOW | …ermaid/src/rendering-util/cloneLayoutDataForMeasure.ts | 7 | export function cloneLayoutDataForDomMeasure(layout: LayoutData): LayoutData { | CODE |
| LOW | …ermaid/src/rendering-util/cloneLayoutDataForMeasure.ts | 27 | export function copyMeasuredGraphOntoCanonical(canonical: LayoutData, measured: LayoutData): void { | CODE |
| LOW | packages/mermaid/src/rendering-util/splitText.ts | 46 | function splitWordToFitWidthRecursion( | CODE |
| LOW | packages/mermaid/src/rendering-util/splitText.ts | 90 | function splitLineToFitWidthRecursion( | CODE |
| LOW | …dering-util/layout-algorithms/ddlt/baselineDdltSpec.ts | 21 | function segmentCrossesRectInterior( | CODE |
| LOW | …/rendering-util/layout-algorithms/ddlt/fixtureSizes.ts | 79 | export function applySyntheticContentSizes( | CODE |
| LOW | …/rendering-util/layout-algorithms/ddlt/fixtureSizes.ts | 118 | export function applyFixtureContentSizesStrict(layout: LayoutData, fixture: SizesFixture): void { | CODE |
| LOW | …/rendering-util/layout-algorithms/ddlt/fixtureSizes.ts | 136 | export function applyFixtureLabelSizesStrict(layout: LayoutData, fixture: SizesFixture): void { | CODE |
| LOW | …ng-util/layout-algorithms/ddlt/domusEdgeLabelInject.ts | 7 | export function injectDomusEdgeLabelNodes(data: LayoutData): void { | CODE |
| LOW | …dering-util/layout-algorithms/ddlt/discoverFixtures.ts | 43 | export function discoverLayoutTestFixtures(): LayoutTestFixture[] { | CODE |
| LOW | …/src/rendering-util/layout-algorithms/ddlt/backends.ts | 23 | function topUpSwimlaneFlowchartConfig(layout: LayoutData): void { | CODE |
| LOW | …ering-util/layout-algorithms/ddlt/aggregateValidate.ts | 45 | export function combineValidateLayoutResults( | CODE |
| LOW | …ing-util/layout-algorithms/swimlanes/phase0.helpers.ts | 81 | export function buildPredecessorSuccessorMaps( | CODE |
| LOW | …/rendering-util/layout-algorithms/swimlanes/helpers.ts | 137 | function dropLanesEmptiedBySharedNodes(layout: LayoutData, nodes: Node[]): void { | CODE |
| LOW | …/rendering-util/layout-algorithms/swimlanes/helpers.ts | 163 | export function prepareLayoutForSwimlanes(layout: LayoutData): void { | CODE |
| LOW | …ing-util/layout-algorithms/swimlanes/postProcessing.ts | 29 | export function postProcessSwimlaneLayout(layout: LayoutData, direction?: string): void { | CODE |
| LOW | …layout-algorithms/swimlanes/phase2.laneAwareCompact.ts | 16 | function topoSortByGenerationIfAcyclic(g: Graph): NodeId[] | null { | CODE |
| LOW | …ayout-algorithms/swimlanes/phase2.crossOptimization.ts | 12 | function countCrossingsBetweenAdjacent(upper: NodeId[], lower: NodeId[], edges: EdgeRef[]): number { | CODE |
| LOW | …/layout-algorithms/swimlanes/mermaid-work.ddlt.spec.ts | 197 | function maxRectangularHairpinLength(points: Point[]): number { | CODE |
| LOW | …util/layout-algorithms/swimlanes/phase2.crossCounts.ts | 12 | export function computeSubtreeCrossCounts( | CODE |
| LOW | …ng-util/layout-algorithms/swimlanes/phase3.ordering.ts | 59 | function countCrossingsBetweenAdjacent(upper: NodeId[], lower: NodeId[], edges: Edge[]): number { | CODE |
| LOW | …algorithms/swimlanes/__tests__/phase2.layering.spec.ts | 25 | function mkSwimlaneGraphForCrossLane(): Graph { | CODE |
| LOW | …algorithms/swimlanes/__tests__/pipeline.hoe.lr.spec.ts | 177 | function hasZeroProgressOutAndBack(points: Point[]): boolean { | CODE |
| LOW | …/layout-algorithms/swimlanes/direction/terminalStub.ts | 44 | export function collapseShortTerminalStub(edges: any[], nodeByIdMap: Map<string, any>): void { | CODE |
| LOW | …util/layout-algorithms/swimlanes/direction/geometry.ts | 142 | export function sameAxisSegmentOverlapLength( | CODE |
| LOW | …util/layout-algorithms/swimlanes/direction/geometry.ts | 156 | export function orthogonalSegmentsForPoints(points: Point[], epsilon = EPS): OrthogonalSegment[] { | CODE |
| LOW | …util/layout-algorithms/swimlanes/direction/geometry.ts | 224 | export function classifyThreeSegmentRoute( | CODE |
| LOW | …util/layout-algorithms/swimlanes/direction/geometry.ts | 576 | export function segmentConflictsWithAnyEdge( | CODE |
| LOW | …util/layout-algorithms/swimlanes/direction/geometry.ts | 611 | export function orthogonalSegmentsStrictlyCross( | CODE |
| LOW | …/layout-algorithms/swimlanes/direction/endpointClip.ts | 85 | export function clipEdgeEndpointsToNodeBoundaries(edges: unknown[], nodeByIdMap: Map<string, any>) { | CODE |
| LOW | …/layout-algorithms/swimlanes/direction/endpointClip.ts | 238 | function clearStraightEndpointCornerAxis( | CODE |
| LOW | …/layout-algorithms/swimlanes/direction/endpointClip.ts | 267 | function clearStraightEndpointCornerConnections( | CODE |
| LOW | …/layout-algorithms/swimlanes/direction/endpointClip.ts | 320 | function clearEndpointCornerConnection(points: Point[], r: NodeRect, atStart: boolean): Point[] { | CODE |
| LOW | …/layout-algorithms/swimlanes/direction/endpointClip.ts | 447 | export function prepareEdgeEndpointsForRenderer(edges: unknown[], nodeByIdMap: Map<string, any>) { | CODE |
| LOW | …t-algorithms/swimlanes/direction/sharedTrackNudging.ts | 13 | export function nudgeSharedInteriorSubpaths(edges: Edge[], nodeByIdMap: Map<string, Node>): void { | CODE |
| LOW | …rithms/swimlanes/direction/siblingSharedFaceRouting.ts | 84 | export function straightenCollinearSiblingDetours(edges: Edge[], nodes: Node[]): void { | CODE |
| LOW | …l/layout-algorithms/swimlanes/direction/lrTransform.ts | 71 | function recomputeNestedGroupBounds(nodes: LayoutNode[]): void { | CODE |
| LOW | …l/layout-algorithms/swimlanes/direction/lrTransform.ts | 133 | export function applyBtDirectionTransform(layout: LayoutData): boolean { | CODE |
| LOW | …l/layout-algorithms/swimlanes/direction/lrTransform.ts | 270 | export function applyLrDirectionTransform( | CODE |
| 82 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | netlify.toml | 1 | # Settings in the [build] context are global and are applied to | COMMENT |
| LOW | tsconfig.json | 21 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in sour | COMMENT |
| LOW | tsconfig.json | 41 | COMMENT | |
| LOW | tsconfig.json | 61 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only use | COMMENT |
| LOW | tsconfig.json | 81 | "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, | COMMENT |
| LOW | packages/mermaid/src/profiler.ts | 321 | profiling: false, | COMMENT |
| LOW | …c/rendering-util/layout-algorithms/ddlt/sizeCapture.ts | 1 | import type { Selection } from 'd3'; | COMMENT |
| LOW | …layout-algorithms/swimlanes/query-process.ddlt.spec.ts | 181 | // Pure orthogonal routing should not produce any segment crossings here. | COMMENT |
| LOW | …layout-algorithms/swimlanes/query-process.ddlt.spec.ts | 301 | const layout = await runQueryProcessSwimlanes(); | COMMENT |
| LOW | …layout-algorithms/swimlanes/query-process.ddlt.spec.ts | 341 | // | COMMENT |
| LOW | …ing-util/layout-algorithms/swimlanes/postProcessing.ts | 81 | // Retarget short terminal stubs that are hidden by endpoint clipping. | COMMENT |
| LOW | …ing-util/layout-algorithms/swimlanes/postProcessing.ts | 121 | anchorLabelsToPolyline(edges, nodeByIdMap); | COMMENT |
| LOW | …util/layout-algorithms/swimlanes/simple-2.ddlt.spec.ts | 41 | // terminate at node B. Before iter 14, `anchorLabelsToPolyline` picked | COMMENT |
| LOW | …util/layout-algorithms/swimlanes/simple-2.ddlt.spec.ts | 81 | ); | COMMENT |
| LOW | …util/layout-algorithms/swimlanes/simple-2.ddlt.spec.ts | 101 | // E→B" (user report, 2026-04-16). | COMMENT |
| LOW | …ut-algorithms/swimlanes/8-query-process-2.ddlt.spec.ts | 61 | // ... → (1191.89, 331.79) → (1191.89, 240.54) → (1197.41, 240.54)=G.left | COMMENT |
| LOW | …ut-algorithms/swimlanes/8-query-process-2.ddlt.spec.ts | 101 | }); | COMMENT |
| LOW | …ut-algorithms/swimlanes/8-query-process-2.ddlt.spec.ts | 141 | '[8_QUERY_PROCESS_2_DDLT] short-terminal-stub offenders:', | COMMENT |
| LOW | …ut-algorithms/swimlanes/8-query-process-2.ddlt.spec.ts | 161 | // incoming direction (i.e. the face that points toward E's lane). | COMMENT |
| LOW | …t-algorithms/swimlanes/7-car-sales-constr.ddlt.spec.ts | 41 | }); | COMMENT |
| LOW | …orithms/swimlanes/5-car-fun-sales-wide-tb.ddlt.spec.ts | 41 | } | COMMENT |
| LOW | …orithms/swimlanes/5-car-fun-sales-wide-tb.ddlt.spec.ts | 81 | JSON.stringify({ ldeEndOnE, lefStartOnE }) | COMMENT |
| LOW | …orithms/swimlanes/5-car-fun-sales-wide-tb.ddlt.spec.ts | 101 | // L_D_E_0 routes afterward, A* sees the +1000 crossing penalty against | COMMENT |
| LOW | …orithms/swimlanes/5-car-fun-sales-wide-tb.ddlt.spec.ts | 161 | // Iter 10's simplifyDetouredEdges correctly produces this straight | COMMENT |
| LOW | …algorithms/swimlanes/6-legal-constr-sales.ddlt.spec.ts | 41 | it('Level 1: L_I_K_0 does not hug J while routing toward K', async () => { | COMMENT |
| LOW | …layout-algorithms/swimlanes/orthogonalRouter/router.ts | 481 | dxSign: Math.sign(dx), | COMMENT |
| LOW | …layout-algorithms/swimlanes/orthogonalRouter/router.ts | 601 | COMMENT | |
| LOW | …layout-algorithms/swimlanes/orthogonalRouter/router.ts | 1041 | // | COMMENT |
| LOW | …layout-algorithms/swimlanes/orthogonalRouter/router.ts | 1061 | // When these hold, set e.points directly and skip the rest of the | COMMENT |
| LOW | …layout-algorithms/swimlanes/orthogonalRouter/router.ts | 1101 | if ( | COMMENT |
| LOW | …thogonalRouter/__tests__/raykov.repro_crossing.spec.ts | 201 | // | COMMENT |
| LOW | …lanes/orthogonalRouter/__tests__/raykov.router.spec.ts | 421 | }); | COMMENT |
| LOW | …lanes/orthogonalRouter/__tests__/raykov.router.spec.ts | 521 | ); | COMMENT |
| LOW | …lanes/orthogonalRouter/__tests__/raykov.router.spec.ts | 541 | // In LR direction with swimlanes, I, J, K are all at the same Y level | COMMENT |
| LOW | …lanes/orthogonalRouter/__tests__/raykov.issues.spec.ts | 401 | // Check for hook | COMMENT |
| LOW | …algorithms/swimlanes/__tests__/pipeline.hoe.lr.spec.ts | 201 | } | COMMENT |
| LOW | …ayout-algorithms/swimlanes/direction/labelAnchoring.ts | 281 | if (aFits !== bFits) { | COMMENT |
| LOW | …rithms/swimlanes/direction/siblingSharedFaceRouting.ts | 181 | } | COMMENT |
| LOW | …algorithms/swimlanes/direction/detourSimplification.ts | 141 | // checked against real-node obstacles and was blind to the E.top | COMMENT |
| LOW | …ering-util/layout-algorithms/elk/elkOptionCatalogue.ts | 41 | * shipping as a silent rendering change for every user. | COMMENT |
| LOW | …ering-util/layout-algorithms/elk/elkOptionCatalogue.ts | 61 | // 'elk.layered.layering.nodePromotion.strategy': 'NIKOLOV_IMPROVED', | COMMENT |
| LOW | …ering-util/layout-algorithms/elk/elkOptionCatalogue.ts | 81 | // Wired to `elk.nodePlacementStrategy`; uncomment to override that config. | COMMENT |
| LOW | …ering-util/layout-algorithms/elk/elkOptionCatalogue.ts | 101 | // 'elk.layered.nodePlacement.networkSimplex.nodeFlexibility': 'NODE_SIZE', | COMMENT |
| LOW | …ering-util/layout-algorithms/elk/elkOptionCatalogue.ts | 121 | // 'elk.layered.compaction.postCompaction.strategy': 'EDGE_LENGTH', | COMMENT |
| LOW | …ering-util/layout-algorithms/elk/elkOptionCatalogue.ts | 161 | */ | COMMENT |
| LOW | …ering-util/layout-algorithms/elk/elkOptionCatalogue.ts | 181 | // 'elk.layered.mergeHierarchyEdges': false, | COMMENT |
| LOW | …ering-util/layout-algorithms/elk/elkOptionCatalogue.ts | 201 | // 'elk.layered.edgeRouting.splines.mode': 'SLOPPY', | COMMENT |
| LOW | …ering-util/layout-algorithms/elk/elkOptionCatalogue.ts | 281 | * frame. MUST be empty on `develop`. | COMMENT |
| LOW | …aid/src/rendering-util/layout-algorithms/elk/render.ts | 401 | // the layered-scoped key; the unscoped `spacing.edgeNodeBetweenLayers` is | COMMENT |
| LOW | …aid/src/rendering-util/layout-algorithms/elk/render.ts | 421 | // so that lowering the base does not leave parallel edges touching. | COMMENT |
| LOW | …aid/src/rendering-util/layout-algorithms/elk/render.ts | 441 | // say in which wins, and quietly ignores an explicit `nodePlacementStrategy`. | COMMENT |
| LOW | …aid/src/rendering-util/layout-algorithms/elk/render.ts | 961 | // 'spacing.nodeNodeBetweenLayers': 25, | COMMENT |
| LOW | …-util/layout-algorithms/layout-utils/validateLayout.ts | 41 | // per-event constant. All tunable in this single block — relative ordering | COMMENT |
| LOW | …-util/layout-algorithms/layout-utils/validateLayout.ts | 721 | overlapCount: overlapDetails.length, | COMMENT |
| LOW | …-util/layout-algorithms/layout-utils/validateLayout.ts | 1101 | // | COMMENT |
| LOW | …ng-util/rendering-elements/intersect/intersect-line.js | 41 | } | COMMENT |
| LOW | …ng-util/rendering-elements/intersect/intersect-line.js | 61 | // The magnitude is always exactly half a unit, but the SIGN is per axis, | COMMENT |
| LOW | …ages/mermaid/src/diagrams/paletteCssGeneration.spec.ts | 161 | }); | COMMENT |
| LOW | packages/mermaid/src/diagrams/sankey/sankeyRenderer.ts | 101 | const labelStyle = conf?.labelStyle ?? defaultSankeyConfig.labelStyle ?? 'legacy'; | COMMENT |
| LOW | …ges/mermaid/src/diagrams/swimlanes/swimlanesDiagram.ts | 1 | // Swimlanes is a "layout-variant diagram": it reuses the flowchart parser, DB, | COMMENT |
| 26 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/community/new-diagram-jison.md | 14 | ### Step 1: Grammar & Parsing | COMMENT |
| LOW⚡ | docs/community/new-diagram-jison.md | 60 | ### Step 2: Rendering | COMMENT |
| LOW⚡ | docs/community/new-diagram-jison.md | 66 | ### Step 3: Detection of the new diagram type | COMMENT |
| LOW⚡ | docs/community/new-diagram-jison.md | 75 | ### Step 4: The final piece - triggering the rendering | COMMENT |
| LOW | docs/community/new-diagram.md | 85 | ## Step 1: Grammar and parsing | COMMENT |
| LOW | docs/community/new-diagram.md | 108 | ## Step 2: The database | COMMENT |
| LOW | docs/community/new-diagram.md | 129 | ## Step 3: The renderer | COMMENT |
| LOW | docs/community/new-diagram.md | 156 | ## Step 4: Detection and registration | COMMENT |
| LOW | docs/community/new-diagram.md | 189 | ## Step 5: Theming | COMMENT |
| LOW | docs/community/new-diagram.md | 216 | ## Step 6: Configuration | COMMENT |
| LOW | docs/community/new-diagram.md | 251 | ## Step 7: Tests | COMMENT |
| LOW | docs/community/new-diagram.md | 271 | ## Step 8: Documentation, demos, and examples | COMMENT |
| LOW | docs/community/new-diagram.md | 294 | ## Step 9: Changeset and pull request | COMMENT |
| LOW | packages/mermaid-layout-tidy-tree/src/render.ts | 51 | // Step 1: Insert nodes into DOM to get their actual dimensions | COMMENT |
| LOW | packages/mermaid-layout-tidy-tree/src/render.ts | 90 | // Step 2: Run the bidirectional tidy-tree layout algorithm | COMMENT |
| LOW | packages/mermaid-layout-tidy-tree/src/render.ts | 106 | // Step 3: Position the nodes based on bidirectional layout results | COMMENT |
| LOW | packages/mermaid-layout-tidy-tree/src/render.ts | 121 | // Step 3: Position the nodes based on bidirectional layout results | COMMENT |
| LOW | …endering-util/layout-algorithms/cose-bilkent/render.ts | 51 | // Step 1: Insert nodes into DOM to get their actual dimensions | COMMENT |
| LOW | …endering-util/layout-algorithms/cose-bilkent/render.ts | 86 | // Step 2: Run the cose-bilkent layout algorithm | COMMENT |
| LOW | …endering-util/layout-algorithms/cose-bilkent/render.ts | 104 | // Step 3: Position the nodes based on layout results | COMMENT |
| LOW | …endering-util/layout-algorithms/cose-bilkent/render.ts | 137 | // Step 4: Insert and position edges | COMMENT |
| LOW | …ckages/mermaid/src/docs/community/new-diagram-jison.md | 13 | ### Step 1: Grammar & Parsing | COMMENT |
| LOW⚡ | …ckages/mermaid/src/docs/community/new-diagram-jison.md | 60 | ### Step 2: Rendering | COMMENT |
| LOW⚡ | …ckages/mermaid/src/docs/community/new-diagram-jison.md | 66 | ### Step 3: Detection of the new diagram type | COMMENT |
| LOW⚡ | …ckages/mermaid/src/docs/community/new-diagram-jison.md | 75 | ### Step 4: The final piece - triggering the rendering | COMMENT |
| LOW | packages/mermaid/src/docs/community/new-diagram.md | 83 | ## Step 1: Grammar and parsing | COMMENT |
| LOW | packages/mermaid/src/docs/community/new-diagram.md | 106 | ## Step 2: The database | COMMENT |
| LOW | packages/mermaid/src/docs/community/new-diagram.md | 127 | ## Step 3: The renderer | COMMENT |
| LOW | packages/mermaid/src/docs/community/new-diagram.md | 154 | ## Step 4: Detection and registration | COMMENT |
| LOW | packages/mermaid/src/docs/community/new-diagram.md | 187 | ## Step 5: Theming | COMMENT |
| LOW | packages/mermaid/src/docs/community/new-diagram.md | 214 | ## Step 6: Configuration | COMMENT |
| LOW | packages/mermaid/src/docs/community/new-diagram.md | 249 | ## Step 7: Tests | COMMENT |
| LOW | packages/mermaid/src/docs/community/new-diagram.md | 269 | ## Step 8: Documentation, demos, and examples | COMMENT |
| LOW | packages/mermaid/src/docs/community/new-diagram.md | 292 | ## Step 9: Changeset and pull request | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | packages/mermaid/src/diagrams/sequence/sequenceDb.ts | 228 | this.state.records.currentBox.actorKeys.push(id); | CODE |
| CRITICAL | packages/mermaid/src/diagrams/sequence/sequenceDb.ts | 263 | id: this.state.records.messages.length.toString(), | CODE |
| CRITICAL | packages/mermaid/src/diagrams/sequence/sequenceDb.ts | 298 | id: this.state.records.messages.length.toString(), | CODE |
| CRITICAL | packages/mermaid/src/diagrams/sequence/sequenceDb.ts | 442 | id: this.state.records.messages.length.toString(), | CODE |
| CRITICAL | packages/mermaid/src/diagrams/sequence/sequenceDb.ts | 566 | id: this.state.records.messages.length.toString(), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | CHANGELOG.md | 198 | - [#8073](https://github.com/mermaid-js/mermaid/pull/8073) [`0cf3797`](https://github.com/mermaid-js/mermaid/commit/0cf3 | CODE |
| MEDIUM | CHANGELOG.md | 198 | - [#8073](https://github.com/mermaid-js/mermaid/pull/8073) [`0cf3797`](https://github.com/mermaid-js/mermaid/commit/0cf3 | CODE |
| MEDIUM | packages/tiny/CHANGELOG.md | 198 | - [#8073](https://github.com/mermaid-js/mermaid/pull/8073) [`0cf3797`](https://github.com/mermaid-js/mermaid/commit/0cf3 | CODE |
| MEDIUM | packages/tiny/CHANGELOG.md | 198 | - [#8073](https://github.com/mermaid-js/mermaid/pull/8073) [`0cf3797`](https://github.com/mermaid-js/mermaid/commit/0cf3 | CODE |
| MEDIUM | packages/mermaid/CHANGELOG.md | 198 | - [#8073](https://github.com/mermaid-js/mermaid/pull/8073) [`0cf3797`](https://github.com/mermaid-js/mermaid/commit/0cf3 | CODE |
| MEDIUM | packages/mermaid/CHANGELOG.md | 198 | - [#8073](https://github.com/mermaid-js/mermaid/pull/8073) [`0cf3797`](https://github.com/mermaid-js/mermaid/commit/0cf3 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/mermaid-layout-tidy-tree/src/render.ts | 51 | // Step 1: Insert nodes into DOM to get their actual dimensions | COMMENT |
| LOW | packages/mermaid-layout-tidy-tree/src/render.ts | 90 | // Step 2: Run the bidirectional tidy-tree layout algorithm | COMMENT |
| LOW | packages/mermaid-layout-tidy-tree/src/render.ts | 106 | // Step 3: Position the nodes based on bidirectional layout results | COMMENT |
| LOW | packages/mermaid-layout-tidy-tree/src/render.ts | 121 | // Step 3: Position the nodes based on bidirectional layout results | COMMENT |
| LOW | …endering-util/layout-algorithms/cose-bilkent/render.ts | 51 | // Step 1: Insert nodes into DOM to get their actual dimensions | COMMENT |
| LOW | …endering-util/layout-algorithms/cose-bilkent/render.ts | 86 | // Step 2: Run the cose-bilkent layout algorithm | COMMENT |
| LOW | …endering-util/layout-algorithms/cose-bilkent/render.ts | 104 | // Step 3: Position the nodes based on layout results | COMMENT |
| LOW | …endering-util/layout-algorithms/cose-bilkent/render.ts | 137 | // Step 4: Insert and position edges | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …thms/swimlanes/__tests__/helpers.prepareLayout.spec.ts | 145 | { id: 'placeholder', isGroup: true }, | CODE |
| LOW | …thms/swimlanes/__tests__/helpers.prepareLayout.spec.ts | 151 | expect(ids(layout)).toEqual(['lane1', 'placeholder', 'a']); | CODE |
| LOW | packages/mermaid/src/diagrams/kanban/samples.md | 71 | descr: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolor | CODE |
| LOW | packages/mermaid/src/diagrams/kanban/samples.md | 71 | descr: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolor | CODE |
| LOW | packages/mermaid/src/diagrams/kanban/samples.md | 99 | descr: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolor | CODE |
| LOW | packages/mermaid/src/diagrams/kanban/samples.md | 99 | descr: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolor | CODE |
| LOW | demos/xychart.html | 212 | x-axis "this is x axis" [category1, "Lorem ipsum dolor sit amet, qui minim labore adipisicing minim sint cillum sint | CODE |
| LOW | demos/xychart.html | 212 | x-axis "this is x axis" [category1, "Lorem ipsum dolor sit amet, qui minim labore adipisicing minim sint cillum sint | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/mermaid/src/diagrams/agentflow/agentflowDb.ts | 2160 | // enabled, but defend against a missing loc to keep the parser robust | COMMENT |
| MEDIUM | e2e/rendering/xychart/nightly-check/xyChart.spec.js | 37 | // the nearest bar along that axis (robust to filtered/degenerate bars). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/lint.yml | 56 | # make sure to return an error exitcode so that GitHub actions shows a red-cross | COMMENT |
| LOW | .github/workflows/lint.yml | 69 | # make sure to return an error exitcode so that GitHub actions shows a red-cross | COMMENT |
| LOW | .github/workflows/lint.yml | 83 | # make sure to return an error exitcode so that GitHub actions shows a red-cross | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/mermaid/src/schemas/config.schema.yaml | 4 | # This file defines the MermaidConfig JSON Schema as a YAML file. | COMMENT |