{"_id":"@danielsitek/eslint-stats","_rev":"6-59d840f8a003fcccd01b4d363f462137","name":"@danielsitek/eslint-stats","dist-tags":{"latest":"0.4.2"},"versions":{"0.1.0":{"name":"@danielsitek/eslint-stats","version":"0.1.0","keywords":["eslint","formatter","statistics","stats","aggregated","visualization","typescript","zero-dependencies","eslint9"],"author":{"url":"https://github.com/danielsitek","name":"Daniel Sitek","email":"me@danielsitek.com"},"license":"MIT","_id":"@danielsitek/eslint-stats@0.1.0","maintainers":[{"name":"danielsitek","email":"dan.sitek@gmail.com"}],"contributors":[{"url":"http://github.com/ganimomer","name":"Omer Ganim","email":"ganimomer@gmail.com"}],"homepage":"https://github.com/danielsitek/eslint-stats#readme","bugs":{"url":"https://github.com/danielsitek/eslint-stats/issues"},"dist":{"shasum":"9819b749853b59357eea463055346506c5c1fdc3","tarball":"https://registry.npmjs.org/@danielsitek/eslint-stats/-/eslint-stats-0.1.0.tgz","fileCount":51,"integrity":"sha512-ZG8x171S+YuyNO9vPaEhiOSyACPToaBzrqdW3djfsFfcJqcYm730WwoMHo2FJJRBs05R3qRNnm+Mj3Zeg8ssZg==","signatures":[{"sig":"MEUCIQDCkz2kNU/MbDr6A8xWhxXWAIsb7Uniw56kCtmJx47Z9AIgYVFF8toOMdJcq5V3MRwt9m8lDtN2puMocLjgniYFbaM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37412},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./by-error":{"types":"./dist/formatters/by-error.d.ts","import":"./dist/formatters/by-error.js"},"./by-folder":{"types":"./dist/formatters/by-folder.d.ts","import":"./dist/formatters/by-folder.js"},"./by-warning":{"types":"./dist/formatters/by-warning.d.ts","import":"./dist/formatters/by-warning.js"},"./by-error-and-warning":{"types":"./dist/formatters/by-error-and-warning.d.ts","import":"./dist/formatters/by-error-and-warning.js"},"./by-error-and-warning-stacked":{"types":"./dist/formatters/by-error-and-warning-stacked.d.ts","import":"./dist/formatters/by-error-and-warning-stacked.js"}},"gitHead":"21b7c4d955867fd2dac66ec8a04a1e5319fb9a86","scripts":{"lint":"eslint .","test":"tsx --test test/**/*.test.ts","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","format":"prettier --write .","prebuild":"npm run clean","demo:both":"eslint .demo/test.js -f ./dist/formatters/by-error-and-warning.js -c .demo/eslint.config.mjs","typecheck":"tsc --noEmit","demo:error":"eslint .demo/test.js -f ./dist/formatters/by-error.js -c .demo/eslint.config.mjs","test:watch":"tsx --test --watch test/**/*.test.ts","demo:folder":"eslint .demo/test.js -f ./dist/formatters/by-folder.js -c .demo/eslint.config.mjs","demo:stacked":"eslint .demo/test.js -f ./dist/formatters/by-error-and-warning-stacked.js -c .demo/eslint.config.mjs","demo:warning":"eslint .demo/test.js -f ./dist/formatters/by-warning.js -c .demo/eslint.config.mjs","format:check":"prettier --check .","test:coverage":"tsx --experimental-test-coverage --test-reporter=lcov --test-reporter-destination=lcov.info --test test/**/*.test.ts","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"danielsitek","email":"dan.sitek@gmail.com"},"repository":{"url":"git+https://github.com/danielsitek/eslint-stats.git","type":"git"},"_npmVersion":"11.6.1","description":"Modern TypeScript formatters for ESLint with aggregated error/warning statistics and visual graphs - Zero dependencies","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","eslint":"^9.39.2","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.0.10","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-stats_0.1.0_1769250984907_0.9791413950720265","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@danielsitek/eslint-stats","version":"0.2.0","keywords":["eslint","formatter","statistics","stats","aggregated","visualization","typescript","zero-dependencies","eslint9"],"author":{"url":"https://github.com/danielsitek","name":"Daniel Sitek","email":"me@danielsitek.com"},"license":"MIT","_id":"@danielsitek/eslint-stats@0.2.0","maintainers":[{"name":"danielsitek","email":"dan.sitek@gmail.com"}],"contributors":[{"url":"http://github.com/ganimomer","name":"Omer Ganim","email":"ganimomer@gmail.com"}],"homepage":"https://github.com/danielsitek/eslint-stats#readme","bugs":{"url":"https://github.com/danielsitek/eslint-stats/issues"},"dist":{"shasum":"bb6397550bdfa075b8b0ada8fb1816f2cc26f542","tarball":"https://registry.npmjs.org/@danielsitek/eslint-stats/-/eslint-stats-0.2.0.tgz","fileCount":51,"integrity":"sha512-gx/z7afgAyrD9OzbMGFvPC9jgGfpCeg82aVPaVGV8L/SgXyAQYjahkoApfCxc9klepYY6N6RpoeE+6QjzU11sA==","signatures":[{"sig":"MEQCIEfhuif/BHvOuKW8E8vR/3ic+T4mNHhl9Xdy83YlwKQ3AiA+9V93hYy+kewojVH5y66Qqct2PY7h+GaIqWmpHreKfQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36584},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./by-error":{"types":"./dist/formatters/by-error.d.ts","import":"./dist/formatters/by-error.js"},"./by-folder":{"types":"./dist/formatters/by-folder.d.ts","import":"./dist/formatters/by-folder.js"},"./by-warning":{"types":"./dist/formatters/by-warning.d.ts","import":"./dist/formatters/by-warning.js"},"./by-error-and-warning":{"types":"./dist/formatters/by-error-and-warning.d.ts","import":"./dist/formatters/by-error-and-warning.js"},"./by-error-and-warning-stacked":{"types":"./dist/formatters/by-error-and-warning-stacked.d.ts","import":"./dist/formatters/by-error-and-warning-stacked.js"}},"gitHead":"4c2a7fca25d1f0a347ad7be84e6bc21913579a12","scripts":{"lint":"eslint .","test":"tsx --test test/**/*.test.ts","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","format":"prettier --write .","prebuild":"npm run clean","demo:both":"eslint .demo -f ./dist/formatters/by-error-and-warning.js -c .demo/eslint.config.mjs","typecheck":"tsc --noEmit","demo:error":"eslint .demo -f ./dist/formatters/by-error.js -c .demo/eslint.config.mjs","test:watch":"tsx --test --watch test/**/*.test.ts","demo:folder":"eslint .demo -f ./dist/formatters/by-folder.js -c .demo/eslint.config.mjs","demo:stacked":"eslint .demo -f ./dist/formatters/by-error-and-warning-stacked.js -c .demo/eslint.config.mjs","demo:warning":"eslint .demo -f ./dist/formatters/by-warning.js -c .demo/eslint.config.mjs","format:check":"prettier --check .","test:coverage":"tsx --experimental-test-coverage --test-reporter=lcov --test-reporter-destination=lcov.info --test test/**/*.test.ts","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"danielsitek","email":"dan.sitek@gmail.com"},"repository":{"url":"git+https://github.com/danielsitek/eslint-stats.git","type":"git"},"_npmVersion":"11.6.1","description":"Modern TypeScript formatters for ESLint with aggregated error/warning statistics and visual graphs - Zero dependencies","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","eslint":"^9.39.2","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.0.10","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-stats_0.2.0_1769287577124_0.7128606410392015","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@danielsitek/eslint-stats","version":"0.3.0","keywords":["eslint","formatter","statistics","stats","aggregated","visualization","typescript","zero-dependencies","eslint9"],"author":{"url":"https://github.com/danielsitek","name":"Daniel Sitek","email":"me@danielsitek.com"},"license":"MIT","_id":"@danielsitek/eslint-stats@0.3.0","maintainers":[{"name":"danielsitek","email":"dan.sitek@gmail.com"}],"contributors":[{"url":"http://github.com/ganimomer","name":"Omer Ganim","email":"ganimomer@gmail.com"}],"homepage":"https://github.com/danielsitek/eslint-stats#readme","bugs":{"url":"https://github.com/danielsitek/eslint-stats/issues"},"dist":{"shasum":"93de06bac02f96832465d626617d2533953f77db","tarball":"https://registry.npmjs.org/@danielsitek/eslint-stats/-/eslint-stats-0.3.0.tgz","fileCount":51,"integrity":"sha512-us6c685/ceDtFoWeQTPFlPjP9ATC45RmSHlV7cyA6OY6lKUGCbMtEsfKhStBjIQt/sfYcSBjD16OzRQ/GK5MaQ==","signatures":[{"sig":"MEUCIG84gu3uMTAgDEQdX1uTkhYn7MubstbFrbxv7C5Y94ZcAiEAm0w6o+l9hun1zTPYQBJmO8adgJ14LsjtdgBudNjuS+4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36674},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./by-error":{"types":"./dist/formatters/by-error.d.ts","import":"./dist/formatters/by-error.js"},"./by-folder":{"types":"./dist/formatters/by-folder.d.ts","import":"./dist/formatters/by-folder.js"},"./by-warning":{"types":"./dist/formatters/by-warning.d.ts","import":"./dist/formatters/by-warning.js"},"./by-error-and-warning":{"types":"./dist/formatters/by-error-and-warning.d.ts","import":"./dist/formatters/by-error-and-warning.js"},"./by-error-and-warning-stacked":{"types":"./dist/formatters/by-error-and-warning-stacked.d.ts","import":"./dist/formatters/by-error-and-warning-stacked.js"}},"gitHead":"5cc37e320b05021cfe3f008b7837d1a1a43ef459","scripts":{"lint":"eslint .","test":"tsx --test test/**/*.test.ts","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","format":"prettier --write .","prebuild":"npm run clean","demo:both":"eslint .demo -f ./dist/formatters/by-error-and-warning.js -c .demo/eslint.config.mjs","typecheck":"tsc --noEmit","demo:error":"eslint .demo -f ./dist/formatters/by-error.js -c .demo/eslint.config.mjs","test:watch":"tsx --test --watch test/**/*.test.ts","demo:folder":"eslint .demo -f ./dist/formatters/by-folder.js -c .demo/eslint.config.mjs","demo:stacked":"eslint .demo -f ./dist/formatters/by-error-and-warning-stacked.js -c .demo/eslint.config.mjs","demo:warning":"eslint .demo -f ./dist/formatters/by-warning.js -c .demo/eslint.config.mjs","format:check":"prettier --check .","test:coverage":"tsx --experimental-test-coverage --test-reporter=lcov --test-reporter-destination=lcov.info --test test/**/*.test.ts","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"danielsitek","email":"dan.sitek@gmail.com"},"repository":{"url":"git+https://github.com/danielsitek/eslint-stats.git","type":"git"},"_npmVersion":"11.6.1","description":"Modern TypeScript formatters for ESLint with aggregated error/warning statistics and visual graphs - Zero dependencies","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","eslint":"^9.39.2","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.0.10","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-stats_0.3.0_1769359689039_0.7661637920121049","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@danielsitek/eslint-stats","version":"0.4.0","keywords":["eslint","formatter","statistics","stats","aggregated","visualization","typescript","zero-dependencies","eslint9","prometheus","metrics","monitoring"],"author":{"url":"https://github.com/danielsitek","name":"Daniel Sitek","email":"me@danielsitek.com"},"license":"MIT","_id":"@danielsitek/eslint-stats@0.4.0","maintainers":[{"name":"danielsitek","email":"dan.sitek@gmail.com"}],"contributors":[{"url":"http://github.com/ganimomer","name":"Omer Ganim","email":"ganimomer@gmail.com"}],"homepage":"https://github.com/danielsitek/eslint-stats#readme","bugs":{"url":"https://github.com/danielsitek/eslint-stats/issues"},"dist":{"shasum":"7ed27059b3a49b44a80740b1bd159bddc42f2149","tarball":"https://registry.npmjs.org/@danielsitek/eslint-stats/-/eslint-stats-0.4.0.tgz","fileCount":55,"integrity":"sha512-1kOtSRkLpOYsjy6eM8UnzDy5oBNRt7ZlSCTBDlIGSvPqO4Y6HUGf6AQ/D63bB96ocXelXF6Qnz6K8cIprqNPLg==","signatures":[{"sig":"MEUCIDqi6e1wPHn1pkG8ylcPOo0rwILp3DiV3Kz9BaXSz5VIAiEA6nMB22juPZ2g0zO7z51NOipxzJtQMq6WOsvKBrb4Bs0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46883},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./by-error":{"types":"./dist/formatters/by-error.d.ts","import":"./dist/formatters/by-error.js"},"./by-folder":{"types":"./dist/formatters/by-folder.d.ts","import":"./dist/formatters/by-folder.js"},"./by-warning":{"types":"./dist/formatters/by-warning.d.ts","import":"./dist/formatters/by-warning.js"},"./by-prometheus":{"types":"./dist/formatters/by-prometheus.d.ts","import":"./dist/formatters/by-prometheus.js"},"./by-error-and-warning":{"types":"./dist/formatters/by-error-and-warning.d.ts","import":"./dist/formatters/by-error-and-warning.js"},"./by-error-and-warning-stacked":{"types":"./dist/formatters/by-error-and-warning-stacked.d.ts","import":"./dist/formatters/by-error-and-warning-stacked.js"}},"gitHead":"a6af28ac441cb78dd35a0f9c1e8406deb6560d50","scripts":{"lint":"eslint .","test":"tsx --test test/**/*.test.ts","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","format":"prettier --write .","prebuild":"npm run clean","demo:both":"eslint .demo -f ./dist/formatters/by-error-and-warning.js -c .demo/eslint.config.mjs","typecheck":"tsc --noEmit","demo:error":"eslint .demo -f ./dist/formatters/by-error.js -c .demo/eslint.config.mjs","test:watch":"tsx --test --watch test/**/*.test.ts","demo:folder":"eslint .demo -f ./dist/formatters/by-folder.js -c .demo/eslint.config.mjs","demo:stacked":"eslint .demo -f ./dist/formatters/by-error-and-warning-stacked.js -c .demo/eslint.config.mjs","demo:warning":"eslint .demo -f ./dist/formatters/by-warning.js -c .demo/eslint.config.mjs","format:check":"prettier --check .","test:coverage":"tsx --experimental-test-coverage --test-reporter=lcov --test-reporter-destination=lcov.info --test test/**/*.test.ts","prepublishOnly":"npm run build && npm test","demo:prometheus":"eslint .demo -f ./dist/formatters/by-prometheus.js -c .demo/eslint.config.mjs"},"_npmUser":{"name":"danielsitek","email":"dan.sitek@gmail.com"},"repository":{"url":"git+https://github.com/danielsitek/eslint-stats.git","type":"git"},"_npmVersion":"11.6.1","description":"Modern TypeScript formatters for ESLint with aggregated error/warning statistics and visual graphs - Zero dependencies","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","eslint":"^9.39.2","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.0.10","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-stats_0.4.0_1772297537403_0.9630771171006607","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@danielsitek/eslint-stats","version":"0.4.1","keywords":["eslint","formatter","statistics","stats","aggregated","visualization","typescript","zero-dependencies","eslint9","prometheus","metrics","monitoring"],"author":{"url":"https://github.com/danielsitek","name":"Daniel Sitek","email":"me@danielsitek.com"},"license":"MIT","_id":"@danielsitek/eslint-stats@0.4.1","maintainers":[{"name":"danielsitek","email":"dan.sitek@gmail.com"}],"contributors":[{"url":"http://github.com/ganimomer","name":"Omer Ganim","email":"ganimomer@gmail.com"}],"homepage":"https://github.com/danielsitek/eslint-stats#readme","bugs":{"url":"https://github.com/danielsitek/eslint-stats/issues"},"dist":{"shasum":"031f873fd8a9da106af16b8da4d13ca3276f2ed6","tarball":"https://registry.npmjs.org/@danielsitek/eslint-stats/-/eslint-stats-0.4.1.tgz","fileCount":55,"integrity":"sha512-AC7nimDXErSyRbsILfE5mHDPC/JUovmLEw1l88l0qUktswh3VW6CI/SQfzkPkNJzzONgDHwuQPheIf/YMoGFBQ==","signatures":[{"sig":"MEYCIQDeEghUAZoFiUegUNlPV0DudEeEZ0FmT7so+jdD7c1GeAIhAJF2pAuKnkFR8nDxFo1B23s7bKvCEYAs2OOV+GQyCC7P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47036},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./by-error":{"types":"./dist/formatters/by-error.d.ts","import":"./dist/formatters/by-error.js"},"./by-folder":{"types":"./dist/formatters/by-folder.d.ts","import":"./dist/formatters/by-folder.js"},"./by-warning":{"types":"./dist/formatters/by-warning.d.ts","import":"./dist/formatters/by-warning.js"},"./by-prometheus":{"types":"./dist/formatters/by-prometheus.d.ts","import":"./dist/formatters/by-prometheus.js"},"./by-error-and-warning":{"types":"./dist/formatters/by-error-and-warning.d.ts","import":"./dist/formatters/by-error-and-warning.js"},"./by-error-and-warning-stacked":{"types":"./dist/formatters/by-error-and-warning-stacked.d.ts","import":"./dist/formatters/by-error-and-warning-stacked.js"}},"gitHead":"b898cc62b08ec5d9cf29086d128cdcde10c3e46c","scripts":{"lint":"eslint .","test":"tsx --test test/**/*.test.ts","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","format":"prettier --write .","prebuild":"npm run clean","demo:both":"eslint .demo -f ./dist/formatters/by-error-and-warning.js -c .demo/eslint.config.mjs","typecheck":"tsc --noEmit","demo:error":"eslint .demo -f ./dist/formatters/by-error.js -c .demo/eslint.config.mjs","test:watch":"tsx --test --watch test/**/*.test.ts","demo:folder":"eslint .demo -f ./dist/formatters/by-folder.js -c .demo/eslint.config.mjs","demo:stacked":"eslint .demo -f ./dist/formatters/by-error-and-warning-stacked.js -c .demo/eslint.config.mjs","demo:warning":"eslint .demo -f ./dist/formatters/by-warning.js -c .demo/eslint.config.mjs","format:check":"prettier --check .","test:coverage":"tsx --experimental-test-coverage --test-reporter=lcov --test-reporter-destination=lcov.info --test test/**/*.test.ts","prepublishOnly":"npm run build && npm test","demo:prometheus":"eslint .demo -f ./dist/formatters/by-prometheus.js -c .demo/eslint.config.mjs"},"_npmUser":{"name":"danielsitek","email":"dan.sitek@gmail.com"},"repository":{"url":"git+https://github.com/danielsitek/eslint-stats.git","type":"git"},"_npmVersion":"11.6.1","description":"Modern TypeScript formatters for ESLint with aggregated error/warning statistics and visual graphs - Zero dependencies","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","eslint":"^9.39.2","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.0.10","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-stats_0.4.1_1772530182167_0.3768872475040812","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@danielsitek/eslint-stats","version":"0.4.2","description":"Modern TypeScript formatters for ESLint with aggregated error/warning statistics and visual graphs - Zero dependencies","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./by-error":{"types":"./dist/formatters/by-error.d.ts","import":"./dist/formatters/by-error.js"},"./by-warning":{"types":"./dist/formatters/by-warning.d.ts","import":"./dist/formatters/by-warning.js"},"./by-error-and-warning":{"types":"./dist/formatters/by-error-and-warning.d.ts","import":"./dist/formatters/by-error-and-warning.js"},"./by-error-and-warning-stacked":{"types":"./dist/formatters/by-error-and-warning-stacked.d.ts","import":"./dist/formatters/by-error-and-warning-stacked.js"},"./by-folder":{"types":"./dist/formatters/by-folder.d.ts","import":"./dist/formatters/by-folder.js"},"./by-prometheus":{"types":"./dist/formatters/by-prometheus.d.ts","import":"./dist/formatters/by-prometheus.js"}},"keywords":["eslint","formatter","statistics","stats","aggregated","visualization","typescript","zero-dependencies","eslint9","prometheus","metrics","monitoring"],"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist","prebuild":"npm run clean","typecheck":"tsc --noEmit","lint":"eslint .","format":"prettier --write .","format:check":"prettier --check .","test":"tsx --test test/**/*.test.ts","test:watch":"tsx --test --watch test/**/*.test.ts","test:coverage":"tsx --experimental-test-coverage --test-reporter=lcov --test-reporter-destination=lcov.info --test test/**/*.test.ts","prepublishOnly":"npm run build && npm test","demo:error":"eslint .demo -f ./dist/formatters/by-error.js -c .demo/eslint.config.mjs","demo:warning":"eslint .demo -f ./dist/formatters/by-warning.js -c .demo/eslint.config.mjs","demo:both":"eslint .demo -f ./dist/formatters/by-error-and-warning.js -c .demo/eslint.config.mjs","demo:stacked":"eslint .demo -f ./dist/formatters/by-error-and-warning-stacked.js -c .demo/eslint.config.mjs","demo:folder":"eslint .demo -f ./dist/formatters/by-folder.js -c .demo/eslint.config.mjs","demo:prometheus":"eslint .demo -f ./dist/formatters/by-prometheus.js -c .demo/eslint.config.mjs"},"repository":{"type":"git","url":"git+https://github.com/danielsitek/eslint-stats.git"},"bugs":{"url":"https://github.com/danielsitek/eslint-stats/issues"},"homepage":"https://github.com/danielsitek/eslint-stats#readme","author":{"name":"Daniel Sitek","email":"me@danielsitek.com","url":"https://github.com/danielsitek"},"contributors":[{"name":"Omer Ganim","email":"ganimomer@gmail.com","url":"http://github.com/ganimomer"}],"engines":{"node":">=20.0.0"},"peerDependencies":{"eslint":">=8.0.0"},"license":"MIT","devDependencies":{"@types/node":"^25.0.10","@typescript-eslint/eslint-plugin":"^8.53.1","@typescript-eslint/parser":"^8.53.1","eslint":"^9.39.2","eslint-config-prettier":"^10.1.8","prettier":"^3.8.1","tsx":"^4.21.0","typescript":"^5.9.3"},"gitHead":"e0e0e2bf3d76910276a2a2a1b29bd5bc1e752a5b","_id":"@danielsitek/eslint-stats@0.4.2","_nodeVersion":"24.11.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-VhogOdaucUCSbrvVVVFTK59aj/wFi9nCdtH6+7PlwIalaRVZmiDpSopvqlcFbGb0+S+ERlTRXfrF11Xlf8M3TQ==","shasum":"1088d94f0f912801b03638ec8220905fce479cf1","tarball":"https://registry.npmjs.org/@danielsitek/eslint-stats/-/eslint-stats-0.4.2.tgz","fileCount":55,"unpackedSize":48685,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCFcy97qBOnHFC6KoZNEDBUjpmpzLP5onbjaX0XF80LjQIhALCNfzE1MxOHlBPKdSuSiDcgujYr+2swtxCNhxWinehA"}]},"_npmUser":{"name":"danielsitek","email":"dan.sitek@gmail.com"},"directories":{},"maintainers":[{"name":"danielsitek","email":"dan.sitek@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-stats_0.4.2_1772532670489_0.7596333039324543"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-24T10:36:24.847Z","modified":"2026-03-03T10:11:10.847Z","0.1.0":"2026-01-24T10:36:25.058Z","0.2.0":"2026-01-24T20:46:17.370Z","0.3.0":"2026-01-25T16:48:09.190Z","0.4.0":"2026-02-28T16:52:17.565Z","0.4.1":"2026-03-03T09:29:42.314Z","0.4.2":"2026-03-03T10:11:10.724Z"},"bugs":{"url":"https://github.com/danielsitek/eslint-stats/issues"},"author":{"name":"Daniel Sitek","email":"me@danielsitek.com","url":"https://github.com/danielsitek"},"license":"MIT","homepage":"https://github.com/danielsitek/eslint-stats#readme","keywords":["eslint","formatter","statistics","stats","aggregated","visualization","typescript","zero-dependencies","eslint9","prometheus","metrics","monitoring"],"repository":{"type":"git","url":"git+https://github.com/danielsitek/eslint-stats.git"},"description":"Modern TypeScript formatters for ESLint with aggregated error/warning statistics and visual graphs - Zero dependencies","contributors":[{"name":"Omer Ganim","email":"ganimomer@gmail.com","url":"http://github.com/ganimomer"}],"maintainers":[{"name":"danielsitek","email":"dan.sitek@gmail.com"}],"readme":"[![Build Status](https://github.com/danielsitek/eslint-stats/actions/workflows/dev.yml/badge.svg?branch=main)](https://github.com/danielsitek/eslint-stats/actions)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/6c466a724da04212b8471eda7c6adf16)](https://app.codacy.com/gh/danielsitek/eslint-stats/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)\n[![Codacy Badge](https://app.codacy.com/project/badge/Coverage/6c466a724da04212b8471eda7c6adf16)](https://app.codacy.com/gh/danielsitek/eslint-stats/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_coverage)\n[![Maintainability](https://qlty.sh/gh/danielsitek/projects/eslint-stats/maintainability.svg)](https://qlty.sh/gh/danielsitek/projects/eslint-stats)\n[![GitHub Release](https://img.shields.io/github/v/release/danielsitek/eslint-stats)](https://github.com/danielsitek/eslint-stats/releases)\n[![NPM Version](https://img.shields.io/npm/v/%40danielsitek%2Feslint-stats)](https://www.npmjs.com/package/@danielsitek/eslint-stats)\n\n# Statistics Reporter for ESLint\n\nModern TypeScript formatters for ESLint with aggregated error and warning statistics. Analyzes files by error frequency rather than location, making it easier to prioritize fixes when introducing ESLint to existing projects.\n\n![screenshot](https://raw.githubusercontent.com/danielsitek/eslint-stats/master/screenshot.png)\n\n## Features\n\n- Multiple aggregation views (by error, warning, folder)\n- Color-coded output with visual graphs\n- ESLint 8 and 9 compatible\n- Full TypeScript support with type definitions\n- Zero runtime dependencies\n- Modern Node.js (20+)\n\n## Installation\n\n```bash\nnpm install --save-dev @danielsitek/eslint-stats\n```\n\n## Usage with ESLint\n\nCreate a file named `stats.mjs`:\n\n```js\nimport { byErrorAndWarning } from \"@danielsitek/eslint-stats/by-error-and-warning\";\n\nexport default byErrorAndWarning;\n```\n\n```bash\neslint . --format ./stats.mjs\n```\n\n## Available Formatters\n\n### by-error\n\nDisplays aggregated error statistics without file separation. Only shows rules with errors; warnings are not displayed.\n\n### by-warning\n\nDisplays aggregated warning statistics without file separation. Only shows rules with warnings; errors are not displayed.\n\n### by-error-and-warning\n\nDisplays aggregated statistics for both errors and warnings without file separation. Errors are shown in red, warnings in yellow.\n\n### by-error-and-warning-stacked\n\nSimilar to `by-error-and-warning` but displays errors and warnings stacked together when a rule has both severities across different files.\n\n### by-folder\n\nDisplays aggregated statistics grouped by folder. Errors are shown in red, warnings in yellow.\n\n### by-prometheus\n\nExports ESLint statistics in Prometheus text exposition format for monitoring and alerting. Generates metrics compatible with Prometheus, Grafana, and other observability tools.\n\n**Metrics exported:**\n\n- `eslint_rule_violations_total{rule,severity,folder}` - Violations by rule, severity, and folder\n- `eslint_violations_by_severity_total{severity}` - Total violations by severity\n- `eslint_files_total` - Total files analyzed\n- `eslint_files_with_violations_total` - Files with violations\n- `eslint_files_clean_total` - Files without violations\n- `eslint_rules_violated_total` - Unique rules violated\n\n#### Monorepo support\n\nFor monorepo setups where ESLint runs from a subdirectory, use `createPrometheusFormatter` with `folderPrefix` to prepend the package name to folder paths:\n\n```js\nimport { createPrometheusFormatter } from \"@danielsitek/eslint-stats/by-prometheus\";\n\nexport default createPrometheusFormatter({ folderPrefix: \"my-package\" });\n```\n\nThis produces metrics with prefixed folder labels, e.g. `folder=\"my-package/src/utils\"` instead of `folder=\"src/utils\"`.\n\n## Demo\n\nThe package includes demo scripts for testing formatters:\n\n```bash\nnpm run demo:error\nnpm run demo:warning\nnpm run demo:both\nnpm run demo:stacked\nnpm run demo:folder\nnpm run demo:prometheus\n```\n\n## Requirements\n\n- Node.js >= 20.0.0\n- ESLint >= 8.0.0\n\n## Migration from `ganimomer/eslint-stats` v1.x\n\nIf you're upgrading from the original `eslint-stats` package:\n\n1. Update package name:\n\n   ```bash\n   npm uninstall eslint-stats\n   npm install --save-dev @danielsitek/eslint-stats\n   ```\n\n2. Update formatter paths in your ESLint configuration or CLI commands to use the new scoped package name.\n\n3. For programmatic usage, update imports to use the scoped package name.\n\n## Credits\n\nModernized fork of [eslint-stats](https://github.com/ganimomer/eslint-stats) by [Omer Ganim](https://github.com/ganimomer).\n\n## License\n\nMIT\n","readmeFilename":"README.md"}