{
  "definitions": [
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "core/converters/graph.code.converter.ts",
          "name": "siteCodes",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-graph-code-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/graph.code.converter.ts",
            "label": "core/converters/graph.code.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/graph.code.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-graph-code-converter-ts"
          }
        },
        {
          "file": "core/converters/graph.code.converter.ts",
          "name": "tabOrder",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-graph-code-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/graph.code.converter.ts",
            "label": "core/converters/graph.code.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/graph.code.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-graph-code-converter-ts"
          }
        },
        {
          "file": "core/converters/graph.code.converter.ts",
          "name": "tabOrder",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-graph-code-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/graph.code.converter.ts",
            "label": "core/converters/graph.code.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/graph.code.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-graph-code-converter-ts"
          }
        },
        {
          "file": "core/converters/graph.code.converter.ts",
          "name": "tabOrder",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-graph-code-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/graph.code.converter.ts",
            "label": "core/converters/graph.code.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/graph.code.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-graph-code-converter-ts"
          }
        },
        {
          "file": "core/converters/learning.converter.ts",
          "name": "draftsOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        },
        {
          "file": "core/converters/learning.converter.ts",
          "name": "draftsOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        }
      ],
      "exported": true,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 29,
      "name": "chunkCode",
      "signature": "export const chunkCode = function chunkCode(index: number): string {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "core/analyzers/learning.analyzer.ts",
          "name": "tabParts",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-analyzers-learning-analyzer-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/analyzers/learning.analyzer.ts",
            "label": "core/analyzers/learning.analyzer.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/analyzers/learning.analyzer.ts.md",
            "ref": "anatomy:file-build-scripts-core-analyzers-learning-analyzer-ts"
          }
        },
        {
          "file": "core/converters/learning.converter.ts",
          "name": "draftsOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        },
        {
          "file": "core/converters/learning.converter.ts",
          "name": "sectionsIn",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        },
        {
          "file": "core/converters/learning.converter.ts",
          "name": "unitsOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        },
        {
          "file": "core/converters/learning.converter.ts",
          "name": "unitsOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        },
        {
          "file": "core/coordinators/page.coordinator.ts",
          "name": "prerenderSite",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-coordinators-page-coordinator-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/coordinators/page.coordinator.ts",
            "label": "core/coordinators/page.coordinator.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/coordinators/page.coordinator.ts.md",
            "ref": "anatomy:file-build-scripts-core-coordinators-page-coordinator-ts"
          }
        }
      ],
      "exported": true,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 35,
      "name": "textOf",
      "signature": "export const textOf = function textOf(value: unknown): string {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "core/converters/learning.converter.ts",
          "name": "drain",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        },
        {
          "file": "core/converters/learning.converter.ts",
          "name": "orderUnits",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        },
        {
          "file": "core/converters/learning.converter.ts",
          "name": "orderUnits",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        }
      ],
      "exported": true,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 103,
      "name": "emit",
      "signature": "const emit = function emit(unit: Unit): void {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/converters/learning.converter.ts",
          "name": "textOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        },
        {
          "file": "core/converters/learning.converter.ts",
          "name": "textOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        }
      ],
      "callers": [
        {
          "file": "core/converters/learning.converter.ts",
          "name": "unitsFor",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        }
      ],
      "exported": true,
      "flow": "relay",
      "kind": "lexical_declaration",
      "line": 73,
      "name": "unitsOf",
      "signature": "export const unitsOf = function unitsOf("
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/converters/learning.converter.ts",
          "name": "emit",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        }
      ],
      "callers": [
        {
          "file": "core/converters/learning.converter.ts",
          "name": "orderUnits",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        }
      ],
      "exported": true,
      "flow": "relay",
      "kind": "lexical_declaration",
      "line": 109,
      "name": "drain",
      "signature": "const drain = function drain(): void {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "core/converters/learning.converter.ts",
          "name": "draftsOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        }
      ],
      "exported": true,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 47,
      "name": "safeLabel",
      "signature": "export const safeLabel = function safeLabel(title: string): string {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "core/converters/learning.converter.ts",
          "name": "draftsOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 58,
      "name": "ordinal",
      "signature": "const ordinal = function ordinal(value: number): string {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/converters/learning.converter.ts",
          "name": "chunkCode",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        },
        {
          "file": "core/converters/learning.converter.ts",
          "name": "chunkCode",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        },
        {
          "file": "core/converters/learning.converter.ts",
          "name": "ordinal",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        },
        {
          "file": "core/converters/learning.converter.ts",
          "name": "safeLabel",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        },
        {
          "file": "core/converters/learning.converter.ts",
          "name": "textOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        }
      ],
      "callers": [],
      "exported": false,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 134,
      "name": "draftsOf",
      "signature": "const draftsOf = function draftsOf("
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/converters/learning.converter.ts",
          "name": "drain",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        },
        {
          "file": "core/converters/learning.converter.ts",
          "name": "emit",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        },
        {
          "file": "core/converters/learning.converter.ts",
          "name": "emit",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        }
      ],
      "callers": [],
      "exported": true,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 99,
      "name": "orderUnits",
      "signature": "export const orderUnits = function orderUnits(spine: readonly Unit[], others: readonly Unit[]): readonly Unit[] {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/converters/learning.converter.ts",
          "name": "textOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        }
      ],
      "callers": [],
      "exported": true,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 39,
      "name": "sectionsIn",
      "signature": "export const sectionsIn = function sectionsIn(tab: TabRecord): readonly SectionRecord[] {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/converters/learning.converter.ts",
          "name": "unitsOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.converter.ts",
            "label": "core/converters/learning.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts"
          }
        }
      ],
      "callers": [],
      "exported": true,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 170,
      "name": "unitsFor",
      "signature": "const unitsFor = function unitsFor(page: string): readonly Unit[] {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 21,
      "name": "FRAGMENT",
      "signature": "const FRAGMENT = \"#\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 22,
      "name": "SUBSTITUTE",
      "signature": "const SUBSTITUTE = \"'\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 23,
      "name": "SEPARATOR",
      "signature": "const SEPARATOR = \" - \";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 24,
      "name": "LOWEST",
      "signature": "const LOWEST = 32;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 25,
      "name": "HIGHEST",
      "signature": "const HIGHEST = 126;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 26,
      "name": "TWO_DIGITS",
      "signature": "const TWO_DIGITS = 10;"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 27,
      "name": "ALPHABET",
      "signature": "const ALPHABET = \"abcdefghijklmnopqrstuvwxyz\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 30,
      "name": "first",
      "signature": "const first = ALPHABET[Math.floor(index / ALPHABET.length) % ALPHABET.length] ?? \"\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 31,
      "name": "second",
      "signature": "const second = ALPHABET[index % ALPHABET.length] ?? \"\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 52,
      "name": "code",
      "signature": "const code = character.codePointAt(0) ?? 0;"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 62,
      "name": "heldIn",
      "signature": "export const heldIn = function heldIn("
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 66,
      "name": "byId",
      "signature": "const byId = new Map(Object.entries(graph.sections));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 79,
      "name": "sections",
      "signature": "const sections = sectionsIn(tab);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 81,
      "name": "teaches",
      "signature": "const teaches = held.flatMap((entry) => entry.teaches);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 85,
      "name": "inside",
      "signature": "const inside = new Set(teaches);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 86,
      "name": "external",
      "signature": "const external = [...new Set(held.flatMap((entry) => entry.requires))].filter("
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 95,
      "name": "readyIn",
      "signature": "const readyIn = function readyIn(pending: readonly Unit[], taught: ReadonlySet<string>): Unit | undefined {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 100,
      "name": "ordered",
      "signature": "const ordered: Unit[] = [];"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 101,
      "name": "taught",
      "signature": "const taught = new Set<string>();"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 102,
      "name": "pending",
      "signature": "let pending = [...others];"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 110,
      "name": "ready",
      "signature": "const ready = readyIn(pending, taught);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "interface_declaration",
      "line": 128,
      "name": "Draft",
      "signature": "interface Draft {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 144,
      "name": "number",
      "signature": "const number = drafts.length + 1;"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 164,
      "name": "teachingRoute",
      "signature": "export const teachingRoute = function teachingRoute("
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 169,
      "name": "byPage",
      "signature": "const byPage = new Map(graphs.map((graph) => [graph.page, graph]));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 171,
      "name": "graph",
      "signature": "const graph = byPage.get(page);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 174,
      "name": "others",
      "signature": "const others = SITE_PAGES.filter((page) => page !== SPINE).flatMap(unitsFor);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 175,
      "name": "drafts",
      "signature": "const drafts = draftsOf(router, orderUnits(unitsFor(SPINE), others), graphs);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 176,
      "name": "teachers",
      "signature": "const teachers = conceptTeachers(graphs);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 177,
      "name": "idOf",
      "signature": "const idOf = new Map(drafts.map((draft) => [draft.node, draft.stop.id]));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 179,
      "name": "required",
      "signature": "const required = draft.requires.flatMap((concept) => {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 180,
      "name": "id",
      "signature": "const id = idOf.get(teachers.get(concept)?.at(-1) ?? \"\");"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 187,
      "name": "teachingBlocks",
      "signature": "export const teachingBlocks = function teachingBlocks(stops: readonly Stop[]): readonly Block[] {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 188,
      "name": "blocks",
      "signature": "const blocks: { code: string; label: string; owner: string; stops: BlockStop[] }[] = [];"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 189,
      "name": "held",
      "signature": "let held: string | null = null;"
    }
  ],
  "document": null,
  "findings": [],
  "generated": false,
  "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-converter-ts",
  "language": "typescript",
  "layer": "processing",
  "name": "learning.converter.ts",
  "path": "core/converters/learning.converter.ts",
  "ref": "anatomy:file-build-scripts-core-converters-learning-converter-ts",
  "relations": [
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/build-scripts#folder-build-scripts-core-converters",
          "json": "https://banes-lab.com/json/anatomy/build-scripts/folder-build-scripts-core-converters",
          "label": "core/converters",
          "markdown": "https://banes-lab.com/anatomy/build-scripts/folder-build-scripts-core-converters.md",
          "ref": "chapter:/anatomy/build-scripts#folder-build-scripts-core-converters"
        }
      ],
      "relation": "contained-in"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-analyzers-learning-analyzer-ts",
          "json": "https://banes-lab.com/json/source/build-scripts/core/analyzers/learning.analyzer.ts",
          "label": "core/analyzers/learning.analyzer.ts",
          "markdown": "https://banes-lab.com/source/build-scripts/core/analyzers/learning.analyzer.ts.md",
          "ref": "anatomy:file-build-scripts-core-analyzers-learning-analyzer-ts"
        },
        {
          "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-graph-code-converter-ts",
          "json": "https://banes-lab.com/json/source/build-scripts/core/converters/graph.code.converter.ts",
          "label": "core/converters/graph.code.converter.ts",
          "markdown": "https://banes-lab.com/source/build-scripts/core/converters/graph.code.converter.ts.md",
          "ref": "anatomy:file-build-scripts-core-converters-graph-code-converter-ts"
        },
        {
          "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-coordinators-page-coordinator-ts",
          "json": "https://banes-lab.com/json/source/build-scripts/core/coordinators/page.coordinator.ts",
          "label": "core/coordinators/page.coordinator.ts",
          "markdown": "https://banes-lab.com/source/build-scripts/core/coordinators/page.coordinator.ts.md",
          "ref": "anatomy:file-build-scripts-core-coordinators-page-coordinator-ts"
        }
      ],
      "relation": "used-by"
    },
    {
      "links": [
        {
          "href": "https://banes-lab.com/anatomy/build-scripts#folder-build-scripts-core-analyzers",
          "json": "https://banes-lab.com/json/anatomy/build-scripts/folder-build-scripts-core-analyzers",
          "label": "core/analyzers",
          "markdown": "https://banes-lab.com/anatomy/build-scripts/folder-build-scripts-core-analyzers.md",
          "ref": "chapter:/anatomy/build-scripts#folder-build-scripts-core-analyzers"
        },
        {
          "href": "https://banes-lab.com/anatomy/build-scripts#folder-build-scripts-core-converters",
          "json": "https://banes-lab.com/json/anatomy/build-scripts/folder-build-scripts-core-converters",
          "label": "core/converters",
          "markdown": "https://banes-lab.com/anatomy/build-scripts/folder-build-scripts-core-converters.md",
          "ref": "chapter:/anatomy/build-scripts#folder-build-scripts-core-converters"
        },
        {
          "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": "converter",
    "subject": "learning",
    "variant": null
  },
  "stats": {
    "bytes": 7045,
    "callable": 15,
    "definitions": 46,
    "edges": 13,
    "exported": 34,
    "files": 1,
    "findings": {},
    "flows": {
      "leaf": 5,
      "relay": 2,
      "entry": 4,
      "isolated": 35
    },
    "lines": {
      "blank": 14,
      "code": 184,
      "total": 198
    }
  },
  "summary": "184 lines of code and 46 definitions.",
  "text": "https://banes-lab.com/source/build-scripts/core/converters/learning.converter.ts.txt",
  "tree": "build-scripts",
  "siblings": {
    "next": {
      "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-lexicon-converter-ts",
      "json": "https://banes-lab.com/json/source/build-scripts/core/converters/lexicon.converter.ts",
      "label": "core/converters/lexicon.converter.ts",
      "markdown": "https://banes-lab.com/source/build-scripts/core/converters/lexicon.converter.ts.md",
      "ref": "anatomy:file-build-scripts-core-converters-lexicon-converter-ts"
    },
    "previous": {
      "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-learning-catalog-converter-ts",
      "json": "https://banes-lab.com/json/source/build-scripts/core/converters/learning.catalog.converter.ts",
      "label": "core/converters/learning.catalog.converter.ts",
      "markdown": "https://banes-lab.com/source/build-scripts/core/converters/learning.catalog.converter.ts.md",
      "ref": "anatomy:file-build-scripts-core-converters-learning-catalog-converter-ts"
    }
  },
  "up": {
    "href": null,
    "json": "https://banes-lab.com/json/api/source/build-scripts/core/converters",
    "label": "core/converters",
    "markdown": "https://banes-lab.com/api/source/build-scripts/core/converters.md",
    "ref": "api:source/build-scripts/core/converters"
  }
}
