{
  "definitions": [
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "distributionTable",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        },
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "renderNested",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        },
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "symbolsTable",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 43,
      "name": "head",
      "signature": "const head = function head(columns: readonly string[]): string {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/formatters/markup.formatter.ts",
          "name": "anchorMarkup",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-formatters-markup-formatter-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/formatters/markup.formatter.ts",
            "label": "core/formatters/markup.formatter.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/formatters/markup.formatter.ts.md",
            "ref": "anatomy:file-patterns-core-formatters-markup-formatter-ts"
          }
        }
      ],
      "callers": [
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "subLine",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        },
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "subLine",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        }
      ],
      "exported": false,
      "flow": "relay",
      "kind": "lexical_declaration",
      "line": 47,
      "name": "artifactLink",
      "signature": "const artifactLink = function artifactLink(key: string): string {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "findingsCard",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        },
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "renderNested",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 52,
      "name": "card",
      "signature": "const card = function card(heading: string, body: string): string {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "artifactLink",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        },
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "artifactLink",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        }
      ],
      "callers": [
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "renderPage",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        }
      ],
      "exported": false,
      "flow": "relay",
      "kind": "lexical_declaration",
      "line": 163,
      "name": "subLine",
      "signature": "const subLine = function subLine(page: PageRender): string {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "cellsScript",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        },
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "subLine",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        }
      ],
      "callers": [
        {
          "file": "core/coordinators/page.coordinator.ts",
          "name": "renderOne",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-coordinators-page-coordinator-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/coordinators/page.coordinator.ts",
            "label": "core/coordinators/page.coordinator.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/coordinators/page.coordinator.ts.md",
            "ref": "anatomy:file-patterns-core-coordinators-page-coordinator-ts"
          }
        }
      ],
      "exported": true,
      "flow": "relay",
      "kind": "lexical_declaration",
      "line": 170,
      "name": "renderPage",
      "signature": "export const renderPage = function renderPage(page: PageRender): string {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "nestedRow",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 60,
      "name": "flaggedCell",
      "signature": "const flaggedCell = function flaggedCell(count: number): string {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "symbolRow",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 76,
      "name": "dependentsCell",
      "signature": "const dependentsCell = function dependentsCell(fanIn: ReadonlyMap<string, number>, name: string): string {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "hexFigure",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 136,
      "name": "legend",
      "signature": "const legend = function legend(): string {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "renderPage",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 148,
      "name": "cellsScript",
      "signature": "const cellsScript = function cellsScript(page: PageRender): string {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/formatters/markup.formatter.ts",
          "name": "escapeXml",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-formatters-markup-formatter-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/formatters/markup.formatter.ts",
            "label": "core/formatters/markup.formatter.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/formatters/markup.formatter.ts.md",
            "ref": "anatomy:file-patterns-core-formatters-markup-formatter-ts"
          }
        },
        {
          "file": "core/formatters/markup.formatter.ts",
          "name": "escapeXml",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-formatters-markup-formatter-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/formatters/markup.formatter.ts",
            "label": "core/formatters/markup.formatter.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/formatters/markup.formatter.ts.md",
            "ref": "anatomy:file-patterns-core-formatters-markup-formatter-ts"
          }
        },
        {
          "file": "core/formatters/markup.formatter.ts",
          "name": "escapeXml",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-formatters-markup-formatter-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/formatters/markup.formatter.ts",
            "label": "core/formatters/markup.formatter.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/formatters/markup.formatter.ts.md",
            "ref": "anatomy:file-patterns-core-formatters-markup-formatter-ts"
          }
        },
        {
          "file": "core/formatters/markup.formatter.ts",
          "name": "escapeXml",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-formatters-markup-formatter-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/formatters/markup.formatter.ts",
            "label": "core/formatters/markup.formatter.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/formatters/markup.formatter.ts.md",
            "ref": "anatomy:file-patterns-core-formatters-markup-formatter-ts"
          }
        },
        {
          "file": "core/formatters/markup.formatter.ts",
          "name": "escapeXml",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-formatters-markup-formatter-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/formatters/markup.formatter.ts",
            "label": "core/formatters/markup.formatter.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/formatters/markup.formatter.ts.md",
            "ref": "anatomy:file-patterns-core-formatters-markup-formatter-ts"
          }
        }
      ],
      "callers": [],
      "exported": false,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 89,
      "name": "findingRow",
      "signature": "const findingRow = function findingRow(finding: CodeFinding): string {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/formatters/markup.formatter.ts",
          "name": "anchorMarkup",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-formatters-markup-formatter-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/formatters/markup.formatter.ts",
            "label": "core/formatters/markup.formatter.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/formatters/markup.formatter.ts.md",
            "ref": "anatomy:file-patterns-core-formatters-markup-formatter-ts"
          }
        },
        {
          "file": "core/formatters/markup.formatter.ts",
          "name": "escapeXml",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-formatters-markup-formatter-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/formatters/markup.formatter.ts",
            "label": "core/formatters/markup.formatter.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/formatters/markup.formatter.ts.md",
            "ref": "anatomy:file-patterns-core-formatters-markup-formatter-ts"
          }
        },
        {
          "file": "core/formatters/markup.formatter.ts",
          "name": "escapeXml",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-formatters-markup-formatter-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/formatters/markup.formatter.ts",
            "label": "core/formatters/markup.formatter.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/formatters/markup.formatter.ts.md",
            "ref": "anatomy:file-patterns-core-formatters-markup-formatter-ts"
          }
        }
      ],
      "callers": [],
      "exported": false,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 56,
      "name": "pageLink",
      "signature": "const pageLink = function pageLink(page: string, label: string): string {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/formatters/markup.formatter.ts",
          "name": "escapeXml",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-formatters-markup-formatter-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/formatters/markup.formatter.ts",
            "label": "core/formatters/markup.formatter.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/formatters/markup.formatter.ts.md",
            "ref": "anatomy:file-patterns-core-formatters-markup-formatter-ts"
          }
        },
        {
          "file": "core/formatters/markup.formatter.ts",
          "name": "escapeXml",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-formatters-markup-formatter-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/formatters/markup.formatter.ts",
            "label": "core/formatters/markup.formatter.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/formatters/markup.formatter.ts.md",
            "ref": "anatomy:file-patterns-core-formatters-markup-formatter-ts"
          }
        },
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "legend",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        }
      ],
      "callers": [],
      "exported": false,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 144,
      "name": "hexFigure",
      "signature": "const hexFigure = function hexFigure(svg: string, walk: string, title: string, subtitle: string): string {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "card",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        },
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "head",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        }
      ],
      "callers": [],
      "exported": true,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 69,
      "name": "renderNested",
      "signature": "export const renderNested = function renderNested(nestedFigure: string, children: readonly NestedChild[]): string {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/formatters/markup.formatter.ts",
          "name": "escapeXml",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-formatters-markup-formatter-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/formatters/markup.formatter.ts",
            "label": "core/formatters/markup.formatter.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/formatters/markup.formatter.ts.md",
            "ref": "anatomy:file-patterns-core-formatters-markup-formatter-ts"
          }
        },
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "dependentsCell",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        }
      ],
      "callers": [],
      "exported": false,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 83,
      "name": "symbolRow",
      "signature": "const symbolRow = function symbolRow(stat: SymbolStat, fanIn: ReadonlyMap<string, number>): string {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "flaggedCell",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        }
      ],
      "callers": [],
      "exported": false,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 64,
      "name": "nestedRow",
      "signature": "const nestedRow = function nestedRow(child: NestedChild): string {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/formatters/markup.formatter.ts",
          "name": "escapeXml",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-formatters-markup-formatter-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/formatters/markup.formatter.ts",
            "label": "core/formatters/markup.formatter.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/formatters/markup.formatter.ts.md",
            "ref": "anatomy:file-patterns-core-formatters-markup-formatter-ts"
          }
        }
      ],
      "callers": [],
      "exported": false,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 95,
      "name": "typeRow",
      "signature": "const typeRow = function typeRow(stat: TypeStat, max: number): string {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "head",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        }
      ],
      "callers": [],
      "exported": false,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 100,
      "name": "symbolsTable",
      "signature": "const symbolsTable = function symbolsTable(symbols: readonly SymbolStat[], fanIn: ReadonlyMap<string, number>): string {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "head",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        }
      ],
      "callers": [],
      "exported": false,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 108,
      "name": "distributionTable",
      "signature": "const distributionTable = function distributionTable(distribution: Distribution): string {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/formatters/markup.formatter.ts",
          "name": "escapeXml",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-formatters-markup-formatter-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/formatters/markup.formatter.ts",
            "label": "core/formatters/markup.formatter.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/formatters/markup.formatter.ts.md",
            "ref": "anatomy:file-patterns-core-formatters-markup-formatter-ts"
          }
        }
      ],
      "callers": [],
      "exported": false,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 118,
      "name": "crumbNav",
      "signature": "const crumbNav = function crumbNav(crumbs: readonly Crumb[], label: string): string {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/renderers/report.renderer.ts",
          "name": "card",
          "source": {
            "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
            "json": "https://banes-lab.com/json/source/patterns/core/renderers/report.renderer.ts",
            "label": "core/renderers/report.renderer.ts",
            "markdown": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.md",
            "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts"
          }
        }
      ],
      "callers": [],
      "exported": false,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 126,
      "name": "findingsCard",
      "signature": "const findingsCard = function findingsCard(findings: readonly CodeFinding[]): string {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 31,
      "name": "BACKSLASH",
      "signature": "const BACKSLASH = 0x5C;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 32,
      "name": "ESCAPED_LT",
      "signature": "const ESCAPED_LT = `${String.fromCodePoint(BACKSLASH)}u003c`;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 33,
      "name": "SEPARATOR",
      "signature": "const SEPARATOR = \" &middot; \";"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 35,
      "name": "baseName",
      "signature": "const baseName = function baseName(path: string): string {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 39,
      "name": "headCell",
      "signature": "const headCell = function headCell(column: string): string {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 48,
      "name": "name",
      "signature": "const name = esc(basename(relativePath(key)));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 65,
      "name": "label",
      "signature": "const label = child.page === \"\" ? esc(child.label) : pageLink(child.page, child.label);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 77,
      "name": "count",
      "signature": "const count = fanIn.get(name) ?? 0;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 84,
      "name": "flow",
      "signature": "const flow = `<span class=\"pill\" style=\"--c:${FLOW_COLOR.get(stat.flow) ?? MUTED_COLOR}\">${stat.flow}</span>`;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 90,
      "name": "where",
      "signature": "const where = finding.file.length > 0 ? `<span class=\"dim mono\">${esc(finding.file)}:${finding.line}</span>` : \"\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 91,
      "name": "color",
      "signature": "const color = SEVERITY_COLOR.get(finding.severity) ?? MUTED_COLOR;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 96,
      "name": "width",
      "signature": "const width = Math.max(BAR_MIN, Math.round((stat.count / Math.max(1, max)) * BAR_FULL));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 104,
      "name": "rows",
      "signature": "const rows = symbols.map((stat) => symbolRow(stat, fanIn)).join(\"\");"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 109,
      "name": "max",
      "signature": "const max = distribution.invariants[0]?.count ?? 1;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 110,
      "name": "common",
      "signature": "const common = distribution.invariants.map((stat) => typeRow(stat, max)).join(\"\");"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 111,
      "name": "rare",
      "signature": "const rare ="
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 122,
      "name": "links",
      "signature": "const links = crumbs.map((crumb) => pageLink(crumb.page, crumb.label)).join(`<span>/</span>`);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 137,
      "name": "items",
      "signature": "const items = STATE_LEGEND.map("
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 149,
      "name": "payload",
      "signature": "const payload = JSON.stringify({"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 156,
      "name": "codeGrid",
      "signature": "const codeGrid = function codeGrid(svg: string, page: PageRender): string {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 157,
      "name": "walk",
      "signature": "const walk = hexFigure(svg, WALK_MAIN, page.label, page.walkSubtitle);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 158,
      "name": "syntax",
      "signature": "const syntax = card(REPORT_HEADINGS.distribution, distributionTable(page.distribution));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 159,
      "name": "symbols",
      "signature": "const symbols = card(REPORT_HEADINGS.symbols, symbolsTable(page.symbols, page.fanIn));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 164,
      "name": "definitions",
      "signature": "const definitions = page.definitions + page.nested.reduce((sum, child) => sum + child.defs, 0);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 165,
      "name": "flagged",
      "signature": "const flagged = page.findings.length + page.nested.reduce((sum, child) => sum + child.anomalies, 0);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 166,
      "name": "summary",
      "signature": "const summary = summaryLine(definitions, flagged, page.nested.length > 0 ? nestedCount(page.nested.length) : \"\");"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 171,
      "name": "nested",
      "signature": "const nested ="
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 175,
      "name": "grid",
      "signature": "const grid = page.mainSvg === \"\" ? \"\" : codeGrid(page.mainSvg, page);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 176,
      "name": "findings",
      "signature": "const findings = findingsCard(page.findings);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 177,
      "name": "header",
      "signature": "const header = `<style>${REPORT_STYLES}</style>${crumbNav(page.crumbs, page.label)}<h1>${esc(page.label)}</h1>`;"
    }
  ],
  "document": null,
  "findings": [],
  "generated": false,
  "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-report-renderer-ts",
  "language": "typescript",
  "layer": "product",
  "name": "report.renderer.ts",
  "path": "core/renderers/report.renderer.ts",
  "ref": "anatomy:file-patterns-core-renderers-report-renderer-ts",
  "relations": [
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/patterns#folder-patterns-core-renderers",
          "json": "https://banes-lab.com/json/anatomy/patterns/folder-patterns-core-renderers",
          "label": "core/renderers",
          "markdown": "https://banes-lab.com/anatomy/patterns/folder-patterns-core-renderers.md",
          "ref": "chapter:/anatomy/patterns#folder-patterns-core-renderers"
        }
      ],
      "relation": "contained-in"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-formatters-markup-formatter-ts",
          "json": "https://banes-lab.com/json/source/patterns/core/formatters/markup.formatter.ts",
          "label": "core/formatters/markup.formatter.ts",
          "markdown": "https://banes-lab.com/source/patterns/core/formatters/markup.formatter.ts.md",
          "ref": "anatomy:file-patterns-core-formatters-markup-formatter-ts"
        }
      ],
      "relation": "uses"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-coordinators-page-coordinator-ts",
          "json": "https://banes-lab.com/json/source/patterns/core/coordinators/page.coordinator.ts",
          "label": "core/coordinators/page.coordinator.ts",
          "markdown": "https://banes-lab.com/source/patterns/core/coordinators/page.coordinator.ts.md",
          "ref": "anatomy:file-patterns-core-coordinators-page-coordinator-ts"
        }
      ],
      "relation": "used-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/patterns#folder-patterns-core-coordinators",
          "json": "https://banes-lab.com/json/anatomy/patterns/folder-patterns-core-coordinators",
          "label": "core/coordinators",
          "markdown": "https://banes-lab.com/anatomy/patterns/folder-patterns-core-coordinators.md",
          "ref": "chapter:/anatomy/patterns#folder-patterns-core-coordinators"
        },
        {
          "href": "https://banes-lab.com/anatomy/patterns#folder-patterns-core-formatters",
          "json": "https://banes-lab.com/json/anatomy/patterns/folder-patterns-core-formatters",
          "label": "core/formatters",
          "markdown": "https://banes-lab.com/anatomy/patterns/folder-patterns-core-formatters.md",
          "ref": "chapter:/anatomy/patterns#folder-patterns-core-formatters"
        },
        {
          "href": "https://banes-lab.com/anatomy/patterns#folder-patterns-core-renderers",
          "json": "https://banes-lab.com/json/anatomy/patterns/folder-patterns-core-renderers",
          "label": "core/renderers",
          "markdown": "https://banes-lab.com/anatomy/patterns/folder-patterns-core-renderers.md",
          "ref": "chapter:/anatomy/patterns#folder-patterns-core-renderers"
        }
      ],
      "relation": "linked-from"
    }
  ],
  "slots": {
    "concern": "renderer",
    "subject": "report",
    "variant": null
  },
  "stats": {
    "bytes": 8602,
    "callable": 23,
    "definitions": 50,
    "edges": 26,
    "exported": 6,
    "files": 1,
    "findings": {},
    "flows": {
      "leaf": 6,
      "relay": 3,
      "entry": 11,
      "isolated": 30
    },
    "lines": {
      "blank": 24,
      "code": 155,
      "total": 179
    }
  },
  "summary": "155 lines of code and 50 definitions.",
  "text": "https://banes-lab.com/source/patterns/core/renderers/report.renderer.ts.txt",
  "tree": "patterns",
  "siblings": {
    "next": {
      "href": "https://banes-lab.com/anatomy/patterns#file-patterns-core-renderers-walk-renderer-ts",
      "json": "https://banes-lab.com/json/source/patterns/core/renderers/walk.renderer.ts",
      "label": "core/renderers/walk.renderer.ts",
      "markdown": "https://banes-lab.com/source/patterns/core/renderers/walk.renderer.ts.md",
      "ref": "anatomy:file-patterns-core-renderers-walk-renderer-ts"
    },
    "previous": null
  },
  "up": {
    "href": null,
    "json": "https://banes-lab.com/json/api/source/patterns/core/renderers",
    "label": "core/renderers",
    "markdown": "https://banes-lab.com/api/source/patterns/core/renderers.md",
    "ref": "api:source/patterns/core/renderers"
  }
}
