{"_id":"@tony.ganchev/eslint-plugin-header","_rev":"30-c1c406ccafc8b1e4471a0434a9f081ac","name":"@tony.ganchev/eslint-plugin-header","dist-tags":{"maintenance":"3.1.13","latest":"3.4.4"},"versions":{"3.1.1":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.1.1","keywords":["eslint","eslintplugin"],"author":{"name":"Stuart Knightley"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.1.1","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Tony Ganchev"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"3af6b52dc9bf609025b4908f0355e3d2a72455a7","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.1.1.tgz","fileCount":13,"integrity":"sha512-n4ylH8X6lPY3epX58rsqniOQVbrpKpxu97vs1mZnApAfCZw/5EIEEWkR3VXNba0v591v2lYDPle7xQwDkxNVgw==","signatures":[{"sig":"MEQCIH7O3mxGCPuz6C3kVJhhTxYgvm4gH7YYYjqVHpXZCmD+AiBphBfTcfjZOMJX1HTfLFRbA5b7Y2UbNm304eAK/qLVnw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":32761},"main":"index.js","gitHead":"36161b3282e088ad2f19657ab0e377651b6886c2","scripts":{"lint":"eslint .","test":"npm run lint && npm run unit","unit":"mocha tests/lib/*.js tests/lib/**/*.js"},"_npmUser":{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"},"repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"10.2.4","description":"ESLint plugin to ensure that files begin with given comment","directories":{},"_nodeVersion":"18.19.1","_hasShrinkwrap":false,"devDependencies":{"mocha":"^8.1.1","eslint":"^7.7.0"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.1.1_1720527993822_0.2722675946990043","host":"s3://npm-registry-packages"}},"3.1.2":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.1.2","keywords":["eslint","eslintplugin"],"author":{"name":"Stuart Knightley"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.1.2","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Tony Ganchev"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"6478e824857f590e7ebfd163d68f60ec907784a5","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.1.2.tgz","fileCount":13,"integrity":"sha512-u9sJvwqAw26+2MlUfVMTbVAygcNpp+wQA3YbJ5qtkltEBzEJN8I+VKJxRKC2MSG/26uxHk9LA/rXz8iaYLmu5A==","signatures":[{"sig":"MEMCIEzy05zjnVIzeTE1qj+bp0coX/IIxEaywQzD0Uxg3TJpAh8OT4fRO1DnOXCt7mg19GOxAvuliZ8NEa3x2tKANQMw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":32761},"main":"index.js","gitHead":"36161b3282e088ad2f19657ab0e377651b6886c2","scripts":{"lint":"eslint .","test":"npm run lint && npm run unit","unit":"mocha tests/lib/*.js tests/lib/**/*.js"},"_npmUser":{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"},"repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"10.2.4","description":"ESLint plugin to ensure that files begin with given comment","directories":{},"_nodeVersion":"18.19.1","_hasShrinkwrap":false,"devDependencies":{"mocha":"^8.1.1","eslint":"^7.7.0"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.1.2_1720528015291_0.6328885100629391","host":"s3://npm-registry-packages"}},"3.1.3":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.1.3","keywords":["eslint","eslintplugin"],"author":{"name":"Stuart Knightley"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.1.3","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Tony Ganchev"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"f41f92f36e73da46f7623080870479c08ec3b36d","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.1.3.tgz","fileCount":14,"integrity":"sha512-G451qs703JLvtNP8nJvlIxaeezOt0VNCGRy9R/E+5JjD8fuh5ln5L6hAb0HVma4ULbBFXggaiJfEnhL9PrPE+A==","signatures":[{"sig":"MEQCIE9ioL3UYf6J4wDXviJjbi0POE7WLOklAiRIV5lYD0MmAiASoa30DV2dL9+39itploc0fBTVmcmgDwhEFBV/T3GSHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36875},"main":"index.js","gitHead":"28232ced895136efc8444d6efbea56e5aad7b808","scripts":{"lint":"eslint .","test":"npm run lint && npm run unit","unit":"mocha tests/lib/*.js tests/lib/**/*.js"},"_npmUser":{"name":"tony.ganchev","actor":{"name":"tony.ganchev","type":"user","email":"tony.ganchev@gmail.com"},"email":"tony.ganchev@gmail.com"},"repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"10.8.2","description":"ESLint plugin to ensure that files begin with given comment","directories":{},"_nodeVersion":"20.19.2","_hasShrinkwrap":false,"devDependencies":{"mocha":"^8.1.1","eslint":"^7.7.0"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.1.3_1750449766082_0.3449741841005931","host":"s3://npm-registry-packages-npm-production"}},"3.1.4":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.1.4","keywords":["eslint","eslintplugin"],"author":{"name":"Stuart Knightley"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.1.4","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Tony Ganchev"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"e2abcb15c392bf85ce57791ae60b9d38758bbec2","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.1.4.tgz","fileCount":14,"integrity":"sha512-SQX++m1GAvwlSevDSXhogMvo/+J2wpnuB2mddN+nOJJbMUKzaGQYei+SL13Rem+iKGQKbLo+dP8H0E582oolfg==","signatures":[{"sig":"MEYCIQC856BMCCdfj+m7k5Hyc2M+xWMw3K7PV0624dt3O01PpgIhAJ3pNAEahEPOU9nw8bPb6EousIwuWfPTkSTjIaDTqmCr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38899},"main":"index.js","gitHead":"ad668c05d0acf30eb932607247e47a141b42a2ff","scripts":{"lint":"eslint .","test":"npm run lint && npm run unit","unit":"mocha tests/lib/*.js tests/lib/**/*.js"},"_npmUser":{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"},"repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.6.0","description":"ESLint plugin to ensure files begin with a given comment, usually a copyright or license notice.","directories":{},"_nodeVersion":"24.9.0","_hasShrinkwrap":false,"devDependencies":{"mocha":"^11.7.1","eslint":"^9.32.0","@eslint/js":"^9.32.0","@eslint/eslintrc":"^3.3.1","eslint-plugin-jsdoc":"^52.0.4"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.1.4_1759844301970_0.5761813138778369","host":"s3://npm-registry-packages-npm-production"}},"3.1.5":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.1.5","keywords":["eslint","eslintplugin"],"author":{"name":"Stuart Knightley"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.1.5","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Tony Ganchev"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"e7fef6e8f57d0c6c0edac471dde66a3104606937","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.1.5.tgz","fileCount":6,"integrity":"sha512-67XuOGeRnN0bWkxP4n1CP9kslpJUSc8/Xf9nfeVMSZRwNnjSdDj9avhL/U7ZG5LXPz7KcawWr8SV6d0Yk+Pbow==","signatures":[{"sig":"MEYCIQDnG+RhpBkyOuby0jjH32No5FbPkL5sj2WghP5HGo18NQIhAODctn/xx8221ZmMbCzk397JLE+k6SUq10EdrrxJPlT0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30652},"main":"index.js","gitHead":"834f976d2b6762ed18adabb1d63e47d482331907","scripts":{"lint":"eslint .","test":"npm run lint && npm run unit","unit":"nyc --reporter=html --reporter=text --reporter=text-summary mocha tests/lib/**/*.js"},"_npmUser":{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"},"repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.6.0","description":"ESLint plugin to ensure files begin with a given comment, usually a copyright or license notice.","directories":{},"_nodeVersion":"24.9.0","_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","mocha":"^11.7.1","eslint":"^9.32.0","@eslint/js":"^9.32.0","testdouble":"^3.20.2","@eslint/eslintrc":"^3.3.1","eslint-plugin-jsdoc":"^52.0.4"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.1.5_1760013401410_0.40299759242252686","host":"s3://npm-registry-packages-npm-production"}},"3.1.6":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.1.6","keywords":["eslint","eslintplugin"],"author":{"name":"Stuart Knightley"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.1.6","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Tony Ganchev"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"2d9d16e10eed04e07c1420fa68191443278b44a7","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.1.6.tgz","fileCount":6,"integrity":"sha512-7n6xjgejjccQ0iK1kNS+nzhy3RYzTH3LxClu/Xn4PoebPmJeDCezgFS7sc+Nb8RhugAv+OJm09p8T3BlDkye5A==","signatures":[{"sig":"MEQCIBo9NgYA5+5uQtYzrsnurv2eOm8KM02Pn67G87OBmxN9AiAtJLn7lXbswqVCcfIekha1zbMnvr4ZJk26pdpmFqR30w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30897},"main":"index.js","gitHead":"7338cc81fa518234876d4479b8029ba04603f769","scripts":{"lint":"eslint .","test":"npm run lint && npm run unit","unit":"nyc --reporter=html --reporter=text --reporter=text-summary --check-coverage=true --statements=98 --branches=90 --lines=98 --functions=100 mocha tests/lib/**/*.js"},"_npmUser":{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"},"repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.6.0","description":"ESLint plugin to ensure files begin with a given comment, usually a copyright or license notice.","directories":{},"_nodeVersion":"24.9.0","_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","mocha":"^11.7.1","eslint":"^9.32.0","@eslint/js":"^9.32.0","testdouble":"^3.20.2","@eslint/eslintrc":"^3.3.1","eslint-plugin-jsdoc":"^52.0.4"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.1.6_1760269773477_0.798900960190376","host":"s3://npm-registry-packages-npm-production"}},"3.1.7":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.1.7","keywords":["eslint","eslintplugin"],"author":{"name":"Stuart Knightley"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.1.7","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Tony Ganchev"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"a4530c2975c41645b54e8997633167dcee3711f2","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.1.7.tgz","fileCount":6,"integrity":"sha512-9bHJl4Os9v/Yb8VX6i28JK6mdghGMR31o/1JH84zrZUpnYZ3ZRCjZy1mjL5GNfhMkfFeHYxjfXPplA0jFFl/0g==","signatures":[{"sig":"MEYCIQDUAkDa745xmWqhM37W4Xq4bMywQgUlPVcwT3BssSpTJwIhAJwu5+B2c81eu/fgZtBBcKTg/sQLDOFm4IHjfU+fSifE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36962},"main":"index.js","gitHead":"2af252db380bc66911c24d5a58df011cc7c9cc84","scripts":{"lint":"eslint .","test":"npm run lint && npm run unit","unit":"nyc --reporter=html --reporter=text --reporter=text-summary --check-coverage=true --statements=98 --branches=90 --lines=98 --functions=100 mocha tests/lib/**/*.js"},"_npmUser":{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"},"repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.6.1","description":"ESLint plugin to ensure files begin with a given comment, usually a copyright or license notice.","directories":{},"_nodeVersion":"24.10.0","_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","mocha":"^11.7.1","eslint":"^9.32.0","@eslint/js":"^9.32.0","testdouble":"^3.20.2","@eslint/eslintrc":"^3.3.1","eslint-plugin-jsdoc":"^52.0.4"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.1.7_1761208071388_0.6473204742739955","host":"s3://npm-registry-packages-npm-production"}},"3.1.8":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.1.8","keywords":["eslint","eslintplugin"],"author":{"name":"Stuart Knightley"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.1.8","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Tony Ganchev"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"b7697cee867c88de32c732322ff7e2529cf15245","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.1.8.tgz","fileCount":6,"integrity":"sha512-iNP3DPLE87rY6gxbPiGzIsJbETnnZSA0owasmh/s3bLq6j7dLUqDweEVXmxZno3RtwFPrNCwWILwRjTHPTDKuQ==","signatures":[{"sig":"MEUCIQCG6jRlIyvq6hiGjmXIotoPemvDgVjof9j9LallW7z1NAIgYW6SU+9QnQsmUi4TUBonI9gBC7rFb/q9pNBYU7WGajs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37741},"main":"index.js","gitHead":"decea5842ab6109ea37b47237ee2eeabde305e62","scripts":{"lint":"eslint .","test":"npm run lint && npm run unit","unit":"nyc --reporter=html --reporter=text --reporter=text-summary --check-coverage=true --statements=98 --branches=90 --lines=98 --functions=100 mocha tests/lib/**/*.js"},"_npmUser":{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"},"repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.6.1","description":"ESLint plugin to ensure files begin with a given comment, usually a copyright or license notice.","directories":{},"_nodeVersion":"24.10.0","_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","mocha":"^11.7.1","eslint":"^9.32.0","@eslint/js":"^9.32.0","testdouble":"^3.20.2","@eslint/eslintrc":"^3.3.1","eslint-plugin-jsdoc":"^52.0.4"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.1.8_1761212042325_0.7447593626027844","host":"s3://npm-registry-packages-npm-production"}},"3.1.9":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.1.9","keywords":["eslint","eslintplugin"],"author":{"name":"Stuart Knightley"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.1.9","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Tony Ganchev"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"bb171ddea9399db312ca148e93c071e905884bd0","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.1.9.tgz","fileCount":6,"integrity":"sha512-GdRBVoQgafbL1E+rhKsOkDxQ2ZBzFAWGEIWOkf05cTDV9r2kMUXz5VyMxTKhCgvuISXJs/GTOX7twfxguVsVnQ==","signatures":[{"sig":"MEQCIDAPBhapgy11jT0yJ6MHiY5GpLGWZtIkWVHWZRfg3mZbAiBK5mynrsRX1C3eST91GOjsgubBm2GwC/ajO3HLWfXryA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40574},"main":"index.js","gitHead":"e6981abd11e5832ab729034883159b45db81cbbf","scripts":{"lint":"eslint .","test":"npm run lint && npm run unit","unit":"nyc --reporter=html --reporter=text --reporter=text-summary --check-coverage=true --statements=98 --branches=90 --lines=98 --functions=100 mocha tests/lib/**/*.js"},"_npmUser":{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"},"repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.6.1","description":"ESLint plugin to ensure files begin with a given comment, usually a copyright or license notice.","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","mocha":"^11.7.1","eslint":"^9.32.0","@eslint/js":"^9.32.0","testdouble":"^3.20.2","@eslint/eslintrc":"^3.3.1","eslint-plugin-jsdoc":"^52.0.4"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.1.9_1762681798528_0.9770384980730467","host":"s3://npm-registry-packages-npm-production"}},"3.1.10":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.1.10","keywords":["eslint","eslintplugin"],"author":{"name":"Stuart Knightley"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.1.10","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Tony Ganchev"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"0ee8241c34d4c873c37279b78664ca64ba59878e","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.1.10.tgz","fileCount":8,"integrity":"sha512-uA1ZGb04qa1+H6DmBTRpWdEtoRZ9HiC3SrmFkLR19uqmLp5cl+qWx/+y2eYSa4gYUrmQcAb2++T5n0ej3x8M6A==","signatures":[{"sig":"MEYCIQDr/aTkuPoBZVNh9ig6pbI9/naqwVQ+7tnVzbxR9MUAvAIhAKbMpPB7XL6Ya1oGZQlnXYYHNFWOzGOD7zcxGmNpKbA1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44821},"main":"index.js","gitHead":"97db59bc906472c2600a14f4ab6e851a34dca767","scripts":{"lint":"npm run eslint && npm run markdownlint","test":"npm run lint && npm run unit","unit":"npx nyc --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage=true --statements=100 --branches=100 --lines=100 --functions=100 mocha tests/lib/*.js tests/lib/**/*.js","eslint":"npx eslint .","markdownlint":"npx markdownlint-cli *.md"},"_npmUser":{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"},"repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.6.1","description":"ESLint plugin to ensure files begin with a given comment, usually a copyright or license notice.","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","mocha":"^11.7.1","eslint":"^9.32.0","@eslint/js":"^9.32.0","testdouble":"^3.20.2","eslint-plugin-n":"^17.23.1","@eslint/eslintrc":"^3.3.1","@eslint/markdown":"^7.5.1","eslint-plugin-jsdoc":"^52.0.4","@stylistic/eslint-plugin":"^5.5.0","eslint-plugin-eslint-plugin":"^7.2.0"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.1.10_1762808982065_0.13258223912274403","host":"s3://npm-registry-packages-npm-production"}},"3.1.11":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.1.11","keywords":["eslint","eslintplugin"],"author":{"name":"Stuart Knightley"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.1.11","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Tony Ganchev"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"1702bf2c2b66688db989e5df1fcba1eff3e42cde","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.1.11.tgz","fileCount":8,"integrity":"sha512-4YWoINrywSfsZtVUSNQRXPwlyFK5GKJxSzKXhxMnPuGdbmjzSBUqE2oANdIXqyQv/DVC1FWOtaBanta9c0ATFA==","signatures":[{"sig":"MEQCIDISXVvc7T25aGXfRVyrxXcLcuE4qdrR4lMsZkB1VG7TAiBphWzgNYc9S6RTom+ChatWXMPtRLUmcBllGweLOTzorA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58027},"main":"index.js","gitHead":"ef0b319cc6811e676383b1475b2cb5a11ad1fdd1","scripts":{"lint":"npm run eslint && npm run markdownlint","test":"npm run lint && npm run unit","unit":"npx nyc --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage=true --statements=100 --branches=100 --lines=100 --functions=100 mocha tests/lib/*.js tests/lib/**/*.js","eslint":"npx eslint .","markdownlint":"npx markdownlint-cli *.md"},"_npmUser":{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"},"repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.6.1","description":"ESLint plugin to ensure files begin with a given comment, usually a copyright or license notice.","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","mocha":"^11.7.5","eslint":"^9.39.1","@eslint/js":"^9.39.1","testdouble":"^3.20.2","eslint-plugin-n":"^17.23.1","@eslint/eslintrc":"^3.3.1","@eslint/markdown":"^7.5.1","eslint-plugin-jsdoc":"^61.1.12","@stylistic/eslint-plugin":"^5.5.0","eslint-plugin-eslint-plugin":"^7.2.0"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.1.11_1763023464726_0.12670766053144433","host":"s3://npm-registry-packages-npm-production"}},"3.1.12":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.1.12","keywords":["eslint","eslintplugin"],"author":{"name":"Stuart Knightley"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.1.12","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"b415f34530f8c68c34638b4887316dbe4c6ee3c0","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.1.12.tgz","fileCount":9,"integrity":"sha512-3sqLhmMlx0TERSjr0aZ4qNj1bdC+g/uZ5tomhlS5KGtxEMPljab+XaXxwDHW8yC6N/KOebt+b7C3GrWYL8BvUQ==","signatures":[{"sig":"MEYCIQCSpcrp+dF+xYd+wUNUllMlLBVSbOVqshaiW2jJMfovnQIhAI25faMa19sJXXQx4LUfP3zC1XxS1Nei2f4KPdnbRGjW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tony.ganchev%2feslint-plugin-header@3.1.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":60191},"main":"index.js","gitHead":"461f4152c90f830dab37dcda692ab9a2472706e1","scripts":{"e2e":"npx mocha --timeout 60000 tests/e2e/*.js","lint":"npm run eslint && npm run markdownlint","test":"npm run lint && npm run unit && npm run e2e","unit":"npx nyc --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage=true --statements=100 --branches=100 --lines=100 --functions=100 mocha tests/lib/*.js tests/lib/**/*.js","eslint":"npx eslint .","markdownlint":"npx markdownlint-cli *.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d07c58e2-a177-45f3-935d-ebe7c881c97b"}},"repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.6.2","description":"ESLint plugin to ensure files begin with a given comment, usually a copyright or license notice.","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","mocha":"^12.0.0-beta-5","eslint":"^9.39.2","@eslint/js":"^9.39.2","testdouble":"^3.20.2","eslint-plugin-n":"^17.23.2","@eslint/eslintrc":"^3.3.3","@eslint/markdown":"^7.5.1","markdownlint-cli":"^0.47.0","eslint-plugin-jsdoc":"^62.1.0","@stylistic/eslint-plugin":"^5.7.0","eslint-plugin-eslint-plugin":"^7.3.0"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.1.12_1768805842794_0.3094295153742148","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.2.0","keywords":["eslint","eslintplugin"],"author":{"name":"Stuart Knightley"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.2.0","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"5ee8d423b6a9e43d9d39baa977b8d6a49a04fbc1","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.2.0.tgz","fileCount":9,"integrity":"sha512-/Ke4Yht9x9YmFpdts6KAG0d/rxMnktSHTKtX0wBNz0A3ZdEiOSE7rrK3F6MpMB8fjQXdm3xD/mN1plyFGF3OJA==","signatures":[{"sig":"MEUCIQDl9n32MA8qhACcE4aYvI3hRl2lyk1Hm+p9G/tQNqjPFwIgOagD4HV9ONCueuO+Iz7DhSM4fG6ODheKscj9z7CsgYA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tony.ganchev%2feslint-plugin-header@3.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":79180},"main":"index.js","gitHead":"2f9a8645d41234ab564c9800cfd7e569a41383b3","scripts":{"e2e":"npx mocha --timeout 60000 tests/e2e/*.js","lint":"npm run eslint && npm run markdownlint","test":"npm run lint && npm run unit && npm run e2e","unit":"npx nyc --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage=true --statements=100 --branches=100 --lines=100 --functions=100 mocha tests/lib/*.js tests/lib/**/*.js","eslint":"npx eslint .","markdownlint":"npx markdownlint-cli *.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d07c58e2-a177-45f3-935d-ebe7c881c97b"}},"repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.6.2","description":"ESLint plugin to ensure files begin with a given comment, usually a copyright or license notice.","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","mocha":"^12.0.0-beta-5","eslint":"^9.39.2","@eslint/js":"^9.39.2","testdouble":"^3.20.2","eslint-plugin-n":"^17.23.2","@eslint/eslintrc":"^3.3.3","@eslint/markdown":"^7.5.1","markdownlint-cli":"^0.47.0","eslint-plugin-jsdoc":"^62.1.0","@stylistic/eslint-plugin":"^5.7.0","eslint-plugin-eslint-plugin":"^7.3.0"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.2.0_1768839344658_0.842006770337439","host":"s3://npm-registry-packages-npm-production"}},"3.1.13":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.1.13","keywords":["eslint","eslintplugin"],"author":{"name":"Stuart Knightley"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.1.13","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"dacef341c49ff52ad22bb26b09153d7b3a0ee993","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.1.13.tgz","fileCount":24,"integrity":"sha512-ISysYp8eUiw0jxUni0RFdlZfEMkr7jwgJL8200hn2Kelr09MMNsQQtILK/w/kDe03g+SPMNmvU4JxrgAF0KOzw==","signatures":[{"sig":"MEQCIEsr9zEJL6IDyIgcgfdlgc/4aVZuBpDwcGJQxd5+okUYAiBPYqsl3ykkz/+FCZeVUIWVDbbKJdYbImym3dgkrDBTsA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tony.ganchev%2feslint-plugin-header@3.1.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":72226},"main":"index.js","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.js"}},"gitHead":"0932a410aa5057e03182cf0af22af31865dc1185","scripts":{"e2e":"npm run build && npx mocha --timeout 60000 tests/e2e/*.js","lint":"npm run eslint && npm run markdownlint","test":"npm run lint && npm run unit && npm run e2e","unit":"npx nyc --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage=true --statements=100 --branches=100 --lines=100 --functions=100 mocha tests/lib/*.js tests/lib/**/*.js","build":"npx tsc","eslint":"npx eslint .","markdownlint":"npx markdownlint-cli *.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d07c58e2-a177-45f3-935d-ebe7c881c97b"}},"repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.6.2","description":"ESLint plugin to ensure files begin with a given comment, usually a copyright or license notice.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"nyc":"^17.1.0","mocha":"^12.0.0-beta-6","eslint":"^9.39.2","@eslint/js":"^9.39.2","testdouble":"^3.20.2","typescript":"^5.9.3","@types/node":"^25.2.1","eslint-plugin-n":"^17.23.2","@eslint/eslintrc":"^3.3.3","@eslint/markdown":"^7.5.1","markdownlint-cli":"^0.47.0","typescript-eslint":"^8.54.0","eslint-plugin-jsdoc":"^62.5.2","@stylistic/eslint-plugin":"^5.7.1","eslint-plugin-eslint-plugin":"^7.3.0"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.1.13_1770324730077_0.7206606502400628","host":"s3://npm-registry-packages-npm-production"}},"3.2.1":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.2.1","keywords":["eslint","eslintplugin"],"author":{"name":"Stuart Knightley"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.2.1","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"0da9c5b3857f9eeece0244a1357353c3a2113411","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.2.1.tgz","fileCount":24,"integrity":"sha512-VeKrzhkWkPtr7QJhG9hFUjaWzLHQ6afCbNCyU6pBT70dOQP5AoynZVnKYCuST/cuDZ/e1ZIbJ8yg98jJ8XPTFg==","signatures":[{"sig":"MEQCIC/aNgRBhhDroQ1MmCcr9VyilkEty5n6phJWCOqNzFNwAiAGXERTBb8GDEjWpdgdObLgNzMrZfCm/TGpc6tnVd5DOg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tony.ganchev%2feslint-plugin-header@3.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":93532},"main":"index.js","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.js"}},"gitHead":"35ed96268adf06eba50086efb1f97c4a092bca96","scripts":{"e2e":"npm run build && npx mocha --timeout 60000 tests/e2e/*.js","lint":"npm run eslint && npm run markdownlint","test":"npm run lint && npm run unit && npm run e2e","unit":"npx nyc --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage=true --statements=100 --branches=100 --lines=100 --functions=100 mocha tests/lib/*.js tests/lib/**/*.js","build":"npx tsc","eslint":"npx eslint .","markdownlint":"npx markdownlint-cli *.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d07c58e2-a177-45f3-935d-ebe7c881c97b"}},"repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.6.2","description":"ESLint plugin to ensure files begin with a given comment, usually a copyright or license notice.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","mocha":"^12.0.0-beta-6","eslint":"^9.39.2","@eslint/js":"^9.39.2","testdouble":"^3.20.2","typescript":"^5.9.3","@types/node":"^25.2.1","eslint-plugin-n":"^17.23.2","@eslint/eslintrc":"^3.3.3","@eslint/markdown":"^7.5.1","markdownlint-cli":"^0.47.0","typescript-eslint":"^8.54.0","eslint-plugin-jsdoc":"^62.5.2","@stylistic/eslint-plugin":"^5.7.1","eslint-plugin-eslint-plugin":"^7.3.0"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.2.1_1770325346275_0.09598516174903815","host":"s3://npm-registry-packages-npm-production"}},"3.2.2":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.2.2","keywords":["eslint","eslint-plugin","eslint9","flat-config","header","copyright","license","banner","notice","license-header","copyright-header","legal","gdpr","source-header","typescript","react","check","fix"],"author":{"name":"Tony Ganchev"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.2.2","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Josh Kelley"},{"name":"Stuart Knightley"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"be9c52500487a6087afd2e72f79a7c4b2d607aab","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.2.2.tgz","fileCount":22,"integrity":"sha512-E2wpHgN3pN4XfIinZJjzbjre+9cjupJWrcWK7znTt7tkynaVmDxGrwPGfJS7wMk4LoAw6oafkej571SksEZtUg==","signatures":[{"sig":"MEYCIQCAkprtRc0gyD3xeuy7QkbYAM5cxRAKXncHg2yJmhNo/AIhANY8O45BuZGiOCJQwodxnBCA/KzHZWPlZLkjWyK00Ip9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tony.ganchev%2feslint-plugin-header@3.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":98959},"main":"index.js","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.js"}},"gitHead":"8ee342c2292e4a17006b9a94c73c22e3870b1fb1","scripts":{"e2e":"npm run build && npx mocha --timeout 60000 tests/e2e/*.js","lint":"npm run eslint && npm run markdownlint","test":"npm run lint && npm run unit && npm run e2e","unit":"npx nyc --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage=true --statements=100 --branches=100 --lines=100 --functions=100 mocha tests/lib/*.js tests/lib/**/*.js","build":"npx tsc","eslint":"npx eslint .","markdownlint":"npx markdownlint-cli *.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d07c58e2-a177-45f3-935d-ebe7c881c97b"}},"overrides":{"eslint":"^10.0.0"},"repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.6.2","description":"The native ESLint 9/10 header plugin. A zero-bloat, drop-in replacement for 'eslint-plugin-header' with first-class Flat Config & TypeScript support. Auto-fix Copyright, License, and banner comments in JavaScrip and TypeScript files.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","mocha":"^12.0.0-beta-9","eslint":"^10.0.0","@eslint/js":"^10.0.1","testdouble":"^3.20.2","typescript":"^5.9.3","@types/node":"^25.2.3","eslint-plugin-n":"^17.23.2","@eslint/eslintrc":"^3.3.3","@eslint/markdown":"^7.5.1","markdownlint-cli":"^0.47.0","typescript-eslint":"^8.56.0","eslint-plugin-jsdoc":"^62.5.4","@stylistic/eslint-plugin":"^5.8.0","eslint-plugin-eslint-plugin":"^7.3.0"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.2.2_1771452366748_0.25687370386832864","host":"s3://npm-registry-packages-npm-production"}},"3.2.3":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.2.3","keywords":["eslint","eslint-plugin","eslint9","flat-config","header","copyright","license","banner","notice","license-header","copyright-header","legal","gdpr","source-header","typescript","react","check","fix"],"author":{"name":"Tony Ganchev"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.2.3","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Josh Kelley"},{"name":"Stuart Knightley"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"8a117e1543ea58bb1a2f39374711329d9e796b93","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.2.3.tgz","fileCount":22,"integrity":"sha512-PQv+xcFwbCxJfK0MlzWDhyxI/gvX1MTKe026bCli/EHEnsQJPcZd5WOFCMydbxAzrrtKRG5+zceQ9d542jVSHA==","signatures":[{"sig":"MEQCIDbf0sCOdEYi0gsRCzc3YoVnbbKT+ZnAjV9Z3PZOTy8VAiB3h7Zz0Y4rBzYh28zLLoxWE2/gD80B4Tigc8fFrGyJEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tony.ganchev%2feslint-plugin-header@3.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":100299},"main":"index.js","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.js"}},"gitHead":"ea751f4c4155c27415ba117ba53cfdd5dea4da0d","scripts":{"e2e":"npm run build && npx mocha --timeout 60000 tests/e2e/*.js","lint":"npm run eslint && npm run markdownlint","test":"npm run lint && npm run unit && npm run e2e","unit":"npx nyc --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage=true --statements=100 --branches=100 --lines=100 --functions=100 mocha tests/lib/*.js tests/lib/**/*.js","build":"npx tsc","eslint":"npx eslint .","markdownlint":"npx markdownlint-cli *.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d07c58e2-a177-45f3-935d-ebe7c881c97b"}},"overrides":{"eslint":"^10.0.0"},"repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.6.2","description":"The native ESLint 9/10 header plugin. A zero-bloat, drop-in replacement for 'eslint-plugin-header' with first-class Flat Config & TypeScript support. Auto-fix Copyright, License, and banner comments in JavaScrip and TypeScript files.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","mocha":"^12.0.0-beta-9","eslint":"^10.0.0","@eslint/js":"^10.0.1","testdouble":"^3.20.2","typescript":"^5.9.3","@types/node":"^25.2.3","eslint-plugin-n":"^17.23.2","@eslint/eslintrc":"^3.3.3","@eslint/markdown":"^7.5.1","markdownlint-cli":"^0.47.0","typescript-eslint":"^8.56.0","eslint-plugin-jsdoc":"^62.5.4","@stylistic/eslint-plugin":"^5.8.0","eslint-plugin-eslint-plugin":"^7.3.0"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.2.3_1771532074425_0.9336396660883448","host":"s3://npm-registry-packages-npm-production"}},"3.2.4":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.2.4","keywords":["eslint","eslint-plugin","eslint9","flat-config","header","copyright","license","banner","notice","license-header","copyright-header","legal","gdpr","source-header","typescript","react","check","fix"],"author":{"name":"Tony Ganchev"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.2.4","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Josh Kelley"},{"name":"Stuart Knightley"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"cb955070b92dda8d05b008cee01c982a0e007d47","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.2.4.tgz","fileCount":23,"integrity":"sha512-zqMKTW/KQmqKGINkhwEPoJFcJ0ewUkUAmvzHLB5N+n/6bsk7D/xkQ50VhUakG2P4JHHtqsncaXrPxgSeuBPmOw==","signatures":[{"sig":"MEUCIBz69miY+t32ROE7a2/zcOwN2xC2LZg5A1am+QS5B1ApAiEAx3lqzhuzQCTZhrvFhz4MVhIJvdXUS278fsFW/aUMuOs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tony.ganchev%2feslint-plugin-header@3.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":104019},"main":"index.js","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.js"}},"gitHead":"edf06815ccd38fc5df435dae15a63141877a5783","scripts":{"e2e":"npm run build && npx mocha --timeout 60000 tests/e2e/*.js","lint":"npm run eslint && npm run markdownlint","test":"npm run lint && npm run unit && npm run e2e","unit":"npx nyc --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage=true --statements=100 --branches=100 --lines=100 --functions=100 mocha tests/lib/*.js tests/lib/**/*.js","build":"npx tsc","eslint":"npx eslint .","markdownlint":"npx markdownlint-cli *.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d07c58e2-a177-45f3-935d-ebe7c881c97b"}},"overrides":{"eslint":"^10.0.0"},"repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.6.2","description":"The native ESLint 9/10 header plugin. A zero-bloat, drop-in replacement for 'eslint-plugin-header' with first-class Flat Config & TypeScript support. Auto-fix Copyright, License, and banner comments in JavaScrip and TypeScript files.","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","mocha":"^12.0.0-beta-9","eslint":"^10.0.0","@eslint/js":"^10.0.1","testdouble":"^3.20.2","typescript":"^5.9.3","@types/node":"^25.2.3","eslint-plugin-n":"^17.23.2","@eslint/eslintrc":"^3.3.3","@eslint/markdown":"^7.5.1","markdownlint-cli":"^0.47.0","typescript-eslint":"^8.56.0","eslint-plugin-jsdoc":"^62.5.4","@stylistic/eslint-plugin":"^5.8.0","eslint-plugin-eslint-plugin":"^7.3.0"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.2.4_1771584175803_0.26703596279865294","host":"s3://npm-registry-packages-npm-production"}},"3.2.5":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.2.5","keywords":["eslint","eslint-plugin","eslint9","flat-config","header","copyright","license","banner","notice","license-header","copyright-header","legal","gdpr","source-header","typescript","react","check","fix"],"author":{"name":"Tony Ganchev"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.2.5","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Josh Kelley"},{"name":"Stuart Knightley"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"bc93e3068bb72cbf9fbf70613b2f196d28d8c3ea","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.2.5.tgz","fileCount":23,"integrity":"sha512-Bj5xeyYMQqttfEsFvcFNW/BeegUCTvH9TLSXITBMQtTjQXUvkeLTGZSHAvtZCDyvKkb84pey/KcNiqVBpVYmNw==","signatures":[{"sig":"MEYCIQDIb04LW5AkW7MUiMZFpr2i7SUYgRbVoQDtm+TPwBnotgIhAIwcO1R35accb7fv/EGBsyyHlibk9Wbl8SA7f4ROAPTC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tony.ganchev%2feslint-plugin-header@3.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":108922},"main":"index.js","_from":"file:tony.ganchev-eslint-plugin-header-3.2.5.tgz","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.js"}},"scripts":{"e2e":"pnpm build && mocha --timeout 60000 tests/e2e/*.js","lint":"pnpm eslint && pnpm markdownlint","test":"pnpm lint && pnpm unit && pnpm e2e","unit":"c8 --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage --100 mocha tests/lib/*.js tests/lib/**/*.js","build":"tsc","eslint":"eslint .","markdownlint":"markdownlint *.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d07c58e2-a177-45f3-935d-ebe7c881c97b"}},"_resolved":"/tmp/efdab94f993e8be9394874c98101113c/tony.ganchev-eslint-plugin-header-3.2.5.tgz","_integrity":"sha512-Bj5xeyYMQqttfEsFvcFNW/BeegUCTvH9TLSXITBMQtTjQXUvkeLTGZSHAvtZCDyvKkb84pey/KcNiqVBpVYmNw==","repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.9.0","description":"The native ESLint 9/10 header plugin. A zero-bloat, drop-in replacement for 'eslint-plugin-header' with first-class Flat Config & TypeScript support. Auto-fix Copyright, License, and banner comments in JavaScrip and TypeScript files.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","mocha":"12.0.0-beta-9","eslint":"^10.0.2","globals":"^17.3.0","@eslint/js":"^10.0.1","testdouble":"^3.20.2","typescript":"^5.9.3","@types/node":"^25.3.0","@types/estree":"^1.0.8","eslint-plugin-n":"^17.24.0","@eslint/markdown":"^7.5.1","markdownlint-cli":"^0.47.0","typescript-eslint":"^8.56.1","@types/json-schema":"^7.0.15","eslint-plugin-jsdoc":"^62.7.1","@stylistic/eslint-plugin":"^5.9.0","eslint-plugin-eslint-plugin":"^7.3.1"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.2.5_1772874637804_0.20000919990213206","host":"s3://npm-registry-packages-npm-production"}},"3.2.6":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.2.6","keywords":["eslint","eslint-plugin","eslint9","flat-config","header","copyright","license","banner","notice","license-header","copyright-header","legal","gdpr","source-header","typescript","react","check","fix"],"author":{"name":"Tony Ganchev"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.2.6","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Josh Kelley"},{"name":"Stuart Knightley"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"a1b8b7ad1332488dcf858fd8b21d39053398e32e","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.2.6.tgz","fileCount":23,"integrity":"sha512-eplJG8O2L2sb6UWEy2G+34KckrSNX/LNaKQcE6ADUmFJ1ywqBqpSoJRYILSehntjgxMdqMhC7y6OZAt93q++xg==","signatures":[{"sig":"MEQCIA0prX7myzsHo9We/g5c3GFubWdYvSzf21+mnHLuJRa7AiAVtxpUxwXGlPbQZbzx4j5bAevmA3PIVimJ7ya/YzQZQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tony.ganchev%2feslint-plugin-header@3.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":101430},"main":"index.js","_from":"file:tony.ganchev-eslint-plugin-header-3.2.6.tgz","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.js"}},"scripts":{"e2e":"pnpm build && mocha --timeout 60000 tests/e2e/*.js","lint":"pnpm eslint && pnpm markdownlint","test":"pnpm lint && pnpm unit && pnpm e2e","unit":"c8 --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage --100 mocha tests/lib/*.js tests/lib/**/*.js","build":"tsc","eslint":"eslint .","markdownlint":"markdownlint *.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d07c58e2-a177-45f3-935d-ebe7c881c97b"}},"_resolved":"/tmp/e911e92753e19a02fffba9dc5bff118a/tony.ganchev-eslint-plugin-header-3.2.6.tgz","_integrity":"sha512-eplJG8O2L2sb6UWEy2G+34KckrSNX/LNaKQcE6ADUmFJ1ywqBqpSoJRYILSehntjgxMdqMhC7y6OZAt93q++xg==","repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.9.0","description":"The native ESLint 9/10 header plugin. A zero-bloat, drop-in replacement for 'eslint-plugin-header' with first-class Flat Config & TypeScript support. Auto-fix Copyright, License, and banner comments in JavaScrip and TypeScript files.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","mocha":"12.0.0-beta-9","eslint":"^10.0.3","globals":"^17.4.0","@eslint/js":"^10.0.1","testdouble":"^3.20.2","typescript":"^5.9.3","@types/node":"^25.3.5","@eslint/core":"^1.1.1","@types/estree":"^1.0.8","eslint-plugin-n":"^17.24.0","@eslint/markdown":"^7.5.1","markdownlint-cli":"^0.48.0","typescript-eslint":"^8.56.1","@types/json-schema":"^7.0.15","eslint-plugin-jsdoc":"^62.7.1","@stylistic/eslint-plugin":"^5.10.0","eslint-plugin-eslint-plugin":"^7.3.2"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.2.6_1772967698877_0.46084522540655204","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.3.0","keywords":["eslint","eslint-plugin","eslint9","flat-config","header","copyright","license","banner","notice","license-header","copyright-header","legal","gdpr","source-header","typescript","react","check","fix"],"author":{"name":"Tony Ganchev"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.3.0","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Josh Kelley"},{"name":"Stuart Knightley"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"723ce34b15d8f19f822fdee23ead299c4339b2d8","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.3.0.tgz","fileCount":23,"integrity":"sha512-yWP5n7GXWU2NdOJuQtGSKiRm4i+YwqSjNqHMCOscnzHiv9rI7PIap7DiHz4E4ajWa0MdQICxnwKrk5isvZFcjw==","signatures":[{"sig":"MEQCIEABcUNnMeJ8lfVOi7sHJ4q2554HNHjExhUEitg0LFk0AiBOA7esZJ9HMz83IvLsNsZe/xMTD/ZdsN7OWigOGCxwVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tony.ganchev%2feslint-plugin-header@3.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":116788},"main":"index.js","_from":"file:tony.ganchev-eslint-plugin-header-3.3.0.tgz","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.js"}},"scripts":{"e2e":"pnpm build && mocha --timeout 60000 tests/e2e/*.js","lint":"pnpm eslint && pnpm markdownlint","test":"pnpm lint && pnpm unit && pnpm e2e","unit":"c8 --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage --100 mocha tests/lib/*.js tests/lib/**/*.js","build":"tsc","eslint":"eslint .","markdownlint":"markdownlint *.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d07c58e2-a177-45f3-935d-ebe7c881c97b"}},"_resolved":"/tmp/f806d47ea61537c802889d90537ed3cf/tony.ganchev-eslint-plugin-header-3.3.0.tgz","_integrity":"sha512-yWP5n7GXWU2NdOJuQtGSKiRm4i+YwqSjNqHMCOscnzHiv9rI7PIap7DiHz4E4ajWa0MdQICxnwKrk5isvZFcjw==","repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.9.0","description":"The native ESLint 9/10 header plugin. A zero-bloat, drop-in replacement for 'eslint-plugin-header' with first-class Flat Config & TypeScript support. Auto-fix Copyright, License, and banner comments in JavaScrip and TypeScript files.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","mocha":"12.0.0-beta-9","eslint":"^10.0.3","globals":"^17.4.0","@eslint/js":"^10.0.1","testdouble":"^3.20.2","typescript":"^5.9.3","@types/node":"^25.3.5","@eslint/core":"^1.1.1","@types/estree":"^1.0.8","eslint-plugin-n":"^17.24.0","@eslint/markdown":"^7.5.1","markdownlint-cli":"^0.48.0","typescript-eslint":"^8.56.1","@types/json-schema":"^7.0.15","eslint-plugin-jsdoc":"^62.7.1","@stylistic/eslint-plugin":"^5.10.0","eslint-plugin-eslint-plugin":"^7.3.2"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.3.0_1773132631830_0.3429757319607789","host":"s3://npm-registry-packages-npm-production"}},"3.3.1":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.3.1","keywords":["eslint","eslint-plugin","eslint9","flat-config","header","copyright","license","banner","notice","license-header","copyright-header","legal","gdpr","source-header","typescript","react","check","fix"],"author":{"name":"Tony Ganchev"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.3.1","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Josh Kelley"},{"name":"Stuart Knightley"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"6760e79ec90405722bd4a15fc60d3fc5afb33c1f","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.3.1.tgz","fileCount":23,"integrity":"sha512-/Fj0+DaXbBfrlXmd3wBZkB8TIwGT3N++y/oTYxRABK/gzNxjgcBjt63xBpuHCYIXmH1EwuALd6XS1fzNG4S0zg==","signatures":[{"sig":"MEQCIAkbmXC6M+ZJaIxo8eLOf8Qz/EezT3gtNGgpn4gQeqkqAiB69B9RcnXmbdzh9EEwdCNDx1nvjYEesbJCRv0RfdvV4A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tony.ganchev%2feslint-plugin-header@3.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":116843},"main":"index.js","_from":"file:tony.ganchev-eslint-plugin-header-3.3.1.tgz","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.js"}},"scripts":{"e2e":"pnpm build && mocha --timeout 60000 tests/e2e/*.js","lint":"pnpm eslint && pnpm markdownlint","test":"pnpm lint && pnpm unit && pnpm e2e","unit":"c8 --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage --100 mocha tests/lib/*.js tests/lib/**/*.js","build":"tsc","eslint":"eslint .","markdownlint":"markdownlint *.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d07c58e2-a177-45f3-935d-ebe7c881c97b"}},"_resolved":"/tmp/f32eea36b012615fbd56fba37d534509/tony.ganchev-eslint-plugin-header-3.3.1.tgz","_integrity":"sha512-/Fj0+DaXbBfrlXmd3wBZkB8TIwGT3N++y/oTYxRABK/gzNxjgcBjt63xBpuHCYIXmH1EwuALd6XS1fzNG4S0zg==","repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.9.0","description":"The native ESLint 9/10 header plugin. A zero-bloat, drop-in replacement for 'eslint-plugin-header' with first-class Flat Config & TypeScript support. Auto-fix Copyright, License, and banner comments in JavaScrip and TypeScript files.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","mocha":"12.0.0-beta-10","eslint":"^10.0.3","globals":"^17.4.0","@eslint/js":"^10.0.1","testdouble":"^3.20.2","typescript":"^5.9.3","@types/node":"^25.5.0","@eslint/core":"^1.1.1","@types/estree":"^1.0.8","eslint-plugin-n":"^17.24.0","@eslint/markdown":"^7.5.1","markdownlint-cli":"^0.48.0","typescript-eslint":"^8.57.0","@types/json-schema":"^7.0.15","eslint-plugin-jsdoc":"^62.8.0","@stylistic/eslint-plugin":"^5.10.0","eslint-plugin-eslint-plugin":"^7.3.2"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.3.1_1773470703349_0.685264407291521","host":"s3://npm-registry-packages-npm-production"}},"3.3.2":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.3.2","keywords":["eslint","eslint-plugin","eslint9","flat-config","header","copyright","license","banner","notice","license-header","copyright-header","legal","gdpr","source-header","typescript","react","check","fix"],"author":{"name":"Tony Ganchev"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.3.2","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Josh Kelley"},{"name":"Stuart Knightley"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"6c553c0d9c6a7c75024eb38e8b65caf421cfa81d","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.3.2.tgz","fileCount":23,"integrity":"sha512-qHtrmjLLeRxA/TWC6Izewbca7zrA2tTRRhw2Wh2TXKMFsUShQNmID8QgCKow92FCPQGVROiUNBIZcLVSwzY2sw==","signatures":[{"sig":"MEQCIAZJOLqbmOGfix6nLu02XwzB+WFqykOh1MZapsdElmnHAiBS+bYWPtLSBzqon5AUUHeNfjG5IhhE48K6XQAfbchZRg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tony.ganchev%2feslint-plugin-header@3.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":116893},"main":"index.js","_from":"file:tony.ganchev-eslint-plugin-header-3.3.2.tgz","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.js"}},"scripts":{"e2e":"pnpm build && mocha --timeout 60000 tests/e2e/*.js","lint":"pnpm eslint && pnpm markdownlint","test":"pnpm lint && pnpm unit && pnpm e2e","unit":"c8 --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage --100 mocha tests/lib/*.js tests/lib/**/*.js","build":"tsc","eslint":"eslint .","markdownlint":"markdownlint *.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d07c58e2-a177-45f3-935d-ebe7c881c97b"}},"_resolved":"/tmp/c76798958179bca2854dd909c5027203/tony.ganchev-eslint-plugin-header-3.3.2.tgz","_integrity":"sha512-qHtrmjLLeRxA/TWC6Izewbca7zrA2tTRRhw2Wh2TXKMFsUShQNmID8QgCKow92FCPQGVROiUNBIZcLVSwzY2sw==","repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.9.0","description":"The native ESLint 9/10 header plugin. A zero-bloat, drop-in replacement for 'eslint-plugin-header' with first-class Flat Config & TypeScript support. Auto-fix Copyright, License, and banner comments in JavaScrip and TypeScript files.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","mocha":"12.0.0-beta-10","eslint":"^10.0.3","globals":"^17.4.0","@eslint/js":"^10.0.1","testdouble":"^3.20.2","typescript":"^5.9.3","@types/node":"^25.5.0","@eslint/core":"^1.1.1","@types/estree":"^1.0.8","eslint-plugin-n":"^17.24.0","@eslint/markdown":"^7.5.1","markdownlint-cli":"^0.48.0","typescript-eslint":"^8.57.1","@types/json-schema":"^7.0.15","eslint-plugin-jsdoc":"^62.8.0","@stylistic/eslint-plugin":"^5.10.0","eslint-plugin-eslint-plugin":"^7.3.2"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.3.2_1773734794476_0.23825976878778388","host":"s3://npm-registry-packages-npm-production"}},"3.3.3":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.3.3","keywords":["eslint","eslint-plugin","eslint9","flat-config","header","copyright","license","banner","notice","license-header","copyright-header","legal","gdpr","source-header","typescript","react","check","fix"],"author":{"name":"Tony Ganchev"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.3.3","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Josh Kelley"},{"name":"Stuart Knightley"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"e4efaa08a8e32e99310620047e77ddce75442095","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.3.3.tgz","fileCount":23,"integrity":"sha512-neFWBw6lW5KbNDm9CUoYroczS9cxHY0+ulnRN5VMJW0hwoh/Y8XN3K17izVWY8TPLOIoDZQkr3fRkYmvCNUQEA==","signatures":[{"sig":"MEYCIQDwJvTKlg8GGwBuBNy04Dm23E3ibGdpxMcz8BheNNLz2AIhALyjBDgciw4e/c2yyZpV0xSnCGCnF72eT701PGL01lf1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tony.ganchev%2feslint-plugin-header@3.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117450},"main":"index.js","_from":"file:tony.ganchev-eslint-plugin-header-3.3.3.tgz","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.js"}},"scripts":{"e2e":"pnpm build && mocha --timeout 60000 tests/e2e/*.js","lint":"pnpm eslint && pnpm markdownlint","test":"pnpm lint && pnpm unit && pnpm e2e","unit":"c8 --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage --100 mocha tests/lib/*.js tests/lib/**/*.js","build":"tsc","eslint":"eslint .","markdownlint":"markdownlint *.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d07c58e2-a177-45f3-935d-ebe7c881c97b"}},"_resolved":"/tmp/20c778ace264d47c26d5040f38d8d2fe/tony.ganchev-eslint-plugin-header-3.3.3.tgz","_integrity":"sha512-neFWBw6lW5KbNDm9CUoYroczS9cxHY0+ulnRN5VMJW0hwoh/Y8XN3K17izVWY8TPLOIoDZQkr3fRkYmvCNUQEA==","repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.9.0","description":"The native ESLint 9/10 header plugin. A zero-bloat, drop-in replacement for 'eslint-plugin-header' with first-class Flat Config & TypeScript support. Auto-fix Copyright, License, and banner comments in JavaScrip and TypeScript files.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","mocha":"12.0.0-beta-10","eslint":"^10.0.3","globals":"^17.4.0","@eslint/js":"^10.0.1","testdouble":"^3.20.2","typescript":"^5.9.3","@types/node":"^25.5.0","@eslint/core":"^1.1.1","@types/estree":"^1.0.8","eslint-plugin-n":"^17.24.0","@eslint/markdown":"^7.5.1","markdownlint-cli":"^0.48.0","typescript-eslint":"^8.57.1","@types/json-schema":"^7.0.15","eslint-plugin-jsdoc":"^62.8.0","@stylistic/eslint-plugin":"^5.10.0","eslint-plugin-eslint-plugin":"^7.3.2"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.3.3_1773751709534_0.07480002862217061","host":"s3://npm-registry-packages-npm-production"}},"3.3.4":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.3.4","keywords":["autofix","auto-fix","banner","check","copyright","copyright-header","eslint","eslintplugin","eslint-plugin","eslint9","eslint10","fix","flat-config","header","license","license-header","linter","legal","notice","oxlint","oxc","react","source-header","typescript"],"author":{"name":"Tony Ganchev"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.3.4","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Josh Kelley"},{"name":"Stuart Knightley"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"1c050803c28cb1416e69753bc73f6752487748e1","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.3.4.tgz","fileCount":23,"integrity":"sha512-w6RqKLUO4Bvi8pdFJnNUl1o5bux3/i9ZaC+TIY593d+ad15InN8qe9rpqnzyL7Guk9i/vIc4ztlyw9todgKGPw==","signatures":[{"sig":"MEUCIQChzY9sX6okoxHRPeiBRIwXC6lEvYsfp7PO8DYkbKPTJgIgRj+rVs9RSwNa50xbv8OnnkUbjDYK53Fu/3TqBvW4ciQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tony.ganchev%2feslint-plugin-header@3.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":121122},"main":"index.js","_from":"file:tony.ganchev-eslint-plugin-header-3.3.4.tgz","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.js"}},"scripts":{"e2e":"pnpm build && mocha --timeout 60000 tests/e2e/*.js","lint":"pnpm eslint && pnpm markdownlint","test":"pnpm lint && pnpm unit && pnpm e2e","unit":"c8 --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage --100 mocha tests/lib/*.js tests/lib/**/*.js","build":"tsc","eslint":"eslint .","markdownlint":"markdownlint *.md docs/**/*.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d07c58e2-a177-45f3-935d-ebe7c881c97b"}},"_resolved":"/tmp/06a70d4c2614af34704d182d95507d8d/tony.ganchev-eslint-plugin-header-3.3.4.tgz","_integrity":"sha512-w6RqKLUO4Bvi8pdFJnNUl1o5bux3/i9ZaC+TIY593d+ad15InN8qe9rpqnzyL7Guk9i/vIc4ztlyw9todgKGPw==","repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.9.0","description":"The native ESLint 9/10 header plugin. A zero-bloat, drop-in replacement for 'eslint-plugin-header' with first-class Flat Config & TypeScript support. Auto-fix Copyright, License, and banner comments in JavaScrip and TypeScript files. Supports oxlint.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","mocha":"12.0.0-beta-10","eslint":"^10.1.0","globals":"^17.4.0","@eslint/js":"^10.0.1","testdouble":"^3.20.2","typescript":"^5.9.3","@types/node":"^25.5.0","@eslint/core":"^1.1.1","@types/estree":"^1.0.8","eslint-plugin-n":"^17.24.0","@eslint/markdown":"^7.5.1","markdownlint-cli":"^0.48.0","typescript-eslint":"^8.57.2","@types/json-schema":"^7.0.15","eslint-plugin-jsdoc":"^62.8.1","@stylistic/eslint-plugin":"^5.10.0","eslint-plugin-eslint-plugin":"^7.3.2"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.3.4_1774819737266_0.05716647526211838","host":"s3://npm-registry-packages-npm-production"}},"3.4.0":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.4.0","keywords":["autofix","auto-fix","banner","check","copyright","copyright-header","css","eslint","eslint9","eslint10","eslintcss","eslintplugin","eslintscss","eslint-css","eslint-plugin","eslint-scss","fix","flat-config","header","html","license","license-header","linter","legal","markdown","md","notice","oxlint","oxc","react","source-header","typescript"],"author":{"name":"Tony Ganchev"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.4.0","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Josh Kelley"},{"name":"Stuart Knightley"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"36cbaad98a635f5a93cc702d0def240c608d79eb","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.4.0.tgz","fileCount":23,"integrity":"sha512-z97bYaWZBVmT1apmIMpPTUzade5x5bp2JipGl6NO8U+YkoYwPJaPttR4/ILhOTCfeOt7hQv5l/PMi27f+VZmaA==","signatures":[{"sig":"MEUCIQCc/EnbMt56uILWT+vrCyk9JaZFxloukrUamu8kq97SKwIgHpPXgey5MljeKyIk3bnEUPs4PDwtdrtwPHShZGXi5w4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tony.ganchev%2feslint-plugin-header@3.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":133959},"main":"index.js","_from":"file:tony.ganchev-eslint-plugin-header-3.4.0.tgz","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.js"}},"scripts":{"e2e":"pnpm build && mocha --timeout 60000 tests/e2e/*.js","lint":"pnpm eslint && pnpm markdownlint","test":"pnpm lint && pnpm unit && pnpm e2e","unit":"c8 --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage --100 mocha tests/lib/*.js tests/lib/**/*.js","build":"tsc","eslint":"eslint .","markdownlint":"markdownlint *.md docs/**/*.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d07c58e2-a177-45f3-935d-ebe7c881c97b"}},"_resolved":"/tmp/2f423d8dc179c519caf1a15af98c7a52/tony.ganchev-eslint-plugin-header-3.4.0.tgz","_integrity":"sha512-z97bYaWZBVmT1apmIMpPTUzade5x5bp2JipGl6NO8U+YkoYwPJaPttR4/ILhOTCfeOt7hQv5l/PMi27f+VZmaA==","repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.11.0","description":"The native ESLint 9/10 header plugin. A zero-bloat, drop-in replacement for 'eslint-plugin-header' with first-class Flat Config & TypeScript support. Auto-fix Copyright, License, and banner comments in JavaScrip, TypeScript, CSS, HTML, and Markdown files.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","mocha":"12.0.0-beta-10","eslint":"^10.1.0","globals":"^17.4.0","@eslint/js":"^10.0.1","testdouble":"^3.20.2","typescript":"^5.9.3","@eslint/css":"^1.1.0","@types/node":"^25.5.2","@eslint/core":"^1.2.0","@types/estree":"^1.0.8","eslint-plugin-n":"^17.24.0","@eslint/markdown":"^7.5.1","markdownlint-cli":"^0.48.0","typescript-eslint":"^8.58.0","@types/json-schema":"^7.0.15","eslint-plugin-jsdoc":"^62.9.0","@stylistic/eslint-plugin":"^5.10.0","@html-eslint/eslint-plugin":"^0.58.1","eslint-plugin-eslint-plugin":"^7.3.2"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.4.0_1775249774918_0.6664654209008398","host":"s3://npm-registry-packages-npm-production"}},"3.4.1":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.4.1","keywords":["autofix","auto-fix","banner","check","copyright","copyright-header","css","eslint","eslint9","eslint10","eslintcss","eslintplugin","eslintscss","eslint-css","eslint-plugin","eslint-scss","fix","flat-config","header","html","license","license-header","linter","legal","markdown","md","notice","oxlint","oxc","react","source-header","typescript","vue","vuejs","vue-js"],"author":{"name":"Tony Ganchev"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.4.1","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Josh Kelley"},{"name":"Stuart Knightley"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"346916a8307f4e66c62c4e5c2c1a5eb96110d039","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.4.1.tgz","fileCount":23,"integrity":"sha512-kGMuFxtM0GOymuW0x09vNQiYfX4P8T8366+KTrhmd5koSRu0JuUe3dA6NFj6tjHh0UhFMEEAuOVVUYBuSqjgLQ==","signatures":[{"sig":"MEYCIQCLc/OEeDF3+KOpBEc47qHIVcLpqTk+uutEGdcGlERe+gIhALRYQivDhhRY97zYF1BlbhuE24E+OYEZZnEQmvCOREJT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tony.ganchev%2feslint-plugin-header@3.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":137045},"main":"index.js","_from":"file:tony.ganchev-eslint-plugin-header-3.4.1.tgz","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.js"}},"scripts":{"e2e":"pnpm build && mocha --timeout 60000 tests/e2e/*.js","lint":"pnpm eslint && pnpm markdownlint","test":"pnpm lint && pnpm unit && pnpm e2e","unit":"c8 --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage --100 mocha tests/lib/*.js tests/lib/**/*.js","build":"tsc","eslint":"eslint .","markdownlint":"markdownlint *.md docs/**/*.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d07c58e2-a177-45f3-935d-ebe7c881c97b"}},"_resolved":"/tmp/05b60e64f21cd8e31584c0a401532e88/tony.ganchev-eslint-plugin-header-3.4.1.tgz","_integrity":"sha512-kGMuFxtM0GOymuW0x09vNQiYfX4P8T8366+KTrhmd5koSRu0JuUe3dA6NFj6tjHh0UhFMEEAuOVVUYBuSqjgLQ==","repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.11.0","description":"The native ESLint 9/10 header plugin. A zero-bloat, drop-in replacement for 'eslint-plugin-header' with first-class Flat Config & TypeScript support. Auto-fix Copyright, License, and banner comments in JavaScript, TypeScript, Vue, CSS, HTML, and Markdown ","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","mocha":"12.0.0-beta-10","eslint":"^10.1.0","globals":"^17.4.0","@eslint/js":"^10.0.1","testdouble":"^3.20.2","typescript":"^5.9.3","@eslint/css":"^1.1.0","@types/node":"^25.5.2","@eslint/core":"^1.2.0","@types/estree":"^1.0.8","eslint-plugin-n":"^17.24.0","@eslint/markdown":"^7.5.1","markdownlint-cli":"^0.48.0","eslint-plugin-vue":"^10.8.0","typescript-eslint":"^8.58.0","vue-eslint-parser":"^10.4.0","@types/json-schema":"^7.0.15","eslint-plugin-jsdoc":"^62.9.0","@stylistic/eslint-plugin":"^5.10.0","@html-eslint/eslint-plugin":"^0.58.1","eslint-plugin-eslint-plugin":"^7.3.2"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.4.1_1775299101659_0.5036254457587046","host":"s3://npm-registry-packages-npm-production"}},"3.4.2":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.4.2","keywords":["autofix","auto-fix","banner","check","copyright","copyright-header","css","eslint","eslint9","eslint10","eslintcss","eslintplugin","eslintscss","eslint-css","eslint-plugin","eslint-scss","fix","flat-config","header","html","license","license-header","linter","legal","markdown","md","notice","oxlint","oxc","react","source-header","svelte","sveltejs","svelte-js","typescript","vue","vuejs","vue-js"],"author":{"name":"Tony Ganchev"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.4.2","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Josh Kelley"},{"name":"Stuart Knightley"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"89b6851a5d4f01b95e37eacb0c3333b652e9fea9","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.4.2.tgz","fileCount":23,"integrity":"sha512-73zsXYsW/wRtKlAA6HQVKxymJT1BYNqzNi+Ca6nDYQnuc/R9gYtXQvblH8rGfq/AE+pWcovGsF+speyItl+XMQ==","signatures":[{"sig":"MEUCICGEBzs8ds3r8HDIhBVHEflGNQV5E5xoQw0Tlusng5OYAiEA21oNHQj4syAy3JeyZsCNSg+KbbimgrH92QSYCOc9Jhg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tony.ganchev%2feslint-plugin-header@3.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":139569},"main":"index.js","_from":"file:tony.ganchev-eslint-plugin-header-3.4.2.tgz","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.js"}},"scripts":{"e2e":"pnpm build && mocha --timeout 60000 tests/e2e/*.js","lint":"pnpm eslint && pnpm markdownlint","test":"pnpm lint && pnpm unit && pnpm e2e","unit":"c8 --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage --100 mocha tests/lib/*.js tests/lib/**/*.js","build":"tsc","eslint":"eslint .","markdownlint":"markdownlint *.md docs/**/*.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d07c58e2-a177-45f3-935d-ebe7c881c97b"}},"_resolved":"/tmp/ae22ec19ac5d2d809b94bc50c43f6b12/tony.ganchev-eslint-plugin-header-3.4.2.tgz","_integrity":"sha512-73zsXYsW/wRtKlAA6HQVKxymJT1BYNqzNi+Ca6nDYQnuc/R9gYtXQvblH8rGfq/AE+pWcovGsF+speyItl+XMQ==","repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.11.0","description":"The native ESLint 9/10 header plugin. A zero-bloat, drop-in replacement for 'eslint-plugin-header' with first-class Flat Config & TypeScript support. Auto-fix Copyright, License, and banner comments in JavaScript, TypeScript, Vue, Svelte, CSS, HTML, and M","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","mocha":"12.0.0-beta-10","eslint":"^10.1.0","globals":"^17.4.0","@eslint/js":"^10.0.1","testdouble":"^3.20.2","typescript":"^5.9.3","@eslint/css":"^1.1.0","@types/node":"^25.5.2","@eslint/core":"^1.2.0","@types/estree":"^1.0.8","eslint-plugin-n":"^17.24.0","@eslint/markdown":"^7.5.1","markdownlint-cli":"^0.48.0","eslint-plugin-vue":"^10.8.0","typescript-eslint":"^8.58.0","vue-eslint-parser":"^10.4.0","@types/json-schema":"^7.0.15","eslint-plugin-jsdoc":"^62.9.0","eslint-plugin-svelte":"^3.17.0","svelte-eslint-parser":"^1.6.0","@stylistic/eslint-plugin":"^5.10.0","@html-eslint/eslint-plugin":"^0.58.1","eslint-plugin-eslint-plugin":"^7.3.2"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.4.2_1775373565748_0.18540975819018524","host":"s3://npm-registry-packages-npm-production"}},"3.4.3":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.4.3","keywords":["autofix","auto-fix","banner","check","copyright","copyright-header","css","eslint","eslint9","eslint10","eslintcss","eslintplugin","eslintscss","eslint-css","eslint-plugin","eslint-scss","fix","flat-config","header","html","license","license-header","linter","legal","markdown","md","notice","oxlint","oxc","react","source-header","svelte","sveltejs","svelte-js","typescript","vue","vuejs","vue-js","yaml","yml"],"author":{"name":"Tony Ganchev"},"license":"MIT","_id":"@tony.ganchev/eslint-plugin-header@3.4.3","maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Josh Kelley"},{"name":"Stuart Knightley"}],"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"dist":{"shasum":"7512ddca86d5216367db90c07273d1f8c745b41b","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.4.3.tgz","fileCount":23,"integrity":"sha512-C8oGfJNGGcYl3y55JRS6Sfr9pAtjXyVN4qJllr5g3g6wrDkxcPMQ0654FsZtnQJTXA4swcwtR1cUhCBvW0WDKA==","signatures":[{"sig":"MEYCIQDlvi+aFJxzTp3Wu7G7kTXP65e+I9Opf0bKMdWVAoIHRwIhAOdaYOB2mz6rpFN04UGSFf2k0kNkNDHBcP1nQeeMmJ8G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tony.ganchev%2feslint-plugin-header@3.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":142801},"main":"index.js","_from":"file:tony.ganchev-eslint-plugin-header-3.4.3.tgz","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.js"}},"scripts":{"e2e":"pnpm build && mocha --timeout 60000 tests/e2e/*.js","lint":"pnpm eslint && pnpm markdownlint","test":"pnpm lint && pnpm unit && pnpm e2e","unit":"c8 --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage --100 mocha tests/lib/*.js tests/lib/**/*.js","build":"tsc","eslint":"eslint .","markdownlint":"markdownlint *.md docs/**/*.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d07c58e2-a177-45f3-935d-ebe7c881c97b"}},"_resolved":"/tmp/8191a2adf4366edb06083690c084c1a2/tony.ganchev-eslint-plugin-header-3.4.3.tgz","_integrity":"sha512-C8oGfJNGGcYl3y55JRS6Sfr9pAtjXyVN4qJllr5g3g6wrDkxcPMQ0654FsZtnQJTXA4swcwtR1cUhCBvW0WDKA==","repository":{"url":"git+https://github.com/tonyganchev/eslint-plugin-header.git","type":"git"},"_npmVersion":"11.11.0","description":"The native ESLint 9/10 header plugin. A zero-bloat, drop-in replacement for 'eslint-plugin-header' with first-class Flat Config & TypeScript support. Auto-fix Copyright, License, and banner comments in JavaScript, TypeScript, Vue, Svelte, CSS, HTML, YAML,","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","mocha":"12.0.0-beta-10","eslint":"^10.2.0","globals":"^17.4.0","@eslint/js":"^10.0.1","testdouble":"^3.20.2","typescript":"^6.0.2","@eslint/css":"^1.1.0","@types/node":"^25.5.2","@eslint/core":"^1.2.0","@types/estree":"^1.0.8","eslint-plugin-n":"^17.24.0","@eslint/markdown":"^8.0.1","markdownlint-cli":"^0.48.0","eslint-plugin-vue":"^10.8.0","eslint-plugin-yml":"^3.3.1","typescript-eslint":"^8.58.0","vue-eslint-parser":"^10.4.0","@types/json-schema":"^7.0.15","eslint-plugin-jsdoc":"^62.9.0","eslint-plugin-svelte":"^3.17.0","svelte-eslint-parser":"^1.6.0","@stylistic/eslint-plugin":"^5.10.0","@html-eslint/eslint-plugin":"^0.58.1","eslint-plugin-eslint-plugin":"^7.3.2"},"peerDependencies":{"eslint":">=7.7.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin-header_3.4.3_1775390127432_0.543855546484481","host":"s3://npm-registry-packages-npm-production"}},"3.4.4":{"name":"@tony.ganchev/eslint-plugin-header","version":"3.4.4","description":"The native ESLint 9/10 header plugin. A zero-bloat, drop-in replacement for 'eslint-plugin-header' with first-class Flat Config & TypeScript support. Auto-fix Copyright, License, and banner comments in JavaScript, TypeScript, Vue, Svelte, CSS, HTML, YAML,","main":"index.js","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js","require":"./index.js"}},"devDependencies":{"@eslint/css":"^1.1.0","@eslint/js":"^10.0.1","@eslint/markdown":"^8.0.1","@html-eslint/eslint-plugin":"^0.59.0","@stylistic/eslint-plugin":"^5.10.0","@types/estree":"^1.0.8","@types/json-schema":"^7.0.15","@types/node":"^25.6.0","c8":"^11.0.0","eslint":"^10.2.1","eslint-plugin-eslint-plugin":"^7.3.2","eslint-plugin-jsdoc":"^62.9.0","eslint-plugin-n":"^17.24.0","eslint-plugin-svelte":"^3.17.1","eslint-plugin-vue":"^10.9.0","eslint-plugin-yml":"^3.3.1","globals":"^17.5.0","markdownlint-cli":"^0.48.0","mocha":"12.0.0-beta-10","svelte-eslint-parser":"^1.6.0","testdouble":"^3.20.2","typescript":"^6.0.3","typescript-eslint":"^8.59.0","vue-eslint-parser":"^10.4.0"},"peerDependencies":{"eslint":">=7.7.0"},"keywords":["autofix","auto-fix","banner","check","copyright","copyright-header","css","eslint","eslint9","eslint10","eslintcss","eslintplugin","eslintscss","eslint-css","eslint-plugin","eslint-scss","fix","flat-config","header","html","license","license-header","linter","legal","markdown","md","notice","oxlint","oxc","react","source-header","svelte","sveltejs","svelte-js","typescript","vue","vuejs","vue-js","yaml","yml"],"repository":{"type":"git","url":"git+https://github.com/tonyganchev/eslint-plugin-header.git"},"homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"license":"MIT","author":{"name":"Tony Ganchev"},"maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"contributors":[{"name":"Josh Kelley"},{"name":"Stuart Knightley"}],"scripts":{"build":"tsc","e2e":"pnpm build && mocha --timeout 60000 tests/e2e/*.js","eslint":"eslint .","lint":"pnpm eslint && pnpm markdownlint","markdownlint":"markdownlint *.md docs/**/*.md","test":"pnpm lint && pnpm unit && pnpm e2e","unit":"c8 --reporter=html --reporter=text --reporter=text-summary --reporter=lcov --check-coverage --100 mocha tests/lib/*.js tests/lib/**/*.js"},"_id":"@tony.ganchev/eslint-plugin-header@3.4.4","_integrity":"sha512-O3PDvjikVWECu078bLdRb2HwjVgR+wa7D0GX8gN1A8axlgEc7tordHOoEYcKRVxGcAw7bxXjwiKGXaY17qXD+Q==","_resolved":"/tmp/9cf91ca75b69ef57af44d15f958e701d/tony.ganchev-eslint-plugin-header-3.4.4.tgz","_from":"file:tony.ganchev-eslint-plugin-header-3.4.4.tgz","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-O3PDvjikVWECu078bLdRb2HwjVgR+wa7D0GX8gN1A8axlgEc7tordHOoEYcKRVxGcAw7bxXjwiKGXaY17qXD+Q==","shasum":"7cda6401851b801d5d7b02bbdf82a15e5174a08a","tarball":"https://registry.npmjs.org/@tony.ganchev/eslint-plugin-header/-/eslint-plugin-header-3.4.4.tgz","fileCount":23,"unpackedSize":143236,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tony.ganchev%2feslint-plugin-header@3.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFFCLk8gu6wEMeB1s5jppMgc5a5Xg3meXR21O7A3BjHyAiBxYLwHruo6+bGlY/ffnt9KDCxR1qzRsZR4IvUCHuBJgQ=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d07c58e2-a177-45f3-935d-ebe7c881c97b"}},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-plugin-header_3.4.4_1776951575445_0.3629728713207203"},"_hasShrinkwrap":false}},"time":{"created":"2024-07-09T12:26:33.714Z","modified":"2026-04-23T13:39:35.895Z","3.1.1":"2024-07-09T12:26:33.994Z","3.1.2":"2024-07-09T12:26:55.416Z","3.1.3":"2025-06-20T20:02:46.307Z","3.1.4":"2025-10-07T13:38:22.165Z","3.1.5":"2025-10-09T12:36:41.608Z","3.1.6":"2025-10-12T11:49:33.695Z","3.1.7":"2025-10-23T08:27:51.564Z","3.1.8":"2025-10-23T09:34:02.506Z","3.1.9":"2025-11-09T09:49:58.737Z","3.1.10":"2025-11-10T21:09:42.215Z","3.1.11":"2025-11-13T08:44:24.910Z","3.1.12":"2026-01-19T06:57:22.932Z","3.2.0":"2026-01-19T16:15:44.801Z","3.1.13":"2026-02-05T20:52:10.225Z","3.2.1":"2026-02-05T21:02:26.420Z","3.2.2":"2026-02-18T22:06:06.912Z","3.2.3":"2026-02-19T20:14:34.580Z","3.2.4":"2026-02-20T10:42:55.951Z","3.2.5":"2026-03-07T09:10:37.952Z","3.2.6":"2026-03-08T11:01:39.018Z","3.3.0":"2026-03-10T08:50:31.975Z","3.3.1":"2026-03-14T06:45:03.520Z","3.3.2":"2026-03-17T08:06:34.657Z","3.3.3":"2026-03-17T12:48:29.684Z","3.3.4":"2026-03-29T21:28:57.390Z","3.4.0":"2026-04-03T20:56:15.070Z","3.4.1":"2026-04-04T10:38:21.843Z","3.4.2":"2026-04-05T07:19:25.915Z","3.4.3":"2026-04-05T11:55:27.573Z","3.4.4":"2026-04-23T13:39:35.619Z"},"bugs":{"url":"https://github.com/tonyganchev/eslint-plugin-header/issues"},"author":{"name":"Tony Ganchev"},"license":"MIT","homepage":"https://github.com/tonyganchev/eslint-plugin-header#readme","keywords":["autofix","auto-fix","banner","check","copyright","copyright-header","css","eslint","eslint9","eslint10","eslintcss","eslintplugin","eslintscss","eslint-css","eslint-plugin","eslint-scss","fix","flat-config","header","html","license","license-header","linter","legal","markdown","md","notice","oxlint","oxc","react","source-header","svelte","sveltejs","svelte-js","typescript","vue","vuejs","vue-js","yaml","yml"],"repository":{"type":"git","url":"git+https://github.com/tonyganchev/eslint-plugin-header.git"},"description":"The native ESLint 9/10 header plugin. A zero-bloat, drop-in replacement for 'eslint-plugin-header' with first-class Flat Config & TypeScript support. Auto-fix Copyright, License, and banner comments in JavaScript, TypeScript, Vue, Svelte, CSS, HTML, YAML,","contributors":[{"name":"Josh Kelley"},{"name":"Stuart Knightley"}],"maintainers":[{"name":"tony.ganchev","email":"tony.ganchev@gmail.com"}],"readme":"# @tony.ganchev/eslint-plugin-header\n\n[![npm version](https://img.shields.io/npm/v/@tony.ganchev/eslint-plugin-header.svg)](https://www.npmjs.com/package/@tony.ganchev/eslint-plugin-header)\n[![Downloads/month](https://img.shields.io/npm/dm/@tony.ganchev/eslint-plugin-header.svg)](http://www.npmtrends.com/@tony.ganchev/eslint-plugin-header)\n[![Build Status](https://github.com/tonyganchev/eslint-plugin-header/actions/workflows/test.yml/badge.svg)](https://github.com/tonyganchev/eslint-plugin-header/actions/workflows/test.yml?query=branch%3Amain)\n\nThe native ESLint 9/10 standard header-validating plugin. A zero-bloat, drop-in\nreplacement for [eslint-plugin-header](https://github.com/Stuk/eslint-plugin-header)\nwith first-class Flat Config & TypeScript support. Auto-fix copyright, license,\nand banner comments in JavaScript, TypeScript, Vue, Svelte, CSS, HTML, YAML, and\nMarkdown files. Supports _oxlint_.\n\n## Table of Contents\n\n1. [Motivation and Acknowledgements](#motivation-and-acknowledgements)\n2. [Major Consumers](#major-consumers)\n3. [Compatibility](#compatibility)\n   1. [Runtimes](#runtimes)\n   2. [Configuration Formats](#configuration-formats)\n   3. [Languages](#languages)\n4. [Usage](#usage)\n   1. [File-based Configuration](#file-based-configuration)\n   2. [Inline Configuration](#inline-configuration)\n      1. [Header Contents Configuration](#header-contents-configuration)\n      2. [Providing To-year in Auto-fix](#providing-to-year-in-auto-fix)\n      3. [Trailing Empty Lines Configuration](#trailing-empty-lines-configuration)\n      4. [Line Endings](#line-endings)\n   3. [Support for Leading Comments](#support-for-leading-comments)\n      1. [Notes on Behavior](#notes-on-behavior)\n   4. [Examples](#examples)\n   5. [Linting CSS](#linting-css)\n   6. [Linting HTML](#linting-html)\n   7. [Linting Vue](#linting-vue)\n   8. [Linting Svelte](#linting-svelte)\n   9. [Linting Markdown](#linting-markdown)\n   10. [Linting YAML](#linting-yaml)\n5. [Comparison to Alternatives](#comparison-to-alternatives)\n   1. [Compared to eslint-plugin-headers](#compared-to-eslint-plugin-headers)\n      1. [Health Scans](#health-scans)\n   2. [Compared to eslint-plugin-license-header](#compared-to-eslint-plugin-license-header)\n   3. [Compared to eslint-plugin-notice](#compared-to-eslint-plugin-notice)\n6. [Versioning](#versioning)\n   1. [What is a Feature?](#what-is-a-feature)\n   2. [What is Backward-compatibility?](#what-is-backward-compatibility)\n7. [License](#license)\n\n## Motivation and Acknowledgements\n\nThe plugin started as a fork of [eslint-plugin-header](https://github.com/Stuk/eslint-plugin-header)\nto address missing ESLint 9 compatibility.\n\nToday it addresses the following issues:\n\n- Support for ESLint 9/10 with a fully-validated configuration schema.\n- Continued support for ESLint 7/8.\n- Complete Windows support.\n- New object-based configuration providing the bases for future enhancements.\n- Continued support for _eslint-plugin-header_ array configuration.\n- Bugfixes where the original project has not been updated for the three\n  years before the fork.\n- Fixes issues with she-bangs and empty lines before the header. See PR history\n  for more details.\n- Good error reporting and improved auto-fixes.\n- Complete drop-in-replacement compatibility with existing projects using\n  _eslint-plugin-header_.\n\nMultiple other projects took from where _eslint-plugin-header_ left off. A\ncomparison of the current project to these alternatives is available in a\ndedicated section.\n\n## Major Consumers\n\nThe plugin is used by hundreds of projects to enforce license compliance and\nconsistent header structures. Notable adopters include:\n\n[![Microsoft](https://github.com/microsoft.png?size=48)](./docs/consumers.md#microsoft)\n&nbsp;&nbsp;&nbsp;\n[![Microsoft Azure](https://github.com/azure.png?size=48)](./docs/consumers.md#azure)\n&nbsp;&nbsp;&nbsp;\n[![Salesforce](https://github.com/forcedotcom.png?size=48)](./docs/consumers.md#salesforce)\n&nbsp;&nbsp;&nbsp;\n[![Google](https://github.com/google.png?size=48)](./docs/consumers.md#google)\n&nbsp;&nbsp;&nbsp;\n[![Angular](https://github.com/angular.png?size=48)](./docs/consumers.md#angular)\n&nbsp;&nbsp;&nbsp;\n[![Broadcom](https://github.com/broadcom.png?size=48)](./docs/consumers.md#broadcom)\n&nbsp;&nbsp;&nbsp;\n[![VMware](https://github.com/vmware.png?size=48)](./docs/consumers.md#vmware)\n&nbsp;&nbsp;&nbsp;\n[![Amazon](https://github.com/aws.png?size=48)](./docs/consumers.md#amazon)\n&nbsp;&nbsp;&nbsp;\n[![Amazon Cloudscape Design System](https://github.com/cloudscape-design.png?size=48)](./docs/consumers.md#cloudscape-design-system)\n&nbsp;&nbsp;&nbsp;\n[![Eclipse GLSP](https://github.com/eclipse.png?size=48)](./docs/consumers.md#eclipse-foundation)\n&nbsp;&nbsp;&nbsp;\n[![Salto](https://github.com/salto-io.png?size=48)](./docs/consumers.md#salto)\n&nbsp;&nbsp;&nbsp;\n[![Dash0 OpenTelemetry JS Distribution](https://github.com/dash0hq.png?size=48)](./docs/consumers.md#dash0)\n&nbsp;&nbsp;&nbsp;\n[![IBM InspectorRAGet](https://github.com/ibm.png?size=48)](./docs/consumers.md#ibm)\n&nbsp;&nbsp;&nbsp;\n[![FlowCrypt Browser Extensions](https://github.com/flowcrypt.png?size=48)](./docs/consumers.md#flowcrypt)\n&nbsp;&nbsp;&nbsp;\n[![Frontify](https://github.com/Frontify.png?size=48)](./docs/consumers.md#frontify)\n&nbsp;&nbsp;&nbsp;\n[![Cratis](https://github.com/Cratis.png?size=48)](./docs/consumers.md#cratis)\n&nbsp;&nbsp;&nbsp;\n[![Mysten Labs](https://github.com/MystenLabs.png?size=48)](./docs/consumers.md#mysten-labs)\n&nbsp;&nbsp;&nbsp;\n[![Suwayomi](https://github.com/Suwayomi.png?size=48)](./docs/consumers.md#suwayomi)\n&nbsp;&nbsp;&nbsp;\n[![Wire Swiss GmbH](https://github.com/wireapp.png?size=48)](./docs/consumers.md#wire-swiss-gmbh)\n&nbsp;&nbsp;&nbsp;\n[![WPPConnect](https://github.com/wppconnect-team.png?size=48)](./docs/consumers.md#wppconnect)\n\nLearn more about how these organizations use the plugin on our\n[consumers list](./docs/consumers.md).\n\n## Compatibility\n\n### Runtimes\n\nThe plugin supports **ESLint 7 / 8 / 9 / 10**. Both **flat** config and legacy,\n**hierarchical** config can be used. We have a smoke-test running to confirm the\nplugin works with the latest version of ESLint. Certain features such as linting\ncopyright headers in CSS, HTML, or Markdown rely on APIs introduced with ESLint\n9 and cannot be used with older ESLint versions.\n\nThe plugin works with latest version of **oxlint** too. We have a smoke-test\nrunning to confirm the plugin works with the latest version of oxlint. Features\nrelying on the use of non-standard parsers such as linting headers in CSS, HTML,\nVue, or Markdown cannot be supported.\n\n### Configuration Formats\n\nThe plugin supports hierarchical and flat configuration format for ESLint as\nwell as the configuration format for oxlint.\n\nThe NPM package provides TypeScript type definitions and can be used with\nTypeScript-based ESLint flat configuration without the need for `@ts-ignore`\nstatements. Smoke tests cover this support as well.\n\n### Languages\n\nCurrently the plugin supports linting copyright headers in JavaScript,\nTypeScript and their JSX / TSX flavors; Vue, Svelte, CSS, HTML, YAML, and\nMarkdown files. As mentioned in the previous sections, not all languages are\nsupported for oxlint or ESLint older than 9. Refer to the table below for more\ndetails.\n\n| Language   | ESLint 7 / 8  | ESLint 9 / 10 | oxlint |\n|------------|---------------|---------------|--------|\n| JavaScript | ✅ Yes        | ✅ Yes        | ✅ Yes |\n| TypeScript | ✅ Yes        | ✅ Yes        | ✅ Yes |\n| JSX        | ✅ Yes        | ✅ Yes        | ✅ Yes |\n| TSX        | ✅ Yes        | ✅ Yes        | ✅ Yes |\n| Vue        | ✅ Yes        | ✅ Yes        | ❌ No  |\n| Svelte     | ✅ Yes        | ✅ Yes        | ❌ No  |\n| CSS        | ❌ No         | ✅ Yes        | ❌ No  |\n| HTML       | ❌ No         | ✅ Yes        | ❌ No  |\n| YAML       | ❌ No         | ✅ Yes        | ❌ No  |\n| Markdown   | ❌ No         | ✅ Yes        | ❌ No  |\n\n## Usage\n\nThe plugin and its _header_ rule goes through evolution of its configuration in\nthe 3.2.x release. We introduced a new single object-based configuration format\nthat is easier to evolve in the future to add more capabilities.\n\nThe legacy configuration format inherited from\n[eslint-plugin-header](https://github.com/Stuk/eslint-plugin-header) is still\nsupported and you can learn how to use it in a\n[dedicated document](legacy-config.md). For information on how to switch from\nthe legacy configuration format to the new style, follow our\n[migration guide](./docs/migrate-config.md). The current document from this\npoint on will cover only the new configuration format.\n\nThis _header_ rule takes a single object as configuration, after the severity\nlevel. At the very least, the object should contain a `header` field describing\nthe expected header to match in the source files.\n\nFor TypesScript-based flat ESLint configuration, two types are provided:\n\n- `HeaderRuleConfig` defines the overall rule configuration for the `header`\n  rule and includes severity level and supports both the modern object-based\n  configuration and the legacy array-based configuration.\n- `HeaderOptions` helper type that defines the structure of the configuration\n  object used in the modern configuration style that is used in this document.\n  It can be used to either simplify auto-completion since this type is not mixed\n  with a large number of named tuple types, or it can be used when the config\n  object is defined outside of the definition of a specific rule.\n\n### File-based Configuration\n\nIn this configuration mode, the header template is read from a file.\n\n_eslint.config.ts_:\n\n```ts\nimport header, {\n    HeaderOptions, HeaderRuleConfig\n} from \"@tony.ganchev/eslint-plugin-header\";\nimport { defineConfig } from \"eslint/config\";\n\nexport default defineConfig([\n    {\n        files: [\"**/*.js\"],\n        plugins: {\n            \"@tony.ganchev\": header\n        },\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        file: \"config/header.js\"\n                    }\n                } as HeaderOptions\n            ] as HeaderRuleConfig\n        }\n    }\n]);\n```\n\n_config/header.js_:\n\n```js\n// Copyright 2015\n// My company\n```\n\nDue to limitations in ESLint plugins, the file is read relative to the working\ndirectory that ESLint is executed in. If you run ESLint from elsewhere in your\ntree then the header file will not be found.\n\nThe equivalent configuration for _oxlint_ is:\n\n```json\n{\n    \"$schema\": \"./node_modules/oxlint/configuration_schema.json\",\n    \"overrides\": [\n        {\n            \"files\": [\n                \"**/*.js\"\n            ],\n            \"rules\": {\n                \"@tony.ganchev/header/header\": [\n                    \"error\",\n                    {\n                        \"header\": {\n                            \"file\": \"config/header.js\"\n                        }\n                    }\n                ]\n            },\n            \"jsPlugins\": [\n                \"@tony.ganchev/eslint-plugin-header\"\n            ]\n        }\n    ]\n}\n```\n\n### Inline Configuration\n\nIn this configuration mode, the matching rules for the header are given inline.\nThe `header` field should contain the following nested properties:\n\n- `commentType` which is either `\"block\"` or `\"line\"` to indicate what style\n  of comment should be used.\n- `line` which defines the lines of the header. It can be either a\n  single multiline string / regular expression with the full contents of the\n  header comment or an array with comment lines or regular expressions matching\n  each line. It can also include template replacement strings to enable ESLint's\n  auto-fix capabilities.\n\n#### Header Contents Configuration\n\nSuppose we want our header to look like this:\n\n```js\n/*\n * Copyright (c) 2015\n * My Company\n */\n```\n\nAll of the following configurations will match the header:\n\n- **Single string**:\n\n    ```ts\n    import header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\n    import { defineConfig } from \"eslint/config\";\n\n    export default defineConfig([\n        {\n            files: [\"**/*.js\"],\n            plugins: {\n                \"@tony.ganchev\": header\n            },\n            rules: {\n                \"@tony.ganchev/header\": [\n                    \"error\",\n                    {\n                        header: {\n                            commentType: \"block\",\n                            lines: [\"\\n * Copyright (c) 2015\\n * My Company\\n \"]\n                        }\n                    } as HeaderOptions\n                ]\n            }\n        }\n    ]);\n    ```\n\n    Equivalent configuration for _oxlint_:\n\n    ```json\n    {\n        \"$schema\": \"./node_modules/oxlint/configuration_schema.json\",\n        \"overrides\": [\n            {\n                \"files\": [\n                    \"**/*.js\"\n                ],\n                \"rules\": {\n                    \"@tony.ganchev/header/header\": [\n                        \"error\",\n                        {\n                            \"header\": {\n                                \"commentType\": \"block\",\n                                \"lines\": [\n                                    \"\\n * Copyright (c) 2015\\n * My Company\\n \"\n                                ]\n                            }\n                        }\n                    ]\n                },\n                \"jsPlugins\": [\n                    \"@tony.ganchev/eslint-plugin-header\"\n                ]\n            }\n        ]\n    }\n    ```\n\n    Note that the above would work for both Windows and POSIX systems even\n    though the EOL in the header content was specified as `\\n`.\n\n    Also, notice how we have an empty space before each line. This is because\n    the plugin only strips the leading `//` characters from a line comment.\n    Similarly, for a block comment, only the opening `/*` and closing `*/` will\n    be preserved with all new lines and whitespace preserved. Keep this in mind\n    as this can lead to poorly configured header matching rules that never\n    pass. In a future release error messages would be more detailed and show\n    exactly where header validation failed.\n\n- **Single regular expression**:\n\n    You can match the whole header with a regular expression. To do it, simply\n    pass a `RegExp` object in place of a string.\n\n    ```ts\n    import header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\n    import { defineConfig } from \"eslint/config\";\n\n    export default defineConfig([\n        {\n            files: [\"**/*.js\"],\n            plugins: {\n                \"@tony.ganchev\": header\n            },\n            rules: {\n                \"@tony.ganchev/header\": [\n                    \"error\",\n                    {\n                        header: {\n                            commentType: \"block\",\n                            lines: [\n                                /\\n \\* Copyright \\(c\\) 2015\\n \\* Company\\n /\n                            ]\n                        }\n                    } as HeaderOptions\n                ]\n            }\n        }\n    ]);\n    ```\n\n    If you still use hierarchical configuration, you can define the regular\n    expression as a string.\n\n    ```ts\n    import header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\n    import { defineConfig } from \"eslint/config\";\n\n    export default defineConfig([\n        {\n            files: [\"**/*.js\"],\n            plugins: {\n                \"@tony.ganchev\": header\n            },\n            rules: {\n                \"@tony.ganchev/header\": [\n                    \"error\",\n                    {\n                        header: {\n                            commentType: \"block\",\n                            lines: [\n                                { pattern: \"\\\\n \\\\* Copyright \\\\(c\\\\) 2015\"\n                                    + \"\\\\n \\\\* My Company\\\\n \"}\n                            ]\n                        }\n                    } as HeaderOptions\n                ]\n            }\n        }\n    ]);\n    ```\n\n    Notice the double escaping of the braces. Since these pattern strings into\n    `RegExp` objects, the backslashes need to be present in the string instead\n    of disappear as escape characters.\n\n    You can pass a `RegExp` object to the `pattern` field. This is necessary if\n    you want to add an aut-fix for the line as we will explain further in this\n    document.\n\n    ```ts\n    import header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\n    import { defineConfig } from \"eslint/config\";\n\n    export default defineConfig([\n        {\n            files: [\"**/*.js\"],\n            plugins: {\n                \"@tony.ganchev\": header\n            },\n            rules: {\n                \"@tony.ganchev/header\": [\n                    \"error\",\n                    {\n                        header: {\n                            commentType: \"block\",\n                            lines: [\n                                { pattern: /Copyright \\(c\\) 20\\d{2}/ }\n                            ]\n                        }\n                    } as HeaderOptions\n                ]\n            }\n        }\n    ]);\n    ```\n\n- **Array of strings**:\n\n    ```ts\n    import header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\n    import { defineConfig } from \"eslint/config\";\n\n    export default defineConfig([\n        {\n            files: [\"**/*.js\"],\n            plugins: {\n                \"@tony.ganchev\": header\n            },\n            rules: {\n                \"@tony.ganchev/header\": [\n                    \"error\",\n                    {\n                        header: {\n                            commentType: \"block\",\n                            lines: [\n                                \"\",\n                                \" * Copyright (c) 2015\",\n                                \" * My Company\",\n                                \" \"\n                            ]\n                        }\n                    } as HeaderOptions\n                ]\n            }\n        }\n    ]);\n    ```\n\n- **Array of strings and/or patterns**:\n\n    ```ts\n    import header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\n    import { defineConfig } from \"eslint/config\";\n\n    export default defineConfig([\n        {\n            files: [\"**/*.js\"],\n            plugins: {\n                \"@tony.ganchev\": header\n            },\n            rules: {\n                \"@tony.ganchev/header\": [\n                    \"error\",\n                    {\n                        header: {\n                            commentType: \"block\",\n                            lines: [\n                                \"\",\n                                / \\* Copyright \\(c\\) 2015/,\n                                \" * My Company\",\n                                \" \"\n                            ]\n                        }\n                    } as HeaderOptions\n                ]\n            }\n        }\n    ]);\n    ```\n\nRegular expressions allow for a number of improvements in the maintainability\nof the headers. Given the example above, what is clear is that new sources may\nhave been created later than 2015 and a comment with a different year should be\nperfectly valid, such as:\n\n```js\n/*\n * Copyright 2020\n * My company\n */\n```\n\nMoreover, suppose your legal department expects that the year of first and last\nchange be added except if all changes happen in the same year, we also need to\nsupport:\n\n```js\n/*\n * Copyright 2017-2022\n * My company\n */\n```\n\nWe can use a regular expression to support all of these cases for your header:\n\n```ts\nimport header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\nimport { defineConfig } from \"eslint/config\";\n\nexport default defineConfig([\n    {\n        files: [\"**/*.js\"],\n        plugins: {\n            \"@tony.ganchev\": header\n        },\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"block\",\n                        lines: [\n                            \"\",\n                            / \\* Copyright \\(c\\) (\\d{4}-)?\\d{4}/,\n                            \" * My Company\",\n                            \" \"\n                        ]\n                    }\n                } as HeaderOptions\n            ]\n        }\n    }\n]);\n```\n\nNote on auto-fixes i.e. `eslint --fix`: whenever strings are used to define the\nheader - counting in file-based configuration - the same strings would be used\nto replace a header comment that did not pass validation. This is not possible\nwith regular expressions. For regular expression pattern-objects, a second\nproperty `template` adds a replacement string.\n\n```ts\nimport header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\nimport { defineConfig } from \"eslint/config\";\n\nexport default defineConfig([\n    {\n        files: [\"**/*.js\"],\n        plugins: {\n            \"@tony.ganchev\": header\n        },\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"line\",\n                        lines: [\n                            {\n                                pattern: / Copyright \\(c\\) (\\d{4}-)?\\d{4}/,\n                                template: \" Copyright 2025\",\n                            },\n                            \" My Company\"\n                        ]\n                    }\n                } as HeaderOptions\n            ]\n        }\n    }\n]);\n```\n\nThere are a number of things to consider:\n\n- Templates need to be matched by the regular expression pattern or otherwise\n  an auto-fixed source would again fail linting. This needs to be validated\n  manually today as the plugin does not do it for you.\n- Templates are hardcoded strings therefore it may be better to hand-fix a bad\n  header in order not to lose the from- and to-years in the copyright notice.\n\n#### Providing To-year in Auto-fix\n\nA common request across similar plugins is to provide for `{year}` variable to\nnot change the ESLint configuration every year. While such special requests were\nrelevant to old JSON-based configuration, this can be handled with JavaScript in\nthe flat configuration format:\n\n```ts\nimport header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\nimport { defineConfig } from \"eslint/config\";\n\nexport default defineConfig([\n    {\n        files: [\"**/*.js\"],\n        plugins: {\n            \"@tony.ganchev\": header\n        },\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"line\",\n                        lines: [\n                            {\n                                pattern: / Copyright \\(c\\) (\\d{4}-)?\\d{4}/,\n                                template: ` Copyright ${new Date().getFullYear()}`,\n                            },\n                            \" My Company\"\n                        ]\n                    }\n                } as HeaderOptions\n            ]\n        }\n    }\n]);\n```\n\n#### Trailing Empty Lines Configuration\n\nThe third argument of the rule configuration which defaults to 1 specifies the\nnumber of newlines that are enforced after the header.\n\nZero newlines:\n\n```ts\nimport header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\nimport { defineConfig } from \"eslint/config\";\n\nexport default defineConfig([\n    {\n        files: [\"**/*.js\"],\n        plugins: {\n            \"@tony.ganchev\": header\n        },\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"block\",\n                        lines: [\n                            \" Copyright now\",\n                            \"My Company \"\n                        ],\n                    },\n                    trailingEmptyLines: {\n                        minimum: 0\n                    }\n                } as HeaderOptions\n            ]\n        }\n    }\n]);\n```\n\n```js\n/* Copyright now\nMy Company */ console.log(1)\n```\n\nOne newline (default):\n\n```ts\nimport header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\nimport { defineConfig } from \"eslint/config\";\n\nexport default defineConfig([\n    {\n        files: [\"**/*.js\"],\n        plugins: {\n            \"@tony.ganchev\": header\n        },\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"block\",\n                        lines: [\n                            \" Copyright now\",\n                            \"My Company \"\n                        ],\n                    },\n                    trailingEmptyLines: {\n                        minimum: 1\n                    }\n                } as HeaderOptions\n            ]\n        }\n    }\n]);\n```\n\n```js\n/* Copyright now\nMy Company */\nconsole.log(1)\n```\n\nTwo newlines:\n\n```ts\nimport header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\nimport { defineConfig } from \"eslint/config\";\n\nexport default defineConfig([\n    {\n        files: [\"**/*.js\"],\n        plugins: {\n            \"@tony.ganchev\": header\n        },\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"block\",\n                        lines: [\n                            \" Copyright now\",\n                            \"My Company \"\n                        ]\n                    },\n                    trailingEmptyLines: {\n                        minimum: 2\n                    }\n                } as HeaderOptions\n            ]\n        }\n    }\n]);\n```\n\n```js\n/* Copyright now\nMy Company */\n\nconsole.log(1)\n```\n\n#### Line Endings\n\nThe rule works with both Unix/POSIX and Windows line endings. For ESLint\n`--fix`, the rule will use the line ending format of the current operating\nsystem (via Node's `os` package). This setting can be overwritten as follows:\n\n```ts\nimport header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\nimport { defineConfig } from \"eslint/config\";\n\nexport default defineConfig([\n    {\n        files: [\"**/*.js\"],\n        plugins: {\n            \"@tony.ganchev\": header\n        },\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"block\",\n                        lines: [\n                            \"Copyright 2018\",\n                            \"My Company\"\n                        ]\n                    },\n                    lineEndings: \"windows\"\n                } as HeaderOptions\n            ]\n        }\n    }\n]);\n```\n\nPossible values are `\"unix\"` for `\\n` and `\"windows\"` for `\\r\\n` line endings.\nThe default value is `\"os\"` which means assume the system-specific line endings.\n\n### Support for Leading Comments\n\n_NOTE: This feature is still experimental and as such may break between minor\nversions and revisions._\n\n_NOTE: This feature will **only** be available with the modern object-based\nconfiguration._\n\nSome frameworks such as [Jest](https://jestjs.io/) change behavior based on\npragma comments such as:\n\n```js\n/** @jest-environement node */\n```\n\nThe problem with these is that they are not part of the header comment and\nshould be allowed to appear before the header comment. The `leadingComments`\noption allows you to specify a set of comments that are allowed to appear before\nthe header comment. It is configured as an array of comments-matching rules\nsimilar to the `header` section. For example to match the following header with\na leading pragma:\n\n```js\n/** @jest-environement node */\n/* Copyright 2015, My Company */\n```\n\n... we can use the following configuration:\n\n```ts\nimport header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\nimport { defineConfig } from \"eslint/config\";\n\nexport default defineConfig([\n    {\n        files: [\"**/*.js\"],\n        plugins: {\n            \"@tony.ganchev\": header\n        },\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"block\",\n                        lines: [\" Copyright 2015, My Company \"]\n                    },\n                    leadingComments: {\n                        comments: [\n                            {\n                                commentType: \"block\",\n                                lines: [\"* @jest-environement node \"]\n                            }\n                        ]\n                    }\n                } as HeaderOptions\n            ]\n        }\n    }\n]);\n```\n\nAssuming you need to tolerate more pragmas, you can have a longer list of\ncomments e.g.\n\n```ts\nimport header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\nimport { defineConfig } from \"eslint/config\";\n\nexport default defineConfig([\n    {\n        files: [\"**/*.js\"],\n        plugins: {\n            \"@tony.ganchev\": header\n        },\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"block\",\n                        lines: [\" Copyright 2015, My Company \"]\n                    },\n                    leadingComments: {\n                        comments: [\n                            {\n                                commentType: \"block\",\n                                lines: [\"* @jest-environement node \"]\n                            },\n                            {\n                                commentType: \"line\",\n                                lines: [\" @ts-ignore\"]\n                            }\n                        ]\n                    }\n                } as HeaderOptions\n            ]\n        }\n    }\n]);\n```\n\nYou can also use file-based configuration for any of these allowed comments.\n\n#### Notes on Behavior\n\nThere are a number of things to consider when validating headers when allowing\nsome leading comments. It is important to understand the algorithm behind.\nDuring validation, the rule breaks up all comments before the first actual code\ntoken based either on the beginning and end of a block comments or based on the\nseparation of line comments by more than one line. These discrete comment blocks\nare then validated against both the header-matching rule and all the leading\ncomment-matching rules.\n\nFor each comment, header is tested first and if it matches, validation completes\nsuccessfully. If not, the algorithm verifies that the comment satisfies at least\none comment matcher and if so, validation moves to the next comment.\n\nIf the comment matches neither the header, nor any of the leading comment\nmatchers, validation fails. To provide good troubleshooting information, errors\nare reported for the header matcher, followed by all leading comment matchers.\nWhile the information may seem overwhelming, this helps developers understand\nall possible failures and let them pick the essential one.\n\nLet's have the following configuration example:\n\n```ts\nimport header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\nimport { defineConfig } from \"eslint/config\";\n\nexport default defineConfig([\n    {\n        files: [\"**/*.js\"],\n        plugins: {\n            \"@tony.ganchev\": header\n        },\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"block\",\n                        lines: [\" Copyright 2015, My Company \"]\n                    },\n                    leadingComments: {\n                        comments: [\n                            {\n                                commentType: \"block\",\n                                lines: [\"* @jest-environement node \"]\n                            },\n                            {\n                                commentType: \"line\",\n                                lines: [\" @ts-ignore\"]\n                            }\n                        ]\n                    }\n                } as HeaderOptions\n            ]\n        }\n    }\n]);\n```\n\nLet's lint the following piece of code:\n\n```js\n/** @jest-environement node */\n/* Copyright 2010, My Company */\n\nconsole.log(1);\n```\n\nThe following errors would be shown:\n\n```bash\n  2:1  error  leading comment validation failed: should be a line comment\n        @tony.ganchev/header         \n  2:3  error  header line does not match expected after this position;\n    expected: 'Copyright 2015, My Company'\n        @tony.ganchev/header         \n  2:3  error  leading comment validation failed: line does not match expected\n    after this position; expected: '* @jest-environement node '\n        @tony.ganchev/header\n```\n\nNotice how all errors are reported on the second line. That is because the first\nline passes validation against the first leading comment matcher, while the\nsecond fails validation against all matchers.\n\nRequiring an empty line between line leading comments is important as it keeps\nthe rule simple and fast but needs to be kept into account. Let's take the\nfollowing configuration for example:\n\n```ts\nimport header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\nimport { defineConfig } from \"eslint/config\";\n\nexport default defineConfig([\n    {\n        files: [\"**/*.js\"],\n        plugins: {\n            \"@tony.ganchev\": header\n        },\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"block\",\n                        lines: [\" Copyright 2015, My Company \"]\n                    },\n                    leadingComments: {\n                        comments: [\n                            {\n                                commentType: \"line\",\n                                lines: [\" foo\"]\n                            },\n                            {\n                                commentType: \"line\",\n                                lines: [\" bar\"]\n                            }\n                        ]\n                    }\n                } as HeaderOptions\n            ]\n        }\n    }\n]);\n```\n\nThis configuration would successfully lint any of the following snippets:\n\n```js\n// foo\n\n// bar\n/* Copyright 2015, My Company */\nconsole.log();\n```\n\n```js\n// bar\n\n// foo\n\n/* Copyright 2015, My Company */\nconsole.log();\n```\n\n```js\n// bar\n\n// bar\n/* Copyright 2015, My Company */\nconsole.log();\n```\n\nIt will not pass the following snippets though:\n\n```js\n// foo\n// bar\n\n/* Copyright 2015, My Company */\nconsole.log();\n```\n\n```js\n// bar\n// foo\n/* Copyright 2015, My Company */\nconsole.log();\n```\n\n```js\n// bar\n// bar\n\n/* Copyright 2015, My Company */\nconsole.log();\n```\n\nFinally, it is worth noting that the current version accepts an arbitrary number\nof empty lines in between comments. The only expectation still in place is that\nthere is no empty line after a shebang comment. Any of these details may change\nthrough configuration in the future.\n\n### Examples\n\nThe following examples are all valid.\n\n```ts\nimport header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\nimport { defineConfig } from \"eslint/config\";\n\nexport default defineConfig([\n    {\n        files: [\"**/*.js\"],\n        plugins: {\n            \"@tony.ganchev\": header\n        },\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"block\",\n                        lines: [\"Copyright 2015, My Company\"]\n                    }\n                } as HeaderOptions\n            ]\n        }\n    }\n]);\n```\n\n```js\n/*Copyright 2015, My Company*/\nconsole.log(1);\n```\n\n```ts\nimport header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\nimport { defineConfig } from \"eslint/config\";\n\nexport default defineConfig([\n    {\n        files: [\"**/*.js\"],\n        plugins: {\n            \"@tony.ganchev\": header\n        },\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"line\",\n                        lines: [\n                            \"Copyright 2015\",\n                            \"My Company\"\n                        ]\n                    }\n                } as HeaderOptions\n            ]\n        }\n    }\n]);\n```\n\n```js\n//Copyright 2015\n//My Company\nconsole.log(1)\n```\n\n```ts\nimport header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\nimport { defineConfig } from \"eslint/config\";\n\nexport default defineConfig([\n    {\n        files: [\"**/*.js\"],\n        plugins: {\n            \"@tony.ganchev\": header\n        },\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"line\",\n                        lines: [\n                            /^Copyright \\d{4}$/,\n                            /^My Company$/\n                        ]\n                    }\n                } as HeaderOptions\n            ]\n        }\n    }\n]);\n```\n\n### Linting CSS\n\nThe rule supports validating and auto-fixing headers in CSS files. To\nuse the plugin with these file types, you need to configure the official\n`@eslint/css` plugin.\n\n**Note: the plugin does not support SCSS** as no current popular parser for\nESLint supports SCSS / LESS that being a prerequisite for this plugin to be\ncalled. It is possible to rely on a dummy pass-through parser to ensure the SCSS\n/ LESS sources simply reach the rule but as of the time of the publisihng of\nthis document we have not tested this approach.\n\nBack to CSS, let us use the following configuration:\n\n_eslint.config.js_:\n\n```js\nimport header from \"@tony.ganchev/eslint-plugin-header\";\nimport css from \"@eslint/css\";\n\nexport default [\n    {\n        files: [\"**/*.css\"],\n        plugins: {\n            \"@tony.ganchev\": header,\n            css\n        },\n        language: \"css/css\",\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"block\",\n                        lines: [\" Copyright 2025 \"]\n                    }\n                }\n            ]\n        }\n    }\n];\n```\n\n```css\n/* Copyright 2025 */\n\n.foo {\n    color: blue;\n}\n```\n\nWith more decoration:\n\n```ts\nimport header, { HeaderOptions } from \"@tony.ganchev/eslint-plugin-header\";\nimport { defineConfig } from \"eslint/config\";\n\nexport default defineConfig([\n    {\n        files: [\"**/*.js\"],\n        plugins: {\n            \"@tony.ganchev\": header\n        },\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"block\",\n                        lines: [\n                            \"************************\",\n                            \" * Copyright 2015\",\n                            \" * My Company\",\n                            \" ************************\"\n                        ]\n                    }\n                } as HeaderOptions\n            ]\n        }\n    }\n]);\n```\n\n```css\n/*************************\n * Copyright 2015\n * My Company\n *************************/\n\n.foo {\n    color: blue\n}\n```\n\nAs you can expect with CSS syntax, line comments and shebangs are not supported.\nAll other features of the rule remain the same.\n\n### Linting HTML\n\nThe rule supports linting copyright notices in HTML files. The rule works with\nthe _@html-eslint/eslint-plugin_ plugin and its parser.\n\nSimilar to CSS, all you need to do to turn on header validation is to configure\nthe _\\@html-eslint/eslint-plugin_ plugin and the rule:\n\n```ts\nimport header from \"@tony.ganchev/eslint-plugin-header\";\nimport html from \"@html-eslint/eslint-plugin\";\n\nexport default [\n    {\n        files: [\"**/*.html\"],\n        plugins: {\n            \"@tony.ganchev\": header,\n            html\n        },\n        language: \"html/html\",\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"block\",\n                        lines: [\" Copyright 2025 \"]\n                    }\n                }\n            ]\n        }\n    }\n];\n```\n\n```html\n<!-- Copyright 2025 -->\n\n<html>\n<body>\n    <h1>Hello, world!</h1>\n    <p>Lorem ipsum dolor.</p>\n</body>\n</html>\n```\n\nAs with CSS, only block comments are supported - no line- or shebang comments.\n\n### Linting Vue\n\nThe rule supports linting copyright notices in Vue files. The rule works with\nthe _eslint-plugin-vue_ plugin and its parser.\n\nTo turn on header validation for Vue files, configure the parser, the plugin,\nand the rule:\n\n```ts\nimport header from \"@tony.ganchev/eslint-plugin-header\";\nimport vueParser from \"vue-eslint-parser\";\nimport vuePlugin from \"eslint-plugin-vue\";\n\nexport default [\n    {\n        files: [\"**/*.vue\"],\n        plugins: {\n            \"@tony.ganchev\": header,\n            vue: vuePlugin\n        },\n        languageOptions: {\n            parser: vueParser\n        },\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"block\",\n                        lines: [\" Copyright 2025 \"]\n                    }\n                }\n            ]\n        }\n    }\n];\n```\n\n```vue\n<!-- Copyright 2025 -->\n<template>\n    <div>Hello, world!</div>\n</template>\n```\n\nAs with HTML and CSS, only block comments are supported at the top of the file -\nno line- or shebang comments.\n\n### Linting Svelte\n\nThe rule supports linting copyright notices in Svelte files. The rule works with\nthe _eslint-plugin-svelte_ plugin and its parser.\n\nTo turn on header validation for Svelte files, configure the parser and the rule:\n\n```ts\nimport header from \"@tony.ganchev/eslint-plugin-header\";\nimport svelteParser from \"svelte-eslint-parser\";\nimport sveltePlugin from \"eslint-plugin-svelte\";\n\nexport default [\n    {\n        files: [\"**/*.svelte\"],\n        plugins: {\n            \"@tony.ganchev\": header,\n            svelte: sveltePlugin\n        },\n        languageOptions: {\n            parser: svelteParser\n        },\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"block\",\n                        lines: [\" Copyright 2025 \"]\n                    }\n                }\n            ]\n        }\n    }\n];\n```\n\n```svelte\n<!-- Copyright 2025 -->\n<script>\n    let name = 'world';\n</script>\n\n<h1>Hello {name}!</h1>\n```\n\nAs with Vue, HTML and CSS, only block comments are supported at the top of the\nfile - no line- or shebang comments.\n\n### Linting Markdown\n\nThe rule supports copyright comments in Markdown syntax in both _commonmark_ and\n_gfm_ flavors using the _\\@eslint/markdown_ plugin and parser. Only HTML\ncomments are supported - no anchor hacks or similar are accepted.\n\nSimilar to CSS, all you need to do to turn on header validation is to configure\nthe _\\@eslint/markdown_ plugin and the rule:\n\n```ts\nimport header from \"@tony.ganchev/eslint-plugin-header\";\nimport markdown from \"@eslint/markdown\";\n\nexport default [\n    {\n        files: [\"**/*.md\"],\n        plugins: {\n            \"@tony.ganchev\": header,\n            markdown\n        },\n        // ... or \"markdown/gfm\"\n        language: \"markdown/commonmark\",\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"block\",\n                        lines: [\" Copyright 2025 \"]\n                    }\n                }\n            ]\n        }\n    }\n];\n```\n\n```md\n    <!-- Copyright 2025 -->\n    \n    # Title\n    \n    ## Subtitle\n    \n    ## Code\n    \n    ```js\n    console.log(\"Hello, world!\");\n    ```\n```\n\nNote that if you have configured header for `*.js` files, the linter would fail\non the first line of the nested JavaScript snippet. Look up how to differentiate\nthe configuration of JavaScript sources (`**/*.js`) from JavaScript snippets in\nMarkdown (`**/*.md/*.js`). Same applies to `*.ts`, `*.jsx`, `*.tsx`, etc.\n\nAs with CSS, only block comments are supported - no line- or shebang comments.\n\n### Linting YAML\n\nThe rule supports linting copyright notices in YAML files. The rule works with\nthe _eslint-plugin-yml_ plugin and its parser.\n\nSimilar to CSS and Markdown, all you need to do to turn on header validation is\nto configure the _eslint-plugin-yml_ plugin, the correct language, and the rule:\n\n```ts\nimport header from \"@tony.ganchev/eslint-plugin-header\";\nimport yml from \"eslint-plugin-yml\";\n\nexport default [\n    {\n        files: [\"**/*.yaml\", \"**/*.yml\"],\n        plugins: {\n            \"@tony.ganchev\": header,\n            yml\n        },\n        language: \"yml/yaml\",\n        rules: {\n            \"@tony.ganchev/header\": [\n                \"error\",\n                {\n                    header: {\n                        commentType: \"line\",\n                        lines: [\" Copyright 2025 \"]\n                    }\n                }\n            ]\n        }\n    }\n];\n```\n\n```yaml\n# Copyright 2025\n\nfoo: bar\n```\n\nAs YAML only supports line comments, be sure to use `commentType: \"line\"`. If\n`commentType: \"block\"` is used, the rule will report a violation.\n\n## Comparison to Alternatives\n\nA number of projects have been aiming to solve problems similar to\n_\\@tony.ganchev/eslint-plugin-header_ - mainly with respect to providing ESLint\n9 support. The section below tries to outline why developers may choose either.\nThe evaluation is based on the versions of each project as of the time of\npublishing the current version of _\\@tony.ganchev/eslint-plugin-header_.\n\nFurther iterations of this document would add migration information.\n\n### Compared to [eslint-plugin-headers](https://github.com/robmisasi/eslint-plugin-headers)\n\n_\\@tony.ganchev/eslint-plugin-header_ is a drop-in replacement for\n_eslint-plugin-header_ and all plugins that already use the latter can migrate\nto the fork right away. At the same time, it provides improved user experience\nand windows support.\n\n_eslint-plugin-headers_ is not a drop-in replacement. It offers additional\nfeatures that are not first-level use-cases for\n_\\@tony.ganchev/eslint-plugin-header_. One example is support for `{year}`\nvariable placeholders which are redundant with ESLint's JavaScript-based\nconfiguration as [already pointed out in this document](#providing-to-year-in-auto-fix).\nJSDoc support can be achieved with regular expressions and the overall\nconfiguration capabilities of _\\@tony.ganchev/eslint-plugin-header_. It is worth\nnoting that the source code of _\\@tony.ganchev/eslint-plugin-header_ already\nuses JSDoc-style comments for its own header which are in turn validated using\n_\\@tony.ganchev/eslint-plugin-header/header_ rule.\n\nThe configuration format philosophy of the two plugin differs.\n_\\@tony.ganchev/eslint-plugin-header_ supports both the legacy model inherited\nfrom _eslint-plugin-header_ and a new object-based configuration that is easy to\nadopt and offers both a lot of power to the user as to what the headers should\nlook like, and keeps the configuration compact - just a few lines defining the\ncontent inside the comment. At the same time, the configuration is structured in\na way that can evolve without breaking compatibility, which is critical for a\ntool that is not differentiating for the critical delivery of teams.\n\n_eslint-plugin-headers_ also offers an object-based format, but the content is\nflat and may need breaking changes to be kept concise as new features come\nabout. Further, it makes assumption that then need to be corrected such as a\nblock comment starting with `/**` instead of `/*` by default. The correction\nneeds to happen not by adjusting the header template but through a separate\nconfusing configuration properties.\nOverall, the configuration tends to be noisier nad harder to read than that of\n_\\@tony.ganchev/eslint-plugin-header_.\n\n_eslint-plugin-headers_'s error reporting is rudimentary - either the header\npasses or it fails and with complex templates you get no idea what the issue is.\nGranted this is the case with _eslint-plugin-header_ but we spent many hours\nimproving  this and the side by side comparison is telling.\n\n_eslint-plugin-headers_ does not offer TypeScript bindings for its\nconfiguration format making it slower to author configuration.\n_\\@tony.ganchev/eslint-plugin-header_ as often as possible reports which line\nis problematic and starting from which character.\n\n_eslint-plugin-headers_ supports some level of partial auto-fixes such as\nreplacing company names but not years. Or keeping JSDoc variables after the\ncopyright notice within the same comment. Some cases can be supported by\n_\\@tony.ganchev/eslint-plugin-header_ but in general our design has shied away\nfrom touching existing comments to provide \"smart\" fixes. This is the current\nstate of the feature set yet the team is looking for the right model to bridge\nthe functionality gaps.\n\nWe have prepared a detailed [migration guide](docs/migrate-from-headers.md) for\nanyone eager to migrate to _\\@tony.ganchev/eslint-plugin-header_.\n\n#### Health Scans\n\n- _\\@tony.ganchev/eslint-plugin-header_</th> -\n  [snyk.io](https://security.snyk.io/package/npm/%40tony.ganchev%2Feslint-plugin-header),\n  [socket.dev](https://socket.dev/npm/package/@tony.ganchev/eslint-plugin-header/overview/3.2.2)\n\n- _eslint-plugin-headers_ -\n  [snyk.io](https://security.snyk.io/package/npm/eslint-plugin-headers),\n  [socket.dev](https://socket.dev/npm/package/eslint-plugin-headers/overview/1.3.4)\n\nAt the time of the publishing of the current version of\n_\\@tony.ganchev/eslint-plugin-header_, the latter has a slight edge in both\nscans against _eslint-plugin-headers_.\n\n### Compared to [eslint-plugin-license-header](https://github.com/nikku/eslint-plugin-license-header)\n\n_eslint-plugin-license-header_ per its limited documentation does not have a lot\nof features including not matching arbitrary from-years in the copyright notice.\nThis on one hand leads to it having a nice, dead-simple configuration, but means\nno complex multi-year project would be happy with it. Surprisingly, given the\nlimited feature set, the plugin has more peer dependencies than the competition.\n\nWe have prepared a detailed\n[migration guide](docs/migrate-from-license-header.md) for anyone eager to\nmigrate to _\\@tony.ganchev/eslint-plugin-header_.\n\n### Compared to [eslint-plugin-notice](https://github.com/earl-man/eslint-plugin-notice)\n\n_eslint-plugin-notice_ is another alternative that uses a template-based\napproach (powered by Lodash templates) to manage headers. This makes it quite\npowerful for dynamic content but also brings in more dependencies and a more\ncomplex configuration schema that doesn't always feel \"native\" to the new ESLint\nFlat Config era.\n\nKey differences:\n\n- **Compatibility**: _eslint-plugin-notice_ **does not support ESLint 10** and\n  **does not provide TypeScript bindings**.\n- **Support**: _eslint-plugin-notice_ has **not seen its code updated in 2\n  years** and has pull request published by the project's owner dangling for\n  over 2 years.\n- **Philosophy**: _\\@tony.ganchev/eslint-plugin-header_ focuses on a zero-bloat,\n  native ESLint feel with first-class support for Flat Config and TypeScript.\n  The project offers much more features and includes a much larger list of\n  supported languages.\n- **Languages**: We provide native support for linting headers in HTML, CSS,\n  Vue, Svelte, YAML, Markdown via their respective ESLint plugins and parsers.\n- **Simplicity**: No need for external template engines or complex variable\n  mappings. Use standard JavaScript template literals in your `eslint.config.ts`\n  to handle dynamic years or other variables.\n\nWe have prepared a detailed\n[migration guide](docs/migrate-from-notice.md) for anyone eager to\nmigrate to _\\@tony.ganchev/eslint-plugin-header_.\n\n## Versioning\n\nThe project follows standard [NPM semantic versioning policy](\nhttps://docs.npmjs.com/about-semantic-versioning).\n\nThe following guidelines apply:\n\n- **major versions** - new functionality that breaks compatibility.\n- **minor versions** - new features that do not break compatibility. For the\n  most part we would aim to continue releasing new versions in the 3.x product\n  line and have opt-in flags for changes in behavior of existing features.\n- **revisions** - bugfixes and minor non-feature improvements that do not break\n  compatibility. Note that bug-fixes are allowed to break compatibility with\n  previous version if the older version regressed previous expected behavior.\n\nTwo concepts are important when going over the above guidelines and we will go\nover them in the next sections.\n\n### What is a Feature?\n\nWe keep the distinction between a feature and a non-feature improvement / bug\nfix as simple as possible:\n\n- If configuration changes, it's a **feature**.\n- If it doesn't, then you have two cases:\n  - If it changes behavior back to what is expected, it is a bug.\n  - If it changes the expected behavior, it is an improvement.\n\n### What is Backward-compatibility?\n\nBackward compatibility in the context of this plugin relates to how the plugin\nconsistently passes or fails one and the same code in between upgrades to newer\nbackward-compatible versions. This guarantees that plugin updates can be done\nwithout breaking CI/CD pipeline linting.\n\nBackward-compatibility does not cover the following functional aspects:\n\n- Rule violation messages are not kept stable between backward-compatible\n  versions. This allows us to improve error reporting in addition to bug fixes.\n- Auto-fix behavior is not stable between backward-compatible versions. As auto-\n  fixes are not part of CI/CD processes results of them may vary.\n- Bugs to released functionality. Bugs are considered regression to expected\n  functionality regardless of whether they went into a release or not. We fix\n  bugs without maintaining bug-compatibility.\n\n## License\n\nMIT, see [license file](./LICENSE.md) for more details.\n","readmeFilename":"README.md"}