diff --git a/.changeset/neat-swans-argue.md b/.changeset/neat-swans-argue.md new file mode 100644 index 000000000..62099d99a --- /dev/null +++ b/.changeset/neat-swans-argue.md @@ -0,0 +1,5 @@ +--- +"eslint-plugin-vue": minor +--- + +Add TypeScript IntelliSense support via [eslint-typegen](https://github.com/antfu/eslint-typegen) diff --git a/.gitignore b/.gitignore index 0458765cd..d6fadf92c 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ yarn-error.log /docs/.vitepress/.temp /docs/.vitepress/cache typings/eslint/lib/rules +eslint-typegen.d.ts diff --git a/eslint.config.js b/eslint.config.mjs similarity index 87% rename from eslint.config.js rename to eslint.config.mjs index 4ed1e816e..9cd54f623 100644 --- a/eslint.config.js +++ b/eslint.config.mjs @@ -1,13 +1,19 @@ -'use strict' +import globals from 'globals' +import eslintPluginEslintPlugin from 'eslint-plugin-eslint-plugin/configs/all' +import eslintPluginJsonc from 'eslint-plugin-jsonc' +import eslintPluginNodeDependencies from 'eslint-plugin-node-dependencies' +import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended' +import eslintPluginUnicorn from 'eslint-plugin-unicorn' +import vueEslintParser from 'vue-eslint-parser' +import noInvalidMeta from './eslint-internal-rules/no-invalid-meta.js' +import noInvalidMetaDocsCategories from './eslint-internal-rules/no-invalid-meta-docs-categories.js' +import requireEslintCommunity from './eslint-internal-rules/require-eslint-community.js' -const globals = require('globals') -const eslintPluginEslintPlugin = require('eslint-plugin-eslint-plugin/configs/all') -const eslintPluginJsonc = require('eslint-plugin-jsonc') -const eslintPluginNodeDependencies = require('eslint-plugin-node-dependencies') -const eslintPluginPrettierRecommended = require('eslint-plugin-prettier/recommended') -const eslintPluginUnicorn = require('eslint-plugin-unicorn') +// @ts-check +/// +import typegen from 'eslint-typegen' -module.exports = [ +export default typegen([ { ignores: [ '.nyc_output', @@ -33,9 +39,9 @@ module.exports = [ plugins: { internal: { rules: { - 'no-invalid-meta': require('./eslint-internal-rules/no-invalid-meta'), - 'no-invalid-meta-docs-categories': require('./eslint-internal-rules/no-invalid-meta-docs-categories'), - 'require-eslint-community': require('./eslint-internal-rules/require-eslint-community') + 'no-invalid-meta': noInvalidMeta, + 'no-invalid-meta-docs-categories': noInvalidMetaDocsCategories, + 'require-eslint-community': requireEslintCommunity } } } @@ -213,7 +219,7 @@ module.exports = [ languageOptions: { ecmaVersion: 'latest', sourceType: 'module', - parser: require('vue-eslint-parser') + parser: vueEslintParser } }, { @@ -241,4 +247,4 @@ module.exports = [ 'prettier/prettier': 'off' } } -] +]) diff --git a/lib/index.d.ts b/lib/index.d.ts index 8cbff659f..b6d658852 100644 --- a/lib/index.d.ts +++ b/lib/index.d.ts @@ -1,3 +1,4 @@ +/// import type { Linter } from 'eslint' declare const vue: { diff --git a/package.json b/package.json index dac23e65e..31bba2216 100644 --- a/package.json +++ b/package.json @@ -21,12 +21,13 @@ "version": "npm run generate:version && git add .", "update": "node ./tools/update.js", "update-resources": "node ./tools/update-resources.js", + "typegen": "node ./tools/generate-typegen.mjs", "docs:watch": "vitepress dev docs", "predocs:build": "npm run update", "docs:build": "vitepress build docs", "generate:version": "env-cmd -e version npm run update && npm run lint -- --fix", "changeset:version": "changeset version && npm run generate:version && git add --all", - "changeset:publish": "changeset publish" + "changeset:publish": "npm run typegen && changeset publish" }, "files": [ "lib" @@ -98,6 +99,7 @@ "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-unicorn": "^56.0.0", "eslint-plugin-vue": "file:.", + "eslint-typegen": "^2.2.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.4.0", "events": "^3.3.0", diff --git a/tools/generate-typegen.mjs b/tools/generate-typegen.mjs new file mode 100644 index 000000000..5bcb325a5 --- /dev/null +++ b/tools/generate-typegen.mjs @@ -0,0 +1,9 @@ +import fs from 'node:fs/promises' +import { pluginsToRulesDTS } from 'eslint-typegen/core' +import plugin from '../lib/index.js' + +const dts = await pluginsToRulesDTS({ + vue: plugin +}) + +await fs.writeFile('lib/eslint-typegen.d.ts', dts) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy