{"_id":"@edge-lint/eslint-plugin","_rev":"5-723561abdf0421ee6374a2688cb69714","name":"@edge-lint/eslint-plugin","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@edge-lint/eslint-plugin","version":"0.1.0","keywords":["edge","edgejs","eslint","eslint-plugin"],"author":{"name":"Christopher Watson","email":"cawatson1993@gmail.com"},"license":"MIT","_id":"@edge-lint/eslint-plugin@0.1.0","maintainers":[{"name":"watzon","email":"cawatson1993@gmail.com"}],"homepage":"https://github.com/watzon/edge-lint/tree/main/packages/eslint-plugin","bugs":{"url":"https://github.com/watzon/edge-lint/issues"},"dist":{"shasum":"6b2249ac037bf3234ccd12de823034709c35def1","tarball":"https://registry.npmjs.org/@edge-lint/eslint-plugin/-/eslint-plugin-0.1.0.tgz","fileCount":35,"integrity":"sha512-0bshMFkfDWFmqVG0Y2v5Sw5rt+EH+UGjPgz+vcsCHyvuIA66nnStfzLaatcX/LZqvNjQ51t5PYfFcxky8xSTQw==","signatures":[{"sig":"MEQCIEquGtsJI/DPGJWSB+bSx6MncuwI/1Z7SrwQ90rzgq5FAiBEogyexz7+hd5N0eELag58DVr9xjZpCv+ebId3odBhDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27528},"main":"./dist/index.js","type":"module","_from":"file:edge-lint-eslint-plugin-0.1.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","test":"vitest --passWithNoTests","build":"tsc","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"watzon","email":"cawatson1993@gmail.com"},"_resolved":"/private/var/folders/5h/9z17zs8j49z2zdxn33jkvqc00000gn/T/9b452f076a798a489beefaef4bbbea4d/edge-lint-eslint-plugin-0.1.0.tgz","_integrity":"sha512-0bshMFkfDWFmqVG0Y2v5Sw5rt+EH+UGjPgz+vcsCHyvuIA66nnStfzLaatcX/LZqvNjQ51t5PYfFcxky8xSTQw==","repository":{"url":"git+https://github.com/watzon/edge-lint.git","type":"git","directory":"packages/eslint-plugin"},"_npmVersion":"10.9.2","description":"ESLint plugin for Edge.js templates","directories":{},"_nodeVersion":"22.13.1","dependencies":{"@edge-lint/core":"0.1.0","@edge-lint/eslint-parser":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.16.0","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^22.10.1","@types/eslint":"^9.6.1"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.0_1765068142183_0.057302922188839034","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@edge-lint/eslint-plugin","version":"0.1.1","keywords":["edge","edgejs","eslint","eslint-plugin"],"author":{"name":"Christopher Watson","email":"cawatson1993@gmail.com"},"license":"MIT","_id":"@edge-lint/eslint-plugin@0.1.1","maintainers":[{"name":"watzon","email":"cawatson1993@gmail.com"}],"homepage":"https://github.com/watzon/edge-lint/tree/main/packages/eslint-plugin","bugs":{"url":"https://github.com/watzon/edge-lint/issues"},"dist":{"shasum":"5232692d185858978e9c603e2b64c0fe0caaed3e","tarball":"https://registry.npmjs.org/@edge-lint/eslint-plugin/-/eslint-plugin-0.1.1.tgz","fileCount":35,"integrity":"sha512-DT4x+B+ouwSgrUWx28EEm8CPzSRl/wnwXWtMsEO41Z/2B6iphT+/lrRhApi3U29BsaRDuY8+cn5wVolmFnQvMg==","signatures":[{"sig":"MEUCIBsvbTlO4HaKB/CqRX+vVQ/eFgMO+MbftJI26Uwkj8gdAiEA1XfGMf6BnxZfYTNcr7w6SYkp6cP5Mzmw++do28C9nHc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30350},"main":"./dist/index.js","type":"module","_from":"file:edge-lint-eslint-plugin-0.1.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","test":"vitest --passWithNoTests","build":"tsc","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"watzon","email":"cawatson1993@gmail.com"},"_resolved":"/private/var/folders/5h/9z17zs8j49z2zdxn33jkvqc00000gn/T/4ec08c4a9b500edeadd2c0a2a5e627e9/edge-lint-eslint-plugin-0.1.1.tgz","_integrity":"sha512-DT4x+B+ouwSgrUWx28EEm8CPzSRl/wnwXWtMsEO41Z/2B6iphT+/lrRhApi3U29BsaRDuY8+cn5wVolmFnQvMg==","repository":{"url":"git+https://github.com/watzon/edge-lint.git","type":"git","directory":"packages/eslint-plugin"},"_npmVersion":"10.9.2","description":"ESLint plugin for Edge.js templates","directories":{},"_nodeVersion":"22.13.1","dependencies":{"@edge-lint/core":"0.1.1","@edge-lint/eslint-parser":"0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.16.0","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^22.10.1","@types/eslint":"^9.6.1"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.1_1765069381194_0.7206318095784456","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@edge-lint/eslint-plugin","version":"0.1.2","keywords":["edge","edgejs","eslint","eslint-plugin"],"author":{"name":"Christopher Watson","email":"cawatson1993@gmail.com"},"license":"MIT","_id":"@edge-lint/eslint-plugin@0.1.2","maintainers":[{"name":"watzon","email":"cawatson1993@gmail.com"}],"homepage":"https://github.com/watzon/edge-lint/tree/main/packages/eslint-plugin","bugs":{"url":"https://github.com/watzon/edge-lint/issues"},"dist":{"shasum":"a1a46ee9b5532519c5dcda5678509e9c646b866c","tarball":"https://registry.npmjs.org/@edge-lint/eslint-plugin/-/eslint-plugin-0.1.2.tgz","fileCount":35,"integrity":"sha512-2bK17i5WPbfHM/2uQJcB1kBELixUshm2JXjx7QKfxXx7oCLpzNiPsjbsMx6J4ySkztib0/3WeDL7yUl0Fab+0Q==","signatures":[{"sig":"MEYCIQDGozUG8IuFMuI2tSDtKWKOxoc/PXUVH42m4EK9fH6N+QIhAOM9sJNogtBTKlZBT+73c+Qi7KTA5jfKa4PCNQJYiQ6F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30350},"main":"./dist/index.js","type":"module","_from":"file:edge-lint-eslint-plugin-0.1.2.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","test":"vitest --passWithNoTests","build":"tsc","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"watzon","email":"cawatson1993@gmail.com"},"_resolved":"/private/var/folders/5h/9z17zs8j49z2zdxn33jkvqc00000gn/T/9c595943e066e3a15d88760275f051e1/edge-lint-eslint-plugin-0.1.2.tgz","_integrity":"sha512-2bK17i5WPbfHM/2uQJcB1kBELixUshm2JXjx7QKfxXx7oCLpzNiPsjbsMx6J4ySkztib0/3WeDL7yUl0Fab+0Q==","repository":{"url":"git+https://github.com/watzon/edge-lint.git","type":"git","directory":"packages/eslint-plugin"},"_npmVersion":"10.9.2","description":"ESLint plugin for Edge.js templates","directories":{},"_nodeVersion":"22.13.1","dependencies":{"@edge-lint/core":"0.1.2","@edge-lint/eslint-parser":"0.1.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.16.0","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^22.10.1","@types/eslint":"^9.6.1"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.2_1765071833119_0.8879805195011734","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@edge-lint/eslint-plugin","version":"0.1.3","keywords":["edge","edgejs","eslint","eslint-plugin"],"author":{"name":"Christopher Watson","email":"cawatson1993@gmail.com"},"license":"MIT","_id":"@edge-lint/eslint-plugin@0.1.3","maintainers":[{"name":"watzon","email":"cawatson1993@gmail.com"}],"homepage":"https://github.com/watzon/edge-lint/tree/main/packages/eslint-plugin","bugs":{"url":"https://github.com/watzon/edge-lint/issues"},"dist":{"shasum":"f43e23a5d65e321cde6b883ced6ea9f7cd2d1f94","tarball":"https://registry.npmjs.org/@edge-lint/eslint-plugin/-/eslint-plugin-0.1.3.tgz","fileCount":35,"integrity":"sha512-ecaiGKo+a6IhrgajEwI+Xw1s8HF5B13Yye+4AtoWvt+sWv3l75iYvw6y5w7ioms0h5HD0FI9t5lmWVDDbpdfxw==","signatures":[{"sig":"MEUCIQD0aVPF6lk1L6c+XVnErZutjunNa7oOjegUUrkEtBZILgIgCaB4J401i6B/yGbVHFHam4hNyBU1D8nKtuiMKlzN5ps=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30603},"main":"./dist/index.js","type":"module","_from":"file:edge-lint-eslint-plugin-0.1.3.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","test":"vitest --passWithNoTests","build":"tsc","clean":"rm -rf dist *.tsbuildinfo"},"_npmUser":{"name":"watzon","email":"cawatson1993@gmail.com"},"_resolved":"/private/var/folders/5h/9z17zs8j49z2zdxn33jkvqc00000gn/T/374d4fd3da74fa4eb7028ca4d94f4cb0/edge-lint-eslint-plugin-0.1.3.tgz","_integrity":"sha512-ecaiGKo+a6IhrgajEwI+Xw1s8HF5B13Yye+4AtoWvt+sWv3l75iYvw6y5w7ioms0h5HD0FI9t5lmWVDDbpdfxw==","repository":{"url":"git+https://github.com/watzon/edge-lint.git","type":"git","directory":"packages/eslint-plugin"},"_npmVersion":"10.9.2","description":"ESLint plugin for Edge.js templates","directories":{},"_nodeVersion":"22.13.1","dependencies":{"@edge-lint/core":"0.1.3","@edge-lint/eslint-parser":"0.1.3"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.16.0","vitest":"^2.1.8","typescript":"^5.7.2","@types/node":"^22.10.1","@types/eslint":"^9.6.1"},"peerDependencies":{"eslint":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.3_1765072203352_0.6029933269043448","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@edge-lint/eslint-plugin","version":"0.1.4","description":"ESLint plugin for Edge.js templates","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"dependencies":{"@edge-lint/core":"0.1.4","@edge-lint/eslint-parser":"0.1.4"},"devDependencies":{"@types/eslint":"^9.6.1","@types/node":"^22.10.1","eslint":"^9.16.0","typescript":"^5.7.2","vitest":"^2.1.8"},"peerDependencies":{"eslint":">=8.0.0"},"keywords":["edge","edgejs","eslint","eslint-plugin"],"license":"MIT","author":{"name":"Christopher Watson","email":"cawatson1993@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/watzon/edge-lint.git","directory":"packages/eslint-plugin"},"homepage":"https://github.com/watzon/edge-lint/tree/main/packages/eslint-plugin","bugs":{"url":"https://github.com/watzon/edge-lint/issues"},"scripts":{"build":"tsc","dev":"tsc --watch","test":"vitest --passWithNoTests","clean":"rm -rf dist *.tsbuildinfo"},"_id":"@edge-lint/eslint-plugin@0.1.4","_integrity":"sha512-PgLCZXdw94uiTogjd8NsHqBMrPRBKHAvKFboFTtCKA87+RiPjbKC0NZofMt4Brt5YxXLh9QiWeVBj+SOw2nq5A==","_resolved":"/private/var/folders/5h/9z17zs8j49z2zdxn33jkvqc00000gn/T/0da289e6b221d92554c13f34750c6158/edge-lint-eslint-plugin-0.1.4.tgz","_from":"file:edge-lint-eslint-plugin-0.1.4.tgz","_nodeVersion":"22.13.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-PgLCZXdw94uiTogjd8NsHqBMrPRBKHAvKFboFTtCKA87+RiPjbKC0NZofMt4Brt5YxXLh9QiWeVBj+SOw2nq5A==","shasum":"94f23f821d23da26f2a48c7a84b563c97e488b7d","tarball":"https://registry.npmjs.org/@edge-lint/eslint-plugin/-/eslint-plugin-0.1.4.tgz","fileCount":35,"unpackedSize":31368,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDnKZdzBPtt7P18G9oTrieTpP5wiwIHCz41d6U8xoWVBAiBp8uLhRgJWPfjhc+rT6YpWDhVFSlgRmhf4z68/yTF2hA=="}]},"_npmUser":{"name":"watzon","email":"cawatson1993@gmail.com"},"directories":{},"maintainers":[{"name":"watzon","email":"cawatson1993@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-plugin_0.1.4_1765083029785_0.8246235018626951"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-07T00:42:22.084Z","modified":"2025-12-07T04:50:30.136Z","0.1.0":"2025-12-07T00:42:22.341Z","0.1.1":"2025-12-07T01:03:01.336Z","0.1.2":"2025-12-07T01:43:53.257Z","0.1.3":"2025-12-07T01:50:03.495Z","0.1.4":"2025-12-07T04:50:29.928Z"},"bugs":{"url":"https://github.com/watzon/edge-lint/issues"},"author":{"name":"Christopher Watson","email":"cawatson1993@gmail.com"},"license":"MIT","homepage":"https://github.com/watzon/edge-lint/tree/main/packages/eslint-plugin","keywords":["edge","edgejs","eslint","eslint-plugin"],"repository":{"type":"git","url":"git+https://github.com/watzon/edge-lint.git","directory":"packages/eslint-plugin"},"description":"ESLint plugin for Edge.js templates","maintainers":[{"name":"watzon","email":"cawatson1993@gmail.com"}],"readme":"# @edge-lint/eslint-plugin\n\nESLint plugin for [Edge.js](https://edgejs.dev/) templates.\n\n## Installation\n\n```bash\nnpm install @edge-lint/eslint-plugin --save-dev\n```\n\n## Usage\n\n### ESLint Flat Config (Recommended)\n\n```javascript\n// eslint.config.js\nimport edge from '@edge-lint/eslint-plugin';\n\nexport default [\n  // Use recommended config\n  ...edge.configs['flat/recommended'],\n\n  // Or strict config (all rules enabled)\n  // ...edge.configs['flat/strict'],\n];\n```\n\n### Custom Configuration\n\n```javascript\n// eslint.config.js\nimport edge from '@edge-lint/eslint-plugin';\nimport edgeParser from '@edge-lint/eslint-parser';\n\nexport default [\n  {\n    files: ['**/*.edge'],\n    plugins: {\n      edge,\n    },\n    languageOptions: {\n      parser: edgeParser,\n    },\n    rules: {\n      'edge/no-empty-mustache': 'error',\n      'edge/valid-expression': 'error',\n      'edge/no-unknown-tag': 'warn',\n      'edge/mustache-spacing': ['warn', 'always'],\n    },\n  },\n];\n```\n\n## Rules\n\n### Syntax Rules\n\n| Rule | Description | Recommended | Fixable |\n|------|-------------|:-----------:|:-------:|\n| `edge/no-empty-mustache` | Disallow empty mustache expressions | error | |\n| `edge/valid-expression` | Validate JavaScript expressions in mustaches and tags | error | |\n| `edge/no-unknown-tag` | Warn when using unregistered tags | warn | |\n| `edge/no-removed-tags` | Disallow tags removed in Edge.js v6 | error | |\n| `edge/no-deprecated-helpers` | Disallow deprecated global helpers removed in Edge.js v6 | error | |\n| `edge/no-deprecated-props-api` | Disallow deprecated $props methods removed in Edge.js v6 | error | |\n| `edge/no-inline-block-tags` | Disallow block tags with content on the same line | error | |\n| `edge/no-space-before-tag-args` | Disallow space between tag name and opening parenthesis | error | Yes |\n| `edge/valid-each-syntax` | Validate @each loop syntax | error | |\n| `edge/no-reserved-variable-names` | Disallow Edge.js reserved keywords as variable names | error | |\n| `edge/no-invalid-end-tag` | Disallow invalid end tag names (use @end instead) | error | Yes |\n| `edge/no-end-after-selfclosed` | Disallow @end after self-closing tags (@!tag) | error | Yes |\n| `edge/no-mismatched-curly-braces` | Ensure mustache braces are properly matched | error | |\n| `edge/no-multiple-else` | Disallow multiple @else blocks in a conditional | error | |\n| `edge/valid-vite-tag` | Validate @vite() tag arguments (AdonisJS) | off | |\n| `edge/valid-entrypoint-tags` | Validate @entryPointStyles/@entryPointScripts tags (AdonisJS) | off | |\n\n### Best Practice Rules\n\n| Rule | Description | Recommended | Fixable |\n|------|-------------|:-----------:|:-------:|\n| `edge/no-unused-let` | Warn when a @let variable is never used | warn | |\n| `edge/prefer-safe-mustache` | Suggest using safe mustache for HTML content | off | |\n| `edge/require-slot-await` | Require await when calling $slots | warn | Yes |\n| `edge/no-undefined-slot` | Warn when calling slots without existence check | off | |\n| `edge/prefer-unless-over-negated-if` | Suggest @unless over @if with negation | off | Yes |\n| `edge/no-assign-without-let` | Disallow @assign for variables not defined with @let | warn | |\n| `edge/prefer-include-if` | Suggest @includeIf over @if + @include pattern | off | |\n| `edge/no-raw-html-in-mustache` | Warn about potential XSS with unescaped output | off | |\n| `edge/require-props-defaults` | Suggest $props.merge() for default prop values | off | |\n| `edge/each-else-on-empty` | Suggest @else with @each for empty collection handling | off | |\n| `edge/prefer-stack-push-once` | Suggest @pushOnceTo over @pushTo for scripts/styles | off | |\n\n### Style Rules\n\n| Rule | Description | Recommended | Fixable |\n|------|-------------|:-----------:|:-------:|\n| `edge/mustache-spacing` | Enforce consistent spacing inside mustache braces | off | Yes |\n| `edge/prefer-component-tags` | Suggest component-as-tags syntax over @component() | off | |\n| `edge/consistent-slot-naming` | Enforce consistent slot naming convention | off | |\n\n## Configs\n\n### `flat/recommended`\n\nEnables recommended rules with sensible defaults. Suitable for most projects. Focuses on catching real errors while minimizing noise.\n\n**Enabled as errors:**\n- All syntax validation rules (except AdonisJS-specific ones)\n\n**Enabled as warnings:**\n- `no-unknown-tag`, `no-unused-let`, `require-slot-await`, `no-assign-without-let`\n\n### `flat/strict`\n\nEnables all rules for maximum validation. Best for projects requiring strict template quality.\n\n**Additionally enables:**\n- All best practice rules\n- All style rules\n- AdonisJS-specific rules (`valid-vite-tag`, `valid-entrypoint-tags`)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}