{"_id":"@fabriziosalmi/slopless","_rev":"34-7e8501a297a67d22bd82ed69ba52cd84","name":"@fabriziosalmi/slopless","dist-tags":{"latest":"1.18.1"},"versions":{"1.4.1":{"name":"@fabriziosalmi/slopless","version":"1.4.1","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.4.1","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"0c7e9919ef3589fb278f6ce7e68a0675b013d6d6","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.4.1.tgz","fileCount":155,"integrity":"sha512-s5+OdLgw5EiQFxuJfpxem63IXGcPQx++YStm/J9uTCDiG307AdZt603XvwcwGS06kBteSn13tHzJCm+mpuS3hg==","signatures":[{"sig":"MEUCIEdT0I03ioGqopnxJaeqfIdfoDa/s/OjRnKWx5RkPJ2aAiEA0kFIYTpaq66TG+oessZDXDYzdhABWpmFs1f6TFovQIQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8466471},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"36407764609ce21f2b860cf27562a1db783b9d2a","scripts":{"test":"vitest run","build":"tsup","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"},"_npmVersion":"11.16.0","description":"[![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml) [![docs](https://github.com/fabriziosalmi/slopless/actions/workflows/docs.yml/badge.svg)](https://fab","directories":{},"_nodeVersion":"26.3.0","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^4.1.1","ts-node":"^10.9.2","commander":"^14.0.3","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^8.1.0","@types/node":"^25.3.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.4.1_1788262749720_0.5971350065026511","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@fabriziosalmi/slopless","version":"1.4.2","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.4.2","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"19f9963a381ecdf635a9bd66b180941d3fab4bbc","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.4.2.tgz","fileCount":155,"integrity":"sha512-jMr62JdtjmLed2b9lzi1Rqr+696ekW6/SetomAgnTNy4LjhHMg45hsLjg5Ksmb7HW6OuBNekdtZVGmVrtb2Dpw==","signatures":[{"sig":"MEQCIHjue66tghns6/lt/BvmLxirq/+9Ao6aeLAEWWAZEzQPAiBqeDD0+B5eDYoCRjrJCGzacKzOvRncRAjo1Rn5DkCfCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8467338},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"4f825e8765e04333364f7d2a5edc46aa9842ae59","scripts":{"test":"vitest run","build":"tsup","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^4.1.1","ts-node":"^10.9.2","commander":"^14.0.3","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^8.1.0","@types/node":"^25.3.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.4.2_1788263368396_0.9806485726597902","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"name":"@fabriziosalmi/slopless","version":"1.4.3","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.4.3","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"4ed1c7a8417b42a6fd8760cb9ca74b8ea2155528","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.4.3.tgz","fileCount":155,"integrity":"sha512-qkNp9aSBrP1KCmh7cpj/4LEEkdZum8S8Oxl2XUtIefJjZlCdNGCrvMVpXsbZDmsINe3SEamqE/qRJX7gGDf7Xg==","signatures":[{"sig":"MEQCIBmO3jmrRNRfb9OGxCZFAtBBDNMyfCFnX0wZqiO5wABZAiAXWQwr1JduikChE3m8Qg+00hVymCF+8HkXvP1Jhzzt+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8467338},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"a71e5a179a3ecf40da9d91c361e2abed7c69945a","scripts":{"test":"vitest run","build":"tsup","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^4.1.1","ts-node":"^10.9.2","commander":"^14.0.3","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^8.1.0","@types/node":"^25.3.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.4.3_1788263628999_0.07257673128015263","host":"s3://npm-registry-packages-npm-production"}},"1.4.4":{"name":"@fabriziosalmi/slopless","version":"1.4.4","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.4.4","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"6e490eb4e73933e0a3c56d0f0509eaeeaa78350f","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.4.4.tgz","fileCount":155,"integrity":"sha512-UpZMbgxl2a1gzWN1JVH0TbXJVy2N7F/nkVd+CKd7L9dJ3kqGJT8aXbhSOkw04esMfzNkFj40Yg1rxnOxDr/TiQ==","signatures":[{"sig":"MEUCIQCem2aMIQKC3nQHxVExuchp4eMQ0SJFxcM5ujoeQ3e5QQIgA+UyJzjFm+thn+yeaengNh+Y4aMUkL5WZQyOJepI8dI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8470653},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"87e70faf5ef7fa7a24cc94ed3e44ff7019569ec4","scripts":{"test":"vitest run","build":"tsup","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^4.1.1","ts-node":"^10.9.2","commander":"^14.0.3","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^8.1.0","@types/node":"^25.3.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.4.4_1788264975619_0.6563824054582938","host":"s3://npm-registry-packages-npm-production"}},"1.4.5":{"name":"@fabriziosalmi/slopless","version":"1.4.5","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.4.5","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"fdfc499dced03f8c5395a4e364f98ca5b6bbc6cc","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.4.5.tgz","fileCount":155,"integrity":"sha512-V5JmkrgbojALvw/7f+flc3eejWu5oLxGSaK4Cc2UUsGbNDMTBAWmuKhjYtVqA1Rwiy5jHJCMHiu2J4e5SbmQ8g==","signatures":[{"sig":"MEUCIQCqQeCEIfHaAJreoj+5rs4uEUWMt3IRjLuzT8cCpa8fDQIgPLz4YnTIeaXztIzP4sKz0bwmkF8+r9BJuFxe/NLVqEk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.4.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8473022},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"f8d0f6667e6be05513bd4273df183626273a9b8e","scripts":{"test":"vitest run","build":"tsup","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^4.1.1","ts-node":"^10.9.2","commander":"^14.0.3","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^8.1.0","@types/node":"^25.3.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.4.5_1788265253973_0.9662341711886919","host":"s3://npm-registry-packages-npm-production"}},"1.4.6":{"name":"@fabriziosalmi/slopless","version":"1.4.6","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.4.6","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"6eaf881315756ce9289e63fca0e565055af272d3","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.4.6.tgz","fileCount":155,"integrity":"sha512-w0w388WBwXMrvqCFcyc+t/vLEc/5wkZ5zvcRrdJgp01Rgj0JYoVldnh/jMnR+cKVPPynLEOmT66Cokm7ojE3IQ==","signatures":[{"sig":"MEYCIQDO9R0+onj+JAELuAHQv4NfqM6WjpTpjZDyWC/hxL1bXAIhANotOWr2JuNYvomepSnnI3IoSW5878mAhPoKNXlWeeBq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.4.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8474514},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"90193ddca59ec9ae5431a5ce2d8ba648b25d2ba4","scripts":{"test":"vitest run","build":"tsup","version":"npm run build && git add dist","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^4.1.1","ts-node":"^10.9.2","commander":"^14.0.3","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^8.1.0","@types/node":"^25.3.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.4.6_1788269442042_0.36822901984065926","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@fabriziosalmi/slopless","version":"1.5.0","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.5.0","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"2d0fff81df2c73a6fa1491ca99f1eb3bec2e5045","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.5.0.tgz","fileCount":155,"integrity":"sha512-msEpXoPIetGSwK5w0fjTg/tDcJnNlrz9mhI6+e67A3Ze51e1oqsXMzE1tEfywWZugWLhI95SfHk/4wFJQ/iaYQ==","signatures":[{"sig":"MEYCIQCmwllcKVGVnPiZrH9wggbS9Zybjs8Q+m1xzqoof8a2pgIhAPnwLKeGpbmzD6pRdv8of1K+uGe5arn9S1KfbAP3cszN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8483834},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"fae72fa3497882376bac2b26ef9b425cacbedbb0","scripts":{"test":"vitest run","build":"tsup","version":"npm run build && git add dist","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^4.1.1","ts-node":"^10.9.2","commander":"^14.0.3","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^8.1.0","@types/node":"^25.3.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.5.0_1788270420514_0.16659105330045465","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@fabriziosalmi/slopless","version":"1.6.0","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.6.0","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"65777da7b43a986f7773146911cfea54d12d2eb3","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.6.0.tgz","fileCount":155,"integrity":"sha512-mH1FXZLHfT31ReFeWgoNChmJ0XZKn8++C6N0xWhOCLjv3FwMtqXCn29uEAKwyq1J29gJJh6Nn3MXcp7LMuooHw==","signatures":[{"sig":"MEYCIQDO/l9/jtJ4V85a6NjOficOcR2BDm4NRJA76IuP6FFKxQIhAMUgmIMp4aygyiBLu9CtDmyvCk18Jizi/S2LjnRRIU7y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8492307},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"c19857dc998834381a2bf582482e1ed32e945381","scripts":{"test":"vitest run","build":"tsup","version":"npm run docs:gen && npm run build && git add dist docs README.md","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.6.0_1788298112107_0.2704458979347526","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@fabriziosalmi/slopless","version":"1.7.0","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.7.0","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"a43bdb2434efed69a4deb61aac541696f71677ac","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.7.0.tgz","fileCount":155,"integrity":"sha512-OsQnAbSmANb3Q5MdukyqYrrb7jkvNZt6QD4ektHQl7h7hgaJh80zUOFFMf6g1AoQtdMvz9Et7BMxpYi0IVfDHg==","signatures":[{"sig":"MEYCIQCEe/BIJhqcUQ6qNGCNsCEtVwEls5jl4g0YGW5gDuehvQIhALnCwMX+ev4OH4SXzANpuULJDro234GbiXmhu762qM1a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8496216},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"7a45eb10146a2471afa2fb609ffcf7e9fab09050","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && npm run docs:gen && npm run build && git add dist docs README.md","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.7.0_1788299759186_0.04434307618440125","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"@fabriziosalmi/slopless","version":"1.7.1","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.7.1","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"ce20e5a745c314641c4f5557cff237e140a0d5bf","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.7.1.tgz","fileCount":155,"integrity":"sha512-UBnNKWxPXZpC7tPu+i2Xz8DZds3HDH99qG8izaO0jjWct6ks6K3NIUt5z8kkJrAz9asx7LmrkQOdNH7mFi3qtg==","signatures":[{"sig":"MEQCIBT7/1BE0rZrkzhATJq+KL9/kuH326fmV8rJ7dq0EN+BAiA7J3b0dMka5edvoDdNHPuYlIEZXeyBj+5Oh2+iWg5e5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8497827},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"28c9b58469350ac2574068a32dd3ad8837c0b961","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && npm run docs:gen && npm run build && git add dist docs README.md","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.7.1_1788321338178_0.85961019599309","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@fabriziosalmi/slopless","version":"1.8.0","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.8.0","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"75e81ac3a44b0cfe1331be55585d922272f2400d","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.8.0.tgz","fileCount":155,"integrity":"sha512-Rurg+o8NI9ESbKXsViuZoTrces6Cdsa04RTLW4D1oPdntzOJzbCoZmD1+e443aE5pG5fg75gLSc1XB7cvJp/pg==","signatures":[{"sig":"MEYCIQCNKH+kUhzYOu77qm7qX3bNeHT4cwVUwHT9hrge8bxKSwIhAKGxiPWTV991YUQAhEmdPlAvxrrbDjAFMX5jPYBWUQZv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8499759},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"9aae74e5e7304bbbfceda29e921a6d698a53f609","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && npm run docs:gen && npm run build && git add dist docs README.md","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.8.0_1788323037771_0.4452005095284557","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@fabriziosalmi/slopless","version":"1.9.0","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.9.0","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"7912d12a5e1af5ba60a70c973ab2968ae91ada25","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.9.0.tgz","fileCount":157,"integrity":"sha512-/VB0Q+y6yFvsdzLcZSIbp7QqiI8YwuvvQYzo8bYmeLfZMcR+TBK7qm5ARkcgCM4+Zo9JFiiuauQeYoVNZS70Bg==","signatures":[{"sig":"MEUCIHro3dRWEY2B5ps8rkwav9qRPCkwG6lrWnaV6CmL1GlDAiEAqIpb4whV4GT18zr8YBEFGMnhepHlmE1Y/mQ4o5kfRjw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8503600},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"957d17140f190b494e2526550dab5d0d8004431f","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && npm run docs:gen && npm run build && git add dist docs README.md","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.9.0_1788325369801_0.6298867730400561","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"@fabriziosalmi/slopless","version":"1.10.0","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.10.0","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"2f9f67383339bb2ed81fb91e227291b562c1b31f","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.10.0.tgz","fileCount":157,"integrity":"sha512-6HANlO6lEgYdHBKhptfVlfT9J8lMWx18l9WTPP25oceSzE0QhAgFrhVrsJYHxr7h9f6hcSX9pSPLaevg/Q1glA==","signatures":[{"sig":"MEUCIQDevq4M67NYhxj3yFD4XfucbGWQdElI176qMQY7I6Gj7wIgS1QjIrXWijn90DYp1nWQu8dxG4fo+yar7ENdB/3UUU8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8504477},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"6a75684aa5cbe93d2d938dfacaa9b1bcb8f98b86","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && npm run docs:gen && npm run build && git add dist docs README.md","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.10.0_1788480596149_0.7159099352474738","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"@fabriziosalmi/slopless","version":"1.11.0","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.11.0","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"ac07ad7b5e113ea71e5047f4c12feb4a41d86e21","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.11.0.tgz","fileCount":157,"integrity":"sha512-nYK7Qbxd9tYMKsFRFroz1iY1WSbAT9Xvvc8B8NoSzcOdFEtcoIXCnBBDFPQh7kALSi0/NoHQBMe5yB7M/Sox1w==","signatures":[{"sig":"MEYCIQC9lXFlZAYcj/iUL95tKY6tWl6UPf7LAlWeDvS4GmnMyAIhAOnUe9CXTV2Bc+Wcz2AV2A+T+CyNjDkBcxdyQzYZ7XYc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8506278},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"7837fd959b607919593ed7ca6a23d2f8f9d4391f","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && npm run docs:gen && npm run build && git add dist docs README.md","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.11.0_1788481982677_0.5289288508141039","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"@fabriziosalmi/slopless","version":"1.12.0","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.12.0","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"b9d2b2abd42ab9e80b67ce8552d4c91e38825afe","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.12.0.tgz","fileCount":157,"integrity":"sha512-TIQvl7XSV2YEdei7Aqy2DFKlxCr20+OsqXTnOb/W/OOYZtX472iCkGKX4wUJPgHshOE2B+UWM4etqHL2rC8aLQ==","signatures":[{"sig":"MEUCIQDrBewoeAkgj+ayTu3Ba0VrwaorUKkhAui6dPF87hmafAIgUGpx6LZnZYm5BASM596tPVLE1lNO08rVDTSwgyqFDVo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8508642},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"1f2b9d57379688d487e725baac6dfc1a3a296c15","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && npm run docs:gen && npm run build && git add dist docs README.md","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.12.0_1788505518724_0.8607242286078243","host":"s3://npm-registry-packages-npm-production"}},"1.12.1":{"name":"@fabriziosalmi/slopless","version":"1.12.1","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.12.1","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"4b2c3d2d192d7a7f72bb95c6cb9999094996c506","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.12.1.tgz","fileCount":157,"integrity":"sha512-Lzk2vh2BW6vzBcFxGYgl/xTvpGUhkWBYnPskn0FRues7f8WzMgqBcgRqvPjS9HJCb7KFtZb8OrvwSufw1F8EGg==","signatures":[{"sig":"MEUCIDlRlASaBtbEefsnJqllAa3Lh7a9fFryR8ruWUjPGhrQAiEA7EcRWhQ5LeIKirkAuZzvTc4nWTHk0tEkl+kolsSXsuc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.12.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8508938},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"b3a4017bc0e382013da28564dab3b5ee4e23f981","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && npm run docs:gen && npm run build && git add dist docs README.md","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.12.1_1788508166725_0.17827605191214868","host":"s3://npm-registry-packages-npm-production"}},"1.12.2":{"name":"@fabriziosalmi/slopless","version":"1.12.2","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.12.2","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"13aefa35a0fc18979eedb43b067cb32cd5257d91","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.12.2.tgz","fileCount":157,"integrity":"sha512-Mgr9uXwnpv/DbFzAFJadIEopAd6lzLF4Mf+82+B4BDHGh351BW1zzUmlwEk4UmFd2Q+AjvI6MHnbthBa2msiQQ==","signatures":[{"sig":"MEYCIQCJibFSSeT/9n3Fkz/iBkB2it+CBoc/eL/4tQGkfGPoSAIhAO75yIdUzX8PzHtQ3YMKs70J8lP0T5OzJRvNlVVe9f2F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.12.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8509437},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"20711aa6f57cf7af4926fc44904472fdd0e38cf7","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && npm run docs:gen && npm run build && git add dist docs README.md","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.12.2_1788511678587_0.7336215883185384","host":"s3://npm-registry-packages-npm-production"}},"1.12.3":{"name":"@fabriziosalmi/slopless","version":"1.12.3","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.12.3","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"360396c3e5a21a2fd81f949d898122337c1fc17e","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.12.3.tgz","fileCount":157,"integrity":"sha512-DLf8qoE+Sa+8idUX1VBxwwiIhmQWacMA6bryeSLy1yF/vU7B0z1Ih9R91x+IkZjJog+5j3RG4ZwTSl4/zYPAZw==","signatures":[{"sig":"MEUCIQC/cP3ffBAxLR1GKWuKVVz4EarqYLVHgTsm9p8ClklqWAIgGBSipPnQqzGGSom+wOzBoRvXfo5YvQzGL4bFwaHrEjM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.12.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8510317},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"846691808c9919c68354518987f773842f1feb94","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && npm run docs:gen && npm run build && git add dist docs README.md","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.12.3_1788514070274_0.8007052780558743","host":"s3://npm-registry-packages-npm-production"}},"1.12.4":{"name":"@fabriziosalmi/slopless","version":"1.12.4","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.12.4","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"991bbf0135603701540d56876366ef7ba977b6f9","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.12.4.tgz","fileCount":157,"integrity":"sha512-8sUev6T+RT6exqaIxOXn77/Vv61I71Bej4HOlbO07W/vgQxsfrIrJ4mmhSsik/Rkus40+hIWrok/RI4Wf8qkFg==","signatures":[{"sig":"MEUCIA3Wi8QQ24mDh2MSphiUUcTo413bCR8O2kv/2mf5yvCyAiEA0VI0RW80ZEdVTGM+nL8mD2ZvKGxUEXSyqlDLlJNGKuc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.12.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8510443},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"9351a762497cb51a57bc92f05d5c10c51c2deb0d","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && npm run docs:gen && npm run build && git add dist docs README.md","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.12.4_1788515574857_0.007507941724874678","host":"s3://npm-registry-packages-npm-production"}},"1.12.5":{"name":"@fabriziosalmi/slopless","version":"1.12.5","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.12.5","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"89028bc52c8adb7a60a449df7b34a782d37f30b0","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.12.5.tgz","fileCount":157,"integrity":"sha512-anaikyZhv+lHop//lX/WhCiPS4xDbQj7/LqRiZlAdN7oFIQKDmyrrPtOiNJHIc9RViQI9+x7uruXC85tUfZbDA==","signatures":[{"sig":"MEUCIQCydQxgbeJvoRFW9SYyn82KCVwjEUpLzX0Q78bCHcqE8QIga+xmSPiydT4e/xzakqCTZ8W9fRgkH3IApQDGg26qBc0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.12.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8510793},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"f693eb4b3582b8aa949958aba0e184312430cf58","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && npm run docs:gen && npm run build && git add dist docs README.md","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.12.5_1788528229560_0.12052995210566775","host":"s3://npm-registry-packages-npm-production"}},"1.12.6":{"name":"@fabriziosalmi/slopless","version":"1.12.6","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.12.6","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"a9e8f1dd67040450cb7baea94e061354952d7161","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.12.6.tgz","fileCount":157,"integrity":"sha512-tf6dFesWgyY6CMdqVRcec1PAuQNHRqX7lgFMjJsANI3+IpjCE/cbtdhVFQDy0lpHesqfNIr72CfO+SQ4r3SytA==","signatures":[{"sig":"MEUCIQD9B7tON6ytndC+uZFoxJntTNhpYs4dfS73RBxZHV0vPAIgLK574V8A9RUoMvzmE2ImVaIS18W00qs7y/GAyNYjb8U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.12.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8513130},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"88201ebf1d26db51c8508069f2bfaa943927bfc0","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && npm run docs:gen && npm run build && git add dist docs README.md","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.12.6_1788531076470_0.4011687548121574","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"@fabriziosalmi/slopless","version":"1.13.0","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.13.0","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"38c93904b3db950f0055b2ec7d55fc32dd50f419","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.13.0.tgz","fileCount":157,"integrity":"sha512-Q2p/SUxuiCh3hLn9mI532LU5QhexDz/adfJkMvRPd8URS5ZVpPCDS5GWXqUhL+17VKIITdAHNItXFlTrv5WDIA==","signatures":[{"sig":"MEUCICy38yZExKxHlB74v/42P0gmy83L/GJTAlIGNR2c9iUDAiEA4Mj2+9Hbj8tDvodol5lQpQ87bag9hE8b/Tx1V2iYtBU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8515018},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"982d806db6ac9abb538e1810187987428e9cc1a0","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && npm run docs:gen && npm run build && git add dist docs README.md","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.13.0_1788532534984_0.27351887021017074","host":"s3://npm-registry-packages-npm-production"}},"1.13.1":{"name":"@fabriziosalmi/slopless","version":"1.13.1","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.13.1","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"5207560a6fb07d6957776c4e0dd9d15ead265a53","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.13.1.tgz","fileCount":157,"integrity":"sha512-MbZeokK3VHBcaxXJFua96dvHP4Cbj8YJstRmHF+sfoEYEzDsF6qrsroEJTv0TQM8+mN0Lgda/d2ycYABF0RccA==","signatures":[{"sig":"MEUCIQDfMqdqpv1cys+GzMMO/je0mWpVbTcZmCqE2YcO+jl/hgIgRVFc28+NJ5r5mLkeB9iOe5auZSx0u9Zm6i/QdpC125Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.13.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8520105},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"8c8d943d32d8a1f6b93f0031fb16686af9849dfd","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && npm run docs:gen && npm run build && git add dist docs README.md","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.13.1_1788536676280_0.6707121358584265","host":"s3://npm-registry-packages-npm-production"}},"1.14.0":{"name":"@fabriziosalmi/slopless","version":"1.14.0","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.14.0","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"8ca018d9f7d50336d5f66e911ae3081dcead013f","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.14.0.tgz","fileCount":159,"integrity":"sha512-TBrDpMgqQcw7vcvNamPnOlcUYoPtphcXy3PD1Dx0cd8ka2XxtkiuOyZNU1hsge4UqCMwOypOoB4p7bh2xTtUIg==","signatures":[{"sig":"MEUCIQD6BBFsGooM9+ydplxjSc2RawT3yn22AmExjnl9GY4vQQIgB36oFA2FhTSCA1qsTUb7x0d5T2Jf7eSXDzJ04KANXto=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8523695},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"a056c42d7348f061279242d93c314a54e079d8d3","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && npm run docs:gen && npm run build && git add dist docs README.md","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.14.0_1788585505867_0.19850939433842885","host":"s3://npm-registry-packages-npm-production"}},"1.15.0":{"name":"@fabriziosalmi/slopless","version":"1.15.0","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.15.0","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"6c472bbc9f90313a8b631c9616300fe5761c8e02","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.15.0.tgz","fileCount":159,"integrity":"sha512-YlPp1FRDekCoEzRipQnrcLdHWl7ue0c/C1ui8rd3KYujgLaZ0IwMVpdiuQE4DWnEoGdq2VvgbVySfkijs1/PGg==","signatures":[{"sig":"MEQCIETqm+LqNl2cMBcNN6o6Tw99ylKxvpothwiZ1AWSegbrAiACZPiB1AJ+D/qFPtVtJ9RmlsuBVlg3K+s9lhMLTlXJLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8527264},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"06748042179458428a862eab707f03f3bd05e617","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && npm run docs:gen && npm run build && git add dist docs README.md","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.15.0_1788598576432_0.5303938813346396","host":"s3://npm-registry-packages-npm-production"}},"1.15.1":{"name":"@fabriziosalmi/slopless","version":"1.15.1","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.15.1","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"732c8a184ad8cca20959b9b74104095899f7fe6b","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.15.1.tgz","fileCount":159,"integrity":"sha512-DWU2MnKQcKV3q2BJrhumk/Lnj/5RXfr9jwPjVoqxqH4tdh+Xas2POhgT2Q6JJ2/xtSSsF0fiHxQ/Dg27r9tV2Q==","signatures":[{"sig":"MEUCIQD84kSH56i5Opv6bBOcQzir0/8DhFkRFyTYUAyVujkE5wIgG5W+Ouu0lORKsSdt5IJuzaHOmzTRgkJQ1jDKrBw8JZ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.15.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8527652},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"25da0e6dff7d0b33189f5e3f8ce898c2c6e66ad8","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && npm run docs:gen && npm run build && git add dist docs README.md","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.15.1_1788599572651_0.3601985983940672","host":"s3://npm-registry-packages-npm-production"}},"1.15.2":{"name":"@fabriziosalmi/slopless","version":"1.15.2","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.15.2","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"7f36aada6a93e504a549678e4b01cd9f6b9293f0","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.15.2.tgz","fileCount":159,"integrity":"sha512-CvU3VjU/vDAnBruoelNiy/Xk5QJNbUZyCwUy1mwY+AgZdU26B0t2SKth/FEBz+S9fNrbU7VtXqvoMO7vRcvNbA==","signatures":[{"sig":"MEQCIE2jIDnUSyHZkwkeXn9FY4/PJ8acPVzMoHASZ4jrZAXPAiB4S86MnPvOxizGDR07qdtkZNF0zmEdD5hVeRlco+r+Nw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.15.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8527766},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"3072cdaadedafbbaf4326c17cd88bf008d35b509","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && node scripts/sync-versions.js && npm run docs:gen && npm run build && git add dist docs README.md packages/*/package.json","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.15.2_1788599960054_0.6616169570115629","host":"s3://npm-registry-packages-npm-production"}},"1.15.3":{"name":"@fabriziosalmi/slopless","version":"1.15.3","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.15.3","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"02e275b2e61b1428df99f2faeff8bf06fdaac6df","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.15.3.tgz","fileCount":160,"integrity":"sha512-U+m+5RVw7VyQALNtFZxaDA6FOqmT/TmhDc99Mk+yXSRaQN2UXrTsveIftzISQwinyKiSFgLvvMXiU9845AgJJQ==","signatures":[{"sig":"MEUCIQD0Bz8S/Qj5VCCo5iFh6DeopN7mUcCmopz/ruX0kYwBrQIgFsrdbROPLt2sznMkhjtrwCZFqovSheo9pnO6xbeYsaQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.15.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8535893},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"22ff3fd3c613ab208b2dcef71a68a6f1bb65b028","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && node scripts/sync-versions.js && npm run docs:gen && npm run build && git add dist docs README.md packages/*/package.json","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.15.3_1788602039553_0.26296711062635225","host":"s3://npm-registry-packages-npm-production"}},"1.16.0":{"name":"@fabriziosalmi/slopless","version":"1.16.0","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.16.0","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"eec29c6507cd0c8161db343b6c5ee05cc9fc1f37","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.16.0.tgz","fileCount":160,"integrity":"sha512-yxWOyN1+2fR41k12QnktQDeEtFx97ITB5+RTMmJp7upTBHPDp50+Gplg5XasTGsXvfTaTyeIb2DUUqyP8vVR5A==","signatures":[{"sig":"MEYCIQC/NC/DOnySK/KzhZHHXk3ZZKw2pXvf8MX2FwtPojtTtAIhAMjNnjySMU2zzWrlrL1jwU6Tv20YyMlrzL8KvKGOAUSM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8538044},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"19f4cf07abe51741f597c79495f57570c9fe850d","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && node scripts/sync-versions.js && npm run docs:gen && npm run build && git add dist docs README.md packages/*/package.json","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.16.0_1788602805163_0.244150664500695","host":"s3://npm-registry-packages-npm-production"}},"1.17.0":{"name":"@fabriziosalmi/slopless","version":"1.17.0","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.17.0","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"0b7204c989c49b9ec7f5a359ee318893dc5b8a9e","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.17.0.tgz","fileCount":160,"integrity":"sha512-NiXbLthK7L9HXAotxtYaiW0Rco17DEfr1mltWkkVSE18XRhAXKlhm+aKvyAPHbs8Iaq4ZqF+MUv27V57BL1e6Q==","signatures":[{"sig":"MEQCIDD+Mbm0s5gof0Rvpi196Q2TTn0SFpctCDQwoGwGDUcUAiBOCXHwvnTmz7Q0p3NtmzKruAfgElww4ZtLJt+Fzrywvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8538044},"main":"dist/index.js","type":"commonjs","types":"./dist/index.d.ts","gitHead":"dbee19ee7aeb728821c0886fe02bea67b14eeb25","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && node scripts/sync-versions.js && npm run docs:gen && npm run build && git add dist docs README.md packages/*/package.json","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:bundle","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.17.0_1788603370161_0.7536934580794084","host":"s3://npm-registry-packages-npm-production"}},"1.17.1":{"name":"@fabriziosalmi/slopless","version":"1.17.1","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.17.1","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"5dd03b5917802670c9f7b43a739c4d44c58a46dc","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.17.1.tgz","fileCount":160,"integrity":"sha512-LedHwOMSXwLuE219XXkfiwPJu9sFrAFmbfgLpRYbb4qz/zEpWid7zIquktkwMVv/Uq1PIbFoDGsHSmmI4sCRhA==","signatures":[{"sig":"MEYCIQDYxUlCwN2EJbXHxUenqAnbnVns48T1eBJwdPI2j60q1AIhAMpzpFIGm1vTdmLO2vxrZIBRyv+xj3Easm7XehWsWVbW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.17.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8542963},"main":"dist/engine/api.js","type":"commonjs","types":"dist/engine/api.d.ts","exports":{".":{"types":"./dist/engine/api.d.ts","default":"./dist/engine/api.js"},"./package.json":"./package.json","./dist/engine/api":{"types":"./dist/engine/api.d.ts","default":"./dist/engine/api.js"},"./dist/engine/api.js":{"types":"./dist/engine/api.d.ts","default":"./dist/engine/api.js"}},"gitHead":"41eadbd210208c2440f9708c1fdadd0cd90260f8","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && node scripts/sync-versions.js && npm run docs:gen && npm run build && git add dist docs README.md packages/*/package.json","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:rules && npm run verify:bundle","verify:rules":"node scripts/check-rule-performance.js","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.17.1_1788874799002_0.9493398404537938","host":"s3://npm-registry-packages-npm-production"}},"1.17.2":{"name":"@fabriziosalmi/slopless","version":"1.17.2","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.17.2","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"d11159b951efbc447d34d25c8ef3e123e09fc5ba","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.17.2.tgz","fileCount":160,"integrity":"sha512-uYuYdLyT3ETQCicAOx6pEjMrjxiIa4GbXiFO0ZmVgeBov8QmVIA4/gxzcnuClxZUon/Vbn7FhpwO6KxbrgOVbg==","signatures":[{"sig":"MEUCIQDl8JFVi7B3UIixQ6nrSBenZKmhVOfTyuRbUQflVZZMkQIgSAkwu9GvvqZptwqlvZJ8d0gxTX9YTVrrcWnBsjBJ/NU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD7QnAMmbMB0UWPDc052GNAl5NU5/0p2W01tlgZxV4nfAIgA6Nud2n/d08cen3lFULmda9Ho4KcHC4uEEXuB+ezV8Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.17.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8550745},"main":"dist/engine/api.js","type":"commonjs","types":"dist/engine/api.d.ts","exports":{".":{"types":"./dist/engine/api.d.ts","default":"./dist/engine/api.js"},"./package.json":"./package.json","./dist/engine/api":{"types":"./dist/engine/api.d.ts","default":"./dist/engine/api.js"},"./dist/engine/api.js":{"types":"./dist/engine/api.d.ts","default":"./dist/engine/api.js"}},"gitHead":"01da7b9127b5edc4dc06f3509d8e1dd4c11c74e9","scripts":{"test":"vitest run","build":"tsup","version":"node scripts/check-changelog.js && node scripts/sync-versions.js && npm run docs:gen && npm run build && git add dist docs README.md packages/*/package.json","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:rules && npm run verify:bundle","verify:rules":"node scripts/check-rule-performance.js","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.0.2","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.17.2_1789820294413_0.685753523104494","host":"s3://npm-registry-packages-npm-production"}},"1.18.0":{"name":"@fabriziosalmi/slopless","version":"1.18.0","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"author":{"name":"Fabrizio Salmi"},"license":"MIT","_id":"@fabriziosalmi/slopless@1.18.0","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"homepage":"https://fabriziosalmi.github.io/slopless/","bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"bin":{"slopless":"dist/index.js"},"dist":{"shasum":"438f506160102ae69bf3f0a4556eed65bd8a9930","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.18.0.tgz","fileCount":160,"integrity":"sha512-woxRipYVtxLONZ+fguEhVAheygi8vVtltfiCz4m1tr+mohpj1S+oKwuLGWdhDUU4Qcpv0B/5bCkJSAfrc+yLFA==","signatures":[{"sig":"MEYCIQDV/E1gO6kpjf9J9YLaS9dg1OSYcQEW5zAztMne6S09PgIhAKv+XsW07Xry4LzrW5oY+F1IEfzMdCFuLJmeMC2gs5AB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDQJeWhsDceYiy5iNe8qt2LYPVevI5XHDcreBennvZVpAIhAMUiXEsb+Xwwt2hMoX8KUU/J4V6vMq4JPPDthGAt0+AA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8574704},"main":"dist/engine/api.js","type":"commonjs","types":"dist/engine/api.d.ts","exports":{".":{"types":"./dist/engine/api.d.ts","default":"./dist/engine/api.js"},"./package.json":"./package.json","./dist/engine/api":{"types":"./dist/engine/api.d.ts","default":"./dist/engine/api.js"},"./dist/engine/api.js":{"types":"./dist/engine/api.d.ts","default":"./dist/engine/api.js"}},"gitHead":"77589ee2962cad27bd20c2a2e6d89c46f31022d8","scripts":{"test":"vitest run","build":"tsup","corpus":"node scripts/corpus.js","version":"node scripts/check-changelog.js && node scripts/sync-versions.js && npm run docs:gen && npm run build && git add dist docs README.md packages/*/package.json","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:rules && npm run verify:bundle","verify:rules":"node scripts/check-rule-performance.js","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.2.0","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"_nodeVersion":"22.23.2","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^4.1.11","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/slopless_1.18.0_1790795801651_0.9189653173030483","host":"s3://npm-registry-packages-npm-production"}},"1.18.1":{"_id":"@fabriziosalmi/slopless@1.18.1","bin":{"slopless":"dist/index.js"},"bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"dist":{"shasum":"433d4e35515323ddf485716756dfe0aec4beb43c","tarball":"https://registry.npmjs.org/@fabriziosalmi/slopless/-/slopless-1.18.1.tgz","fileCount":160,"integrity":"sha512-xP3pu/F1k+BL6xCUQ7bXWLUQ24PugP7WXuFpawCoACPLNKpdpTE84Li9oSGGkg9BU3a3jqdt7/TE50y1d9PZNw==","signatures":[{"sig":"MEYCIQCjnjl51HsiV5r4WvOM1DwIDJwsZaqYpYJ5k3VtCJabewIhAON/fB/i7gZG0HP+iD6GAHSI+jdJxYRFW8aepLYw0qit","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCRhwrxPZ4quwwTedJGg1LG5G2SakmPow0PMHOuzk5Q6AIhAKC7DNFHJO7o/6Bw6QlOv963AOvUEHMn5LAWpoVwKw5B"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@fabriziosalmi%2fslopless@1.18.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8619930},"main":"dist/engine/api.js","name":"@fabriziosalmi/slopless","type":"commonjs","types":"dist/engine/api.d.ts","author":{"name":"Fabrizio Salmi"},"exports":{".":{"types":"./dist/engine/api.d.ts","default":"./dist/engine/api.js"},"./package.json":"./package.json","./dist/engine/api":{"types":"./dist/engine/api.d.ts","default":"./dist/engine/api.js"},"./dist/engine/api.js":{"types":"./dist/engine/api.d.ts","default":"./dist/engine/api.js"}},"gitHead":"46b53d641204290c8cef061b76b225dba912ff8a","license":"MIT","scripts":{"test":"vitest run","build":"tsup","corpus":"node scripts/corpus.js","version":"node scripts/check-changelog.js && node scripts/sync-versions.js && npm run docs:gen && npm run build && git add dist docs README.md packages/*/package.json","docs:dev":"npm run docs:gen && vitepress dev docs","docs:gen":"ts-node scripts/generate-rule-docs.ts","docs:build":"npm run docs:gen && vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","release:prep":"npm run docs:gen && npm run build && npm test && npm run verify:rules && npm run verify:bundle","verify:rules":"node scripts/check-rule-performance.js","test:coverage":"vitest run --coverage","verify:action":"bash scripts/run-action-locally.sh . 'src/**/*.ts'","verify:bundle":"node scripts/verify-bundle.js"},"version":"1.18.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"9c3da5af-ea7f-41f9-ab01-d0bca5d30b81"}},"homepage":"https://fabriziosalmi.github.io/slopless/","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"_npmVersion":"12.2.0","description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","directories":{},"maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"_nodeVersion":"22.23.3","allowScripts":{"esbuild":true,"fsevents":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.6","glob":"^13.0.6","tsup":"^8.5.1","ignore":"^7.0.5","vitest":"^5.0.1","js-yaml":"^5.4.1","ts-node":"^10.9.2","commander":"^15.0.0","minimatch":"^10.2.6","vitepress":"^1.6.4","typescript":"^5.9.3","@types/glob":"^9.0.0","@types/node":"^26.4.0","@types/js-yaml":"^4.0.9","@vitest/coverage-v8":"^5.0.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/slopless_1.18.1_1790799636666_0.663789464305504"}}},"time":{"created":"2026-09-01T11:39:09.557Z","modified":"2026-09-30T20:20:37.155Z","1.4.1":"2026-09-01T11:39:09.927Z","1.4.2":"2026-09-01T11:49:28.590Z","1.4.3":"2026-09-01T11:53:49.255Z","1.4.4":"2026-09-01T12:16:15.823Z","1.4.5":"2026-09-01T12:20:54.181Z","1.4.6":"2026-09-01T13:30:42.379Z","1.5.0":"2026-09-01T13:47:00.771Z","1.6.0":"2026-09-01T21:28:32.327Z","1.7.0":"2026-09-01T21:55:59.432Z","1.7.1":"2026-09-02T03:55:38.417Z","1.8.0":"2026-09-02T04:23:58.037Z","1.9.0":"2026-09-02T05:02:50.070Z","1.10.0":"2026-09-04T00:09:56.355Z","1.11.0":"2026-09-04T00:33:02.904Z","1.12.0":"2026-09-04T07:05:18.959Z","1.12.1":"2026-09-04T07:49:26.929Z","1.12.2":"2026-09-04T08:47:58.817Z","1.12.3":"2026-09-04T09:27:50.725Z","1.12.4":"2026-09-04T09:52:55.098Z","1.12.5":"2026-09-04T13:23:49.757Z","1.12.6":"2026-09-04T14:11:16.703Z","1.13.0":"2026-09-04T14:35:35.206Z","1.13.1":"2026-09-04T15:44:36.598Z","1.14.0":"2026-09-05T05:18:26.104Z","1.15.0":"2026-09-05T08:56:16.717Z","1.15.1":"2026-09-05T09:12:52.860Z","1.15.2":"2026-09-05T09:19:20.281Z","1.15.3":"2026-09-05T09:53:59.808Z","1.16.0":"2026-09-05T10:06:45.438Z","1.17.0":"2026-09-05T10:16:10.425Z","1.17.1":"2026-09-08T13:39:59.206Z","1.17.2":"2026-09-19T12:18:14.555Z","1.18.0":"2026-09-30T19:16:41.815Z","1.18.1":"2026-09-30T20:20:36.822Z"},"bugs":{"url":"https://github.com/fabriziosalmi/slopless/issues"},"author":{"name":"Fabrizio Salmi"},"license":"MIT","homepage":"https://fabriziosalmi.github.io/slopless/","keywords":["linter","static-analysis","anti-vibecoding","sarif"],"repository":{"url":"git+https://github.com/fabriziosalmi/slopless.git","type":"git"},"description":"[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actio","maintainers":[{"name":"fabriziosalmi","email":"fabrizio.salmi@gmail.com"}],"readme":"# Slopless\n\n[![npm](https://img.shields.io/npm/v/%40fabriziosalmi%2Fslopless)](https://www.npmjs.com/package/@fabriziosalmi/slopless) [![ci](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml/badge.svg)](https://github.com/fabriziosalmi/slopless/actions/workflows/ci.yml) [![docs](https://github.com/fabriziosalmi/slopless/actions/workflows/docs.yml/badge.svg)](https://fabriziosalmi.github.io/slopless/)\n\nSlopless is a static analysis tool designed to identify and mitigate unstructured coding patterns, undocumented assumptions, and heuristic-driven development practices (colloquially termed \"vibecoding\"). It employs a multi-tiered analysis engine combining deterministic regular expressions, Abstract Syntax Tree (AST) inspection, and structural semantic heuristics.\n\n## Architecture and Capabilities\n\n- **Rule Engine**: 152 rigorous rules spanning security, maintainability, accessibility, and documentation integrity. Every rule ships executable examples — a snippet it must flag and one it must leave alone — run on every commit.\n- **AST Inspection**: Deep structural validation to identify excessive cyclomatic complexity, parameter limits, and empty control flow blocks.\n- **Deep Semantic Validation**: Opt-in TypeScript TypeChecker (`--type-check`) for resolving inherited types, identifying floating promises, and validating structural intent beyond AST boundaries.\n- **Heuristic Auto-Fixes**: Autonomous modification of known anti-patterns (e.g., `var` to `let`) using `--fix`.\n- **Concurrency Pooling**: Fault-tolerant AST parsing distributed across CPU-bound boundaries to guarantee stability on massive monorepos without OOM crashes.\n- **Lexical Scoping**: Every string, comment and regular expression literal is mapped before a rule reads a byte — with the TypeScript scanner where it can, and a declarative tokeniser for Python, Go, Rust, shell, Java, C, C++, C#, Kotlin, Swift and Ruby. Each rule declares what it looks at (`code`, `strings`, `comments`, `regex`, `all`). A rule about `eval()` stays quiet inside a comment; a rule about insecure URLs does not read the pattern that validates them; a Python docstring is documentation rather than a string value.\n- **Exceptions That Say Why**: A rule can skip test code that lives inside the file it tests (`#[cfg(test)] mod tests`), skip documentation comments in languages that mandate them, and be excused by name on one line with `// slopless-disable-next-line VBC-001 -- reason`. A project can claim its own vocabulary, so `blacklist` in a firewall is the domain rather than a finding — and the run reports how many findings that excused.\n- **Rule Precedence**: A specific rule declares the general ones it `supersedes`, so a single `// TODO: implement this` produces one finding, not four.\n- **In the editor, and while writing** ([how](https://fabriziosalmi.github.io/slopless/editor)): [`packages/vscode-slopless`](packages/vscode-slopless) is a language server and a Slopless panel — diagnostics as you type, and a list of what the rules found across the workspace, errors first, clicking one goes to the line. Build the `.vsix` and install it; it is not on the Marketplace. [`packages/mcp-slopless`](packages/mcp-slopless) is an MCP server, so a coding agent can check a buffer *before* it writes the file: `lint_text` takes the text and the path it will have, and the path is what decides whether it counts as test code. Both run the same engine and the same rules as the CLI.\n\n## GitHub Action\n\n```yaml\n- uses: fabriziosalmi/slopless@v1\n  with:\n    patterns: \"src/**/*.ts\"      # optional; add format: sarif, type-check: \"true\", args: ...\n```\n\nRuns the bundled CLI directly — no npm install in your job. Exit code 1 on errors (warnings pass).\n\n`@v1` is a moving tag: it follows every 1.x release, which is convenient and means\nyou are trusting this repository not to change under you. To remove that trust,\npin to the commit instead — Dependabot will keep it current:\n\n```yaml\n- uses: fabriziosalmi/slopless@<commit-sha>   # pin to the release you audited\n```\n\n## Installation\n\n```bash\nnpm install -D @fabriziosalmi/slopless\n# or run it without installing\nnpx @fabriziosalmi/slopless\n```\n\n> The unscoped `slopless` on npm is an unrelated prose linter by another author.\n> This project publishes as **`@fabriziosalmi/slopless`**; the binary it installs\n> is still called `slopless`.\n\n## Supply Chain\n\n- **No dependencies.** `npm install @fabriziosalmi/slopless` pulls exactly one\n  package. Everything the linter needs is compiled into the bundle, so there is no\n  transitive install surface to compromise. CI fails if a runtime dependency\n  reappears, or if the bundle stops running without `node_modules`.\n- **Signed provenance.** Releases publish from GitHub Actions over OIDC. No npm\n  token exists, and the package is configured to refuse one: publishing requires\n  the trusted publisher. Every tarball carries an attestation binding it to the\n  commit and the workflow run that produced it. Verify it yourself:\n\n  ```bash\n  npm audit signatures\n  ```\n\n  `1.4.1` is the exception and always will be. A trusted publisher can only be\n  configured on a package that already exists, so the first version was published\n  by hand, and `--provenance` needs a CI provider to attest with.\n\n- **Reproducible bundle.** `dist/index.js` is committed so the Action can run with\n  no install step. CI rebuilds it from source and fails if the committed bundle\n  differs by a byte, so it cannot be tampered with independently of the source.\n- **Pinned actions.** Every third-party action is pinned to a commit SHA, not a\n  moving tag, with Dependabot keeping the pins current.\n- **No telemetry.** Nothing is reported anywhere. The only rule that touches the\n  network is `VBC-401` (broken links), which fetches the URLs it finds in the\n  Markdown you point it at, once each and within a time budget (`--link-budget`),\n  and nothing else.\n\n## Usage\n\n### Instant Initialization\n```bash\nnpx @fabriziosalmi/slopless --init\n```\n*Creates `slopless.config.json` and `.sloplessignore` in your workspace.*\n\n### Lint the Project\n```bash\nnpx @fabriziosalmi/slopless\n```\n\n### Auto-Fix and Deep Semantic Check\n```bash\nnpx @fabriziosalmi/slopless --fix --type-check\n```\n\n### CI/CD Integration (SARIF)\n```bash\nnpx @fabriziosalmi/slopless --format sarif > gl-sast-report.json\n```\n\n### Lint Specific Directories\n```bash\nnpx @fabriziosalmi/slopless \"src/**/*.ts\" \"docs/**/*.md\"\n```\n\n## Silencing one line\n\n```js\n// slopless-disable-next-line VBC-001 -- a fake PAT; this test asserts it is redacted\nconst TOKEN = 'ghp_A1b2C3d4E5f6G7h8I9j0K1l2M3n4O5p6Q7r8';\n```\n\nAlso `// slopless-disable-line VBC-001` at the end of the line it applies to. The\ndirective is read from the raw line, so `#`, `/* */` and `<!-- -->` work too, and\nit covers every checker tier. Full rules in\n[docs/configuration.md](docs/configuration.md).\n\n## What reaches which language\n\nEvery run ends by saying how many rules applied to each language it read, because\na file nothing checked looks exactly like a file that came back clean. The same\ncount, written from the rules rather than from memory:\n\n<!-- coverage:start -->\n| language | rules |\n| --- | --- |\n| TypeScript (JSX) (`.tsx`) | 98 of 152 |\n| TypeScript (`.ts`) | 96 of 152 |\n| JavaScript (`.js`) | 95 of 152 |\n| Astro (`.astro`) | 83 of 152 |\n| JavaScript (JSX) (`.jsx`) | 32 of 152 |\n| Python (`.py`) | 32 of 152 |\n| Markdown (`.md`) | 26 of 152 |\n| CSS (`.css`) | 23 of 152 |\n| HTML (`.html`) | 21 of 152 |\n| Go (`.go`) | 19 of 152 |\n| Plain text (`.txt`) | 18 of 152 |\n| Shell (`.sh`) | 16 of 152 |\n| Java (`.java`) | 15 of 152 |\n| Rust (`.rs`) | 15 of 152 |\n| Sass (SCSS) (`.scss`) | 15 of 152 |\n| Ruby (`.rb`) | 14 of 152 |\n| C# (`.cs`) | 13 of 152 |\n| C (`.c`) | 12 of 152 |\n| C++ (`.cpp`) | 12 of 152 |\n| Kotlin (`.kt`) | 12 of 152 |\n| Swift (`.swift`) | 12 of 152 |\n| Less (`.less`) | 9 of 152 |\n| JSON (`.json`) | 5 of 152 |\n| PHP (`.php`) | 5 of 152 |\n| Dotenv (`.env`) | 4 of 152 |\n| YAML (`.yaml`) | 3 of 152 |\n| YAML (`.yml`) | 3 of 152 |\n<!-- coverage:end -->\n\nThe parsing tiers use the TypeScript compiler, so the AST, semantic-naming and\ntype checks are TypeScript and JavaScript only. Everywhere else a declarative\ntokeniser finds the comments and strings, which is enough for `scan:` and for the\nrules that matter there: unattributed TODOs, FIXMEs describing live defects,\nplaceholder text, generated prose, hardcoded secrets, insecure URLs.\n\nThat split is deliberate. `clippy` finds an unhandled `unwrap` better than a regex\never will and has the types to prove it; `staticcheck` and `pylint` are the same.\nNone of them has an opinion about a section that says \"coming soon\".\n\n## Rule Taxonomy\n\n- **Core/Security**: Detection of exposed credentials, `eval()` usage, `innerHTML` assignments, SQL built by concatenation, command injection, prototype pollution, insecure file permissions (`chmod 777`), and hardcoded paths.\n- **Clean Code**: Identification of magic numbers, unannotated complex regular expressions, excessive nesting, `async` functions that never await, and non-descriptive variable names.\n- **UX/DX**: Enforcement of accessibility standards (alt attributes, focus visibility, accessible names on icon-only buttons) and prevention of user experience dark patterns.\n- **Documentation**: Detection of generated filler content, non-inclusive language, and broken external references.\n\nFull documentation at [fabriziosalmi.github.io/slopless](https://fabriziosalmi.github.io/slopless/):\n[all 152 rules](https://fabriziosalmi.github.io/slopless/rules/) ·\n[configuration](https://fabriziosalmi.github.io/slopless/configuration) ·\n[writing a rule](https://fabriziosalmi.github.io/slopless/writing-a-rule) ·\n[the scanner bug story](https://fabriziosalmi.github.io/slopless/story)\n\n## Writing a Rule\n\nA rule is one YAML file in `rules/`, named after its id.\n\n```yaml\nid: VBC-999\nname: my-rule\nseverity: warning          # error blocks the run, warning does not\ncategory: clean-code\nmatch:\n  regex: console\\.log\\(\n  file_types: [js, ts]\n  scan: code               # code (default) | strings | comments | all\n  multiline: false         # true evaluates the regex against the whole file\nmessage: Left a console.log at line {line}.\ntests:                     # required — the suite fails if a rule ships without them\n  fire:\n    - 'console.log(\"x\");'\n  quiet:\n    - 'logger.info(\"x\");'\n```\n\n`scan` decides which lexical scope a match must live in, which is what keeps a\ncode rule quiet inside a comment and a string rule quiet inside code. `supersedes`\nlets a specific rule silence a general one on the same line. Rules can also use\n`ast_check`, `semantic_check`, `git_check` or `type_check` instead of `regex`;\nthose declare `tests.external` naming the test file that covers them.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}