{"_id":"@adddog/monorepo-consistency","_rev":"9-0cc6b20dba3acb7f02612c4780e6483a","name":"@adddog/monorepo-consistency","dist-tags":{"latest":"0.2.0"},"versions":{"0.0.0":{"name":"@adddog/monorepo-consistency","version":"0.0.0","_id":"@adddog/monorepo-consistency@0.0.0","maintainers":[{"name":"selie","email":"samradelie@gmail.com"}],"bin":{"mono":"dist/cli.mjs"},"dist":{"shasum":"7f1cb84ab3186efb9cb2bad1c1d6a4bf6f263d64","tarball":"https://registry.npmjs.org/@adddog/monorepo-consistency/-/monorepo-consistency-0.0.0.tgz","fileCount":20,"integrity":"sha512-XXgiPT90wwwlQn4e1CbmFJHJs4D1b7r9iALsiTEnp6SMgZzShh23teX2qIoMzyNnFC/CVlOIOyABp32lCU5F6w==","signatures":[{"sig":"MEUCIHR6Z7peLSzK0K/VU5U0xLgeEuVh8PnayTpXxcNMMFTUAiEAljs/r1kHIceAwPO93CIdzBn7uXe/W8XkN9r2ThRPJcw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":851761},"main":"./dist/index.cjs","type":"module","_from":"file:adddog-monorepo-consistency-0.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">= 11","node":">= 22","pnpm":">= 10"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"eslint .","test":"vitest run","build":"unbuild","types":"tsc -p tsconfig.typecheck.json","lint:fix":"eslint --fix .","build:watch":"unbuild --watch","generate-schema":"tsx scripts/generate-schema.ts"},"_npmUser":{"name":"selie","email":"samradelie@gmail.com"},"_resolved":"/private/var/folders/rp/3hs8d62d09x33sqq4jxfx8th0000gn/T/a49056f0b2875714c09e8476d1d6f052/adddog-monorepo-consistency-0.0.0.tgz","_integrity":"sha512-XXgiPT90wwwlQn4e1CbmFJHJs4D1b7r9iALsiTEnp6SMgZzShh23teX2qIoMzyNnFC/CVlOIOyABp32lCU5F6w==","_npmVersion":"11.4.2","description":"A tool for maintaining consistency across a pnpm monorepo, including automated TypeScript configuration generation.","directories":{},"_nodeVersion":"24.4.0","dependencies":{"zx":"^8.8.4","ora":"^9.0.0","zod":"^4.1.12","yaml":"^2.8.1","chalk":"^5.6.2","lodash":"^4.17.21","commander":"^14.0.1","fast-glob":"^3.3.3","minimatch":"^10.0.3","get-tsconfig":"^4.12.0","@adddog/zod-to-json-schema":"0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","eslint":"^9.37.0","unbuild":"^3.6.1","typescript":"^5.9.3","@rad/config":"0.0.0","@rad/eslint":"0.0.0","@types/node":"^24.7.2","@types/lodash":"^4.17.20","@adddog/build-configs":"0.0.1"},"_npmOperationalInternal":{"tmp":"tmp/monorepo-consistency_0.0.0_1760239623448_0.5664988270101734","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@adddog/monorepo-consistency","version":"0.0.7","_id":"@adddog/monorepo-consistency@0.0.7","maintainers":[{"name":"selie","email":"samradelie@gmail.com"}],"bin":{"mono":"dist/cli.mjs"},"dist":{"shasum":"6e3346549e75d9e3cbc634afb4987ea934747734","tarball":"https://registry.npmjs.org/@adddog/monorepo-consistency/-/monorepo-consistency-0.0.7.tgz","fileCount":20,"integrity":"sha512-8AF70MMjybzBgfDx/oVcyyYn91HHbpyaMRC4TgQP3EfoZwz13yj3DssSih2L5R2xEw+SPVxyFotlesT9GTKn9w==","signatures":[{"sig":"MEQCIFixulKJ84tkJ/0j63zFT3bGwr9APoDIJHgwGkPZ4E/aAiBmcIJ6Uifhn3Wdz9Q3hYwqNYFyy6dnwtwXlElZEH4K1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":852065},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">= 11","node":">= 22","pnpm":">= 10"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"gitHead":"3581b256241fcdf9e6692169ab49cb09c81e634f","scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"eslint .","test":"vitest run","build":"unbuild","types":"tsc -p tsconfig.typecheck.json","prepack":"pnpm run prepublishOnly","release":"bumpp --yes --no-push --release patch","lint:fix":"eslint --fix .","build:watch":"unbuild --watch","prepublishOnly":"pnpm run test && pnpm run lint && pnpm run types && pnpm run build","generate-schema":"tsx scripts/generate-schema.ts"},"_npmUser":{"name":"selie","email":"samradelie@gmail.com"},"_npmVersion":"11.4.2","description":"A tool for maintaining consistency across a pnpm monorepo, including automated TypeScript configuration generation.","directories":{},"_nodeVersion":"24.4.0","dependencies":{"zx":"^8.8.4","ora":"^9.0.0","zod":"^4.1.12","yaml":"^2.8.1","chalk":"^5.6.2","lodash":"^4.17.21","commander":"^14.0.1","fast-glob":"^3.3.3","minimatch":"^10.0.3","get-tsconfig":"^4.12.0","@adddog/zod-to-json-schema":"^0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","bumpp":"^10.3.1","eslint":"^9.37.0","unbuild":"^3.6.1","typescript":"^5.9.3","@rad/config":"workspace:*","@types/node":"^24.7.2","@types/lodash":"^4.17.20","@adddog/eslint":"^0.0.6","@vue/compiler-sfc":"^3.5.22","@adddog/build-configs":"^0.0.1","@adddog/config-defaults":"^0.0.3"},"_npmOperationalInternal":{"tmp":"tmp/monorepo-consistency_0.0.7_1760382930666_0.3261348548621059","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@adddog/monorepo-consistency","version":"0.0.8","_id":"@adddog/monorepo-consistency@0.0.8","maintainers":[{"name":"selie","email":"samradelie@gmail.com"}],"bin":{"mono":"dist/cli.mjs"},"dist":{"shasum":"e556e2d4632609f8e30c51b4886aaa2f5cbd9cf8","tarball":"https://registry.npmjs.org/@adddog/monorepo-consistency/-/monorepo-consistency-0.0.8.tgz","fileCount":20,"integrity":"sha512-NgYwpgabGykHmm1K4yTlC8XyiTuTO9uw1I00YVMvfo5zQa3mJkv7QrhG4S2KarHv+wl5wk86qw0tmslHep2S8Q==","signatures":[{"sig":"MEUCIHupomF9ZALdDVFiOyLETP/UJohCrkxMiemF1vZJvtTAAiEAmfXFdE5IwSl8M7Ms0PoMUDsl51Y+7m90e1JXRyTSBlY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":692816},"main":"./dist/index.cjs","type":"module","_from":"file:adddog-monorepo-consistency-0.0.8.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">= 11","node":">= 22","pnpm":">= 10"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"eslint .","test":"vitest run","build":"unbuild","types":"tsc -p tsconfig.typecheck.json","release":"bumpp --yes --no-push --no-tag --release patch","lint:fix":"eslint --fix .","build:watch":"unbuild --watch","generate-schema":"tsx scripts/generate-schema.ts"},"_npmUser":{"name":"selie","email":"samradelie@gmail.com"},"_resolved":"/tmp/303e4f66c1c5518256449426a3baa503/adddog-monorepo-consistency-0.0.8.tgz","_integrity":"sha512-NgYwpgabGykHmm1K4yTlC8XyiTuTO9uw1I00YVMvfo5zQa3mJkv7QrhG4S2KarHv+wl5wk86qw0tmslHep2S8Q==","_npmVersion":"11.4.2","description":"A tool for maintaining consistency across a pnpm monorepo, including automated TypeScript configuration generation and package.json hygiene checks.","directories":{},"_nodeVersion":"24.4.0","dependencies":{"zx":"^8.8.5","ora":"^9.0.0","zod":"^4.1.12","yaml":"^2.8.1","chalk":"^5.6.2","lodash":"^4.17.21","commander":"^14.0.1","fast-glob":"^3.3.3","minimatch":"^10.0.3","get-tsconfig":"^4.12.0","@adddog/zod-to-json-schema":"^0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","knip":"^5.66.2","bumpp":"^10.3.1","eslint":"^9.38.0","vitest":"^3.2.4","unbuild":"^3.6.1","typescript":"^5.9.3","@types/node":"^24.9.1","@types/lodash":"^4.17.20","@adddog/eslint":"0.0.6","@vitest/coverage-v8":"^3.2.4","@adddog/build-configs":"0.0.5","@adddog/config-defaults":"0.0.8"},"peerDependencies":{"@vue/compiler-sfc":"^3.5.22"},"_npmOperationalInternal":{"tmp":"tmp/monorepo-consistency_0.0.8_1761154655364_0.6233944967324019","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@adddog/monorepo-consistency","version":"0.0.9","_id":"@adddog/monorepo-consistency@0.0.9","maintainers":[{"name":"selie","email":"samradelie@gmail.com"}],"bin":{"mono":"dist/cli.mjs"},"dist":{"shasum":"64ac473101bff915ae4a102ed748b638640cd92a","tarball":"https://registry.npmjs.org/@adddog/monorepo-consistency/-/monorepo-consistency-0.0.9.tgz","fileCount":20,"integrity":"sha512-ySMg4iNI+2g+y5oGCcl9FHxNBlPoO2xsuxPJxYjTb3DsEgO1iv3YY9/ovC8giNFB/aR0gAtax+S4Kl5y68nTSQ==","signatures":[{"sig":"MEQCIFo+eidT/LYpUqxAo2P2c/fE8ig8ob3SL9E3sRkzSO4gAiAlBVzuDPqb2YBcscvuag7kWXbgyBmXoddJ3x7YNVNSfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":852829},"main":"./dist/index.cjs","type":"module","_from":"file:adddog-monorepo-consistency-0.0.9.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","engines":{"npm":">= 11","node":">= 22","pnpm":">= 10"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"eslint .","test":"vitest --watch=false","build":"unbuild","types":"tsc -p tsconfig.typecheck.json","release":"bumpp --yes --no-push --no-tag --release patch","lint:fix":"eslint --fix .","build:watch":"unbuild --watch","generate-schema":"tsx scripts/generate-schema.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e6924c2-1e2d-4f65-99ca-b8afa74200d2"}},"_resolved":"/home/runner/work/samelie-monorepo/samelie-monorepo/packages/monorepo-consistency/adddog-monorepo-consistency-0.0.9.tgz","_integrity":"sha512-ySMg4iNI+2g+y5oGCcl9FHxNBlPoO2xsuxPJxYjTb3DsEgO1iv3YY9/ovC8giNFB/aR0gAtax+S4Kl5y68nTSQ==","_npmVersion":"11.10.1","description":"A tool for maintaining consistency across a pnpm monorepo, including automated TypeScript configuration generation and package.json hygiene checks.","directories":{},"_nodeVersion":"24.4.0","dependencies":{"zx":"^8.8.5","ora":"^9.3.0","zod":"^4.3.6","yaml":"^2.8.2","chalk":"^5.6.2","lodash":"^4.17.23","commander":"^14.0.3","fast-glob":"^3.3.3","minimatch":"^10.2.0","get-tsconfig":"^4.13.6","@adddog/zod-to-json-schema":"^0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^5.83.1","bumpp":"^10.4.1","eslint":"^10.0.0","vitest":"^4.0.18","unbuild":"^3.6.1","typescript":"^5.9.3","@types/node":"^25.2.3","@types/lodash":"^4.17.23","@vitest/coverage-v8":"^4.0.18","@adddog/build-configs":"^0.0.5"},"peerDependencies":{"@vue/compiler-sfc":"^3.5.22"},"_npmOperationalInternal":{"tmp":"tmp/monorepo-consistency_0.0.9_1771645075680_0.22553543281861987","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@adddog/monorepo-consistency","version":"0.0.13","_id":"@adddog/monorepo-consistency@0.0.13","maintainers":[{"name":"selie","email":"samradelie@gmail.com"}],"bin":{"mono":"dist/cli.js"},"dist":{"shasum":"9720de112df329f69e2ba2e4351babfa7f7449c5","tarball":"https://registry.npmjs.org/@adddog/monorepo-consistency/-/monorepo-consistency-0.0.13.tgz","fileCount":6,"integrity":"sha512-xnjodU3gY4kny+FjSZmAeEnJEz4GGVAgRvw00Uz7WULIlcxhbMJ4X2WebriyvhNvQ5EwYQqyFvRQuZGmPxj+SA==","signatures":[{"sig":"MEYCIQCiprBpbKsk+50j8d1vG26h4UpS1Tldf6GoweCsrmhptAIhAM+bhHIYeVf2JNqsbGESPvjNG0jZuw6cUzuCM7IoqWPs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51470156},"main":"./dist/index.js","type":"module","_from":"file:adddog-monorepo-consistency-0.0.13.tgz","types":"./dist/index.d.ts","engines":{"npm":">= 11","node":">= 22","pnpm":">= 10"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"eslint .","test":"vitest --watch=false","build":"tsup","types":"tsc -p tsconfig.typecheck.json","release":"bumpp --yes --no-push --no-tag --release patch","lint:fix":"eslint --fix .","build:watch":"tsup --watch","version:patch":"npm version patch --no-git-tag-version","generate-schema":"tsx scripts/generate-schema.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e6924c2-1e2d-4f65-99ca-b8afa74200d2"}},"_resolved":"/home/runner/work/samelie-monorepo/samelie-monorepo/packages/monorepo-consistency/adddog-monorepo-consistency-0.0.13.tgz","_integrity":"sha512-xnjodU3gY4kny+FjSZmAeEnJEz4GGVAgRvw00Uz7WULIlcxhbMJ4X2WebriyvhNvQ5EwYQqyFvRQuZGmPxj+SA==","_npmVersion":"11.10.1","description":"A tool for maintaining consistency across a pnpm monorepo, including automated TypeScript configuration generation and package.json hygiene checks.","directories":{},"_nodeVersion":"24.4.0","dependencies":{"zx":"^8.8.5","ora":"^9.3.0","zod":"^4.3.6","dpdm":"^3.14.0","yaml":"^2.8.2","chalk":"^5.6.2","madge":"^8.0.0","lodash":"^4.17.23","commander":"^14.0.3","fast-glob":"^3.3.3","minimatch":"^10.2.2","@adddog/zod-to-json-schema":"0.0.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^5.85.0","tsup":"^8.5.0","bumpp":"^10.4.1","eslint":"^10.0.2","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.0","@types/lodash":"^4.17.24","@vitest/coverage-v8":"^4.0.18","@adddog/build-configs":"^0.0.6"},"peerDependencies":{"@vue/compiler-sfc":"^3.5.22"},"_npmOperationalInternal":{"tmp":"tmp/monorepo-consistency_0.0.13_1771951317959_0.021294478219319846","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@adddog/monorepo-consistency","version":"0.0.14","_id":"@adddog/monorepo-consistency@0.0.14","maintainers":[{"name":"selie","email":"samradelie@gmail.com"}],"bin":{"mono":"dist/cli.js"},"dist":{"shasum":"101a74fb28a3ac1abde90b429d1214ecc747bdd7","tarball":"https://registry.npmjs.org/@adddog/monorepo-consistency/-/monorepo-consistency-0.0.14.tgz","fileCount":6,"integrity":"sha512-kwpl2af7/94nUKt2d9coBpNFsnsOotInbiI19ZY6IznhrLKbdCu7q2+jnd48HK4hPC9rI/NXhGade3sZh5CQVw==","signatures":[{"sig":"MEYCIQDsPxI6I2EayHFrh7t+saN6jvBQYFq3vQ3JxizdWQNljwIhAKUxb5oOvuHlQQi/pzk+PSDlR03PvY1mP045TJWYb+lj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51470156},"main":"./dist/index.js","type":"module","_from":"file:adddog-monorepo-consistency-0.0.14.tgz","types":"./dist/index.d.ts","engines":{"npm":">= 11","node":">= 22","pnpm":">= 10"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"eslint .","test":"vitest --watch=false","build":"tsup","types":"tsc -p tsconfig.typecheck.json","release":"bumpp --yes --no-push --no-tag --release patch","lint:fix":"eslint --fix .","build:watch":"tsup --watch","version:patch":"npm version patch --no-git-tag-version","generate-schema":"tsx scripts/generate-schema.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e6924c2-1e2d-4f65-99ca-b8afa74200d2"}},"_resolved":"/home/runner/work/samelie-monorepo/samelie-monorepo/packages/monorepo-consistency/adddog-monorepo-consistency-0.0.14.tgz","_integrity":"sha512-kwpl2af7/94nUKt2d9coBpNFsnsOotInbiI19ZY6IznhrLKbdCu7q2+jnd48HK4hPC9rI/NXhGade3sZh5CQVw==","_npmVersion":"11.10.1","description":"A tool for maintaining consistency across a pnpm monorepo, including automated TypeScript configuration generation and package.json hygiene checks.","directories":{},"_nodeVersion":"24.4.0","dependencies":{"zx":"^8.8.5","ora":"^9.3.0","zod":"^4.3.6","dpdm":"^3.14.0","yaml":"^2.8.2","chalk":"^5.6.2","madge":"^8.0.0","lodash":"^4.17.23","commander":"^14.0.3","fast-glob":"^3.3.3","minimatch":"^10.2.2","@adddog/zod-to-json-schema":"0.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^5.85.0","tsup":"^8.5.0","bumpp":"^10.4.1","eslint":"^10.0.2","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.0","@types/lodash":"^4.17.24","@vitest/coverage-v8":"^4.0.18","@adddog/build-configs":"^0.0.6"},"peerDependencies":{"@vue/compiler-sfc":"^3.5.22"},"_npmOperationalInternal":{"tmp":"tmp/monorepo-consistency_0.0.14_1771951942554_0.5930917016101889","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"@adddog/monorepo-consistency","version":"0.0.15","_id":"@adddog/monorepo-consistency@0.0.15","maintainers":[{"name":"selie","email":"samradelie@gmail.com"}],"bin":{"mono":"dist/cli.js"},"dist":{"shasum":"f7f42d14cf41e872ace543a97e835b68967ac30b","tarball":"https://registry.npmjs.org/@adddog/monorepo-consistency/-/monorepo-consistency-0.0.15.tgz","fileCount":6,"integrity":"sha512-FAEXaczZtsye0Z77ksT6i1FT6oQdTIQrfFlNEExTt3ni5o/KQW5K0+CxSiedKHz0YiTOgNXEw9E1d/CS3+3nVw==","signatures":[{"sig":"MEUCIQDYKi8sOkZVazQpwKHduYXDDwTrcaGoHCV2xoan2AgLewIgKz8KyKYV+Ol1kNRSai9XqPUpus7NpCPU8Gh2gpewErc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51469827},"main":"./dist/index.js","type":"module","_from":"file:adddog-monorepo-consistency-0.0.15.tgz","types":"./dist/index.d.ts","engines":{"npm":">= 11","node":">= 22","pnpm":">= 10"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"eslint .","test":"vitest --watch=false","build":"tsup","types":"tsc -p tsconfig.typecheck.json","release":"bumpp --yes --no-push --no-tag --release patch","lint:fix":"eslint --fix .","build:watch":"tsup --watch","version:patch":"npm version patch --no-git-tag-version","generate-schema":"tsx scripts/generate-schema.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e6924c2-1e2d-4f65-99ca-b8afa74200d2"}},"_resolved":"/home/runner/work/samelie-monorepo/samelie-monorepo/packages/monorepo-consistency/adddog-monorepo-consistency-0.0.15.tgz","_integrity":"sha512-FAEXaczZtsye0Z77ksT6i1FT6oQdTIQrfFlNEExTt3ni5o/KQW5K0+CxSiedKHz0YiTOgNXEw9E1d/CS3+3nVw==","_npmVersion":"11.10.1","description":"A tool for maintaining consistency across a pnpm monorepo, including automated TypeScript configuration generation and package.json hygiene checks.","directories":{},"_nodeVersion":"24.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^5.85.0","tsup":"^8.5.0","bumpp":"^10.4.1","eslint":"^10.0.2","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.0","@types/lodash":"^4.17.24","@vitest/coverage-v8":"^4.0.18","@adddog/build-configs":"^0.0.6"},"peerDependencies":{"@vue/compiler-sfc":"^3.5.22"},"_npmOperationalInternal":{"tmp":"tmp/monorepo-consistency_0.0.15_1771954271000_0.9888138899301904","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@adddog/monorepo-consistency","version":"0.1.1","_id":"@adddog/monorepo-consistency@0.1.1","maintainers":[{"name":"selie","email":"samradelie@gmail.com"}],"bin":{"mono":"dist/cli.js"},"dist":{"shasum":"3e62f5b03bf84a4f5ce209bc3a5d1700af2c202b","tarball":"https://registry.npmjs.org/@adddog/monorepo-consistency/-/monorepo-consistency-0.1.1.tgz","fileCount":6,"integrity":"sha512-GxPYCrgub9JOalP6HOJ1PYb6J97cBqMNYZl4pERtg+Ef1tSsIhrgQQHB/8QBiWe6pUb7eZENQGbIkRYIGoh1Yg==","signatures":[{"sig":"MEUCIQC5TIw/mfE3EcGNhBzu1Imj3GQ03Vg9lYm/m7xIqplamQIgVpsn00vlp5ybjqZrqobp/G70txu3d72j7jPjSp6IAnI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6908294},"main":"./dist/index.js","type":"module","_from":"file:adddog-monorepo-consistency-0.1.1.tgz","types":"./dist/index.d.ts","engines":{"npm":">= 11","node":">= 22","pnpm":">= 10"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"tsx src/cli.ts","knip":"knip","lint":"eslint .","test":"vitest --watch=false","build":"tsup","types":"tsc -p tsconfig.typecheck.json","release":"bumpp --yes --no-push --no-tag --release patch","lint:fix":"eslint --fix .","build:watch":"tsup --watch","version:patch":"npm version patch --no-git-tag-version","generate-schema":"tsx scripts/generate-schema.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e6924c2-1e2d-4f65-99ca-b8afa74200d2"}},"_resolved":"/home/runner/work/samelie-monorepo/samelie-monorepo/packages/monorepo-consistency/adddog-monorepo-consistency-0.1.1.tgz","_integrity":"sha512-GxPYCrgub9JOalP6HOJ1PYb6J97cBqMNYZl4pERtg+Ef1tSsIhrgQQHB/8QBiWe6pUb7eZENQGbIkRYIGoh1Yg==","_npmVersion":"11.12.1","description":"A tool for maintaining consistency across a pnpm monorepo, including automated TypeScript configuration generation and package.json hygiene checks.","directories":{},"_nodeVersion":"24.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","knip":"^6.1.0","tsup":"^8.5.1","bumpp":"^11.0.1","eslint":"^10.1.0","vitest":"^4.1.2","typescript":"^6.0.2","@types/node":"^25.5.0","@types/lodash":"^4.17.24","@vitest/coverage-v8":"^4.1.2"},"peerDependencies":{"@vue/compiler-sfc":"^3.5.22"},"_npmOperationalInternal":{"tmp":"tmp/monorepo-consistency_0.1.1_1774919174753_0.9929511929865815","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@adddog/monorepo-consistency","version":"0.2.0","type":"module","bin":{"mono":"dist/cli.js"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"main":"./dist/index.js","types":"./dist/index.d.ts","devDependencies":{"@types/lodash":"^4.17.24","@types/madge":"^5.0.3","@types/node":"^25.9.1","@typescript/native-preview":"beta","@vitest/coverage-v8":"^4.1.8","bumpp":"^11.1.0","eslint":"^10.4.1","knip":"^6.15.0","tsup":"^8.5.1","tsx":"^4.22.4","vitest":"^4.1.8"},"peerDependencies":{"@vue/compiler-sfc":"^3.5.22"},"engines":{"node":">= 22","pnpm":">= 10","npm":">= 11"},"publishConfig":{"access":"public"},"scripts":{"build":"tsup","lint":"eslint .","lint:fix":"eslint --fix .","types":"tsgo -p tsconfig.typecheck.json","dev":"tsx src/cli.ts","release":"bumpp --yes --no-push --no-tag --release patch","generate-schema":"tsx scripts/generate-schema.ts","build:watch":"tsup --watch","test":"vitest --watch=false","knip":"knip","version:patch":"npm version patch --no-git-tag-version"},"_id":"@adddog/monorepo-consistency@0.2.0","description":"A tool for maintaining consistency across a pnpm monorepo, including automated TypeScript configuration generation and package.json hygiene checks.","_integrity":"sha512-j39OF6NT2uFOaPRmg4YGP/zYzpsh3hXkfdM88vqCp9kFn1o0ORDhBjsQqzcWFcjfC9f7wame8kIWaQk+NTMqeA==","_resolved":"/home/runner/work/samelie-monorepo/samelie-monorepo/packages/monorepo-consistency/adddog-monorepo-consistency-0.2.0.tgz","_from":"file:adddog-monorepo-consistency-0.2.0.tgz","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-j39OF6NT2uFOaPRmg4YGP/zYzpsh3hXkfdM88vqCp9kFn1o0ORDhBjsQqzcWFcjfC9f7wame8kIWaQk+NTMqeA==","shasum":"d0e67e575e2e03bd0831c4abf78bb42b2742ee5e","tarball":"https://registry.npmjs.org/@adddog/monorepo-consistency/-/monorepo-consistency-0.2.0.tgz","fileCount":6,"unpackedSize":7037382,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFTmCNUlVd2y5qJSnXGxMCHZfXZg3IA+SK8aRrgsjWQDAiEAj0Ut6oAOgia/075YKUy9E/E8OBcwlXdnN/CV6za0HVU="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7e6924c2-1e2d-4f65-99ca-b8afa74200d2"}},"directories":{},"maintainers":[{"name":"selie","email":"samradelie@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/monorepo-consistency_0.2.0_1780684307712_0.1854281081149478"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-12T03:27:03.343Z","modified":"2026-06-05T18:31:48.121Z","0.0.0":"2025-10-12T03:27:03.685Z","0.0.7":"2025-10-13T19:15:30.856Z","0.0.8":"2025-10-22T17:37:35.560Z","0.0.9":"2026-02-21T03:37:55.832Z","0.0.13":"2026-02-24T16:41:58.454Z","0.0.14":"2026-02-24T16:52:23.023Z","0.0.15":"2026-02-24T17:31:12.080Z","0.1.1":"2026-03-31T01:06:15.018Z","0.2.0":"2026-06-05T18:31:47.980Z"},"description":"A tool for maintaining consistency across a pnpm monorepo, including automated TypeScript configuration generation and package.json hygiene checks.","maintainers":[{"name":"selie","email":"samradelie@gmail.com"}],"readme":"# @adddog/monorepo-consistency\n\nA tool for maintaining consistency across a pnpm monorepo, including automated TypeScript configuration generation and package.json hygiene checks.\n\n## Quick Start\n\nInitialize a new configuration file:\n\n```bash\n# Interactive mode - prompts for common settings\nmono init\n\n# Use defaults - generates complete config without prompts\nmono init --defaults\n\n# Custom output location\nmono init --output path/to/config.json\n\n# Force overwrite existing config\nmono init --force\n```\n\nThe `init` command creates a complete `monorepo.config.json` file with sensible defaults for:\n- Dependency management\n- TypeScript configuration generation\n- Package.json hygiene checks\n\n## Commands\n\n### Initialization\n\n```bash\n# Initialize configuration interactively\nmono init\n\n# Initialize with all defaults (no prompts)\nmono init --defaults\n\n# Specify output location\nmono init --output custom-config.json\n\n# Force overwrite existing configuration\nmono init --force\n```\n\n**Interactive mode** asks for:\n- Enable/disable TypeScript config generation\n- Enable/disable package.json hygiene checks\n- Enable/disable dependency checks\n- Taze runner preference\n\n**Defaults mode** creates a complete configuration with:\n- All checks enabled\n- Recommended scripts for build, lint, types, test\n- Node >= 22, pnpm >= 10 engine requirements\n- Private packages by default\n\n### TypeScript Configuration Management\n\n```bash\n# Generate TypeScript configurations for all packages\nmono tsconfig generate\n\n# Generate with verbose output\nmono tsconfig generate --verbose\n\n# Generate only specific config types\nmono tsconfig generate --type web\nmono tsconfig generate --type node\nmono tsconfig generate --type builder\n\n# Dry run (preview without writing)\nmono tsconfig generate --dry-run\n\n# Force overwrite existing configs\nmono tsconfig generate --force\n\n# Check for configuration issues\nmono tsconfig check\n\n# Check and automatically fix issues\nmono tsconfig check --fix\n\n# Validate configurations\nmono tsconfig validate\n\n# Validate with strict rules\nmono tsconfig validate --strict\n\n# Validate specific files\nmono tsconfig validate packages/shadcn-vue-design-system/tsconfig.json\n```\n\n## TypeScript Configuration Generation\n\n### How It Works\n\nThe TypeScript configuration generator creates consistent `tsconfig.json` files across your monorepo by:\n\n1. **Scanning for marker files** - Looks for `web.tsconfig.json`, `node.tsconfig.json`, or `builder.tsconfig.json` in package directories\n2. **Merging configurations** - Combines base configs from `packages/config` with local overrides\n3. **Filtering paths** - Removes unnecessary `compilerOptions.paths` based on actual package dependencies\n4. **Writing output** - Generates final `tsconfig.json` and `tsconfig.typecheck.json` files\n\n### Requirements\n\nFor the TypeScript generation to work, your monorepo needs:\n\n#### 1. Centralized Configuration Package\n\nA `packages/config` directory containing base TypeScript configurations:\n\n```\npackages/config/\n├── base.tsconfig.json        # Base config with all compiler options and paths\n├── web.tsconfig.json          # Web-specific config (extends base)\n├── node.tsconfig.json         # Node-specific config (extends base)\n├── builder.tsconfig.json      # Builder-specific config\n└── superbase.tsconfig.json    # Additional base config (optional)\n```\n\n**Example `packages/config/base.tsconfig.json`:**\n```json\n{\n  \"extends\": \"./superbase.tsconfig.json\",\n  \"compilerOptions\": {\n    \"paths\": {\n      \"@domain/env\": [\"./packages/env/src/index\", \"../env/src/index\", ...],\n      \"@domain/logging\": [\"./packages/logging/src/index\", ...],\n      \"@domain/config\": [\"./packages/config/src/index\", ...],\n      // ... all possible workspace packages\n    }\n  }\n}\n```\n\n**Example `packages/config/web.tsconfig.json`:**\n```json\n{\n  \"extends\": \"./base.tsconfig.json\",\n  \"compilerOptions\": {\n    \"types\": [\"vite/client\", \"vitest/globals\"],\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\", \"WebWorker\"]\n  }\n}\n```\n\n**Example `packages/config/node.tsconfig.json`:**\n```json\n{\n  \"extends\": \"./base.tsconfig.json\",\n  \"compilerOptions\": {\n    \"types\": [\"node\"],\n    \"lib\": [\"ESNext\"],\n    \"moduleDetection\": \"force\"\n  }\n}\n```\n\n#### 2. Local Marker Files (REQUIRED)\n\n**⚠️ CRITICAL PREREQUISITE**: Each package **MUST** have a marker file for the generator to work.\n\nThe presence of `web.tsconfig.json` or `node.tsconfig.json` in a package directory tells the generator:\n1. **That this package needs a generated tsconfig.json**\n2. **What type of config to generate** (web or node)\n3. **What local overrides to apply**\n\nWithout these marker files, the generator will skip the package entirely.\n\n##### Web Packages (Vite, Vue, React, etc.)\n\nCreate `web.tsconfig.json` in your package root:\n\n```json\n// packages/shadcn-vue-design-system/web.tsconfig.json\n{\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"src*\": [\"./src/*\"]\n    }\n  }\n}\n```\n\n**What this does:**\n- Signals this is a web package\n- Merges with `packages/config/web.tsconfig.json` (which extends `base.tsconfig.json`)\n- Adds local `src*` path mapping\n- Results in a tsconfig with DOM types, Vite types, etc.\n\n##### Node Packages (Backend, Scripts, CLI tools)\n\nCreate `node.tsconfig.json` in your package root:\n\n```json\n// park-app/apps/backend/node.tsconfig.json\n{\n  // Empty is fine - just needs to exist as a marker\n}\n```\n\n**Or with local overrides:**\n\n```json\n// park-app/apps/backend/node.tsconfig.json\n{\n  \"compilerOptions\": {\n    \"types\": [\"node\", \"jest\"]\n  }\n}\n```\n\n**What this does:**\n- Signals this is a Node.js package\n- Merges with `packages/config/node.tsconfig.json` (which extends `base.tsconfig.json`)\n- Results in a tsconfig with Node types, ESNext lib, etc.\n\n##### The Marker File Pattern\n\n```\nyour-package/\n├── package.json                 # Contains dependencies\n├── web.tsconfig.json           # ← MARKER FILE (web) - required for generation\n├── tsconfig.json               # ← GENERATED (do not edit manually)\n├── tsconfig.typecheck.json     # ← GENERATED (do not edit manually)\n└── src/\n    └── index.ts\n```\n\n**Key points:**\n1. **Marker files are checked into source control** - They define the package's config type\n2. **Generated files can be gitignored** - They're regenerated on demand\n3. **Only one marker file per package** - Use either `web.tsconfig.json` OR `node.tsconfig.json`\n4. **Marker files can be minimal** - Even an empty `{}` works\n\n##### When to Use Which Marker File\n\n| Package Type | Marker File | Example Packages |\n|--------------|-------------|------------------|\n| Frontend (Vite/Vue/React) | `web.tsconfig.json` | `packages/shadcn-vue-design-system`, `park-app/apps/webui` |\n| Backend (Fastify/Express) | `node.tsconfig.json` | `park-app/apps/backend`, `ai-agents` |\n| CLI Tools | `node.tsconfig.json` | `monorepo-scripts`, `kubernetes/kubectl-debug` |\n| Shared Libraries (Node) | `node.tsconfig.json` | `packages/logging`, `packages/env` |\n| Shared Libraries (Web) | `web.tsconfig.json` | `packages/design-tokens`, `packages/map2d-vue` |\n\n#### 3. Package Dependencies\n\nThe generator reads `package.json` to filter `compilerOptions.paths`:\n\n```json\n{\n  \"name\": \"@domain/design-system\",\n  \"dependencies\": {\n    \"@domain/design-tokens\": \"workspace:*\"\n  },\n  \"devDependencies\": {\n    \"@domain/config\": \"workspace:*\",\n    \"@domain/eslint\": \"workspace:*\"\n  }\n}\n```\n\n**Result:** Generated `tsconfig.json` will only include paths for:\n- `@domain/design-tokens`\n- `@domain/config`\n- `@domain/eslint`\n- Non-scoped paths (like `src*`)\n\nAll other `@domain/*` or `@park-app/*` paths from the base config are filtered out.\n\n### Configuration Search Strategy\n\nThe generator searches for base configs in these relative locations from each package:\n\n```\n../config\n../../config\n../packages/config\n../../packages/config\n../../../packages/config\n../../../../packages/config\n```\n\nThis allows for both:\n- Monorepo-wide configs at `packages/config/`\n- Sub-project configs at `park-app/packages/config/`, `dnd-3.5/packages/config/`, etc.\n\n### Generated Files\n\nFor each package with a marker file, generates:\n\n1. **`tsconfig.json`** - Merged and filtered configuration\n   - Combines base config + local overrides\n   - Filters `compilerOptions.paths` to only dependencies\n   - Removes `extends` field (fully resolved)\n\n2. **`tsconfig.typecheck.json`** - Type-checking configuration\n   ```json\n   {\n     \"extends\": \"./tsconfig.json\",\n     \"compilerOptions\": {\n       \"noEmit\": true,\n       \"composite\": false,\n       \"skipLibCheck\": true\n     }\n   }\n   ```\n\n### Path Filtering Logic\n\nThe generator automatically filters `compilerOptions.paths` to include only:\n\n1. **Packages in dependencies/devDependencies** from `package.json`\n2. **Non-scoped paths** (paths not starting with `@`)\n\n**Example:**\n\nBase config has 15+ `@domain/*` paths, but package only uses 3:\n\n```json\n// package.json\n{\n  \"dependencies\": { \"@domain/design-tokens\": \"workspace:*\" },\n  \"devDependencies\": {\n    \"@domain/config\": \"workspace:*\",\n    \"@domain/eslint\": \"workspace:*\"\n  }\n}\n\n// Generated tsconfig.json (filtered)\n{\n  \"compilerOptions\": {\n    \"paths\": {\n      \"@domain/design-tokens/*\": [...],\n      \"@domain/config\": [...],\n      \"@domain/eslint\": [...],\n      \"src*\": [\"./src/*\"]  // Non-scoped, always kept\n    }\n  }\n}\n```\n\n### Complete Generation Example\n\nHere's a real-world example showing what gets generated:\n\n#### Input Files\n\n**`packages/shadcn-vue-design-system/package.json`:**\n```json\n{\n  \"name\": \"@domain/design-system\",\n  \"dependencies\": {\n    \"@domain/design-tokens\": \"workspace:*\"\n  },\n  \"devDependencies\": {\n    \"@domain/config\": \"workspace:*\",\n    \"@domain/eslint\": \"workspace:*\"\n  }\n}\n```\n\n**`packages/shadcn-vue-design-system/web.tsconfig.json`** (marker file):\n```json\n{\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"src*\": [\"./src/*\"]\n    }\n  }\n}\n```\n\n**`packages/config/base.tsconfig.json`** (15+ paths):\n```json\n{\n  \"compilerOptions\": {\n    \"paths\": {\n      \"@domain/env\": [\"./packages/env/src/index\", \"../env/src/index\", ...],\n      \"@domain/vite\": [\"./packages/vite/src/index\", ...],\n      \"@domain/logging\": [\"./packages/logging/src/index\", ...],\n      \"@domain/config\": [\"./packages/config/src/index\", ...],\n      \"@domain/design-tokens/*\": [\"./packages/design-tokens/*\", ...],\n      \"@domain/eslint\": [\"./packages/eslint\", ...],\n      \"@domain/type-utils\": [\"./packages/type-utils/src/index\", ...],\n      \"@domain/map2d/*\": [\"./packages/map2d/src/*\", ...],\n      \"@domain/worker-streams\": [\"./packages/worker-streams/src/index\", ...],\n      // ... 6 more @domain/* paths\n    }\n  }\n}\n```\n\n**`packages/config/web.tsconfig.json`:**\n```json\n{\n  \"extends\": \"./base.tsconfig.json\",\n  \"compilerOptions\": {\n    \"types\": [\"vite/client\", \"vitest/globals\"],\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\", \"WebWorker\"]\n  }\n}\n```\n\n#### Generated Output\n\n**`packages/shadcn-vue-design-system/tsconfig.json`** (auto-generated):\n```json\n{\n  \"compilerOptions\": {\n    \"resolveJsonModule\": true,\n    \"strictNullChecks\": true,\n    \"esModuleInterop\": true,\n    \"target\": \"ESNext\",\n    \"module\": \"ESNext\",\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\", \"WebWorker\"],\n    \"moduleResolution\": \"bundler\",\n    \"strict\": true,\n    \"paths\": {\n      \"@domain/config\": [\n        \"./packages/config/src/index\",\n        \"../config/src/index\",\n        \"../packages/config/src/index\",\n        \"../../packages/config/src/index\",\n        \"../../../packages/config/src/index\"\n      ],\n      \"@domain/design-tokens/*\": [\n        \"./packages/design-tokens/*\",\n        \"../design-tokens/*\",\n        \"../packages/design-tokens/*\",\n        \"../../packages/design-tokens/*\",\n        \"../../../packages/design-tokens/*\"\n      ],\n      \"@domain/eslint\": [\n        \"./packages/eslint\",\n        \"../eslint\",\n        \"../packages/eslint\",\n        \"../../packages/eslint\",\n        \"../../../packages/eslint\"\n      ],\n      \"src*\": [\"./src/*\"]\n    },\n    \"types\": [\"vite/client\", \"vitest/globals\"],\n    \"baseUrl\": \".\"\n  },\n  \"include\": [\"src\"],\n  \"exclude\": [\"node_modules\", \"dist\", \"build\"]\n}\n```\n\n**Notice:**\n- ✅ All compiler options from `base.tsconfig.json` merged\n- ✅ Web-specific settings from `web.tsconfig.json` merged\n- ✅ Local `src*` path from marker file included\n- ✅ Only 3 `@domain/*` paths (matching package.json dependencies)\n- ❌ 12+ other `@domain/*` paths filtered out\n\n**`packages/shadcn-vue-design-system/tsconfig.typecheck.json`** (auto-generated):\n```json\n{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"noEmit\": true,\n    \"composite\": false,\n    \"declaration\": false,\n    \"declarationDir\": null,\n    \"emitDeclarationOnly\": false,\n    \"skipLibCheck\": true\n  }\n}\n```\n\n## Configuration\n\nYou can configure the tool's behavior via a `monorepo.config.json` file:\n\n```json\n{\n  \"version\": \"1.0.0\",\n  \"tsconfig\": {\n    \"enabled\": true,\n    \"types\": [\"web\", \"node\", \"builder\"],\n    \"configLocations\": [\n      \"../config\",\n      \"../../config\",\n      \"../packages/config\",\n      \"../../packages/config\"\n    ],\n    \"generateTypecheck\": true,\n    \"excludePatterns\": [\n      \"**/node_modules/**\",\n      \"**/dist/**\",\n      \"**/build/**\"\n    ],\n    \"rootConfigDir\": \"packages/config\",\n    \"validation\": {\n      \"checkMissing\": true,\n      \"checkExtends\": true,\n      \"checkConsistency\": true,\n      \"strictMode\": false\n    }\n  },\n  \"packageJson\": {\n    \"enabled\": true,\n    \"scripts\": {\n      \"enforce\": false,\n      \"required\": {\n        \"build\": \"unbuild\",\n        \"lint\": \"eslint .\",\n        \"types\": \"tsc -p tsconfig.typecheck.json\"\n      }\n    },\n    \"fields\": {\n      \"required\": [\"name\", \"version\"]\n    }\n  },\n  \"deps\": {\n    \"checkUnused\": true,\n    \"checkMissing\": true,\n    \"checkVersionMismatch\": true\n  }\n}\n```\n\n### Configuration Options\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `enabled` | boolean | `true` | Enable TypeScript config generation |\n| `types` | array | `['web', 'node', 'builder']` | Config types to generate |\n| `configLocations` | array | See config | Possible locations for app-specific configs |\n| `generateTypecheck` | boolean | `true` | Generate tsconfig.typecheck.json files |\n| `excludePatterns` | array | node_modules, dist, build | Patterns to exclude when scanning |\n| `rootConfigDir` | string | `'packages/config'` | Root config directory to skip |\n| `validation.checkMissing` | boolean | `true` | Check for missing tsconfig.json files |\n| `validation.checkExtends` | boolean | `true` | Validate extends chains |\n| `validation.checkConsistency` | boolean | `true` | Check compiler options consistency |\n| `validation.strictMode` | boolean | `false` | Enforce strict validation rules |\n\n## Health Checks\n\n### Check Command\n\nThe `check` command scans your monorepo for TypeScript configuration issues:\n\n```bash\nmono tsconfig check\n```\n\n**What it checks:**\n- ✅ Missing `tsconfig.json` files (when marker files exist)\n- ✅ Missing `tsconfig.typecheck.json` files\n- ✅ Broken extends chains\n- ✅ Circular extends references\n\n**Example output:**\n```\n✓ Checked 45 packages\n\nIssues found:\n\nMEDIUM:\n  [missing-tsconfig] packages/new-feature/tsconfig.json: Package has base config but missing generated tsconfig.json\n    Fix: Run: mono tsconfig generate\n\nLOW:\n  [missing-typecheck-config] packages/shadcn-vue-design-system/tsconfig.typecheck.json: Missing typecheck configuration\n    Fix: Run: mono tsconfig generate\n\nSummary: 2 issue(s) - Critical: 0, High: 0, Medium: 1, Low: 1\n```\n\n**Auto-fix mode:**\n```bash\nmono tsconfig check --fix\n```\n\nThis will automatically regenerate configurations to fix issues.\n\n### Validate Command\n\nThe `validate` command performs deeper validation of TypeScript configurations:\n\n```bash\nmono tsconfig validate\n```\n\n**What it validates:**\n- ✅ JSON syntax correctness\n- ✅ Extends chain validity\n- ✅ Circular reference detection\n- ✅ Missing compiler options (strict mode)\n- ✅ Non-strict TypeScript settings (strict mode)\n\n**Strict mode validation:**\n```bash\nmono tsconfig validate --strict\n```\n\nIn strict mode, additional checks are performed:\n- Validates that `compilerOptions` exists\n- Checks that `strict: true` is set\n- Reports missing critical compiler options\n\n**Validate specific files:**\n```bash\nmono tsconfig validate packages/shadcn-vue-design-system/tsconfig.json park-app/apps/webui/tsconfig.json\n```\n\n## Required Files Enforcement\n\nEvery workspace package must have certain files at the same level as its `package.json`. Enforced by the `files` config section (schema-driven, with built-in defaults).\n\n**Default rules:**\n\n| Rule | One of | Content enforcement | Created on fix |\n|------|--------|---------------------|----------------|\n| `eslint-config` | `eslint.config.mjs`, `eslint.config.ts` | Must contain `@adddog/eslint` | `eslint.config.mjs` with the shared-config import |\n| `tsconfig-marker` | `web.tsconfig.json`, `node.tsconfig.json`, `builder.tsconfig.json` | None (markers carry per-package overrides) | `{}` — web vs node picked by dependency heuristic (vue/react/vite/etc → web) |\n\n**Check:**\n```bash\nmono config check          # flags missing-eslint-config, invalid-eslint-config, missing-tsconfig-marker\nmono config check --json   # machine-readable\n```\n\n**Fix:**\n```bash\nmono config fix --add-missing            # creates missing files\nmono config fix --add-missing --dry-run  # preview\n```\n\nCreated `eslint.config.mjs` content:\n```js\nimport config from \"@adddog/eslint\";\n\nexport default config();\n```\n\n**Customizing rules** in your config file:\n```json\n{\n    \"files\": {\n        \"enabled\": true,\n        \"rules\": [\n            {\n                \"name\": \"eslint-config\",\n                \"anyOf\": [\"eslint.config.mjs\", \"eslint.config.ts\"],\n                \"createAs\": \"eslint.config.mjs\",\n                \"defaultContent\": \"import config from \\\"@adddog/eslint\\\";\\n\\nexport default config();\\n\",\n                \"mustContain\": \"@adddog/eslint\",\n                \"severity\": \"medium\",\n                \"ignorePackages\": [\"@adddog/eslint\"]\n            }\n        ]\n    }\n}\n```\n\nRules without `createAs` listing both `web.tsconfig.json` and `node.tsconfig.json` use the dependency heuristic on fix; other rules default to the first `anyOf` entry. Existing files are never overwritten — `mustContain` violations are report-only.\n\n## Practical Workflows\n\n### Setting Up a New Package\n\n1. **Create the marker file** based on package type:\n   ```bash\n   # For a web package\n   echo '{\"compilerOptions\":{\"baseUrl\":\".\",\"paths\":{\"src*\":[\"./src/*\"]}}}' > web.tsconfig.json\n\n   # For a node package\n   echo '{}' > node.tsconfig.json\n   ```\n\n2. **Add dependencies** to `package.json`:\n   ```json\n   {\n     \"devDependencies\": {\n       \"@domain/config\": \"workspace:*\",\n       \"@domain/eslint\": \"workspace:*\"\n     }\n   }\n   ```\n\n3. **Generate the config**:\n   ```bash\n   mono tsconfig generate --verbose\n   ```\n\n4. **Verify** the generated `tsconfig.json` only includes paths for your dependencies\n\n### CI/CD Integration\n\nAdd TypeScript config health checks to your CI pipeline:\n\n```yaml\n# .github/workflows/ci.yml\n- name: Check TypeScript configurations\n  run: |\n    mono tsconfig check\n    mono tsconfig validate\n```\n\nOr use strict mode for production:\n\n```yaml\n- name: Validate TypeScript configurations (strict)\n  run: mono tsconfig validate --strict\n```\n\n### Regular Maintenance\n\nRun these commands periodically to keep configs healthy:\n\n```bash\n# Check for issues\nmono tsconfig check\n\n# Regenerate all configs\nmono tsconfig generate --force\n\n# Validate everything\nmono tsconfig validate\n```\n\n### Adding a New Dependency\n\nWhen you add a new workspace dependency:\n\n```bash\n# 1. Add to package.json\npnpm add -D @domain/logging\n\n# 2. Regenerate configs to pick up the new path\nmono tsconfig generate\n\n# 3. The generated tsconfig.json now includes @domain/logging paths\n```\n\n### Debugging Generated Configs\n\n```bash\n# See exactly what's being generated\nmono tsconfig generate --verbose\n\n# Preview without writing files\nmono tsconfig generate --dry-run --verbose\n\n# Force regeneration if files seem stale\nmono tsconfig generate --force\n\n# Check what's wrong\nmono tsconfig check --verbose\n\n# Validate configurations\nmono tsconfig validate --verbose\n```\n\n## Troubleshooting\n\n### My package's tsconfig.json wasn't generated\n\n**Check:**\n1. ✅ Does the package have `web.tsconfig.json` OR `node.tsconfig.json`?\n2. ✅ Does the package have a `package.json`?\n3. ✅ Is there a `packages/config/` directory with base configs?\n\n**Solution:** Add the appropriate marker file (`web.tsconfig.json` or `node.tsconfig.json`)\n\n### The generated tsconfig.json has too many paths\n\n**Symptom:** You see paths for packages you don't use\n\n**Cause:** Those packages might be in your `dependencies` or `devDependencies`\n\n**Solution:**\n1. Check `package.json` - remove unused dependencies\n2. Regenerate: `mono tsconfig generate`\n\n### The generated tsconfig.json is missing a path I need\n\n**Symptom:** Import fails but the package isn't in `compilerOptions.paths`\n\n**Cause:** The package isn't in your `package.json` dependencies\n\n**Solution:**\n1. Add to `package.json`: `pnpm add @domain/missing-package`\n2. Regenerate: `mono tsconfig generate`\n\n### I want to customize my tsconfig.json\n\n**DON'T:** Edit `tsconfig.json` directly (it gets overwritten)\n\n**DO:** Add customizations to your marker file:\n\n```json\n// web.tsconfig.json or node.tsconfig.json\n{\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"src*\": [\"./src/*\"],\n      \"@custom/alias\": [\"./src/custom\"]\n    },\n    \"types\": [\"vite/client\", \"custom-types\"]\n  },\n  \"include\": [\"src\", \"custom-dir\"]\n}\n```\n\nThese overrides will be merged into the generated `tsconfig.json`.\n\n### How do I add a new monorepo package to the base config?\n\nWhen you create a new shared package like `@domain/new-package`:\n\n1. **Add the path to `packages/config/base.tsconfig.json`**:\n   ```json\n   {\n     \"compilerOptions\": {\n       \"paths\": {\n         \"@domain/new-package\": [\n           \"./packages/new-package/src/index\",\n           \"../new-package/src/index\",\n           \"../packages/new-package/src/index\",\n           \"../../packages/new-package/src/index\",\n           \"../../../packages/new-package/src/index\"\n         ]\n       }\n     }\n   }\n   ```\n\n2. **Regenerate all configs**:\n   ```bash\n   mono tsconfig generate\n   ```\n\n3. **The path will only appear** in packages that have `@domain/new-package` in their `package.json`\n\n### Configuration is valid but TypeScript still has errors\n\n**Symptom:** `mono tsconfig validate` passes but `tsc` reports errors\n\n**Possible causes:**\n1. **Extends chain is broken in a non-obvious way**\n   - Run: `mono tsconfig check` to detect broken chains\n\n2. **Paths are correct but files don't exist**\n   - Verify the actual files exist at the paths specified\n\n3. **Build order issues**\n   - Some packages may need to be built before others can resolve types\n\n4. **Stale configuration**\n   - Try: `mono tsconfig generate --force`\n\n## Dependency Management\n\n### Upgrade a Single Dependency\n\nUpgrade a specific dependency across all packages in the monorepo:\n\n```bash\n# Upgrade to latest major version (default)\nmono deps upgrade typescript --major -w\n\n# Upgrade to latest minor version\nmono deps upgrade react --minor -w\n\n# Upgrade to latest patch version\nmono deps upgrade lodash --patch -w\n\n# Preview without applying changes\nmono deps upgrade zod --dry-run\n\n# Upgrade and install\nmono deps upgrade vitest --minor -w --install\n```\n\n**Options:**\n\n| Option | Description |\n|--------|-------------|\n| `--major` | Allow major version upgrades (default) |\n| `--minor` | Only minor version upgrades |\n| `--patch` | Only patch version upgrades |\n| `-w, --write` | Write changes to package.json files |\n| `--install` | Run install after upgrading |\n| `--dry-run` | Preview the command without executing |\n\n### Update All Dependencies\n\n```bash\n# Interactive update mode\nmono deps update -i\n\n# Update all with major versions\nmono deps update --major -w\n\n# Preview available updates\nmono deps preview\n\n# Update specific packages\nmono deps update --filter react vue\n```\n\n### Check Dependencies\n\n```bash\n# Check for dependency issues\nmono deps check --all\n\n# Check for unused dependencies\nmono deps check --unused\n\n# Check for version mismatches\nmono deps check --mismatches\n```\n\n## Scripts\n\n| Script | Description |\n|--------|-------------|\n| `build` | `unbuild` |\n| `lint` | `eslint .` |\n| `lint:fix` | `eslint --fix .` |\n| `types` | `tsc -p tsconfig.typecheck.json` |\n\n","readmeFilename":"README.md"}