{"_id":"embedoc","_rev":"25-b97195356c2f393a5d3034944ab25d83","name":"embedoc","dist-tags":{"latest":"0.14.9"},"versions":{"0.9.0":{"name":"embedoc","version":"0.9.0","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.9.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/cli.js"},"dist":{"shasum":"a31674aff79c9949dd5f93b07d5b7009b4c8199d","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.9.0.tgz","fileCount":63,"integrity":"sha512-0RXzuJFXW/Q6LsnhODFKQ0+IgZf65rznD6MspMQMRKqmQQvk72JzJ3w+7TM8k2P9tGL6v/G0NcQH8aiamYIA3Q==","signatures":[{"sig":"MEUCIH4wR4EMymXgQ3fT1Tk01jwEgxck7z7+uGe1XVb1DRr0AiEAplau9OA2XhFhz6O8BmMHXo0K1SF+d62nK8rtIMM08DQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":196632},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"fe4c30c04c93f670ba7de705b43968d514d19230","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/cli.js","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"_npmVersion":"10.8.2","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.0","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","gray-matter":"^4.0.3","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","vitest":"^2.1.0","typescript":"^5.7.2","@types/node":"^22.10.2","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.9.0_1767600292616_0.7543575176143644","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"embedoc","version":"0.9.1","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.9.1","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/cli.js"},"dist":{"shasum":"fa7f71e9e25e9e8831d7ebbdd749a2db7311bdff","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.9.1.tgz","fileCount":68,"integrity":"sha512-vXBVMyiLWMyQ40tV49E9l+ZzYaJmf5TdU8ZHfxWenu55AC6mgmtsVVklaq0qaufgkmVYeOIRn8AJ0xjkdxJgOg==","signatures":[{"sig":"MEQCIBdZGmWbaTjMtA4PiSJgaJmwlnUAzxtNGKLDneUZZnp+AiA5lBIP8XVTyNCh/NlefDOnDI/k0dMtoncyKqEIBb7CaA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230245},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"375df0bff9c153f1dac8dfecc1af37567df7a8a2","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/cli.js","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.8.2","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.0","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","gray-matter":"^4.0.3","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","vitest":"^2.1.0","typedoc":"^0.28.0","typescript":"^5.7.2","@types/node":"^22.10.2","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.9.1_1767830836851_0.8205257514458975","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"embedoc","version":"0.9.2","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.9.2","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/cli.js"},"dist":{"shasum":"a67630bd81c78fa40c1c540e5a07bd4e9c10690c","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.9.2.tgz","fileCount":68,"integrity":"sha512-9pHRPmioIcyjBxUj1JPTGNlD4bVI18skZjzBkTRFANk+FMQ9GAH8NIOx4ZKMLP7eGtTHwM/87y+K9pP5tiDlww==","signatures":[{"sig":"MEUCIBDR4N2B3KCP996Iu9qZh89WnGJmdslCQGjTx0BDC2GOAiEAnexRSEamKw8TNtz9uXx6+Nb/lbnX00pUZNFoarYJtVI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230396},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"78b4399f0a132eb96e484fb71a39831c76a0bf8d","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/cli.js","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.8.2","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.0","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","gray-matter":"^4.0.3","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","vitest":"^2.1.0","typedoc":"^0.28.0","typescript":"^5.7.2","@types/node":"^22.10.2","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.9.2_1768026477101_0.14595807444599673","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"embedoc","version":"0.10.0","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.10.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/cli.js"},"dist":{"shasum":"725fd40e0a88c10e02a23be283725d43be33b910","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.10.0.tgz","fileCount":68,"integrity":"sha512-Houk0vxIExvY66B+1+7fptFYXPapDmiVAATpBUHRXSLD1Ef1uq1nX+Ykv6J6AbNA7wglUM3DR+2yGZnfmAvu5Q==","signatures":[{"sig":"MEUCIQCfsM4RSZ/Cgpi6MSE7+2ogfgwgonEDlMNP16xbty5oJgIgfVSnjOSH6D4dnZqrSiUbk4G/axTYZCdJ6bY1WLv+lgU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":243344},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"bba1da60357086343516c80969a029b0b5efbfb6","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/cli.js","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.8.2","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.0","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","gray-matter":"^4.0.3","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","vitest":"^2.1.0","typedoc":"^0.28.0","typescript":"^5.7.2","@types/node":"^22.10.2","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.10.0_1768313140049_0.8105766357203541","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"embedoc","version":"0.10.1","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.10.1","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/cli.js"},"dist":{"shasum":"c1765cb2360c8c6a0cdd29e1fc0e395b0dcb3de7","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.10.1.tgz","fileCount":68,"integrity":"sha512-pTFMgnRg/P8Lproicey4AYdQJ2GXXzVA5X4t3W2A0iyCOXJCMlkBb6Cq0oG/MQcx6jMarcNQWo9Rap4MmlLZVg==","signatures":[{"sig":"MEUCIQDTrNCFph1rzNnNr37LMOIPbebkcl2QU1IjcaI94tM0HgIgQKd2hDbpeEkZcP0VwyKOlFiOvLaevw5UIc6I9Okbqq4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":245379},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"0c1b374abaa766e018976185e4707e697330b01f","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/cli.js","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.8.2","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.0","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","gray-matter":"^4.0.3","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","vitest":"^2.1.0","typedoc":"^0.28.0","typescript":"^5.7.2","@types/node":"^22.10.2","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.10.1_1768383237773_0.9984850824342562","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"name":"embedoc","version":"0.10.2","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.10.2","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/cli.js"},"dist":{"shasum":"b6bf5c03d9863d55a2dda108e47003425b795b07","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.10.2.tgz","fileCount":68,"integrity":"sha512-8nUKcYTpUK4nxYLwBOdlnZ2wi0VqdtvU8EB7Yt5TU/UvbqWVc/4D9IEeqhJyMFEmmrIsJ1uulqrtQ1KYlA1Dag==","signatures":[{"sig":"MEQCIDVXdZsxb+W1N5UDsQ7qKkEY3kuIiHBeGviZAiwor99yAiATRkRAuvE7i1CNX0+Nnt6iSjhM1Puebvc0Tq+UJhXZ4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":245717},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"f4c90b29eb2425c0af13b7ede03363a0b7530a5c","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/cli.js","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.8.2","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.0","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","gray-matter":"^4.0.3","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","vitest":"^2.1.0","typedoc":"^0.28.0","typescript":"^5.7.2","@types/node":"^22.10.2","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.10.2_1772334233742_0.19140709413321666","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"embedoc","version":"0.11.0","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.11.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/cli.js"},"dist":{"shasum":"61d48fea3835c824a355f203cdba09065b71f53e","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.11.0.tgz","fileCount":68,"integrity":"sha512-UW4I5DFU7JqOiZHHbHhyJ9v96TwyohNU3jO3GipKokg0Km1rjS9XsTP8Pd9wPx3eD1SZuFUNNmJ4wbRtIh3wLQ==","signatures":[{"sig":"MEQCIBJTaN4Q7ZuB41sMfNqlfUmmKvn5w31Zg1Qj9XWU4EiAAiAdE4hwEASurXlQPSIHtUJkm11XmZ1T6aii2F6Sr2A1cQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":268595},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"7f1f9f8e450d161256828d5bfeb2b3fff364577a","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/cli.js","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.8.2","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.0","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","gray-matter":"^4.0.3","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","vitest":"^2.1.0","typedoc":"^0.28.0","typescript":"^5.7.2","@types/node":"^22.10.2","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.11.0_1772504912271_0.08905190327692458","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"embedoc","version":"0.11.1","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.11.1","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/cli.js"},"dist":{"shasum":"632603177c0a1cc40a859dac484a441fcad1addb","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.11.1.tgz","fileCount":70,"integrity":"sha512-iUfvVWSGyR9As4R9LnjQNGZeCVX9kKhHrGF7b9WVQuKvkJqkHvtob8yMVOjYMK54V2YVp6Z4eXycBAgFL5KJzA==","signatures":[{"sig":"MEUCIBglrR9+opmOmOXuvfh//tmsK6pFDO3BI3eRjUpZURI2AiEAm/RBrRM7GTi3b44TaJCKhmS75XsW/hl4nLl58kbcUEk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":286458},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"e57e1065a468b015fafb929895c0bc47c8be59b7","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/cli.js","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test","cli-contracts:generate":"cli-contracts generate","cli-contracts:validate":"cli-contracts validate"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.8.2","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.0","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","gray-matter":"^4.0.3","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","vitest":"^2.1.0","typedoc":"^0.28.0","typescript":"^5.7.2","@types/node":"^22.10.2","cli-contracts":"^0.2.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.11.1_1777439796738_0.5401842669173427","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"embedoc","version":"0.11.2","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.11.2","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/cli.js"},"dist":{"shasum":"7a2d459e68d371988e67b84b4bdbc71d20244a4e","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.11.2.tgz","fileCount":70,"integrity":"sha512-WmidYUWt0o9Fz85UPPunBUr7AyNCTbCzjoE4PcJLZlxP8myJS49teIXI2k0Bv3cvWPHk158pfeqJtlb9xvPzag==","signatures":[{"sig":"MEQCIHnwlX9o+gTcqESftPEROm5ri++nvdGuimCbGiYdVt5aAiADpEYr2pJ8al5VHh3oCcYjEKKDco9XnsnYZ2aq400usQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":286458},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"a78154a3ca853636185ee8f43941a903b22b066b","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/cli.js","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test","cli-contracts:generate":"cli-contracts generate","cli-contracts:validate":"cli-contracts validate"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.8.2","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.0","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","gray-matter":"^4.0.3","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","vitest":"^2.1.0","typedoc":"^0.28.0","typescript":"^5.7.2","@types/node":"^22.10.2","cli-contracts":"^0.7.2","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.11.2_1779088718539_0.5494730801103875","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"embedoc","version":"0.12.0","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.12.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/cli.js"},"dist":{"shasum":"be1d457cf5b095ed49b48b63688f4318257176c4","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.12.0.tgz","fileCount":70,"integrity":"sha512-vLpLvg1aesSFRwW2xHejv5cbPBTl1B//B5cx3oclYBRx/G3v+zrLPMvX+lw0WNbQSRaEtBctCZ+Sy7lBRrJS7g==","signatures":[{"sig":"MEUCIQCY01vJAuEIHZBagReedh0kBCk+3WakSQLMWPHmvA87/wIgbGFCjZbEoBIwFaVX2gwZwq3H+xFIHK/X0/9NRNCBctg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":287002},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"81f0cec8869114f46760be708256cd1876e422a3","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/cli.js","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test","cli-contracts:generate":"cli-contracts generate","cli-contracts:validate":"cli-contracts validate"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.8.2","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.0","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","gray-matter":"^4.0.3","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","vitest":"^2.1.0","typedoc":"^0.28.0","typescript":"^5.7.2","@types/node":"^22.10.2","cli-contracts":"^0.30.2","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.12.0_1779276246814_0.3223541184180527","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"embedoc","version":"0.12.1","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.12.1","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/cli.js"},"dist":{"shasum":"92582bbde72624386b696955a0662567597dfb4e","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.12.1.tgz","fileCount":90,"integrity":"sha512-klBUB2uIp2n+K6C37fv1zM1kxAn1rAffLdof5YzLG6XlmE8b0YZ4C/gNjYVvzDDf5C52cF3w4VbwD2Uqt5s1Qw==","signatures":[{"sig":"MEQCIFM7zTLibMRbSMVxFxtjG8GVgs/LwbSgs5WQFSDviZkpAiBkaxoCZo0clGc+hbWcvk5CHI7avgBzo58Mm5k8Mq2Ciw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":297367},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"9934e5753d18ac732b624003f09c4b15835fc423","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/cli.js","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test","cli-contracts:generate":"cli-contracts generate","cli-contracts:validate":"cli-contracts validate"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.8.2","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.0","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","gray-matter":"^4.0.3","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","vitest":"^2.1.0","typedoc":"^0.28.0","typescript":"^5.7.2","@types/node":"^22.10.2","cli-contracts":"^0.30.2","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.12.1_1779287693224_0.8660548542483861","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"embedoc","version":"0.13.0","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.13.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/cli.js"},"dist":{"shasum":"d6e89fe9b97d31b2d87f4b2376e9fddc9f5a51c5","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.13.0.tgz","fileCount":90,"integrity":"sha512-unc9Ca2rSPZs/F757LpQLaR1RLe02TcL9QWCxwvBTZPrLh0r5RQDE9QUPyXU4rEvLb5EdGKTm2DEA3KG64avHg==","signatures":[{"sig":"MEQCIFw1ffcDuN9ntYH1Vs0zLcjNEu6VGgPoFHmnvDFFitWuAiBZD/d3cQgQxhuHzmQLNsu6xR+WUfJltAyypyipCY9Rfg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":297367},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"b32d0cc90ef5be529cc66fc69deaf2d93e648dd9","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/cli.js","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test","cli-contracts:generate":"cli-contracts generate","cli-contracts:validate":"cli-contracts validate"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.8.2","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.0","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","gray-matter":"^4.0.3","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.0","typescript":"^5.7.2","@types/node":"^22.10.2","cli-contracts":"^0.30.2","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.13.0_1779831567027_0.46025125931818867","host":"s3://npm-registry-packages-npm-production"}},"0.13.1":{"name":"embedoc","version":"0.13.1","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.13.1","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/cli.js"},"dist":{"shasum":"489e941dbc9230a59bfb28427e53f49d2d107cc2","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.13.1.tgz","fileCount":90,"integrity":"sha512-sH8GTTPp6JGRxJ+aHwXeDIFSWCuLdZXUGCxAz+6XaHa49HXRGZLNWdQr70VwGZ4l1bjPFNcZfiR1zfl/09yfBw==","signatures":[{"sig":"MEUCICy+OQB/VqE/PcUiImwtNignFNf1cZvYTg5ii8cEPTzoAiEAqtgdlOUE5MyGcexFfJItW9GP2VhB1W++eDIV1UmSlN4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":297367},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"b2f81688d9d4b139334550a900cbd4b3436e2850","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/cli.js","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test","cli-contracts:generate":"cli-contracts generate","cli-contracts:validate":"cli-contracts validate"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.8.2","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.0","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","gray-matter":"^4.0.3","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.0","typescript":"^5.7.2","@types/node":"^22.10.2","cli-contracts":"^0.30.2","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.13.1_1779836409277_0.19977395285887578","host":"s3://npm-registry-packages-npm-production"}},"0.13.2":{"name":"embedoc","version":"0.13.2","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.13.2","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/cli.js"},"dist":{"shasum":"4ddd35bafa04239f64552ee3f3839143a835c914","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.13.2.tgz","fileCount":90,"integrity":"sha512-rP7CkHyuEfk74j8aG1JFzHCOWO/6y2Sq8U8IlgBIhL40wbxNkwL/FzoKyuV796DgRRk4HzxFitVkPHXiDdV2JA==","signatures":[{"sig":"MEUCIApDYImCxgSV5EcDeT5iZT/PYkv9XyYKtFhZx3WvtyjgAiEArIicpWDS+PPFnMDiOJG4IjIZ+YwGceOIId+DFQxqZUQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":297367},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"2c5e573fa49201b7de9a9f5a0e670537c7866198","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/cli.js","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test","cli-contracts:generate":"cli-contracts generate","cli-contracts:validate":"cli-contracts validate"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.8.2","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.0","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","gray-matter":"^4.0.3","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.0","typescript":"^5.7.2","@types/node":"^22.10.2","cli-contracts":"^0.30.2","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.13.2_1779841994312_0.36899073416179506","host":"s3://npm-registry-packages-npm-production"}},"0.13.4":{"name":"embedoc","version":"0.13.4","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.13.4","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/cli.js"},"dist":{"shasum":"6dc7cd46eb14c3b2d75abbd38c35a4f462c95bb0","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.13.4.tgz","fileCount":90,"integrity":"sha512-Gt1tONcapN+zOt5XZ2vk1+EmBuYQgC8RsZni7Tn5RZQvF4lpbBhpA43GhYGPyjp+T9fgmDWAStnDkFc6pdmGHw==","signatures":[{"sig":"MEUCIAfr+r9BIqs0WLjZKbud6A4NIkf6aXtdM8lQmUiaZLy9AiEA5aZoJ4Y2QjaS5qTpZywiRqg9bNGT7p4xaLeX/Aa4Mbc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":297367},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"bbb4fbe0642291fcf32e0de62a8b687a7b7df119","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/cli.js","lint:fix":"eslint src --ext .ts --fix","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run test","cli-contracts:generate":"cli-contracts generate","cli-contracts:validate":"cli-contracts validate"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.8.2","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.0","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","gray-matter":"^4.0.3","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","vitest":"^4.1.7","typedoc":"^0.28.0","typescript":"^5.7.2","@types/node":"^22.10.2","cli-contracts":"^0.30.2","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.13.4_1779852797425_0.11506444426904894","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"embedoc","version":"0.14.0","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.14.0","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/embedoc.bundle.mjs"},"dist":{"shasum":"57ae6ab71c1e51bfe554a0b707ed2da93ed38ccc","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.14.0.tgz","fileCount":96,"integrity":"sha512-cSYV4Np8bAXgR97+MatiO95mBdaUDuW1Mh1/VN43DYCeqfwpY7vpCIo7syZxtykolRgMpKQ0Z9KaRGrC8aewGw==","signatures":[{"sig":"MEQCIGxk0TIeAD5LExbUebPZH7SUh5FDD5ZOB6KdKNUYr1gTAiBOJ+PLoqzeHZITPhBz0Hkd0yZdsgnUm7iauZZxdBHyMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3276791},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"5e32543f2b317cbf47da6f105763e418301800cc","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/cli.js","bundle":"node esbuild.bundle.mjs","test:ci":"vitest run","lint:fix":"eslint src --ext .ts --fix","bundle:min":"node esbuild.bundle.mjs --minify","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run bundle:min && npm run test","cli-contracts:generate":"cli-contracts generate","cli-contracts:validate":"cli-contracts validate"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.9.8","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.0","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","gray-matter":"^4.0.3","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","vitest":"^4.1.7","esbuild":"^0.28.0","typedoc":"^0.28.0","typescript":"^5.7.2","@types/node":"^22.10.2","cli-contracts":"^0.32.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.14.0_1780404770040_0.3085782690698431","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"embedoc","version":"0.14.1","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.14.1","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/embedoc.bundle.mjs"},"dist":{"shasum":"a3a3ae1a911ba256a746b996c3f9e1c36175589d","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.14.1.tgz","fileCount":96,"integrity":"sha512-8B18G/j49peqcN+1CIhVlXL6it4nlPz23G2q/L3VymG9pdvGyrPng2QGYgWLglQEx7FomVIeRyF/4xFxiMPZfQ==","signatures":[{"sig":"MEUCIHa1lXMIHsWnbZO9W8DKPQtu9SwDTmZ6GxrhnVDRtjF5AiEA2/s6+9yrtdZM7/wrPk/jgS/rtTL+ZxzK9SFKkoaAaBA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2640371},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"821738aac9b88938fbffc71a8494241503a8ddf7","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/cli.js","bundle":"node esbuild.bundle.mjs","test:ci":"vitest run","lint:fix":"eslint src --ext .ts --fix","bundle:min":"node esbuild.bundle.mjs --minify","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run bundle:min && npm run test","cli-contracts:generate":"cli-contracts generate","cli-contracts:validate":"cli-contracts validate"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.9.8","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.0","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","gray-matter":"^4.0.3","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","vitest":"^4.1.7","esbuild":"^0.28.0","typedoc":"^0.28.0","typescript":"^5.7.2","@types/node":"^22.10.2","cli-contracts":"^0.32.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.14.1_1780412761867_0.34520533781523244","host":"s3://npm-registry-packages-npm-production"}},"0.14.2":{"name":"embedoc","version":"0.14.2","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.14.2","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/embedoc.bundle.mjs"},"dist":{"shasum":"5be94f875dc685bc6d7e1de8a63a7dc69a44b291","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.14.2.tgz","fileCount":96,"integrity":"sha512-n3PLurZyS97csVrrDwfXw86eLlo3bBYgqptjqJ4GAX9Wq3cDtKuoquf/d54x0vY36vn+AK2/Yv8Kx5s/7BuDuw==","signatures":[{"sig":"MEQCIGznSfLYMXhYlFrzvLLDIIuxKoPcXY/8Ol2jWTNYyOgaAiBRQWI8IPM6GQ5uR/hManu3El80GNBT7LGdt0RNXpiK0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2384994},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"b6f73b74714fe49e1d55a563d5d4f2e22a24b2d4","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/cli.js","bundle":"node esbuild.bundle.mjs","test:ci":"vitest run","lint:fix":"eslint src --ext .ts --fix","bundle:min":"node esbuild.bundle.mjs --minify","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run bundle:min && npm run test","cli-contracts:generate":"cli-contracts generate","cli-contracts:validate":"cli-contracts validate"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"overrides":{"js-yaml":"^4.1.2"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.9.8","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.2","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","vitest":"^4.1.7","esbuild":"^0.28.0","typedoc":"^0.28.0","typescript":"^5.7.2","@types/node":"^22.10.2","cli-contracts":"^0.32.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.14.2_1782048714356_0.355234231499568","host":"s3://npm-registry-packages-npm-production"}},"0.14.3":{"name":"embedoc","version":"0.14.3","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.14.3","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/embedoc.bundle.mjs"},"dist":{"shasum":"fb646e677220ba42865b84038a000bd3e1327ff8","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.14.3.tgz","fileCount":96,"integrity":"sha512-R/KalYZrDCZI4mBv6oBsGMHM16MZZxDSQroA2Bs8HQ0k1ihDzgOYwuZFYFsVQNSJMpdSFBmCp+GuMgSkq7bjvQ==","signatures":[{"sig":"MEUCIHFui1ga1autXHFHG73Hg3f6QUCvN6HXkY/1pV9ZHg1cAiEAskgdp2w0B5tMgd2469knUdx/jA+nN+M0nvnKxlYI/qo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2389889},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"fa3f9381a215cf16d6c1cd3dbbe06f9c03db84bb","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src","test":"vitest run","build":"tsc","start":"node dist/cli.js","bundle":"node esbuild.bundle.mjs","test:ci":"vitest run","lint:fix":"eslint src --fix","bundle:min":"node esbuild.bundle.mjs --minify","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run bundle:min && npm run test","cli-contracts:generate":"cli-contracts generate","cli-contracts:validate":"cli-contracts validate"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"overrides":{"js-yaml":"^4.1.2"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.9.8","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.2","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.0","vitest":"^4.1.7","esbuild":"^0.28.0","globals":"^17.8.0","typedoc":"^0.28.0","@eslint/js":"^10.0.1","typescript":"^5.7.2","@types/node":"^22.10.2","cli-contracts":"^0.32.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.14.3_1785130480779_0.8245993787651533","host":"s3://npm-registry-packages-npm-production"}},"0.14.4":{"name":"embedoc","version":"0.14.4","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.14.4","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/embedoc.bundle.mjs"},"dist":{"shasum":"c7bce757e49261682ad442baf3d951f052545f88","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.14.4.tgz","fileCount":96,"integrity":"sha512-wMZEekgynngYPyX938PhglWHPDeY5NJ5G65RRF0OR2i9zkBk65VD/mHPxrxTAvhPfzHLsWrMR/RZtEqA2eJ31A==","signatures":[{"sig":"MEUCIQDHu9FYi3MUfpAOLcxSS+UsK4TSHUsw+10clVpm7PVJJwIgBuBvYqAErHW/3vYKEdHT9aqtLmpJ/PDmBwcyhSNwAMI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2389889},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"fdbe0b1677493182197b59ff40f25f8f7ea01ec6","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src","test":"vitest run","build":"tsc","start":"node dist/cli.js","bundle":"node esbuild.bundle.mjs","test:ci":"vitest run","lint:fix":"eslint src --fix","bundle:min":"node esbuild.bundle.mjs --minify","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run bundle:min && npm run test","cli-contracts:generate":"cli-contracts generate","cli-contracts:validate":"cli-contracts validate"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"overrides":{"js-yaml":"^4.1.2"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.9.8","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.2","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.0","vitest":"^4.1.7","esbuild":"^0.28.0","globals":"^17.8.0","typedoc":"^0.28.0","@eslint/js":"^10.0.1","typescript":"^5.7.2","@types/node":"^22.10.2","cli-contracts":"^0.32.0","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.14.4_1785284861228_0.08934716783608376","host":"s3://npm-registry-packages-npm-production"}},"0.14.5":{"name":"embedoc","version":"0.14.5","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.14.5","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/embedoc.bundle.mjs"},"dist":{"shasum":"9975865989c274669ab7dd02f19634fbd9a5e57c","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.14.5.tgz","fileCount":96,"integrity":"sha512-7DTuQeNlI/FEywXPPMau/JBoT2m18r+7CVlpfUg0JBLHOI+VJmo+Pe4UeI2ffULS58Q5Q1NSH0JTjS+PrJH63g==","signatures":[{"sig":"MEUCIHRxsoiqTwCARjdNQOvln/Mq3astj6G1QqQf210isqfQAiEAx6ITr0NEYsJDgHb5FseicoI7xpdvDga3BTTCZzqOx8U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2389798},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"82a634c12d6e1fe4acc9355e2eee5512131e05d0","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src","test":"vitest run","build":"tsc","start":"node dist/cli.js","bundle":"node esbuild.bundle.mjs","test:ci":"vitest run","lint:fix":"eslint src --fix","bundle:min":"node esbuild.bundle.mjs --minify","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run bundle:min && npm run test","cli-contracts:generate":"cli-contracts generate","cli-contracts:validate":"cli-contracts validate"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"overrides":{"js-yaml":"^4.1.2"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.9.8","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.2","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.0","vitest":"^4.1.7","esbuild":"^0.28.0","globals":"^17.8.0","typedoc":"^0.28.0","@eslint/js":"^10.0.1","typescript":"^5.7.2","@types/node":"^22.10.2","cli-contracts":"^0.34.6","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.14.5_1785289411481_0.6151168981823754","host":"s3://npm-registry-packages-npm-production"}},"0.14.6":{"name":"embedoc","version":"0.14.6","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.14.6","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/embedoc.bundle.mjs"},"dist":{"shasum":"96dab3d3834745e8cf93fbc00ec0d8febefc481f","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.14.6.tgz","fileCount":96,"integrity":"sha512-1cUoh0vuocjUP6yeMVuB8rVOX/nYfv4WSyt1M0nynQ7wRiFZr90POft505w4BKA/Oh8B0oSVl1A4SjcQdPNrlA==","signatures":[{"sig":"MEYCIQC8EEzaU9HbXjn6QKNCtTFeA7TG4fGCOs3GLhGVt7KG7gIhAJ3lS/prpcgqlWhMNEZ+oR0O8/i3PCAo68fy25IrpUcn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2393519},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"16ca21f1426afbb42600a6d0572a537afa1ccac9","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src","test":"vitest run","build":"tsc","start":"node dist/cli.js","bundle":"node esbuild.bundle.mjs","test:ci":"vitest run","lint:fix":"eslint src --fix","bundle:min":"node esbuild.bundle.mjs --minify","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run bundle:min && npm run test","cli-contracts:generate":"cli-contracts generate","cli-contracts:validate":"cli-contracts validate"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"overrides":{"js-yaml":"^4.1.2"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.9.8","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.2","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.0","vitest":"^4.1.7","esbuild":"^0.28.0","globals":"^17.8.0","typedoc":"^0.28.0","@eslint/js":"^10.0.1","typescript":"^5.7.2","@types/node":"^22.10.2","cli-contracts":"^0.34.6","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.14.6_1785993129866_0.6903296174884543","host":"s3://npm-registry-packages-npm-production"}},"0.14.7":{"name":"embedoc","version":"0.14.7","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.14.7","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/embedoc.bundle.mjs"},"dist":{"shasum":"9c5fa43435825aa334d5c7a5edf7304e76ab2f1e","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.14.7.tgz","fileCount":96,"integrity":"sha512-0MvMHaKlwZ2MKx0Xz3Ka03UrdRfT9sUljwKYoQwezxYyyawR6HbC18t4JMHAV3EfDIRhMiFawQgDE9kFKGtiEg==","signatures":[{"sig":"MEQCICsaUkXH5U6kDAd1+LA7ZiENhEZ8CA2NgiNYXpKZmIYzAiBCEl3INgVBvhSKtQ3ngCmigUAdPtU0KGRB5ATLM1SmcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2393573},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"969fafd0e10c6464e1b0b110ee4d992455b52444","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src","test":"vitest run","build":"tsc","start":"node dist/cli.js","bundle":"node esbuild.bundle.mjs","test:ci":"vitest run","lint:fix":"eslint src --fix","bundle:min":"node esbuild.bundle.mjs --minify","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run bundle:min && npm run test","cli-contracts:generate":"cli-contracts generate","cli-contracts:validate":"cli-contracts validate"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"overrides":{"js-yaml":"^4.1.2"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.9.8","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.1.2","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^5.6.0","handlebars":"^4.7.8","picocolors":"^1.1.1","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.0","vitest":"^4.1.7","esbuild":"^0.28.0","globals":"^17.8.0","typedoc":"^0.28.0","@eslint/js":"^10.0.1","typescript":"^5.7.2","@types/node":"^22.10.2","cli-contracts":"^0.34.6","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.14.7_1787719591511_0.22444502323552817","host":"s3://npm-registry-packages-npm-production"}},"0.14.8":{"name":"embedoc","version":"0.14.8","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","_id":"embedoc@0.14.8","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"homepage":"https://github.com/foo-ogawa/embedoc#readme","bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"bin":{"embedoc":"dist/embedoc.bundle.mjs"},"dist":{"shasum":"958cc5adf39533174486570598fbc0cbb2d2f4e5","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.14.8.tgz","fileCount":96,"integrity":"sha512-8K9a15glMFUNLge/Bera9g+9eopfq/Xd963qgapBmpXaNhUg0fVNKSGlmn7yeWYi7IIQqgp0oAwUS3DvoQ1xZw==","signatures":[{"sig":"MEYCIQDsuCdxAfa/S2tMppKE7seREsBgYww0V3bApsX05iNIcwIhAMtvnb7tsLRrH/RxHphTdbFhEEMQLu4ouGAM3AYg+xCO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2410704},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"457a5a7aeaa558d2deb36f96948a78a510755325","scripts":{"dev":"tsc --watch","docs":"typedoc","lint":"eslint src","test":"vitest run","build":"tsc","start":"node dist/cli.js","bundle":"node esbuild.bundle.mjs","test:ci":"vitest run","lint:fix":"eslint src --fix","bundle:min":"node esbuild.bundle.mjs --minify","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run build && npm run bundle:min && npm run test","cli-contracts:generate":"cli-contracts generate","cli-contracts:validate":"cli-contracts validate"},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"overrides":{"vitest":"^4.1.11","js-yaml":"^4.3.2","csv-parse":"^7.0.2"},"repository":{"url":"git+https://github.com/foo-ogawa/embedoc.git","type":"git"},"workspaces":["examples"],"_npmVersion":"10.9.8","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"tsx":"^4.19.2","glob":"^11.0.0","js-yaml":"^4.3.2","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^7.0.2","handlebars":"^4.7.8","picocolors":"^1.1.1","better-sqlite3":"^11.7.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.0","vitest":"^4.1.11","esbuild":"^0.28.0","globals":"^17.8.0","typedoc":"^0.28.0","@eslint/js":"^10.0.1","typescript":"^5.7.2","@types/node":"^22.10.2","cli-contracts":"^0.34.6","@types/js-yaml":"^4.0.9","@types/better-sqlite3":"^7.6.12","typedoc-plugin-markdown":"^4.9.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/embedoc_0.14.8_1788999575476_0.5750306906348739","host":"s3://npm-registry-packages-npm-production"}},"0.14.9":{"name":"embedoc","version":"0.14.9","description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","type":"module","workspaces":["examples"],"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"bin":{"embedoc":"dist/embedoc.bundle.mjs"},"scripts":{"build":"tsc","bundle":"node esbuild.bundle.mjs","bundle:min":"node esbuild.bundle.mjs --minify","dev":"tsc --watch","start":"node dist/cli.js","lint":"eslint src","lint:fix":"eslint src --fix","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","docs":"typedoc","cli-contracts:generate":"cli-contracts generate","cli-contracts:validate":"cli-contracts validate","prepublishOnly":"npm run lint && npm run build && npm run bundle:min && npm run test","test:ci":"vitest run"},"keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"author":{"name":"foo-ogawa"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/foo-ogawa/embedoc.git"},"bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"homepage":"https://github.com/foo-ogawa/embedoc#readme","engines":{"node":">=18.0.0"},"dependencies":{"better-sqlite3":"^11.7.0","chokidar":"^4.0.3","commander":"^13.0.0","csv-parse":"^7.0.2","glob":"^11.0.0","handlebars":"^4.7.8","js-yaml":"^4.3.2","picocolors":"^1.1.1","tsx":"^4.19.2"},"devDependencies":{"@eslint/js":"^10.0.1","@types/better-sqlite3":"^7.6.12","@types/js-yaml":"^4.0.9","@types/node":"^22.10.2","@typescript-eslint/eslint-plugin":"^8.0.0","@typescript-eslint/parser":"^8.0.0","cli-contracts":"^0.34.6","esbuild":"^0.28.0","eslint":"^10.8.0","globals":"^17.8.0","typedoc":"^0.28.0","typedoc-plugin-markdown":"^4.9.0","typescript":"^5.7.2","vitest":"^4.1.11"},"overrides":{"js-yaml":"^4.3.2","vitest":"^4.1.11"},"_id":"embedoc@0.14.9","gitHead":"08193424abce45b21b9b188345b60414758c22b7","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-prNr1SRvLXmMzGqg8Lga7iO8fSzKB6rpjDXcaseQr4wMJYSyDXWffBGDzZ21UP6KEJrf7Glm3jBvZTwZ3e1qUw==","shasum":"8e2c656b106fb5090e2b607e61d6b281eda9f4db","tarball":"https://registry.npmjs.org/embedoc/-/embedoc-0.14.9.tgz","fileCount":96,"unpackedSize":2411050,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDuBd73VTzWj8PrMWrcneGHnq4k1PvUcly5Cj7aSpqT+QIhAJFAyWHa7w2i9cm8OzZnDmx6YYvfUQqKgAvHCxj9OmfK"}]},"_npmUser":{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"},"directories":{},"maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/embedoc_0.14.9_1789002213291_0.7846558029283135"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-05T08:04:52.512Z","modified":"2026-09-10T01:03:33.611Z","0.9.0":"2026-01-05T08:04:52.778Z","0.9.1":"2026-01-08T00:07:16.990Z","0.9.2":"2026-01-10T06:27:57.260Z","0.10.0":"2026-01-13T14:05:40.190Z","0.10.1":"2026-01-14T09:33:57.928Z","0.10.2":"2026-03-01T03:03:53.898Z","0.11.0":"2026-03-03T02:28:32.450Z","0.11.1":"2026-04-29T05:16:36.887Z","0.11.2":"2026-05-18T07:18:38.706Z","0.12.0":"2026-05-20T11:24:06.959Z","0.12.1":"2026-05-20T14:34:53.401Z","0.13.0":"2026-05-26T21:39:27.214Z","0.13.1":"2026-05-26T23:00:09.448Z","0.13.2":"2026-05-27T00:33:14.460Z","0.13.4":"2026-05-27T03:33:17.579Z","0.14.0":"2026-06-02T12:52:50.184Z","0.14.1":"2026-06-02T15:06:02.033Z","0.14.2":"2026-06-21T13:31:54.584Z","0.14.3":"2026-07-27T05:34:40.987Z","0.14.4":"2026-07-29T00:27:41.405Z","0.14.5":"2026-07-29T01:43:31.687Z","0.14.6":"2026-08-06T05:12:10.071Z","0.14.7":"2026-08-26T04:46:31.678Z","0.14.8":"2026-09-10T00:19:35.675Z","0.14.9":"2026-09-10T01:03:33.453Z"},"bugs":{"url":"https://github.com/foo-ogawa/embedoc/issues"},"author":{"name":"foo-ogawa"},"license":"MIT","homepage":"https://github.com/foo-ogawa/embedoc#readme","keywords":["markdown","documentation","generator","template","in-place","embed","datasource","sqlite","csv","json","yaml","code-generation","docs","automation","watch","incremental-build","dependency-graph"],"repository":{"type":"git","url":"git+https://github.com/foo-ogawa/embedoc.git"},"description":"In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.","maintainers":[{"name":"foo-ogawa","email":"ogawa@foo-log.co.jp"}],"readme":"# embedoc\n\n[![npm version](https://badge.fury.io/js/embedoc.svg)](https://www.npmjs.com/package/embedoc)　[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n**In-Place Document Generator** - A tool that auto-updates marker blocks in documents and source code while preserving manually edited sections.\n\n\n## Overview\n\nembedoc provides \"In-Place template update\" functionality that auto-updates specific blocks (regions enclosed by markers) within documents or source code while preserving manually edited sections.\n\n```markdown\n# Manually written heading\n\nThis part can be manually edited.\n\n<!--@embedoc:table_columns id=\"users\"-->\n(This content is auto-generated)\n<!--@embedoc:end-->\n\nThis part can also be manually edited.\n```\n\n**Auto-generated and manually edited sections coexist in the same file** without separating source and built files.\n\n## Features\n\n- **In-Place Updates**: Auto-generated and manually edited sections coexist in the same file\n- **Multiple Comment Formats**: Supports HTML, block, line, hash, SQL comment formats\n- **Programmable Embeds**: Write marker embedding logic in TypeScript (no compilation required)\n- **Multiple Datasources**: SQLite, CSV, JSON, YAML, and glob support\n- **Inline Datasources**: Define data directly in documents with `@embedoc-data` markers\n- **File Generation**: Generate new files in bulk using Handlebars templates\n- **Watch Mode**: Monitor file changes and auto-rebuild with incremental builds\n- **Dependency Tracking**: Automatic dependency graph analysis for efficient rebuilds\n\n## Installation\n\n```bash\nnpm install embedoc\n# or\npnpm add embedoc\n# or\nyarn add embedoc\n```\n\n## Quick Start\n\n### 1. Initialize Project\n\n```bash\nnpx embedoc init\n```\n\nThis creates:\n- `embedoc.config.yaml` - configuration file\n- `.embedoc/renderers/index.ts` - renderer registration\n- `.embedoc/datasources/index.ts` - custom datasource registration\n- `.embedoc/templates/` - Handlebars templates directory\n\nIf `package.json` exists, npm scripts are also added:\n- `npm run embedoc:build` - build documents\n- `npm run embedoc:watch` - watch mode\n- `npm run embedoc:generate` - run generators\n\n### 2. Configure\n\nEdit `embedoc.config.yaml` to set your targets and datasources:\n\n```yaml\n# embedoc.config.yaml\nversion: \"1.0\"\n\ntargets:\n  - pattern: \"./docs/**/*.md\"\n    comment_style: html\n    exclude:\n      - \"**/node_modules/**\"\n\ndatasources:\n  metadata_db:\n    type: sqlite\n    path: \"./data/metadata.db\"\n```\n\n### 3. Create a Renderer\n\n```typescript\n// .embedoc/renderers/table_columns.ts\nimport { defineEmbed } from 'embedoc';\n\nexport default defineEmbed({\n  dependsOn: ['metadata_db'],\n\n  async render(ctx) {\n    const { id } = ctx.params;\n\n    if (!id) {\n      return { content: '❌ Error: id parameter is required' };\n    }\n\n    const columns = await ctx.datasources['metadata_db']!.query(\n      `SELECT * FROM columns WHERE table_name = ? ORDER BY ordinal_position`,\n      [id]\n    );\n\n    const markdown = ctx.markdown.table(\n      ['Column', 'Type', 'NOT NULL', 'Default', 'Comment'],\n      columns.map((col) => [\n        col['column_name'],\n        col['data_type'],\n        col['not_null'] ? '✔' : '',\n        col['default_value'] ?? 'NULL',\n        col['column_comment'] ?? '',\n      ])\n    );\n\n    return { content: markdown };\n  },\n});\n```\n\nRegister your renderer in `.embedoc/renderers/index.ts`:\n\n```typescript\n// .embedoc/renderers/index.ts\nimport tableColumns from './table_columns.ts';\n\nexport const embeds = {\n  table_columns: tableColumns,\n};\n```\n\n> **Note**: embedoc can directly import TypeScript files, so **no compilation is required**.\n\n### 4. Add Markers to Your Document\n\n```markdown\n# Users Table\n\n<!--@embedoc:table_columns id=\"users\"-->\n<!--@embedoc:end-->\n```\n\n### 5. Run Build\n\n```bash\nnpx embedoc build\n# or, if scripts were added to package.json:\nnpm run embedoc:build\n```\n\n---\n\n## CLI Commands\n\n> **Full CLI reference:** [docs/cli-reference.md](./docs/cli-reference.md) | **Machine-readable contract:** [cli-contract.yaml](./cli-contract.yaml)\n\n```bash\n# Initialize project (creates config, .embedoc/ directory, updates package.json)\nembedoc init\nembedoc init --force   # overwrite existing files\n\n# Build all files\nembedoc build\nembedoc build --config embedoc.config.yaml\n\n# Build specific files only\nembedoc build ./path/to/file.md\n\n# Generate new files (specific datasource)\nembedoc generate --datasource tables\n\n# Generate with specific template\nembedoc generate --datasource tables --generator table_doc.hbs\n\n# Run all datasource generators\nembedoc generate --all\n\n# Watch mode (incremental build)\nembedoc watch\nembedoc watch --config embedoc.config.yaml\n\n# Debug dependency graph\nembedoc watch --debug-deps\n\n# Dry run (no file writes)\nembedoc build --dry-run\n\n# Verbose output\nembedoc build --verbose\n```\n\nAll commands can be run directly with `npx embedoc <command>` or via package.json scripts after `embedoc init`.\n\n---\n\n## Configuration File\n\n### Full Configuration Reference\n\n```yaml\n# embedoc.config.yaml\nversion: \"1.0\"\n\n# Target files\ntargets:\n  - pattern: \"./docs/**/*.md\"\n    comment_style: html\n    exclude:\n      - \"**/node_modules/**\"\n      - \"**/.git/**\"\n  - pattern: \"./src/**/*.ts\"\n    comment_style: block\n  - pattern: \"./scripts/**/*.py\"\n    comment_style: hash\n  - pattern: \"./db/**/*.sql\"\n    comment_style: sql\n\n# Custom comment style definitions (optional)\ncomment_styles:\n  html:\n    start: \"<!--\"\n    end: \"-->\"\n  block:\n    start: \"/*\"\n    end: \"*/\"\n  line:\n    start: \"//\"\n    end: \"\"\n  hash:\n    start: \"#\"\n    end: \"\"\n  sql:\n    start: \"--\"\n    end: \"\"\n  # Custom formats\n  lua:\n    start: \"--[[\"\n    end: \"]]\"\n\n# Datasource definitions\ndatasources:\n  # Schema datasource with generators\n  tables:\n    type: sqlite\n    path: \"./data/metadata.db\"\n    query: \"SELECT * FROM tables\"\n    generators:\n      - output_path: \"./docs/tables/{table_name}.md\"\n        template: table_doc.hbs\n        overwrite: false\n  \n  # Connection datasource (for queries from embeds)\n  metadata_db:\n    type: sqlite\n    path: \"./data/metadata.db\"\n  \n  # CSV datasource\n  api_endpoints:\n    type: csv\n    path: \"./data/endpoints.csv\"\n    encoding: utf-8\n  \n  # JSON datasource\n  config:\n    type: json\n    path: \"./data/config.json\"\n  \n  # YAML datasource\n  settings:\n    type: yaml\n    path: \"./data/settings.yaml\"\n  \n  # Glob datasource\n  doc_files:\n    type: glob\n    pattern: \"./docs/**/*.md\"\n\n# Renderer directory (TypeScript) - default: \".embedoc/renderers\"\nrenderers_dir: \".embedoc/renderers\"\n\n# Custom datasource types directory - default: \".embedoc/datasources\"\ndatasources_dir: \".embedoc/datasources\"\n\n# Template directory (Handlebars) - default: \".embedoc/templates\"\ntemplates_dir: \".embedoc/templates\"\n\n# Output settings\noutput:\n  encoding: utf-8\n  line_ending: lf  # or \"crlf\"\n\n# Inline datasource configuration\ninline_datasource:\n  enabled: true\n  maxBytes: 10240           # Max size per inline block (default: 10KB)\n  allowedFormats:           # Allowed formats (default: all)\n    - yaml\n    - json\n    - csv\n    - table\n    - text\n  conflictPolicy: warn      # warn | error | prefer_external\n  stripCodeFences: true     # Auto-strip ```yaml ... ``` fences\n  stripPatterns:            # Custom patterns to strip (regex)\n    - '^```\\w*\\s*\\n?'\n    - '\\n?```\\s*$'\n\n# GitHub integration\n# Used as base URL when generating repository links in embeds\n# (e.g., ctx.markdown.link('file.ts', github.base_url + 'src/file.ts'))\ngithub:\n  base_url: \"https://github.com/owner/repo/blob/main/\"\n```\n\n---\n\n## Marker Syntax\n\n### Basic Syntax\n\n```\n{comment_start}@embedoc:{embed_name} {attr1}=\"{value1}\" {attr2}=\"{value2}\"{comment_end}\n(auto-generated content)\n{comment_start}@embedoc:end{comment_end}\n```\n\n### Supported Comment Formats\n\n| Format | Start Marker | End Marker | Target Files |\n|--------|-------------|------------|--------------|\n| `html` | `<!--` | `-->` | `.md`, `.html`, `.xml` |\n| `block` | `/*` | `*/` | `.js`, `.ts`, `.css`, `.java`, `.c` |\n| `line` | `//` | (newline) | `.js`, `.ts`, `.java`, `.c`, `.go` |\n| `hash` | `#` | (newline) | `.py`, `.rb`, `.sh`, `.yaml` |\n| `sql` | `--` | (newline) | `.sql` |\n\n### Examples by Format\n\n**Markdown / HTML**\n```markdown\n<!--@embedoc:table_columns id=\"users\"-->\n| Column | Type | Comment |\n| --- | --- | --- |\n| id | integer | User ID |\n<!--@embedoc:end-->\n```\n\n**TypeScript / JavaScript (block)**\n```typescript\n/*@embedoc:type_definition id=\"User\"*/\nexport interface User {\n  id: number;\n  name: string;\n}\n/*@embedoc:end*/\n```\n\n**TypeScript / JavaScript (line)**\n```typescript\n//@embedoc:imports id=\"api-client\"\nimport { ApiClient } from './api';\nimport { UserService } from './services/user';\n//@embedoc:end\n```\n\n**Python**\n```python\n#@embedoc:constants id=\"config\"\nAPI_URL = \"https://api.example.com\"\nTIMEOUT = 30\n#@embedoc:end\n```\n\n**SQL**\n```sql\n--@embedoc:view_definition id=\"active_users\"\nCREATE VIEW active_users AS\nSELECT * FROM users WHERE status = 'active';\n--@embedoc:end\n```\n\n### Inline Mode\n\nUse `inline=\"true\"` to prevent newlines around the generated content. Useful for embedding values within table cells or inline text:\n\n```markdown\n| Name | Value |\n|------|-------|\n| User | <!--@embedoc:inline_value datasource=\"data\" path=\"name\" inline=\"true\"-->John<!--@embedoc:end--> |\n```\n\nWithout `inline=\"true\"`, the output would include newlines and break the table formatting.\n\n### Variable References in Attributes\n\nUse `${...}` syntax in attribute values to reference Frontmatter properties or inline datasources.\n\n```yaml\n---\ndoc_id: \"users\"\nschema: \"public\"\n---\n```\n\n```markdown\n<!--@embedoc:table_columns id=\"${doc_id}\"-->\n<!--@embedoc:end-->\n\n<!--@embedoc:table_info id=\"${schema}.${doc_id}\"-->\n<!--@embedoc:end-->\n```\n\n---\n\n## Embed API\n\n### Basic Structure\n\n```typescript\nimport { defineEmbed } from 'embedoc';\n\nexport default defineEmbed({\n  // Datasources this embed depends on (for dependency tracking)\n  dependsOn: ['metadata_db'],\n  \n  // Render function\n  async render(ctx) {\n    // ctx.params: Marker attribute values\n    // ctx.frontmatter: Frontmatter YAML data\n    // ctx.datasources: Access to datasources\n    // ctx.markdown: Markdown helpers\n    // ctx.filePath: Current file path being processed\n    \n    return { content: 'Generated content' };\n  }\n});\n```\n\n### Context Object\n\n| Property | Type | Description |\n|----------|------|-------------|\n| `ctx.params` | `Record<string, string>` | Marker attribute values |\n| `ctx.frontmatter` | `Record<string, unknown>` | Document frontmatter data |\n| `ctx.datasources` | `Record<string, Datasource>` | Available datasources |\n| `ctx.markdown` | `MarkdownHelper` | Markdown generation helpers |\n| `ctx.filePath` | `string` | Current file path |\n| `ctx.existingContent` | `string \\| undefined` | Existing content between markers (for error recovery) |\n\n### Error Recovery / Graceful Degradation\n\nReturn `null` or `undefined` from `render()` to keep existing content unchanged. This is useful when external data sources are unavailable.\n\n```typescript\nasync render(ctx) {\n  try {\n    const data = await fetchFromDatabase(ctx.params['id']);\n    return { content: formatData(data) };\n  } catch (error) {\n    // On error, keep existing content\n    return { content: null };\n  }\n}\n```\n\n### Markdown Helpers\n\n```typescript\n// Table\nctx.markdown.table(\n  ['Column', 'Type', 'Description'],\n  [\n    ['id', 'integer', 'Primary key'],\n    ['name', 'varchar', 'User name'],\n  ]\n);\n\n// List\nctx.markdown.list(['Item 1', 'Item 2', 'Item 3'], false);  // unordered\nctx.markdown.list(['First', 'Second', 'Third'], true);     // ordered\n\n// Code block\nctx.markdown.codeBlock('const x = 1;', 'typescript');\n\n// Link\nctx.markdown.link('Click here', 'https://example.com');\n\n// Heading\nctx.markdown.heading('Section Title', 2);  // ## Section Title\n\n// Inline formatting\nctx.markdown.bold('Important');    // **Important**\nctx.markdown.italic('Emphasis');   // *Emphasis*\nctx.markdown.checkbox(true);       // [x]\nctx.markdown.checkbox(false);      // [ ]\n```\n\n---\n\n## Datasources\n\n### SQLite\n\n```yaml\ndatasources:\n  metadata_db:\n    type: sqlite\n    path: \"./data/metadata.db\"\n    # Optional: predefined query for generators\n    query: \"SELECT * FROM tables\"\n```\n\nUsage in embed:\n```typescript\nconst rows = await ctx.datasources['metadata_db'].query(\n  'SELECT * FROM users WHERE id = ?',\n  [userId]\n);\n```\n\n### CSV\n\n```yaml\ndatasources:\n  endpoints:\n    type: csv\n    path: \"./data/endpoints.csv\"\n    encoding: utf-8  # optional, default: utf-8\n```\n\n### JSON\n\n```yaml\ndatasources:\n  config:\n    type: json\n    path: \"./data/config.json\"\n```\n\n### YAML\n\n```yaml\ndatasources:\n  settings:\n    type: yaml\n    path: \"./data/settings.yaml\"\n```\n\n### Glob (File Listings)\n\n```yaml\ndatasources:\n  doc_files:\n    type: glob\n    pattern: \"./docs/**/*.md\"\n```\n\nReturns array of file info objects with `path`, `name`, `ext`, etc.\n\n---\n\n## Inline Datasources\n\nDefine data directly in documents using `@embedoc-data` markers.\n\n### Basic Syntax\n\n```markdown\n<!--@embedoc-data:datasource_name format=\"yaml\"-->\n- name: Alice\n  age: 25\n- name: Bob\n  age: 30\n<!--@embedoc-data:end-->\n```\n\n### Supported Formats\n\n| Format | Description |\n|--------|-------------|\n| `yaml` | YAML array or object (default) |\n| `json` | JSON array or object |\n| `csv` | CSV with header row |\n| `table` | Markdown table |\n| `text` | Plain text |\n\n### Format Examples\n\n**YAML (default)**\n```markdown\n<!--@embedoc-data:users format=\"yaml\"-->\n- id: 1\n  name: Alice\n  email: alice@example.com\n- id: 2\n  name: Bob\n  email: bob@example.com\n<!--@embedoc-data:end-->\n```\n\n**JSON**\n```markdown\n<!--@embedoc-data:config format=\"json\"-->\n{\n  \"api_url\": \"https://api.example.com\",\n  \"timeout\": 30\n}\n<!--@embedoc-data:end-->\n```\n\n**CSV**\n```markdown\n<!--@embedoc-data:endpoints format=\"csv\"-->\nmethod,path,description\nGET,/users,List all users\nPOST,/users,Create user\n<!--@embedoc-data:end-->\n```\n\n**Markdown Table**\n```markdown\n<!--@embedoc-data:features format=\"table\"-->\n| Feature | Status | Priority |\n|---------|--------|----------|\n| Auth    | Done   | High     |\n| API     | WIP    | High     |\n<!--@embedoc-data:end-->\n```\n\n### Code Fence Support\n\nFor better readability in editors, you can wrap data in code fences:\n\n````markdown\n<!--@embedoc-data:config format=\"yaml\"-->\n```yaml\napi_url: https://api.example.com\ntimeout: 30\nfeatures:\n  - auth\n  - logging\n```\n<!--@embedoc-data:end-->\n````\n\nCode fences are automatically stripped during parsing.\n\n### Dot-Path Access for Nested Data\n\nAccess nested properties using dot notation:\n\n```markdown\n<!--@embedoc-data:project format=\"yaml\"-->\nname: embedoc\nversion: 1.0.0\nauthor:\n  name: Jane Developer\n  email: jane@example.com\nrepository:\n  url: https://github.com/janedev/embedoc\n<!--@embedoc-data:end-->\n\nProject: ${project.name} v${project.version}\nAuthor: ${project.author.name} (${project.author.email})\n```\n\n### Distributed Definition Style\n\nDefine data inline where it's contextually relevant:\n\n```markdown\n# Project Documentation\n\nThis project, <!--@embedoc-data:project.name-->embedoc<!--@embedoc-data:end-->, \nversion <!--@embedoc-data:project.version-->1.0.0<!--@embedoc-data:end-->, \nprovides in-place document generation.\n\n## Author\n\nMaintained by <!--@embedoc-data:project.author.name-->Jane Developer<!--@embedoc-data:end-->\n(<!--@embedoc-data:project.author.email-->jane@example.com<!--@embedoc-data:end-->).\n\n## Summary\n\n| Property | Value |\n|----------|-------|\n| Name | ${project.name} |\n| Version | ${project.version} |\n| Author | ${project.author.name} |\n```\n\nBoth YAML blocks and dot-path definitions produce the same structure and can be mixed.\n\n> **Note**: If the same dot-path is defined multiple times within a document, the **last definition wins** (values are overwritten in document order).\n\n### Using Inline Datasources in Embeds\n\n```typescript\nimport { defineEmbed, InlineDatasource } from 'embedoc';\n\nexport default defineEmbed({\n  async render(ctx) {\n    const ds = ctx.datasources['my_data'] as InlineDatasource;\n    \n    // Get all data\n    const data = await ds.getAll();\n    \n    // Get nested value (for object datasources)\n    const authorName = await ds.get('author.name');\n    \n    // Get location metadata (for traceability)\n    const meta = ds.getMeta('', ctx.filePath);  // '' = root definition\n    if (meta) {\n      // meta.relativePath: relative path from current document\n      // meta.contentStartLine / contentEndLine: line numbers\n      console.log(`Defined at ${meta.relativePath}:${meta.contentStartLine}`);\n    }\n    \n    // Get location of specific property (for distributed definitions)\n    const propMeta = ds.getMeta('author.name', ctx.filePath);\n    \n    return { content: ctx.markdown.table(/* ... */) };\n  }\n});\n```\n\nSee [API Reference](./docs/api/README.md#inlinedatasource) for `InlineDatasource` details.\n\n### Inline Datasource Configuration\n\n```yaml\n# embedoc.config.yaml\ninline_datasource:\n  enabled: true              # Enable/disable (default: true)\n  maxBytes: 10240           # Max size per block (default: 10KB)\n  allowedFormats:           # Restrict formats\n    - yaml\n    - json\n  conflictPolicy: warn      # warn | error | prefer_external\n  stripCodeFences: true     # Auto-strip code fences (default: true)\n  stripPatterns:            # Custom strip patterns (regex)\n    - '^```\\w*\\s*\\n?'\n    - '\\n?```\\s*$'\n```\n\n---\n\n## Custom Datasources\n\nDefine custom datasource types in TypeScript to connect to any data source (APIs, databases, custom file formats, etc.).\n\n### Defining a Custom Datasource Type\n\n```typescript\n// .embedoc/datasources/github.ts\nimport { defineDatasource } from 'embedoc';\n\nexport default defineDatasource({\n  async create(config) {\n    const owner = config['owner'] as string;\n    const repo = config['repo'] as string;\n    const response = await fetch(\n      `https://api.github.com/repos/${owner}/${repo}/issues`\n    );\n    const issues = await response.json();\n\n    return {\n      async query() { return issues; },\n      async getAll() { return issues; },\n      async close() {},\n    };\n  }\n});\n```\n\n### Registering Custom Datasource Types\n\n```typescript\n// .embedoc/datasources/index.ts\nimport github from './github.ts';\n\nexport const datasourceTypes = {\n  github,\n};\n```\n\n### Using in Configuration\n\n```yaml\n# embedoc.config.yaml\ndatasources:\n  my_issues:\n    type: github         # matches key in datasourceTypes\n    owner: \"myorg\"\n    repo: \"myrepo\"\n```\n\nAll config properties are passed to the `create()` method, so custom datasources can accept any configuration.\n\n### Custom Inline Format Parsers\n\nRegister custom format parsers for `@embedoc-data` inline markers by exporting `inlineFormats` alongside `datasourceTypes`:\n\n```typescript\n// .embedoc/datasources/index.ts\nimport github from './github.ts';\n\nexport const datasourceTypes = {\n  github,\n};\n\nexport const inlineFormats = {\n  toml: (content: string) => parseToml(content),\n  ini: (content: string) => {\n    const result: Record<string, string> = {};\n    for (const line of content.split('\\n')) {\n      const [key, ...rest] = line.split('=');\n      if (key && rest.length > 0) {\n        result[key.trim()] = rest.join('=').trim();\n      }\n    }\n    return result;\n  },\n};\n```\n\nCustom formats can then be used in documents:\n\n```markdown\n<!--@embedoc-data:config format=\"ini\"-->\nhost=localhost\nport=5432\ndatabase=myapp\n<!--@embedoc-data:end-->\n```\n\n---\n\n## File Generation\n\nGenerate new files in bulk using Handlebars templates based on datasource records.\n\n### Configuration\n\n```yaml\ndatasources:\n  tables:\n    type: sqlite\n    path: \"./data/metadata.db\"\n    query: \"SELECT * FROM tables\"\n    generators:\n      - output_path: \"./docs/tables/{table_name}.md\"\n        template: table_doc.hbs\n        overwrite: false  # Don't overwrite existing files\n```\n\n### Template (Handlebars)\n\n```handlebars\n{{!-- .embedoc/templates/table_doc.hbs --}}\n---\ndoc_id: \"{{table_name}}\"\nembeds:\n  - table_columns\n  - table_relations\n---\n# Table: {{table_name}}\n\n## Columns\n\n<!--@embedoc:table_columns id=\"{{table_name}}\"-->\n<!--@embedoc:end-->\n\n## Relations\n\n<!--@embedoc:table_relations id=\"{{table_name}}\"-->\n<!--@embedoc:end-->\n\nCreated: {{today}}\n```\n\n### Built-in Handlebars Helpers\n\n| Helper | Description | Example Output |\n|--------|-------------|----------------|\n| `{{today}}` | Today's date (YYYY-MM-DD) | `YYYY-MM-DD` |\n| `{{datetime}}` | Current datetime (ISO 8601) | `YYYY-MM-DDTHH:mm:ss.sssZ` |\n| `{{#if condition}}` | Conditional | `{{#if is_primary}}✔{{/if}}` |\n| `{{#each items}}` | Loop | `{{#each columns}}{{name}}{{/each}}` |\n| `{{#unless condition}}` | Negation | `{{#unless nullable}}NOT NULL{{/unless}}` |\n\n### Run Generation\n\n```bash\n# Generate for specific datasource\nembedoc generate --datasource tables\n\n# Generate for all datasources with generators\nembedoc generate --all\n```\n\n---\n\n## Incremental Build & Dependency Tracking\n\n### Dependency Chain\n\n```\nDocument (.md) → Embed (.ts) → Datasource (.db, .csv, .json)\n```\n\n- **Document changed**: Rebuild that document only\n- **Embed changed**: Rebuild all documents using that embed\n- **Datasource changed**: Rebuild all documents using embeds that depend on that datasource\n\n### Watch Mode\n\n```bash\nembedoc watch --config embedoc.config.yaml\n```\n\n### Debug Dependency Graph\n\n```bash\nembedoc watch --debug-deps\n```\n\nExample output:\n```\n=== Dependency Graph ===\n\n[document] docs/tables/users.md\n  depends on:\n    - embed:table_columns\n    - embed:table_relations\n\n[embed] embed:table_columns\n  depends on:\n    - data/sample.db\n  depended by:\n    - docs/tables/users.md\n    - docs/tables/orders.md\n\n[datasource] data/sample.db\n  depended by:\n    - embed:table_columns\n    - embed:table_relations\n```\n\n---\n\n## Frontmatter\n\nDocuments can include YAML frontmatter for metadata and configuration:\n\n```yaml\n---\ndoc_id: \"users\"\ndoc_type: \"table\"\nschema: \"public\"\nembeds:\n  - table_columns\n  - table_relations\n---\n```\n\nFrontmatter values can be referenced in marker attributes using `${...}` syntax.\n\n---\n\n## Directory Structure\n\n### Recommended Project Structure\n\n```\nyour-project/\n├── embedoc.config.yaml        # Configuration file\n├── .embedoc/                   # All embedoc custom code\n│   ├── renderers/              # Renderer definitions (TypeScript)\n│   │   ├── index.ts            # Export all renderers\n│   │   ├── table_columns.ts\n│   │   └── table_relations.ts\n│   ├── datasources/            # Custom datasource types (TypeScript)\n│   │   ├── index.ts            # Export datasourceTypes and inlineFormats\n│   │   └── github.ts\n│   ├── templates/              # File generation templates (Handlebars)\n│   │   ├── table_doc.hbs\n│   │   └── view_doc.hbs\n│   └── package.json            # Optional: dependencies for custom code\n├── data/                       # Datasource files\n│   ├── metadata.db\n│   └── endpoints.csv\n└── docs/                       # Target documents\n    └── tables/\n        └── users.md\n```\n\n### Renderer Registration\n\n```typescript\n// .embedoc/renderers/index.ts\nimport tableColumns from './table_columns.ts';\nimport tableRelations from './table_relations.ts';\nimport customEmbed from './custom_embed.ts';\n\nexport const embeds = {\n  table_columns: tableColumns,\n  table_relations: tableRelations,\n  custom_embed: customEmbed,\n};\n```\n\n---\n\n## Development\n\n### Building from Source\n\n```bash\n# Clone repository\ngit clone https://github.com/user/embedoc.git\ncd embedoc\n\n# Install dependencies\nnpm install\n\n# Build\nnpm run build\n\n# Development mode (watch)\nnpm run dev\n\n# Run tests\nnpm test\n```\n\n### Requirements\n\n- Node.js 18+\n- npm / pnpm / yarn\n\n---\n\n## API Reference\n\n> 📖 **See [docs/api/README.md](./docs/api/README.md) for detailed Embed API documentation.**\n\n### Exported Functions\n\n```typescript\nimport {\n  // Core\n  defineEmbed,\n  defineDatasource,\n  build,\n  processFile,\n  \n  // Parser\n  parseMarkers,\n  parseFrontmatter,\n  parseInlineDataMarkers,\n  \n  // Datasource utilities\n  InlineDatasource,\n  buildInlineDatasources,\n  parseDotPath,\n  resolveDotPath,\n  \n  // Helpers\n  createMarkdownHelper,\n  \n  // Constants\n  DEFAULT_COMMENT_STYLES,\n} from 'embedoc';\n```\n\n### Type Definitions\n\n```typescript\ninterface EmbedDefinition {\n  dependsOn?: string[];\n  render: (ctx: EmbedContext) => Promise<EmbedResult>;\n}\n\ninterface EmbedResult {\n  /** Return string to replace, or null/undefined to keep existing content */\n  content: string | null | undefined;\n}\n\ninterface EmbedContext {\n  params: Record<string, string>;\n  frontmatter: Record<string, unknown>;\n  datasources: Record<string, Datasource>;\n  markdown: MarkdownHelper;\n  filePath: string;\n  /** Existing content between markers (for error recovery) */\n  existingContent?: string;\n}\n\ninterface Datasource {\n  query(sql: string, params?: unknown[]): Promise<QueryResult>;\n  getAll(): Promise<QueryResult>;\n  close(): Promise<void>;\n}\n\ninterface InlineDatasource extends Datasource {\n  readonly type: 'inline';\n  readonly format: string;\n  readonly locations: InlineDefinitionLocation[];\n  get(path: string): Promise<unknown>;\n  getMeta(propertyPath?: string, targetDocPath?: string): InlineDefinitionLocation | null;\n  getAllMeta(targetDocPath?: string): InlineDefinitionLocation[];\n}\n\ninterface InlineDefinitionLocation {\n  propertyPath: string;\n  absolutePath: string;\n  relativePath: string;\n  startLine: number;\n  endLine: number;\n  contentStartLine: number;\n  contentEndLine: number;\n  format: string;\n}\n\ninterface InlineDatasourceConfig {\n  enabled?: boolean;\n  maxBytes?: number;\n  allowedFormats?: string[];\n  conflictPolicy?: 'warn' | 'error' | 'prefer_external';\n  stripCodeFences?: boolean;\n  stripPatterns?: string[];\n}\n\ninterface CustomDatasourceDefinition {\n  create(config: DatasourceConfig): Promise<Datasource>;\n}\n\ntype InlineFormatParser = (content: string) => unknown;\n```\n\n---\n\n## License\n\nMIT\n\n","readmeFilename":"README.md"}