{
  "definitions": [
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "core/coordinators/validation.coordinator.ts",
          "name": "validateDiscovery",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-coordinators-validation-coordinator-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/coordinators/validation.coordinator.ts",
            "label": "core/coordinators/validation.coordinator.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/coordinators/validation.coordinator.ts.md",
            "ref": "anatomy:file-build-scripts-core-coordinators-validation-coordinator-ts"
          }
        }
      ],
      "exported": true,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 90,
      "name": "citationFindings",
      "signature": "export const citationFindings = async function citationFindings("
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 7,
      "name": "KIND_KEY",
      "signature": "const KIND_KEY = \"kind\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 8,
      "name": "DEFINITION_KIND",
      "signature": "const DEFINITION_KIND = \"definition\" as const;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 9,
      "name": "DEFINITION_NAME_KEY",
      "signature": "const DEFINITION_NAME_KEY = \"name\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 10,
      "name": "DEFINITION_FILE_KEY",
      "signature": "const DEFINITION_FILE_KEY = \"file\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 11,
      "name": "DEFINITION_LINE_KEY",
      "signature": "const DEFINITION_LINE_KEY = \"line\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 12,
      "name": "DEFINITION_TITLE_KEY",
      "signature": "const DEFINITION_TITLE_KEY = \"title\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 13,
      "name": "FRAGMENT_MARK",
      "signature": "const FRAGMENT_MARK = \"#\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 14,
      "name": "FRAGMENT_ENDS",
      "signature": "const FRAGMENT_ENDS = new Set([\")\", '\"', \"'\", \" \", \"<\", \">\", \"\\n\"]);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "interface_declaration",
      "line": 16,
      "name": "Citation",
      "signature": "interface Citation {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 23,
      "name": "citationsIn",
      "signature": "const citationsIn = function citationsIn(value: unknown): Citation[] {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 30,
      "name": "name",
      "signature": "const name = value[DEFINITION_NAME_KEY];"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 31,
      "name": "file",
      "signature": "const file = value[DEFINITION_FILE_KEY];"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 32,
      "name": "line",
      "signature": "const line = value[DEFINITION_LINE_KEY];"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 33,
      "name": "title",
      "signature": "const title = value[DEFINITION_TITLE_KEY];"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 34,
      "name": "own",
      "signature": "const own ="
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 48,
      "name": "fragmentEnd",
      "signature": "const fragmentEnd = function fragmentEnd(text: string, from: number): number {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 56,
      "name": "fragmentsIn",
      "signature": "const fragmentsIn = function fragmentsIn(text: string, anchor: string): string[] {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 58,
      "name": "at",
      "signature": "let at = text.indexOf(FRAGMENT_MARK + anchor);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 60,
      "name": "end",
      "signature": "const end = fragmentEnd(text, at + FRAGMENT_MARK.length);"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 67,
      "name": "stringsIn",
      "signature": "const stringsIn = function stringsIn(value: unknown): string[] {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 77,
      "name": "checkCitations",
      "signature": "const checkCitations = async function checkCitations(file: string, raw: string): Promise<Finding[]> {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 78,
      "name": "parsed",
      "signature": "const parsed: unknown = JSON.parse(raw);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 79,
      "name": "loader",
      "signature": "const loader = await import(\"@banes-lab/web/domain/loaders/anatomy.loader.ts\");"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 80,
      "name": "anchors",
      "signature": "const anchors = await import(\"@banes-lab/web/core/ids/anatomy.ids.ts\");"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 81,
      "name": "panels",
      "signature": "const panels = citationsIn(parsed)"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 84,
      "name": "links",
      "signature": "const links = stringsIn(parsed)"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 93,
      "name": "found",
      "signature": "const found = await Promise.all("
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 95,
      "name": "json",
      "signature": "const json = jsonFileOf(route.page, route.tab);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 96,
      "name": "raw",
      "signature": "const raw = readOrNull(json);"
    }
  ],
  "document": null,
  "findings": [],
  "generated": false,
  "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-validators-definition-validator-ts",
  "language": "typescript",
  "layer": "processing",
  "name": "definition.validator.ts",
  "path": "core/validators/definition.validator.ts",
  "ref": "anatomy:file-build-scripts-core-validators-definition-validator-ts",
  "relations": [
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/build-scripts#folder-build-scripts-core-validators",
          "json": "https://banes-lab.com/json/anatomy/build-scripts/folder-build-scripts-core-validators",
          "label": "core/validators",
          "markdown": "https://banes-lab.com/anatomy/build-scripts/folder-build-scripts-core-validators.md",
          "ref": "chapter:/anatomy/build-scripts#folder-build-scripts-core-validators"
        }
      ],
      "relation": "contained-in"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-coordinators-validation-coordinator-ts",
          "json": "https://banes-lab.com/json/source/build-scripts/core/coordinators/validation.coordinator.ts",
          "label": "core/coordinators/validation.coordinator.ts",
          "markdown": "https://banes-lab.com/source/build-scripts/core/coordinators/validation.coordinator.ts.md",
          "ref": "anatomy:file-build-scripts-core-coordinators-validation-coordinator-ts"
        }
      ],
      "relation": "used-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/build-scripts#folder-build-scripts-core-coordinators",
          "json": "https://banes-lab.com/json/anatomy/build-scripts/folder-build-scripts-core-coordinators",
          "label": "core/coordinators",
          "markdown": "https://banes-lab.com/anatomy/build-scripts/folder-build-scripts-core-coordinators.md",
          "ref": "chapter:/anatomy/build-scripts#folder-build-scripts-core-coordinators"
        }
      ],
      "relation": "linked-from"
    }
  ],
  "slots": {
    "concern": "validator",
    "subject": "definition",
    "variant": null
  },
  "stats": {
    "bytes": 3775,
    "callable": 6,
    "definitions": 30,
    "edges": 0,
    "exported": 4,
    "files": 1,
    "findings": {},
    "flows": {
      "leaf": 1,
      "isolated": 29
    },
    "lines": {
      "blank": 8,
      "code": 93,
      "total": 101
    }
  },
  "summary": "93 lines of code and 30 definitions.",
  "text": "https://banes-lab.com/source/build-scripts/core/validators/definition.validator.ts.txt",
  "tree": "build-scripts",
  "siblings": {
    "next": {
      "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-validators-element-validator-ts",
      "json": "https://banes-lab.com/json/source/build-scripts/core/validators/element.validator.ts",
      "label": "core/validators/element.validator.ts",
      "markdown": "https://banes-lab.com/source/build-scripts/core/validators/element.validator.ts.md",
      "ref": "anatomy:file-build-scripts-core-validators-element-validator-ts"
    },
    "previous": {
      "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-validators-catalog-walk-validator-ts",
      "json": "https://banes-lab.com/json/source/build-scripts/core/validators/catalog.walk.validator.ts",
      "label": "core/validators/catalog.walk.validator.ts",
      "markdown": "https://banes-lab.com/source/build-scripts/core/validators/catalog.walk.validator.ts.md",
      "ref": "anatomy:file-build-scripts-core-validators-catalog-walk-validator-ts"
    }
  },
  "up": {
    "href": null,
    "json": "https://banes-lab.com/json/api/source/build-scripts/core/validators",
    "label": "core/validators",
    "markdown": "https://banes-lab.com/api/source/build-scripts/core/validators.md",
    "ref": "api:source/build-scripts/core/validators"
  }
}
