{"_id":"bluebird-nestjs","_rev":"28-08f133c0ffca50b89c8c7845435598dd","name":"bluebird-nestjs","dist-tags":{"latest":"0.1.33"},"versions":{"0.1.0":{"name":"bluebird-nestjs","version":"0.1.0","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.0","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"34990fbfec3a0b287331680276b77be83abf8106","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.0.tgz","fileCount":17,"integrity":"sha512-1lr1fCzFD0hPdrOwkPblJYqZHdU//NGtccKzLqTMqCSa/BV/1svRfydXyJQ6SXPUrNFC18eD5C6nhuNc/FhSCw==","signatures":[{"sig":"MEUCIESLUvl+FOnjNRfnVLtolKEMO+rYT7Fa4Bu3z5Jo/TuqAiEAwYilCkfp/t2mAOZ6AJMfoHYpoxB+q26dxBHveb/5V+4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":614213},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"gitHead":"ffd1bdec781dcc9f6bd4fd687c140e7400377dfd","scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"tsdown","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.0_1772496704548_0.20117774863229831","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"bluebird-nestjs","version":"0.1.1","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.1","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"fb3f35b17cd86f872fb949506fcb419551632afc","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.1.tgz","fileCount":18,"integrity":"sha512-I6Hq3uSvK8Vq30vx1OjC9C97j8CpKbQ9ntiEEED4iz39dwFTc/65Gir+egZF934L3LQ5SDsmTP0yR5gyiSsARw==","signatures":[{"sig":"MEUCIFgavgeLPcDKUUh9mRbE76a0fGHC5tk9B8yREQ2iEBDcAiEA9gwgWdOjRFze4LfW0LAaG9++fxoCbLoZ/C01RHaGEVs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":655334},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"gitHead":"1b6c2bd07c7a9722499bcbc4ef8d6e61cf28ac55","scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"tsdown && cp ../../README.md .","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.1_1772499810218_0.10310581899753624","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"bluebird-nestjs","version":"0.1.2","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.2","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"47ea8f747b0e03d078d02c649de96c2936b9f89b","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.2.tgz","fileCount":18,"integrity":"sha512-7+sH/GQVgA1MG8jtc4joIMtmgZkZftpV/Rbs6JqUQKOOy6bC34RXovxIviha9yjfuJacG3BiQXEiiWh2bWnURQ==","signatures":[{"sig":"MEUCIC3MURvnLyr14hvlk5i2hoW0HCnerPlq2anKojCDzVn6AiEAuVi9ZdGz97lYO4398lmfgVwDcIk7YomSD70oSKuYNhA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":659049},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"gitHead":"cced516dcda1ef28689652f920ae6b426e74112b","scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"tsdown && cp ../../README.md .","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.2_1772582782813_0.00003561284559205902","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"bluebird-nestjs","version":"0.1.3","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.3","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"0941a03f92ac9b008100c7b3c247e6a675837e34","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.3.tgz","fileCount":18,"integrity":"sha512-N4GaWnqrh4tMDVyACOAlKULXXhd1WsrVn1F04Zg0HfWp2CGI40nED6McfQWzlWmKFB672rE+7BfDYtv8tEhtPQ==","signatures":[{"sig":"MEYCIQDORr7EGWycM59Wuhj4uaP08ysI9SpGqJ+v5vXuJay4DQIhAIv6iegp6RK1j0VjuJV15eC1sP45AWEDjh3C+l5Mv67k","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":662944},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"gitHead":"537aa567e2c4d3754ebff1b066374654e6e50b7b","scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"tsdown && cp ../../README.md .","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.3_1772728479416_0.0035365644708988953","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"bluebird-nestjs","version":"0.1.5","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.5","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"6d1edc8091e88096ed1f1ce1f74b276367af321d","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.5.tgz","fileCount":18,"integrity":"sha512-ARBM43ZavIB904WikvXNGrLVVQSqpqP5WbhMqdXP1o4f8KoLNkSP39u/5KJimgNt8TEiXDm8IvqBigqlH3Gq3w==","signatures":[{"sig":"MEUCIQDuleT9FkXsWNOcBKrD+3hDXGE4EJ2U8shlnukZmAZNKgIgFIWIijtMFkxCpH8IOTkzaOxIsedk5RBusCaZOnTruK4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":675124},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"gitHead":"843f63579a9e941a5615fee96fe40552bb663c7d","scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"tsdown && cp ../../README.md .","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.5_1772843714683_0.974257606507321","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"bluebird-nestjs","version":"0.1.8","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.8","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"a4c28c1e54daac72b847ebcf34424562eecdfcd3","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.8.tgz","fileCount":18,"integrity":"sha512-64sfcKcQ9e80Y668vm/dLaIhPzm/vxmbn8LOhf4mvu0rDbCCmwsJhHN69pmDwGIgOLXnQ8lOa24JgUYrCN42Gg==","signatures":[{"sig":"MEQCIAci5yXbMz4Y+0ua+oBp0hhS7wMQtrXAz/8Vqa67t5+eAiAAngJzV55wSdF3aw+JVjS9EQeNo3Mt3v6cVVky0wqqWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":688157},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"gitHead":"1241b338e9b519d041b1d5b0ca482ec5c23279c2","scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"tsdown && cp ../../README.md .","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.8_1772846336660_0.21675372303534002","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"bluebird-nestjs","version":"0.1.11","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.11","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"69c11ac4c2a6b2ddada130de0d56a469883a20d1","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.11.tgz","fileCount":18,"integrity":"sha512-+2JhEcFQPrDqTR6seLxVwzc4OrSuFm3bllHH7SOKOCF5Kyout8N2bd5vcvzofmFv3KgVK8FcQawhs3a3U0zcLA==","signatures":[{"sig":"MEYCIQC1KR5qY1vM6M/3/PuwHWG/loR88H9npQktiGuIovCYKQIhANQTeLfCF1bvZaNBDUOGmAu4ShvKKoEsaeShP3gc3n8i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":708216},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"gitHead":"3466714ddfa20c8881bd246f3dc76b2c43430a09","scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"tsdown && cp ../../README.md .","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.11_1772900042344_0.8773572723014076","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"bluebird-nestjs","version":"0.1.12","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.12","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"130f6ef35d361606088cfe2cc8a2aacbbd3b6d79","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.12.tgz","fileCount":18,"integrity":"sha512-hK3Kit/YTZ+PUiwNmK9sSQ2aCBuND4avPPbrLOLq6c3jyXyXieerRcnnTYeQ6rLxZ4SMI7gGZpMDL2yGZNDh9A==","signatures":[{"sig":"MEYCIQD8jW6jZ/4IwNHFGMmbGOeD2u1tEJp9lAw2FJxEkez+GQIhAKfrNw9+FeDhu7y+H7zssJYpD7yc52HfRUYIfpXbjCFA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":712660},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"gitHead":"4ea4f442c620c409eb242303875f8fa03dcdb16f","scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"tsdown && cp ../../README.md .","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.12_1772912614883_0.05554597547396112","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"bluebird-nestjs","version":"0.1.14","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.14","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"b43c5d551fa41f0cd2f0aa48e7888d6660507f5c","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.14.tgz","fileCount":18,"integrity":"sha512-r8iSUUhxc4SZOTpBhEn3TN1ULvHuRhAtmR8eT5RIfDgX8LPU2NSBa/DfufjulUSb9hFTElifdMxaKEIuc2Ev9Q==","signatures":[{"sig":"MEUCIQDTx8K3ATqslVbchkO0OphtzRGsmb2dHi8vdIhHjypZwwIgB0SEzhQ583/qyjtcjxVN2ibynhEG6DKoz6uNKGIfAWY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":722050},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"gitHead":"cd3cb495284c502fcc07c97f805a32f6d85e3105","scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"tsdown && cp ../../README.md .","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.14_1772913561461_0.4134969181138861","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"bluebird-nestjs","version":"0.1.15","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.15","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"999ede5b36afdf7f336bbda1973ce5bfa8aa8a66","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.15.tgz","fileCount":18,"integrity":"sha512-mKGpro86tGrfAceDXwQRBb0UgMtCjhghls2DdBgCb1azp9IZbVPAxcEhUnt0RgZF7wY+Fwmc4YWTyrYGEyZc7Q==","signatures":[{"sig":"MEQCIFL9PAqci6WhJO1fAbaN31jkLlz2YTNvRr/fcQcCielZAiAy2FaMzMxTNzRB41zys0RMHOqpm6vdQzdBcg1jgQgdpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":722716},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"gitHead":"9fa18510de9b6d162af8e4629dea9a2d93d39b5c","scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"tsdown && cp ../../README.md .","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.15_1772917309107_0.9148501794368422","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"bluebird-nestjs","version":"0.1.16","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.16","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"a8ddc7d1e091e2d74d46f8297cfc8490e7122efa","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.16.tgz","fileCount":18,"integrity":"sha512-Bqd5J5pfbbolPm9c/cBoMm7n77zVUOiTbrsx2wFcHvfSHDfp2G2EE4k+Wl/3wqJx/mUGNju7DkAOsy7RplVSWQ==","signatures":[{"sig":"MEYCIQDQ3rXCYWPzmzZMZxSTM6HIkdBMm8PMiYnc+Jst706UJQIhAMomtfGN362c3POnMUbLR2PbAVWngQf7vLSd4WzGQ2Kz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":731009},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"gitHead":"9c4fe53c9dd7c231d363d8a7159577a26bf40ff6","scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"tsdown && cp ../../README.md .","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.16_1772918345771_0.8843017331535503","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"bluebird-nestjs","version":"0.1.17","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.17","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"0fc97a5029081301de1d4f994bea5c48ed79cb4f","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.17.tgz","fileCount":18,"integrity":"sha512-ncq4jtrVAZrRKcb2VMMKnwtXb/H6TnhyHj1bK6CwFfTUcNsKm4WTfYKFx+FCKxDSeg3au6x/wE5zFLrBL4T3cQ==","signatures":[{"sig":"MEUCIHY2PczEfx01G+yXBDhg0HhzstQyDP6ZYEfE9UbYrjlJAiEAggeDBKeOgJ+LjPIbxfljByk59bNyskrQgMFqH/sqU9A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":739144},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"gitHead":"d0284bb59f6f97a2ab7a0ffaba8fc18249a7b07c","scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"tsdown && cp ../../README.md .","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.17_1773000456278_0.7410011446445268","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"bluebird-nestjs","version":"0.1.18","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.18","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"ad8c9fc80d7114253d84e919aeeb24622caa9361","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.18.tgz","fileCount":18,"integrity":"sha512-e3qHsLQoQIHYomCQ9UZiywQoH+vPwRC0ci5qk1IN9/cvPIMZvad+gq2HwD3fyc5GWUSl6lXCTa4cs+pwyF1iSg==","signatures":[{"sig":"MEYCIQDHdfeWkWIggaboC6upnQSMuVKxNbbyJLGhsLPfgHUyowIhAP7P5N6HMC3dlR+5MPtpivSD3QSIHnNEMo8DYLyZNthK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":740691},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"gitHead":"bbd9ae78d1b811afe6a37690d47f6faed535e28b","scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"tsdown && cp ../../README.md .","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.18_1773009650943_0.22694808666985233","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"bluebird-nestjs","version":"0.1.19","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.19","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"731933c19d126001892c9c78ac27eabacea568af","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.19.tgz","fileCount":18,"integrity":"sha512-19JyEcq8roiIh4XYXiX1FsLjrWGTua/mzviErH+RCTgqM6Lrkka6lNZJYkO562ILya++P8V5UAHVg+YzuZ/fjA==","signatures":[{"sig":"MEUCIQCVMWprxJgRYBZp6F894e2Fk2T881ZwY/okAxogZMJlBwIgejJyuoA/D5JaxEAVIMdWGRvF1dvFEZ2XQ8Rxr3avKgM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":743877},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"gitHead":"7fa19da706c0eee3f2c7e269a083fac637e36106","scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"tsdown && cp ../../README.md .","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.19_1773010254222_0.278371637868015","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"bluebird-nestjs","version":"0.1.20","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.20","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"282a75fcaddf1619d1020d4c8242e81f2657915b","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.20.tgz","fileCount":18,"integrity":"sha512-2PrVhbJa3PdNeB+PqLSCJMI+tmQRzmif/SoVkuHxlXy5KAiFBRzL0EJqWVAaJjhQRFLjAPRo5P6nWtkm9frTmA==","signatures":[{"sig":"MEUCIQDfDsmOljMX/xfsYJJRy4e+Fm5KWiveNMjnTaI0erXCEQIgZqVy7HKwKx8xj1T8mgxYuECUmdF6UqKLlc2ssSB7UF0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":744279},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"gitHead":"e07a77e19990c63474072b2bbfbee48226a58923","scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"tsdown && cp ../../README.md .","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.20_1773011426938_0.12958945781408926","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"bluebird-nestjs","version":"0.1.21","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.21","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"6e748c450732ced65416cfaabf345d574003ecab","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.21.tgz","fileCount":18,"integrity":"sha512-wiUjcZVZ+mzhUktX+xUbgq+cbcf6zSKqCl74lEn+S4K+Po/hLaerHRtz5EgA93zs98h5AEDvYHC3E7YFCrRT1Q==","signatures":[{"sig":"MEUCIQCAdYNIrRfh+t9Fvw1PUp5Zh3GdxSfcwzV5AitYvDcN4QIgJ9/WlsdF9p5MIT+kL1ap5unElQhm8wrnHrwqK/eDJoM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":746056},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"gitHead":"6dfb34750bda870fa3bb3deabaf01f82f6845f4a","scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"tsdown && cp ../../README.md .","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.21_1773012630872_0.9763528034298494","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"bluebird-nestjs","version":"0.1.22","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.22","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"3bab8731a4af297e530d59cbc4e4800f40eea227","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.22.tgz","fileCount":18,"integrity":"sha512-2uooxZT12wKK7tHYkt7A7rsWwIAUA5DzBg0EX8TMVfT7bY0XoC0SDhbsf+roLbUEm/u5u+PSMOmL02MAd8ZByg==","signatures":[{"sig":"MEQCIEO/1tRSIc7McwXEtmc7mZOQuHNmoQFqjXY5x7OEmlL5AiBWdBdt4jL9qc2jA3QfUz1cqAe7NHFUR4nHi3xHOQuJNQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":746119},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"gitHead":"8be672796e71919a73fb2e66c9440c9eb050a71a","scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"tsdown && cp ../../README.md .","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.22_1773014576827_0.2810016368867554","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"bluebird-nestjs","version":"0.1.23","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.23","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"4114a9e1bcd3d78aefde9b5f7cc1fa59cf15cd3f","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.23.tgz","fileCount":18,"integrity":"sha512-dn8vkn6KbMpOnqcWOu180gGfRJ8MQAMYrQGsJUPahFR5SG9KF+D3BQGmeeaNM6LTYKUN9wyQ5gTO5Lj00xJ9gg==","signatures":[{"sig":"MEYCIQCXT2B5TktXHbuVpU3rMp+5UZmQpYHX28RbgaBJMHkd4QIhAK5y43bTFfxXgvcnGZSMDQRy9dADs8fUDGuy56Q/ZnG6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":746064},"main":"./dist/index.js","type":"module","_from":"file:bluebird-nestjs-0.1.23.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"_resolved":"/tmp/cd22ce3198ede8eb28b408a030025b97/bluebird-nestjs-0.1.23.tgz","_integrity":"sha512-dn8vkn6KbMpOnqcWOu180gGfRJ8MQAMYrQGsJUPahFR5SG9KF+D3BQGmeeaNM6LTYKUN9wyQ5gTO5Lj00xJ9gg==","repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.8.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ora":"^8.2.0","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.23_1773534348190_0.40154507205088974","host":"s3://npm-registry-packages-npm-production"}},"0.1.24":{"name":"bluebird-nestjs","version":"0.1.24","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.24","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"6ab7d9bdc8f2b3d5ae624fb4c75427ee3e8fc6eb","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.24.tgz","fileCount":18,"integrity":"sha512-1SblxaxZnwvEEeVD/AdA5zXvENbypTFX85XFIqN9XqYohN8KXAjkKR4Zd6r+g/85HXnltTz+kNbkdRhBe/lKUQ==","signatures":[{"sig":"MEUCIQDDJ7yBcrbfuxZ1qXHeVXco/pjaYZj85LMAaHzrvS6ycgIgCUQRx//WdQJ1RyZed1uKhr/iJJLpFneQOB7Mld8cOqs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":746180},"main":"./dist/index.js","type":"module","_from":"file:bluebird-nestjs-0.1.24.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"_resolved":"/tmp/d42e1b6c9703eb2009bc02c50f9622e1/bluebird-nestjs-0.1.24.tgz","_integrity":"sha512-1SblxaxZnwvEEeVD/AdA5zXvENbypTFX85XFIqN9XqYohN8KXAjkKR4Zd6r+g/85HXnltTz+kNbkdRhBe/lKUQ==","repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.8.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ora":"^8.2.0","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.24_1773696335857_0.14401643132121467","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"bluebird-nestjs","version":"0.1.25","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.25","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"fc43e1455cd755fb63a735e37a4c71b0b654f9f8","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.25.tgz","fileCount":25,"integrity":"sha512-E0S3lyJjWeQY0n63XePllaA7PyfLbUoAdauF8aZP7inFYhvrnGU9VYbhoviIIhyE/GWeHMGrYS7lS8oCLqPHIA==","signatures":[{"sig":"MEYCIQD2PwSZb0cAG0MnStHwP2r1teR0GQHiiDRK+k3xmhrpuAIhAKx+hQgERs0wMOrcD5IOsr/CZhTHAcWDVdpyCyuP+111","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":829522},"main":"./dist/index.js","type":"module","_from":"file:bluebird-nestjs-0.1.25.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"_resolved":"/tmp/9e2089a309c1930c885f4954d361a22b/bluebird-nestjs-0.1.25.tgz","_integrity":"sha512-E0S3lyJjWeQY0n63XePllaA7PyfLbUoAdauF8aZP7inFYhvrnGU9VYbhoviIIhyE/GWeHMGrYS7lS8oCLqPHIA==","repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.8.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ora":"^8.2.0","zod":"^4.3.6","glob":"^13.0.6","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.25_1773777684847_0.06206337212469393","host":"s3://npm-registry-packages-npm-production"}},"0.1.26":{"name":"bluebird-nestjs","version":"0.1.26","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.26","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"97c06aa2b81d390168a129f4c5d96948aec567a8","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.26.tgz","fileCount":25,"integrity":"sha512-Oz/lXM/GK6KCRrGmWVEpleSrP5N8yqU1bUn4qUCxHm8M7PLk4tBBTNpVs9zBFzt25BwHq9vgKrI6FZjDb586Wg==","signatures":[{"sig":"MEUCIBo0I5c0iqRtD/bfi1NZljG3jwhxqocg2+cVu2kEKtxBAiEAkwZMmIg4vUEWD8zqlt3I51t/+aBjMnN1AXyQjw2Y+pg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":830007},"main":"./dist/index.js","type":"module","_from":"file:bluebird-nestjs-0.1.26.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"_resolved":"/tmp/e61169720c4d2d4475ba0e60aaedb9b5/bluebird-nestjs-0.1.26.tgz","_integrity":"sha512-Oz/lXM/GK6KCRrGmWVEpleSrP5N8yqU1bUn4qUCxHm8M7PLk4tBBTNpVs9zBFzt25BwHq9vgKrI6FZjDb586Wg==","repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.8.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ora":"^8.2.0","zod":"^4.3.6","glob":"^13.0.6","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.26_1773781819636_0.51607890949588","host":"s3://npm-registry-packages-npm-production"}},"0.1.27":{"name":"bluebird-nestjs","version":"0.1.27","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.27","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"2af05c099739aa121d7f4a4fb2095e7c21687373","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.27.tgz","fileCount":25,"integrity":"sha512-26CXSiqiV04dnUZ7hyX35BKPHksGTG7OtHbV5KhzUdgOA47M6+BOG3+jdo+eHdQ2MwB7xRsCtt8Ba1/RBLSXjg==","signatures":[{"sig":"MEQCIFEVaXRXsQlm9WJI6uFa697RvdLVweGAYQ8JFfmQ0W+hAiBdz0lMJRcq58azJsp8mYoiqHjvz7vdRTIqzkCqVBW6Ig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":830007},"main":"./dist/index.js","type":"module","_from":"file:bluebird-nestjs-0.1.27.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"_resolved":"/tmp/d7d97ddb6d253a3d215d52dd822f31fa/bluebird-nestjs-0.1.27.tgz","_integrity":"sha512-26CXSiqiV04dnUZ7hyX35BKPHksGTG7OtHbV5KhzUdgOA47M6+BOG3+jdo+eHdQ2MwB7xRsCtt8Ba1/RBLSXjg==","repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.8.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ora":"^8.2.0","zod":"^4.3.6","glob":"^13.0.6","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.27_1773784737454_0.18606056606914922","host":"s3://npm-registry-packages-npm-production"}},"0.1.28":{"name":"bluebird-nestjs","version":"0.1.28","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.28","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"92978b5a7a5a45e63781c7107ea489b19a2667ad","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.28.tgz","fileCount":25,"integrity":"sha512-Z5TltUj+9TKG5BYTaiJwje0Edu8YAwh2BHPp7yyh+k3Eon4C7jrPP42+7AXj64XoSx4at293J/zj+TRj8g0ubA==","signatures":[{"sig":"MEQCIFbyhPSwfaIFRFKn6gYb1ItBV5hpMVoQBy9kJyjTpStWAiAFWY9v6N1avKTgMaZ4eOPyiFuisDmUXMvi4dqnI4Pj1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":832299},"main":"./dist/index.js","type":"module","_from":"file:bluebird-nestjs-0.1.28.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"_resolved":"/private/var/folders/q0/4x2kcths2g58y28jxsmgr6q00000gp/T/8d6175df162832ab81cc1650f3222ec1/bluebird-nestjs-0.1.28.tgz","_integrity":"sha512-Z5TltUj+9TKG5BYTaiJwje0Edu8YAwh2BHPp7yyh+k3Eon4C7jrPP42+7AXj64XoSx4at293J/zj+TRj8g0ubA==","repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","zod":"^4.3.6","glob":"^13.0.6","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.28_1773849883729_0.5184911979812961","host":"s3://npm-registry-packages-npm-production"}},"0.1.29":{"name":"bluebird-nestjs","version":"0.1.29","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.29","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"223a146a731c49dc9a8f3a1cd776361d474d5b33","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.29.tgz","fileCount":25,"integrity":"sha512-h4dLikOA9gS53bqKgH3W7MeLHnFiFVsrRh2YJp09UwTLue1d9z7eQFLokIrVYqEh/R7LOAk4+gOrJAIERx3VVA==","signatures":[{"sig":"MEUCIQCSwAopAWNLj95ctML/U9WxeRNc5dYhA2aAsEJnAMCXIQIgdO0P5EiuNBvrIG2kx5jL3fXd3hRs/z2x07mTYUBUdxg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":836882},"main":"./dist/index.js","type":"module","_from":"file:bluebird-nestjs-0.1.29.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"_resolved":"/tmp/d8a165ce60fa5ecab65a8917d937408f/bluebird-nestjs-0.1.29.tgz","_integrity":"sha512-h4dLikOA9gS53bqKgH3W7MeLHnFiFVsrRh2YJp09UwTLue1d9z7eQFLokIrVYqEh/R7LOAk4+gOrJAIERx3VVA==","repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.8.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ora":"^8.2.0","zod":"^4.3.6","glob":"^13.0.6","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"^5.7.0","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.29_1773945585097_0.9735531727884235","host":"s3://npm-registry-packages-npm-production"}},"0.1.30":{"name":"bluebird-nestjs","version":"0.1.30","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.30","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"661985f7acc4a420bc10efb6da058cf9a53a26da","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.30.tgz","fileCount":25,"integrity":"sha512-5q7ROyZwGH5PGw81F5ZAUO+PpDuu72SP0xfQPHT0+TplBm97Ix6IZyqueZIR5XdJz+Jdvm0qkHJFrqMNCxWb2w==","signatures":[{"sig":"MEQCIBCPArZUGN6mdXq9shiAzVvzpjwpen9KjAoQEFTMf6l7AiAUSvuQqvd75FVl7gQFt3meyfUThlwMC3ICzBEX1pWNZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":839045},"main":"./dist/index.js","type":"module","_from":"file:bluebird-nestjs-0.1.30.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"_resolved":"/tmp/9e28e479d575dfaf0b808e35ba6c170c/bluebird-nestjs-0.1.30.tgz","_integrity":"sha512-5q7ROyZwGH5PGw81F5ZAUO+PpDuu72SP0xfQPHT0+TplBm97Ix6IZyqueZIR5XdJz+Jdvm0qkHJFrqMNCxWb2w==","repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.8.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ora":"^8.2.0","zod":"^4.3.6","glob":"^13.0.6","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"~5.7.0","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"~5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0 <6.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.30_1773946766204_0.03128794374733079","host":"s3://npm-registry-packages-npm-production"}},"0.1.31":{"name":"bluebird-nestjs","version":"0.1.31","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.31","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"05a1cefb9da372b65aaa0a06dd22805f6119785f","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.31.tgz","fileCount":25,"integrity":"sha512-0DYC+ZxUrBq+AaNlf0X3g4k/c3a+9Semy0qhkabOALzRih2r723y6hAJDgAaupDA4bEAxxo6eLAUtS4rCDYqbw==","signatures":[{"sig":"MEUCIQC/UvOOFuKKd2/kwZwZhECwWHy6fA77+KozgZhE5mxRugIgX1boH9BZWjGwG8kt3hgp79tU8nRpAHOb6CyqBueKQTA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":842831},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"gitHead":"2f8f4e1bdbd78debc0ada83a4e1c71d07ac9de79","scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"tsdown && cp ../../README.md .","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","zod":"^4.3.6","glob":"^13.0.6","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"~5.7.0","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"~5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0 <6.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.31_1773954407232_0.3101880777607535","host":"s3://npm-registry-packages-npm-production"}},"0.1.32":{"name":"bluebird-nestjs","version":"0.1.32","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"license":"UNLICENSED","_id":"bluebird-nestjs@0.1.32","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"bin":{"bluebird":"dist/cli.js"},"dist":{"shasum":"2c7949efb5cc30729eee59c76b8d0e0506b19083","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.32.tgz","fileCount":25,"integrity":"sha512-H2tmYaYqVBhPiiegLM6OQaCtModGd/L01VFTZcj6B0Qc4MhCb1x1pCQdKMz4pz8+C+3/XKSW4f/svgL8lF2GtA==","signatures":[{"sig":"MEUCIAx2CKtFUPJfYg6tYPzUNjL+Ug7PS1h9wUhLHm95M21xAiEA0lWbqGgbZcSj98gwQoMljvUOlB4tOtdT7366GPBmXR8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":842831},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./eslint-plugin":{"types":"./dist/eslint-plugin.d.ts","import":"./dist/eslint-plugin.js"}},"gitHead":"683a30fdd7c6e34aafeb8bfda7e799570cd491e5","scripts":{"dev":"tsdown --watch","lint":"eslint src/ tests/","test":"vitest run","build":"tsdown","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"tsdown && cp ../../README.md .","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs"},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"repository":{"url":"git+https://github.com/endpointclosing/bluebird.git","type":"git","directory":"packages/bluebird"},"_npmVersion":"10.9.2","description":"Diagnose and improve NestJS project health","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ora":"^8.2.0","zod":"^4.3.6","glob":"^13.0.6","knip":"^5.44.0","prompts":"^2.4.2","chokidar":"^5.0.0","commander":"^13.1.0","picocolors":"^1.1.1","typescript":"~5.7.0","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","tsdown":"^0.20.3","vitest":"^3.0.0","@eslint/js":"^10.0.1","typescript":"~5.7.0","@types/node":"^22.13.0","@types/prompts":"^2.4.9","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"typescript":">=5.0.0 <6.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/bluebird-nestjs_0.1.32_1773955800451_0.28527844512293354","host":"s3://npm-registry-packages-npm-production"}},"0.1.33":{"name":"bluebird-nestjs","license":"UNLICENSED","version":"0.1.33","description":"Diagnose and improve NestJS project health","type":"module","bin":{"bluebird":"dist/cli.js"},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./eslint-plugin":{"import":"./dist/eslint-plugin.js","types":"./dist/eslint-plugin.d.ts"}},"repository":{"type":"git","url":"git+https://github.com/endpointclosing/bluebird.git","directory":"packages/bluebird"},"homepage":"https://github.com/endpointclosing/bluebird#readme","bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsdown","dev":"tsdown --watch","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","test:coverage:readme":"vitest run --coverage && node scripts/update-readme-coverage.mjs","lint":"eslint src/ tests/","lint:fix":"eslint src/ tests/ --fix","typecheck":"tsc --noEmit","prepublishOnly":"tsdown && cp ../../README.md ."},"keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","chokidar":"^5.0.0","commander":"^13.1.0","glob":"^13.0.6","knip":"^5.44.0","ora":"^8.2.0","picocolors":"^1.1.1","prompts":"^2.4.2","typescript":"~5.7.0","zod":"^4.3.6"},"peerDependencies":{"typescript":">=5.0.0 <6.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"devDependencies":{"@eslint/js":"^10.0.1","@types/node":"^22.13.0","@types/prompts":"^2.4.9","@vitest/coverage-v8":"^3.2.4","eslint":"^10.0.2","tsdown":"^0.20.3","typescript":"~5.7.0","typescript-eslint":"^8.56.1","vitest":"^3.0.0"},"_id":"bluebird-nestjs@0.1.33","gitHead":"40305906dc5e6bafeb1743ae01f2032494375c69","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-rmE6mKrFoAqiGy6tjATi6j5/InSTZT3X/N/7GkxWa929SlkPNWKN3zpNayqPhi2+VDdSBS09UGkkJyiP1dl0yA==","shasum":"8ca380fa76dddd3f451428db9633435d770bc0e5","tarball":"https://registry.npmjs.org/bluebird-nestjs/-/bluebird-nestjs-0.1.33.tgz","fileCount":25,"unpackedSize":851422,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIH9yrhZodcM65QGJtA5yZ5G55ymADu06Kw1stukbrV3FAiEA30C9CMPaWwyO6D8MFWLMmsHucQdHEB6cCY5NdF75UzE="}]},"_npmUser":{"name":"jnavarrete","email":"junavarrete@firstam.com"},"directories":{},"maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bluebird-nestjs_0.1.33_1774181058561_0.30760103126287364"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-03T00:11:44.327Z","modified":"2026-03-22T12:04:18.833Z","0.1.0":"2026-03-03T00:11:44.733Z","0.1.1":"2026-03-03T01:03:30.471Z","0.1.2":"2026-03-04T00:06:23.002Z","0.1.3":"2026-03-05T16:34:39.579Z","0.1.5":"2026-03-07T00:35:14.918Z","0.1.8":"2026-03-07T01:18:56.890Z","0.1.11":"2026-03-07T16:14:02.580Z","0.1.12":"2026-03-07T19:43:35.113Z","0.1.14":"2026-03-07T19:59:21.669Z","0.1.15":"2026-03-07T21:01:49.315Z","0.1.16":"2026-03-07T21:19:05.959Z","0.1.17":"2026-03-08T20:07:36.494Z","0.1.18":"2026-03-08T22:40:51.123Z","0.1.19":"2026-03-08T22:50:54.404Z","0.1.20":"2026-03-08T23:10:27.105Z","0.1.21":"2026-03-08T23:30:31.069Z","0.1.22":"2026-03-09T00:02:57.062Z","0.1.23":"2026-03-15T00:25:48.388Z","0.1.24":"2026-03-16T21:25:36.151Z","0.1.25":"2026-03-17T20:01:25.017Z","0.1.26":"2026-03-17T21:10:19.837Z","0.1.27":"2026-03-17T21:58:57.598Z","0.1.28":"2026-03-18T16:04:43.927Z","0.1.29":"2026-03-19T18:39:45.286Z","0.1.30":"2026-03-19T18:59:26.465Z","0.1.31":"2026-03-19T21:06:47.423Z","0.1.32":"2026-03-19T21:30:00.689Z","0.1.33":"2026-03-22T12:04:18.727Z"},"bugs":{"url":"https://github.com/endpointclosing/bluebird/issues"},"license":"UNLICENSED","homepage":"https://github.com/endpointclosing/bluebird#readme","keywords":["nestjs","doctor","lint","diagnostics","health-check","code-quality","eslint-plugin","static-analysis"],"repository":{"type":"git","url":"git+https://github.com/endpointclosing/bluebird.git","directory":"packages/bluebird"},"description":"Diagnose and improve NestJS project health","maintainers":[{"name":"jnavarrete","email":"junavarrete@firstam.com"}],"readme":"<p align=\"center\">\n  <img src=\"assets/logo.png\" alt=\"Bluebird\" width=\"50%\" />\n</p>\n\n# Bluebird\n\n> Static analysis CLI for NestJS projects\n\n[![npm version](https://img.shields.io/npm/v/bluebird-nestjs.svg?cacheSeconds=3600)](https://www.npmjs.com/package/bluebird-nestjs)\n[![Build Status](https://github.com/endpointclosing/bluebird/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/endpointclosing/bluebird/actions/workflows/test.yml)\n[![codecov](https://codecov.io/gh/endpointclosing/bluebird/branch/main/graph/badge.svg)](https://codecov.io/gh/endpointclosing/bluebird)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue.svg)](https://www.typescriptlang.org/)\n[![Node](https://img.shields.io/badge/Node-%3E%3D20-green.svg)](https://nodejs.org/)\n\n## Stability\n\nBluebird is **production-ready** for NestJS static analysis. The project maintains:\n\n- **944+ tests** with comprehensive coverage across 23 test files\n- **95%+ line coverage** (statements, branches, functions)\n- **Semantic versioning** for predictable upgrades\n- **CI/CD integration** with SARIF output for code scanning\n- **Active maintenance** with regular security updates\n\nThe API surface (`diagnose`, `runEslint`, `analyseFiles`, formatters) is stable. Breaking changes will only occur in major version bumps with migration guides.\n\nBluebird is a static analysis CLI for NestJS projects. It parses TypeScript source files, runs 38 purpose-built rules across architecture, security, performance, correctness, and API design, and produces a health score useful both locally and in CI.\n\n## Why Bluebird?\n\nNestJS projects can accumulate technical debt silently. Bluebird catches issues that generic linters miss:\n\n- **Security issues** — Hardcoded secrets, SQL injection, missing validation pipes\n- **Architectural problems** — Circular dependencies, god controllers/services, DI bypasses\n- **Performance blockers** — Sync filesystem operations, blocking crypto, N+1 queries\n- **Common mistakes** — Missing decorators, lifecycle hook interfaces, duplicate routes\n- **API design flaws** — Missing Swagger docs, entities exposed directly, inconsistent HTTP status\n\nUnlike generic linters, Bluebird understands NestJS patterns, decorators, and module structure.\n\n## Installation\n\n### From npm (recommended)\n\n```bash\n# Install globally\nnpm install -g bluebird-nestjs\nbluebird --help\n\n# Or add to your project\nnpm install --save-dev bluebird-nestjs\nnpx bluebird\n```\n\n### From source\n\n```bash\n# Clone and install\ngit clone https://github.com/endpointclosing/bluebird.git\ncd bluebird\npnpm install\npnpm build\n\n# Link the CLI globally (run from packages/bluebird directory)\ncd packages/bluebird\nnpm link\n\n# Now you can use bluebird globally from any directory\ncd /path/to/your-nestjs-project\nbluebird --help\n```\n\n### Troubleshooting Installation\n\nIf you encounter issues:\n\n1. **\"husky: command not found\"** - This is safe to ignore. The prepare script handles this gracefully.\n\n2. **\"bluebird: command not found\"** after `npm link`:\n   ```bash\n   # Make sure you're in the packages/bluebird directory\n   cd /path/to/bluebird/packages/bluebird\n   npm link\n\n   # Verify the link was created\n   npm list -g bluebird-nestjs\n   ```\n\n3. **Permission errors on macOS/Linux**:\n   ```bash\n   sudo npm link\n   ```\n\n4. **Still not working?** Check that the build completed:\n   ```bash\n   ls packages/bluebird/dist/cli.js  # Should exist\n   ```\n\n## Getting Started in 60 Seconds\n\n```bash\n# 1. Install globally\nnpm install -g bluebird-nestjs\n\n# 2. Run analysis on your NestJS project\ncd /path/to/your-nestjs-project\nbluebird\n\n# 3. Generate a config file (optional)\nbluebird init\n\n# 4. Create a baseline for existing issues (optional)\nbluebird --baseline\n```\n\nThat's it! Bluebird auto-detects your NestJS setup and runs 38 purpose-built rules.\n\n## Quick Start\n\n```bash\n# Run against a NestJS project\nbluebird\n\n# Watch mode — re-run on file changes\nbluebird --watch\n\n# Fast mode — run passes in parallel\nbluebird --fast\n\n# Diff mode — only check changed files\nbluebird --diff main\n\n# Output formats for different use cases\nbluebird --format text   # Terminal (default)\nbluebird --format json   # CI/CD integration\nbluebird --format sarif  # GitHub Code Scanning\nbluebird --format html   # Shareable dashboard\n\n# Include heuristic (opt-in) rules\nbluebird --include-heuristic\n\n# Get detailed info about a specific rule\nbluebird explain no-hardcoded-secrets\n\n# List all available rules\nbluebird explain --list\n\n# Analyze module dependency layers\nbluebird layers\n\n# Start MCP server for AI agent integration\nbluebird mcp\n```\n\n## Example Output\n\n```\n✔ Project detected  NestJS 10.3.0 · express · 235 files · swagger, config\n✔ Lint analysis      0.4s  (30 diagnostics)\n✔ Graph analysis     0.1s  (0 diagnostics)\n✔ Dead code analysis 1.2s  (15 diagnostics)\n\n    __\n __( o>  Bluebird\n(___/   NestJS Health Report\n\n┌──────────────────────────────────────────────┐\n│  Score: 89/100  ██████████████████░░  Great  │\n└──────────────────────────────────────────────┘\n\n  2 errors · 43 warnings\n\n  By Category:\n    Security      ⚠ 5\n    Correctness   ⚠ 12\n    Architecture  ✖ 2  ⚠ 3\n    API Design    ⚠ 8\n    Dead Code     ⚠ 15\n\n  Top Issues:\n    ✖ bluebird/no-hardcoded-dependency    (2)   Inject via constructor\n    ⚠ bluebird/missing-swagger-decorators (8)   Add @ApiOperation/@ApiResponse\n    ⚠ bluebird/no-console-log             (7)   Use NestJS Logger service\n    ⚠ knip/exports                        (10)  Unused export\n    ⚠ bluebird/no-process-env-direct      (5)   Use ConfigService.get()\n\n  Run with --verbose to see all 45 diagnostics\n```\n\n## Logic Flow\n\n> **Note:** The diagram below uses Mermaid syntax. [View on GitHub](https://github.com/endpointclosing/bluebird#logic-flow) for the rendered version.\n\n```mermaid\nflowchart LR\n  A[\"CLI (`bluebird` command)\"] --> B[\"Parse Flags (`verbose`, `diff`, `format`, pass toggles)\"]\n  B --> C[\"Scan Orchestrator (`scan.ts`)\"]\n  C --> D[\"Load Config + Merge with CLI Options\"]\n  D --> E[\"Discover Project (`discover-project.ts`)\"]\n  E --> F[\"Build `ProjectInfo` (adapter, ORM, features, strict mode, tests)\"]\n  F --> G[\"Resolve Enabled Rules (`getEnabledRules`)\"]\n  G --> H[\"Run File-Level Checkers (`fileCheckers`)\"]\n  G --> I[\"Run Graph-Level Checkers (`graphCheckers`)\"]\n  G --> J[\"Run Dead-Code Pass (`knip`)\"]\n  H --> K[\"Collect Diagnostics\"]\n  I --> K\n  J --> K\n  K --> L[\"Apply Ignore/Waiver Filtering\"]\n  L --> L2[\"Apply Baseline Filtering\"]\n  L2 --> M[\"Calculate Score (`calculate-score.ts`)\"]\n  M --> N[\"Format Output (`text` | `json` | `sarif` | `html`)\"]\n  N --> O[\"Print CLI Summary + Exit Code\"]\n```\n\n## CLI Commands\n\n| Command | Description |\n|:---|:---|\n| `bluebird` | Run analysis on a NestJS project (default command) |\n| `bluebird init` | Create a `bluebird.config.json` configuration file |\n| `bluebird explain [rule]` | Show information about rules or explain a specific rule |\n| `bluebird layers` | Analyze module dependency layers and detect violations |\n| `bluebird mcp` | Start MCP server for AI agent integration |\n\n## CLI Options\n\nThe following options apply to the default `bluebird` command:\n\n| Flag | Description |\n|:---|:---|\n| `-v, --verbose` | Show all diagnostics |\n| `-q, --quiet` | Suppress output, only set exit code |\n| `-p, --project <path>` | Path to the NestJS project (default: cwd) |\n| `-w, --watch` | Watch mode: re-run analysis on file changes |\n| `-s, --score` | Output only the numeric health score |\n| `--diff <branch>` | Only check files changed from branch |\n| `--format <fmt>` | Output format: `text`, `json`, `sarif`, `html` (default: `text`) |\n| `--fail-on <threshold>` | Exit-code threshold: `error`, `warning`, `none` (default: `error`) |\n| `--fail-on-score <score>` | Exit with code 1 when score is below this value (0–100) |\n| `--no-lint` | Skip the lint (file-level) analysis pass |\n| `--no-dead-code` | Skip the dead code analysis pass |\n| `--no-graph-analysis` | Skip the graph (cross-file) analysis pass |\n| `--include-heuristic` | Include heuristic-confidence rules |\n| `--baseline` | Generate a baseline snapshot of current diagnostics |\n| `--update-baseline` | Update the baseline snapshot after fixes |\n| `--fast` | Run analysis passes in parallel for faster execution |\n| `-o, --open` | Open HTML report in browser (use with `--format html`) |\n\n### Initialize Configuration\n\nGenerate a `bluebird.config.json` config file interactively:\n\n```bash\nbluebird init\n```\n\nThe init wizard prompts for:\n- Rules to ignore globally\n- File patterns to exclude\n- Whether to enable heuristic rules\n\n#### Non-Interactive Mode\n\nFor CI/CD or scripted setups, use the `--yes` flag:\n\n```bash\n# Accept all defaults\nbluebird init --yes\n\n# Customize options\nbluebird init --yes --heuristic --skip-graph\n\n# Ignore specific rules\nbluebird init --yes --ignore-rules \"bluebird/no-god-service,bluebird/no-console-log\"\n\n# Ignore file patterns\nbluebird init --yes --ignore-files \"src/legacy/**,src/generated/**\"\n```\n\n### Explain Rules\n\nGet detailed information about any rule:\n\n```bash\n# Explain a specific rule\nbluebird explain no-hardcoded-secrets\n\n# List all available rules\nbluebird explain --list\n\n# Filter rules by category\nbluebird explain --category security\n```\n\nThe explain command shows:\n- Rule description and severity\n- How to fix the issue\n- How to ignore or waive the rule\n\n### Analyze Layers\n\nAnalyze your NestJS module dependency layers to detect architectural violations where lower layers depend on higher layers:\n\n```bash\n# Text output (default)\nbluebird layers\n\n# JSON output for programmatic use\nbluebird layers --output json\n\n# Mermaid diagram for documentation\nbluebird layers --output mermaid\n\n# Show detailed layer breakdown\nbluebird layers --detail\n\n# Specify project path\nbluebird layers -p /path/to/project\n```\n\nThe layers command:\n- Assigns each module a layer number based on its position in the dependency graph\n- Entry points (AppModule, main.ts) are L0, leaf modules (no dependencies) are the highest layer\n- Detects violations where a lower-layer module imports a higher-layer module\n- Exits with code 1 if violations are found (useful for CI)\n\n### Baseline\n\nBaseline lets you adopt Bluebird on an existing codebase without drowning in legacy diagnostics. It captures a snapshot of current issues so subsequent runs only report **new** violations.\n\n```bash\n# Create a baseline from the current state\nbluebird --baseline\n\n# After fixing some issues, update the baseline\nbluebird --update-baseline\n```\n\nThe baseline is stored in `.bluebird-baseline.json` and can be committed to version control. Diagnostics matching the baseline (same rule, file, and line) are excluded from the output and score. New violations introduced after the baseline are always surfaced.\n\n#### Baseline Workflow\n\nA typical workflow for adopting Bluebird on an existing codebase:\n\n1. **Create initial baseline** to snapshot existing issues:\n   ```bash\n   bluebird --baseline\n   git add .bluebird-baseline.json\n   git commit -m \"chore: add bluebird baseline\"\n   ```\n\n2. **Run in CI** — only new violations will fail the build:\n   ```bash\n   bluebird --fail-on error\n   ```\n\n3. **Fix issues incrementally** and update baseline:\n   ```bash\n   # After fixing some issues\n   bluebird --update-baseline\n   git add .bluebird-baseline.json\n   git commit -m \"chore: update bluebird baseline after fixes\"\n   ```\n\n4. **Prevent new debt** — CI catches any new violations not in the baseline\n\n## Watch Mode\n\nWatch mode monitors your source files and automatically re-runs analysis when changes are detected. Perfect for development workflows.\n\n```bash\n# Start watch mode\nbluebird --watch\n\n# Or use the short flag\nbluebird -w\n\n# Combine with other options\nbluebird --watch --include-heuristic\n```\n\nWatch mode features:\n- **Debounced re-runs** — Waits 500ms after the last change before re-running\n- **File change detection** — Monitors `.ts` and `.tsx` files\n- **Automatic ignore** — Skips `node_modules`, `dist`, `build`, `.git`, and `coverage`\n- **Graceful shutdown** — Press `Ctrl+C` to exit\n\n## Module Layers Analysis\n\nAnalyze NestJS module dependency layers to understand your project's architecture and detect violations where lower-level modules depend on higher-level modules.\n\n```bash\n# Analyze layers with text output (default)\nbluebird layers\n\n# JSON output for programmatic use\nbluebird layers --output json\n\n# Mermaid diagram output\nbluebird layers --output mermaid\n\n# Show detailed layer breakdown\nbluebird layers --detail\n```\n\n### How It Works\n\nThe layers command:\n1. **Extracts module graph** — Finds all `@Module()` classes and their imports\n2. **Condenses cycles** — Uses Tarjan's SCC algorithm to handle circular dependencies\n3. **Assigns layers** — Topological sort with longest-path algorithm (Layer 0 = leaf modules, higher = closer to entry points)\n4. **Detects violations** — Finds edges where a lower layer depends on a higher layer\n\n### Example Output\n\n```\nModule Layers\n─────────────\nLayer 2 (Application)\n  └── AppModule (src/app.module.ts)\n\nLayer 1 (Domain)\n  ├── UsersModule (src/users/users.module.ts)\n  └── OrdersModule (src/orders/orders.module.ts)\n\nLayer 0 (Infrastructure)\n  ├── DatabaseModule (src/database/database.module.ts)\n  └── ConfigModule (src/config/config.module.ts)\n\nViolations: 0\nVerdict: Well-layered (3 layers), even distribution, clean\n```\n\nA violation occurs when a lower-layer module (like `DatabaseModule`) imports a higher-layer module (like `UsersModule`). This typically indicates an architectural smell that should be refactored.\n\n## MCP Server Integration\n\nBluebird includes an MCP (Model Context Protocol) server for seamless integration with AI coding assistants like Claude Code, Cursor, and other MCP-compatible tools.\n\n```bash\n# Start the MCP server\nbluebird mcp\n```\n\n### Configuration\n\nAdd Bluebird to your AI assistant's MCP configuration:\n\n#### Claude Code (`~/.claude.json`)\n\n```json\n{\n  \"mcpServers\": {\n    \"bluebird\": {\n      \"command\": \"npx\",\n      \"args\": [\"bluebird-nestjs\", \"mcp\"]\n    }\n  }\n}\n```\n\n#### Cursor (`.cursor/mcp.json`)\n\n```json\n{\n  \"mcpServers\": {\n    \"bluebird\": {\n      \"command\": \"npx\",\n      \"args\": [\"bluebird-nestjs\", \"mcp\"]\n    }\n  }\n}\n```\n\n### Available Tools\n\nOnce configured, your AI assistant has access to these tools:\n\n| Tool | Description |\n|:---|:---|\n| `bluebird_diagnose` | Run a full diagnostic scan with all analysis passes |\n| `bluebird_health` | Get a quick health score (0-100) |\n| `bluebird_layers` | Analyze module dependency layers |\n| `bluebird_explain` | Get information about rules (list all, filter by category, or explain specific rule) |\n\n### Use Cases\n\n- **Code Review** — Ask your AI assistant to run Bluebird diagnostics before reviewing a PR\n- **Architecture Analysis** — Request layer analysis to understand module dependencies\n- **Rule Discovery** — Ask about specific rules or find rules by category\n- **Quick Health Check** — Get an instant health score during development\n\n## HTML Reports\n\nGenerate standalone HTML dashboards for sharing analysis results with your team.\n\n```bash\n# Generate and open HTML report in browser (recommended)\nbluebird --format html --open\n\n# Or save to a specific file\nbluebird --format html > report.html\n```\n\nThe HTML report includes:\n- **Score gauge** — Circular progress indicator with color-coded score\n- **Project details** — NestJS version, adapter, ORM, file count, features\n- **Category chart** — Horizontal bar chart showing issues by category\n- **Top issues table** — Most frequent rules with fix suggestions\n- **All diagnostics** — Collapsible sections with full file paths and messages\n- **Dark theme** — Modern UI that looks great when shared\n- **Self-contained** — Single HTML file with inline CSS, no external dependencies\n\n## CI/CD Integration\n\nBluebird integrates easily into CI/CD pipelines. Use `--format sarif` for GitHub Code Scanning, `--format json` for custom integrations, or `--format html` for artifact reports.\n\n### GitHub Actions\n\n```yaml\nname: Bluebird Analysis\n\non:\n  pull_request:\n    branches: [main]\n  push:\n    branches: [main]\n\njobs:\n  bluebird:\n    runs-on: ubuntu-latest\n    permissions:\n      security-events: write  # Required for SARIF upload\n    steps:\n      - uses: actions/checkout@v4\n\n      - uses: actions/setup-node@v4\n        with:\n          node-version: '20'\n\n      - run: npm ci\n\n      - name: Install Bluebird\n        run: npm install -g bluebird-nestjs\n\n      - name: Run Bluebird\n        run: bluebird --format sarif > bluebird.sarif\n        continue-on-error: true\n\n      - name: Upload SARIF\n        uses: github/codeql-action/upload-sarif@v3\n        with:\n          sarif_file: bluebird.sarif\n```\n\n### GitLab CI\n\n```yaml\nbluebird:\n  stage: test\n  image: node:20-alpine\n  script:\n    - npm ci\n    - npm install -g bluebird-nestjs\n    - bluebird --format json > bluebird.json\n    - bluebird --fail-on error\n  artifacts:\n    reports:\n      codequality: bluebird.json\n    paths:\n      - bluebird.json\n    when: always\n```\n\n### Generic SARIF Workflow\n\nFor other CI systems that support SARIF:\n\n```bash\n# Generate SARIF report\nbluebird --format sarif > bluebird.sarif\n\n# Fail on errors (exit code 1 if errors found)\nbluebird --fail-on error\n\n# Fail if score drops below threshold\nbluebird --fail-on-score 80\n```\n\n### Diff Mode for PRs\n\nRun analysis only on changed files for faster PR checks:\n\n```bash\n# Compare against main branch\nbluebird --diff main\n\n# Compare against specific commit\nbluebird --diff HEAD~1\n```\n\n## Rules\n\nBluebird ships **38 rules** split into two confidence tiers:\n\n- **Deterministic** (25 rules) — statically provable, always enabled\n- **Heuristic** (13 rules) — context-dependent, opt-in via `--include-heuristic`\n\nRules run in one of three analysis passes:\n\n| Pass | Scope | Description |\n|:---|:---|:---|\n| `eslint` | Single file | AST-based checks on each `.ts` file |\n| `graph` | Cross-file | Whole-project analysis (module graph, route map) |\n| `knip` | Cross-file | Dead-code detection (unused files, exports, types, duplicates) |\n\n### Architecture (4 rules)\n\n| Rule | Severity | Confidence | Description |\n|:---|:---|:---|:---|\n| `no-circular-dependency` | error | deterministic | Circular module imports detected |\n| `no-god-controller` | warning | deterministic | Controller exceeds route threshold |\n| `no-god-service` | warning | deterministic | Service exceeds line threshold |\n| `no-hardcoded-dependency` | error | deterministic | Direct instantiation instead of DI |\n\n### Security (5 deterministic + 4 heuristic)\n\n| Rule | Severity | Confidence | Description |\n|:---|:---|:---|:---|\n| `missing-class-validator` | warning | deterministic | DTO property without validation decorators |\n| `missing-csrf-protection` | warning | heuristic | No CSRF middleware configured |\n| `missing-global-guard` | warning | heuristic | No global auth guard |\n| `missing-helmet` | warning | heuristic | No helmet middleware |\n| `missing-rate-limiting` | warning | heuristic | No throttling configured |\n| `missing-validation-pipe` | warning | deterministic | No global ValidationPipe configured |\n| `no-any-in-dto` | warning | deterministic | DTO property typed as `any` |\n| `no-hardcoded-secrets` | error | deterministic | Hardcoded credentials in source |\n| `no-raw-sql` | error | deterministic | SQL template without parameterization |\n\n### Correctness (8 deterministic + 2 heuristic)\n\n| Rule | Severity | Confidence | Description |\n|:---|:---|:---|:---|\n| `lifecycle-hook-interface` | warning | deterministic | Lifecycle method without interface |\n| `missing-config-validation` | warning | heuristic | ConfigModule without validation schema |\n| `missing-exception-filter` | warning | heuristic | No global exception filter |\n| `missing-injectable` | error | deterministic | Provider class missing `@Injectable()` |\n| `missing-parse-pipe` | warning | deterministic | Route param without parsing pipe |\n| `no-console-log` | warning | deterministic | Direct console usage instead of Logger |\n| `no-constructor-side-effects` | warning | deterministic | Side effects in constructor |\n| `no-duplicate-route` | error | deterministic | Duplicate HTTP method + path |\n| `no-nested-controller-decorator` | error | deterministic | `@Controller()` on non-top-level class |\n| `no-process-env-direct` | warning | deterministic | Direct `process.env` instead of ConfigService |\n\n### API Design (3 deterministic + 2 heuristic)\n\n| Rule | Severity | Confidence | Description |\n|:---|:---|:---|:---|\n| `missing-swagger-decorators` | warning | deterministic | Missing `@ApiOperation`/`@ApiResponse` |\n| `no-entity-as-response` | warning | deterministic | ORM entity returned directly |\n| `no-generic-exception` | warning | deterministic | Throwing `Error` instead of HttpException |\n| `no-inconsistent-http-status` | warning | heuristic | HTTP status doesn't match method |\n| `prefer-pagination` | warning | heuristic | List endpoint without pagination |\n\n### Performance (2 deterministic + 2 heuristic)\n\n| Rule | Severity | Confidence | Description |\n|:---|:---|:---|:---|\n| `missing-caching` | warning | heuristic | No caching strategy detected |\n| `no-blocking-crypto` | warning | deterministic | Blocking crypto operations |\n| `no-n-plus-one` | warning | heuristic | Potential N+1 query pattern |\n| `no-sync-fs-operations` | warning | deterministic | Sync fs operations block event loop |\n\n### Database (2 heuristic)\n\n| Rule | Severity | Confidence | Description |\n|:---|:---|:---|:---|\n| `missing-indexes` | warning | heuristic | Query patterns without indexes |\n| `missing-migration` | warning | heuristic | Schema changes without migrations |\n\n### Testing (1 heuristic)\n\n| Rule | Severity | Confidence | Description |\n|:---|:---|:---|:---|\n| `low-test-coverage` | warning | heuristic | Missing spec files for providers |\n\n### GraphQL (1 deterministic, feature-gated)\n\n| Rule | Severity | Confidence | Description |\n|:---|:---|:---|:---|\n| `missing-resolver-decorator` | warning | deterministic | Resolver method without `@Query`/`@Mutation` |\n\n### Microservices (1 deterministic, feature-gated)\n\n| Rule | Severity | Confidence | Description |\n|:---|:---|:---|:---|\n| `missing-message-pattern` | warning | deterministic | Handler without `@MessagePattern`/`@EventPattern` |\n\n### WebSockets (1 deterministic, feature-gated)\n\n| Rule | Severity | Confidence | Description |\n|:---|:---|:---|:---|\n| `missing-websocket-decorator` | warning | deterministic | Gateway method without `@SubscribeMessage` |\n\n> **Note:** Feature-gated rules only run when Bluebird detects the corresponding feature in your project (e.g., `@nestjs/graphql`, `@nestjs/microservices`, `@nestjs/websockets`).\n\n### Rule Examples\n\n<details>\n<summary><strong>no-hardcoded-secrets</strong> — Detects hardcoded credentials</summary>\n\n```typescript\n// ❌ Bad - Hardcoded secret\n@Injectable()\nexport class AuthService {\n  private readonly jwtSecret = 'super-secret-key-123';\n}\n\n// ✅ Good - Use environment variables\n@Injectable()\nexport class AuthService {\n  constructor(private config: ConfigService) {}\n\n  private get jwtSecret() {\n    return this.config.get<string>('JWT_SECRET');\n  }\n}\n```\n</details>\n\n<details>\n<summary><strong>missing-injectable</strong> — Provider without @Injectable()</summary>\n\n```typescript\n// ❌ Bad - Missing @Injectable()\nexport class UserRepository {\n  findAll() { /* ... */ }\n}\n\n// ✅ Good - Has @Injectable()\n@Injectable()\nexport class UserRepository {\n  findAll() { /* ... */ }\n}\n```\n</details>\n\n<details>\n<summary><strong>no-hardcoded-dependency</strong> — Direct instantiation instead of DI</summary>\n\n```typescript\n// ❌ Bad - Direct instantiation bypasses DI\n@Injectable()\nexport class OrderService {\n  private logger = new Logger(); // Creates tight coupling\n\n  process() {\n    this.logger.log('Processing...');\n  }\n}\n\n// ✅ Good - Inject dependencies\n@Injectable()\nexport class OrderService {\n  constructor(private readonly logger: Logger) {}\n\n  process() {\n    this.logger.log('Processing...');\n  }\n}\n```\n</details>\n\n<details>\n<summary><strong>missing-validation-pipe</strong> — No global ValidationPipe</summary>\n\n```typescript\n// ❌ Bad - No input validation\nasync function bootstrap() {\n  const app = await NestFactory.create(AppModule);\n  await app.listen(3000);\n}\n\n// ✅ Good - Global ValidationPipe enabled\nasync function bootstrap() {\n  const app = await NestFactory.create(AppModule);\n  app.useGlobalPipes(new ValidationPipe({\n    whitelist: true,\n    forbidNonWhitelisted: true,\n    transform: true,\n  }));\n  await app.listen(3000);\n}\n```\n</details>\n\n<details>\n<summary><strong>no-raw-sql</strong> — SQL without parameterization</summary>\n\n```typescript\n// ❌ Bad - SQL injection risk\nasync findByEmail(email: string) {\n  return this.db.query(`SELECT * FROM users WHERE email = '${email}'`);\n}\n\n// ✅ Good - Parameterized query\nasync findByEmail(email: string) {\n  return this.db.query('SELECT * FROM users WHERE email = $1', [email]);\n}\n```\n</details>\n\n<details>\n<summary><strong>lifecycle-hook-interface</strong> — Lifecycle method without interface</summary>\n\n```typescript\n// ❌ Bad - Missing interface\n@Injectable()\nexport class StartupService {\n  onModuleInit() {\n    console.log('Starting...');\n  }\n}\n\n// ✅ Good - Implements interface\n@Injectable()\nexport class StartupService implements OnModuleInit {\n  onModuleInit() {\n    console.log('Starting...');\n  }\n}\n```\n</details>\n\n## Scoring\n\nEach diagnostic carries a severity-based penalty. The health score starts at 100 and decreases per unique rule violation (capped at 10 instances per rule):\n\n| Severity | Base penalty | Per-instance penalty |\n|:---|:---|:---|\n| error | 1.5 | 0.15 |\n| warning | 0.75 | 0.08 |\n\n### Score Interpretation\n\n| Range | Label | Meaning |\n|:---|:---|:---|\n| 90–100 | Excellent | Production-ready, minimal issues |\n| 75–89 | Great | Good health, minor improvements needed |\n| 50–74 | Needs work | Significant issues requiring attention |\n| 0–49 | Critical | Major problems blocking production readiness |\n\n### What Each Range Means\n\n**90–100 (Excellent)**: Your codebase follows NestJS best practices. No security vulnerabilities, clean architecture, proper DI patterns. Ready for production deployment.\n\n**75–89 (Great)**: Generally healthy with some minor issues. Might have a few warnings about missing Swagger decorators, console.log usage, or optional optimizations. Safe for production but could benefit from cleanup.\n\n**50–74 (Needs Work)**: Has notable issues that should be addressed. May include security warnings, architectural concerns (god controllers/services), or missing validation. Prioritize fixing errors before deploying.\n\n**0–49 (Critical)**: Serious problems detected. Likely includes hardcoded secrets, SQL injection risks, circular dependencies, or severe architectural issues. Address these before deploying to production.\n\n### Improving Your Score\n\n1. **Fix errors first** — they have higher penalties and often indicate security or correctness issues\n2. **Use baseline** to track progress on existing codebases\n3. **Enable heuristic rules** (`--include-heuristic`) for additional insights\n4. **Use waivers** sparingly for intentional deviations with documented reasons\n\n## Configuration\n\nBluebird loads configuration from the first source found:\n\n1. `bluebird.config.json` in the project root\n2. A `\"bluebird\"` key inside `package.json`\n\nIf neither exists, all defaults apply. CLI flags always take precedence over config file values.\n\n```jsonc\n{\n  \"ignore\": {\n    \"rules\": [\"bluebird/no-god-service\"],\n    \"files\": [\"src/legacy/**\"]\n  },\n  \"lint\": true,\n  \"deadCode\": true,\n  \"graphAnalysis\": true,\n  \"includeHeuristic\": false,\n  \"diff\": \"main\",\n  \"waivers\": [\n    {\n      \"rule\": \"bluebird/no-inconsistent-http-status\",\n      \"file\": \"src/controllers/legacy.controller.ts\",\n      \"reason\": \"Legacy API intentionally returns 200 from DELETE\"\n    }\n  ]\n}\n```\n\n| Key | Type | Default | Description |\n|:---|:---|:---|:---|\n| `ignore.rules` | `string[]` | `[]` | Rule IDs to suppress globally |\n| `ignore.files` | `string[]` | `[]` | Glob patterns for files to skip |\n| `lint` | `boolean` | `true` | Enable the ESLint (file-level) pass |\n| `deadCode` | `boolean` | `true` | Enable the dead-code (knip) pass |\n| `graphAnalysis` | `boolean` | `true` | Enable the graph (cross-file) pass |\n| `includeHeuristic` | `boolean` | `false` | Include heuristic-confidence rules |\n| `diff` | `string` | — | Only check files changed from this branch |\n| `waivers` | `Waiver[]` | `[]` | Per-file rule exemptions with required reason |\n\n### JSON Schema\n\nFor IDE autocomplete and validation, reference the JSON schema in your config:\n\n```json\n{\n  \"$schema\": \"https://raw.githubusercontent.com/endpointclosing/bluebird/main/packages/bluebird/bluebird.schema.json\",\n  \"ignore\": {\n    \"rules\": [\"bluebird/no-god-service\"]\n  }\n}\n```\n\nThe schema provides:\n- **Autocomplete** for all configuration options\n- **Validation** of rule IDs and waiver structure\n- **Documentation** on hover in VS Code and other editors\n\n### Inline Disable Comments\n\nSuppress diagnostics directly in source code using comments:\n\n```typescript\n// Disable a specific rule for the next line\n// bluebird-disable-next-line no-hardcoded-secrets\nconst API_KEY = 'test-key-for-demo';\n\n// Disable all rules for a block\n// bluebird-disable\nconst legacyCode = doSomethingUnsafe();\n// bluebird-enable\n\n// Disable specific rules for a block\n// bluebird-disable no-raw-sql, no-sync-fs-operations\nawait db.query(rawQuery);\nfs.readFileSync(configPath);\n// bluebird-enable\n```\n\nSupported comment formats:\n- `bluebird-disable-next-line [rule1, rule2, ...]` — suppress on the following line\n- `bluebird-disable [rule1, rule2, ...]` — start suppression block\n- `bluebird-enable` — end suppression block\n\n## Project Detection\n\nBluebird auto-detects project characteristics from `package.json` and source files:\n\n- **NestJS version** and **HTTP adapter** (Express / Fastify)\n- **ORM** (TypeORM, Prisma, Mongoose, Sequelize, MikroORM, Drizzle)\n- **Features**: GraphQL, WebSockets, Microservices, CQRS, Swagger, Bull, Config, Throttler, Cache\n- **TypeScript strictness** and **test presence**\n\nRules that depend on specific features (e.g. `missing-swagger-decorators` requires `@nestjs/swagger`) are automatically disabled when the feature is not detected.\n\n`strictTypeScript` detection resolves `tsconfig.json` with `extends` support and reports the merged strict setting.\n\n## Programmatic API\n\n```typescript\nimport { diagnose } from \"bluebird-nestjs\";\n\nconst result = await diagnose({ format: \"json\", includeHeuristic: true });\n// result.diagnostics — array of Diagnostic objects\n// result.score       — { score: number, label: string }\n// result.project     — detected ProjectInfo\n```\n\n### ESLint Runner\n\nThe file-level analysis pass can be invoked directly via `runEslint` (filesystem-based) or `analyseFiles` (in-memory, no disk I/O). Both return a `LintResult` containing diagnostics and runner warnings:\n\n```typescript\nimport { runEslint, analyseFiles } from \"bluebird-nestjs\";\nimport type { LintResult } from \"bluebird-nestjs\";\n\n// Filesystem — discovers .ts/.mts/.cts files, skips node_modules/dist/declarations\nconst { diagnostics, warnings } = await runEslint({ cwd: \"/path/to/project\", project });\n\n// In-memory — pass a Map<relativePath, sourceText>\nconst files = new Map([[\"src/app.ts\", sourceCode]]);\nconst { diagnostics, warnings } = analyseFiles(files, project);\n\n// Warnings surface I/O failures and parse errors instead of silently ignoring them\nfor (const w of warnings) {\n  console.warn(`[${w.type}] ${w.filePath}: ${w.message}`);\n}\n```\n\n### Graph Runner\n\nThe cross-file analysis pass can be invoked directly via `runGraphAnalysis` (filesystem-based) or `analyseGraph` (in-memory, no disk I/O). Both return a `GraphAnalysisResult` containing diagnostics and runner warnings:\n\n```typescript\nimport { runGraphAnalysis, analyseGraph } from \"bluebird-nestjs\";\nimport type { GraphAnalysisResult } from \"bluebird-nestjs\";\n\n// Filesystem — discovers .ts/.mts/.cts files, skips node_modules/dist/declarations\nconst { diagnostics, warnings } = await runGraphAnalysis({ cwd: \"/path/to/project\", project });\n\n// In-memory — pass a Map<relativePath, sourceText>\nconst files = new Map([[\"src/app.module.ts\", moduleSource]]);\nconst { diagnostics, warnings } = analyseGraph(files, project);\n```\n\nGraph-level checkers receive the complete set of parsed source files, enabling cross-file analysis such as circular module dependency detection (`no-circular-dependency`) and duplicate route detection across controllers (`no-duplicate-route`).\n\n### Dead Code Runner\n\nThe dead-code analysis pass can be invoked directly via `runKnip`. It wraps [knip](https://knip.dev/) to detect unused files, exports, types, and duplicate exports:\n\n```typescript\nimport { runKnip } from \"bluebird-nestjs\";\nimport type { KnipResult } from \"bluebird-nestjs\";\n\nconst { diagnostics, warnings } = await runKnip({ cwd: \"/path/to/project\" });\n\n// Each diagnostic has category: 'dead-code' and a rule like knip/files, knip/exports, etc.\nfor (const d of diagnostics) {\n  console.log(`[${d.rule}] ${d.filePath}: ${d.message}`);\n}\n```\n\nThe runner automatically detects monorepo setups (pnpm workspaces, Lerna, Nx, Rush) and scopes analysis to the correct workspace. It skips analysis gracefully when `node_modules` is not present and retries on plugin config-loading errors.\n\n#### NestJS-Aware Entry Points\n\nBluebird automatically configures Knip with NestJS-aware entry patterns to reduce false positives:\n\n- **NestJS bootstrap**: `main.ts`, `src/main.ts` (application entry point, never imported)\n- **OpenTelemetry instrumentation**: `instrumentation.ts` (imported by main.ts before NestJS starts)\n- **TypeORM CLI files**: `data-source.ts`, `ormconfig.ts` (referenced by CLI, not imported)\n- **Migration runners**: `run-migrations.ts`, `run-migration.ts` (standalone entry points)\n- **Seeder scripts**: `seed.ts`, `seeder.ts` (standalone entry points)\n- **TypeORM entities**: `**/entity/*.ts`, `**/entities/*.ts` (loaded via glob patterns at runtime)\n- **TypeORM migrations**: `**/migration/*.ts`, `**/migrations/*.ts` (loaded via glob patterns)\n- **TypeORM subscribers**: `**/subscriber/*.ts`, `**/subscribers/*.ts` (loaded via glob patterns)\n- **Integration/E2E tests**: `test/integration/**/*.ts`, `test/e2e/**/*.ts` (test entry points)\n\nThese patterns prevent false \"unused file\" warnings for files that are consumed by TypeORM's runtime glob-based loading, referenced in `package.json` scripts, or serve as application/test entry points rather than being statically imported.\n\nThe conversion layer is also exported for direct use:\n\n```typescript\nimport { convertKnipIssues, findMonorepoRoot } from \"bluebird-nestjs\";\n```\n\n### Output Formatters\n\nFour output formatters are exported for programmatic use. Each accepts a `ScanResult` and returns a formatted string:\n\n```typescript\nimport { formatText, formatJson, formatSarif, formatHtml } from \"bluebird-nestjs\";\nimport type { JsonOutput } from \"bluebird-nestjs\";\n\nconst result = await diagnose();\n\n// Terminal-friendly output with ANSI colors, score gauge, and grouped diagnostics\nconst text = formatText(result, /* verbose */ false);\n\n// Structured JSON with score, counts, project metadata, and full diagnostics\nconst json = formatJson(result);\nconst parsed: JsonOutput = JSON.parse(json);\n\n// SARIF 2.1.0 for CI integrations (GitHub Code Scanning, Azure DevOps, etc.)\nconst sarif = formatSarif(result);\n\n// Standalone HTML dashboard with charts and collapsible diagnostics\nconst html = formatHtml(result);\n```\n\nThe `text` formatter shows a category summary, top issues, and optional detailed diagnostics (with `--verbose`). The `json` formatter includes top-level `errorCount`/`warningCount`/`baselinedCount` fields for easy consumption. The `sarif` formatter produces a spec-compliant SARIF 2.1.0 log with deduplicated rule entries, physical locations, and score metadata in run properties. The `html` formatter generates a self-contained HTML dashboard with dark theme, score gauge, category charts, and collapsible diagnostic details.\n\n### Exported Types\n\n```typescript\nimport type {\n  Diagnostic,\n  ScanResult,\n  ProjectInfo,\n  RuleMeta,\n  RuleCategory,\n  Severity,\n  RuleConfidence,\n  BluebirdConfig,\n  Waiver,\n  RunEslintOptions,\n  RunnerWarning,\n  LintResult,\n  RunGraphAnalysisOptions,\n  GraphAnalysisResult,\n  JsonOutput,\n} from \"bluebird-nestjs\";\n```\n\n### Registry Helpers\n\n```typescript\nimport {\n  getAllRules,\n  getEnabledRules,\n  getRuleById,\n  getRulesByCategory,\n  getRulesByConfidence,\n} from \"bluebird-nestjs\";\n\n// Get all 38 rules\nconst allRules = getAllRules();\n\n// Get rules enabled for a specific project\nconst enabledRules = getEnabledRules(project, /* includeHeuristic */ true);\n\n// Look up a specific rule\nconst rule = getRuleById(\"no-hardcoded-secrets\");\n\n// Filter by category or confidence\nconst securityRules = getRulesByCategory(\"security\");\nconst deterministicRules = getRulesByConfidence(\"deterministic\");\n```\n\n## Troubleshooting\n\n### \"Cannot find module\" errors\n\nEnsure you've installed dependencies in your project:\n\n```bash\nnpm install\n```\n\n### Rules not detecting my NestJS features\n\nBluebird auto-detects features from `package.json`. Ensure your NestJS-related dependencies are listed:\n\n```json\n{\n  \"dependencies\": {\n    \"@nestjs/swagger\": \"^7.0.0\",\n    \"@nestjs/graphql\": \"^12.0.0\"\n  }\n}\n```\n\n### Score seems too low\n\nUse `--verbose` to see all violations and identify patterns:\n\n```bash\nbluebird --verbose\n```\n\nCommon causes of low scores:\n- Missing `@Injectable()` decorators on services\n- Direct `process.env` access instead of ConfigService\n- Missing validation decorators on DTOs\n- Console.log instead of NestJS Logger\n\n### Baseline not filtering old violations\n\nEnsure the baseline file exists and matches the current file paths:\n\n```bash\n# Regenerate baseline if file paths changed\nbluebird --baseline\n```\n\n### Feature-gated rules not running\n\nFeature-gated rules (GraphQL, Microservices, WebSockets) only run when the corresponding package is detected. Check that your `package.json` includes the relevant `@nestjs/*` package.\n\n### Too many false positives\n\nConsider using waivers for intentional deviations:\n\n```json\n{\n  \"waivers\": [\n    {\n      \"rule\": \"bluebird/no-console-log\",\n      \"file\": \"src/main.ts\",\n      \"reason\": \"Console logging needed during bootstrap\"\n    }\n  ]\n}\n```\n\n### Config files flagged as \"unused\"\n\nBluebird automatically ignores common configuration files (eslint.config.js, jest.config.ts, etc.). If you have custom config files being flagged, add them to `ignore.files`:\n\n```json\n{\n  \"ignore\": {\n    \"files\": [\"my-custom-config.js\"]\n  }\n}\n```\n\n### TypeORM entities/migrations flagged as \"unused\"\n\nBluebird automatically recognizes TypeORM's glob-based loading patterns (`**/entity/*.ts`, `**/migrations/*.ts`, etc.) and marks these as entry points. If you have entities in non-standard directories, add them to your knip config or use waivers:\n\n```json\n{\n  \"ignore\": {\n    \"files\": [\"src/custom-entities/**\"]\n  }\n}\n```\n\n### data-source.ts or run-migrations.ts flagged as \"unused\"\n\nThese files are CLI entry points referenced in `package.json` scripts, not imported by other code. Bluebird v0.1.12+ automatically recognizes these patterns. If you're on an older version, upgrade:\n\n```bash\nnpm install -g bluebird-nestjs@latest\n```\n\n### Analysis is slow on large projects\n\nTry these optimizations:\n\n```bash\n# Run passes in parallel for ~8% faster execution\nbluebird --fast\n\n# Skip dead-code analysis (fastest improvement)\nbluebird --no-dead-code\n\n# Only check changed files\nbluebird --diff main\n\n# Skip graph analysis for single-file checks only\nbluebird --no-graph-analysis\n```\n\n### How do I understand a specific rule?\n\nUse the explain command:\n\n```bash\nbluebird explain no-hardcoded-secrets\n```\n\nThis shows the rule's purpose, severity, and how to fix violations.\n\n### How do I adopt Bluebird on an existing project?\n\nUse the baseline workflow to avoid being overwhelmed by legacy issues:\n\n```bash\n# 1. Create baseline of existing issues\nbluebird --baseline\ngit add .bluebird-baseline.json\ngit commit -m \"chore: add bluebird baseline\"\n\n# 2. Run in CI - only new issues will fail\nbluebird --fail-on error\n\n# 3. Fix issues over time and update baseline\nbluebird --update-baseline\n```\n\n### How do I run Bluebird in CI without prompts?\n\nUse the `--yes` flag with init, and standard flags for analysis:\n\n```bash\n# Non-interactive config generation\nbluebird init --yes\n\n# Quiet mode for CI (exit code only)\nbluebird --quiet\n\n# JSON output for parsing\nbluebird --format json\n```\n\n## ESLint Plugin\n\nBluebird includes an ESLint plugin for real-time feedback in your IDE. This surfaces Bluebird rules as you type, without running the full CLI.\n\n### Installation\n\nThe plugin is bundled with Bluebird:\n\n```bash\nnpm install --save-dev bluebird-nestjs\n```\n\n### Configuration\n\nAdd the plugin to your `eslint.config.js` (flat config):\n\n```javascript\nimport bluebird from 'bluebird-nestjs/eslint-plugin';\n\nexport default [\n  // Your existing config...\n  {\n    plugins: {\n      bluebird,\n    },\n    rules: {\n      // Enable all Bluebird rules as warnings\n      ...Object.fromEntries(\n        Object.keys(bluebird.rules).map(rule => [`bluebird/${rule}`, 'warn'])\n      ),\n\n      // Or enable specific rules\n      'bluebird/no-hardcoded-secrets': 'error',\n      'bluebird/missing-injectable': 'error',\n      'bluebird/no-console-log': 'warn',\n    },\n  },\n];\n```\n\n### Available Rules\n\nAll file-level Bluebird rules are available in the ESLint plugin. Graph-level rules (like `no-circular-dependency` and `no-duplicate-route`) require cross-file analysis and are only available via the CLI.\n\n### IDE Integration\n\nOnce configured, Bluebird rules will appear in:\n\n- **VS Code** with the ESLint extension\n- **WebStorm/IntelliJ** with built-in ESLint support\n- **Neovim** with nvim-lspconfig or ALE\n- Any editor with ESLint language server support\n\n## MCP Server\n\nBluebird includes an MCP (Model Context Protocol) server for AI agent integration. This allows AI assistants like Claude to run Bluebird analysis programmatically.\n\n```bash\n# Start the MCP server (stdio transport)\nbluebird mcp\n```\n\n### Available Tools\n\nThe MCP server exposes four tools:\n\n| Tool | Description |\n|:---|:---|\n| `bluebird_diagnose` | Run a full diagnostic scan. Returns health score, diagnostics, and project metadata. |\n| `bluebird_health` | Get a quick health score (0-100) for a project. |\n| `bluebird_layers` | Analyze module dependency layers and detect violations. |\n| `bluebird_explain` | Get information about rules. List all, filter by category, or explain a specific rule. |\n\n### Claude Desktop Configuration\n\nAdd Bluebird to your Claude Desktop MCP settings (`claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"bluebird\": {\n      \"command\": \"npx\",\n      \"args\": [\"bluebird-nestjs\", \"mcp\"]\n    }\n  }\n}\n```\n\nOnce configured, Claude can analyze your NestJS projects, explain rules, and help you fix architectural issues.\n\n## Docker\n\nBluebird provides a Docker image for containerized analysis:\n\n```bash\n# Build the image\ndocker build -t bluebird .\n\n# Run analysis on current directory\ndocker run --rm -v $(pwd):/workspace bluebird\n\n# JSON output\ndocker run --rm -v $(pwd):/workspace bluebird --format json\n\n# Diff mode\ndocker run --rm -v $(pwd):/workspace bluebird --diff main\n\n# With configuration file\ndocker run --rm -v $(pwd):/workspace bluebird --verbose\n```\n\nThe container runs as a non-root user for security and mounts your project at `/workspace`.\n\n## Repository Structure\n\nThis is a `pnpm` monorepo. The main package is `packages/bluebird`.\n\n```\npackages/bluebird/\n├── src/\n│   ├── cli.ts                  # Commander-based CLI entrypoint\n│   ├── scan.ts                 # Terminal UI orchestration (spinner, summary)\n│   ├── watch.ts                # Watch mode implementation\n│   ├── index.ts                # Public API surface (diagnose, exports)\n│   ├── types.ts                # Shared type contracts\n│   ├── constants.ts            # Scoring thresholds and penalties\n│   ├── rules/\n│   │   ├── index.ts            # Rule registry (38 rules, frozen metadata)\n│   │   ├── checkers.ts         # Checker maps (36 file + 2 graph)\n│   │   ├── ast-helpers.ts      # TypeScript AST utilities\n│   │   ├── architecture.ts     # DI bypass, god controller/service\n│   │   ├── security.ts         # Secrets, validation, DTO typing, SQL injection\n│   │   ├── correctness.ts      # Injectable, lifecycle hooks, side effects\n│   │   ├── api-design.ts       # Swagger, entity exposure, HTTP status\n│   │   ├── performance.ts      # Sync fs/crypto blocking, caching, N+1\n│   │   ├── database.ts         # Missing indexes, unsafe synchronize\n│   │   ├── testing.ts          # Test coverage heuristics\n│   │   └── graph-rules.ts      # Circular deps, duplicate routes\n│   ├── mcp/\n│   │   ├── index.ts            # MCP server entry point\n│   │   ├── server.ts           # MCP server setup and tool registration\n│   │   └── tools.ts            # Tool handlers (diagnose, health, layers, explain)\n│   └── utils/\n│       ├── run-eslint.ts             # File-level analysis runner (ESLint pass)\n│       ├── run-graph-analysis.ts     # Cross-file analysis runner (graph pass)\n│       ├── run-knip.ts               # Dead-code analysis runner (knip pass)\n│       ├── discover-project.ts       # Auto-detect NestJS project metadata\n│       ├── calculate-score.ts        # Hybrid health score computation\n│       ├── load-config.ts            # Config file loading and validation\n│       ├── init-config.ts            # Interactive config generation (bluebird init)\n│       ├── filter-diagnostics.ts     # Ignore/waiver/glob filtering\n│       ├── baseline.ts               # Baseline snapshot load/save/apply\n│       ├── parse-disable-comments.ts # Inline disable comment parsing\n│       ├── combine-diagnostics.ts\n│       ├── orchestrate.ts            # Analysis orchestration with progress callbacks\n│       ├── format-text.ts            # Text output formatter (terminal)\n│       ├── format-json.ts            # JSON output formatter\n│       ├── format-sarif.ts           # SARIF 2.1.0 output formatter\n│       ├── format-html.ts            # HTML dashboard formatter\n│       ├── layers.ts                 # Module layer analysis\n│       └── format-layers.ts          # Layer output formatters (text, json, mermaid)\n└── tests/                            # 944 tests across 23 files\n    ├── rules-checkers.test.ts        # Rule checker unit tests\n    ├── run-eslint.test.ts            # ESLint runner tests\n    ├── run-graph-analysis.test.ts    # Graph runner tests\n    ├── run-knip.test.ts              # Dead-code runner tests\n    ├── scan.test.ts                  # Scan orchestrator tests\n    ├── diagnose.test.ts              # Integration tests\n    └── ...\n```\n\n## Development\n\n```bash\n# Install dependencies\npnpm install\n\n# Run tests\npnpm --filter bluebird run test\n\n# Watch mode\npnpm --filter bluebird run test:watch\n\n# Type check\npnpm --filter bluebird run typecheck\n\n# Lint\npnpm --filter bluebird run lint\n\n# Build\npnpm --filter bluebird run build\n```\n\n## Contributing\n\nWe welcome contributions! Please see our development setup above and ensure:\n\n1. All tests pass (`pnpm --filter bluebird run test`)\n2. Code is formatted (`pnpm --filter bluebird run lint`)\n3. Types check (`pnpm --filter bluebird run typecheck`)\n\n### Adding a New Rule\n\n1. Add the checker function to the appropriate file in `src/rules/`\n2. Add the rule metadata to `src/rules/index.ts`\n3. Register the checker in `src/rules/checkers.ts`\n4. Add tests in `tests/rules-checkers.test.ts`\n5. Update the rule counts in this README\n\n### Releasing to npm\n\nReleases are automated via GitHub Actions when a version tag is pushed:\n\n```bash\n# 1. Update version in packages/bluebird/package.json\ncd packages/bluebird\nnpm version patch  # or minor, major\n\n# 2. Push the tag to trigger release\ngit push origin main --tags\n```\n\nThe workflow will:\n1. Build and test\n2. Publish to npm as `bluebird-nestjs`\n\n**Prerequisites:**\n- `NPM_TOKEN` secret must be configured in GitHub repository settings\n- npm account must have publish access to the `bluebird-nestjs` package\n\n## License\n\nUNLICENSED\n","readmeFilename":"README.md"}