{"_id":"@civitas-cerebrum/test-coverage","_rev":"11-2549cb20001230d874447797e137ce56","name":"@civitas-cerebrum/test-coverage","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.1":{"name":"@civitas-cerebrum/test-coverage","version":"0.0.1","keywords":["typescript","test-coverage","ast","static-analysis","api-integrity","automation"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/test-coverage@0.0.1","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/test-coverage#readme","bugs":{"url":"https://github.com/civitas-cerebrum/test-coverage/issues"},"bin":{"test-coverage":"dist/cli.js"},"dist":{"shasum":"583fd9b8a1eeed22e42cd47a06ac18a98300b00d","tarball":"https://registry.npmjs.org/@civitas-cerebrum/test-coverage/-/test-coverage-0.0.1.tgz","fileCount":8,"integrity":"sha512-1IPB7V8NJ/jqAFoaK5QvK8yvbTM9gEyeb4WncZ5BgDHGQvd43Ho9o4FlysZyupCtJSqdP8B3ZZu83jG7DMyKTA==","signatures":[{"sig":"MEUCIQC8F3an+eVH6aVEpUS4VspHXKTT0veMCvjTmJq/M4+K0AIgTU5XBzhAzvIJz9GnIId1Fg0JjiwAe/T9GNoowXJ0qL8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2ftest-coverage@0.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":36135},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"59c857566beb9c80eaeabbd309fc4b0864a29808","scripts":{"test":"jest","build":"tsc && node scripts/fix-shebang.js","clean":"rm -rf dist","postbuild":"chmod +x dist/cli.js","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+https://github.com/civitas-cerebrum/test-coverage.git","type":"git"},"_npmVersion":"11.9.0","description":"Checks if public methods of TypeScript classes are called in test files via AST analysis.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"glob":"^10.4.5","typescript":"^5.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-coverage_0.0.1_1774312656484_0.9524464491770233","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@civitas-cerebrum/test-coverage","version":"0.0.2","keywords":["typescript","test-coverage","ast","static-analysis","api-integrity","automation"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/test-coverage@0.0.2","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/test-coverage#readme","bugs":{"url":"https://github.com/civitas-cerebrum/test-coverage/issues"},"bin":{"test-coverage":"dist/cli.js"},"dist":{"shasum":"c4c139326a248bcfb95fbdd66a9420144d3e9dba","tarball":"https://registry.npmjs.org/@civitas-cerebrum/test-coverage/-/test-coverage-0.0.2.tgz","fileCount":8,"integrity":"sha512-upl5efyrt0AUNw9f431PNBab361f4PWMlSblMyUyfOFxhnIb8Cyda9tfBpBfdMgzJRuaQhB801gHAOpWe22jbA==","signatures":[{"sig":"MEYCIQCCp70lPCSZiHTJNe0P80u/HtQ7Fx0m37bvU+XnyScd1AIhAJvJ4TMHr9orOlNvadPnTyTjEDst1NEJmOxVfupbjn4D","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2ftest-coverage@0.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":36586},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"8edf34fa3c3867e1c95527af72832556ba1c37ea","scripts":{"test":"jest","build":"tsc && node scripts/fix-shebang.js","clean":"rm -rf dist","postbuild":"chmod +x dist/cli.js","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+https://github.com/civitas-cerebrum/test-coverage.git","type":"git"},"_npmVersion":"11.9.0","description":"Checks if public methods of TypeScript classes are called in test files via AST analysis.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"glob":"^10.4.5","typescript":"^5.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-coverage_0.0.2_1774340424754_0.8272329910123868","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@civitas-cerebrum/test-coverage","version":"0.0.3","keywords":["typescript","test-coverage","ast","static-analysis","api-integrity","automation"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/test-coverage@0.0.3","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/test-coverage#readme","bugs":{"url":"https://github.com/civitas-cerebrum/test-coverage/issues"},"bin":{"test-coverage":"dist/cli.js"},"dist":{"shasum":"1bce134eee1a62664e3144273d75e29db4079b8d","tarball":"https://registry.npmjs.org/@civitas-cerebrum/test-coverage/-/test-coverage-0.0.3.tgz","fileCount":8,"integrity":"sha512-eruh+7ESGHTNijIub4ufb4kDaxJwX2hwwO7ltWJD6LE+xjzxt+J8/bcIxDGelknvL/oLFh1QVQYsGQI3Vti2Ww==","signatures":[{"sig":"MEUCIQDQAqmu7u4qHnIj4/gw1vn8ueqodvDiQKPh7oheU1CCIQIgX7wDA64TjWMFiVD8Sd/vR9mHsMTsX+/SiczirVZp5tY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2ftest-coverage@0.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":37114},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e968cb7887c228414b31f6650a993952bb0dac4a","scripts":{"test":"jest","build":"tsc && node scripts/fix-shebang.js","clean":"rm -rf dist","postbuild":"chmod +x dist/cli.js","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+https://github.com/civitas-cerebrum/test-coverage.git","type":"git"},"_npmVersion":"11.9.0","description":"Checks if public methods of TypeScript classes are called in test files via AST analysis.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"glob":"^10.4.5","typescript":"^5.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-coverage_0.0.3_1774346318823_0.11059883061106812","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@civitas-cerebrum/test-coverage","version":"0.0.4","keywords":["typescript","test-coverage","ast","static-analysis","api-integrity","automation"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/test-coverage@0.0.4","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/test-coverage#readme","bugs":{"url":"https://github.com/civitas-cerebrum/test-coverage/issues"},"bin":{"test-coverage":"dist/cli.js"},"dist":{"shasum":"a0aa267f33c649bc0a2663d8cbfed1c5d5400ed9","tarball":"https://registry.npmjs.org/@civitas-cerebrum/test-coverage/-/test-coverage-0.0.4.tgz","fileCount":8,"integrity":"sha512-xV0tczA2dDRgWNClyzs9hwFb9eNo+zGrqc2GVvasAaSH+1V86BxyA92qpnAip3tKanWTYxx/QOcTi6Hu7m/L/g==","signatures":[{"sig":"MEYCIQDggQQwjP2skFpsJFFRIdMyAl6owhVZN2SNY2wJchOWDwIhAKbqFKU6nJB1gJvTfBfLLv2IT94OrdfZeOjD+zxiTpZb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2ftest-coverage@0.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":37115},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"28e9e7bd9dc2db552e5ddce0b0623ecf28147bb4","scripts":{"test":"jest","build":"tsc && node scripts/fix-shebang.js","clean":"rm -rf dist","postbuild":"chmod +x dist/cli.js","prepublishOnly":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+https://github.com/civitas-cerebrum/test-coverage.git","type":"git"},"_npmVersion":"11.9.0","description":"Checks if public methods of TypeScript classes are called in test files via AST analysis.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"glob":"^10.4.5","typescript":"^5.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-coverage_0.0.4_1774347283673_0.31026034488307586","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@civitas-cerebrum/test-coverage","version":"0.0.5","keywords":["typescript","test-coverage","ast","static-analysis","api-integrity","automation"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/test-coverage@0.0.5","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/test-coverage#readme","bugs":{"url":"https://github.com/civitas-cerebrum/test-coverage/issues"},"bin":{"test-coverage":"dist/cli.js"},"dist":{"shasum":"c567144633c59208822131d487430e82db120127","tarball":"https://registry.npmjs.org/@civitas-cerebrum/test-coverage/-/test-coverage-0.0.5.tgz","fileCount":8,"integrity":"sha512-doii6BL8fdf31Yf8zp8idhHbKR89jMwsxRbYJ8Gi9MLL3PKtfsiWsryvik5eJjCCq16+JbLHDch/tmeJ1hKT/Q==","signatures":[{"sig":"MEUCIAmbH4Vm7ol1VB0iu0mUlzVyZwS1Bl1kSoNAN7rQJ3R8AiEAsNCnX2rDCYAt0Qv0V4erUdx/r4TSIjZSffNpq03pHEc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2ftest-coverage@0.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":37347},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"599e86ccf41c88174572e4b04ce2b5b099b31f8c","scripts":{"test":"jest","build":"tsc && node scripts/fix-shebang.js","clean":"rm -rf dist","postbuild":"chmod +x dist/cli.js","test:coverage":"npx test-coverage --format github-table","prepublishOnly":"npm run clean && npm run build && npm test","test:coverage:plain":"npx test-coverage --format github-plain"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+https://github.com/civitas-cerebrum/test-coverage.git","type":"git"},"_npmVersion":"11.9.0","description":"Checks if public methods of TypeScript classes are called in test files via AST analysis.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"glob":"^10.4.5","typescript":"^5.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-coverage_0.0.5_1774353118005_0.9045941620323177","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@civitas-cerebrum/test-coverage","version":"0.0.6","keywords":["typescript","test-coverage","ast","static-analysis","api-integrity","automation"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/test-coverage@0.0.6","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/test-coverage#readme","bugs":{"url":"https://github.com/civitas-cerebrum/test-coverage/issues"},"bin":{"test-coverage":"dist/cli.js"},"dist":{"shasum":"1eb0debd7b0ec18ed1d5b5820e0881de59bf6e58","tarball":"https://registry.npmjs.org/@civitas-cerebrum/test-coverage/-/test-coverage-0.0.6.tgz","fileCount":8,"integrity":"sha512-H6zA7ZsUOzekOea8tYvGkVRYk69bWlhYBmRNyy76sQ9W2+JNHn8xnZLGn3ioJS21n8SrcLgqVKQgTPy3FSXIlw==","signatures":[{"sig":"MEYCIQCaZyHXloBwKdzEfk1IktH5d3soSWwzMqaJowtHSaUfOgIhAP1HBj1DWmlToxuBtunEeFluwbQJ7urcj5+rdkPSiweZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2ftest-coverage@0.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":37373},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"3783e20f43bb1caff3753f6fdd8c6d061c4d378c","scripts":{"test":"jest","build":"tsc && node scripts/fix-shebang.js","clean":"rm -rf dist","postbuild":"chmod +x dist/cli.js","test:coverage":"npx test-coverage --format github-table","prepublishOnly":"npm run clean && npm run build && npm test","test:coverage:plain":"npx test-coverage --format github-plain"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+https://github.com/civitas-cerebrum/test-coverage.git","type":"git"},"_npmVersion":"11.9.0","description":"Checks if public methods of TypeScript classes are called in test files via AST analysis.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"glob":"^10.4.5","typescript":"^5.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-coverage_0.0.6_1774358898544_0.43912112582045393","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@civitas-cerebrum/test-coverage","version":"0.0.7","keywords":["typescript","test-coverage","ast","static-analysis","api-integrity","automation"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/test-coverage@0.0.7","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/test-coverage#readme","bugs":{"url":"https://github.com/civitas-cerebrum/test-coverage/issues"},"bin":{"test-coverage":"dist/cli.js"},"dist":{"shasum":"f9839ab2cdd7759c6035f938d7422c9ef3ff3cc9","tarball":"https://registry.npmjs.org/@civitas-cerebrum/test-coverage/-/test-coverage-0.0.7.tgz","fileCount":8,"integrity":"sha512-EQaImEDCzPZonMb39iZ93pK3ZIKHd2czEqod23gJJsFVpHbfOo85jAOk64gBBWIkWsJkTZ2YewJFoE2EFvEUlQ==","signatures":[{"sig":"MEYCIQCmz++s+RLwb2PA7pzU/wl8TKKYLOkpDAZtTf888tX6iwIhAO0uhW7z/G6VjzLZSWSEEmEb5UQmXk4IQ0ppApYHZc7M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2ftest-coverage@0.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49690},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"d22926cc52cf49a887063b8eaad7f87cd5d0a234","scripts":{"test":"jest","build":"tsc && node scripts/fix-shebang.js","clean":"rm -rf dist","postbuild":"chmod +x dist/cli.js","test:coverage":"npx test-coverage --format github-table","prepublishOnly":"npm run clean && npm run build && npm test","test:coverage:plain":"npx test-coverage --format github-plain"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+https://github.com/civitas-cerebrum/test-coverage.git","type":"git"},"_npmVersion":"11.9.0","description":"Checks if public methods of TypeScript classes are called in test files via AST analysis.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"glob":"^10.4.5","typescript":"^5.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-coverage_0.0.7_1774450619272_0.3739404791670111","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@civitas-cerebrum/test-coverage","version":"0.0.8","keywords":["typescript","test-coverage","ast","static-analysis","api-integrity","automation"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/test-coverage@0.0.8","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/test-coverage#readme","bugs":{"url":"https://github.com/civitas-cerebrum/test-coverage/issues"},"bin":{"test-coverage":"dist/cli.js"},"dist":{"shasum":"96872cebafd1a1580c691754864b628870a960aa","tarball":"https://registry.npmjs.org/@civitas-cerebrum/test-coverage/-/test-coverage-0.0.8.tgz","fileCount":8,"integrity":"sha512-6IEdaIzVQufewx6ZnbpbpK0TWNMzuyYoO1Z8QjATdsJ+9DuUhvOfciHMrMRBA4n4OQ9U4+kCowSW1xAwt7klng==","signatures":[{"sig":"MEUCIFfn9NqKg4p/ukQwNmgcpjcXZbf/b2YeuTGvKCD4x+qHAiEAwsqDrfA+YBQDueta+JET0c8ZjeD+L35k3lQIMr8Vj1o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2ftest-coverage@0.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":43006},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"493695a93a5c1f88959e6c9909cbb7ed8f4a1064","scripts":{"test":"jest","build":"tsc && node scripts/fix-shebang.js","clean":"rm -rf dist","postbuild":"chmod +x dist/cli.js","test:coverage":"npx test-coverage --format github-table","prepublishOnly":"npm run clean && npm run build && npm test","test:coverage:plain":"npx test-coverage --format github-plain"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+https://github.com/civitas-cerebrum/test-coverage.git","type":"git"},"_npmVersion":"11.9.0","description":"Checks if public methods of TypeScript classes are called in test files via AST analysis.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"glob":"^10.4.5","typescript":"^5.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-coverage_0.0.8_1774452404431_0.010562358528861893","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@civitas-cerebrum/test-coverage","version":"0.0.9","keywords":["typescript","test-coverage","ast","static-analysis","api-integrity","automation"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/test-coverage@0.0.9","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/test-coverage#readme","bugs":{"url":"https://github.com/civitas-cerebrum/test-coverage/issues"},"bin":{"test-coverage":"dist/cli.js"},"dist":{"shasum":"8d2a5d792a6331244a450cc2ac9b1348ba66691a","tarball":"https://registry.npmjs.org/@civitas-cerebrum/test-coverage/-/test-coverage-0.0.9.tgz","fileCount":8,"integrity":"sha512-+fnvV+dD2SnxbYAjlN9sI3oyh/VIzgW/T8Y6i7Y+Vttyw9DdJ3wesN+bWkxVGF8F1GAf4LKg1BRGlw5vjy5agQ==","signatures":[{"sig":"MEUCIF0zDEzjPcXqZrYezW9LBpx2KhrgCYpUxbuTWgZM9ak8AiEArMLbDpG+9DM8SSupY6pTlLL1zaqr1a0ryLRLGF+HfV8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2ftest-coverage@0.0.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":43008},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"9474bd80aab96017a1995d393aa4249b86a76373","scripts":{"test":"jest","build":"tsc && node scripts/fix-shebang.js","clean":"rm -rf dist","postbuild":"chmod +x dist/cli.js","test:coverage":"npx test-coverage --format github-table","prepublishOnly":"npm run clean && npm run build && npm test","test:coverage:plain":"npx test-coverage --format github-plain"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+https://github.com/civitas-cerebrum/test-coverage.git","type":"git"},"_npmVersion":"11.9.0","description":"Checks if public methods of TypeScript classes are called in test files via AST analysis.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"glob":"^10.4.5","typescript":"^5.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-coverage_0.0.9_1774649053431_0.23983150234241868","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@civitas-cerebrum/test-coverage","version":"0.1.0","keywords":["typescript","test-coverage","ast","static-analysis","api-integrity","automation"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/test-coverage@0.1.0","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/test-coverage#readme","bugs":{"url":"https://github.com/civitas-cerebrum/test-coverage/issues"},"bin":{"test-coverage":"dist/cli.js"},"dist":{"shasum":"449133e5f9b2ba0caabe27843beff61104b31a48","tarball":"https://registry.npmjs.org/@civitas-cerebrum/test-coverage/-/test-coverage-0.1.0.tgz","fileCount":32,"integrity":"sha512-6qPGRRFuF3JkGH2UMgnRNV5lh8F77+bSJgROAqYzFmq1Gq97DzlpjCt6ExUNzq8JUXh9uxA8w28rdQVGyq0K2w==","signatures":[{"sig":"MEUCIG58rvIiXPhZnY1peuPCPUNnbg3IKL8W+CJlN+yV4tONAiEArIdIVwZWBa+27ns5BFpZ1tQRxYOPBxGmEf2m4M1yPBM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2ftest-coverage@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":61801},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"f8dbfe564470779a508cd180d472ee261521deb5","scripts":{"test":"jest","build":"tsc && node scripts/fix-shebang.js","clean":"rm -rf dist","postbuild":"chmod +x dist/cli.js","test:coverage":"npx test-coverage --format github-table","prepublishOnly":"npm run clean && npm run build && npm test","test:coverage:plain":"npx test-coverage --format github-plain"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+https://github.com/civitas-cerebrum/test-coverage.git","type":"git"},"_npmVersion":"11.11.0","description":"Checks if public methods of TypeScript classes are called in test files via AST analysis.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"glob":"^10.4.5","typescript":"^5.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/test-coverage_0.1.0_1776446287604_0.5383790924108538","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@civitas-cerebrum/test-coverage","version":"0.1.1","description":"Checks if public methods of TypeScript classes are called in test files via AST analysis.","main":"dist/index.js","types":"dist/index.d.ts","bin":{"test-coverage":"dist/cli.js"},"scripts":{"clean":"rm -rf dist","build":"tsc && node scripts/fix-shebang.js","postbuild":"chmod +x dist/cli.js","test":"jest","test:coverage":"npx test-coverage --format github-table","test:coverage:plain":"npx test-coverage --format github-plain","prepublishOnly":"npm run clean && npm run build && npm test"},"dependencies":{"glob":"^13.0.6","typescript":"^5.0.0"},"devDependencies":{"@types/jest":"^29.5.0","@types/node":"^20.0.0","jest":"^29.7.0","ts-jest":"^29.1.0","typescript":"^5.0.0"},"publishConfig":{"access":"public","provenance":true},"repository":{"type":"git","url":"git+https://github.com/civitas-cerebrum/test-coverage.git"},"author":{"name":"Umut Ay Bora"},"license":"MIT","keywords":["typescript","test-coverage","ast","static-analysis","api-integrity","automation"],"gitHead":"099163b5e3458a780c5c351fba75ba34556dd3d1","_id":"@civitas-cerebrum/test-coverage@0.1.1","bugs":{"url":"https://github.com/civitas-cerebrum/test-coverage/issues"},"homepage":"https://github.com/civitas-cerebrum/test-coverage#readme","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-e7PVij3J2PJpRznIrGY0ZVtRtQL55AZ8rXBEw7SQRJpzvo3dRj1FpdlMHg2IY+SHYmEFWc/tce4THAVvcDAFZQ==","shasum":"8ea34bd8281c82853c9ab077ab891d629556ab9b","tarball":"https://registry.npmjs.org/@civitas-cerebrum/test-coverage/-/test-coverage-0.1.1.tgz","fileCount":32,"unpackedSize":61801,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2ftest-coverage@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEFf3TGtnaNZjquSKBMbt3P66rxszZrFCXWzPMS05IB8AiBsnBXf7In2z6wU413ZS+WVG30U5Pcb+Qd1utZ6iIIlRA=="}]},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"directories":{},"maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/test-coverage_0.1.1_1786516909876_0.8053332363973664"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-24T00:37:36.308Z","modified":"2026-08-12T06:41:50.407Z","0.0.1":"2026-03-24T00:37:36.707Z","0.0.2":"2026-03-24T08:20:24.898Z","0.0.3":"2026-03-24T09:58:38.953Z","0.0.4":"2026-03-24T10:14:43.844Z","0.0.5":"2026-03-24T11:51:58.139Z","0.0.6":"2026-03-24T13:28:18.708Z","0.0.7":"2026-03-25T14:56:59.413Z","0.0.8":"2026-03-25T15:26:44.579Z","0.0.9":"2026-03-27T22:04:13.584Z","0.1.0":"2026-04-17T17:18:07.965Z","0.1.1":"2026-08-12T06:41:50.031Z"},"bugs":{"url":"https://github.com/civitas-cerebrum/test-coverage/issues"},"author":{"name":"Umut Ay Bora"},"license":"MIT","homepage":"https://github.com/civitas-cerebrum/test-coverage#readme","keywords":["typescript","test-coverage","ast","static-analysis","api-integrity","automation"],"repository":{"type":"git","url":"git+https://github.com/civitas-cerebrum/test-coverage.git"},"description":"Checks if public methods of TypeScript classes are called in test files via AST analysis.","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"readme":"# @civitas-cerebrum/test-coverage\n\n[![NPM Version](https://img.shields.io/npm/v/@civitas-cerebrum/test-coverage?color=rgb(88%2C%20171%2C%2070))](https://www.npmjs.com/package/@civitas-cerebrum/test-coverage)\n\n> 🔍 **Zero-tolerance API coverage enforcement for TypeScript projects.** > Uses TypeScript's compiler API (AST + type checker) to verify that every public method of every exported class is exercised in your test suite — at the static analysis level, before a single test runs.\n\n---\n\n## How It Works\n\nThe reporter runs in two passes over your TypeScript program:\n\n1. **API Indexing** — scans your `src/` directory, finds all exported classes, and catalogs their public non-constructor methods (including arrow function properties).\n2. **Call Detection** — scans your test files and uses the TypeScript type checker to find typed call expressions that resolve back to those methods. Three strategies are applied in order of precision: signature-based resolution → apparent type hierarchy traversal → name-based fallback for mocked/`as any` instances.\n\nIf your coverage percentage meets or exceeds your defined **threshold**, the process exits `0` ✅. Otherwise, it exits `1` ❌, failing your build.\n\n---\n\n## Installation\n\n```bash\nnpm install --save-dev @civitas-cerebrum/test-coverage\n```\n\n---\n\n## Usage\n\n### CLI\n\n```bash\n# Run with default settings (100% threshold)\nnpx test-coverage\n\n# Custom threshold and format\nnpx test-coverage --threshold=85 --format=github-table\n```\n\n### Programmatic\n\n```typescript\nimport { ApiCoverageReporter } from '@civitas-cerebrum/test-coverage';\n\nconst reporter = new ApiCoverageReporter({\n  rootDir: process.cwd(),\n  srcDir: './src',\n  testDir: './tests',\n  outputFormat: 'github-table',\n  threshold: 85, // Fail build if below 85%\n});\n\nconst passed = await reporter.runCoverageReport();\nprocess.exit(passed ? 0 : 1);\n```\n\n### Pipeline Script\n\nAdd the following stage to your GitHub Actions pipeline.\n```yaml\n      - name: 📊 Generate & Post Table Report\n        if: always()\n        uses: actions/github-script@v7\n        env:\n          REPORT_FORMAT: 'table'\n        with:\n          script: |\n            const fs = require('fs');\n            const cp = require('child_process');\n            \n            const config = {\n              table: { flag: 'github-table', header: 'Table report'},\n              plain: { flag: 'github-plain', header: 'Plain report' }\n            }[process.env.REPORT_FORMAT];\n\n            cp.execSync(`npx test-coverage --format=${config.flag}`);\n            const body = fs.readFileSync('test-coverage-report.md', 'utf-8');\n\n            const { data: comments } = await github.rest.issues.listComments({\n              owner: context.repo.owner,\n              repo: context.repo.repo,\n              issue_number: context.issue.number,\n            });\n            \n            const existing = comments.find(c => \n              c.user.login === 'github-actions[bot]' && \n              c.body.includes(config.header)\n            );\n\n            const commentPayload = {\n              owner: context.repo.owner,\n              repo: context.repo.repo,\n              body: body\n            };\n\n            if (existing) {\n              await github.rest.issues.updateComment({ ...commentPayload, comment_id: existing.id });\n            } else {\n              await github.rest.issues.createComment({ ...commentPayload, issue_number: context.issue.number });\n            }\n```\n\n### Options\n\n| Option | Type | Default | Description |\n|---|---|---|---|\n| `rootDir` | `string` | `process.cwd()` | Project root (must contain `tsconfig.json`) |\n| `srcDir` | `string` | `<rootDir>/src` | Where exported classes live |\n| `testDir` | `string` | `<rootDir>/tests` | Where test files live |\n| `threshold` | `number` | `100` | Min percentage (0-100) required to pass the build |\n| `ignorePaths` | `string[]` | `['node_modules', 'dist']` | Path segments to skip during scanning |\n| `outputFormat` | `string` | auto | `pretty`, `text`, `json`, `html`, `badge`, `github-plain`, `github-table` |\n| `debug` | `boolean` | `false` | 🐛 Print file discovery and call-matching trace |\n\n---\n\n## Output Formats\n\n### 🎨 `pretty` (default in terminal)\nColorized ANSI output with a progress bar and per-class breakdown. Automatically selected in interactive terminals.\n\n### 🐙 GitHub Formats\nOptimized for GitHub Actions Summaries and PR comments.\n\n* **`github-plain`** (or `github`): The classic list-based view with `[x]` checkboxes. Best for smaller APIs.\n* **`github-table`**: A high-density table view that groups covered and uncovered methods into compact cells. **Recommended for large projects** to avoid massive scrolling.\n\n### 📄 `text`\nPlain-text summary saved as `test-coverage-report.txt`. Best for logs.\n\n### 🗂️ `json`\nMachine-readable output saved as `test-coverage-report.json`. Includes `summary.passed` boolean based on your threshold.\n\n### 🌐 `html`\nA self-contained visual report saved as `test-coverage-report.html`. Includes an animated progress bar and color-coded method badges.\n\n### 🏷️ `badge`\nGenerates a shields.io-compatible SVG saved as `test-coverage-badge.svg`. The badge color automatically turns **red** if you are below your specified `threshold`.\n\n---\n\n## ⚙️ CI Integration\n\n### GitHub Actions\n\n```yaml\n- name: Check API coverage\n  run: npx test-coverage --threshold=90 --format=github-table\n```\n\n### Uploading Reports\n\n```yaml\n- name: Upload HTML report\n  if: always()\n  uses: actions/upload-artifact@v4\n  with:\n    name: api-coverage-report\n    path: |\n      test-coverage-report.html\n      test-coverage-report.md\n```\n\n---\n\n## 🔎 What Gets Tracked\n\n| ✅ Included | ❌ Excluded |\n|---|---|\n| Public methods on exported classes | `private` / `protected` members |\n| Public arrow function properties | `constructor` |\n| Inherited public methods | Methods prefixed with `_` |\n\n---\n\n## 🐛 Debugging Zero Coverage\n\nIf the API index builds correctly but coverage shows 0%, enable debug mode:\n`npx test-coverage --debug`\n\nCommon causes:\n- **Test files not found**: Ensure they end in `.spec.ts` / `.test.ts`.\n- **Heavily mocked instances (`as any`)**: The name-based fallback usually covers this, but check the debug output for `[name-only match]` lines.\n\n---\n\n## License\n\nMIT © [Umut Ay Bora](https://github.com/civitas-cerebrum)","readmeFilename":"README.md"}