{"_id":"@adaptivekind/markdown-graph","_rev":"15-c8bdbd3cabf2d7e834618150c42bbc67","name":"@adaptivekind/markdown-graph","dist-tags":{"latest":"0.0.17"},"versions":{"0.0.3":{"name":"@adaptivekind/markdown-graph","version":"0.0.3","author":{"name":"Ian Homer"},"license":"MIT","_id":"@adaptivekind/markdown-graph@0.0.3","maintainers":[{"name":"ianhomer","email":"ian@adaptivekind.com"}],"homepage":"https://github.com/adaptivekind/markdown-graph#readme","bugs":{"url":"https://github.com/adaptivekind/markdown-graph/issues"},"bin":{"markdown-graph":"dist/cli.js"},"dist":{"shasum":"84959b429ccdc2ca5b84135555f7c3f5c40d12ee","tarball":"https://registry.npmjs.org/@adaptivekind/markdown-graph/-/markdown-graph-0.0.3.tgz","fileCount":59,"integrity":"sha512-TwagVBQAfQ7nmyybYfUj5Wz7OaP19fyYmwcDx5ydS6YcVEMu81yPRYJQ6USDFCvIcsdwWyTfjLARm8hvRnyPqg==","signatures":[{"sig":"MEUCIGEFF+HPF2ADmGQtt8som86d+gfR5u/j8MXcEXBI7ZY5AiEAqBq6WP4uij1p28yTXd/ygLu6ElZ5+lWHKixAsIDVTPo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1447295},"main":"index.js","type":"module","gitHead":"a7e59bd4ea53ac9f46844cb757e03181138fb001","scripts":{"knip":"knip","lint":"npm run prettier && npm run eslint","test":"jest --no-watchman","build":"rollup -c --bundleConfigAsCjs --failAfterWarnings","eslint":"eslint src --ext .ts","prepare":"husky","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"npx prettier --check .","demo:test":"scripts/demo-test-changes.sh","demo:clean":"rm -rf target/","demo:setup":"scripts/setup-demo.sh","demo:watch":"node dist/cli.js watch ./target/demo-docs --verbose","eslint:fix":"eslint --fix src --ext .ts","test:watch":"jest --watch","build:watch":"rollup -c --bundleConfigAsCjs --watch","prettier:fix":"npx prettier --write .","demo:generate":"node dist/cli.js generate ./target/demo-docs","test:coverage":"jest --no-watchman --coverage"},"_npmUser":{"name":"ianhomer","email":"ian@adaptivekind.com"},"repository":{"url":"git+https://github.com/adaptivekind/markdown-graph.git","type":"git"},"_npmVersion":"10.9.3","description":"Generate a graph from a markdown repository","directories":{},"_nodeVersion":"22.17.0","dependencies":{"jest":"^30.0.4","consola":"^3.4.2","unified":"^11.0.5","chokidar":"^4.0.3","commander":"^14.0.0","es-toolkit":"^1.39.7","gray-matter":"^4.0.3","remark-parse":"^11.0.0","remark-wiki-link":"^2.0.1","mdast-util-to-string":"^4.0.0","jest-environment-jsdom":"^30.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^5.61.3","husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.31.0","rollup":"^4.45.0","globals":"^16.3.0","prettier":"^3.6.2","@eslint/js":"^9.31.0","@types/jest":"^30.0.0","lint-staged":"^16.1.2","@types/mdast":"^4.0.4","@types/unist":"^3.0.3","@eslint/eslintrc":"^3.3.1","@babel/preset-env":"^7.28.0","eslint-plugin-import":"^2.32.0","eslint-plugin-sonarjs":"^3.0.4","@rollup/plugin-commonjs":"^28.0.6","@babel/preset-typescript":"^7.27.1","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.36.0","@adaptivekind/graph-schema":"^0.1.9","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/markdown-graph_0.0.3_1752500300765_0.5897822005922979","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@adaptivekind/markdown-graph","version":"0.0.4","author":{"name":"Ian Homer"},"license":"MIT","_id":"@adaptivekind/markdown-graph@0.0.4","maintainers":[{"name":"ianhomer","email":"ian@adaptivekind.com"}],"homepage":"https://github.com/adaptivekind/markdown-graph#readme","bugs":{"url":"https://github.com/adaptivekind/markdown-graph/issues"},"bin":{"markdown-graph":"dist/cli.js"},"dist":{"shasum":"1fed66c82c7d03c50087f267f481180ef2a5b041","tarball":"https://registry.npmjs.org/@adaptivekind/markdown-graph/-/markdown-graph-0.0.4.tgz","fileCount":60,"integrity":"sha512-i50h3h/2xG8c60URa25vY2Hl3qbEuypNyAkZE9YCTGo0fRtbL+wwXxLKJJuJfKfALLFUCnQ11EL2mqm8yHY/VA==","signatures":[{"sig":"MEUCIQCajY3iL9IbGIHX1SHkRRVPs88M9y9GrgvzYXZCVjTd0gIgY3469xnFVN2IxeQIaKOfPsyUFtrzAYl2/wusx5soOfc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1447508},"main":"index.js","type":"module","gitHead":"dd2231af8b5ab83a35754abcd5cbccaaa95caee2","scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"npm run prettier && npm run eslint && npm run knip","test":"jest --no-watchman","build":"rollup -c --bundleConfigAsCjs --failAfterWarnings","eslint":"eslint src --ext .ts","prepare":"husky","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"npx prettier --check .","demo:test":"scripts/demo-test-changes.sh","dev:watch":"tsx src/cli.ts watch","demo:clean":"rm -rf target/","demo:setup":"scripts/setup-demo.sh","demo:watch":"node dist/cli.js watch ./target/demo-docs --verbose","eslint:fix":"eslint --fix src --ext .ts","test:watch":"jest --watch","build:watch":"rollup -c --bundleConfigAsCjs --watch","prettier:fix":"npx prettier --write .","demo:generate":"node dist/cli.js generate ./target/demo-docs","test:coverage":"jest --no-watchman --coverage"},"_npmUser":{"name":"ianhomer","email":"ian@adaptivekind.com"},"repository":{"url":"git+https://github.com/adaptivekind/markdown-graph.git","type":"git"},"_npmVersion":"10.9.3","description":"Generate a graph from a markdown repository","directories":{},"_nodeVersion":"22.17.0","dependencies":{"jest":"^30.0.4","consola":"^3.4.2","unified":"^11.0.5","chokidar":"^4.0.3","commander":"^14.0.0","es-toolkit":"^1.39.7","gray-matter":"^4.0.3","remark-parse":"^11.0.0","remark-wiki-link":"^2.0.1","mdast-util-to-string":"^4.0.0","jest-environment-jsdom":"^30.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","knip":"^5.61.3","husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.31.0","rollup":"^4.45.0","globals":"^16.3.0","prettier":"^3.6.2","@eslint/js":"^9.31.0","@types/jest":"^30.0.0","lint-staged":"^16.1.2","@types/mdast":"^4.0.4","@types/unist":"^3.0.3","@eslint/eslintrc":"^3.3.1","@babel/preset-env":"^7.28.0","eslint-plugin-import":"^2.32.0","eslint-plugin-sonarjs":"^3.0.4","@rollup/plugin-commonjs":"^28.0.6","@babel/preset-typescript":"^7.27.1","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.36.0","@adaptivekind/graph-schema":"^0.1.9","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/markdown-graph_0.0.4_1752615060983_0.6695583076675433","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@adaptivekind/markdown-graph","version":"0.0.5","author":{"name":"Ian Homer"},"license":"MIT","_id":"@adaptivekind/markdown-graph@0.0.5","maintainers":[{"name":"ianhomer","email":"ian@adaptivekind.com"}],"homepage":"https://github.com/adaptivekind/markdown-graph#readme","bugs":{"url":"https://github.com/adaptivekind/markdown-graph/issues"},"bin":{"markdown-graph":"dist/cli.js"},"dist":{"shasum":"33258ba0eba426ebd2140d987b70e4ab97a1bcb2","tarball":"https://registry.npmjs.org/@adaptivekind/markdown-graph/-/markdown-graph-0.0.5.tgz","fileCount":63,"integrity":"sha512-ZXBfgIx7AKcbwlxNZ79X95mDdNI4k66bh4U8zh44OzYOtyAuB3Usq+94PHNvC6yU4jXZ/t9xe7QTK1UOTWMKHw==","signatures":[{"sig":"MEYCIQD1wvRpkTSO5M+Tn7j5AZwDu4yfI84d504wQeAeEKKr3QIhAOkIaIe+HnEHuzoATbXWv8QrvOHXpTiX//kze3tX3Tae","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2833444},"main":"index.js","type":"module","gitHead":"657b4a072357eb8eef0342c5d9f7fbbe888d5bc3","scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"npm run prettier && npm run eslint && npm run knip","test":"jest --no-watchman","build":"rollup -c --bundleConfigAsCjs --failAfterWarnings","eslint":"eslint src --ext .ts","prepare":"husky","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"npx prettier --check .","demo:test":"scripts/demo-test-changes.sh","dev:watch":"tsx src/cli.ts watch","demo:clean":"rm -rf target/","demo:setup":"scripts/setup-demo.sh","demo:watch":"node dist/cli.js watch ./target/demo-docs --verbose","eslint:fix":"eslint --fix src --ext .ts","test:watch":"jest --watch","build:watch":"rollup -c --bundleConfigAsCjs --watch","prettier:fix":"npx prettier --write .","demo:generate":"node dist/cli.js generate ./target/demo-docs","test:coverage":"jest --no-watchman --coverage"},"_npmUser":{"name":"ianhomer","email":"ian@adaptivekind.com"},"repository":{"url":"git+https://github.com/adaptivekind/markdown-graph.git","type":"git"},"_npmVersion":"10.9.3","description":"Generate a graph from a markdown repository","directories":{},"_nodeVersion":"22.17.0","dependencies":{"jest":"^30.0.4","consola":"^3.4.2","unified":"^11.0.5","chokidar":"^4.0.3","commander":"^14.0.0","compromise":"^14.14.4","es-toolkit":"^1.39.7","gray-matter":"^4.0.3","remark-parse":"^11.0.0","remark-wiki-link":"^2.0.1","mdast-util-to-string":"^4.0.0","jest-environment-jsdom":"^30.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","knip":"^5.61.3","husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.31.0","rollup":"^4.45.0","globals":"^16.3.0","prettier":"^3.6.2","@eslint/js":"^9.31.0","@types/jest":"^30.0.0","lint-staged":"^16.1.2","@types/mdast":"^4.0.4","@types/unist":"^3.0.3","@eslint/eslintrc":"^3.3.1","@babel/preset-env":"^7.28.0","eslint-plugin-import":"^2.32.0","eslint-plugin-sonarjs":"^3.0.4","@rollup/plugin-commonjs":"^28.0.6","@babel/preset-typescript":"^7.27.1","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.36.0","@adaptivekind/graph-schema":"^0.1.9","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/markdown-graph_0.0.5_1752648750763_0.03772715137920701","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@adaptivekind/markdown-graph","version":"0.0.6","author":{"name":"Ian Homer"},"license":"MIT","_id":"@adaptivekind/markdown-graph@0.0.6","maintainers":[{"name":"ianhomer","email":"ian@adaptivekind.com"}],"homepage":"https://github.com/adaptivekind/markdown-graph#readme","bugs":{"url":"https://github.com/adaptivekind/markdown-graph/issues"},"bin":{"markdown-graph":"dist/cli.js"},"dist":{"shasum":"2a9196267db4fb00637bf6d901a58c2464bbe72c","tarball":"https://registry.npmjs.org/@adaptivekind/markdown-graph/-/markdown-graph-0.0.6.tgz","fileCount":64,"integrity":"sha512-zEQFALpP4YGE8F6pF9kH0+w0H+hrwMyj+VwfE7NmHqTYYhjUE2aYdEPrKKxQ/q4tkqR05EgtV4PzIxrErtvcRA==","signatures":[{"sig":"MEYCIQCnYEmgstKcaU33BRb/CmRr9P5WGXFQPUC87O7MNlgRzAIhAKQ+ZoiICbRwhxtrcEhFBLEv9N7AteC+rO/FMhn/uhEr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2836930},"main":"dist/markdown-graph.js","type":"module","gitHead":"76d780a947325a7f927a7cbec23dd51dff4fa8e6","scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"npm run prettier && npm run eslint && npm run knip","test":"jest --no-watchman","build":"rollup -c --bundleConfigAsCjs --failAfterWarnings","eslint":"eslint src --ext .ts","prepare":"husky","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"npx prettier --check .","demo:test":"scripts/demo-test-changes.sh","dev:watch":"tsx src/cli.ts watch","demo:clean":"rm -rf target/","demo:setup":"scripts/setup-demo.sh","demo:watch":"node dist/cli.js watch ./target/demo-docs --verbose","eslint:fix":"eslint --fix src --ext .ts","test:watch":"jest --watch","build:watch":"rollup -c --bundleConfigAsCjs --watch","prettier:fix":"npx prettier --write .","demo:generate":"node dist/cli.js generate ./target/demo-docs","test:coverage":"jest --no-watchman --coverage"},"_npmUser":{"name":"ianhomer","email":"ian@adaptivekind.com"},"repository":{"url":"git+https://github.com/adaptivekind/markdown-graph.git","type":"git"},"_npmVersion":"10.9.3","description":"Generate a graph from a markdown repository","directories":{},"_nodeVersion":"22.18.0","dependencies":{"jest":"^30.0.4","consola":"^3.4.2","unified":"^11.0.5","chokidar":"^4.0.3","commander":"^14.0.0","compromise":"^14.14.4","es-toolkit":"^1.39.7","gray-matter":"^4.0.3","remark-parse":"^11.0.0","remark-wiki-link":"^2.0.1","mdast-util-to-string":"^4.0.0","jest-environment-jsdom":"^30.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","knip":"^5.61.3","husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.31.0","rollup":"^4.45.0","globals":"^16.3.0","prettier":"^3.6.2","@eslint/js":"^9.31.0","@types/jest":"^30.0.0","lint-staged":"^16.1.2","@types/mdast":"^4.0.4","@types/unist":"^3.0.3","@eslint/eslintrc":"^3.3.1","@babel/preset-env":"^7.28.0","eslint-plugin-import":"^2.32.0","eslint-plugin-sonarjs":"^3.0.4","@rollup/plugin-commonjs":"^28.0.6","@babel/preset-typescript":"^7.27.1","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.36.0","@adaptivekind/graph-schema":"^0.1.9","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/markdown-graph_0.0.6_1754745278567_0.7302905637339105","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@adaptivekind/markdown-graph","version":"0.0.7","author":{"name":"Ian Homer"},"license":"MIT","_id":"@adaptivekind/markdown-graph@0.0.7","maintainers":[{"name":"ianhomer","email":"ian@adaptivekind.com"}],"homepage":"https://github.com/adaptivekind/markdown-graph#readme","bugs":{"url":"https://github.com/adaptivekind/markdown-graph/issues"},"bin":{"markdown-graph":"dist/cli.js"},"dist":{"shasum":"6b205ce09c7a523db64f355256c873ff2d8ce1b4","tarball":"https://registry.npmjs.org/@adaptivekind/markdown-graph/-/markdown-graph-0.0.7.tgz","fileCount":65,"integrity":"sha512-stOruIhK1uvQi3WrCmXGaMSh9lJDcJ8NIWHW/rxk0nXMo4NRT0z+LImxgCT+Pi5Yso7hXnVUVmIjKdSDAaM6Wg==","signatures":[{"sig":"MEUCIQDv398VYW3ePSOD/RsIW4VDLrf7gzgaHlayPIEv+AiB4wIgHujENwZc3NjfTRE+3UmfgsoDEqhJi0Vi3LZsPa6iQnQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5088903},"main":"dist/markdown-graph.js","type":"module","gitHead":"7213217deacadfad951a9fbe283528492d96d4ce","scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"npm run prettier && npm run eslint && npm run knip","test":"jest --no-watchman","build":"rollup -c --bundleConfigAsCjs --failAfterWarnings","eslint":"eslint src --ext .ts","prepare":"husky","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"npx prettier --check .","demo:test":"scripts/demo-test-changes.sh","dev:watch":"tsx src/cli.ts watch","demo:clean":"rm -rf target/","demo:setup":"scripts/setup-demo.sh","demo:watch":"node dist/cli.js watch ./target/demo-docs --verbose","eslint:fix":"eslint --fix src --ext .ts","test:watch":"jest --watch","build:watch":"rollup -c --bundleConfigAsCjs --watch","prettier:fix":"npx prettier --write .","demo:generate":"node dist/cli.js generate ./target/demo-docs","test:coverage":"jest --no-watchman --coverage"},"_npmUser":{"name":"ianhomer","email":"ian@adaptivekind.com"},"repository":{"url":"git+https://github.com/adaptivekind/markdown-graph.git","type":"git"},"_npmVersion":"10.9.3","description":"Generate a graph from a markdown repository","directories":{},"_nodeVersion":"22.18.0","dependencies":{"jest":"^30.0.4","consola":"^3.4.2","unified":"^11.0.5","chokidar":"^4.0.3","commander":"^14.0.0","compromise":"^14.14.4","es-toolkit":"^1.39.7","gray-matter":"^4.0.3","remark-parse":"^11.0.0","remark-wiki-link":"^2.0.1","mdast-util-to-string":"^4.0.0","jest-environment-jsdom":"^30.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","knip":"^5.61.3","husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.31.0","rollup":"^4.45.0","globals":"^16.3.0","prettier":"^3.6.2","@eslint/js":"^9.31.0","@types/jest":"^30.0.0","lint-staged":"^16.1.2","@types/mdast":"^4.0.4","@types/unist":"^3.0.3","@eslint/eslintrc":"^3.3.1","@babel/preset-env":"^7.28.0","eslint-plugin-import":"^2.32.0","eslint-plugin-sonarjs":"^3.0.4","@rollup/plugin-commonjs":"^28.0.6","@babel/preset-typescript":"^7.27.1","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.36.0","@adaptivekind/graph-schema":"^0.1.9","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/markdown-graph_0.0.7_1754746252062_0.9274192013881193","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@adaptivekind/markdown-graph","version":"0.0.8","author":{"name":"Ian Homer"},"license":"MIT","_id":"@adaptivekind/markdown-graph@0.0.8","maintainers":[{"name":"ianhomer","email":"ian@adaptivekind.com"}],"homepage":"https://github.com/adaptivekind/markdown-graph#readme","bugs":{"url":"https://github.com/adaptivekind/markdown-graph/issues"},"bin":{"markdown-graph":"dist/cli.js"},"dist":{"shasum":"e9a7bb138247f5cc80db0fd4f4b616778f11981a","tarball":"https://registry.npmjs.org/@adaptivekind/markdown-graph/-/markdown-graph-0.0.8.tgz","fileCount":65,"integrity":"sha512-Fh2Ptwu+zAQT3rZT/o1ClqSMuvnvwV13ZR94NCgkP2Azw90tW7wc8YlL0kyt1IW1MuEdfkoelDfcUyPCzwWHag==","signatures":[{"sig":"MEUCIAzKs1hHbT5PpDml3ChkWMkr8uKplv5yaFrNFkfHe45LAiEApn7R9E/TXfDWshnl64DiDLQvnpvpTiLgXiXsgHZYfHc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5089735},"main":"dist/markdown-graph.js","type":"module","gitHead":"6471751ca8cd41a0e1e2fa1de58f754897214331","scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"npm run prettier && npm run eslint && npm run knip","test":"jest --no-watchman","build":"rollup -c --bundleConfigAsCjs --failAfterWarnings","eslint":"eslint src --ext .ts","prepare":"husky","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"npx prettier --check .","demo:test":"scripts/demo-test-changes.sh","dev:watch":"tsx src/cli.ts watch","demo:clean":"rm -rf target/","demo:setup":"scripts/setup-demo.sh","demo:watch":"node dist/cli.js watch ./target/demo-docs --verbose","eslint:fix":"eslint --fix src --ext .ts","test:watch":"jest --watch","build:watch":"rollup -c --bundleConfigAsCjs --watch","prettier:fix":"npx prettier --write .","demo:generate":"node dist/cli.js generate ./target/demo-docs","test:coverage":"jest --no-watchman --coverage"},"_npmUser":{"name":"ianhomer","email":"ian@adaptivekind.com"},"repository":{"url":"git+https://github.com/adaptivekind/markdown-graph.git","type":"git"},"_npmVersion":"10.9.3","description":"Generate a graph from a markdown repository","directories":{},"_nodeVersion":"22.18.0","dependencies":{"jest":"^30.0.4","consola":"^3.4.2","unified":"^11.0.5","chokidar":"^4.0.3","commander":"^14.0.0","compromise":"^14.14.4","es-toolkit":"^1.39.7","gray-matter":"^4.0.3","remark-parse":"^11.0.0","remark-wiki-link":"^2.0.1","mdast-util-to-string":"^4.0.0","jest-environment-jsdom":"^30.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","knip":"^5.61.3","husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.31.0","rollup":"^4.45.0","globals":"^16.3.0","prettier":"^3.6.2","@eslint/js":"^9.31.0","@types/jest":"^30.0.0","lint-staged":"^16.1.2","@types/mdast":"^4.0.4","@types/unist":"^3.0.3","@eslint/eslintrc":"^3.3.1","@babel/preset-env":"^7.28.0","eslint-plugin-import":"^2.32.0","eslint-plugin-sonarjs":"^3.0.4","@rollup/plugin-commonjs":"^28.0.6","@babel/preset-typescript":"^7.27.1","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.36.0","@adaptivekind/graph-schema":"^0.1.9","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/markdown-graph_0.0.8_1754747427795_0.7411439686463461","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@adaptivekind/markdown-graph","version":"0.0.9","author":{"name":"Ian Homer"},"license":"MIT","_id":"@adaptivekind/markdown-graph@0.0.9","maintainers":[{"name":"ianhomer","email":"ian@adaptivekind.com"}],"homepage":"https://github.com/adaptivekind/markdown-graph#readme","bugs":{"url":"https://github.com/adaptivekind/markdown-graph/issues"},"bin":{"markdown-graph":"dist/cli.js"},"dist":{"shasum":"9b96a6bf16784cac52328823c128cc7c29a18c12","tarball":"https://registry.npmjs.org/@adaptivekind/markdown-graph/-/markdown-graph-0.0.9.tgz","fileCount":66,"integrity":"sha512-tlorO4YrxVRe43qysoI+9C5a2ga2b2jJC5xXbTUIPCyZMz0uBAEom0fens49VuYzdx+9glz+At2ioqi1F5j67w==","signatures":[{"sig":"MEYCIQCdtKEy1KLjZbuzENLYY/F8SCaQmLqGNQEFSI2ve4+9CAIhAKVfv4ca6tANrFygmG2Go8s0jZcN6ek+XMxJzpQr6KM9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5091739},"main":"dist/markdown-graph.js","type":"module","types":"dist/markdown-graph.d.ts","gitHead":"2732d2de2ae20133cf496a841c913cc0fc1acfdb","scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"npm run prettier && npm run eslint && npm run knip","test":"jest --no-watchman","build":"rollup -c --bundleConfigAsCjs --failAfterWarnings","eslint":"eslint src --ext .ts","prepare":"husky","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"npx prettier --check .","demo:test":"scripts/demo-test-changes.sh","dev:watch":"tsx src/cli.ts watch","demo:clean":"rm -rf target/","demo:setup":"scripts/setup-demo.sh","demo:watch":"node dist/cli.js watch ./target/demo-docs --verbose","eslint:fix":"eslint --fix src --ext .ts","test:watch":"jest --watch","build:watch":"rollup -c --bundleConfigAsCjs --watch","prettier:fix":"npx prettier --write .","demo:generate":"node dist/cli.js generate ./target/demo-docs","test:coverage":"jest --no-watchman --coverage"},"_npmUser":{"name":"ianhomer","email":"ian@adaptivekind.com"},"repository":{"url":"git+https://github.com/adaptivekind/markdown-graph.git","type":"git"},"_npmVersion":"10.9.3","description":"Generate a graph from a markdown repository","directories":{},"_nodeVersion":"22.18.0","dependencies":{"jest":"^30.0.4","consola":"^3.4.2","unified":"^11.0.5","chokidar":"^4.0.3","commander":"^14.0.0","compromise":"^14.14.4","es-toolkit":"^1.39.7","gray-matter":"^4.0.3","remark-parse":"^11.0.0","remark-wiki-link":"^2.0.1","mdast-util-to-string":"^4.0.0","jest-environment-jsdom":"^30.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","knip":"^5.61.3","husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.31.0","rollup":"^4.45.0","globals":"^16.3.0","prettier":"^3.6.2","@eslint/js":"^9.31.0","@types/jest":"^30.0.0","lint-staged":"^16.1.2","@types/mdast":"^4.0.4","@types/unist":"^3.0.3","@eslint/eslintrc":"^3.3.1","@babel/preset-env":"^7.28.0","rollup-plugin-dts":"^6.2.1","eslint-plugin-import":"^2.32.0","eslint-plugin-sonarjs":"^3.0.4","@rollup/plugin-commonjs":"^28.0.6","@babel/preset-typescript":"^7.27.1","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.36.0","@adaptivekind/graph-schema":"^0.1.9","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/markdown-graph_0.0.9_1754748731714_0.3166914909838634","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@adaptivekind/markdown-graph","version":"0.0.10","author":{"name":"Ian Homer"},"license":"MIT","_id":"@adaptivekind/markdown-graph@0.0.10","maintainers":[{"name":"ianhomer","email":"ian@adaptivekind.com"}],"homepage":"https://github.com/adaptivekind/markdown-graph#readme","bugs":{"url":"https://github.com/adaptivekind/markdown-graph/issues"},"bin":{"markdown-graph":"dist/cli.js"},"dist":{"shasum":"95b08a8dc95f6d28a6d4c4e4f37ee494804b9a6d","tarball":"https://registry.npmjs.org/@adaptivekind/markdown-graph/-/markdown-graph-0.0.10.tgz","fileCount":66,"integrity":"sha512-1+NkPLbYJU5jJvNt7woheojoyAJzIhsarSEeODA0AMfp8YRVWY9TFdCZ8bZUkR+471GItFDf+f8lpF3R64WqVA==","signatures":[{"sig":"MEUCIENfJIx+PwoeLunqRsBSiYmLn4aanBdpzb1lZMJX6YpUAiEAk0XiG58S7g2vWjQaDKmbx652KIPXkFxKXX+0RrldTxQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4944671},"main":"dist/markdown-graph.js","type":"module","types":"dist/markdown-graph.d.ts","gitHead":"68709e12369577d91ac4d8e9332fda6d2a7f3c42","scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"npm run prettier && npm run eslint && npm run knip","test":"jest --no-watchman","build":"rollup -c --bundleConfigAsCjs --failAfterWarnings","eslint":"eslint src --ext .ts","prepare":"husky","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"npx prettier --check .","demo:test":"scripts/demo-test-changes.sh","dev:watch":"tsx src/cli.ts watch","demo:clean":"rm -rf target/","demo:setup":"scripts/setup-demo.sh","demo:watch":"node dist/cli.js watch ./target/demo-docs --verbose","eslint:fix":"eslint --fix src --ext .ts","test:watch":"jest --watch","build:watch":"rollup -c --bundleConfigAsCjs --watch","prettier:fix":"npx prettier --write .","demo:generate":"node dist/cli.js generate ./target/demo-docs","test:coverage":"jest --no-watchman --coverage"},"_npmUser":{"name":"ianhomer","email":"ian@adaptivekind.com"},"repository":{"url":"git+https://github.com/adaptivekind/markdown-graph.git","type":"git"},"_npmVersion":"10.9.3","description":"Generate a graph from a markdown repository","directories":{},"_nodeVersion":"22.18.0","dependencies":{"jest":"^30.0.4","consola":"^3.4.2","unified":"^11.0.5","chokidar":"^4.0.3","commander":"^14.0.0","compromise":"^14.14.4","es-toolkit":"^1.39.7","gray-matter":"^4.0.3","remark-parse":"^11.0.0","remark-wiki-link":"^2.0.1","mdast-util-to-string":"^4.0.0","jest-environment-jsdom":"^30.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","knip":"^5.61.3","husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.31.0","rollup":"^4.45.0","globals":"^16.3.0","prettier":"^3.6.2","@eslint/js":"^9.31.0","@types/jest":"^30.0.0","lint-staged":"^16.1.2","@types/mdast":"^4.0.4","@types/unist":"^3.0.3","@eslint/eslintrc":"^3.3.1","@babel/preset-env":"^7.28.0","rollup-plugin-dts":"^6.2.1","eslint-plugin-import":"^2.32.0","eslint-plugin-sonarjs":"^3.0.4","@rollup/plugin-commonjs":"^28.0.6","@babel/preset-typescript":"^7.27.1","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.36.0","@adaptivekind/graph-schema":"^0.1.9","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/markdown-graph_0.0.10_1754750943512_0.03275517871173772","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@adaptivekind/markdown-graph","version":"0.0.11","author":{"name":"Ian Homer"},"license":"MIT","_id":"@adaptivekind/markdown-graph@0.0.11","maintainers":[{"name":"ianhomer","email":"ian@adaptivekind.com"}],"homepage":"https://github.com/adaptivekind/markdown-graph#readme","bugs":{"url":"https://github.com/adaptivekind/markdown-graph/issues"},"bin":{"markdown-graph":"dist/cli.js"},"dist":{"shasum":"a42253075d153d699501c3ac1647c4d6246eab3e","tarball":"https://registry.npmjs.org/@adaptivekind/markdown-graph/-/markdown-graph-0.0.11.tgz","fileCount":67,"integrity":"sha512-Yr7wegqNG7+7GYUOuE8DYnpjFfZKOGC7pifFgOf8eiqK3PcrpWVknBVVj2w8t9q0Gbz9E7mZ/6n2H3+llqmXig==","signatures":[{"sig":"MEYCIQDnO0/zGgGLiWbVH0Y1BbdeTEApJkLPtvqe9r+7dFFJeQIhAIK+N4L2u8Rw/Pz53BypNw901oz+vcsI9VxUKZdXDmUi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4951290},"main":"dist/markdown-graph.js","type":"module","types":"dist/markdown-graph.d.ts","gitHead":"648aa285a1cc887ac5978e6bd180cf374a2f41e1","scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"npm run prettier && npm run eslint && npm run knip","test":"jest --no-watchman","build":"rollup -c --bundleConfigAsCjs --failAfterWarnings","eslint":"eslint src --ext .ts","prepare":"husky","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"npx prettier --check .","demo:test":"scripts/demo-test-changes.sh","dev:watch":"tsx src/cli.ts watch","demo:clean":"rm -rf target/","demo:setup":"scripts/setup-demo.sh","demo:watch":"node dist/cli.js watch ./target/demo-docs --verbose","eslint:fix":"eslint --fix src --ext .ts","test:watch":"jest --watch","build:watch":"rollup -c --bundleConfigAsCjs --watch","prettier:fix":"npx prettier --write .","demo:generate":"node dist/cli.js generate ./target/demo-docs","test:coverage":"jest --no-watchman --coverage"},"_npmUser":{"name":"ianhomer","email":"ian@adaptivekind.com"},"repository":{"url":"git+https://github.com/adaptivekind/markdown-graph.git","type":"git"},"_npmVersion":"10.9.3","description":"Generate a graph from a markdown repository","directories":{},"_nodeVersion":"22.18.0","dependencies":{"jest":"^30.0.4","consola":"^3.4.2","unified":"^11.0.5","chokidar":"^4.0.3","commander":"^14.0.0","compromise":"^14.14.4","es-toolkit":"^1.39.7","gray-matter":"^4.0.3","remark-parse":"^11.0.0","remark-wiki-link":"^2.0.1","mdast-util-to-string":"^4.0.0","jest-environment-jsdom":"^30.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","knip":"^5.61.3","husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.31.0","rollup":"^4.45.0","globals":"^16.3.0","prettier":"^3.6.2","@eslint/js":"^9.31.0","@types/jest":"^30.0.0","lint-staged":"^16.1.2","@types/mdast":"^4.0.4","@types/unist":"^3.0.3","@eslint/eslintrc":"^3.3.1","@babel/preset-env":"^7.28.0","rollup-plugin-dts":"^6.2.1","eslint-plugin-import":"^2.32.0","eslint-plugin-sonarjs":"^3.0.4","@rollup/plugin-commonjs":"^28.0.6","@babel/preset-typescript":"^7.27.1","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.36.0","@adaptivekind/graph-schema":"^0.1.9","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/markdown-graph_0.0.11_1754757604572_0.503120437234224","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@adaptivekind/markdown-graph","version":"0.0.12","author":{"name":"Ian Homer"},"license":"MIT","_id":"@adaptivekind/markdown-graph@0.0.12","maintainers":[{"name":"ianhomer","email":"ian@adaptivekind.com"}],"homepage":"https://github.com/adaptivekind/markdown-graph#readme","bugs":{"url":"https://github.com/adaptivekind/markdown-graph/issues"},"bin":{"markdown-graph":"dist/cli.js"},"dist":{"shasum":"45888ef4234bc93044ba7400f8f191b5b850204f","tarball":"https://registry.npmjs.org/@adaptivekind/markdown-graph/-/markdown-graph-0.0.12.tgz","fileCount":68,"integrity":"sha512-1F11/NaxnQFuURlsYJGAMOeE3rTDv8bkPIjFiLnzQcebv9wh3RajVe+OUcqciQ6zy7N0wzpdgsgbRSrYMzx6/g==","signatures":[{"sig":"MEYCIQCcDogTuh1tI5WWSDdficwgXZDMiCIZGCJCokwHPP/UwQIhAI4mKk75zsNInO63VfosIzQsSlsLneoT1tmy1zr6NVfu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4957253},"main":"dist/markdown-graph.js","type":"module","types":"dist/markdown-graph.d.ts","gitHead":"d5a42b95eb1da4a27b9f044c8aa980af2cbe1980","scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"npm run prettier && npm run eslint && npm run knip","test":"jest --no-watchman","build":"rollup -c --bundleConfigAsCjs --failAfterWarnings","eslint":"eslint src --ext .ts","prepare":"husky","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"npx prettier --check .","demo:test":"scripts/demo-test-changes.sh","dev:watch":"tsx src/cli.ts watch","demo:clean":"rm -rf target/","demo:setup":"scripts/setup-demo.sh","demo:watch":"node dist/cli.js watch ./target/demo-docs --verbose","eslint:fix":"eslint --fix src --ext .ts","test:watch":"jest --watch","build:watch":"rollup -c --bundleConfigAsCjs --watch","prettier:fix":"npx prettier --write .","demo:generate":"node dist/cli.js generate ./target/demo-docs","test:coverage":"jest --no-watchman --coverage"},"_npmUser":{"name":"ianhomer","email":"ian@adaptivekind.com"},"repository":{"url":"git+https://github.com/adaptivekind/markdown-graph.git","type":"git"},"_npmVersion":"10.9.3","description":"Generate a graph from a markdown repository","directories":{},"_nodeVersion":"22.18.0","dependencies":{"jest":"^30.0.4","consola":"^3.4.2","unified":"^11.0.5","chokidar":"^4.0.3","commander":"^14.0.0","compromise":"^14.14.4","es-toolkit":"^1.39.7","gray-matter":"^4.0.3","remark-parse":"^11.0.0","remark-wiki-link":"^2.0.1","mdast-util-to-string":"^4.0.0","jest-environment-jsdom":"^30.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","knip":"^5.61.3","husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.31.0","rollup":"^4.45.0","globals":"^16.3.0","prettier":"^3.6.2","@eslint/js":"^9.31.0","@types/jest":"^30.0.0","lint-staged":"^16.1.2","@types/mdast":"^4.0.4","@types/unist":"^3.0.3","@eslint/eslintrc":"^3.3.1","@babel/preset-env":"^7.28.0","rollup-plugin-dts":"^6.2.1","eslint-plugin-import":"^2.32.0","eslint-plugin-sonarjs":"^3.0.4","@rollup/plugin-commonjs":"^28.0.6","@babel/preset-typescript":"^7.27.1","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.36.0","@adaptivekind/graph-schema":"^0.1.9","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/markdown-graph_0.0.12_1754757861435_0.7235844562145668","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@adaptivekind/markdown-graph","version":"0.0.13","author":{"name":"Ian Homer"},"license":"MIT","_id":"@adaptivekind/markdown-graph@0.0.13","maintainers":[{"name":"ianhomer","email":"ian@adaptivekind.com"}],"homepage":"https://github.com/adaptivekind/markdown-graph#readme","bugs":{"url":"https://github.com/adaptivekind/markdown-graph/issues"},"bin":{"markdown-graph":"dist/cli.js"},"dist":{"shasum":"2d4383f5b396127550ef847042ca3b28b9fcd725","tarball":"https://registry.npmjs.org/@adaptivekind/markdown-graph/-/markdown-graph-0.0.13.tgz","fileCount":69,"integrity":"sha512-b5pTbFIydah4soRW0oXeJO6UVOMhMVYNv/KmgZX9A6ph398fr+l24Urgjhsiibx3iiIvJpvEZjOcbiAEFgV2Tw==","signatures":[{"sig":"MEYCIQCmkcO25QDchnct9OJ6fwaVTtYNLGVwwyj8j9KgeJHK6AIhAMtNN7fQDTRYuKZ9asEOfs1wrHYxKV8S1oNDu5Xr3xVG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4966444},"main":"dist/markdown-graph.js","type":"module","types":"dist/markdown-graph.d.ts","gitHead":"3cbe25f77473850b82c9bf2719033c15f93188d7","scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"npm run prettier && npm run eslint && npm run knip","test":"jest --no-watchman","build":"rollup -c --bundleConfigAsCjs --failAfterWarnings","eslint":"eslint src --ext .ts","prepare":"husky","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"npx prettier --check .","demo:test":"scripts/demo-test-changes.sh","dev:watch":"tsx src/cli.ts watch","demo:clean":"rm -rf target/","demo:setup":"scripts/setup-demo.sh","demo:watch":"node dist/cli.js watch ./target/demo-docs --verbose","eslint:fix":"eslint --fix src --ext .ts","test:watch":"jest --watch","build:watch":"rollup -c --bundleConfigAsCjs --watch","prettier:fix":"npx prettier --write .","demo:generate":"node dist/cli.js generate ./target/demo-docs","test:coverage":"jest --no-watchman --coverage"},"_npmUser":{"name":"ianhomer","email":"ian@adaptivekind.com"},"repository":{"url":"git+https://github.com/adaptivekind/markdown-graph.git","type":"git"},"_npmVersion":"10.9.3","description":"Generate a graph from a markdown repository","directories":{},"_nodeVersion":"22.18.0","dependencies":{"jest":"^30.0.4","consola":"^3.4.2","unified":"^11.0.5","chokidar":"^4.0.3","commander":"^14.0.0","compromise":"^14.14.4","es-toolkit":"^1.39.7","gray-matter":"^4.0.3","remark-parse":"^11.0.0","remark-wiki-link":"^2.0.1","mdast-util-to-string":"^4.0.0","jest-environment-jsdom":"^30.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","knip":"^5.61.3","husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.31.0","rollup":"^4.45.0","globals":"^16.3.0","prettier":"^3.6.2","@eslint/js":"^9.31.0","@types/jest":"^30.0.0","lint-staged":"^16.1.2","@types/mdast":"^4.0.4","@types/unist":"^3.0.3","@eslint/eslintrc":"^3.3.1","@babel/preset-env":"^7.28.0","rollup-plugin-dts":"^6.2.1","eslint-plugin-import":"^2.32.0","eslint-plugin-sonarjs":"^3.0.4","@rollup/plugin-commonjs":"^28.0.6","@babel/preset-typescript":"^7.27.1","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.36.0","@adaptivekind/graph-schema":"^0.1.9","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/markdown-graph_0.0.13_1754758212807_0.0664494504848323","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@adaptivekind/markdown-graph","version":"0.0.14","author":{"name":"Ian Homer"},"license":"MIT","_id":"@adaptivekind/markdown-graph@0.0.14","maintainers":[{"name":"ianhomer","email":"ian@adaptivekind.com"}],"homepage":"https://github.com/adaptivekind/markdown-graph#readme","bugs":{"url":"https://github.com/adaptivekind/markdown-graph/issues"},"bin":{"markdown-graph":"dist/cli.js"},"dist":{"shasum":"ca0e9e965297931cfd77863df0addbbc47089615","tarball":"https://registry.npmjs.org/@adaptivekind/markdown-graph/-/markdown-graph-0.0.14.tgz","fileCount":69,"integrity":"sha512-7cURpZP+Rg5wycPjEkC9uszsOj/L8LV+CBS5djulBv9P8biRIj8vOmCkidfbcedVz0x2fSvb89hDM0VyHwb+Mg==","signatures":[{"sig":"MEYCIQDh9PQNxo9/BgRgL69ho/xrkO0/JWfrqnGLZ4UxvKs/lgIhAOeCoVIzTC+Gj3StpvqY82QZz7+USO+MJfLVtuPUDD1u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5095582},"main":"dist/markdown-graph.js","type":"module","types":"dist/markdown-graph.d.ts","gitHead":"40d63df6abedd83e5f943581db503f702000a4be","scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"npm run prettier && npm run eslint && npm run knip","test":"jest --no-watchman","build":"rollup -c --bundleConfigAsCjs --failAfterWarnings","eslint":"eslint src --ext .ts","prepare":"husky","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"npx prettier --check .","demo:test":"scripts/demo-test-changes.sh","dev:watch":"tsx src/cli.ts watch","demo:clean":"rm -rf target/","demo:setup":"scripts/setup-demo.sh","demo:watch":"node dist/cli.js watch ./target/demo-docs --verbose","eslint:fix":"eslint --fix src --ext .ts","test:watch":"jest --watch","build:watch":"rollup -c --bundleConfigAsCjs --watch","prettier:fix":"npx prettier --write .","demo:generate":"node dist/cli.js generate ./target/demo-docs","test:coverage":"jest --no-watchman --coverage"},"_npmUser":{"name":"ianhomer","email":"ian@adaptivekind.com"},"repository":{"url":"git+https://github.com/adaptivekind/markdown-graph.git","type":"git"},"_npmVersion":"10.9.3","description":"Generate a graph from a markdown repository","directories":{},"_nodeVersion":"22.18.0","dependencies":{"jest":"^30.0.4","consola":"^3.4.2","unified":"^11.0.5","chokidar":"^4.0.3","commander":"^14.0.0","compromise":"^14.14.4","es-toolkit":"^1.39.7","gray-matter":"^4.0.3","remark-parse":"^11.0.0","remark-wiki-link":"^2.0.1","mdast-util-to-string":"^4.0.0","jest-environment-jsdom":"^30.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","knip":"^5.61.3","husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.31.0","rollup":"^4.45.0","globals":"^16.3.0","prettier":"^3.6.2","@eslint/js":"^9.31.0","@types/jest":"^30.0.0","lint-staged":"^16.1.2","@types/mdast":"^4.0.4","@types/unist":"^3.0.3","@eslint/eslintrc":"^3.3.1","@babel/preset-env":"^7.28.0","rollup-plugin-dts":"^6.2.1","eslint-plugin-import":"^2.32.0","eslint-plugin-sonarjs":"^3.0.4","@rollup/plugin-commonjs":"^28.0.6","@babel/preset-typescript":"^7.27.1","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.36.0","@adaptivekind/graph-schema":"^0.1.9","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/markdown-graph_0.0.14_1754761885666_0.975631686584131","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"@adaptivekind/markdown-graph","version":"0.0.15","author":{"name":"Ian Homer"},"license":"MIT","_id":"@adaptivekind/markdown-graph@0.0.15","maintainers":[{"name":"ianhomer","email":"ian@adaptivekind.com"}],"homepage":"https://github.com/adaptivekind/markdown-graph#readme","bugs":{"url":"https://github.com/adaptivekind/markdown-graph/issues"},"bin":{"markdown-graph":"dist/cli.js"},"dist":{"shasum":"20de694633ad84b90ed5d2bb94116e856fd6c3b6","tarball":"https://registry.npmjs.org/@adaptivekind/markdown-graph/-/markdown-graph-0.0.15.tgz","fileCount":70,"integrity":"sha512-TP1WwtDqBr0trjlJk/NxwnCzXitwzfe7UU9TLVsyRPHsdV8jW2iAeZA41B/hFGIRvAJpRYWqTttGZ5PPsGO2JA==","signatures":[{"sig":"MEUCIGhdrjXcayL0E0a/QU3mn0yWcaOdca8q9KzWItXcb6ylAiEAiSFxzkhBL2ydeSRumTM66uOvrypdti7i4wERezIsVcY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5103571},"main":"dist/markdown-graph.js","type":"module","types":"dist/markdown-graph.d.ts","gitHead":"135ef56837dfcd92f48fe3da288893691482ef5d","scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"npm run prettier && npm run eslint && npm run knip","test":"jest --no-watchman","build":"rollup -c --bundleConfigAsCjs --failAfterWarnings","eslint":"eslint src --ext .ts","prepare":"husky","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"npx prettier --check .","demo:test":"scripts/demo-test-changes.sh","dev:watch":"tsx src/cli.ts watch","demo:clean":"rm -rf target/","demo:setup":"scripts/setup-demo.sh","demo:watch":"node dist/cli.js watch ./target/demo-docs --verbose","eslint:fix":"eslint --fix src --ext .ts","test:watch":"jest --watch","build:watch":"rollup -c --bundleConfigAsCjs --watch","prettier:fix":"npx prettier --write .","demo:generate":"node dist/cli.js generate ./target/demo-docs","test:coverage":"jest --no-watchman --coverage"},"_npmUser":{"name":"ianhomer","email":"ian@adaptivekind.com"},"repository":{"url":"git+https://github.com/adaptivekind/markdown-graph.git","type":"git"},"_npmVersion":"10.9.3","description":"Generate a graph from a markdown repository","directories":{},"_nodeVersion":"22.18.0","dependencies":{"jest":"^30.0.4","consola":"^3.4.2","unified":"^11.0.5","chokidar":"^4.0.3","commander":"^14.0.0","compromise":"^14.14.4","es-toolkit":"^1.39.7","gray-matter":"^4.0.3","remark-parse":"^11.0.0","remark-wiki-link":"^2.0.1","mdast-util-to-string":"^4.0.0","jest-environment-jsdom":"^30.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","knip":"^5.61.3","husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.31.0","rollup":"^4.45.0","globals":"^16.3.0","prettier":"^3.6.2","@eslint/js":"^9.31.0","@types/jest":"^30.0.0","lint-staged":"^16.1.2","@types/mdast":"^4.0.4","@types/unist":"^3.0.3","@eslint/eslintrc":"^3.3.1","@babel/preset-env":"^7.28.0","rollup-plugin-dts":"^6.2.1","eslint-plugin-import":"^2.32.0","eslint-plugin-sonarjs":"^3.0.4","@rollup/plugin-commonjs":"^28.0.6","@babel/preset-typescript":"^7.27.1","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.36.0","@adaptivekind/graph-schema":"^0.1.9","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/markdown-graph_0.0.15_1754774117731_0.43046837435593543","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"@adaptivekind/markdown-graph","version":"0.0.16","author":{"name":"Ian Homer"},"license":"MIT","_id":"@adaptivekind/markdown-graph@0.0.16","maintainers":[{"name":"ianhomer","email":"ian@adaptivekind.com"}],"homepage":"https://github.com/adaptivekind/markdown-graph#readme","bugs":{"url":"https://github.com/adaptivekind/markdown-graph/issues"},"bin":{"markdown-graph":"dist/cli.js"},"dist":{"shasum":"ac34e3b148057fdf98f2aeccc7901cf8937cbec9","tarball":"https://registry.npmjs.org/@adaptivekind/markdown-graph/-/markdown-graph-0.0.16.tgz","fileCount":71,"integrity":"sha512-4toEHcOk86Hj/XfTMwVWr5/F8PU2hngMgrzwE5N7EUpcUr8Vt72Rv9yC9IDO98mJKGGn5oJvMPFah9JyeR+1EQ==","signatures":[{"sig":"MEQCIBypq3mbiGvx4TJs5kqZO+mvIbJJ6EZNysLhWxz4FiTHAiBa6AacjhjYtoiR9ZByU+wrRZ4JQFbmmD+OommhsiCjyg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5111160},"main":"dist/markdown-graph.js","type":"module","types":"dist/markdown-graph.d.ts","gitHead":"8eb517b3aaaedda938322a10795291f6f0aa88cb","scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"npm run prettier && npm run eslint && npm run knip","test":"jest --no-watchman","build":"rollup -c --bundleConfigAsCjs --failAfterWarnings","eslint":"eslint src --ext .ts","prepare":"husky","lint:fix":"npm run prettier:fix && npm run eslint:fix","prettier":"npx prettier --check .","demo:test":"scripts/demo-test-changes.sh","dev:watch":"tsx src/cli.ts watch","demo:clean":"rm -rf target/","demo:setup":"scripts/setup-demo.sh","demo:watch":"node dist/cli.js watch ./target/demo-docs --verbose","eslint:fix":"eslint --fix src --ext .ts","test:watch":"jest --watch","build:watch":"rollup -c --bundleConfigAsCjs --watch","prettier:fix":"npx prettier --write .","demo:generate":"node dist/cli.js generate ./target/demo-docs","test:coverage":"jest --no-watchman --coverage"},"_npmUser":{"name":"ianhomer","email":"ian@adaptivekind.com"},"repository":{"url":"git+https://github.com/adaptivekind/markdown-graph.git","type":"git"},"_npmVersion":"10.9.3","description":"Generate a graph from a markdown repository","directories":{},"_nodeVersion":"22.18.0","dependencies":{"jest":"^30.0.4","consola":"^3.4.2","unified":"^11.0.5","chokidar":"^4.0.3","commander":"^14.0.0","compromise":"^14.14.4","es-toolkit":"^1.39.7","gray-matter":"^4.0.3","remark-parse":"^11.0.0","remark-wiki-link":"^2.0.1","mdast-util-to-string":"^4.0.0","jest-environment-jsdom":"^30.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","knip":"^5.61.3","husky":"^9.1.7","tslib":"^2.8.1","eslint":"^9.31.0","rollup":"^4.45.0","globals":"^16.3.0","prettier":"^3.6.2","@eslint/js":"^9.31.0","@types/jest":"^30.0.0","lint-staged":"^16.1.2","@types/mdast":"^4.0.4","@types/unist":"^3.0.3","@eslint/eslintrc":"^3.3.1","@babel/preset-env":"^7.28.0","rollup-plugin-dts":"^6.2.1","eslint-plugin-import":"^2.32.0","eslint-plugin-sonarjs":"^3.0.4","@rollup/plugin-commonjs":"^28.0.6","@babel/preset-typescript":"^7.27.1","@rollup/plugin-typescript":"^12.1.4","@typescript-eslint/parser":"^8.36.0","@adaptivekind/graph-schema":"^0.1.9","@rollup/plugin-node-resolve":"^16.0.1","@typescript-eslint/eslint-plugin":"^8.36.0"},"_npmOperationalInternal":{"tmp":"tmp/markdown-graph_0.0.16_1754826489565_0.32227653269832035","host":"s3://npm-registry-packages-npm-production"}},"0.0.17":{"name":"@adaptivekind/markdown-graph","version":"0.0.17","description":"Generate a graph from a markdown repository","homepage":"https://github.com/adaptivekind/markdown-graph#readme","bugs":{"url":"https://github.com/adaptivekind/markdown-graph/issues"},"repository":{"type":"git","url":"git+https://github.com/adaptivekind/markdown-graph.git"},"license":"MIT","author":{"name":"Ian Homer"},"type":"module","types":"dist/markdown-graph.d.ts","main":"dist/markdown-graph.js","publishConfig":{"access":"public"},"bin":{"markdown-graph":"dist/cli.js"},"scripts":{"eslint":"eslint src --ext .ts","eslint:fix":"eslint --fix src --ext .ts","lint":"npm run prettier && npm run eslint && npm run knip","lint:fix":"npm run prettier:fix && npm run eslint:fix","prepare":"husky","prettier":"npx prettier --check .","prettier:fix":"npx prettier --write .","build":"rollup -c --bundleConfigAsCjs --failAfterWarnings","build:watch":"rollup -c --bundleConfigAsCjs --watch","test":"jest --no-watchman","test:watch":"jest --watch","test:coverage":"jest --no-watchman --coverage","knip":"knip","dev":"tsx src/cli.ts","dev:watch":"tsx src/cli.ts watch","demo:setup":"scripts/setup-demo.sh","demo:generate":"node dist/cli.js generate ./target/demo-docs","demo:watch":"node dist/cli.js watch ./target/demo-docs --verbose","demo:test":"scripts/demo-test-changes.sh","demo:clean":"rm -rf target/"},"devDependencies":{"@adaptivekind/graph-schema":"^0.1.9","@babel/preset-env":"^7.28.0","@babel/preset-typescript":"^7.27.1","@eslint/eslintrc":"^3.3.1","@eslint/js":"^9.31.0","@rollup/plugin-commonjs":"^28.0.6","@rollup/plugin-node-resolve":"^16.0.1","@rollup/plugin-typescript":"^12.1.4","@types/jest":"^30.0.0","@types/mdast":"^4.0.4","@types/unist":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.36.0","@typescript-eslint/parser":"^8.36.0","eslint":"^9.31.0","eslint-plugin-import":"^2.32.0","eslint-plugin-sonarjs":"^3.0.4","globals":"^16.3.0","husky":"^9.1.7","knip":"^5.61.3","lint-staged":"^16.1.2","prettier":"^3.6.2","rollup":"^4.45.0","rollup-plugin-dts":"^6.2.1","tslib":"^2.8.1","tsx":"^4.19.2"},"dependencies":{"chokidar":"^4.0.3","commander":"^14.0.0","compromise":"^14.14.4","consola":"^3.4.2","es-toolkit":"^1.39.7","gray-matter":"^4.0.3","jest":"^30.0.4","jest-environment-jsdom":"^30.0.4","mdast-util-to-string":"^4.0.0","remark-parse":"^11.0.0","remark-wiki-link":"^2.0.1","unified":"^11.0.5"},"_id":"@adaptivekind/markdown-graph@0.0.17","gitHead":"42dd4bbad6e8a7cd5db9734bcab4e82816dc46df","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-JaFtER9fEnxaiW1THgweSZMa8jfC6wK05WAGnkZvVo7AZQDQjTmxlbdtdO4H0sbTBv9orffO9OtV/quNZ/RGSQ==","shasum":"cc2ac7e305ba71e8b8cf0d225e37850a0aeb3a2f","tarball":"https://registry.npmjs.org/@adaptivekind/markdown-graph/-/markdown-graph-0.0.17.tgz","fileCount":72,"unpackedSize":5112564,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCeRtLlTE7+xSnO3msPd7MI3rW6J6SmqZIwmRZ8GJVvHQIhALLcHnrw12/20W89eMmB7X7Dol6szZ44XKuyW0YVMRsx"}]},"_npmUser":{"name":"ianhomer","email":"ian@adaptivekind.com"},"directories":{},"maintainers":[{"name":"ianhomer","email":"ian@adaptivekind.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/markdown-graph_0.0.17_1754846541463_0.02550088431873676"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-14T13:38:20.660Z","modified":"2025-08-10T17:22:21.907Z","0.0.3":"2025-07-14T13:38:21.011Z","0.0.4":"2025-07-15T21:31:01.355Z","0.0.5":"2025-07-16T06:52:30.987Z","0.0.6":"2025-08-09T13:14:38.976Z","0.0.7":"2025-08-09T13:30:52.308Z","0.0.8":"2025-08-09T13:50:28.064Z","0.0.9":"2025-08-09T14:12:12.001Z","0.0.10":"2025-08-09T14:49:03.787Z","0.0.11":"2025-08-09T16:40:04.847Z","0.0.12":"2025-08-09T16:44:21.652Z","0.0.13":"2025-08-09T16:50:13.070Z","0.0.14":"2025-08-09T17:51:25.937Z","0.0.15":"2025-08-09T21:15:17.984Z","0.0.16":"2025-08-10T11:48:09.832Z","0.0.17":"2025-08-10T17:22:21.708Z"},"bugs":{"url":"https://github.com/adaptivekind/markdown-graph/issues"},"author":{"name":"Ian Homer"},"license":"MIT","homepage":"https://github.com/adaptivekind/markdown-graph#readme","repository":{"type":"git","url":"git+https://github.com/adaptivekind/markdown-graph.git"},"description":"Generate a graph from a markdown repository","maintainers":[{"name":"ianhomer","email":"ian@adaptivekind.com"}],"readme":"# Markdown Graph\n\n[![Test](https://github.com/adaptivekind/markdown-graph/workflows/CI/badge.svg)](https://github.com/adaptivekind/markdown-graph/actions)\n[![npm version](https://badge.fury.io/js/%40adaptivekind%2Fmarkdown-graph.svg)](https://badge.fury.io/js/%40adaptivekind%2Fmarkdown-graph)\n\nGenerate a graph JSON from a markdown repository with real-time file watching\ncapabilities. This TypeScript library parses markdown files and creates a graph\nstructure where each markdown file becomes a node, with wiki-style links between\ndocuments. This graph JSON can be used by the [Graph\nGizmo](https://github.com/adaptivekind/graph-gizmo) to provide a visualisation\nof the graph.\n\n## Features\n\n- 📝 **Parse markdown files** with frontmatter support\n- 🔗 **Generate graph JSON** from markdown repositories\n- 📊 **Graph interface** from `@adaptivekind/graph-schema`\n- 🎯 **CLI tool** for generating graphs from directories\n- 👀 **File watching** with real-time graph updates\n- ⚡ **Incremental updates** for efficient performance\n- 🛠️ **TypeScript support** with strict type checking\n\n## Installation\n\n```bash\nnpm install @adaptivekind/markdown-graph\n```\n\n## CLI Usage\n\nThe package provides a CLI tool for generating graphs from markdown directories:\n\n### Generate Graph (One-time)\n\n```bash\n# Generate graph from current directory\nnpx markdown-graph\n\n# Generate graph from specific directory\nnpx markdown-graph ./docs\n\n# Generate graph with custom output file\nnpx markdown-graph ./docs -o ./output/graph.json\n\n# Generate with verbose output\nnpx markdown-graph ./docs --verbose\n```\n\n### Watch Mode (Real-time Updates)\n\n```bash\n# Watch current directory for changes\nnpx markdown-graph watch\n\n# Watch specific directory with verbose output\nnpx markdown-graph watch ./docs --verbose\n\n# Watch with custom debounce delay\nnpx markdown-graph watch ./docs --debounce 500\n```\n\n### CLI Options\n\n| Option             | Description                          | Default                            |\n| ------------------ | ------------------------------------ | ---------------------------------- |\n| `--output`, `-o`   | Output file path                     | `.garden-graph.json`               |\n| `--verbose`, `-v`  | Enable verbose logging               | `false`                            |\n| `--quiet`, `-q`    | Suppress all output except errors    | `false`                            |\n| `--exclude`        | Patterns to exclude from scanning    | `[\"node_modules\", \"dist\", \".git\"]` |\n| `--include-hidden` | Include hidden files and directories | `false`                            |\n| `--debounce`       | Debounce delay for file changes (ms) | `300`                              |\n\n## Library Usage\n\n### Repository Types\n\n#### In-Memory Repository\n\n```typescript\nimport { createGarden } from \"@adaptivekind/markdown-graph\";\n\nconst garden = await createGarden({\n  type: \"inmemory\",\n  content: {\n    \"file1.md\": \"# Content\\n\\nThis links to [[file2]]\",\n    \"file2.md\": \"# More Content\\n\\nThis links back to [[file1]]\",\n  },\n});\n\nconsole.log(garden.graph.nodes);\nconsole.log(garden.graph.links);\n```\n\n#### File-Based Repository\n\n```typescript\nimport { createGarden } from \"@adaptivekind/markdown-graph\";\n\nconst garden = await createGarden({\n  type: \"file\",\n  path: \"./docs\",\n  excludes: [\"node_modules\", \"dist\"],\n  includeHidden: false,\n});\n\nconsole.log(garden.graph.nodes);\nconsole.log(garden.graph.links);\n```\n\n### Watch Mode Programming\n\n```typescript\nimport { GraphWatcher } from \"@adaptivekind/markdown-graph\";\n\nconst watcher = new GraphWatcher({\n  targetDirectory: \"./docs\",\n  outputFile: \"./graph.json\",\n  verbose: true,\n  debounceMs: 300,\n});\n\n// Listen for events\nwatcher.on(\"initialized\", (stats) => {\n  console.log(`Graph initialized with ${stats.nodeCount} nodes`);\n});\n\nwatcher.on(\"fileChanged\", (data) => {\n  console.log(`File ${data.changeType}: ${data.filePath}`);\n});\n\nwatcher.on(\"graphWritten\", (data) => {\n  console.log(`Graph written to ${data.outputFile}`);\n});\n\n// Start watching\nawait watcher.start();\n```\n\n## Configuration\n\n### Configuration Files\n\nThe tool supports configuration via:\n\n- `.markdown-graph.json`\n- `markdown-graph.config.json`\n- `package.json` (in `\"markdown-graph\"` field)\n\nExample configuration:\n\n```json\n{\n  \"targetDirectory\": \"./docs\",\n  \"outputFile\": \"./graph.json\",\n  \"verbose\": false,\n  \"quiet\": false,\n  \"excludes\": [\"node_modules\", \"dist\", \".git\"],\n  \"includeHidden\": false\n}\n```\n\n### Environment Variables\n\n- `NODE_ENV=test` - Disables CLI execution during testing\n\n## Link Types\n\nThe library supports multiple link formats:\n\n### Wiki Links\n\n```markdown\nThis is a [[wiki link]] to another document.\n```\n\n### Relative Links\n\n```markdown\nThis is a [relative link](./other-document.md) to another document.\n```\n\n### Section Links\n\n```markdown\nThis links to a [[document#section]] in another document.\n```\n\n## Frontmatter Support\n\nThe library supports YAML frontmatter in markdown files:\n\n```markdown\n---\ntags: [project, documentation]\nauthor: John Doe\ncreated: 2024-01-01\n---\n\n# Document Title\n\nYour markdown content here with [[links]] to other documents.\n```\n\nFrontmatter data is flattened and included in the graph nodes as metadata.\n\n## Graph Structure\n\nThe generated graph follows the `@adaptivekind/graph-schema` format:\n\n```typescript\ninterface Graph {\n  nodes: {\n    [nodeId: string]: {\n      label: string;\n      meta?: { [key: string]: string };\n    };\n  };\n  links: Array<{\n    source: string;\n    target: string;\n  }>;\n}\n```\n\n### Node ID Generation\n\n- **Root sections** (h1 headings): Use document ID directly\n- **Subsections**: Use format `documentId#section-title`\n- **Document IDs**: Normalized from filename (lowercase, dashes for spaces/slashes)\n\n## Development\n\n### Prerequisites\n\n- Node.js 22.x\n- npm 10.x\n\n### Setup\n\n```bash\ngit clone https://github.com/adaptivekind/markdown-graph.git\ncd markdown-graph\nnpm install\n```\n\n### Scripts\n\n```bash\n# Development\nnpm run build              # Build the project\nnpm run build:watch        # Build in watch mode\n\n# Testing\nnpm test                   # Run tests once\nnpm run test:watch         # Run tests in watch mode\nnpm run test:coverage      # Run tests with coverage report\n\n# Code Quality\nnpm run lint               # Run linting (prettier + eslint + sonarjs)\nnpm run lint:fix           # Fix linting issues automatically\nnpm run knip               # Check for unused dependencies\n\n# Demo\nnpm run demo:setup         # Set up demo environment\nnpm run demo:generate      # Generate graph from demo docs\nnpm run demo:watch         # Watch demo docs for changes\nnpm run demo:test          # Test file changes in demo\nnpm run demo:clean         # Clean up demo files\n```\n\n### Code Quality\n\nThe project uses comprehensive code quality tools:\n\n- **ESLint** with TypeScript support\n- **Prettier** for code formatting\n- **SonarJS** for code quality analysis\n- **Jest** with 100% test coverage\n- **Husky** for pre-commit hooks\n- **Knip** for dependency analysis\n\n### Testing\n\nThe project includes comprehensive tests:\n\n- **Unit tests** for core functionality\n- **Integration tests** for CLI and file operations\n- **Event-driven tests** for watch functionality\n- **Error handling tests** for edge cases\n\nRun tests with:\n\n```bash\nnpm test                   # Run all tests\nnpm run test:watch         # Run tests in watch mode\nnpm run test:coverage      # Generate coverage report\n```\n\n## Performance\n\n### Incremental Updates\n\nThe watch mode uses incremental updates for optimal performance:\n\n- Only processes changed files\n- Maintains document-to-node mappings\n- Debounces file system events\n- Efficient link resolution caching\n\n### Optimization Features\n\n- **Caching**: Link resolution and document processing\n- **Debouncing**: File system events to prevent excessive updates\n- **Streaming**: Async iterators for large repositories\n- **Memory efficient**: Lazy loading and cleanup\n\n## Error Handling\n\nThe library provides comprehensive error handling:\n\n- **DirectoryNotFoundError**: When target directory doesn't exist\n- **FileNotFoundError**: When referenced files are missing\n- **MarkdownParsingError**: When markdown parsing fails\n- **RepositoryConfigurationError**: When configuration is invalid\n\nAll errors include helpful suggestions for resolution.\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes with tests\n4. Ensure all tests pass and linting is clean\n5. Submit a pull request\n\n## License\n\nMIT © [Ian Homer](https://github.com/adaptivekind)\n","readmeFilename":"README.md"}