{"_id":"@wgtechlabs/mdd-engine","_rev":"5-46de52db8b78c00abb7651f211f0bca6","name":"@wgtechlabs/mdd-engine","dist-tags":{"latest":"0.1.1","pr":"0.1.0-pr.cab0713","dev":"0.1.0-dev.8a1ef77"},"versions":{"0.1.0":{"name":"@wgtechlabs/mdd-engine","version":"0.1.0","license":"MIT","_id":"@wgtechlabs/mdd-engine@0.1.0","maintainers":[{"name":"warengonzaga","email":"opensource@warengonzaga.com"}],"homepage":"https://github.com/wgtechlabs/mdd-engine#readme","bugs":{"url":"https://github.com/wgtechlabs/mdd-engine/issues"},"dist":{"shasum":"49287d16b0451a3ac8620da0da09def64655d5a3","tarball":"https://registry.npmjs.org/@wgtechlabs/mdd-engine/-/mdd-engine-0.1.0.tgz","fileCount":15,"integrity":"sha512-KlSGyqBp6TzPOl3mGi7ZIS9uLWbTwHd6qbAIEgr9ZMudy6v5vl5HTuGjqP2ejDGEwODGq8wy44sSzNN4po4g4Q==","signatures":[{"sig":"MEUCICcNiVtmuRCsd8J55t6ebFjMUgqpO65mN05cje4OaL6HAiEApL58Ozs0c2h0/5+fIj3yU6LA7ChRTw4PEC7s5x63YhM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50589},"type":"module","_from":"file:/Users/warengonzaga/.codex/.chatgpt-projects/g-p-6abb8679a568819191bc8a0d14b879f0/artifacts/mdd-engine-0.1.0/wgtechlabs-mdd-engine-0.1.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"lint":"biome check src tests scripts package.json tsconfig.json tsconfig.build.json biome.json","test":"bun test","build":"tsc -p tsconfig.build.json","check":"bun run lint && bun run typecheck && bun test && bun run build && bun run smoke","smoke":"node scripts/smoke.mjs","format":"biome check --write src tests scripts package.json tsconfig.json tsconfig.build.json biome.json","coverage":"bun test --coverage","typecheck":"tsc --noEmit"},"_npmUser":{"name":"warengonzaga","email":"opensource@warengonzaga.com"},"_resolved":"/Users/warengonzaga/.codex/.chatgpt-projects/g-p-6abb8679a568819191bc8a0d14b879f0/artifacts/mdd-engine-0.1.0/wgtechlabs-mdd-engine-0.1.0.tgz","_integrity":"sha512-KlSGyqBp6TzPOl3mGi7ZIS9uLWbTwHd6qbAIEgr9ZMudy6v5vl5HTuGjqP2ejDGEwODGq8wy44sSzNN4po4g4Q==","repository":{"url":"git+https://github.com/wgtechlabs/mdd-engine.git","type":"git"},"_npmVersion":"11.19.0","description":"Headless Markdown documentation compiler for mdd","directories":{},"_nodeVersion":"24.21.0","dependencies":{"yaml":"2.9.1","unified":"11.0.5","remark-gfm":"4.0.1","remark-parse":"11.0.0","remark-rehype":"11.1.2","github-slugger":"2.0.0","rehype-sanitize":"6.0.0","rehype-stringify":"10.0.1","remark-directive":"4.0.0","remark-stringify":"11.0.0","unist-util-visit":"5.1.0","remark-frontmatter":"5.0.0","mdast-util-to-string":"4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.10","devDependencies":{"@types/bun":"1.4.2","typescript":"7.0.2","@types/hast":"3.0.5","@types/node":"22","@types/mdast":"4.0.4","@biomejs/biome":"2.5.15"},"_npmOperationalInternal":{"tmp":"tmp/mdd-engine_0.1.0_1791282416142_0.10419967624158444","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-pr.cab0713":{"name":"@wgtechlabs/mdd-engine","version":"0.1.0-pr.cab0713","license":"MIT","_id":"@wgtechlabs/mdd-engine@0.1.0-pr.cab0713","maintainers":[{"name":"warengonzaga","email":"opensource@warengonzaga.com"}],"homepage":"https://github.com/wgtechlabs/mdd-engine#readme","bugs":{"url":"https://github.com/wgtechlabs/mdd-engine/issues"},"dist":{"shasum":"40ded62c38015892333fa3178a463de656896589","tarball":"https://registry.npmjs.org/@wgtechlabs/mdd-engine/-/mdd-engine-0.1.0-pr.cab0713.tgz","fileCount":15,"integrity":"sha512-EbU3qIOhscCWNZaGJFIquxfrnuxI/mibXjC3b734rhB+Qbn1+QJ+yfmIsZp1IrSmBBN7JaCLd0ZBaoVMOlQS6A==","signatures":[{"sig":"MEUCIQC8In+u7nQ77UsCSBC6fpy/vADgBgo7Thze1q60dhqH3QIgHjnORsqXmemu9RTGBIh+ReIT1geP18iMJgDeHkMAnbs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFMvMQbuN6L66VdML5lKzfQKnKKSVFUSuxX324u7tEVgAiEA4dKmPtKjJCby5ZsC3jYtK8I6suJh190TejQL9VwLt34=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@wgtechlabs%2fmdd-engine@0.1.0-pr.cab0713","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51517},"type":"module","_from":"file:/tmp/npm-oidc-W1DLoY/wgtechlabs-mdd-engine-0.1.0-pr.cab0713.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"lint":"biome check src tests scripts package.json tsconfig.json tsconfig.build.json biome.json","test":"bun test","build":"tsc -p tsconfig.build.json","check":"bun run lint && bun run typecheck && bun test && bun run build && bun run smoke","smoke":"node scripts/smoke.mjs","format":"biome check --write src tests scripts package.json tsconfig.json tsconfig.build.json biome.json","coverage":"bun test --coverage","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"3b98b41f-c942-4690-88c2-b92caa135916"}},"_resolved":"/tmp/npm-oidc-W1DLoY/wgtechlabs-mdd-engine-0.1.0-pr.cab0713.tgz","_integrity":"sha512-EbU3qIOhscCWNZaGJFIquxfrnuxI/mibXjC3b734rhB+Qbn1+QJ+yfmIsZp1IrSmBBN7JaCLd0ZBaoVMOlQS6A==","repository":{"url":"git+https://github.com/wgtechlabs/mdd-engine.git","type":"git"},"_npmVersion":"11.21.0","description":"Headless Markdown documentation compiler for mdd","directories":{},"_nodeVersion":"24.21.0","dependencies":{"yaml":"2.9.1","unified":"11.0.5","remark-gfm":"4.0.1","remark-parse":"11.0.0","remark-rehype":"11.1.2","github-slugger":"2.0.0","rehype-sanitize":"6.0.0","rehype-stringify":"10.0.1","remark-directive":"4.0.0","remark-stringify":"11.0.0","unist-util-visit":"5.1.0","remark-frontmatter":"5.0.0","mdast-util-to-string":"4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.10","readmeFilename":"README.md","devDependencies":{"@types/bun":"1.4.2","typescript":"7.0.2","@types/hast":"3.0.5","@types/node":"22","@types/mdast":"4.0.4","@biomejs/biome":"2.5.15"},"_npmOperationalInternal":{"tmp":"tmp/mdd-engine_0.1.0-pr.cab0713_1791288144250_0.425475876381028","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-dev.8a1ef77":{"name":"@wgtechlabs/mdd-engine","version":"0.1.0-dev.8a1ef77","license":"MIT","_id":"@wgtechlabs/mdd-engine@0.1.0-dev.8a1ef77","maintainers":[{"name":"warengonzaga","email":"opensource@warengonzaga.com"}],"homepage":"https://github.com/wgtechlabs/mdd-engine#readme","bugs":{"url":"https://github.com/wgtechlabs/mdd-engine/issues"},"dist":{"shasum":"5be291d46cdaff4de12aacb0acffc623430cecb3","tarball":"https://registry.npmjs.org/@wgtechlabs/mdd-engine/-/mdd-engine-0.1.0-dev.8a1ef77.tgz","fileCount":15,"integrity":"sha512-z9lTTIhwO8QcJss9yQFXaIJyXBtZRE2/ymokEfSsIRdObO/LYz9hILF8MHt3W63MJETE7cIQhaqfq4TyClbQZQ==","signatures":[{"sig":"MEYCIQCMa6nhfw26ACWAr8wUTtEwFpWFEzct/bQcNrvQ9r3vLAIhANSFVnOEMsNdJZZz6MCS6RuXwrzA1JL010OCgOXwxjJY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDCIGeHBnF/w4wnAzaZ4EzvrF/uPuXpHJOKYIt8o3pbaQIgA962gxTMf1zn8nNOnsU8Mj9noELNNOVseJprV6p7lW8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@wgtechlabs%2fmdd-engine@0.1.0-dev.8a1ef77","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51518},"type":"module","_from":"file:/tmp/npm-oidc-FQlftd/wgtechlabs-mdd-engine-0.1.0-dev.8a1ef77.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"lint":"biome check src tests scripts package.json tsconfig.json tsconfig.build.json biome.json","test":"bun test","build":"tsc -p tsconfig.build.json","check":"bun run lint && bun run typecheck && bun test && bun run build && bun run smoke","smoke":"node scripts/smoke.mjs","format":"biome check --write src tests scripts package.json tsconfig.json tsconfig.build.json biome.json","coverage":"bun test --coverage","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"3b98b41f-c942-4690-88c2-b92caa135916"}},"_resolved":"/tmp/npm-oidc-FQlftd/wgtechlabs-mdd-engine-0.1.0-dev.8a1ef77.tgz","_integrity":"sha512-z9lTTIhwO8QcJss9yQFXaIJyXBtZRE2/ymokEfSsIRdObO/LYz9hILF8MHt3W63MJETE7cIQhaqfq4TyClbQZQ==","repository":{"url":"git+https://github.com/wgtechlabs/mdd-engine.git","type":"git"},"_npmVersion":"11.21.0","description":"Headless Markdown documentation compiler for mdd","directories":{},"_nodeVersion":"24.21.0","dependencies":{"yaml":"2.9.1","unified":"11.0.5","remark-gfm":"4.0.1","remark-parse":"11.0.0","remark-rehype":"11.1.2","github-slugger":"2.0.0","rehype-sanitize":"6.0.0","rehype-stringify":"10.0.1","remark-directive":"4.0.0","remark-stringify":"11.0.0","unist-util-visit":"5.1.0","remark-frontmatter":"5.0.0","mdast-util-to-string":"4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.10","readmeFilename":"README.md","devDependencies":{"@types/bun":"1.4.2","typescript":"7.0.2","@types/hast":"3.0.5","@types/node":"22","@types/mdast":"4.0.4","@biomejs/biome":"2.5.15"},"_npmOperationalInternal":{"tmp":"tmp/mdd-engine_0.1.0-dev.8a1ef77_1791289669608_0.8947480902598484","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-dev.4650301":{"name":"@wgtechlabs/mdd-engine","version":"0.1.0-dev.4650301","license":"MIT","_id":"@wgtechlabs/mdd-engine@0.1.0-dev.4650301","maintainers":[{"name":"warengonzaga","email":"opensource@warengonzaga.com"}],"homepage":"https://github.com/wgtechlabs/mdd-engine#readme","bugs":{"url":"https://github.com/wgtechlabs/mdd-engine/issues"},"dist":{"shasum":"9d7eb83d1053724b43879d2d95dbfe9f59e38705","tarball":"https://registry.npmjs.org/@wgtechlabs/mdd-engine/-/mdd-engine-0.1.0-dev.4650301.tgz","fileCount":15,"integrity":"sha512-y/P+GbXzfuERUvzXK4DArLaIfmD27ICAMiWlnhaRF+Bru0P7HHDCtRma3KUOxUc8X0s4vLIZuh1tvbEeUGY/tw==","signatures":[{"sig":"MEQCIDLnqFPsEG6g3ep2kNk9ZZVzZGXi/bTJXtp3M2jFiiO+AiAAk+jSetoE1+01SOAsEM67ezZnTc6vmI+yBC8HoD6m2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBiYEGxJ9xQqzDdVjg3Z+7J78bnfj/v3UftMxC0MlYLUAiAPQ409mCKyLBEehhEjri/ave9EoW4bghSagNFnfRLOmA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@wgtechlabs%2fmdd-engine@0.1.0-dev.4650301","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51518},"type":"module","_from":"file:/tmp/npm-oidc-QoaQZ5/wgtechlabs-mdd-engine-0.1.0-dev.4650301.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"lint":"biome check src tests scripts package.json tsconfig.json tsconfig.build.json biome.json","test":"bun test","build":"tsc -p tsconfig.build.json","check":"bun run lint && bun run typecheck && bun test && bun run build && bun run smoke","smoke":"node scripts/smoke.mjs","format":"biome check --write src tests scripts package.json tsconfig.json tsconfig.build.json biome.json","coverage":"bun test --coverage","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"3b98b41f-c942-4690-88c2-b92caa135916"}},"_resolved":"/tmp/npm-oidc-QoaQZ5/wgtechlabs-mdd-engine-0.1.0-dev.4650301.tgz","_integrity":"sha512-y/P+GbXzfuERUvzXK4DArLaIfmD27ICAMiWlnhaRF+Bru0P7HHDCtRma3KUOxUc8X0s4vLIZuh1tvbEeUGY/tw==","repository":{"url":"git+https://github.com/wgtechlabs/mdd-engine.git","type":"git"},"_npmVersion":"11.21.0","description":"Headless Markdown documentation compiler for mdd","directories":{},"_nodeVersion":"24.21.0","dependencies":{"yaml":"2.9.1","unified":"11.0.5","remark-gfm":"4.0.1","remark-parse":"11.0.0","remark-rehype":"11.1.2","github-slugger":"2.0.0","rehype-sanitize":"6.0.0","rehype-stringify":"10.0.1","remark-directive":"4.0.0","remark-stringify":"11.0.0","unist-util-visit":"5.1.0","remark-frontmatter":"5.0.0","mdast-util-to-string":"4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.10","readmeFilename":"README.md","devDependencies":{"@types/bun":"1.4.2","typescript":"7.0.2","@types/hast":"3.0.5","@types/node":"22","@types/mdast":"4.0.4","@biomejs/biome":"2.5.15"},"_npmOperationalInternal":{"tmp":"tmp/mdd-engine_0.1.0-dev.4650301_1791289677673_0.45706436571598696","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"_id":"@wgtechlabs/mdd-engine@0.1.1","bugs":{"url":"https://github.com/wgtechlabs/mdd-engine/issues"},"dist":{"shasum":"8c8f59a6d2ff4d51b015cab4c658852dc74c87c3","tarball":"https://registry.npmjs.org/@wgtechlabs/mdd-engine/-/mdd-engine-0.1.1.tgz","fileCount":15,"integrity":"sha512-M4mXuojoBJXCNKze3rspq3+E+lNyKvSYegcnhscTk0PdLbfE23DUlnDBDng3Tbt4qq/Dtc6bUxKhZyEdn+yD6w==","signatures":[{"sig":"MEUCIQC5G2wkIZAdn6Adx1bWCF+ir1ARNjscS2jCz84VicXBtQIgMdzhipfJEHrwhuYj62IrvJnQ+S9SziTDUx/8o/I2jRc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCEiVS5T+hlFuFU/MJ1pXT6W8fAJlnVxkJM6Ycu6bprzgIgaP0ZNHGYoEj32un0amnQk8EcrGhka7q4hk2gO9eK+aU="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@wgtechlabs%2fmdd-engine@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51506},"name":"@wgtechlabs/mdd-engine","type":"module","_from":"file:/tmp/npm-oidc-BjnkKM/wgtechlabs-mdd-engine-0.1.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"license":"MIT","scripts":{"lint":"biome check src tests scripts package.json tsconfig.json tsconfig.build.json biome.json","test":"bun test","build":"tsc -p tsconfig.build.json","check":"bun run lint && bun run typecheck && bun test && bun run build && bun run smoke","smoke":"node scripts/smoke.mjs","format":"biome check --write src tests scripts package.json tsconfig.json tsconfig.build.json biome.json","coverage":"bun test --coverage","typecheck":"tsc --noEmit"},"version":"0.1.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"3b98b41f-c942-4690-88c2-b92caa135916"}},"homepage":"https://github.com/wgtechlabs/mdd-engine#readme","_resolved":"/tmp/npm-oidc-BjnkKM/wgtechlabs-mdd-engine-0.1.1.tgz","_integrity":"sha512-M4mXuojoBJXCNKze3rspq3+E+lNyKvSYegcnhscTk0PdLbfE23DUlnDBDng3Tbt4qq/Dtc6bUxKhZyEdn+yD6w==","repository":{"url":"git+https://github.com/wgtechlabs/mdd-engine.git","type":"git"},"_npmVersion":"11.21.0","description":"Headless Markdown documentation compiler for mdd","directories":{},"maintainers":[{"name":"warengonzaga","email":"opensource@warengonzaga.com"}],"_nodeVersion":"24.21.0","dependencies":{"yaml":"2.9.1","unified":"11.0.5","remark-gfm":"4.0.1","remark-parse":"11.0.0","remark-rehype":"11.1.2","github-slugger":"2.0.0","rehype-sanitize":"6.0.0","rehype-stringify":"10.0.1","remark-directive":"4.0.0","remark-stringify":"11.0.0","unist-util-visit":"5.1.0","remark-frontmatter":"5.0.0","mdast-util-to-string":"4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.10","devDependencies":{"@types/bun":"1.4.2","typescript":"7.0.2","@types/hast":"3.0.5","@types/node":"22","@types/mdast":"4.0.4","@biomejs/biome":"2.5.15"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mdd-engine_0.1.1_1791290966453_0.7651099701426838"}}},"time":{"created":"2026-10-06T10:26:55.841Z","modified":"2026-10-06T12:49:27.047Z","0.1.0":"2026-10-06T10:26:56.284Z","0.1.0-pr.cab0713":"2026-10-06T12:02:24.358Z","0.1.0-dev.8a1ef77":"2026-10-06T12:27:49.683Z","0.1.0-dev.4650301":"2026-10-06T12:27:57.762Z","0.1.1":"2026-10-06T12:49:26.552Z"},"bugs":{"url":"https://github.com/wgtechlabs/mdd-engine/issues"},"license":"MIT","homepage":"https://github.com/wgtechlabs/mdd-engine#readme","repository":{"url":"git+https://github.com/wgtechlabs/mdd-engine.git","type":"git"},"description":"Headless Markdown documentation compiler for mdd","maintainers":[{"name":"warengonzaga","email":"opensource@warengonzaga.com"}],"readme":"# mdd-engine\n\nThe headless Markdown documentation compiler behind mdd. Give it a local project; get validated pages, navigation, assets, and article HTML that any frontend can consume.\n\nBuilt with TypeScript and Bun. Runs on Node.js 22, 24, and 26 without Bun. The default is the latest Node LTS, currently pinned to **24.21.0**.\n\n> Build Flow's default channels publish development, PR, and manual preview packages alongside regular releases to npm and GitHub Packages. See [build channels and releasing](docs/RELEASING.md).\n\n## A documentation project\n\n```text\nmy-project/\n  mdd/\n    config.json           # optional\n    contents/\n      index.md            # required homepage\n      get-started/\n        installation.md\n      assets/\n        logo.png\n    themes/\n      custom/\n        theme.css\n        theme.js          # optional; engine never executes it\n```\n\nOrdinary Markdown works without configuration. Folder names become routes and navigation groups. For example, `get-started/installation.md` becomes `/get-started/installation/`; a folder's `index.md` becomes its landing page.\n\n```json\n{\n  \"title\": \"My Project\",\n  \"paths\": { \"contents\": \"./contents\", \"themes\": \"./themes\" },\n  \"theme\": \"custom\"\n}\n```\n\nAll settings are optional. Custom paths are relative to `mdd/config.json` and must stay within the checkout. Selecting a custom theme requires its `theme.css`. The engine returns theme file locations for the website layer to apply. Plugin loading is deferred.\n\n## Compile without a website\n\nInstall the regular package with `bun add @wgtechlabs/mdd-engine`. After a successful preview publication, use `bun add @wgtechlabs/mdd-engine@dev` for development builds or `bun add @wgtechlabs/mdd-engine@pr` for PRs targeting `dev`. Preview tags track the most recently published package in their channel; install an exact version to test a particular PR. You can also install a locally packed copy.\n\nIn your Node project:\n\n```js\nimport { compileProject } from '@wgtechlabs/mdd-engine';\n\nconst result = await compileProject({\n  projectDir: '/absolute/path/to/my-project',\n  mddDir: 'mdd',\n  basePath: '/docs/'\n});\n\nif (!result.site) {\n  console.error(result.diagnostics);\n  process.exitCode = 1;\n} else {\n  console.log(result.site.pages[0].html);\n}\n```\n\n`site` is absent whenever authoring errors exist. Diagnostics contain a stable code, severity, message, and source location where available. Unexpected filesystem failures reject the promise with context. Identical inputs produce identical output.\n\nExcessive Markdown nesting that exceeds the runtime's call stack produces a `CONTENT_TOO_DEEP` diagnostic identifying the source file.\n\nThe result includes:\n\n- `pages`: source, route, public URL, title, description, article HTML, readable Markdown, headings, and navigation metadata.\n- `navigation`: sorted folder/page tree, with optional landing URLs.\n- `assets`: referenced content files with checkout-relative sources, documentation-root-relative destinations, and public URLs.\n- `theme`: the built-in default or selected theme file locations.\n\nPaths in the model use forward slashes. Resolve sources against the same `projectDir` used to compile. Asset destinations are filesystem paths, while asset URLs and page routes are URL-encoded. Decode page-route segments when deriving output directories. Prefix asset destinations with the documentation output directory when exporting; do not prefix them with a GitHub repository name a second time. The engine emits no files and starts no server.\n\n## Markdown and components\n\nSupported Markdown includes headings, lists, code fences, links, images, GFM tables, task lists, and strikethrough. Optional YAML frontmatter supports `title`, `description`, `navTitle`, and finite numeric `order`:\n\n```markdown\n---\ntitle: Install mdd\nnavTitle: Installation\norder: 1\n---\n# Installation\n\n:::note[Before you start]\nYou need a local documentation project.\n:::\n\n:::details[More information]\nOrdinary **Markdown** works inside components.\n:::\n```\n\nUse `note`, `tip`, `warning`, or `details` containers. Labels are optional; attributes and unknown component names are errors. Callouts become semantic `aside` elements, disclosures become `details`/`summary`, and each has a stable `mdd-<component>` class. Readable Markdown uses blockquotes with bold labels, without executable content.\n\nTitle precedence is frontmatter title, first H1, then readable filename. Navigation uses `navTitle` when supplied. Explicit `order` sorts first; remaining siblings sort deterministically by label and path.\n\nLocal `.md` links, extensionless routes, reference links, and images resolve from their source document. A leading slash addresses the documentation root. `basePath` prefixes public links, including `/docs/` and `/repository/docs/`. When a file-style URL matches both an existing supported asset and a page route, the asset wins: `chart.png` selects the image, while `/chart.png/` explicitly selects the page. If no regular asset exists, dotted page routes still resolve. External links are preserved without network requests. Headings have `mdd-`-prefixed GitHub-style slugs; author links such as `#installation` are rewritten to `#mdd-installation`. Duplicate headings receive `-1`, `-2`, and subsequent suffixes.\n\nReference definitions follow Markdown's first-definition-wins rule. Unused definitions and unreferenced footnotes are omitted from normalized output and do not contribute assets, headings, or link-validation errors. Referenced footnotes, including notes reached through other notes, retain their content and validation.\n\n## Content boundaries\n\nRaw HTML, executable URL schemes, path escapes, unknown configuration, missing local targets, and route collisions fail compilation. MDX is not evaluated; expressions are inert Markdown text, and JSX-style HTML is rejected. Hidden/sensitive paths are excluded. Content discovery rejects symlinks to avoid aliases and traversal; configured roots are resolved and checked against the checkout. Source files must remain stable while compilation and export run.\n\nReferenced content assets are limited to PNG, JPEG, GIF, WebP, AVIF, ICO, PDF, and plain text. SVG, HTML, JavaScript, and CSS are not content assets in this first version. Custom theme CSS/JavaScript is declared separately and must be treated as trusted by the website layer. Asset bytes are not transformed or sanitized; hosts should serve correct media types with `nosniff` and downloads with suitable disposition.\n\nGenerated paths `_assets/`, `_mdd/`, `markdown/`, `mdd-build.json`, `llms.txt`, `robots.txt`, `sitemap.xml`, and `404.html` are reserved. Keep generated output outside the content root.\n\nA complete [example project](examples/basic/mdd/contents/index.md) is included under `examples/basic`. Pass that directory as `projectDir` to compile it.\n\n## Develop\n\n```sh\nnvm use\nbun install --frozen-lockfile\nbun run check\nbun run coverage\nbun audit\n```\n\n`bun run build` emits Node ESM and TypeScript declarations to `dist/`. `bun run smoke` creates a package archive, installs it into an isolated consumer, and runs it with the current Node binary. It checks that Bun is unavailable inside the consumer and that all three base-path fixtures compile. On POSIX systems, `MDD_TEST_NODE_BINARIES` can contain colon-separated Node binary paths to exercise the same archive across versions.\n\nFollow [Clean Workflow](AGENTS.md), [contributing](CONTRIBUTING.md), and the [engine contract](docs/SPEC.md). See [verification](docs/VERIFICATION.md) for the checks performed during bootstrap.\n\n## License\n\nLicensed under the [MIT License](LICENSE).\n","readmeFilename":"README.md"}