{
  "definitions": [
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "core/converters/layer.converter.ts",
          "name": "layersOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-layer-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/layer.converter.ts",
            "label": "core/converters/layer.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/layer.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-layer-converter-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 53,
      "name": "resolutionsOf",
      "signature": "const resolutionsOf = function resolutionsOf(context: GovlabContext, resolve: Resolver): readonly TensionView[] {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "core/converters/layer.converter.ts",
          "name": "layersOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-layer-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/layer.converter.ts",
            "label": "core/converters/layer.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/layer.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-layer-converter-ts"
          }
        }
      ],
      "exported": false,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 81,
      "name": "nodesOf",
      "signature": "const nodesOf = function nodesOf("
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "core/converters/ontology.converter.ts",
          "name": "snapshotOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-ontology-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/ontology.converter.ts",
            "label": "core/converters/ontology.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/ontology.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-ontology-converter-ts"
          }
        }
      ],
      "exported": true,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 117,
      "name": "kindsOf",
      "signature": "export const kindsOf = function kindsOf(context: GovlabContext): readonly KindView[] {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "core/converters/ontology.converter.ts",
          "name": "snapshotOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-ontology-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/ontology.converter.ts",
            "label": "core/converters/ontology.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/ontology.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-ontology-converter-ts"
          }
        }
      ],
      "exported": true,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 128,
      "name": "rangesOf",
      "signature": "export const rangesOf = function rangesOf(resolve: Resolver): readonly RelationRangeView[] {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [
        {
          "file": "core/converters/ontology.converter.ts",
          "name": "snapshotOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-ontology-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/ontology.converter.ts",
            "label": "core/converters/ontology.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/ontology.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-ontology-converter-ts"
          }
        }
      ],
      "exported": true,
      "flow": "leaf",
      "kind": "lexical_declaration",
      "line": 144,
      "name": "forcesOf",
      "signature": "export const forcesOf = function forcesOf(context: GovlabContext, resolve: Resolver): readonly ForceView[] {"
    },
    {
      "callable": true,
      "callees": [
        {
          "file": "core/converters/layer.converter.ts",
          "name": "nodesOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-layer-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/layer.converter.ts",
            "label": "core/converters/layer.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/layer.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-layer-converter-ts"
          }
        },
        {
          "file": "core/converters/layer.converter.ts",
          "name": "resolutionsOf",
          "source": {
            "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-layer-converter-ts",
            "json": "https://banes-lab.com/json/source/build-scripts/core/converters/layer.converter.ts",
            "label": "core/converters/layer.converter.ts",
            "markdown": "https://banes-lab.com/source/build-scripts/core/converters/layer.converter.ts.md",
            "ref": "anatomy:file-build-scripts-core-converters-layer-converter-ts"
          }
        }
      ],
      "callers": [],
      "exported": true,
      "flow": "entry",
      "kind": "lexical_declaration",
      "line": 100,
      "name": "layersOf",
      "signature": "export const layersOf = function layersOf(context: GovlabContext, resolve: Resolver): LayerView {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 18,
      "name": "ANTI_FORCE_MARK",
      "signature": "const ANTI_FORCE_MARK = \"(\";"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 19,
      "name": "PAIR_SEPARATOR",
      "signature": "const PAIR_SEPARATOR = \"|\";"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 21,
      "name": "groupBy",
      "signature": "const groupBy = function groupBy<T>(items: readonly T[], keyOf: (item: T) => string): readonly [string, T[]][] {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 22,
      "name": "groups",
      "signature": "const groups = new Map<string, T[]>();"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 30,
      "name": "membershipOf",
      "signature": "const membershipOf = function membershipOf(context: GovlabContext, resolve: Resolver): readonly MembershipView[] {"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 31,
      "name": "layerRef",
      "signature": "const layerRef = function layerRef(id: string): EdgeRef | null {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 32,
      "name": "layer",
      "signature": "const layer = context.layerOf(id);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 35,
      "name": "fromArch",
      "signature": "const fromArch = groupBy(context.arch.all(), (principle) => principle.category).map(([category, principles]) => {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 39,
      "name": "archCategories",
      "signature": "const archCategories = new Set(fromArch.map((entry) => slugify(entry.category.label)));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 40,
      "name": "fromLex",
      "signature": "const fromLex = groupBy(context.lex.all(), (term) => term.category)"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 43,
      "name": "first",
      "signature": "const first = terms.at(0);"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 49,
      "name": "pairKey",
      "signature": "const pairKey = function pairKey(a: string, b: string): string {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 54,
      "name": "explicit",
      "signature": "const explicit = new Set(context.resolutions().map((resolution) => pairKey(resolution.a, resolution.b)));"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 55,
      "name": "seen",
      "signature": "const seen = new Set<string>();"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 56,
      "name": "out",
      "signature": "const out: TensionView[] = [];"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 59,
      "name": "key",
      "signature": "const key = pairKey(principle.id, target);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 60,
      "name": "resolution",
      "signature": "const resolution = context.resolveTension(principle.id, target);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 63,
      "name": "a",
      "signature": "const a = resolve.arch(resolution.a);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 64,
      "name": "b",
      "signature": "const b = resolve.arch(resolution.b);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": false,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 88,
      "name": "{ ref }",
      "signature": "const { ref } = resolve.layer(layer.id);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 101,
      "name": "membership",
      "signature": "const membership = membershipOf(context, resolve);"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 102,
      "name": "topology",
      "signature": "const topology = context"
    },
    {
      "callable": true,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 135,
      "name": "forceNames",
      "signature": "export const forceNames = function forceNames(context: GovlabContext): ReadonlySet<string> {"
    },
    {
      "callable": false,
      "callees": [],
      "callers": [],
      "exported": true,
      "flow": "isolated",
      "kind": "lexical_declaration",
      "line": 145,
      "name": "known",
      "signature": "const known = forceNames(context);"
    }
  ],
  "document": null,
  "findings": [],
  "generated": false,
  "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-layer-converter-ts",
  "language": "typescript",
  "layer": "processing",
  "name": "layer.converter.ts",
  "path": "core/converters/layer.converter.ts",
  "ref": "anatomy:file-build-scripts-core-converters-layer-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-converters-ontology-converter-ts",
          "json": "https://banes-lab.com/json/source/build-scripts/core/converters/ontology.converter.ts",
          "label": "core/converters/ontology.converter.ts",
          "markdown": "https://banes-lab.com/source/build-scripts/core/converters/ontology.converter.ts.md",
          "ref": "anatomy:file-build-scripts-core-converters-ontology-converter-ts"
        }
      ],
      "relation": "used-by"
    },
    {
      "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": "linked-from"
    }
  ],
  "slots": {
    "concern": "converter",
    "subject": "layer",
    "variant": null
  },
  "stats": {
    "bytes": 6373,
    "callable": 11,
    "definitions": 30,
    "edges": 2,
    "exported": 8,
    "files": 1,
    "findings": {},
    "flows": {
      "leaf": 5,
      "entry": 1,
      "isolated": 24
    },
    "lines": {
      "blank": 11,
      "code": 145,
      "total": 156
    }
  },
  "summary": "145 lines of code and 30 definitions.",
  "text": "https://banes-lab.com/source/build-scripts/core/converters/layer.converter.ts.txt",
  "tree": "build-scripts",
  "siblings": {
    "next": {
      "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-layer-reference-converter-ts",
      "json": "https://banes-lab.com/json/source/build-scripts/core/converters/layer.reference.converter.ts",
      "label": "core/converters/layer.reference.converter.ts",
      "markdown": "https://banes-lab.com/source/build-scripts/core/converters/layer.reference.converter.ts.md",
      "ref": "anatomy:file-build-scripts-core-converters-layer-reference-converter-ts"
    },
    "previous": {
      "href": "https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-converters-journal-converter-ts",
      "json": "https://banes-lab.com/json/source/build-scripts/core/converters/journal.converter.ts",
      "label": "core/converters/journal.converter.ts",
      "markdown": "https://banes-lab.com/source/build-scripts/core/converters/journal.converter.ts.md",
      "ref": "anatomy:file-build-scripts-core-converters-journal-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"
  }
}
