UNPKG

@minko-fe/eslint-config

Version:
451 lines (422 loc) 23.2 kB
import * as eslint from 'eslint'; import { Linter } from 'eslint'; import * as eslint_plugin_antfu from 'eslint-plugin-antfu'; import * as _pluginReact from 'eslint-plugin-react'; import * as _pluginReactHooks from 'eslint-plugin-react-hooks'; import * as _pluginNode from 'eslint-plugin-n'; import * as _parserAstro from 'astro-eslint-parser'; export { default as pluginVue } from 'eslint-plugin-vue'; import * as vueEslintParser from 'vue-eslint-parser'; export { vueEslintParser as parserVue }; import * as eslintPluginImportX from 'eslint-plugin-import-x'; export { eslintPluginImportX as pluginImport }; import * as eslintPluginJsonc from 'eslint-plugin-jsonc'; export { eslintPluginJsonc as pluginJsonc }; import * as eslintPluginYml from 'eslint-plugin-yml'; export { eslintPluginYml as pluginYml }; import * as jsoncEslintParser from 'jsonc-eslint-parser'; export { jsoncEslintParser as parserJsonc }; import * as yamlEslintParser from 'yaml-eslint-parser'; export { yamlEslintParser as parserYml }; export { default as pluginPrettier } from 'eslint-plugin-prettier'; export { default as pluginPrettierRecommended } from 'eslint-plugin-prettier/recommended'; export { default as tseslint } from 'typescript-eslint'; declare function resolveAstro(): Promise<Linter.Config[]>; declare const comments: () => Linter.Config[]; interface FlatConfigItem { ignores: string[]; } declare const ignores: () => Linter.Config[]; declare const gitignores: FlatConfigItem[]; declare const imports: () => Linter.Config[]; declare const javascript: () => Linter.Config[]; declare const jsonc: () => Linter.Config[]; declare const markdown: () => Linter.Config[]; declare const node: () => Linter.Config[]; declare const sortImports: () => Linter.Config[]; declare const sortObjects: () => Linter.Config[]; declare const prettier: () => Linter.Config[]; declare const react: () => Linter.Config[]; declare const sortPackageJson: () => Linter.Config[]; declare const sortTsconfig: () => Linter.Config[]; declare function asyncSvelte(): Promise<Linter.Config[]>; declare const typescriptCore: Linter.Config[]; declare const typescript: () => Linter.Config[]; declare const unicorn: () => Linter.Config[]; declare const vue: () => Linter.Config[]; declare const yml: () => Linter.Config[]; declare const isInEditor: boolean; declare const hasTypeScript: boolean; declare const hasVue: boolean; declare const hasReact: boolean; declare const hasSvelte: boolean; declare const hasSveltePrettier: boolean; declare const hasAstro: boolean; declare const hasAstroPrettier: boolean; declare const hasTailwindcss: boolean; declare const hasTailwindcssPrettire: boolean; declare const GLOB_SRC_EXT = "?([cm])[jt]s?(x)"; declare const GLOB_SRC = "**/*.?([cm])[jt]s?(x)"; declare const GLOB_JS = "**/*.?([cm])js"; declare const GLOB_JSX = "**/*.?([cm])jsx"; declare const GLOB_TS = "**/*.?([cm])ts"; declare const GLOB_TSX = "**/*.?([cm])tsx"; declare const GLOB_ASTRO = "**/*.astro"; declare const GLOB_SVELTE: string[]; declare const GLOB_STYLE = "**/*.{c,le,sc}ss"; declare const GLOB_CSS = "**/*.css"; declare const GLOB_LESS = "**/*.less"; declare const GLOB_SCSS = "**/*.scss"; declare const GLOB_JSON = "**/*.json"; declare const GLOB_JSON5 = "**/*.json5"; declare const GLOB_JSONC = "**/*.jsonc"; declare const GLOB_MARKDOWN = "**/*.md"; declare const GLOB_VUE = "**/*.vue"; declare const GLOB_YAML = "**/*.y?(a)ml"; declare const GLOB_HTML = "**/*.htm?(l)"; declare const GLOB_ALL_SRC: string[]; declare const GLOB_TSCONFIG: string[]; declare const GLOB_PACKAGEJSON = /** @type {const} */ "**/package.json"; declare const GLOB_NODE_MODULES = /** @type {const} */ "**/node_modules"; declare const GLOB_DIST = /** @type {const} */ "**/dist"; declare const GLOB_LOCKFILE: string[]; declare const GLOB_EXCLUDE: string[]; declare const pluginAntfu: typeof eslint_plugin_antfu.default; declare const pluginComments: any; declare const pluginMarkdown: any; declare const pluginUnicorn: eslint.ESLint.Plugin & { configs: { recommended: eslint.Linter.FlatConfig; all: eslint.Linter.FlatConfig; "flat/all": eslint.Linter.FlatConfig; "flat/recommended": eslint.Linter.FlatConfig; }; }; declare const pluginReact: { deprecatedRules: Partial<{ 'boolean-prop-naming': eslint.Rule.RuleModule; 'button-has-type': eslint.Rule.RuleModule; 'checked-requires-onchange-or-readonly': eslint.Rule.RuleModule; 'default-props-match-prop-types': eslint.Rule.RuleModule; 'destructuring-assignment': eslint.Rule.RuleModule; 'display-name': eslint.Rule.RuleModule; 'forbid-component-props': eslint.Rule.RuleModule; 'forbid-dom-props': eslint.Rule.RuleModule; 'forbid-elements': eslint.Rule.RuleModule; 'forbid-foreign-prop-types': eslint.Rule.RuleModule; 'forbid-prop-types': eslint.Rule.RuleModule; 'forward-ref-uses-ref': eslint.Rule.RuleModule; 'function-component-definition': eslint.Rule.RuleModule; 'hook-use-state': eslint.Rule.RuleModule; 'iframe-missing-sandbox': eslint.Rule.RuleModule; 'jsx-boolean-value': eslint.Rule.RuleModule; 'jsx-child-element-spacing': eslint.Rule.RuleModule; 'jsx-closing-bracket-location': eslint.Rule.RuleModule; 'jsx-closing-tag-location': eslint.Rule.RuleModule; 'jsx-curly-spacing': eslint.Rule.RuleModule; 'jsx-curly-newline': eslint.Rule.RuleModule; 'jsx-equals-spacing': eslint.Rule.RuleModule; 'jsx-filename-extension': eslint.Rule.RuleModule; 'jsx-first-prop-new-line': eslint.Rule.RuleModule; 'jsx-handler-names': eslint.Rule.RuleModule; 'jsx-indent': eslint.Rule.RuleModule; 'jsx-indent-props': eslint.Rule.RuleModule; 'jsx-key': eslint.Rule.RuleModule; 'jsx-max-depth': eslint.Rule.RuleModule; 'jsx-max-props-per-line': eslint.Rule.RuleModule; 'jsx-newline': eslint.Rule.RuleModule; 'jsx-no-bind': eslint.Rule.RuleModule; 'jsx-no-comment-textnodes': eslint.Rule.RuleModule; 'jsx-no-constructed-context-values': eslint.Rule.RuleModule; 'jsx-no-duplicate-props': eslint.Rule.RuleModule; 'jsx-no-leaked-render': eslint.Rule.RuleModule; 'jsx-no-literals': eslint.Rule.RuleModule; 'jsx-no-script-url': eslint.Rule.RuleModule; 'jsx-no-target-blank': eslint.Rule.RuleModule; 'jsx-no-useless-fragment': eslint.Rule.RuleModule; 'jsx-one-expression-per-line': eslint.Rule.RuleModule; 'jsx-no-undef': eslint.Rule.RuleModule; 'jsx-curly-brace-presence': eslint.Rule.RuleModule; 'jsx-pascal-case': eslint.Rule.RuleModule; 'jsx-fragments': eslint.Rule.RuleModule; 'jsx-props-no-multi-spaces': eslint.Rule.RuleModule; 'jsx-props-no-spreading': eslint.Rule.RuleModule; 'jsx-props-no-spread-multi': eslint.Rule.RuleModule; 'jsx-sort-default-props': eslint.Rule.RuleModule; 'jsx-sort-props': eslint.Rule.RuleModule; 'jsx-space-before-closing': eslint.Rule.RuleModule; 'jsx-tag-spacing': eslint.Rule.RuleModule; 'jsx-uses-react': eslint.Rule.RuleModule; 'jsx-uses-vars': eslint.Rule.RuleModule; 'jsx-wrap-multilines': eslint.Rule.RuleModule; 'no-invalid-html-attribute': eslint.Rule.RuleModule; 'no-access-state-in-setstate': eslint.Rule.RuleModule; 'no-adjacent-inline-elements': eslint.Rule.RuleModule; 'no-array-index-key': eslint.Rule.RuleModule; 'no-arrow-function-lifecycle': eslint.Rule.RuleModule; 'no-children-prop': eslint.Rule.RuleModule; 'no-danger': eslint.Rule.RuleModule; 'no-danger-with-children': eslint.Rule.RuleModule; 'no-deprecated': eslint.Rule.RuleModule; 'no-did-mount-set-state': eslint.Rule.RuleModule; 'no-did-update-set-state': eslint.Rule.RuleModule; 'no-direct-mutation-state': eslint.Rule.RuleModule; 'no-find-dom-node': eslint.Rule.RuleModule; 'no-is-mounted': eslint.Rule.RuleModule; 'no-multi-comp': eslint.Rule.RuleModule; 'no-namespace': eslint.Rule.RuleModule; 'no-set-state': eslint.Rule.RuleModule; 'no-string-refs': eslint.Rule.RuleModule; 'no-redundant-should-component-update': eslint.Rule.RuleModule; 'no-render-return-value': eslint.Rule.RuleModule; 'no-this-in-sfc': eslint.Rule.RuleModule; 'no-typos': eslint.Rule.RuleModule; 'no-unescaped-entities': eslint.Rule.RuleModule; 'no-unknown-property': eslint.Rule.RuleModule; 'no-unsafe': eslint.Rule.RuleModule; 'no-unstable-nested-components': eslint.Rule.RuleModule; 'no-unused-class-component-methods': eslint.Rule.RuleModule; 'no-unused-prop-types': eslint.Rule.RuleModule; 'no-unused-state': eslint.Rule.RuleModule; 'no-object-type-as-default-prop': eslint.Rule.RuleModule; 'no-will-update-set-state': eslint.Rule.RuleModule; 'prefer-es6-class': eslint.Rule.RuleModule; 'prefer-exact-props': eslint.Rule.RuleModule; 'prefer-read-only-props': eslint.Rule.RuleModule; 'prefer-stateless-function': eslint.Rule.RuleModule; 'prop-types': eslint.Rule.RuleModule; 'react-in-jsx-scope': eslint.Rule.RuleModule; 'require-default-props': eslint.Rule.RuleModule; 'require-optimization': eslint.Rule.RuleModule; 'require-render-return': eslint.Rule.RuleModule; 'self-closing-comp': eslint.Rule.RuleModule; 'sort-comp': eslint.Rule.RuleModule; 'sort-default-props': eslint.Rule.RuleModule; 'sort-prop-types': eslint.Rule.RuleModule; 'state-in-constructor': eslint.Rule.RuleModule; 'static-property-placement': eslint.Rule.RuleModule; 'style-prop-object': eslint.Rule.RuleModule; 'void-dom-elements-no-children': eslint.Rule.RuleModule; }>; rules: { 'boolean-prop-naming': eslint.Rule.RuleModule; 'button-has-type': eslint.Rule.RuleModule; 'checked-requires-onchange-or-readonly': eslint.Rule.RuleModule; 'default-props-match-prop-types': eslint.Rule.RuleModule; 'destructuring-assignment': eslint.Rule.RuleModule; 'display-name': eslint.Rule.RuleModule; 'forbid-component-props': eslint.Rule.RuleModule; 'forbid-dom-props': eslint.Rule.RuleModule; 'forbid-elements': eslint.Rule.RuleModule; 'forbid-foreign-prop-types': eslint.Rule.RuleModule; 'forbid-prop-types': eslint.Rule.RuleModule; 'forward-ref-uses-ref': eslint.Rule.RuleModule; 'function-component-definition': eslint.Rule.RuleModule; 'hook-use-state': eslint.Rule.RuleModule; 'iframe-missing-sandbox': eslint.Rule.RuleModule; 'jsx-boolean-value': eslint.Rule.RuleModule; 'jsx-child-element-spacing': eslint.Rule.RuleModule; 'jsx-closing-bracket-location': eslint.Rule.RuleModule; 'jsx-closing-tag-location': eslint.Rule.RuleModule; 'jsx-curly-spacing': eslint.Rule.RuleModule; 'jsx-curly-newline': eslint.Rule.RuleModule; 'jsx-equals-spacing': eslint.Rule.RuleModule; 'jsx-filename-extension': eslint.Rule.RuleModule; 'jsx-first-prop-new-line': eslint.Rule.RuleModule; 'jsx-handler-names': eslint.Rule.RuleModule; 'jsx-indent': eslint.Rule.RuleModule; 'jsx-indent-props': eslint.Rule.RuleModule; 'jsx-key': eslint.Rule.RuleModule; 'jsx-max-depth': eslint.Rule.RuleModule; 'jsx-max-props-per-line': eslint.Rule.RuleModule; 'jsx-newline': eslint.Rule.RuleModule; 'jsx-no-bind': eslint.Rule.RuleModule; 'jsx-no-comment-textnodes': eslint.Rule.RuleModule; 'jsx-no-constructed-context-values': eslint.Rule.RuleModule; 'jsx-no-duplicate-props': eslint.Rule.RuleModule; 'jsx-no-leaked-render': eslint.Rule.RuleModule; 'jsx-no-literals': eslint.Rule.RuleModule; 'jsx-no-script-url': eslint.Rule.RuleModule; 'jsx-no-target-blank': eslint.Rule.RuleModule; 'jsx-no-useless-fragment': eslint.Rule.RuleModule; 'jsx-one-expression-per-line': eslint.Rule.RuleModule; 'jsx-no-undef': eslint.Rule.RuleModule; 'jsx-curly-brace-presence': eslint.Rule.RuleModule; 'jsx-pascal-case': eslint.Rule.RuleModule; 'jsx-fragments': eslint.Rule.RuleModule; 'jsx-props-no-multi-spaces': eslint.Rule.RuleModule; 'jsx-props-no-spreading': eslint.Rule.RuleModule; 'jsx-props-no-spread-multi': eslint.Rule.RuleModule; 'jsx-sort-default-props': eslint.Rule.RuleModule; 'jsx-sort-props': eslint.Rule.RuleModule; 'jsx-space-before-closing': eslint.Rule.RuleModule; 'jsx-tag-spacing': eslint.Rule.RuleModule; 'jsx-uses-react': eslint.Rule.RuleModule; 'jsx-uses-vars': eslint.Rule.RuleModule; 'jsx-wrap-multilines': eslint.Rule.RuleModule; 'no-invalid-html-attribute': eslint.Rule.RuleModule; 'no-access-state-in-setstate': eslint.Rule.RuleModule; 'no-adjacent-inline-elements': eslint.Rule.RuleModule; 'no-array-index-key': eslint.Rule.RuleModule; 'no-arrow-function-lifecycle': eslint.Rule.RuleModule; 'no-children-prop': eslint.Rule.RuleModule; 'no-danger': eslint.Rule.RuleModule; 'no-danger-with-children': eslint.Rule.RuleModule; 'no-deprecated': eslint.Rule.RuleModule; 'no-did-mount-set-state': eslint.Rule.RuleModule; 'no-did-update-set-state': eslint.Rule.RuleModule; 'no-direct-mutation-state': eslint.Rule.RuleModule; 'no-find-dom-node': eslint.Rule.RuleModule; 'no-is-mounted': eslint.Rule.RuleModule; 'no-multi-comp': eslint.Rule.RuleModule; 'no-namespace': eslint.Rule.RuleModule; 'no-set-state': eslint.Rule.RuleModule; 'no-string-refs': eslint.Rule.RuleModule; 'no-redundant-should-component-update': eslint.Rule.RuleModule; 'no-render-return-value': eslint.Rule.RuleModule; 'no-this-in-sfc': eslint.Rule.RuleModule; 'no-typos': eslint.Rule.RuleModule; 'no-unescaped-entities': eslint.Rule.RuleModule; 'no-unknown-property': eslint.Rule.RuleModule; 'no-unsafe': eslint.Rule.RuleModule; 'no-unstable-nested-components': eslint.Rule.RuleModule; 'no-unused-class-component-methods': eslint.Rule.RuleModule; 'no-unused-prop-types': eslint.Rule.RuleModule; 'no-unused-state': eslint.Rule.RuleModule; 'no-object-type-as-default-prop': eslint.Rule.RuleModule; 'no-will-update-set-state': eslint.Rule.RuleModule; 'prefer-es6-class': eslint.Rule.RuleModule; 'prefer-exact-props': eslint.Rule.RuleModule; 'prefer-read-only-props': eslint.Rule.RuleModule; 'prefer-stateless-function': eslint.Rule.RuleModule; 'prop-types': eslint.Rule.RuleModule; 'react-in-jsx-scope': eslint.Rule.RuleModule; 'require-default-props': eslint.Rule.RuleModule; 'require-optimization': eslint.Rule.RuleModule; 'require-render-return': eslint.Rule.RuleModule; 'self-closing-comp': eslint.Rule.RuleModule; 'sort-comp': eslint.Rule.RuleModule; 'sort-default-props': eslint.Rule.RuleModule; 'sort-prop-types': eslint.Rule.RuleModule; 'state-in-constructor': eslint.Rule.RuleModule; 'static-property-placement': eslint.Rule.RuleModule; 'style-prop-object': eslint.Rule.RuleModule; 'void-dom-elements-no-children': eslint.Rule.RuleModule; }; configs: { recommended: { plugins: ["react"]; parserOptions: { ecmaFeatures: { jsx: boolean; }; }; rules: { "react/display-name": 2; "react/jsx-key": 2; "react/jsx-no-comment-textnodes": 2; "react/jsx-no-duplicate-props": 2; "react/jsx-no-target-blank": 2; "react/jsx-no-undef": 2; "react/jsx-uses-react": 2; "react/jsx-uses-vars": 2; "react/no-children-prop": 2; "react/no-danger-with-children": 2; "react/no-deprecated": 2; "react/no-direct-mutation-state": 2; "react/no-find-dom-node": 2; "react/no-is-mounted": 2; "react/no-render-return-value": 2; "react/no-string-refs": 2; "react/no-unescaped-entities": 2; "react/no-unknown-property": 2; "react/no-unsafe": 0; "react/prop-types": 2; "react/react-in-jsx-scope": 2; "react/require-render-return": 2; }; }; all: { plugins: ["react"]; parserOptions: { ecmaFeatures: { jsx: boolean; }; }; rules: Record<"boolean-prop-naming" | "button-has-type" | "checked-requires-onchange-or-readonly" | "default-props-match-prop-types" | "destructuring-assignment" | "display-name" | "forbid-component-props" | "forbid-dom-props" | "forbid-elements" | "forbid-foreign-prop-types" | "forbid-prop-types" | "prop-types" | "forward-ref-uses-ref" | "function-component-definition" | "hook-use-state" | "iframe-missing-sandbox" | "jsx-boolean-value" | "jsx-child-element-spacing" | "jsx-closing-bracket-location" | "jsx-closing-tag-location" | "jsx-curly-spacing" | "jsx-curly-newline" | "jsx-equals-spacing" | "jsx-filename-extension" | "jsx-first-prop-new-line" | "jsx-handler-names" | "jsx-indent" | "jsx-indent-props" | "jsx-key" | "jsx-max-depth" | "jsx-max-props-per-line" | "jsx-newline" | "jsx-no-bind" | "jsx-no-comment-textnodes" | "jsx-no-constructed-context-values" | "jsx-no-duplicate-props" | "jsx-no-leaked-render" | "jsx-no-literals" | "jsx-no-script-url" | "jsx-no-target-blank" | "jsx-no-useless-fragment" | "jsx-one-expression-per-line" | "jsx-no-undef" | "jsx-curly-brace-presence" | "jsx-pascal-case" | "jsx-fragments" | "jsx-props-no-multi-spaces" | "jsx-props-no-spreading" | "jsx-props-no-spread-multi" | "sort-default-props" | "jsx-sort-default-props" | "jsx-sort-props" | "jsx-tag-spacing" | "jsx-space-before-closing" | "jsx-uses-react" | "jsx-uses-vars" | "jsx-wrap-multilines" | "no-invalid-html-attribute" | "no-access-state-in-setstate" | "no-adjacent-inline-elements" | "no-array-index-key" | "no-arrow-function-lifecycle" | "no-children-prop" | "no-danger" | "no-danger-with-children" | "no-deprecated" | "no-direct-mutation-state" | "no-find-dom-node" | "no-is-mounted" | "no-multi-comp" | "no-namespace" | "no-set-state" | "no-string-refs" | "no-redundant-should-component-update" | "no-render-return-value" | "no-this-in-sfc" | "no-typos" | "no-unescaped-entities" | "no-unknown-property" | "no-unsafe" | "no-unstable-nested-components" | "no-unused-class-component-methods" | "no-unused-prop-types" | "no-unused-state" | "no-object-type-as-default-prop" | "prefer-es6-class" | "prefer-exact-props" | "prefer-read-only-props" | "prefer-stateless-function" | "react-in-jsx-scope" | "require-default-props" | "require-optimization" | "require-render-return" | "self-closing-comp" | "sort-comp" | "sort-prop-types" | "state-in-constructor" | "static-property-placement" | "style-prop-object" | "void-dom-elements-no-children" | "no-did-mount-set-state" | "no-did-update-set-state" | "no-will-update-set-state", 2 | "error">; }; 'jsx-runtime': { plugins: ["react"]; parserOptions: { ecmaFeatures: { jsx: boolean; }; jsxPragma: any; }; rules: { "react/react-in-jsx-scope": 0; "react/jsx-uses-react": 0; }; }; flat: Record<string, _pluginReact.ReactFlatConfig>; } & { flat: Record<string, _pluginReact.ReactFlatConfig>; }; }; declare const pluginReactHooks: typeof _pluginReactHooks; declare const pluginPerfectionist: any; declare const pluginUnusedImports: any; declare const pluginNode: eslint.ESLint.Plugin & { configs: _pluginNode.Configs; }; declare const pluginAstro: { meta: { name: string; version: string; }; environments: { astro: { globals: { Astro: boolean; Fragment: boolean; }; }; }; rules: { [key: string]: eslint.Rule.RuleModule; }; processors: { ".astro": eslint.Linter.Processor<string | eslint.Linter.ProcessorFile>; astro: eslint.Linter.Processor<string | eslint.Linter.ProcessorFile>; "client-side-ts": eslint.Linter.Processor<string | eslint.Linter.ProcessorFile>; }; } & { configs: { base: eslint.Linter.Config[]; recommended: eslint.Linter.Config[]; all: eslint.Linter.Config[]; "jsx-a11y-strict": eslint.Linter.Config[]; "jsx-a11y-recommended": eslint.Linter.Config[]; "flat/base": eslint.Linter.Config[]; "flat/recommended": eslint.Linter.Config[]; "flat/all": eslint.Linter.Config[]; "flat/jsx-a11y-strict": eslint.Linter.Config[]; "flat/jsx-a11y-recommended": eslint.Linter.Config[]; }; }; declare const parserAstro: typeof _parserAstro; declare function defineConfig(config?: Linter.Config | Linter.Config[], { astro: enableAstro, gitignore: enableGitignore, jsonc: enableJsonc, markdown: enableMarkdown, prettier: enablePrettier, react: enableReact, sortImports: enableSortImports, sortObjects: enableSortObjects, svelte: enableSvelte, typescript: enableTypescript, vue: enableVue, yml: enableYml, }?: Partial<{ react: boolean; vue: boolean; astro: boolean; svelte: boolean; typescript: boolean; sortImports: boolean; sortObjects: boolean; prettier: boolean; markdown: boolean; gitignore: boolean; jsonc: boolean; yml: boolean; }>): Promise<Linter.Config[]>; export { GLOB_ALL_SRC, GLOB_ASTRO, GLOB_CSS, GLOB_DIST, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_LOCKFILE, GLOB_MARKDOWN, GLOB_NODE_MODULES, GLOB_PACKAGEJSON, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_SVELTE, GLOB_TS, GLOB_TSCONFIG, GLOB_TSX, GLOB_VUE, GLOB_YAML, asyncSvelte, comments, defineConfig, gitignores, hasAstro, hasAstroPrettier, hasReact, hasSvelte, hasSveltePrettier, hasTailwindcss, hasTailwindcssPrettire, hasTypeScript, hasVue, ignores, imports, isInEditor, javascript, jsonc, markdown, node, parserAstro, pluginAntfu, pluginAstro, pluginComments, pluginMarkdown, pluginNode, pluginPerfectionist, pluginReact, pluginReactHooks, pluginUnicorn, pluginUnusedImports, prettier, react, resolveAstro, sortImports, sortObjects, sortPackageJson, sortTsconfig, typescript, typescriptCore, unicorn, vue, yml };