{"_id":"@herb-tools/linter","_rev":"38-8c6b6bb3fc7e7cad443c648a6fc748ba","name":"@herb-tools/linter","dist-tags":{"latest":"0.11.0"},"versions":{"0.4.0":{"name":"@herb-tools/linter","version":"0.4.0","license":"MIT","_id":"@herb-tools/linter@0.4.0","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev/","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"3f06077c829c05fe0a6820376cb0e6846974324b","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.4.0.tgz","fileCount":196,"integrity":"sha512-3nVLb1Id27PhTQy83xHVyGFt+xxSfpZ2wxy+fLBCOGKYFEpvMMleQ1XoWE0DWmcfQ4LDGkAwxzf0Ey9khsTvyA==","signatures":[{"sig":"MEUCIDoIe3tn85O8mibngDV6aCh3PV+tHZWu6pFVn+NzuARiAiEAxuq9YgUhRWMsu14dwvGNNx+nYoC6oS7GK6P/3Wo2Atg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4867087},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","actor":{"name":"marcoroth","type":"user","email":"marco.roth@hey.com"},"email":"marco.roth@hey.com"},"repository":{"url":"https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"dependencies":{"glob":"^11.0.3","@herb-tools/core":"0.4.0","@herb-tools/node-wasm":"0.4.0","@herb-tools/highlighter":"0.4.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.4.0_1752162977100_0.41700076554567733","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@herb-tools/linter","version":"0.4.1","license":"MIT","_id":"@herb-tools/linter@0.4.1","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev/","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"dd8da81e4fee5abed9304657b41a5ae5d0d87db4","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.4.1.tgz","fileCount":214,"integrity":"sha512-IbUbKF+wF5PL4YpaY2JcIn3H5HT0MbZsK9wYPdp14FO/HbgRtia/0ATMrLha4Lc7pf0hRL7vgZfKhJGljboeDQ==","signatures":[{"sig":"MEYCIQCuD3umtOPVueECu5r2TIqk7z8Nh3ExyGIK4f+KaCVL4gIhALXNrLMSMK5ypqiVqX/APPZHvsNmfNWaDeG5y4ZF9VCk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4908129},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"dependencies":{"glob":"^11.0.3","@herb-tools/core":"0.4.1","@herb-tools/node-wasm":"0.4.1","@herb-tools/highlighter":"0.4.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.4.1_1753161380527_0.031603118422743215","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@herb-tools/linter","version":"0.4.2","license":"MIT","_id":"@herb-tools/linter@0.4.2","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev/","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"ef8c4ed6128803868f154c1f8f36f351d04f48ba","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.4.2.tgz","fileCount":220,"integrity":"sha512-Ydvu4hMaQVZ2qXF954sRvxgOStIDBWn+272XoDWw2/VJjm+U991kw5r5OJW68L6i/R7I1rxUrnvoxyrAiBXUHg==","signatures":[{"sig":"MEUCIQCokE7jw5mSfQbSx4NEcCO2U0mvGIwFH+BLsco2WIyomwIgTEBxn/OYufOmsrWQOoKC5qnsNPoK+PoUZk7kO8Ul+lY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4947375},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"dependencies":{"glob":"^11.0.3","@herb-tools/core":"0.4.2","@herb-tools/node-wasm":"0.4.2","@herb-tools/highlighter":"0.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.4.2_1753655158441_0.775614258706014","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@herb-tools/linter","version":"0.4.3","license":"MIT","_id":"@herb-tools/linter@0.4.3","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev/","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"f5defd087f25c36e608286ecb9d2d4c8d03eaf70","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.4.3.tgz","fileCount":238,"integrity":"sha512-pXPBm79JNP97etNvPI9v4LCJPsRiaPkqqPo4BWEVchAiV4bl73wU2TYkEUkaBB7qhQ5vTPaNUltSL7YHMR43og==","signatures":[{"sig":"MEYCIQDFuIBKY0mvhlCHHoPrMBtYc44DkZNNQN4VN9gdHKi93AIhALtQ1IlxnCqqgzDyTjd9xPd4dFxMrcLd78sgsNf9655Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5072368},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"dependencies":{"glob":"^11.0.3","@herb-tools/core":"0.4.3","@herb-tools/node-wasm":"0.4.3","@herb-tools/highlighter":"0.4.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.4.3_1754259216788_0.9538832626273583","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@herb-tools/linter","version":"0.5.0","license":"MIT","_id":"@herb-tools/linter@0.5.0","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev/","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"9c7e26ebf152bbb52f780a156f82e864a64a5990","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.5.0.tgz","fileCount":259,"integrity":"sha512-N6H7xqkIQ8FeIdR6Kdg7AX6tzOGNog6pD032KNPDPlZOaaf0fdUyWIgXcsRq4tS20YzHq6ZydpAwhZ5zSzBKRA==","signatures":[{"sig":"MEUCIE1dM3qkbYsJD6YEiS2f9DBSEzfgJO4+9yZwVofAKjQTAiEA13GRG7uzxiSKOOXNccpdHIOe28rU35kZ806NKlOCuXM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5145412},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"dependencies":{"glob":"^11.0.3","@herb-tools/core":"0.5.0","@herb-tools/node-wasm":"0.5.0","@herb-tools/highlighter":"0.5.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.5.0_1755474802063_0.057129601779785544","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@herb-tools/linter","version":"0.6.0","license":"MIT","_id":"@herb-tools/linter@0.6.0","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev/","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"c38d9553ba13cfe05e9e32647b0169af20fe070f","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.6.0.tgz","fileCount":320,"integrity":"sha512-Zhu9KAqb0JMSbw7CnjJdmWx5kZ27qhPdiQlMraeWqnpo6AcDktCdyDQnyf6pjWt1PrxAddM/b741XnR8HenHQQ==","signatures":[{"sig":"MEYCIQDKST1xGVLO0LmZiuIgZ5XZtYeL4IKUuG2V6pAa5z1yggIhAM7rCiTE8AkPjmPyWjXo+KXgBsCOdcaKs8LVyP2NgKDK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4654217},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"dependencies":{"glob":"^11.0.3","@herb-tools/core":"0.6.0","@herb-tools/node-wasm":"0.6.0","@herb-tools/highlighter":"0.6.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.6.0_1756084832748_0.24988820783126386","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@herb-tools/linter","version":"0.6.1","license":"MIT","_id":"@herb-tools/linter@0.6.1","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev/","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"fb58d82ffad68913c94e05a3b30056bdb4021922","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.6.1.tgz","fileCount":320,"integrity":"sha512-EAOoqvK43YvZgwWeTy3Fx3UgqKsqleiFv0FJJSW23x+ZFRC0sAQoNOhkFndJZLzmnjrERCy2H30akfZ3ySZu9A==","signatures":[{"sig":"MEUCIQCyvCNPZcORYDRw1olnBR1dM/ADPtaDH+eWH5+MdFlsGQIgFQQ0bj29E1kzPtlPdc9q6h4AK8kr5tLtgQqS5mSoqWQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4958175},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"dependencies":{"glob":"^11.0.3","@herb-tools/core":"0.6.1","@herb-tools/printer":"0.6.1","@herb-tools/node-wasm":"0.6.1","@herb-tools/highlighter":"0.6.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.6.1_1756227946722_0.07805952639713398","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@herb-tools/linter","version":"0.7.0","license":"MIT","_id":"@herb-tools/linter@0.7.0","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev/","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"7932e32583e7e15b643eb95628e068fb589dab93","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.7.0.tgz","fileCount":332,"integrity":"sha512-6jDNrB+6Kf3/0t7E2rZ0VeeDFf0KTPg+IZmWeBR3G/wh0ZiT+yb0xGlBKDFx47+ilaK1wJWdbYc2ODgMrjTESg==","signatures":[{"sig":"MEQCIDIa0Ix4qo0aaHgSB2BNWzWAOIhyBGjUt2//KP68ge+nAiB+HE68bLahweDLoIGuDz/ZgiUi51CJfu1F6C8ICoYNyA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5033459},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/src/cli.d.ts","default":"./dist/src/cli.js","require":"./dist/src/cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"dependencies":{"glob":"^11.0.3","@herb-tools/core":"0.7.0","@herb-tools/printer":"0.7.0","@herb-tools/node-wasm":"0.7.0","@herb-tools/highlighter":"0.7.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.7.0_1757066221187_0.17254380482303544","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@herb-tools/linter","version":"0.7.1","license":"MIT","_id":"@herb-tools/linter@0.7.1","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev/","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"7328487812bdeb5876de2131f8990a884d5483d2","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.7.1.tgz","fileCount":332,"integrity":"sha512-8X5CKP+KFjtyV6WkWXqUYMi8gg3TFH988r0IhrU2ZeckFj9nxLfFNpx2pJXsEjEiBwTFFREk+tefGZozfb0orQ==","signatures":[{"sig":"MEUCIQCHiUslEsM/B6s9bj7MPAydeMWcunaHJButykZ2uf7syAIgJmqrI9mVrd/bnsz5HL5jKpDup6BO7MMIK8Aluq/Adjc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5036867},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/src/cli.d.ts","default":"./dist/src/cli.js","require":"./dist/src/cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"dependencies":{"glob":"^11.0.3","@herb-tools/core":"0.7.1","@herb-tools/printer":"0.7.1","@herb-tools/node-wasm":"0.7.1","@herb-tools/highlighter":"0.7.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.7.1_1757882804373_0.6587942218050045","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"@herb-tools/linter","version":"0.7.2","license":"MIT","_id":"@herb-tools/linter@0.7.2","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev/","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"cb4e8449c8fe250464985b30a99d54f5bef31cfb","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.7.2.tgz","fileCount":332,"integrity":"sha512-5dbyY/ULosqOijDC1jkMEjnA91lbMuK+q12cxebZUcVF1Rkekg/1eENR2WUbXAcxUY23zFbLpL2SFuzH84vI5A==","signatures":[{"sig":"MEYCIQC6RZQBnvLcrxec9c/2QBsut0lhSLfttZx18BVKDSaEkQIhALVpwgzUz3Wh6MRobxg43KrweJ6NhQBfdxXowalvinAy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5036835},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/src/cli.d.ts","default":"./dist/src/cli.js","require":"./dist/src/cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"dependencies":{"glob":"^11.0.3","@herb-tools/core":"0.7.2","@herb-tools/printer":"0.7.2","@herb-tools/node-wasm":"0.7.2","@herb-tools/highlighter":"0.7.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.7.2_1758074702489_0.33362014318498034","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"@herb-tools/linter","version":"0.7.3","license":"MIT","_id":"@herb-tools/linter@0.7.3","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev/","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"d39c5bd68e3a0106451b0a8bd9ebb730d511e8ad","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.7.3.tgz","fileCount":332,"integrity":"sha512-akanjhYQSR+Zr2CTWmXnvZJ+jYg5aC9FGDiis9TAbWRwgvqdSVdX4lxnVPu+ibOsn6G5CYffgEa3/KwXHhRWMg==","signatures":[{"sig":"MEUCIQC+mj6259JUASjtWuo6BttBLlk2HBAPlbHP0WmrFH2mowIgRcnI9+85Jw4PCMVqLa0bqApp3CbC77edWpT7BI0fVcg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5042194},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/src/cli.d.ts","default":"./dist/src/cli.js","require":"./dist/src/cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"dependencies":{"glob":"^11.0.3","@herb-tools/core":"0.7.3","@herb-tools/printer":"0.7.3","@herb-tools/node-wasm":"0.7.3","@herb-tools/highlighter":"0.7.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.7.3_1758624103994_0.944039828049128","host":"s3://npm-registry-packages-npm-production"}},"0.7.4":{"name":"@herb-tools/linter","version":"0.7.4","license":"MIT","_id":"@herb-tools/linter@0.7.4","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev/","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"e1895d1e967f2edd4c65a4c51d715e16ef40b482","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.7.4.tgz","fileCount":332,"integrity":"sha512-LviBIIhpzFI4QNtGOlgUmYz948J71WGqt2OxMQC+iTquADMwpB5LvidnYywOvtlGNb+/RiY6T47ALhD2FBJ5Tg==","signatures":[{"sig":"MEUCIEEyK5BMx3UXRbF8MgxjWX68mH1yS7DUw1upwMrH7YHvAiEA6YZoBeEzp6c/7S46mLTN96RKzphJlmRVh/CTMwGQKJI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5042194},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/src/cli.d.ts","default":"./dist/src/cli.js","require":"./dist/src/cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"dependencies":{"glob":"^11.0.3","@herb-tools/core":"0.7.4","@herb-tools/printer":"0.7.4","@herb-tools/node-wasm":"0.7.4","@herb-tools/highlighter":"0.7.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.7.4_1758899496876_0.6502666426663899","host":"s3://npm-registry-packages-npm-production"}},"0.7.5":{"name":"@herb-tools/linter","version":"0.7.5","license":"MIT","_id":"@herb-tools/linter@0.7.5","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev/","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"03fb4cc4f8dca852467fc0cee1279126932a8af7","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.7.5.tgz","fileCount":344,"integrity":"sha512-TYlews8HK8St1EH1FU7Na4Dscq3bs8KnhzWLMKlwmiIbNxzDKsZz0i+hBYoex3QySoHxa5PUriLCfizqpNvuLg==","signatures":[{"sig":"MEUCIHuH/w0q2eSxvGEPO1214FWBX3qGMTcdtAmhwPvDKl2iAiEAhAsJoVa0pkSnODSXiAygV46hagW9q3Envl/zDS0Wh6Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5085070},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/src/cli.d.ts","default":"./dist/src/cli.js","require":"./dist/src/cli.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"dependencies":{"glob":"^11.0.3","@herb-tools/core":"0.7.5","@herb-tools/printer":"0.7.5","@herb-tools/node-wasm":"0.7.5","@herb-tools/highlighter":"0.7.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.7.5_1759728980850_0.6215301668548501","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@herb-tools/linter","version":"0.8.0","license":"MIT","_id":"@herb-tools/linter@0.8.0","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev/","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"c9d2545fcff77e9980d1670ab5c7d13d1473096c","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.8.0.tgz","fileCount":452,"integrity":"sha512-AbQj0ttL5naJBj+x4b8zEw+EhIeSu9WQAn3b46e1fg4oxuF7Heybw9ViNoIt6gQy7zM95hISKujMPkdIkALZpw==","signatures":[{"sig":"MEUCIDRHQHjeDPa6JJfP2cVyTEbwLjmLTLmgcE5mUi7dOgCzAiEAzw24dCWDtoL4+If/V2KqvMJ9UgNNB/BvDGAs4/8GENw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11738600},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/src/cli.d.ts","default":"./dist/src/cli.js","require":"./dist/src/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"dependencies":{"glob":"^11.0.3","@herb-tools/core":"0.8.0","@herb-tools/config":"0.8.0","@herb-tools/printer":"0.8.0","@herb-tools/rewriter":"0.8.0","@herb-tools/node-wasm":"0.8.0","@herb-tools/highlighter":"0.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.8.0_1762963982959_0.8663015338105056","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@herb-tools/linter","version":"0.8.1","license":"MIT","_id":"@herb-tools/linter@0.8.1","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev/","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"52a01ce8175bee6000abf7022c55be4a2954f184","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.8.1.tgz","fileCount":452,"integrity":"sha512-I8NUALJ+/G+z6KGjBIndhNWKqMmNT6CiwBiluSBlIIMI4xcJQHVFpvP5DIdygTCk05rXwqbMmg4Aa7yqlinokQ==","signatures":[{"sig":"MEUCICBPzc/OIZHsHCInNYqUMez24KCAOI8ZzICaTeITi4hrAiEAyXaf5nWSJGjhylEOknG2pEtsyoJ7XFneFUXTRPO2WPk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11742609},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/src/cli.d.ts","default":"./dist/src/cli.js","require":"./dist/src/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"dependencies":{"glob":"^11.0.3","@herb-tools/core":"0.8.1","@herb-tools/config":"0.8.1","@herb-tools/printer":"0.8.1","@herb-tools/rewriter":"0.8.1","@herb-tools/node-wasm":"0.8.1","@herb-tools/highlighter":"0.8.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.8.1_1763123573204_0.7114032307008165","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@herb-tools/linter","version":"0.8.2","license":"MIT","_id":"@herb-tools/linter@0.8.2","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev/","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"c12fde1fdb3ab037aef10e8a1a58360dcf3cb77a","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.8.2.tgz","fileCount":457,"integrity":"sha512-+ZHv3ES4qL5FDVj5IZVc0Dmnn0CHOLNfpdyfLL60zVCwVF7kCvGsRxdt/DC9ISLElH5uhP4zC3+n9XBY+VPk4g==","signatures":[{"sig":"MEYCIQCTXWfp5hNXe1jmNNHlKiHPFUw6q3dXQcDl/SDPxHHCowIhALoHyE3HNlEKo4MRzy9vGAomcAlxD1LR5TaPqFMzuddU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11771394},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/src/cli.d.ts","default":"./dist/src/cli.js","require":"./dist/src/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"dependencies":{"glob":"^11.0.3","@herb-tools/core":"0.8.2","@herb-tools/config":"0.8.2","@herb-tools/printer":"0.8.2","@herb-tools/rewriter":"0.8.2","@herb-tools/node-wasm":"0.8.2","@herb-tools/highlighter":"0.8.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.8.2_1763429414746_0.2778576179222749","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"@herb-tools/linter","version":"0.8.3","license":"MIT","_id":"@herb-tools/linter@0.8.3","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev/","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"36ba46a2ca93f4ddd34cf6df4a692675bff1bb75","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.8.3.tgz","fileCount":457,"integrity":"sha512-YmcO+0rvC0nIbCnl+cGL4jkER71FR9ffIsxKkvGk9Knh2IOwl2RlZauLiwDGcWGBJxoUW5IhTxaSZ1aVFy5TDQ==","signatures":[{"sig":"MEUCIQCy131gkbz2+pdTlWvW1BWM4kJQxMDQ4b/DBh937odzBwIgcW8E9sw3Fbbs3SqZ9YZu2I+lnNU00NzS5YenSHGYohQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11778205},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/src/cli.d.ts","default":"./dist/src/cli.js","require":"./dist/src/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"dependencies":{"glob":"^13.0.0","@herb-tools/core":"0.8.3","@herb-tools/config":"0.8.3","@herb-tools/printer":"0.8.3","@herb-tools/rewriter":"0.8.3","@herb-tools/node-wasm":"0.8.3","@herb-tools/highlighter":"0.8.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.8.3_1764643060018_0.846615706105144","host":"s3://npm-registry-packages-npm-production"}},"0.8.4":{"name":"@herb-tools/linter","version":"0.8.4","license":"MIT","_id":"@herb-tools/linter@0.8.4","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev/","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"019ca81e748caf6c19fea6a52a8557b193c56852","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.8.4.tgz","fileCount":457,"integrity":"sha512-0liPVQnZiDPvZBTWb5KqqQqCxams7Vx5zKpyLvHLY/TodZU7JwFmSUm/FRT2qwfzO3zYdXn893sBnWay4qWYhQ==","signatures":[{"sig":"MEQCIFwlIKO2gAEy+W1WwNb372QrOi1LEgYflo7ddft9X9nrAiAtWAExKvL18x7V6g9dkReSv9KgsNxYmma3FPrRMSn8uQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11784610},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/src/cli.d.ts","default":"./dist/src/cli.js","require":"./dist/src/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"dependencies":{"glob":"^13.0.0","@herb-tools/core":"0.8.4","@herb-tools/config":"0.8.4","@herb-tools/printer":"0.8.4","@herb-tools/rewriter":"0.8.4","@herb-tools/node-wasm":"0.8.4","@herb-tools/highlighter":"0.8.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.8.4_1765197961733_0.27278617965030527","host":"s3://npm-registry-packages-npm-production"}},"0.8.5":{"name":"@herb-tools/linter","version":"0.8.5","license":"MIT","_id":"@herb-tools/linter@0.8.5","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"378ecc22be5f4e34b2c74fc1115634a279f11fdc","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.8.5.tgz","fileCount":436,"integrity":"sha512-Ug65IvDjxKG+KBMrJIFLtLKVYtREWGkrmTO4Fb7qPQ6CstiBdVLcCdxql0Y4CNZt6HJWlX37RIJQEo8AEKHKdg==","signatures":[{"sig":"MEQCIAdavAacboLVwb9te74Vbxe0yQhkMFiwWR8quXdebZkaAiB+kH2HXS7uwwD5nakCIGoQOJLKYIm+SA6uq0tw5wd5Fw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11819239},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/src/cli.d.ts","default":"./dist/src/cli.js","require":"./dist/src/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"gitHead":"f1238828dc939ae6dfd592407fea447df558b85f","scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"_npmVersion":"10.9.0","description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"_nodeVersion":"22.12.0","dependencies":{"glob":"^13.0.0","@herb-tools/core":"0.8.5","@herb-tools/config":"0.8.5","@herb-tools/printer":"0.8.5","@herb-tools/rewriter":"0.8.5","@herb-tools/node-wasm":"0.8.5","@herb-tools/highlighter":"0.8.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.8.5_1766175107586_0.22218477331730768","host":"s3://npm-registry-packages-npm-production"}},"0.8.6":{"name":"@herb-tools/linter","version":"0.8.6","license":"MIT","_id":"@herb-tools/linter@0.8.6","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"184153df6a5d85dc992e47e18f22a87a410cb124","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.8.6.tgz","fileCount":436,"integrity":"sha512-V7C6FkzgrktZnD5FImxO9yJN42B69UeF/wOmZ4SBKvvpf6Z6eKBLjSJlKqMbYMSXMvu5iknpEmwfk4Sb90COXg==","signatures":[{"sig":"MEQCIDPa9TwC4tspJgdADb53F7jLHDLf3zRgOfHssGHAulvBAiBXd2QAP65yLDlGLIhh5F3zlyi54cOrR5OwEMkkCMgMsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11851179},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/src/cli.d.ts","default":"./dist/src/cli.js","require":"./dist/src/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"gitHead":"3909cc89f15805989b403a8d6789108917b7ded1","scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"_npmVersion":"10.9.0","description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"_nodeVersion":"22.12.0","dependencies":{"glob":"^13.0.0","@herb-tools/core":"0.8.6","@herb-tools/config":"0.8.6","@herb-tools/printer":"0.8.6","@herb-tools/rewriter":"0.8.6","@herb-tools/node-wasm":"0.8.6","@herb-tools/highlighter":"0.8.6"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.8.6_1766702966067_0.05883318563928075","host":"s3://npm-registry-packages-npm-production"}},"0.8.7":{"name":"@herb-tools/linter","version":"0.8.7","license":"MIT","_id":"@herb-tools/linter@0.8.7","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"a5163f1ee5850f56e1a2b6c2213266c52cbe6631","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.8.7.tgz","fileCount":436,"integrity":"sha512-1OTQ862M6Z3xEAX1AJx6IiMo6laexKr2Y+DYX0+vCAWmD9YmszYIkBcVVqe0bgqMIh4YU/+km+lJq1HPAAWbDw==","signatures":[{"sig":"MEUCIQDw8LWbe4iLvKO5SdEVNALSBNvTXKOHGeKc0LOglIHPpQIge6QtwuWs0Sn/Q8pW8DdYcEIn7vMrlEZ5UQjmAHFt0EM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12559000},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/src/cli.d.ts","default":"./dist/src/cli.js","require":"./dist/src/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"gitHead":"313702d14c44b19da5a278ea8944fe6cd0edd802","scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"_npmVersion":"10.9.0","description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"_nodeVersion":"22.12.0","dependencies":{"picomatch":"^4.0.2","tinyglobby":"^0.2.15","@herb-tools/core":"0.8.7","@herb-tools/config":"0.8.7","@herb-tools/printer":"0.8.7","@herb-tools/rewriter":"0.8.7","@herb-tools/node-wasm":"0.8.7","@herb-tools/highlighter":"0.8.7"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.8.7_1767649548361_0.329715439918556","host":"s3://npm-registry-packages-npm-production"}},"0.8.8":{"name":"@herb-tools/linter","version":"0.8.8","license":"MIT","_id":"@herb-tools/linter@0.8.8","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"c1217fac6c32ae4dc8ed40deb94eb69927a39f29","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.8.8.tgz","fileCount":458,"integrity":"sha512-pK53/6ynbFZNgywVmDqJzwzZ5NaktcbdwQ5USBs/FwnWhPNsnDTEMMDxPe95xDniOdqln1CCdras2LmnBvp0mg==","signatures":[{"sig":"MEQCIFm4v2IZZgI16qYp1Art5Q0aVXzVT2El1bOsJSXK9gi3AiAZ4yqpAu/H6svs2SLdxr8jyq1KqC6qeKFaU3H2bvlPAg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8670461},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/src/cli.d.ts","default":"./dist/src/cli.js","require":"./dist/src/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"gitHead":"6bec8a3d74ba59d6d44ad64ea3a1a8860e871a7e","scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"_npmVersion":"10.9.0","description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"_nodeVersion":"22.12.0","dependencies":{"picomatch":"^4.0.2","tinyglobby":"^0.2.15","@herb-tools/core":"0.8.8","@herb-tools/config":"0.8.8","@herb-tools/printer":"0.8.8","@herb-tools/rewriter":"0.8.8","@herb-tools/node-wasm":"0.8.8","@herb-tools/highlighter":"0.8.8"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.8.8_1768778978607_0.45090694645689","host":"s3://npm-registry-packages-npm-production"}},"0.8.9":{"name":"@herb-tools/linter","version":"0.8.9","license":"MIT","_id":"@herb-tools/linter@0.8.9","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"83428d754b194e52797a1030a0da2259c1af9f11","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.8.9.tgz","fileCount":458,"integrity":"sha512-SeJ6trpZ+5r1atlR8Bm/rIrL2dmq2M1pILw+lQnNe21O9+UqgEHQzHavRLEMyhndk92zWVQ1q+x5LCDNGfIjXQ==","signatures":[{"sig":"MEYCIQDAhabyYOHrf37WgSn/g6uAPt5GhVJ8rupiEkOmzOWp+gIhALK+WaS7JegtFcrvtc+2XsrcSrsutUpzEy+ZHAPTz45o","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8674092},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/src/cli.d.ts","default":"./dist/src/cli.js","require":"./dist/src/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"gitHead":"c48e517e7ca3501efba80357f614c72be494fe46","scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"_npmVersion":"10.9.0","description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"_nodeVersion":"22.12.0","dependencies":{"picomatch":"^4.0.2","tinyglobby":"^0.2.15","@herb-tools/core":"0.8.9","@herb-tools/config":"0.8.9","@herb-tools/printer":"0.8.9","@herb-tools/rewriter":"0.8.9","@herb-tools/node-wasm":"0.8.9","@herb-tools/highlighter":"0.8.9"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.8.9_1769494640908_0.06896911248088355","host":"s3://npm-registry-packages-npm-production"}},"0.8.10":{"name":"@herb-tools/linter","version":"0.8.10","license":"MIT","_id":"@herb-tools/linter@0.8.10","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"a3a1dd518d47a2a1c778307f410f0090a27ae097","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.8.10.tgz","fileCount":458,"integrity":"sha512-li/JFDoHMpSkYbUMKmFDst+Glf931fobrILvGrnaIp4r7pGBDJQONcImGBdnumKPqMk2p1UkHWONRcEHx33jSw==","signatures":[{"sig":"MEYCIQDUW/oeEvhX+trNiTedjlIpfhfW8I3E6vMlRsy1xbVOEwIhAPrDRvQZ0j+fCF+Tj07JtlGQJDz3nK0hmJhIaXnBM5Ij","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8689997},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/src/cli.d.ts","default":"./dist/src/cli.js","require":"./dist/src/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"gitHead":"124d1cf0fe9ee420b0ee31a5a98a039cd67f126b","scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"_npmVersion":"10.9.2","description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"_nodeVersion":"22.13.0","dependencies":{"picomatch":"^4.0.2","tinyglobby":"^0.2.15","@herb-tools/core":"0.8.10","@herb-tools/config":"0.8.10","@herb-tools/printer":"0.8.10","@herb-tools/rewriter":"0.8.10","@herb-tools/node-wasm":"0.8.10","@herb-tools/highlighter":"0.8.10"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.8.10_1770765508299_0.775169851053918","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@herb-tools/linter","version":"0.9.0","license":"MIT","_id":"@herb-tools/linter@0.9.0","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev/","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"fa5e01982d09db2d9b7ac7ffb12bdae5dd726f27","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.9.0.tgz","fileCount":521,"integrity":"sha512-sCqBqAYuNEfUVhW8SXJoKRQTn7/5bMlYI5V7OdS0AksCYwKtRK/JJ3rs0T/9nHnxCYDLO6vYAbcYyfUarMtfqg==","signatures":[{"sig":"MEUCICTcxrJ851X1OucXzBg3cN6wS4qe3U25/O4RIhdN8mvYAiEA0Jx2d2XgEu/2sMmW+gOEgmhWU3DbEnC7R5xcYFB/RAo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22115498},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/cli.d.ts","import":"./dist/cli.js","default":"./dist/cli.js","require":"./dist/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"dependencies":{"picomatch":"^4.0.2","tinyglobby":"^0.2.15","@herb-tools/core":"0.9.0","@herb-tools/config":"0.9.0","@herb-tools/printer":"0.9.0","@herb-tools/rewriter":"0.9.0","@herb-tools/node-wasm":"0.9.0","@herb-tools/highlighter":"0.9.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.9.0_1773435260182_0.3517613510300903","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@herb-tools/linter","version":"0.9.1","license":"MIT","_id":"@herb-tools/linter@0.9.1","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"a07ca3521840b37aa24147772ec6d0b8b80a2a4f","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.9.1.tgz","fileCount":520,"integrity":"sha512-A7aEvXKFWb7p6uXpdLQe9zGVDz2I321B/RnI6zvauaPGoZIDd8I6Q1WxDDHSVcT2LuZ1YEcH4I/hUi4aSZFB9w==","signatures":[{"sig":"MEQCIEkS5m+b9Xuy6yTyWU39b+L3X2WNDTggtGCbqC9oulxwAiB5hgFym0aaCmtok+NFgLQzqq+ssPQci4m9Ztqm3/QcQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22838585},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/cli.d.ts","import":"./dist/cli.js","default":"./dist/cli.js","require":"./dist/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"gitHead":"d6b1025ceb372476083361d6d6debe2d18faa7f5","scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"_npmVersion":"11.9.0","description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"_nodeVersion":"25.6.1","dependencies":{"picomatch":"^4.0.2","tinyglobby":"^0.2.15","@herb-tools/core":"0.9.1","@herb-tools/config":"0.9.1","@herb-tools/printer":"0.9.1","@herb-tools/rewriter":"0.9.1","@herb-tools/node-wasm":"0.9.1","@herb-tools/highlighter":"0.9.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.9.1_1773796528601_0.5456827180976116","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"@herb-tools/linter","version":"0.9.2","license":"MIT","_id":"@herb-tools/linter@0.9.2","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"3fce1ef1c3f30aeb9a9cf9d21392accfe1033f07","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.9.2.tgz","fileCount":520,"integrity":"sha512-LxOxfQjRah4hwKPSL4geZJ/rzgqKKlrKxk4Ek6PxQ1WMcymWDFbqEw1HaLiC5hGrKl+z7sBZskJQpTh6yK3JQA==","signatures":[{"sig":"MEQCIEfbsEpDTMZzL4TTDlXvprVoPlUpEcvD14M22Ml9+jqhAiA9/6hE2wB38ZgavHqHMC2zwa1AyB00bpAylV5YT9DD3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22867791},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/cli.d.ts","import":"./dist/cli.js","default":"./dist/cli.js","require":"./dist/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"gitHead":"ee69f667a0e88279b1054932b49c77b43b84555d","scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn clean && yarn build && yarn test"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"_npmVersion":"11.9.0","description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"_nodeVersion":"25.6.1","dependencies":{"picomatch":"^4.0.2","tinyglobby":"^0.2.15","@herb-tools/core":"0.9.2","@herb-tools/config":"0.9.2","@herb-tools/printer":"0.9.2","@herb-tools/rewriter":"0.9.2","@herb-tools/node-wasm":"0.9.2","@herb-tools/highlighter":"0.9.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.9.2_1773845413780_0.9802072224649545","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"name":"@herb-tools/linter","version":"0.9.3","license":"MIT","_id":"@herb-tools/linter@0.9.3","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"586223bee66698186ba41c62a91ceed8f2a0a6dd","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.9.3.tgz","fileCount":602,"integrity":"sha512-vErgx8C8rRQyO5l2qpehi5YvJzgGGFBkYYCpMhCM1dcYz4UxfIm6I7s6wkgjJBEIqHc6+a+ky0eA5DSnB5Ip8A==","signatures":[{"sig":"MEQCIQDRfMv6i9+88nx+EBWA01RjYTiwCELDqiJMnWfHp29i5gIfeDLkzCaNrEJ7krGKvfeBfFWZepTXVWm72b+HD86q5A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32467522},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/cli.d.ts","import":"./dist/cli.js","default":"./dist/cli.js","require":"./dist/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"gitHead":"6640d7a6d6208ea1b9fab57fc88aa148aa0e64f1","scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn check:rule-versions && yarn clean && yarn build && yarn test","check:rule-versions":"! grep -rl 'static introducedIn = \"unreleased\"' src/rules/ 2>/dev/null || (echo '\\n✗ Found linter rules with introducedIn = \"unreleased\". Update them to a release version before publishing.\\n' && exit 1)"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"_npmVersion":"11.6.2","description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"_nodeVersion":"24.13.0","dependencies":{"picomatch":"^4.0.4","tinyglobby":"^0.2.15","@herb-tools/core":"0.9.3","@herb-tools/config":"0.9.3","@herb-tools/printer":"0.9.3","@herb-tools/rewriter":"0.9.3","@herb-tools/node-wasm":"0.9.3","@herb-tools/highlighter":"0.9.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.9.3_1774844784046_0.796887458567171","host":"s3://npm-registry-packages-npm-production"}},"0.9.4":{"name":"@herb-tools/linter","version":"0.9.4","license":"MIT","_id":"@herb-tools/linter@0.9.4","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"045967b48dab1c6654058c618bb68d4e58108c7a","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.9.4.tgz","fileCount":607,"integrity":"sha512-3Ocbqtbd9SbuEnge9wSr6HNIPGg+nXn4MtfesQfso6bZpWlk+Ek25DkyOZddZR7MeIJo/aKBd2vf7sLHgXiOUQ==","signatures":[{"sig":"MEYCIQCDb2UL+mDKVj7/Xm07lR2gJizzF2eRB6CIIBWUnCAtcAIhAOvbmr3M6TFdOY29bGy6owOspLMvLNQBG/yLHJNusX30","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42774830},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/cli.d.ts","import":"./dist/cli.js","default":"./dist/cli.js","require":"./dist/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"gitHead":"ff6738a63c27870f7aed5e9992a3e1e5a8c91b87","scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn check:rule-versions && yarn clean && yarn build && yarn test","check:rule-versions":"! grep -rl 'static introducedIn = \"unreleased\"' src/rules/ 2>/dev/null || (echo '\\n✗ Found linter rules with introducedIn = \"unreleased\". Update them to a release version before publishing.\\n' && exit 1)"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"_npmVersion":"11.6.2","description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"_nodeVersion":"24.13.0","dependencies":{"picomatch":"^4.0.4","tinyglobby":"^0.2.15","@herb-tools/core":"0.9.4","@herb-tools/config":"0.9.4","@herb-tools/printer":"0.9.4","@herb-tools/rewriter":"0.9.4","@herb-tools/node-wasm":"0.9.4","@herb-tools/highlighter":"0.9.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.9.4_1775022185958_0.07854307833647467","host":"s3://npm-registry-packages-npm-production"}},"0.9.5":{"name":"@herb-tools/linter","version":"0.9.5","license":"MIT","_id":"@herb-tools/linter@0.9.5","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"d46486f351630161816632e8d9ebc39adbdf7837","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.9.5.tgz","fileCount":607,"integrity":"sha512-XUc0HPRdwCtMFq9+a/dlIRAHgRZ69hiwnlU7F1h53DdeyL41ZGkpFRM+p7DAc+dj62EMVkK150OWIocmLUgw+w==","signatures":[{"sig":"MEYCIQCLPkD3tt5He1shdUAemazi30Rnqk6nhF8Q54wrehvRswIhAKyS8N5fa5+nUHBf/ZJKPWVA6dKH2O1LpszmN6KjXmnc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43033970},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/cli.d.ts","import":"./dist/cli.js","default":"./dist/cli.js","require":"./dist/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"gitHead":"d5010894d6f0f4fcf7f85de4b4df2be2b7aac7b5","scripts":{"test":"echo 1","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn check:rule-versions && yarn clean && yarn build && yarn test","check:rule-versions":"! grep -rl 'static introducedIn = \"unreleased\"' src/rules/ 2>/dev/null || (echo '\\n✗ Found linter rules with introducedIn = \"unreleased\". Update them to a release version before publishing.\\n' && exit 1)"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"_npmVersion":"11.6.2","description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"_nodeVersion":"24.13.0","dependencies":{"picomatch":"^4.0.4","tinyglobby":"^0.2.15","@herb-tools/core":"0.9.5","@herb-tools/config":"0.9.5","@herb-tools/printer":"0.9.5","@herb-tools/rewriter":"0.9.5","@herb-tools/node-wasm":"0.9.5","@herb-tools/highlighter":"0.9.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.9.5_1775337834499_0.6563203998948073","host":"s3://npm-registry-packages-npm-production"}},"0.9.6":{"name":"@herb-tools/linter","version":"0.9.6","license":"MIT","_id":"@herb-tools/linter@0.9.6","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"ca4ad0523dc0d870b2b2dab709a8b03abdf601fd","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.9.6.tgz","fileCount":607,"integrity":"sha512-X7luRti9VcS/pQ/f71XqzaXogFg/oiCbbxZb+2VGjswbW4kzk+QW+C2KWXzeVth1VKFKnZGSS5C6zAHsp6IczA==","signatures":[{"sig":"MEUCIQCKnDadLDAeM0Oi1lRalSx1oR7KkCNllVDMRROj4t+pMAIgM+qltQNGaz5O7nv7szjucL/Om1FN54d4mmOR5TAG5OY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42937420},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/cli.d.ts","import":"./dist/cli.js","default":"./dist/cli.js","require":"./dist/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"gitHead":"fac8b7b7e729be4b9a7213e602213242979ea794","scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn check:rule-versions && yarn clean && yarn build && yarn test","check:rule-versions":"! grep -rl 'static introducedIn = \"unreleased\"' src/rules/ 2>/dev/null || (echo '\\n✗ Found linter rules with introducedIn = \"unreleased\". Update them to a release version before publishing.\\n' && exit 1)"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"_npmVersion":"11.9.0","description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"_nodeVersion":"25.6.1","dependencies":{"picomatch":"^4.0.4","tinyglobby":"^0.2.15","@herb-tools/core":"0.9.6","@herb-tools/config":"0.9.6","@herb-tools/printer":"0.9.6","@herb-tools/rewriter":"0.9.6","@herb-tools/node-wasm":"0.9.6","@herb-tools/highlighter":"0.9.6"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.9.6_1776101910441_0.36691081725375296","host":"s3://npm-registry-packages-npm-production"}},"0.9.7":{"name":"@herb-tools/linter","version":"0.9.7","license":"MIT","_id":"@herb-tools/linter@0.9.7","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"3bb2f154b0e0fcc4fc6a2ea96840ad2cf0862f8b","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.9.7.tgz","fileCount":607,"integrity":"sha512-2vdIzY3MXXHQQzAig1Hji5PpRWRjNa3VTN731WMANWdACHdeqx9y4Go/uB+XKkW1vdO9dOzAUdEsAASnuJimFg==","signatures":[{"sig":"MEYCIQDttUxUvGUA56TX32NbFK/ZdtxLF5rSu/reLto4S09iTwIhAKK/BfSfH3Oh7dj4ALnAq7WEN+UOVP5XzK8vu62yzMNi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42941900},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/cli.d.ts","import":"./dist/cli.js","default":"./dist/cli.js","require":"./dist/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"gitHead":"56e6f004729c11fea82f8449a579c029bd4cba05","scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn check:rule-versions && yarn clean && yarn build && yarn test","check:rule-versions":"! grep -rl 'static introducedIn = \"unreleased\"' src/rules/ 2>/dev/null || (echo '\\n✗ Found linter rules with introducedIn = \"unreleased\". Update them to a release version before publishing.\\n' && exit 1)"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"_npmVersion":"11.9.0","description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"_nodeVersion":"25.6.1","dependencies":{"picomatch":"^4.0.4","tinyglobby":"^0.2.15","@herb-tools/core":"0.9.7","@herb-tools/config":"0.9.7","@herb-tools/printer":"0.9.7","@herb-tools/rewriter":"0.9.7","@herb-tools/node-wasm":"0.9.7","@herb-tools/highlighter":"0.9.7"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.9.7_1776558973706_0.34933993822690024","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@herb-tools/linter","version":"0.10.0","license":"MIT","_id":"@herb-tools/linter@0.10.0","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"02ab1c5e713260c50d957f0723016e318d14d373","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.10.0.tgz","fileCount":607,"integrity":"sha512-WUz+4C6hT3V+RITQ5utVdTVmARecF14crUwsReBZME8rQwkQWxx8H+ztfuOc9e/iAybJeRtpbjYF2/edEEOR9w==","signatures":[{"sig":"MEUCIQDIYhWwSLoGr35c1JBtYCHMpjxxdA5cZr2ui1NAAppNoQIgc7xHbsNButTXudGAN0oAYKRSPyFlQgvfzsTey7yeo/Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43149073},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/cli.d.ts","import":"./dist/cli.js","default":"./dist/cli.js","require":"./dist/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"gitHead":"abeecad811b8be37adf132f0105724e460161b82","scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn check:rule-versions && yarn clean && yarn build && yarn test","check:rule-versions":"! grep -rl 'static introducedIn = \"unreleased\"' src/rules/ 2>/dev/null || (echo '\\n✗ Found linter rules with introducedIn = \"unreleased\". Update them to a release version before publishing.\\n' && exit 1)"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"_npmVersion":"11.9.0","description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"_nodeVersion":"25.6.1","dependencies":{"picomatch":"^4.0.4","tinyglobby":"^0.2.15","@herb-tools/core":"0.10.0","@herb-tools/config":"0.10.0","@herb-tools/printer":"0.10.0","@herb-tools/rewriter":"0.10.0","@herb-tools/node-wasm":"0.10.0","@herb-tools/highlighter":"0.10.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.10.0_1777010719147_0.44560557555330615","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"@herb-tools/linter","version":"0.10.1","license":"MIT","_id":"@herb-tools/linter@0.10.1","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"53629597a82ebe2514543b23410a8baa3e18db5a","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.10.1.tgz","fileCount":607,"integrity":"sha512-2K+8PJ6FbS8+nrR7IaMTLdlyO5Ci/dAd4lOngvQMvuwoCiYysvAtTeSySSJtAhgL2YhlneLM+Crw1QN3AsnC2g==","signatures":[{"sig":"MEUCICd0TJbI6VsVf41K/aV3NreVhFp1ABOqMcRk6oylJDzhAiEAxpSf4W6pVOEYBW+rNYaym3V+edc9CvdBQDm1/CyZPdY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43149051},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/cli.d.ts","import":"./dist/cli.js","default":"./dist/cli.js","require":"./dist/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"gitHead":"f681767b9b97ef91605cb6fc59deccfdba18f50a","scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn check:rule-versions && yarn clean && yarn build && yarn test","check:rule-versions":"! grep -rl 'static introducedIn = \"unreleased\"' src/rules/ 2>/dev/null || (echo '\\n✗ Found linter rules with introducedIn = \"unreleased\". Update them to a release version before publishing.\\n' && exit 1)"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"_npmVersion":"11.9.0","description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"_nodeVersion":"25.6.1","dependencies":{"picomatch":"^4.0.4","tinyglobby":"^0.2.15","@herb-tools/core":"0.10.1","@herb-tools/config":"0.10.1","@herb-tools/printer":"0.10.1","@herb-tools/rewriter":"0.10.1","@herb-tools/node-wasm":"0.10.1","@herb-tools/highlighter":"0.10.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.10.1_1777075312678_0.14357599449464153","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"name":"@herb-tools/linter","version":"0.10.2","license":"MIT","_id":"@herb-tools/linter@0.10.2","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"51a8a350b47e3e6c8a7a679eabbc196e3bfaf6c8","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.10.2.tgz","fileCount":637,"integrity":"sha512-0B8kT3jrSJwwmjjW0IFOreloF/9yrGm9ti931TxVG54u0PYDNI8ONRLub0sSzbPlKqPFtJXhjN7lPRqQdGz3Ow==","signatures":[{"sig":"MEQCIGKcJ1JAJ9VBXkMiyyWvYHK2NAAPABmN9cRzseKE59uKAiAg6a7Nao2YzFUJIrxyXFSuj1T4HIjVzkIG03wVgrISZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43624420},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/cli.d.ts","import":"./dist/cli.js","default":"./dist/cli.js","require":"./dist/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"gitHead":"b2244546d4a949d6867e3a9f987062d16f35e74b","scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn check:rule-versions && yarn clean && yarn build && yarn test","check:rule-versions":"! grep -rl 'static introducedIn = \"unreleased\"' src/rules/ 2>/dev/null || (echo '\\n✗ Found linter rules with introducedIn = \"unreleased\". Update them to a release version before publishing.\\n' && exit 1)"},"_npmUser":{"name":"marcoroth","email":"marco.roth@hey.com"},"repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"_npmVersion":"11.13.0","description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"_nodeVersion":"24.16.0","dependencies":{"picomatch":"^4.0.5","tinyglobby":"^0.2.15","@herb-tools/core":"0.10.2","@herb-tools/config":"0.10.2","@herb-tools/printer":"0.10.2","@herb-tools/rewriter":"0.10.2","@herb-tools/node-wasm":"0.10.2","@herb-tools/highlighter":"0.10.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.10.2_1783908312509_0.3405191572447386","host":"s3://npm-registry-packages-npm-production"}},"0.10.3":{"name":"@herb-tools/linter","version":"0.10.3","license":"MIT","_id":"@herb-tools/linter@0.10.3","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"cc39050466f43d2e196286e2bcb7a1a0aab99077","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.10.3.tgz","fileCount":642,"integrity":"sha512-uNwJZkzswJ/IcpsjbuEzOXQQcfc40KGy8Ao1L69na2J6H7b4LFig2OIZ22vJasGdv4jODWJWnMDozRvWuv1vFA==","signatures":[{"sig":"MEYCIQDuFIE45O21/dK/i3hvPE5053j3EK4K1ENq3MFs1lsM1wIhAN7pUWASjYPT/JVSwSUiKlYZPYlm1ZKPbYtg1WPfS5Bc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@herb-tools%2flinter@0.10.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":41785371},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/cli.d.ts","import":"./dist/cli.js","default":"./dist/cli.js","require":"./dist/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"gitHead":"0172f0fd599349fbbe2e701cf979ef34138157d8","scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn check:rule-versions && yarn clean && yarn build && yarn test","check:rule-versions":"! grep -rl 'static introducedIn = \"unreleased\"' src/rules/ 2>/dev/null || (echo '\\n✗ Found linter rules with introducedIn = \"unreleased\". Update them to a release version before publishing.\\n' && exit 1)"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8de79331-079d-4b37-aca5-572d22b80023"}},"repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"_npmVersion":"11.13.0","description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"_nodeVersion":"24.16.0","dependencies":{"picomatch":"^4.0.5","tinyglobby":"^0.2.15","@ruby/prism":"^1.9.0","@herb-tools/core":"0.10.3","@herb-tools/config":"0.10.3","@herb-tools/printer":"0.10.3","@herb-tools/rewriter":"0.10.3","@herb-tools/node-wasm":"0.10.3","@herb-tools/highlighter":"0.10.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.10.3_1785590966366_0.9756722798201813","host":"s3://npm-registry-packages-npm-production"}},"0.10.4":{"name":"@herb-tools/linter","version":"0.10.4","license":"MIT","_id":"@herb-tools/linter@0.10.4","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"homepage":"https://herb-tools.dev","bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"bin":{"herb-lint":"bin/herb-lint"},"dist":{"shasum":"d6a71d0c3bcddc098ce9d7a0895151b291533b0f","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.10.4.tgz","fileCount":642,"integrity":"sha512-Of63S0S55qcFViEsqXpIPcQ9pIGUPYrQXqyVaPv36Ntj0jFuDn5tUb0hYBZcT7eSkG5Eq7PsP7g6CELba7O25w==","signatures":[{"sig":"MEUCIQCyE+nxIcTRmJU2cPdJO+hN9m80lS+4mkgw3PZLrPdCSAIgb4evQ9J7R7U8jjAtaaRZ6jdw9zRuE7C6Jm/9MczABAg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@herb-tools%2flinter@0.10.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":41785403},"main":"./dist/index.cjs","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/cli.d.ts","import":"./dist/cli.js","default":"./dist/cli.js","require":"./dist/cli.js"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./package.json":"./package.json"},"gitHead":"785f1be829a6a0a80180dc0895228f8e3d030835","scripts":{"test":"vitest run","build":"yarn clean && tsc -b && rollup -c","clean":"rimraf dist","watch":"tsc -b -w","test:watch":"vitest --watch","prepublishOnly":"yarn check:rule-versions && yarn clean && yarn build && yarn test","check:rule-versions":"! grep -rl 'static introducedIn = \"unreleased\"' src/rules/ 2>/dev/null || (echo '\\n✗ Found linter rules with introducedIn = \"unreleased\". Update them to a release version before publishing.\\n' && exit 1)"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8de79331-079d-4b37-aca5-572d22b80023"}},"repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"_npmVersion":"11.13.0","description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"_nodeVersion":"24.16.0","dependencies":{"picomatch":"^4.0.5","tinyglobby":"^0.2.15","@ruby/prism":"^1.9.0","@herb-tools/core":"0.10.4","@herb-tools/config":"0.10.4","@herb-tools/printer":"0.10.4","@herb-tools/rewriter":"0.10.4","@herb-tools/node-wasm":"0.10.4","@herb-tools/highlighter":"0.10.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/linter_0.10.4_1789026466754_0.5182403291521838","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"_id":"@herb-tools/linter@0.11.0","bin":{"herb-lint":"bin/herb-lint"},"bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"dist":{"shasum":"9ca97f1ba1299d8080eddcf0b82ea8c24ed61061","tarball":"https://registry.npmjs.org/@herb-tools/linter/-/linter-0.11.0.tgz","fileCount":618,"integrity":"sha512-lEHLMZG92JMMu/63CEKXPGkV1VgeQ4fBYTsXdXwo/vd6Fil6+LQ6NjrMv1yll1ZyykSPIcqxQG+dBgI3q/HJVQ==","signatures":[{"sig":"MEYCIQCypeGAaMYOKfS8sZvx/x5yr/Ss+9e+Eay25R0SaL5H1wIhALo6OBDLc16iiNuI8gNuvACWER1o0j67OXzYbYESks7r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHERvdCI0dg2RrRvN+x4x5PuhhO3HHjje+56Ch2jgYHmAiEA18KSHbrVwO5sz/fZz6n9lbCmoMBtl2Xq4jysWahoEBI="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@herb-tools%2flinter@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17025882},"main":"./dist/index.cjs","name":"@herb-tools/linter","types":"./dist/types/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"},"./cli":{"types":"./dist/types/cli.d.ts","import":"./dist/cli.js","default":"./dist/cli.js","require":"./dist/cli.cjs"},"./loader":{"types":"./dist/types/loader.d.ts","import":"./dist/loader.js","default":"./dist/loader.js","require":"./dist/loader.cjs"},"./browser":{"types":"./dist/types/browser/index.d.ts","import":"./dist/browser/index.js","default":"./dist/browser/index.js"},"./package.json":"./package.json"},"gitHead":"c54649b8c0a46c220302657be828851e37b602e5","license":"MIT","scripts":{"test":"vitest run","build":"yarn clean && tsc --emitDeclarationOnly && rolldown -c","clean":"rimraf dist","watch":"tsc --emitDeclarationOnly -w","typecheck":"tsc -p tsconfig.test.json && tsc -p tsconfig.browser-test.json","test:watch":"vitest --watch","prepublishOnly":"yarn check:rule-versions && yarn clean && yarn build && yarn test","check:rule-versions":"! grep -rlE '(introducedIn|defaultEnabledIn) = (this\\.version\\()?\"unreleased\"' src/rules/ 2>/dev/null || (echo '\\n✗ Found linter rules with a version of \"unreleased\". Update them to a release version before publishing.\\n' && exit 1)"},"version":"0.11.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8de79331-079d-4b37-aca5-572d22b80023"}},"homepage":"https://herb-tools.dev","repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"_npmVersion":"11.13.0","description":"HTML+ERB linter for validating HTML structure and enforcing best practices","directories":{},"maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"_nodeVersion":"24.16.0","dependencies":{"postcss":"^8.5.26","picomatch":"^4.0.7","tinyglobby":"^0.2.15","@ruby/prism":"^1.9.0","@herb-tools/core":"0.11.0","@herb-tools/client":"0.11.0","@herb-tools/config":"0.11.0","@herb-tools/printer":"0.11.0","@herb-tools/analysis":"0.11.0","@herb-tools/rewriter":"0.11.0","@herb-tools/node-wasm":"0.11.0","@herb-tools/highlighter":"0.11.0","postcss-selector-parser":"^7.1.6"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/linter_0.11.0_1790260374177_0.699999093440199"}}},"time":{"created":"2025-07-10T15:56:17.008Z","modified":"2026-09-24T14:32:54.735Z","0.4.0":"2025-07-10T15:56:17.369Z","0.4.1":"2025-07-22T05:16:20.707Z","0.4.2":"2025-07-27T22:25:58.764Z","0.4.3":"2025-08-03T22:13:37.026Z","0.5.0":"2025-08-17T23:53:22.293Z","0.6.0":"2025-08-25T01:20:32.977Z","0.6.1":"2025-08-26T17:05:47.006Z","0.7.0":"2025-09-05T09:57:01.428Z","0.7.1":"2025-09-14T20:46:44.641Z","0.7.2":"2025-09-17T02:05:02.782Z","0.7.3":"2025-09-23T10:41:44.263Z","0.7.4":"2025-09-26T15:11:37.094Z","0.7.5":"2025-10-06T05:36:21.106Z","0.8.0":"2025-11-12T16:13:03.215Z","0.8.1":"2025-11-14T12:32:53.795Z","0.8.2":"2025-11-18T01:30:14.988Z","0.8.3":"2025-12-02T02:37:40.232Z","0.8.4":"2025-12-08T12:46:01.982Z","0.8.5":"2025-12-19T20:11:47.846Z","0.8.6":"2025-12-25T22:49:26.294Z","0.8.7":"2026-01-05T21:45:48.651Z","0.8.8":"2026-01-18T23:29:38.792Z","0.8.9":"2026-01-27T06:17:21.196Z","0.8.10":"2026-02-10T23:18:28.533Z","0.9.0":"2026-03-13T20:54:20.447Z","0.9.1":"2026-03-18T01:15:28.900Z","0.9.2":"2026-03-18T14:50:14.035Z","0.9.3":"2026-03-30T04:26:24.398Z","0.9.4":"2026-04-01T05:43:06.336Z","0.9.5":"2026-04-04T21:23:54.821Z","0.9.6":"2026-04-13T17:38:30.885Z","0.9.7":"2026-04-19T00:36:14.082Z","0.10.0":"2026-04-24T06:05:19.514Z","0.10.1":"2026-04-25T00:01:52.996Z","0.10.2":"2026-07-13T02:05:12.761Z","0.10.3":"2026-08-01T13:29:26.691Z","0.10.4":"2026-09-10T07:47:47.007Z","0.11.0":"2026-09-24T14:32:54.372Z"},"bugs":{"url":"https://github.com/marcoroth/herb/issues/new?title=Package%20%60@herb-tools/linter%60:%20"},"license":"MIT","homepage":"https://herb-tools.dev","repository":{"url":"git+https://github.com/marcoroth/herb.git","type":"git","directory":"javascript/packages/linter"},"description":"HTML+ERB linter for validating HTML structure and enforcing best practices","maintainers":[{"name":"marcoroth","email":"marco.roth@hey.com"}],"readme":"# Herb Linter\n\n**Package**: [`@herb-tools/linter`](https://www.npmjs.com/package/@herb-tools/linter)\n\n---\n\nThe Herb Linter provides comprehensive HTML+ERB validation with a set of configurable rules to enforce best practices and catch common errors.\n\n## Installation\n\n### Global Installation\n\n:::code-group\n\n```shell [npm]\nnpm install -g @herb-tools/linter\n```\n\n```shell [pnpm]\npnpm add -g @herb-tools/linter\n```\n\n```shell [yarn 1]\nyarn global add @herb-tools/linter\n```\n\n```shell [yarn 4]\nyarn dlx @herb-tools/linter template.html.erb\n```\n\n```shell [bun]\nbun add -g @herb-tools/linter\n```\n\n:::\n\n### One-time Usage\nFor occasional use without installing:\n```bash\nnpx @herb-tools/linter template.html.erb\n```\n\n### Preview Releases\n\nWant to try unreleased features? Use pkg.pr.new to run the linter from any commit or PR:\n\n```bash\nnpx https://pkg.pr.new/@herb-tools/linter@{commit} template.html.erb\n```\n\nReplace `{commit}` with a commit SHA (e.g., `0d2eabe`) or branch name (e.g., `main`). Find available previews at [pkg.pr.new/~/marcoroth/herb](https://pkg.pr.new/~/marcoroth/herb).\n\n### Project Installation\n\n:::code-group\n\n```shell [npm]\nnpm add -D @herb-tools/linter\n```\n\n```shell [pnpm]\npnpm add -D @herb-tools/linter\n```\n\n```shell [yarn]\nyarn add -D @herb-tools/linter\n```\n\n```shell [bun]\nbun add -D @herb-tools/linter\n```\n\n:::\n\nAfter installing as a dev dependency, initialize the configuration:\n\n:::code-group\n\n```shell [npm]\nnpx herb-lint --init\n```\n\n```shell [pnpm]\npnpm herb-lint --init\n```\n\n```shell [yarn]\nyarn herb-lint --init\n```\n\n```shell [bun]\nbunx herb-lint --init\n```\n\n:::\n\nThen add a lint NPM script to your `package.json`:\n```json [package.json]\n{\n  \"scripts\": {\n    \"herb:lint\": \"herb-lint\"\n  }\n}\n```\n\nThen run the scripts:\n\n:::code-group\n\n```shell [npm]\nnpm run herb:lint\n```\n\n```shell [pnpm]\npnpm herb:lint\n```\n\n```shell [yarn]\nyarn herb:lint\n```\n\n```shell [bun]\nbun run herb:lint\n```\n\n:::\n\n## Usage\n\n### Command Line\n\nBasic usage:\n```bash\nnpx @herb-tools/linter\nnpx @herb-tools/linter app/views/\nnpx @herb-tools/linter template.html.erb\nnpx @herb-tools/linter \"**/*.rhtml\"\nnpx @herb-tools/linter \"**/*.xml.erb\"\n```\n\n**Initialize configuration:**\n```bash\n# Create a .herb.yml configuration file\nnpx @herb-tools/linter --init\n```\n\n#### Options\n\n**Output Format:**\n```bash\n# Use detailed output (default)\nnpx @herb-tools/linter template.html.erb --format detailed\n\n# Use simple output format\nnpx @herb-tools/linter template.html.erb --simple\n# or\nnpx @herb-tools/linter template.html.erb --format simple\n\n# Use JSON output format\nnpx @herb-tools/linter template.html.erb --json\n# or\nnpx @herb-tools/linter template.html.erb --format json\n\n# Use GitHub Actions output format with detailed preview (default)\n# (This is enabled automatically when the GITHUB_ACTIONS environment variable is set)\nnpx @herb-tools/linter template.html.erb --github\n\n# Combine GitHub Actions output with simple format\nnpx @herb-tools/linter template.html.erb --format=simple --github\n\n# Combine GitHub Actions output with detailed format (explicit)\nnpx @herb-tools/linter template.html.erb --format=detailed --github\n```\n\n**Display Options:**\n```bash\n# Disable colored output\nnpx @herb-tools/linter template.html.erb --no-color\n\n# Set syntax highlighting theme\nnpx @herb-tools/linter template.html.erb --theme github-dark\n\n# Disable timing information\nnpx @herb-tools/linter template.html.erb --no-timing\n\n# Disable line wrapping\nnpx @herb-tools/linter template.html.erb --no-wrap-lines\n\n# Enable line truncation (mutually exclusive with line wrapping)\nnpx @herb-tools/linter template.html.erb --truncate-lines --no-wrap-lines\n\n# Combine GitHub Actions annotations with different formats\nnpx @herb-tools/linter template.html.erb --format=simple --github\n\n# Disable GitHub Actions annotations (even in GitHub Actions environment)\nnpx @herb-tools/linter template.html.erb --no-github\n```\n\n**Exit Behavior:** <Badge type=\"info\" text=\"v0.8.7+\" />\n\nBy default, the linter exits with code `1` only when errors are present. The `--fail-level` option allows you to control this behavior for CI/CD pipelines where you want stricter enforcement. Valid values are: `error` (default), `warning`, `info`, `hint`.\n\nExit with error code when warnings or higher are present:\n```bash\nnpx @herb-tools/linter template.html.erb --fail-level warning\n```\n\nExit with error code when info diagnostics or higher are present:\n```bash\nnpx @herb-tools/linter template.html.erb --fail-level info\n```\n\nExit with error code when any diagnostic (including hints) is present:\n```bash\nnpx @herb-tools/linter template.html.erb --fail-level hint\n```\n\nThis can also be configured in `.herb.yml`:\n```yaml [.herb.yml]\nlinter:\n  failLevel: warning\n```\n\nThe CLI flag takes precedence over the configuration file.\n\n**Reported Severities:** <Badge type=\"info\" text=\"^0.11.0\" />\n\nBy default, every offense is reported. The `--log-level` option keeps low-severity noise out of the output and out of GitHub Actions annotations, which is useful on large codebases where `hint` and `info` offenses would otherwise drown out the ones you care about.\n\nOnly report errors, hiding warnings, info and hints:\n```bash\nnpx @herb-tools/linter template.html.erb --log-level error\n```\n\nOnly report warnings and errors:\n```bash\nnpx @herb-tools/linter template.html.erb --log-level warning\n```\n\nOffenses below the level are still counted: they show up in the summary, they still count towards `--fail-level`, and they still show up in your editor. Only the individual reports (and CI annotations) are omitted.\n\nThis can also be configured in `.herb.yml`:\n```yaml [.herb.yml]\nlinter:\n  logLevel: warning\n```\n\nThe CLI flag takes precedence over the configuration file.\n\n**Running Specific Rules:** <Badge type=\"info\" text=\"^0.10.3\" />\n\nOnly run a single rule:\n```bash\nnpx @herb-tools/linter --only html-img-require-alt\n```\n\nOnly run multiple rules (comma-separated):\n```bash\nnpx @herb-tools/linter --only html-img-require-alt,html-tag-name-lowercase\n```\n\nThe flag can also be passed multiple times:\n```bash\nnpx @herb-tools/linter --only html-img-require-alt --only html-tag-name-lowercase\n```\n\nCombine it with `--fix` to only autocorrect a specific rule:\n```bash\nnpx @herb-tools/linter --fix --only html-tag-name-lowercase\n```\n\nThe `--only` option runs exactly the given rules and ignores the rule configuration in `.herb.yml`. This means rules are run even if they are:\n\n- disabled via `enabled: false`\n- not enabled by default\n- skipped because they were introduced after the `version` in your `.herb.yml`\n- excluded for the linted files via rule-level `only`, `include` or `exclude` patterns\n\nThis is useful for rolling out a single rule across a codebase, or for checking what a rule would report before enabling it in `.herb.yml`.\n\nEverything else still applies: which files get linted is unchanged, severity overrides from `.herb.yml` are respected, and offenses suppressed with `<%# herb:disable %>` comments stay suppressed (use `--ignore-disable-comments` to report them anyway).\n\nPassing an unknown rule name exits with an error, so typos won't silently lint nothing.\n\n**Running Every Rule:** <Badge type=\"info\" text=\"^0.10.3\" />\n\nRun every available rule, regardless of how it is configured:\n```bash\nnpx @herb-tools/linter --all-rules\n```\n\n`--all-rules` is the counterpart to `--only`: instead of narrowing the run down to a set of rules, it widens it to all of them. The same parts of the rule configuration in `.herb.yml` are ignored, so rules are run even if they are:\n\n- disabled via `enabled: false`\n- not enabled by default\n- skipped because they were introduced after the `version` in your `.herb.yml`\n- excluded for the linted files via rule-level `only`, `include` or `exclude` patterns\n\nThis is useful for seeing everything Herb could report about a codebase, without changing `.herb.yml` first.\n\nJust like with `--only`, everything else still applies: which files get linted is unchanged, severity overrides from `.herb.yml` are respected, and offenses suppressed with `<%# herb:disable %>` comments stay suppressed (use `--ignore-disable-comments` to report them anyway).\n\nSince the two flags pull in opposite directions, `--all-rules` and `--only` can't be combined.\n\n**Autofix:**\n\nAutomatically fix auto-correctable offenses:\n```bash\nnpx @herb-tools/linter --fix\n```\n\nAlso apply unsafe auto-fixes (implies `--fix`):\n```bash\nnpx @herb-tools/linter --fix-unsafely\n```\n\nThe `--fix` flag automatically corrects offenses that have safe, deterministic fixes (like formatting issues). The `--fix-unsafely` flag additionally applies fixes that may change code behavior or require manual review after application.\n\n**Safe fixes** (`--fix`):\n- Formatting corrections (whitespace, quotes, trailing newlines)\n- Syntax normalization (tag casing, attribute formatting)\n\n**Unsafe fixes** (`--fix-unsafely`):\n- Changes that may alter runtime behavior\n- Insertions that require manual completion (e.g., adding empty strict locals declarations)\n\n::: warning\nAlways review changes made by `--fix-unsafely` before committing. These fixes are intentionally separated because they may require additional manual adjustments.\n:::\n\nCorrections are previewed automatically while a run has at most 20 correctable offenses, so most runs show them without being asked. Past that the diffs would crowd out the offenses themselves, and a tip points at the flag instead:\n\n```bash\nnpx @herb-tools/linter --show-fix-diff\n```\n\nEach correctable offense is followed by a syntax-highlighted diff of the correction, with the characters that would actually change picked out. Nothing is written to disk, the heading names the flag that would apply it:\n\n```\n        Running --fix would correct this to:\n\n        app/views/gems/index.html.erb\n\n              2 │   <img src=\"a.png\">\n          -   3 │   <span class='card'>Hello</span>\n          +     │   <span class=\"card\">Hello</span>\n              4 │ </div>\n```\n\nOffenses that need `--fix-unsafely` say so instead, so the heading always names the flag that applies. `--show-fix-diff` has no effect on `--json` output.\n\n**Help and Version:**\n```bash\n# Show help\nnpx @herb-tools/linter --help\n\n# Show version information\nnpx @herb-tools/linter --version\n```\n\n#### GitHub Actions Output Format\n\nThe linter supports GitHub Actions annotation format with the `--github` flag, which can be combined with `--format=simple` or `--format=detailed`. The `--github` flag adds GitHub Actions annotations that GitHub can parse to create inline annotations in pull requests, while also showing the regular format output for local debugging.\n\n::: tip Tip: Running in GitHub Actions\nWhen the `GITHUB_ACTIONS` environment variable is set (as in GitHub Actions), GitHub Actions annotations are enabled by default. You can disable them with `--no-github` if needed.\n:::\n\n```bash\n# GitHub Actions annotations + detailed format (default)\nnpx @herb-tools/linter --github\n\n# GitHub Actions annotations + simple format (minimal local output)\nnpx @herb-tools/linter --format=simple --github\n```\n\n**Example: `--github` (GitHub annotations + detailed format)**\n```\n::error file=template.html.erb,line=3,col=3,title=html-img-require-alt • @herb-tools/linter@0.11.0::Missing required `alt` attribute on `<img>` tag [html-img-require-alt]%0A%0A%0Atemplate.html.erb:3:3%0A%0A      1 │ <div>%0A      2 │   <span>Test content</span>%0A  →   3 │   <img src=\"test.jpg\">%0A        │    ~~~%0A      4 │ </div>%0A\n\n[error] Missing required `alt` attribute on `<img>` tag [html-img-require-alt]\n\ntemplate.html.erb:3:3\n\n      1 │ <div>\n      2 │   <span>Test content</span>\n  →   3 │   <img src=\"test.jpg\">\n        │    ~~~\n      4 │ </div>\n```\n\n**Example: `--format=simple --github` (GitHub annotations + simple format)**\n```\n::error file=template.html.erb,line=3,col=3,title=html-img-require-alt • @herb-tools/linter@0.11.0::Missing required `alt` attribute on `<img>` tag [html-img-require-alt]%0A%0A%0Atemplate.html.erb:3:3%0A%0A      1 │ <div>%0A      2 │   <span>Test content</span>%0A  →   3 │   <img src=\"test.jpg\">%0A        │    ~~~%0A      4 │ </div>%0A\n\ntemplate.html.erb:\n  3:3 ✗ Missing required `alt` attribute on `<img>` tag [html-img-require-alt]\n```\n\nThe GitHub Actions annotations include:\n- **Embedded plain-text code previews** (with `%0A` for newlines) that GitHub renders in PR comments\n- **`title` property** showing the rule code and linter version for better traceability\n- **Full error context** for debugging directly in GitHub's UI\n\nThe regular format output provides colorful syntax highlighting for local terminal debugging.\n\nThis approach is ideal for CI/CD workflows as it provides both GitHub integration and local debugging:\n\n```yaml [.github/workflows/herb.yml]\nname: Herb Lint\non: [push, pull_request]\n\njobs:\n  lint:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Run Herb Linter\n        run: npx @herb-tools/linter\n```\n\n#### JSON Output Format\n\nThe linter supports structured JSON output with the `--json` flag, useful for programmatic consumption:\n\n```bash\nnpx @herb-tools/linter template.html.erb --json\n```\n\n<details>\n<summary>Example output:</summary>\n\n```json\n{\n  \"offenses\": [\n    {\n      \"filename\": \"template.html.erb\",\n      \"message\": \"File must end with trailing newline\",\n      \"location\": {\n        \"start\": { \"line\": 1, \"column\": 21 },\n        \"end\": { \"line\": 1, \"column\": 22 }\n      },\n      \"severity\": \"error\",\n      \"code\": \"erb-require-trailing-newline\",\n      \"source\": \"Herb Linter\"\n    }\n  ],\n  \"summary\": {\n    \"filesChecked\": 1,\n    \"filesWithOffenses\": 1,\n    \"totalErrors\": 1,\n    \"totalWarnings\": 0,\n    \"totalOffenses\": 1,\n    \"ruleCount\": 21\n  },\n  \"timing\": {\n    \"startTime\": \"2025-08-14T16:00:48.845Z\",\n    \"duration\": 27\n  },\n  \"completed\": true,\n  \"clean\": false,\n  \"message\": null\n}\n```\n\n</details>\n\nJSON output fields:\n- `offenses`: Array of linting offenses with location and severity\n- `summary`: Statistics about the linting run (`null` on errors)\n- `timing`: Timing information with ISO timestamp (`null` with `--no-timing`)\n- `completed`: Whether the linter ran successfully on files\n- `clean`: Whether there were no offenses (`null` when `completed=false`)\n- `message`: Error or informational message (`null` on success)\n\n### Disabling Rules Inline <Badge type=\"info\" text=\"v0.8.0+\" />\n\nYou can disable linting rules for specific lines using inline comments. This is useful when you need to allow certain code that would otherwise trigger a linting offense.\n\n#### Disabling a Single Rule\n\nAdd a comment at the end of the line with `herb:disable` followed by the rule name:\n\n```erb\n<DIV>test</DIV> <%# herb:disable html-tag-name-lowercase %>\n```\n\n#### Disabling Multiple Rules\n\nYou can disable multiple rules on the same line by separating rule names with commas:\n\n```erb\n<DIV id='test' class=\"<%= \"hello\" %>\">test</DIV> <%# herb:disable html-tag-name-lowercase, html-attribute-double-quotes %>\n```\n\n#### Disabling All Rules\n\nTo disable all linting rules for a specific line, use `all`:\n\n```erb\n<DIV id='test' class=\"<%= \"hello\" %>\">test</DIV> <%# herb:disable all %>\n```\n\n::: warning Important\nInline disable comments only affect the line they appear on. Each line that needs linting disabled must have its own disable comment.\n:::\n\n### Disabling Linting for Entire Files <Badge type=\"info\" text=\"v0.8.2+\" />\n\nYou can disable linting for an entire file by adding the `ignore` directive anywhere in your template:\n\n```erb\n<%# herb:linter ignore %>\n```\n\n**Example:**\n\n:::code-group\n```erb [ignored.html.erb]\n<%# herb:linter ignore %>\n\n<DIV>\n  <SPAN>This entire file will not be linted</SPAN>\n</DIV>\n```\n\n```erb [regular.html.erb]\n<DIV>\n  <SPAN>This entire file will be linted</SPAN>\n</DIV>\n```\n:::\n\n::: warning Important\nThe `<%# herb:linter ignore %>` directive must be an exact match. Extra text or spacing will prevent it from working.\n:::\n\n### File-scoped counter suppression <Badge type=\"info\" text=\"v0.11.0+\" />\n\nFor files with many pre-existing offenses that you plan to fix over time, `herb:disable` accepts an optional per-rule count (or `all`) that baselines the current number of offenses of a single rule without silencing new offenses of the same rule elsewhere in the file.\n\n```erb\n<%# herb:disable html-tag-name-lowercase 3 %>\n\n<DIV></DIV>\n<DIV></DIV>\n<DIV></DIV>\n```\n\nThe first three `html-tag-name-lowercase` offenses in this file are suppressed. If a fourth is introduced it will be reported, and the linter will also raise `herb-disable-comment-out-of-date` so the count and the file stay in sync as you fix offenses.\n\nYou can mix line-scoped and file-scoped entries in a single comment:\n\n```erb\n<%# herb:disable rule-a, rule-b 3, rule-c all %>\n```\n\n`rule-a` is line-scoped (existing behavior); `rule-b` has a file-scoped count; `rule-c` is fully waived for the file.\n\n#### Semantics\n\nGiven `N` = the count on a file-scoped entry and `E` = the number of offenses of that rule in the file (after line-scoped `herb:disable` filtering):\n\n| Case              | Behavior                                                                                              |\n| ----------------- | ----------------------------------------------------------------------------------------------------- |\n| `N == E`          | All `E` offenses are suppressed.                                                                      |\n| `N > E`           | Every offense is still reported; `herb-disable-comment-out-of-date` reports the drift (autofix updates `N`). |\n| `0 < N < E`       | The first `N` offenses are suppressed; `herb-disable-comment-out-of-date` reports the drift (autofix updates `N`). |\n| `N > 0`, `E == 0` | `herb-disable-comment-out-of-date` fires with the \"remove the count\" variant.                        |\n| `N == 0`, `E == 0`| No offense; no drift.                                                                                 |\n| `all`             | All offenses are suppressed; drift is never reported.                                                 |\n\nFile-scoped entries must reference a known rule name and can only appear once per rule per file. Malformed entries, unknown rule names, and duplicates within one comment are reported by the existing herb-disable meta-rules:\n\n- `herb-disable-comment-malformed`\n- `herb-disable-comment-valid-rule-name`\n- `herb-disable-comment-no-duplicate-rules`\n- `herb-disable-comment-out-of-date`\n\n#### Updating counts\n\nTo bulk-refresh file-scoped counts after a large refactor, run the linter with `--update-disable-counts`. This applies the `herb-disable-comment-out-of-date` autofix across your project, updating each entry to match the current offense count (and dropping entries whose actual count is zero):\n\n```bash\nnpx @herb-tools/linter --update-disable-counts\n```\n\n#### Ignoring counts\n\nTo report all offenses regardless of file-scoped counts, pass `--ignore-disable-comments`. It disables both line-scoped and file-scoped suppression:\n\n```bash\nnpx @herb-tools/linter --ignore-disable-comments\n```\n\n::: tip\nPrefer plain line-scoped `herb:disable` comments when you have a small number of intentional exceptions. Use a file-scoped count when you want to baseline a large number of offenses in a file and drive the count down over time without silencing new offenses. Use `all` when you want to permanently waive a rule for a file.\n:::\n\n## Configuration\n\nCreate a `.herb.yml` file in your project root to configure the linter:\n\n```bash\nnpx @herb-tools/linter --init\n```\n\n### Basic Configuration\n\n```yaml [.herb.yml]\nlinter:\n  enabled: true\n\n  # # Exit with error code when diagnostics of this severity or higher are present\n  # # Valid values: error (default), warning, info, hint\n  # failLevel: warning\n\n  # # Only report diagnostics of this severity or higher\n  # # Valid values: error, warning, info, hint (default)\n  # logLevel: warning\n\n  # Additional glob patterns to include (additive to defaults)\n  include:\n    - '**/*.xml.erb'\n\n  # Glob patterns to exclude from linting\n  exclude:\n    - 'vendor/**/*'\n    - 'node_modules/**/*'\n\n  rules:\n    # Disable a rule\n    erb-no-extra-newline:\n      enabled: false\n\n    # Change rule severity\n    html-tag-name-lowercase:\n      severity: warning  # error, warning, info, or hint\n```\n\n### Rule-Level File Patterns\n\nApply rules to specific files using `include`, `only`, and `exclude` patterns:\n\n```yaml [.herb.yml]\nlinter:\n  rules:\n    # Apply rule only to component files\n    html-img-require-alt:\n      include:\n        - 'app/components/**/*'\n      exclude:\n        - 'app/components/legacy/**/*'\n\n    # Restrict rule to specific directory (overrides include)\n    html-tag-name-lowercase:\n      only:\n        - 'app/views/**/*'\n      exclude:\n        - 'app/views/admin/**/*'\n```\n\n**Pattern precedence:**\n1. `only` - When present, rule applies ONLY to these files (ignores all `include`)\n2. `include` - When `only` is absent, rule applies only to these files (additive)\n3. `exclude` - Always applied regardless of `include` or `only`\n\n### Force Flag\n\nProcess files even when excluded or when linter is disabled:\n\n```bash\n# Force linting when disabled in config\nherb-lint --force\n\n# Force linting on an excluded file\nherb-lint --force app/views/excluded-file.html.erb\n```\n\nWhen using `--force` on an excluded file, the linter will show a warning but proceed with linting.\n\n### Custom Rules\n\nCreate custom linter rules for project-specific requirements by placing ES module files (`.mjs`) in `.herb/rules/`:\n\n::: info File Extension\nCustom rules must use the `.mjs` extension to avoid Node.js module type warnings. The `.mjs` extension explicitly marks files as ES modules.\n:::\n\n::: code-group\n\n\n```js [.herb/rules/no-div-tags.mjs]\nimport { BaseRuleVisitor, ParserRule } from \"@herb-tools/linter\"\n\nclass NoDivTagsVisitor extends BaseRuleVisitor {\n  visitHTMLOpenTagNode(node) {\n    if (node.tag_name?.value === \"div\") {\n      this.addOffense(\n        `Avoid using \\`<div>\\` tags. Consider using semantic HTML elements like \\`<section>\\`, \\`<article>\\`, \\`<nav>\\`, \\`<main>\\`, \\`<header>\\`, \\`<footer>\\`, or \\`<aside>\\` instead.`,\n        node.tag_name.location\n      )\n    }\n\n    super.visitHTMLOpenTagNode(node)\n  }\n}\n\nexport default class NoDivTagsRule extends ParserRule {\n  static ruleName = \"no-div-tags\"\n\n  check(result, context) {\n    const visitor = new NoDivTagsVisitor(this.ruleName, context)\n    visitor.visit(result.value)\n    return visitor.offenses\n  }\n}\n```\n\n```js [.herb/rules/no-inline-styles.mjs]\nimport { BaseRuleVisitor, ParserRule, getAttributes, getAttributeName } from \"@herb-tools/linter\"\n\nclass NoInlineStylesVisitor extends BaseRuleVisitor {\n  visitHTMLOpenTagNode(node) {\n    const attributes = getAttributes(node)\n\n    for (const attribute of attributes) {\n      const attributeName = getAttributeName(attribute)\n\n      if (attributeName === \"style\") {\n        this.addOffense(\n          `Avoid using inline \\`style\\` attributes. Use CSS classes instead.`,\n          attribute.location\n        )\n      }\n    }\n\n    super.visitHTMLOpenTagNode(node)\n  }\n}\n\nexport default class NoInlineStylesRule extends ParserRule {\n  static ruleName = \"no-inline-styles\"\n\n  get defaultConfig() {\n    return {\n      enabled: true,\n      severity: \"warning\"\n    }\n  }\n\n  check(result, context) {\n    const visitor = new NoInlineStylesVisitor(this.ruleName, context)\n    visitor.visit(result.value)\n    return visitor.offenses\n  }\n}\n```\n\n:::\n\n**Calling `super` in visitor methods:**\n\nEach `visitFooNode()` method in the base visitor does up to three things:\n\n1. Calls `this.visitNode(node)`, a generic hook that runs for every node type\n2. Calls `this.visitERBNode(node)`, a shared hook that only runs for ERB node types\n3. Calls `this.visitChildNodes(node)`, which traverses the node's children\n\nFor example, `visitHTMLOpenTagNode()` calls `visitNode()` and `visitChildNodes()`, while `visitERBContentNode()` calls `visitNode()`, `visitERBNode()`, and `visitChildNodes()`.\n\nOverriding a `visitFooNode()` method without calling `super` skips all three steps. Most importantly, `visitChildNodes()` is never called, so traversal stops at that node and the rule won't see anything below it. For leaf nodes like `ERBContentNode` this makes no difference, but for nodes with children like `HTMLElementNode`, `HTMLOpenTagNode`, or `ERBBlockNode` it means nested offenses go unreported.\n\nAs a general rule, always call `super.visitFooNode(node)` unless you deliberately want to control traversal yourself. If you do, there are two alternatives:\n\n- `this.visitChildNodes(node)` traverses all children, but skips the `visitNode()` and `visitERBNode()` hooks\n- `this.visit(node.someChild)` visits only the children you pick\n\n**Rule Configuration:**\n\nThe `defaultConfig` getter is optional. If not specified, custom rules default to:\n- `enabled: true` - Rule is enabled by default\n- `severity: \"error\"` - Offenses are reported as errors\n- `exclude: []` - No files are excluded\n\nYou can override the `defaultConfig` getter to customize these defaults, as shown in the example above where severity is set to `\"warning\"`.\n\n**Rule Properties:**\n\n- `static type` - Optional, defaults to `\"parser\"`. Can be `\"parser\"`, `\"lexer\"`, or `\"source\"`\n- `static ruleName` - Required, the rule identifier used in configuration and output\n- `check()` - Required, the method that checks for offenses\n- `defaultConfig` - Optional, returns the default configuration for the rule\n- `isEnabled()` - Optional, dynamically determines if the rule should run\n- `autofix()` - Optional, implements automatic fixing for the rule\n\nCustom rules are loaded automatically by default. Use `--no-custom-rules` to disable them.\n\nWhen custom rules are loaded, the linter will display them:\n\n```\nLoaded 2 custom rules:\n  • no-inline-styles (.herb/rules/no-inline-styles.mjs)\n  • require-aria-labels (.herb/rules/require-aria-labels.mjs)\n```\n\n::: warning Rule Name Clashes\nIf a custom rule has the same name as a built-in rule or another custom rule, you'll see a warning. The custom rule will override the built-in rule.\n:::\n\n::: tip Hot Reload\nCustom rules are automatically reloaded when changed in editors with the Herb Language Server. No need to restart your editor!\n:::\n\n### Language Server Integration\n\nThe linter is automatically integrated into the [Herb Language Server](https://herb-tools.dev/projects/language-server), providing real-time validation in supported editors like VS Code, Zed, and Neovim.\n","readmeFilename":"README.md"}