{"_id":"@amritk/generate-markdown","_rev":"20-96ebe4373e0e0f69d1cad8b0188592d6","name":"@amritk/generate-markdown","dist-tags":{"latest":"0.8.0"},"versions":{"0.1.0":{"name":"@amritk/generate-markdown","version":"0.1.0","keywords":["json-schema","markdown","documentation","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/generate-markdown@0.1.0","maintainers":[{"name":"amritk","email":"amrit.kahlon00@gmail.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"379b0058ae8861c23249addd9f6f2cd6db860381","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.1.0.tgz","fileCount":4,"integrity":"sha512-E4wKAyKfMk9JaBgeslf36TXR4snma3roYfff08ekEdseJJgGdosLAHY8v6f1Plg1FpZHd9GR0YYbOTOCuw4FYg==","signatures":[{"sig":"MEUCIHYGUM3Vn47Qjfyc1uQ3DyOvFHtBWtvnYzZ5dEVkP3pWAiEAhQm3NyF5fyV1nA2EG1T8VFIth7joc2V2v9ueTRkLeK0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6118},"type":"module","module":"./dist/index.js","exports":{".":{"bun":"./src/index.ts","types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"ad1efe50a859b53f4364b91595f1afa35bc280df","scripts":{"build":"bun run build:code && bun run build:types","build:code":"bun build ./src/index.ts --outdir=dist --target=node","build:types":"tsc -p ."},"_npmUser":{"name":"amritk","email":"amrit.kahlon00@gmail.com"},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/generate-markdown"},"_npmVersion":"11.6.0","description":"Generate markdown documentation from JSON Schemas.","directories":{},"_nodeVersion":"24.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generate-markdown_0.1.0_1778522971538_0.6382713834121694","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@amritk/generate-markdown","version":"0.2.1","keywords":["json-schema","markdown","documentation","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/generate-markdown@0.2.1","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"bf66852bcc908ea721df22a2d7f979d6bf4eb6db","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.2.1.tgz","fileCount":4,"integrity":"sha512-IT3jfKu97lbIF6m3LkmxNTQWGs9Sx8Jl0xre88+p1b5V9faj80354k8SvBWhYW/Qkr0DuFsooM7acMRVPbbfFw==","signatures":[{"sig":"MEQCICARC0pBytJKhqMykOzBImoiFTIvH7cBNrbWEMSf85BkAiB34SY8QYfsrKhaVhD6LkVY7rMsjKPk6r1say/jpZU6VQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fgenerate-markdown@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6167},"type":"module","module":"./dist/index.js","exports":{".":{"bun":"./src/index.ts","types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"3aeee3195cedb17d42f2c998ba0ee938b8dfd5ae","scripts":{"build":"bun run build:code && bun run build:types","build:code":"bun build ./src/index.ts --outdir=dist --target=node","build:types":"tsc -p ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:30e156a0-efd9-41f5-87de-72a501e1140a"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/generate-markdown"},"_npmVersion":"11.14.1","description":"Generate markdown documentation from JSON Schemas.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generate-markdown_0.2.1_1779149031993_0.8423778713421353","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@amritk/generate-markdown","version":"0.2.2","keywords":["json-schema","markdown","documentation","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/generate-markdown@0.2.2","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"6b729c0ec29785d9bd018c28367f18d5db818504","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.2.2.tgz","fileCount":6,"integrity":"sha512-pCFPfKOQ805P9pFIKVpNmNctgUQCz2RAWuB39SnFdSdPILIQW6btK77aVMxR37Yvpm2O1VfkXpKr5wqPJWX02g==","signatures":[{"sig":"MEYCIQD2NKRwa/dzpXyQuWGm+9IaHXLwEvJQ2SyH4hy94kZZ3QIhAJN+wDdyHu3f+jL4eEBBVRoM3GcBt3XZHYLuFpkzRo/y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fgenerate-markdown@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":33932},"type":"module","module":"./dist/index.js","exports":{".":{"bun":"./src/index.ts","types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"04f1bf1775cf9423123e7528d2da301f89419130","scripts":{"build":"bun run build:code && bun run build:types","build:code":"bun build ./src/index.ts --outdir=dist --target=node","build:types":"tsc -p ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:30e156a0-efd9-41f5-87de-72a501e1140a"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/generate-markdown"},"_npmVersion":"11.16.0","description":"Generate markdown documentation from JSON Schemas.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generate-markdown_0.2.2_1780080780166_0.6000017647519644","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@amritk/generate-markdown","version":"0.2.3","keywords":["json-schema","markdown","documentation","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/generate-markdown@0.2.3","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"82559e523bbeefe1d0ba5829b1b59350f803178c","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.2.3.tgz","fileCount":6,"integrity":"sha512-xksCPuu+iDK24Th6cH5KD8rva9C4k0Quz86BErKuvaTffJperykMi1WB9Uzvs7SJmjZFS26Jbe4+IPo8T/XHtg==","signatures":[{"sig":"MEUCIC+Jup+bUcOz3/2JZMdtI15RvvX7w9fR76ql0gYaxgKzAiEA2qWdN6LnyomQCH3IOZ0jr/N6idBB1gPmcfekD2xmWS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fgenerate-markdown@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":33932},"type":"module","module":"./dist/index.js","exports":{".":{"bun":"./src/index.ts","types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"ea364dcc86c57e61cd1d9cbd12cf55d25071aae8","scripts":{"build":"bun run build:code && bun run build:types","build:code":"bun build ./src/index.ts --outdir=dist --target=node","build:types":"tsc -p ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:30e156a0-efd9-41f5-87de-72a501e1140a"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/generate-markdown"},"_npmVersion":"11.16.0","description":"Generate markdown documentation from JSON Schemas.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generate-markdown_0.2.3_1780081253714_0.9497593737108538","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@amritk/generate-markdown","version":"0.2.4","keywords":["json-schema","markdown","documentation","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/generate-markdown@0.2.4","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"3bede03be3170ceb11c5ada969d75a44563a2e10","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.2.4.tgz","fileCount":7,"integrity":"sha512-21mDNDpp0jqjnUL516vNqUiVKbNUpC/xqMO5bpTJfgfMIQ4M8gwKx1vIbDCYhaCkTDE+bsOlmFTUFhcyXPQ1sA==","signatures":[{"sig":"MEUCIQCMM0zL4oI+qN6z1nIc6YB0L60TMZwFybtVV86p5bKtLwIgJGuzZonEfUM/4c41g2NZxzr/zYDzx8vTZWVZVf6gnn0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fgenerate-markdown@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":36711},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","development":"./src/index.ts"}},"gitHead":"3d1f5a8de1430b6b00383ff07a5af1a01866b2c2","scripts":{"test":"NODE_ENV=production vitest run --root ../.. generate-markdown","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:30e156a0-efd9-41f5-87de-72a501e1140a"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/generate-markdown"},"_npmVersion":"11.16.0","description":"Generate markdown documentation from JSON Schemas.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generate-markdown_0.2.4_1780125117351_0.7745520678258402","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@amritk/generate-markdown","version":"0.3.0","keywords":["json-schema","markdown","documentation","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/generate-markdown@0.3.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"7b5086c0d245beffe917bdb51c501bda9c20d921","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.3.0.tgz","fileCount":4,"integrity":"sha512-3ltSrbv4GwGE4mSUEc1PdcvFBxmuEq0axR0r0iZQuZQWv0qUr9gWtZ4tie4S7/MHi9hXpwALPgD0OwXATgd6aQ==","signatures":[{"sig":"MEUCIQDvyzYeMT1/OM72CVCaRaJ7pDo538AbGgCgBQoh6CQqsAIgEkjqgaBRojcS0YmdCffZfjUt1tRdAboqV30exiqpwnQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fgenerate-markdown@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":18631},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"c54b0be57d9523244d4728125b933379b4a7590d","scripts":{"test":"NODE_ENV=production vitest run --root ../.. generate-markdown","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:30e156a0-efd9-41f5-87de-72a501e1140a"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/generate-markdown"},"_npmVersion":"11.17.0","description":"Generate markdown documentation from JSON Schemas.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generate-markdown_0.3.0_1782204100915_0.3960896956593336","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@amritk/generate-markdown","version":"0.4.0","keywords":["json-schema","markdown","documentation","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/generate-markdown@0.4.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"a1b3c9f776d2497139d1f52b1506e175ecb0d991","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.4.0.tgz","fileCount":4,"integrity":"sha512-4NER/SKsurlrON3s/bzWeJS0V+LUGeqaA2vgqES4SDCe1WVOzv0tB/S96c1x1m8WPr/AMoxF6au/cwmLMg7lsQ==","signatures":[{"sig":"MEUCIQC7JXa5ijpT5HQtcUvBJmDLx/w2/FwzxSJhgxE1trazDQIgVOsbldame9l5rRkS72Xfalw8aEoK8zWYWYVwJPXI9kI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fgenerate-markdown@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27729},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"de391b89cd6671e458f86b704d928aff919cb9f3","scripts":{"test":"NODE_ENV=production vitest run --root ../.. generate-markdown","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:30e156a0-efd9-41f5-87de-72a501e1140a"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/generate-markdown"},"_npmVersion":"11.17.0","description":"Generate markdown documentation from JSON Schemas.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generate-markdown_0.4.0_1782322853937_0.32857120517773053","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@amritk/generate-markdown","version":"0.4.1","keywords":["json-schema","markdown","documentation","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/generate-markdown@0.4.1","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"97ed2df9d3ed1fe310c489b4f1d1f6757d69eeb0","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.4.1.tgz","fileCount":4,"integrity":"sha512-XVyemEEoYtj115/Dg/aS09hNzgV1u2JCkyONEoHvvBE0F4L6U+mXVrnH+0yp0MWKV36dJuLj6jaEplQ+uL4aUw==","signatures":[{"sig":"MEUCIH0ErdRhJeo3q0v53aCk2tgWkoG7sRFxKQ8h0WOQ7LEOAiEAiXkPKbiR4cUR+I6WCg78cciHd1whYKvV6JevrkHC7Cw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fgenerate-markdown@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":28796},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"3ff2122f35b01511d8245fa28764056193a9f1f9","scripts":{"test":"NODE_ENV=production vitest run --root ../.. generate-markdown","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:30e156a0-efd9-41f5-87de-72a501e1140a"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/generate-markdown"},"_npmVersion":"11.18.0","description":"Generate markdown documentation from JSON Schemas.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generate-markdown_0.4.1_1783267882557_0.7054805844663028","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@amritk/generate-markdown","version":"0.4.2","keywords":["json-schema","markdown","documentation","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/generate-markdown@0.4.2","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"068d95ec338c717cc5cef78d8cd53226c16fdc4e","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.4.2.tgz","fileCount":5,"integrity":"sha512-cMuN+N4m0HnFYaiAjz+r9tuog7EkyO7zvqqRVvwmKjwOjvkV8qBhdlTCTal5uK9W6+PA3xcv/miYzyjbrdFqfg==","signatures":[{"sig":"MEUCIQDkWhc8Am0gRSH65K23m9EJZtyhVAKvQQ51tGIswWwrOgIgCFXgogfN+kk3c4CyN7KdPfC1bus/l/wsc4blYWIRlbI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fgenerate-markdown@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29850},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"29a068e0d1778e8cc7d775b2829cccf572114aad","scripts":{"test":"NODE_ENV=production vitest run --root ../.. generate-markdown","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:30e156a0-efd9-41f5-87de-72a501e1140a"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/generate-markdown"},"_npmVersion":"12.0.1","description":"Generate markdown documentation from JSON Schemas.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generate-markdown_0.4.2_1784280006175_0.6630826731373156","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@amritk/generate-markdown","version":"0.4.3","keywords":["json-schema","markdown","documentation","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/generate-markdown@0.4.3","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"abb957fd3c15af818a9eed0201dff31a9d009b5e","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.4.3.tgz","fileCount":5,"integrity":"sha512-4nT2xrLoWNILXoBt1ixzldac/VZcGFwmn3APdFGgu/6ArzGuFMaAer1Og4xj1ESe4zhfWlyi3fTLP7skE9w9qQ==","signatures":[{"sig":"MEUCIQCHfBv0UrUchU7KVoX3qWWBkHI9GAeukuSwh2I9Hqt4agIgIJbxA2Qy4sequaK+as/byYWJrp10i+d7M2Ymtzxysuk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fgenerate-markdown@0.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":23630},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"b90fd1c8c047fc8481705018eddd577d19108c96","scripts":{"test":"NODE_ENV=production vitest run --root ../.. generate-markdown","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:30e156a0-efd9-41f5-87de-72a501e1140a"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/generate-markdown"},"_npmVersion":"12.0.1","description":"Generate markdown documentation from JSON Schemas.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generate-markdown_0.4.3_1784452127566_0.8324457416408968","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@amritk/generate-markdown","version":"0.4.4","keywords":["json-schema","markdown","documentation","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/generate-markdown@0.4.4","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"3f40bbca4bafa3facc2cd9404b19868f94742780","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.4.4.tgz","fileCount":6,"integrity":"sha512-aFKctNBos1uK+9dMx8yIBXJnIskduPgwCB30SxXy3uF8EJ2eo53wOzUPDFXIl/weLiaSzphQm5r5Z8ZGF6uJwA==","signatures":[{"sig":"MEYCIQDKk0S7L0lAEvFgPBD55hXOA6sLUWNhAYrgbE4F1P2efAIhANUzKETyluUY33jpt+4MkvMrrRWh3eQF6ERjTX7/rn+y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fgenerate-markdown@0.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":25285},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"30b4c324c09d2928d62084973cdde49d3356b4b4","scripts":{"test":"NODE_ENV=production vitest run --root ../.. generate-markdown","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:30e156a0-efd9-41f5-87de-72a501e1140a"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/generate-markdown"},"_npmVersion":"12.0.1","description":"Generate markdown documentation from JSON Schemas.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generate-markdown_0.4.4_1784702753870_0.45665872766103144","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@amritk/generate-markdown","version":"0.4.5","keywords":["json-schema","markdown","documentation","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/generate-markdown@0.4.5","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"17586fae333ac8b1ad9c71c028d38ff00ac1c3bf","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.4.5.tgz","fileCount":6,"integrity":"sha512-0fcwLYKDIid/PhRQqjIJe8rf6fkdch8AjL1EfiLwrwmQTwQPtZ2YXQlrdLqNUCxpComrzTse/5JYxLZ+IfUeSQ==","signatures":[{"sig":"MEYCIQCEyQhPDsAqWDPghxr6Xo0fbJa9vYeMPgCEd46JwESdPAIhAJCPJ/Frd7BV5yXJ1AyBzxptypKbZD5ylNcvlFWODFaj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fgenerate-markdown@0.4.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":25531},"type":"module","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"3630667665a873c96f071e3b8d12f538e751d4f0","scripts":{"test":"NODE_ENV=production vitest run --root ../.. generate-markdown","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:30e156a0-efd9-41f5-87de-72a501e1140a"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/generate-markdown"},"_npmVersion":"11.18.0","description":"Generate markdown documentation from JSON Schemas.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generate-markdown_0.4.5_1785262236454_0.21726832492680148","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@amritk/generate-markdown","version":"0.4.6","keywords":["json-schema","markdown","documentation","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/generate-markdown@0.4.6","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"bf397cd282df0533dc163870febe10890b208136","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.4.6.tgz","fileCount":6,"integrity":"sha512-l+Wna1Am74zEfqPsyJhcPtynsKKOTTH0yMwwf6syVWRiPrb7zPaAbcfSWU2b3UXrPpU4cEU17R93z8/Y5Lnz6A==","signatures":[{"sig":"MEYCIQCdzfm8LvvNBoLK/8H15QbUg3z7WrhMc5tZUtmOGSdhiQIhANESQMqDkqpRsowEkXueltB21sihxZ3QU2/Q5sldc5vZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fgenerate-markdown@0.4.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":25592},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"846ea8bfd0ad501a9f7a6d6fa21258b558ac5e4a","scripts":{"test":"NODE_ENV=production vitest run --root ../.. generate-markdown","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:30e156a0-efd9-41f5-87de-72a501e1140a"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/generate-markdown"},"_npmVersion":"11.19.0","description":"Generate markdown documentation from JSON Schemas.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generate-markdown_0.4.6_1785867562886_0.03246858131268082","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"@amritk/generate-markdown","version":"0.4.7","keywords":["json-schema","markdown","documentation","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/generate-markdown@0.4.7","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"912274b862300609b5a904879ef4f9380678bc3f","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.4.7.tgz","fileCount":6,"integrity":"sha512-rfE1JVxEalqaD43/nGKUwe4HEXgH7RC5QsV1Miuq+RW2s1TLHhlPqIDPUqqzclnlQ0qnH7wq4aZUhYvRI9uH9w==","signatures":[{"sig":"MEQCIBmZTHeuXg8/LGpsfS3GmLVp2ewzAieiE7DYWWX4mQ+UAiAPELgucDmp9lRrmjYKU6bb3iKEl2M+SF4mnhPDvCRAqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fgenerate-markdown@0.4.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":25658},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"a4683ed81fdf8c600c59b7b2589c019a1615b972","scripts":{"test":"NODE_ENV=production vitest run --root ../.. generate-markdown","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit","prepublishOnly":"node ../../scripts/check-publishable.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:30e156a0-efd9-41f5-87de-72a501e1140a"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/generate-markdown"},"_npmVersion":"11.19.0","description":"Generate markdown documentation from JSON Schemas.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generate-markdown_0.4.7_1786173894244_0.247761854450802","host":"s3://npm-registry-packages-npm-production"}},"0.4.8":{"name":"@amritk/generate-markdown","version":"0.4.8","keywords":["json-schema","markdown","documentation","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/generate-markdown@0.4.8","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"2901ecec2177a18f4f770825d8ebbac891ceac72","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.4.8.tgz","fileCount":6,"integrity":"sha512-Eom7HFvqYKQMk0zj5AX4eOVx0m9Hj5kTwuXAEE6BmeM1NkQSc+qltnrCSsd9hedMMb4G6tPzXo7ywSgeiWaNcg==","signatures":[{"sig":"MEUCIQDnKD2nZHYe9Mp3u/wsJjV2kK72A/eDYuQRxVemfEzLWQIgZe/3ifDyg/MpBhXrWMMSAOnetB6BzvVXa37fp/TUJoc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fgenerate-markdown@0.4.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29349},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"9a3d515150ce8ff66c6e78b03294196d58b3917e","scripts":{"test":"NODE_ENV=production vitest run --root ../.. generate-markdown","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit","prepublishOnly":"node ../../scripts/check-publishable.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:30e156a0-efd9-41f5-87de-72a501e1140a"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/generate-markdown"},"_npmVersion":"11.19.0","description":"Generate markdown documentation from JSON Schemas.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generate-markdown_0.4.8_1786383374878_0.856464933512618","host":"s3://npm-registry-packages-npm-production"}},"0.4.9":{"name":"@amritk/generate-markdown","version":"0.4.9","keywords":["json-schema","markdown","documentation","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/generate-markdown@0.4.9","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"a32eb4b8d0c3eeb17ba61e7dd5b57ccfae26a76b","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.4.9.tgz","fileCount":6,"integrity":"sha512-HiIMjLIZlsFjZoHhkog6B1LU4nKrRZH7ud5D+jmlYwiz+OMdyHEpVePnDFlD+edCv643v6W6KDZILghlcxqA/A==","signatures":[{"sig":"MEQCIA5vptSBbSIVbxKhgb36unxgy0m4w3b+6B2OntuhNPdkAiBmYvDt4m3ZadneK/7lz/W7B4nGaVgac773H8wPpv3c3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fgenerate-markdown@0.4.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29378},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"605071c88c9f2416d455c091e1c662e17bf104db","scripts":{"test":"NODE_ENV=production vitest run --root ../.. generate-markdown","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit","prepublishOnly":"node ../../scripts/check-publishable.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:30e156a0-efd9-41f5-87de-72a501e1140a"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/generate-markdown"},"_npmVersion":"11.19.0","description":"Generate markdown documentation from JSON Schemas.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generate-markdown_0.4.9_1786479962716_0.8307743486900376","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@amritk/generate-markdown","version":"0.5.0","keywords":["json-schema","markdown","documentation","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/generate-markdown@0.5.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"71dc9b18e27aa331e3de95f40dfc73b820a87073","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.5.0.tgz","fileCount":80,"integrity":"sha512-96vpNYg59X4MHugxiyxYLRHrjyUgx1B7+G3eovQgiZ7ffdCfWQ2U5WEZLNJBmDCZEK5iU0M+BaWf4xx54DM1aw==","signatures":[{"sig":"MEQCIAl4YqLRDotO30u5Ikpmu9R7smkP8pPWcMOXLycFEFkaAiAu7gI7V9X5dRIxQB+UTNbjY4z5XTIpMwQzmAd1GqWfuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fgenerate-markdown@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":154145},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"3078ec8c5b266082c862fecd86f122d21c591270","imports":{"#table/*":"./src/table/*.ts","#types/*":"./src/types/*.ts","#helpers/*":"./src/helpers/*.ts","#reference/*":"./src/reference/*.ts"},"scripts":{"test":"NODE_ENV=production vitest run --root ../.. generate-markdown","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit","prepublishOnly":"node ../../scripts/check-publishable.mjs","generate-fixtures":"bun --conditions development scripts/update-fixtures.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:30e156a0-efd9-41f5-87de-72a501e1140a"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/generate-markdown"},"_npmVersion":"11.19.1","description":"Generate markdown documentation from JSON Schemas.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generate-markdown_0.5.0_1788224629512_0.28750392248044077","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@amritk/generate-markdown","version":"0.6.0","keywords":["json-schema","markdown","documentation","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/generate-markdown@0.6.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"a48d5133fa17014875b6b5492c28adee94ac7579","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.6.0.tgz","fileCount":80,"integrity":"sha512-xhOXx/UQkoli0dMZb+86+uQ0fyiRbcOlIzo6CnvDqePvQKmuFmDoGWZnywt/dseR2JUGyt9kfF+O/HI+QkOHUQ==","signatures":[{"sig":"MEUCIBrb6EtnLlfvsIKSuPWhoinT75ENzag1fqyMkhqsEI9rAiEAnr8HwXAxORkvHcHQHtY3EXA9BAR88/PcguoQDzMXQWo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fgenerate-markdown@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":155006},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"1f4bf1313967417d33eef93e6a6c553e12d218c6","imports":{"#table/*":"./src/table/*.ts","#types/*":"./src/types/*.ts","#helpers/*":"./src/helpers/*.ts","#reference/*":"./src/reference/*.ts"},"scripts":{"test":"NODE_ENV=production vitest run --root ../.. generate-markdown","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit","prepublishOnly":"node ../../scripts/check-publishable.mjs","generate-fixtures":"bun --conditions development scripts/update-fixtures.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:30e156a0-efd9-41f5-87de-72a501e1140a"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/generate-markdown"},"_npmVersion":"11.19.1","description":"Generate markdown documentation from JSON Schemas.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generate-markdown_0.6.0_1788568540328_0.557595580289757","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@amritk/generate-markdown","version":"0.7.0","keywords":["json-schema","markdown","documentation","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/generate-markdown@0.7.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"d75d9d0a3661bdafbd95d9586979ed7dbdfb3edf","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.7.0.tgz","fileCount":80,"integrity":"sha512-uSc0rkxuk4av9i87Tse96tqlGXcrH4cN7VHBUdYzIC1aU5JlTlgg78rpsqW0eUIvsTP+DsMpjz8iRGTFwfzJWg==","signatures":[{"sig":"MEYCIQCvIk5mvui26p0bxFyKllsJkXlwPj1p0ryWD78zdGP5zQIhAICPhRtiPU/eWsjWAesuCZEZczIyfkZoVs9dB2Xue/oL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fgenerate-markdown@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":157680},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"43832d7a66b87b09af416dc3d38ee65e54bc4797","imports":{"#table/*":"./src/table/*.ts","#types/*":"./src/types/*.ts","#helpers/*":"./src/helpers/*.ts","#reference/*":"./src/reference/*.ts"},"scripts":{"test":"NODE_ENV=production vitest run --root ../.. generate-markdown","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit","prepublishOnly":"node ../../scripts/check-publishable.mjs","generate-fixtures":"bun --conditions development scripts/update-fixtures.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:30e156a0-efd9-41f5-87de-72a501e1140a"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/generate-markdown"},"_npmVersion":"11.19.1","description":"Generate markdown documentation from JSON Schemas.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/generate-markdown_0.7.0_1789154032700_0.29554386061614246","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@amritk/generate-markdown","version":"0.8.0","description":"Generate markdown documentation from JSON Schemas.","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","type":"module","imports":{"#helpers/*":"./src/helpers/*.ts","#reference/*":"./src/reference/*.ts","#table/*":"./src/table/*.ts","#types/*":"./src/types/*.ts"},"sideEffects":false,"engines":{"node":">=20"},"license":"MIT","author":{"name":"amritk"},"keywords":["json-schema","markdown","documentation","mjst"],"repository":{"type":"git","url":"git+https://github.com/amritk/mjst.git","directory":"packages/generate-markdown"},"homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"publishConfig":{"access":"public"},"scripts":{"build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","generate-fixtures":"bun --conditions development scripts/update-fixtures.ts","prepublishOnly":"node ../../scripts/check-publishable.mjs","types:check":"tsgo -p . --noEmit","test":"NODE_ENV=production vitest run --root ../.. generate-markdown"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"d5d40c2fa437a206ecdaa96d7e9b3bbb78d3df5f","_id":"@amritk/generate-markdown@0.8.0","_nodeVersion":"24.20.0","_npmVersion":"11.19.1","dist":{"integrity":"sha512-ZLjkA5QilVsd8N7CjB2939ZXEV5D7HquHJdaKE38jRQ+/RImA2n/II20QVHPbXV8j5mTCMD0Jim1CjV0SZBMoQ==","shasum":"4dce4ebf6a60adaf5ce8aa6c3b13a26d6547d223","tarball":"https://registry.npmjs.org/@amritk/generate-markdown/-/generate-markdown-0.8.0.tgz","fileCount":86,"unpackedSize":166907,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fgenerate-markdown@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDlBa9OCDpYM+gMfrFZaTEUAQt/HAqErtXro5P5aY1DpAiAf+T8Lex2vJD79QuDdZbGNu5SsLSMCb/DUokIhJOrp1w=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:30e156a0-efd9-41f5-87de-72a501e1140a"}},"directories":{},"maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/generate-markdown_0.8.0_1789163266692_0.12811927593725003"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-11T18:09:31.416Z","modified":"2026-09-11T21:47:47.148Z","0.1.0":"2026-05-11T18:09:31.679Z","0.2.1":"2026-05-19T00:03:52.161Z","0.2.2":"2026-05-29T18:53:00.301Z","0.2.3":"2026-05-29T19:00:53.859Z","0.2.4":"2026-05-30T07:11:57.549Z","0.3.0":"2026-06-23T08:41:41.042Z","0.4.0":"2026-06-24T17:40:54.103Z","0.4.1":"2026-07-05T16:11:22.746Z","0.4.2":"2026-07-17T09:20:06.312Z","0.4.3":"2026-07-19T09:08:47.705Z","0.4.4":"2026-07-22T06:45:54.020Z","0.4.5":"2026-07-28T18:10:36.623Z","0.4.6":"2026-08-04T18:19:23.114Z","0.4.7":"2026-08-08T07:24:54.435Z","0.4.8":"2026-08-10T17:36:15.028Z","0.4.9":"2026-08-11T20:26:02.853Z","0.5.0":"2026-09-01T01:03:49.657Z","0.6.0":"2026-09-05T00:35:40.475Z","0.7.0":"2026-09-11T19:13:52.839Z","0.8.0":"2026-09-11T21:47:46.830Z"},"bugs":{"url":"https://github.com/amritk/mjst/issues"},"author":{"name":"amritk"},"license":"MIT","homepage":"https://github.com/amritk/mjst/tree/main/packages/generate-markdown#readme","keywords":["json-schema","markdown","documentation","mjst"],"repository":{"type":"git","url":"git+https://github.com/amritk/mjst.git","directory":"packages/generate-markdown"},"description":"Generate markdown documentation from JSON Schemas.","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"readme":"<div align=\"center\">\n\n# @amritk/generate-markdown\n\n**Generate markdown documentation from JSON Schemas.**\n\n![status](https://img.shields.io/badge/status-pre--alpha-ef4444?style=flat-square)&nbsp;\n![version](https://img.shields.io/npm/v/@amritk/generate-markdown?style=flat-square&logo=npm&logoColor=white&label=version&color=6366f1)&nbsp;\n![license](https://img.shields.io/badge/license-MIT-22c55e?style=flat-square)&nbsp;\n![JSON Schema](https://img.shields.io/badge/JSON%20Schema-2020--12-f97316?style=flat-square)&nbsp;\n![node](https://img.shields.io/badge/node-%E2%89%A520-339933?style=flat-square&logo=node.js&logoColor=white)&nbsp;\n![vibe coded](https://img.shields.io/badge/vibe-coded-a855f7?style=flat-square)\n\n</div>\n\n---\n\n## Overview\n\n`@amritk/generate-markdown` turns a `config.schema.json` into documentation, so\nthe docs for a config cannot drift from the schema that validates it. It renders\ntwo shapes:\n\n| Shape | Entry point | Output |\n| --- | --- | --- |\n| **Config table** | `generateMarkdown()` | One HTML `<table>`, spliced into an existing `README.md` between marker comments |\n| **Prose reference** | `generateMarkdownFiles(schema, options?)` | A heading, a **Type:**, the description and an example per property — across as many markdown files as the schema declares |\n\nThe table is the compact form for a CLI's flags. The prose reference is the form\na hand-written configuration guide takes, and it is documented under\n[Prose reference](#prose-reference) below.\n\n### Config table\n\nFor every property it reads the standard JSON Schema keywords:\n\n- `type` — shown in the **Type** column\n- `description` — the first paragraph fills the full-width detail row\n- `default` — shown (quoted/JSON-encoded) in the **Default** column\n- `enum` — listed as **Allowed:** values in the detail row\n- `examples` — listed as **Examples:** values in the detail row\n- `required` — the parent's `required` array drives the **Required** column\n\nSchemas built from references work too. `$ref` pointers are resolved against the\ndocument's `$defs` (any `#/…` JSON pointer, in fact — including one that indexes\nan array, such as `#/$defs/timeout/anyOf/0`) before rendering, recursive\ndefinitions are detected and collapsed so generation always terminates, and\nsibling keywords on a `$ref` node — typically `description` — override the\nreferenced definition. Inlining is a tree expansion, so a definition reused at\nseveral levels of nesting grows exponentially; past 100,000 inlined nodes\ngeneration stops with an error rather than writing a README no one could read.\nWhen a property describes its type through `enum`,\n`const`, or `anyOf`/`oneOf`/`allOf` rather than a plain `type`, the **Type**\ncolumn shows an inferred label (e.g. `string` or `number | string`).\n\n…plus three non-standard keywords for richer output:\n\n- `x-cli-flag` — the matching CLI flag (e.g. `--schema <path>`), shown in the **CLI Flag** column\n- `x-icon` — an emoji shown next to the property name\n- `x-extra-columns` — columns of the schema's own, described below\n\nColumns and icons are only rendered when the schema actually uses them. The\n**CLI Flag**, **Required**, and **Default** columns are each dropped entirely\nwhen no property anywhere in the schema fills them, and a property with no\n`x-icon` simply shows no icon. There are no `—` placeholders: a cell with\nnothing to say is left empty. The check spans the whole schema (including\nnested objects), so every table keeps the same set of columns.\n\n#### Columns of your own\n\nA schema often carries vendor data this package has never heard of — a stability\nlabel, the version a property landed in — and `x-extra-columns` is how that data\nreaches the table. Declare it on the **root** of the schema as a keyword → header\nmap; each property then carries the value under the same keyword:\n\n```json\n{\n  \"x-extra-columns\": { \"x-scalar-stability\": \"Stability\", \"x-since\": \"Since\" },\n  \"properties\": {\n    \"host\": {\n      \"type\": \"string\",\n      \"description\": \"Hostname to bind.\",\n      \"x-scalar-stability\": \"experimental\",\n      \"x-since\": \"1.2.0\"\n    }\n  }\n}\n```\n\n| Property | Type | Stability | Since |\n| --- | --- | --- | --- |\n| `host` | `string` | experimental | 1.2.0 |\n\nThe extra columns render after the built-in ones, in the order they are\ndeclared, and they play by the same rules as the rest of the table: the header\nand every value are escaped, a column no property anywhere in the schema fills is\ndropped entirely, and the set is shared by the main table and every nested detail\ntable. Values are scalars — a string, a number, or a boolean; anything else (an\nobject, an array) leaves the cell empty, since there is no layout this package\ncould pick for it that would not surprise you.\n\nThe declaration belongs on the root and nowhere else: every table in the\ndocument shares one set of columns, so a declaration on a nested object would be\na column the tables above it could not show.\n\nObject properties with their own `properties` are linked to a nested detail table rendered below the main one.\n\n---\n\n## Installation\n\n```bash\nnpm install @amritk/generate-markdown\n# or\npnpm add @amritk/generate-markdown\n# or\nyarn add @amritk/generate-markdown\n# or\nbun add @amritk/generate-markdown\n```\n\n---\n\n## Usage\n\n```ts\nimport { generateMarkdown } from '@amritk/generate-markdown'\n\nawait generateMarkdown()\n// Reads ./config.schema.json from process.cwd()\n// Writes ./README.md\n```\n\n`generateMarkdown()` takes no arguments — it is the form a package's\n`generate-readme` script runs from its own directory. When the files are\nsomewhere else, or named something else, `generateConfigTable` is the same flow\nwith the paths spelled out, returning the path it wrote:\n\n```ts\nimport { generateConfigTable } from '@amritk/generate-markdown'\n\nawait generateConfigTable({ schemaPath: './settings.schema.json', readmePath: './docs/config.md' })\n```\n\nOr from the command line, without writing a script at all:\n\n```bash\nnpx mjst markdown ./config.schema.json --table --readme ./README.md\n```\n\nIf `README.md` already exists and contains the marker comments below, only the content between them is replaced — everything else in the file is preserved:\n\n```md\n<!-- config-table-start -->\n<!-- config-table-end -->\n```\n\nWhen there is no `README.md` yet, one is created holding just the table. When a `README.md` exists but is **missing** either marker, `generateMarkdown` throws rather than overwriting it — add both markers where the table should go and re-run.\n\n---\n\n## Examples\n\nEach example below shows an input `config.schema.json` and the markdown `generateMarkdown()` produces from it.\n\n### Defaults of every type\n\nDefaults are rendered in the **Default** column. Strings are quoted; numbers and booleans are printed bare; objects and arrays are JSON-encoded. None of these properties use a CLI flag or are required, so those columns are dropped — only **Property**, **Type**, and **Default** remain.\n\n<details>\n<summary><strong>Input schema</strong></summary>\n\n```json\n{\n  \"title\": \"Defaults\",\n  \"properties\": {\n    \"outDir\":  { \"type\": \"string\",  \"default\": \"./generated\", \"x-icon\": \"📁\", \"description\": \"Output directory.\" },\n    \"port\":    { \"type\": \"number\",  \"default\": 8080, \"x-icon\": \"🔌\", \"description\": \"Port to listen on.\" },\n    \"minify\":  { \"type\": \"boolean\", \"default\": false, \"x-icon\": \"🗜️\", \"description\": \"Minify the output.\" },\n    \"include\": { \"type\": \"array\",   \"default\": [\"**/*.ts\"], \"x-icon\": \"📥\", \"description\": \"Glob patterns to include.\" },\n    \"env\":     { \"type\": \"object\",  \"default\": { \"NODE_ENV\": \"production\" }, \"x-icon\": \"🌱\", \"description\": \"Environment variables.\" }\n  }\n}\n```\n\n</details>\n\nGenerated markdown:\n\n<table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th align=\"center\">Default</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>📁 <code>outDir</code></td>\n<td><code>string</code></td>\n<td align=\"center\"><code>\"./generated\"</code></td>\n</tr>\n<tr>\n<td colspan=\"3\">Output directory.</td>\n</tr>\n<tr>\n<td>🔌 <code>port</code></td>\n<td><code>number</code></td>\n<td align=\"center\"><code>8080</code></td>\n</tr>\n<tr>\n<td colspan=\"3\">Port to listen on.</td>\n</tr>\n<tr>\n<td>🗜️ <code>minify</code></td>\n<td><code>boolean</code></td>\n<td align=\"center\"><code>false</code></td>\n</tr>\n<tr>\n<td colspan=\"3\">Minify the output.</td>\n</tr>\n<tr>\n<td>📥 <code>include</code></td>\n<td><code>array</code></td>\n<td align=\"center\"><code>[\"**/*.ts\"]</code></td>\n</tr>\n<tr>\n<td colspan=\"3\">Glob patterns to include.</td>\n</tr>\n<tr>\n<td>🌱 <code>env</code></td>\n<td><code>object</code></td>\n<td align=\"center\"><code>{\"NODE_ENV\":\"production\"}</code></td>\n</tr>\n<tr>\n<td colspan=\"3\">Environment variables.</td>\n</tr>\n</tbody>\n</table>\n\n### Enums and examples\n\n`enum` becomes an **Allowed:** line and `examples` becomes an **Examples:** line, both appended to the property's detail row beneath the description.\n\n<details>\n<summary><strong>Input schema</strong></summary>\n\n```json\n{\n  \"title\": \"Input\",\n  \"required\": [\"input\"],\n  \"properties\": {\n    \"input\": {\n      \"type\": \"string\",\n      \"enum\": [\"json\", \"zod\", \"typebox\"],\n      \"default\": \"json\",\n      \"x-cli-flag\": \"--input <format>\",\n      \"x-icon\": \"🔌\",\n      \"description\": \"Source format of the schema.\",\n      \"examples\": [\"json\", \"zod\"]\n    }\n  }\n}\n```\n\n</details>\n\nGenerated markdown:\n\n<table>\n<thead>\n<tr>\n<th>Property</th>\n<th>CLI Flag</th>\n<th>Type</th>\n<th align=\"center\">Required</th>\n<th align=\"center\">Default</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>🔌 <code>input</code></td>\n<td><code>--input &lt;format&gt;</code></td>\n<td><code>string</code></td>\n<td align=\"center\">✅</td>\n<td align=\"center\"><code>\"json\"</code></td>\n</tr>\n<tr>\n<td colspan=\"5\">Source format of the schema.<br><strong>Allowed:</strong> <code>\"json\"</code>, <code>\"zod\"</code>, <code>\"typebox\"</code><br><strong>Examples:</strong> <code>\"json\"</code>, <code>\"zod\"</code></td>\n</tr>\n</tbody>\n</table>\n\n### Required properties and CLI flags\n\nA property name appears in the **Required** column (✅) when it is listed in the object's `required` array. `x-cli-flag` fills the **CLI Flag** column, and `x-icon` sits next to the name. Neither property sets a `default`, so the **Default** column is dropped; the `outFile` row, which isn't required, leaves the **Required** cell empty rather than printing a placeholder.\n\n<details>\n<summary><strong>Input schema</strong></summary>\n\n```json\n{\n  \"title\": \"RequiredFlags\",\n  \"required\": [\"schema\"],\n  \"properties\": {\n    \"schema\":  { \"type\": \"string\", \"x-cli-flag\": \"--schema <path>\", \"x-icon\": \"📄\", \"description\": \"Path to the schema to process.\", \"examples\": [\"./schema.json\"] },\n    \"outFile\": { \"type\": \"string\", \"x-cli-flag\": \"--out-file <file>\", \"x-icon\": \"📄\", \"description\": \"Write everything to a single file.\" }\n  }\n}\n```\n\n</details>\n\nGenerated markdown:\n\n<table>\n<thead>\n<tr>\n<th>Property</th>\n<th>CLI Flag</th>\n<th>Type</th>\n<th align=\"center\">Required</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>📄 <code>schema</code></td>\n<td><code>--schema &lt;path&gt;</code></td>\n<td><code>string</code></td>\n<td align=\"center\">✅</td>\n</tr>\n<tr>\n<td colspan=\"4\">Path to the schema to process.<br><strong>Examples:</strong> <code>\"./schema.json\"</code></td>\n</tr>\n<tr>\n<td>📄 <code>outFile</code></td>\n<td><code>--out-file &lt;file&gt;</code></td>\n<td><code>string</code></td>\n<td align=\"center\"></td>\n</tr>\n<tr>\n<td colspan=\"4\">Write everything to a single file.</td>\n</tr>\n</tbody>\n</table>\n\n### Nested objects\n\nAn object property that declares its own `properties` is linked to a detail table rendered below the main one. The nested table uses the object's own `required` array, so required markers are scoped to each level.\n\n<details>\n<summary><strong>Input schema</strong></summary>\n\n```json\n{\n  \"title\": \"Nested\",\n  \"properties\": {\n    \"server\": {\n      \"type\": \"object\",\n      \"x-icon\": \"🖥️\",\n      \"description\": \"HTTP server settings.\",\n      \"required\": [\"host\"],\n      \"properties\": {\n        \"host\": { \"type\": \"string\", \"x-icon\": \"🌐\", \"description\": \"Hostname to bind.\" },\n        \"port\": { \"type\": \"number\", \"x-icon\": \"🔌\", \"default\": 3000, \"description\": \"Port to listen on.\" }\n      }\n    }\n  }\n}\n```\n\n</details>\n\nGenerated markdown:\n\n<table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th align=\"center\">Required</th>\n<th align=\"center\">Default</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>🖥️ <a href=\"#config-server\"><code>server</code></a></td>\n<td><code>object</code></td>\n<td align=\"center\"></td>\n<td align=\"center\"></td>\n</tr>\n<tr>\n<td colspan=\"4\">HTTP server settings.</td>\n</tr>\n</tbody>\n</table>\n\n<a id=\"config-server\"></a>\n#### `server`\n\n<table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th align=\"center\">Required</th>\n<th align=\"center\">Default</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>🌐 <code>host</code></td>\n<td><code>string</code></td>\n<td align=\"center\">✅</td>\n<td align=\"center\"></td>\n</tr>\n<tr>\n<td colspan=\"4\">Hostname to bind.</td>\n</tr>\n<tr>\n<td>🔌 <code>port</code></td>\n<td><code>number</code></td>\n<td align=\"center\"></td>\n<td align=\"center\"><code>3000</code></td>\n</tr>\n<tr>\n<td colspan=\"4\">Port to listen on.</td>\n</tr>\n</tbody>\n</table>\n\n### References and definitions\n\n`$ref` pointers are inlined from `$defs` before rendering, so a schema assembled\nfrom reusable definitions produces the same tables as an inline one. Sibling\nkeywords on a `$ref` (here `x-icon` and `description`) override the definition,\nand a property whose type comes from `enum` (`logLevel`) gets an inferred **Type**.\n\n<details>\n<summary><strong>Input schema</strong></summary>\n\n```json\n{\n  \"title\": \"Refs\",\n  \"required\": [\"server\"],\n  \"properties\": {\n    \"server\": { \"$ref\": \"#/$defs/server\", \"x-icon\": \"🖥️\", \"description\": \"HTTP server settings.\" },\n    \"logLevel\": { \"$ref\": \"#/$defs/logLevel\", \"x-icon\": \"🔊\" }\n  },\n  \"$defs\": {\n    \"server\": {\n      \"type\": \"object\",\n      \"required\": [\"host\"],\n      \"properties\": {\n        \"host\": { \"type\": \"string\", \"x-icon\": \"🌐\", \"description\": \"Hostname to bind.\" },\n        \"port\": { \"type\": \"number\", \"x-icon\": \"🔌\", \"default\": 3000, \"description\": \"Port to listen on.\" }\n      }\n    },\n    \"logLevel\": {\n      \"enum\": [\"debug\", \"info\", \"warn\", \"error\"],\n      \"default\": \"info\",\n      \"description\": \"Minimum log level to emit.\"\n    }\n  }\n}\n```\n\n</details>\n\nGenerated markdown:\n\n<table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th align=\"center\">Required</th>\n<th align=\"center\">Default</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>🖥️ <a href=\"#config-server\"><code>server</code></a></td>\n<td><code>object</code></td>\n<td align=\"center\">✅</td>\n<td align=\"center\"></td>\n</tr>\n<tr>\n<td colspan=\"4\">HTTP server settings.</td>\n</tr>\n<tr>\n<td>🔊 <code>logLevel</code></td>\n<td><code>string</code></td>\n<td align=\"center\"></td>\n<td align=\"center\"><code>\"info\"</code></td>\n</tr>\n<tr>\n<td colspan=\"4\">Minimum log level to emit.<br><strong>Allowed:</strong> <code>\"debug\"</code>, <code>\"info\"</code>, <code>\"warn\"</code>, <code>\"error\"</code></td>\n</tr>\n</tbody>\n</table>\n\n<a id=\"config-server\"></a>\n#### `server`\n\n<table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th align=\"center\">Required</th>\n<th align=\"center\">Default</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>🌐 <code>host</code></td>\n<td><code>string</code></td>\n<td align=\"center\">✅</td>\n<td align=\"center\"></td>\n</tr>\n<tr>\n<td colspan=\"4\">Hostname to bind.</td>\n</tr>\n<tr>\n<td>🔌 <code>port</code></td>\n<td><code>number</code></td>\n<td align=\"center\"></td>\n<td align=\"center\"><code>3000</code></td>\n</tr>\n<tr>\n<td colspan=\"4\">Port to listen on.</td>\n</tr>\n</tbody>\n</table>\n\n---\n\n## Prose reference\n\n`generateMarkdownFiles` renders the shape a hand-written configuration guide\ntakes: one heading per property, a **Type:** line, the description as real\nmarkdown, and a code example you can paste. Everything it says comes from the\nschema, and it splits across as many files as the schema asks for.\n\n```ts\nimport { generateMarkdownFiles } from '@amritk/generate-markdown'\n\nconst files = generateMarkdownFiles(schema, { language: 'javascript' })\n// [{ filename: 'configuration.md', content: '# Configuration…' }, …]\n```\n\n<details>\n<summary><strong>Input schema</strong></summary>\n\n```json\n{\n  \"title\": \"Configuration\",\n  \"description\": \"Pass a universal configuration object to fine-tune your API reference.\",\n  \"x-doc\": {\n    \"file\": \"configuration.md\",\n    \"language\": \"javascript\",\n    \"layout\": \"none\",\n    \"sections\": [\n      { \"id\": \"properties\", \"title\": \"Properties\", \"sort\": \"alphabetical\" }\n    ]\n  },\n  \"properties\": {\n    \"darkMode\": {\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"description\": \"Whether dark mode is on or off initially (light mode).\",\n      \"examples\": [true],\n      \"x-doc\": { \"section\": \"properties\" }\n    },\n    \"documentDownloadType\": {\n      \"enum\": [\"json\", \"yaml\", \"both\", \"none\"],\n      \"default\": \"both\",\n      \"description\": \"Sets the file type of the document to download.\",\n      \"examples\": [\"json\"],\n      \"x-doc\": {\n        \"section\": \"properties\",\n        \"footer\": \"Set it to `none` to hide the download button.\"\n      }\n    }\n  }\n}\n```\n\n</details>\n\nGenerated markdown:\n\n````md\n# Configuration\n\nPass a universal configuration object to fine-tune your API reference.\n\n## Properties\n\n### darkMode\n\n**Type:** `boolean`\n\nWhether dark mode is on or off initially (light mode).\n\n**Default:** `false`\n\n```javascript\n{\n  darkMode: true\n}\n```\n\n### documentDownloadType\n\n**Type:** `'json' | 'yaml' | 'both' | 'none'`\n\nSets the file type of the document to download.\n\n**Default:** `'both'`\n\n```javascript\n{\n  documentDownloadType: 'json'\n}\n```\n\nSet it to `none` to hide the download button.\n````\n\nTwo things there are worth pointing at. The **Type:** of an `enum` is the\nliteral union, because the allowed values *are* the type a reader needs — so\nthere is no separate \"Allowed values\" line repeating them. And neither property\ndeclares a code example: both were derived from `examples`, wrapped back into\nthe shape of the config file. A property nested at `targets.typescript.packageName`\nderives `{ targets: { typescript: { packageName: '@acme/api' } } }`, which is\nsomething you can paste.\n\n### The `x-doc` keyword\n\nEverything documentation-only lives under one vendor extension, so it never\ngets mistaken for something that changes validation.\n\nOn the **root schema**:\n\n| Member | Type | What it does |\n| --- | --- | --- |\n| `file` | `string` | Output path of the index page. Defaults to `index.md`. Paths are normalised, so `a.md` and `./a.md` are the same page. |\n| `title` | `string` | Page title, when the schema's own `title` is not the one you want. |\n| `description` | `string` | Prose under the page title, when it should differ from the schema's `description`. |\n| `language` | `string` | Fence language for examples, and the dialect values are written in — `json` (default) quotes keys, `javascript` does not. |\n| `layout` | `'headings' \\| 'table' \\| 'none'` | Default layout for nested properties. Defaults to `headings`. |\n| `sort` | `'schema' \\| 'alphabetical'` | Default property order. Defaults to `schema`. |\n| `pages` | `{ id, file, title?, description?, example? }[]` | Extra markdown files properties can be assigned to. The id `index` is reserved for the index page: declaring it configures that page (its file, title and examples) rather than adding another one. |\n| `sections` | `{ id, title?, description?, page?, layout?, sort?, example? }[]` | `##` groupings inside a page. A section with no properties still renders, which is how a prose-only intro moves into the schema. Its `layout` takes the same `'headings' \\| 'table' \\| 'none'` vocabulary a property's does, and defaults to `headings` — the root `layout` is the default for a property's *children*, not for a section. |\n| `example` / `examples` | see below | Code blocks under the page title. |\n\nOn a **property** (and on any `$defs` entry a property references):\n\n| Member | Type | What it does |\n| --- | --- | --- |\n| `page` | `string` | Documents the property on that page instead of this one. |\n| `section` | `string` | Documents it under that section. |\n| `type` | `string` | Overrides the **Type:** label — for `AuthenticationConfiguration`, or `(heading: Heading) => string`, which JSON Schema cannot spell. |\n| `title` | `string` | Overrides the heading text. |\n| `heading` | `boolean` | `false` drops the heading and the **Type:** / **Required** markers, for the property that *is* the page or the section. Its children move up a level. The **Deprecated** callout, allowed values, examples and prose all stay — they are not restatements of the heading. |\n| `layout` | `'headings' \\| 'table' \\| 'none'` | How this property's children are documented. |\n| `sort` | `'schema' \\| 'alphabetical'` | Order of this property's children. |\n| `order` | `number` | Sorts ahead of properties with a higher (or no) order. |\n| `hidden` | `boolean` | Keeps an internal option out of the docs entirely. |\n| `description` | `string` | Prose for the docs, when it should differ from the schema's `description`. |\n| `example` / `examples` | see below | Code blocks under the description. |\n| `note` / `notes` | `string` or `string[]` | Blockquotes above the examples. |\n| `footer` / `footers` | `string` or `string[]` | Markdown after the examples — the \"and when you pass `direct`…\" paragraph that only makes sense once the sample has been seen. |\n\nAn **example** is either a code string, or an object:\n\n| Member | Type | What it does |\n| --- | --- | --- |\n| `code` | `string` | Literal code. |\n| `value` | any JSON | Serialized into the fence's language — a JSON schema can hold a JSON example without escaping it into a string first. |\n| `language` | `string` | Fence language, when it differs from the page's. |\n| `caption` | `string` | A line of prose above the fence. |\n\n### Which JSON Schema keywords it reads\n\n| Keyword | Where it lands |\n| --- | --- |\n| `title`, `description` | The page title, and each property's prose (full markdown, not just the first paragraph). A property name is rendered as a code span unless it is plain enough to survive a heading; an `x-doc.title` is prose and is not, having no row to be checked against |\n| `type`, `enum`, `const`, `anyOf` / `oneOf` / `allOf`, `items`, `additionalProperties` / `patternProperties` | The **Type:** label — `string[]`, `'json' \\| 'yaml'`, `string \\| null`, and `Record<string, T>` for a map-shaped object (one that describes its values rather than naming fields), `T` being the value shape's own label |\n| `default` | **Default:**, written in the page's language |\n| `examples` | The derived code example (the first one), plus **Examples:** for the rest. A tuple position past the first gets the inline list only — the positions before it are other shapes, and inventing them would produce a sample that does not validate |\n| `required` | **Required** on the property it names |\n| `deprecated` | A **Deprecated** callout above everything else |\n| `format`, `pattern`, `minimum`, `maximum`, `exclusiveMinimum`, `exclusiveMaximum`, `multipleOf`, `minLength`, `maxLength`, `minItems`, `maxItems`, `uniqueItems` | **Constraints:** |\n| `properties`, `allOf`, `anyOf` / `oneOf`, `then` / `else`, `dependentSchemas` | The children. `allOf` branches all apply, so they contribute properties *and* requirements; alternatives and conditionals contribute properties only, and a field is required only when every alternative requires it. In the **Type:** label `allOf` reads as an intersection (`a & b`) and the alternatives as a union (`a \\| b`); a branch that is itself a union is bracketed, so `(string \\| number) & string` cannot be misread as the union it replaced |\n| `items`, `prefixItems`, `additionalProperties`, `patternProperties` | The children of a container — an array documents its item shape (every tuple position), a map documents its value shape (every pattern) under a `<name>` key. A container whose values are another container is followed as far as it goes, so a matrix or a list of maps documents the fields at the bottom of it. A node with named properties *and* a container documents both |\n| `$ref` / `$defs` / `$anchor` | Inlined before rendering — a JSON pointer (`#/$defs/x`), the empty pointer (`#`, the document itself, as a self-recursive schema writes it), or a plain-name fragment naming an `$anchor` (`#x`); a reference out of the document is not fetched. A sibling keyword at the ref site wins — except `properties` and `required`, which merge with the definition's (both applicators apply), and `x-doc`, which merges per key so a ref site can assign a page without discarding the definition's examples. A ref site's own `description` still wins over the definition's `x-doc.description` |\n| A recursive `$ref` | Collapsed where it repeats, so generation terminates. The truncation is labelled with the type its definition has (a `string \\| { … }` definition stays `string \\| object`, an `object[]` stays `object[]`), carries that definition's documentation the way any other ref site does — its prose, its `x-doc` type, layout, examples, whether it is hidden — carries what the definition says about the value itself (`deprecated`, `default`, `examples`, and every constraint keyword), and carries what it requires, so an alternative beside it keeps its **Required** markers. Five members stay behind, because they place and announce an occurrence rather than describe it, and a truncation is an occurrence with nothing underneath: `x-doc.page`, `section`, `title`, `heading` and `order`. A reference that resolves to the document itself — `#`, `#/`, or the root's own `$anchor` — carries nothing, the root being a page configuration rather than a definition. Reading what a definition requires follows a branch's ref-site keywords as well as its definition, refuses to re-enter a definition already on the path, and is worked out once per pointer. Past 512 levels of composition it stops with an error; past 10,000 nodes it reports nothing rather than refusing the page, so a `$defs` that composes in more ways than can be enumerated costs a **Required** marker and not the document |\n| root `anyOf` / `oneOf` / `allOf` | Flattened into one property list, requirements included — an `allOf` branch that only restates `required` still marks the fields it names. A property reached through alternatives is only marked required when every branch that could be an object requires it |\n\nEach property renders in a fixed order, so a page reads as a reference rather\nthan a pile of keywords: heading → **Deprecated** → **Type:** → **Required** →\ndescription → **Default:** → **Allowed values:** → **Examples:** →\n**Constraints:** → notes → code examples → footers → children.\n\nA page holds one top-level heading: its title. A schema with no `title` (and no\n`x-doc.title`, and no `title` option) has no `#` — its properties still start at\n`##`, because promoting them would give a twelve-option config twelve `#`\nheadings, which docs sites read as twelve pages. Under a `table` layout, a child\nthat has a shape of its own gets a heading and a table below the row, carrying\nonly what the row cannot: the rest of its description (the row holds the first\nparagraph), a `null` default (the column skips those), its allowed values,\nconstraints, notes and examples, and its own children. A row is one line, so a\ncode block never goes in one: a description opening with a fenced or indented\nsample gives the row its first paragraph of prose instead, and the sample itself\nprints below the row with its indentation intact.\n\nA section takes the same `layout`, which is how a `##` grouping becomes one\noverview table instead of a heading per property:\n\n```json\n{\n  \"x-doc\": {\n    \"sections\": [{ \"id\": \"properties\", \"title\": \"Required properties\", \"layout\": \"table\" }]\n  },\n  \"required\": [\"organization\"],\n  \"properties\": {\n    \"organization\": {\n      \"type\": \"string\",\n      \"description\": \"Identity of the organization publishing the SDKs.\",\n      \"x-doc\": { \"section\": \"properties\", \"order\": 1 }\n    }\n  }\n}\n```\n\nThe table follows the section's own order, so `x-doc.order` puts the required\noptions at the top of it. Every property in it still gets the block a row cannot\nhold below the table — the rest of its prose, its notes, examples and children —\nand a section with `layout: 'none'` renders its prose and examples alone.\n\n### Splitting across files\n\nA property assigned to a page is documented there and nowhere else. In a table\nlayout its row survives on the parent's page, linked across to the file it moved\nto — so a reader still sees every option in one place:\n\n```json\n{\n  \"x-doc\": {\n    \"file\": \"configuration.md\",\n    \"layout\": \"table\",\n    \"pages\": [\n      { \"id\": \"typescript\", \"file\": \"configuration/typescript.md\", \"title\": \"TypeScript\" }\n    ]\n  },\n  \"properties\": {\n    \"targets\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"typescript\": {\n          \"$ref\": \"#/$defs/typescriptTarget\",\n          \"x-doc\": { \"page\": \"typescript\", \"heading\": false }\n        }\n      }\n    }\n  }\n}\n```\n\nThat writes `configuration.md` (with a `typescript` row linking to\n`configuration/typescript.md`) and `configuration/typescript.md` (titled\n*TypeScript*, holding the target's options).\n\nPlacement mistakes are errors rather than silent omissions — a typo in\n`x-doc.page` would otherwise drop a property out of the docs, and nothing about\nthe output would look wrong. Generation refuses when:\n\n- a property names a page or a section the root never declares;\n- a property's `x-doc.page` disagrees with the page its section renders on;\n- two pages share an id, or resolve to the same file, or two sections share an id;\n- a page is written outside the output directory, or names no file at all;\n- the schema nests more than 512 levels deep, or follows composition that far,\n  which no reader can follow and which is deep enough to exhaust the stack.\n\n### Working examples\n\nTwo realistic schemas and the markdown they generate are checked in:\n\n- [`fixtures/api-reference-config.schema.json`](./fixtures/api-reference-config.schema.json) → [one page](./fixtures/expected/api-reference-config/configuration.md)\n- [`fixtures/sdk-config.schema.json`](./fixtures/sdk-config.schema.json) → [three pages](./fixtures/expected/sdk-config/)\n\nThe tests compare the generator against those files. After a deliberate change,\n`bun run generate-fixtures` refreshes them — and the diff shows exactly how\nevery adopter's docs would change.\n\n---\n\n## API\n\n### `generateMarkdown(): Promise<void>`\n\nNo arguments. Reads from `${cwd}/config.schema.json` and writes to `${cwd}/README.md`.\n\n### `generateMarkdownFiles(schema: unknown, options?: MarkdownOptions): readonly GeneratedFile[]`\n\nRenders the prose reference. Takes the parsed schema, returns\n`{ filename, content }` pairs — no filesystem access, so a caller can diff them\nin CI or write them wherever the docs live.\n\n`options` overrides what the schema declares, for callers that want the same\nschema written somewhere else: `file`, `title`, `language`, `layout`, `sort`,\n`headingLevel`.\n\n### `generateDocs(options?: GenerateDocsOptions): Promise<readonly GeneratedFile[]>`\n\nThe same thing against the filesystem: reads `schemaPath` (default\n`${cwd}/config.schema.json`), writes every page under `outDir` (default `${cwd}`),\ncreating directories as needed, and returns what it wrote. A page whose file\nwould land outside `outDir` is refused rather than written.\n\n### `renderConfigTable(schema: ConfigSchema): string`\n\nThe config table on its own, as a string. `$refs` must already be inlined —\n`dereferenceSchema` does that.\n\n### `dereferenceSchema(schema: Record<string, unknown>): ConfigSchema`\n\nInlines every `$ref` against the document's own `$defs`, the way both renderers\ndo before rendering.\n\n---\n\n## Related packages\n\n- [`@amritk/mjst`](../cli) — uses this package to keep its README's flag table in sync with `config.schema.json`\n- [`@amritk/generate-parsers`](../generate-parsers) — sibling generator for TypeScript parsers and types\n- [`@amritk/generate-validators`](../generate-validators) — sibling generator for predicate validators\n\n---\n\n## License\n\n[MIT](../../LICENSE)\n","readmeFilename":"README.md"}