{
  "schema": "leumas.docs.page/1",
  "id": "adapter:domain/a-json",
  "slug": "adapters/domain/a-json",
  "kind": "capabilities",
  "bucket": "package",
  "title": "a-json (adapter system)",
  "name": "a-json",
  "eyebrow": "adapter system",
  "chip": null,
  "summary": "JSON transformation capability pack: 23 structural transforms — camelCase keys, flatten, dedupe, group-by, filter, pluck, merge-with-defaults, path extraction, computed fields, conditional routing...",
  "keywords": [
    "a-json",
    "pluck",
    "temporal",
    "camelcase",
    "transformation",
    "leumas a json",
    "conditional",
    "flatten"
  ],
  "audience": "both",
  "funnel": {
    "product": null,
    "cta": null
  },
  "body": "# a-json (adapter system)\n\nJSON transformation **capability pack**. Ported from `leumas-middleware/lib/a.json` — the pure core:\n23 structural transforms. Stripped: express `server.js`, `frontend/`, `public/`, `scripts/`, and the\ninfra helpers (`adapterRegistry.js`, `runAdapter.js`) that dynamically scanned the on-disk adapters\nfolder.\n\nThe **real helper functions** are reused verbatim under [`./helpers`](./helpers), and each source\nadapter is preserved under [`./adapters/<name>/index.js`](./adapters) (import paths rewritten to the\nco-located helpers). `index.js` imports each adapter's default export and exposes\n`adapters[<id>] = (args) => <adapter>(args)`.\n\n## Tools (`adapters`)\n\n| tool | args | result |\n|------|------|--------|\n| `camelCaseKeys` | object/array | keys recased to camelCase |\n| `flattenNested` | nested object | dot-path-flattened object |\n| `dedupeByKey` | `array` or `{ data, key, strategy }` | de-duplicated array |\n| `groupByKey` | `{ data, key }` | `{ <keyValue>: [...] }` |\n| `filterByValue` | `{ data, key, value }` | filtered array |\n| `pluckKeys` | `{ data, keysToPluck }` | projected array |\n| `mergeWithDefaults` | `{ defaults, data }` | deep-merged object |\n| `pathExtractor` | `{ data, paths }` | extracted values |\n| `computedFields` | `{ data, computed }` | enriched rows |\n| `conditionalRouter` | `{ data, rules }` | routed payload |\n| `currencyNormalizer` / `temporalNormalizer` | `{ data, ... }` | normalized rows |\n| `geoEnricher` / `graphBuilder` | `{ data, ... }` | enriched/graph output |\n| `secretScrubber` | `{ data, keys }` | scrubbed payload |\n| `schemaComparator` | `{ left, right }` | schema diff |\n| `validationHarness` | `{ data, rules }` | validation report |\n| `sortAndPaginate` | `{ data, options }` | page slice |\n| `eventAccumulator` | `{ data, groupBy, metrics }` | aggregates |\n| `referenceResolver` | `{ data, lookup, ... }` | resolved refs |\n| `binaryEncoder` | `{ data, fields, format }` | encoded fields |\n| `aiPrompt` | `{ data, template }` | built prompt |\n| `textAnalyzer` | `{ data, field }` | text stats |\n\n(`cloned_adapter` in the source was an exact duplicate of `camelCaseKeys` and was dropped.)\n",
  "source": {
    "path": "shared/engines/adapters/domain/a-json/README.md",
    "blobSha": "",
    "commit": "",
    "committedAt": "",
    "provenance": "no-git",
    "bytes": 2361,
    "hash": "fb1a037a14d565b24b9d34ff64d6de76ead54192"
  },
  "urls": {
    "html": "/p/adapters/domain/a-json",
    "json": "/docs/adapters/domain/a-json.json",
    "md": "/docs/adapters/domain/a-json.md"
  },
  "links": {
    "composes": [],
    "usedBy": [],
    "product": [],
    "howTo": [],
    "skills": []
  }
}
