UNPKG

@danwithabox/eslint-entree

Version:
831 lines (830 loc) • 26.7 kB
import gitignore from "eslint-config-flat-gitignore"; import { defineConfig } from "eslint/config"; import { RuleOptions } from "@stylistic/eslint-plugin"; import { Linter } from "eslint"; import { RuleOptions as RuleOptions$1 } from "eslint-plugin-vue/lib/eslint-typegen"; import { Simplify } from "type-fest"; //#region src/entree-configs.d.ts /** * ESLint config for TypeScript + .gitignore file support from `eslint-config-flat-gitignore`. */ declare function typeScript(config: { gitignore: boolean; typeScriptRules: Linter.RulesRecord; }): Array<Linter.Config>; /** * ESLint config for TypeScript & Vue 3 + .gitignore file support from `eslint-config-flat-gitignore`. * * Vue 3 support is focused on Single File Components with Composition API and `<script setup>` */ declare function vue3(config: { gitignore: boolean; typeScriptRules: Linter.RulesRecord; vue3Rules: Linter.RulesRecord; }): Array<Linter.Config>; /** * ESLint config for TypeScript & React + .gitignore file support from `eslint-config-flat-gitignore`. */ declare function react(config: { gitignore: boolean; typeScriptRules: Linter.RulesRecord; reactRules: Linter.RulesRecord; }): Array<Linter.Config>; /** * Configs bundled with the library. */ declare const entreeConfigs: { typeScript: typeof typeScript; vue3: typeof vue3; react: typeof react; }; //#endregion //#region src/entree-rules.d.ts /** * Every collection of hand-picked rules. */ declare const entreeRules: { react(): any; vue3(): { "vue/array-bracket-spacing": ["warn", "never"]; "vue/arrow-spacing": ["warn"]; "vue/comma-dangle": ["warn", { arrays: "always-multiline"; objects: "always"; imports: "never"; exports: "always-multiline"; functions: "always-multiline"; }]; "vue/comma-spacing": ["warn", { before: false; after: true; }]; "vue/key-spacing": ["warn", { singleLine: { beforeColon: false; afterColon: true; }; multiLine: { beforeColon: false; afterColon: true; }; align: { beforeColon: false; afterColon: true; on: "value"; }; }]; "vue/keyword-spacing": ["warn", { before: true; after: true; }]; "vue/object-curly-spacing": ["warn", "always", { arraysInObjects: false; objectsInObjects: false; }]; "vue/space-in-parens": ["warn", "never"]; "vue/space-infix-ops": ["warn", { int32Hint: true; }]; "vue/block-order": ["warn", { order: string[]; }]; "vue/no-duplicate-attr-inheritance": ["error"]; "vue/no-required-prop-with-default": ["warn", { autofix: true; }]; "vue/no-restricted-v-bind": ["error", { argument: string; message: string; }]; "vue/no-undef-components": ["error", { ignorePatterns: string[]; }]; "vue/no-unused-refs": ["error"]; "vue/padding-line-between-blocks": ["warn", "always"]; "vue/prefer-define-options": ["warn"]; "vue/prefer-separate-static-class": ["warn"]; "vue/require-macro-variable-name": ["error", { defineProps: string; defineEmits: string; defineSlots: string; useSlots: string; useAttrs: string; }]; "vue/require-typed-ref": ["error"]; "vue/v-for-delimiter-style": ["warn", "in"]; "vue/valid-define-options": ["error"]; "vue/block-lang": ["error", { script: { lang: string; }; }]; "vue/component-api-style": ["error", ["script-setup"]]; "vue/component-name-in-template-casing": ["warn", "PascalCase", { registeredComponentsOnly: true; ignores: never[]; globals: string[]; }]; "vue/custom-event-name-casing": ["warn", "camelCase", { ignores: never[]; }]; "vue/define-emits-declaration": ["warn", "type-literal"]; "vue/define-props-declaration": ["warn", "type-based"]; "vue/html-button-has-type": ["warn", { button: true; submit: false; reset: false; }]; "vue/attributes-order": ["warn", { order: ("DEFINITION" | "LIST_RENDERING" | "CONDITIONALS" | "RENDER_MODIFIERS" | "GLOBAL" | "UNIQUE" | "SLOT" | "TWO_WAY_BINDING" | "OTHER_DIRECTIVES" | "ATTR_STATIC" | "ATTR_DYNAMIC" | "ATTR_SHORTHAND_BOOL" | "EVENTS" | "CONTENT")[]; alphabetical: false; }]; "vue/no-lone-template": ["warn", { ignoreAccessible: true; }]; "vue/no-multiple-slot-args": ["warn"]; "vue/no-v-html": ["warn"]; "vue/attribute-hyphenation": ["warn"]; "vue/html-closing-bracket-spacing": ["warn"]; "vue/html-self-closing": ["warn", { html: { void: "never"; normal: "never"; component: "any"; }; svg: "any"; math: "any"; }]; "vue/html-quotes": ["warn", "double", { avoidEscape: true; }]; "vue/mustache-interpolation-spacing": ["warn", "always"]; "vue/no-multi-spaces": ["warn", { ignoreProperties: true; }]; "vue/no-spaces-around-equal-signs-in-attribute": ["warn"]; "vue/no-template-shadow": ["warn"]; "vue/v-bind-style": ["warn", "shorthand"]; "vue/v-on-event-hyphenation": ["warn", "always", { autofix: true; }]; "vue/v-on-style": ["warn", "shorthand"]; "vue/v-slot-style": ["warn", { atComponent: "shorthand"; default: "shorthand"; named: "shorthand"; }]; "vue/no-dupe-keys": ["error"]; "vue/no-side-effects-in-computed-properties": ["error"]; "vue/no-ref-as-operand": ["error"]; "vue/no-async-in-computed-properties": ["error"]; "vue/no-child-content": ["error"]; "vue/no-dupe-v-else-if": ["error"]; "vue/no-duplicate-attributes": ["error"]; "vue/no-export-in-script-setup": ["error"]; "vue/no-expose-after-await": ["error"]; "vue/no-lifecycle-after-await": ["error"]; "vue/no-reserved-keys": ["error"]; "vue/no-reserved-props": ["error"]; "vue/no-template-key": ["error"]; "vue/no-textarea-mustache": ["error"]; "vue/no-use-v-if-with-v-for": ["error"]; "vue/no-useless-template-attributes": ["error"]; "vue/no-v-for-template-key-on-child": ["error"]; "vue/no-v-text-v-html-on-component": ["error"]; "vue/no-watch-after-await": ["error"]; "vue/prefer-import-from-vue": ["error"]; "vue/require-component-is": ["error"]; "vue/require-render-return": ["error"]; "vue/require-toggle-inside-transition": ["error"]; "vue/use-v-on-exact": ["error"]; "vue/valid-attribute-name": ["error"]; "vue/valid-define-emits": ["error"]; "vue/valid-define-props": ["error"]; "vue/valid-next-tick": ["error"]; "vue/valid-template-root": ["error"]; "vue/valid-v-bind": ["error"]; "vue/valid-v-cloak": ["error"]; "vue/valid-v-else-if": ["error"]; "vue/valid-v-else": ["error"]; "vue/valid-v-html": ["error"]; "vue/valid-v-if": ["error"]; "vue/valid-v-is": ["error"]; "vue/valid-v-memo": ["error"]; "vue/valid-v-model": ["error"]; "vue/valid-v-on": ["error"]; "vue/valid-v-once": ["error"]; "vue/valid-v-pre": ["error"]; "vue/valid-v-show": ["error"]; "vue/valid-v-slot": ["error"]; "vue/valid-v-text": ["error"]; "vue/comment-directive": ["error"]; }; vue3_base(): { "vue/comment-directive": ["error"]; }; vue3_essential(): { "vue/no-dupe-keys": ["error"]; "vue/no-side-effects-in-computed-properties": ["error"]; "vue/no-ref-as-operand": ["error"]; "vue/no-async-in-computed-properties": ["error"]; "vue/no-child-content": ["error"]; "vue/no-dupe-v-else-if": ["error"]; "vue/no-duplicate-attributes": ["error"]; "vue/no-export-in-script-setup": ["error"]; "vue/no-expose-after-await": ["error"]; "vue/no-lifecycle-after-await": ["error"]; "vue/no-reserved-keys": ["error"]; "vue/no-reserved-props": ["error"]; "vue/no-template-key": ["error"]; "vue/no-textarea-mustache": ["error"]; "vue/no-use-v-if-with-v-for": ["error"]; "vue/no-useless-template-attributes": ["error"]; "vue/no-v-for-template-key-on-child": ["error"]; "vue/no-v-text-v-html-on-component": ["error"]; "vue/no-watch-after-await": ["error"]; "vue/prefer-import-from-vue": ["error"]; "vue/require-component-is": ["error"]; "vue/require-render-return": ["error"]; "vue/require-toggle-inside-transition": ["error"]; "vue/use-v-on-exact": ["error"]; "vue/valid-attribute-name": ["error"]; "vue/valid-define-emits": ["error"]; "vue/valid-define-props": ["error"]; "vue/valid-next-tick": ["error"]; "vue/valid-template-root": ["error"]; "vue/valid-v-bind": ["error"]; "vue/valid-v-cloak": ["error"]; "vue/valid-v-else-if": ["error"]; "vue/valid-v-else": ["error"]; "vue/valid-v-html": ["error"]; "vue/valid-v-if": ["error"]; "vue/valid-v-is": ["error"]; "vue/valid-v-memo": ["error"]; "vue/valid-v-model": ["error"]; "vue/valid-v-on": ["error"]; "vue/valid-v-once": ["error"]; "vue/valid-v-pre": ["error"]; "vue/valid-v-show": ["error"]; "vue/valid-v-slot": ["error"]; "vue/valid-v-text": ["error"]; }; vue3_strongly_recommended(): { "vue/attribute-hyphenation": ["warn"]; "vue/html-closing-bracket-spacing": ["warn"]; "vue/html-self-closing": ["warn", { html: { void: "never"; normal: "never"; component: "any"; }; svg: "any"; math: "any"; }]; "vue/html-quotes": ["warn", "double", { avoidEscape: true; }]; "vue/mustache-interpolation-spacing": ["warn", "always"]; "vue/no-multi-spaces": ["warn", { ignoreProperties: true; }]; "vue/no-spaces-around-equal-signs-in-attribute": ["warn"]; "vue/no-template-shadow": ["warn"]; "vue/v-bind-style": ["warn", "shorthand"]; "vue/v-on-event-hyphenation": ["warn", "always", { autofix: true; }]; "vue/v-on-style": ["warn", "shorthand"]; "vue/v-slot-style": ["warn", { atComponent: "shorthand"; default: "shorthand"; named: "shorthand"; }]; }; vue3_recommended(): { "vue/attributes-order": ["warn", { order: ("DEFINITION" | "LIST_RENDERING" | "CONDITIONALS" | "RENDER_MODIFIERS" | "GLOBAL" | "UNIQUE" | "SLOT" | "TWO_WAY_BINDING" | "OTHER_DIRECTIVES" | "ATTR_STATIC" | "ATTR_DYNAMIC" | "ATTR_SHORTHAND_BOOL" | "EVENTS" | "CONTENT")[]; alphabetical: false; }]; "vue/no-lone-template": ["warn", { ignoreAccessible: true; }]; "vue/no-multiple-slot-args": ["warn"]; "vue/no-v-html": ["warn"]; }; vue3_uncategorized(): { "vue/block-order": ["warn", { order: string[]; }]; "vue/no-duplicate-attr-inheritance": ["error"]; "vue/no-required-prop-with-default": ["warn", { autofix: true; }]; "vue/no-restricted-v-bind": ["error", { argument: string; message: string; }]; "vue/no-undef-components": ["error", { ignorePatterns: string[]; }]; "vue/no-unused-refs": ["error"]; "vue/padding-line-between-blocks": ["warn", "always"]; "vue/prefer-define-options": ["warn"]; "vue/prefer-separate-static-class": ["warn"]; "vue/require-macro-variable-name": ["error", { defineProps: string; defineEmits: string; defineSlots: string; useSlots: string; useAttrs: string; }]; "vue/require-typed-ref": ["error"]; "vue/v-for-delimiter-style": ["warn", "in"]; "vue/valid-define-options": ["error"]; "vue/block-lang": ["error", { script: { lang: string; }; }]; "vue/component-api-style": ["error", ["script-setup"]]; "vue/component-name-in-template-casing": ["warn", "PascalCase", { registeredComponentsOnly: true; ignores: never[]; globals: string[]; }]; "vue/custom-event-name-casing": ["warn", "camelCase", { ignores: never[]; }]; "vue/define-emits-declaration": ["warn", "type-literal"]; "vue/define-props-declaration": ["warn", "type-based"]; "vue/html-button-has-type": ["warn", { button: true; submit: false; reset: false; }]; }; vue3_extension_rules_forTemplateExpressions(): { "vue/array-bracket-spacing": ["warn", "never"]; "vue/arrow-spacing": ["warn"]; "vue/comma-dangle": ["warn", { arrays: "always-multiline"; objects: "always"; imports: "never"; exports: "always-multiline"; functions: "always-multiline"; }]; "vue/comma-spacing": ["warn", { before: false; after: true; }]; "vue/key-spacing": ["warn", { singleLine: { beforeColon: false; afterColon: true; }; multiLine: { beforeColon: false; afterColon: true; }; align: { beforeColon: false; afterColon: true; on: "value"; }; }]; "vue/keyword-spacing": ["warn", { before: true; after: true; }]; "vue/object-curly-spacing": ["warn", "always", { arraysInObjects: false; objectsInObjects: false; }]; "vue/space-in-parens": ["warn", "never"]; "vue/space-infix-ops": ["warn", { int32Hint: true; }]; }; typeScript(): { "@typescript-eslint/no-import-type-side-effects": ["warn"]; "no-unused-expressions": ["off"]; "@typescript-eslint/no-unused-expressions": ["warn", { allowShortCircuit: boolean; allowTernary: boolean; allowTaggedTemplates: boolean; }]; "@typescript-eslint/no-useless-empty-export": ["error"]; "@typescript-eslint/no-invalid-void-type": ["warn", { allowInGenericTypeArguments: boolean; allowAsThisParameter: boolean; }]; "@typescript-eslint/no-non-null-assertion": ["error"]; "@typescript-eslint/prefer-ts-expect-error": ["error"]; "@typescript-eslint/consistent-type-assertions": ["warn", { assertionStyle: string; objectLiteralTypeAssertions: string; }]; "@typescript-eslint/no-confusing-non-null-assertion": ["warn"]; "@typescript-eslint/ban-ts-comment": ["error", { "ts-expect-error": string; "ts-ignore": string; "ts-nocheck": string; "ts-check": boolean; }]; "@typescript-eslint/no-empty-object-type": ["error", { allowInterfaces: string; allowObjectTypes: string; }]; "@typescript-eslint/no-unsafe-function-type": ["error"]; "@typescript-eslint/no-wrapper-object-types": ["error"]; "@typescript-eslint/no-duplicate-enum-values": ["error"]; "no-loss-of-precision": ["off"]; "@typescript-eslint/no-loss-of-precision": ["error"]; "@typescript-eslint/no-misused-new": ["error"]; "@typescript-eslint/no-namespace": ["warn", { allowDeclarations: boolean; allowDefinitionFiles: boolean; }]; "@typescript-eslint/no-unnecessary-type-constraint": ["error"]; "@typescript-eslint/no-unsafe-declaration-merging": ["error"]; "@typescript-eslint/prefer-as-const": ["error"]; "@stylistic/type-annotation-spacing": ["warn", { before: false; after: true; overrides: { arrow: { before: true; after: true; }; }; }]; "@stylistic/space-before-function-paren": ["warn", { anonymous: "always"; named: "never"; asyncArrow: "always"; }]; "@stylistic/semi": ["warn", "always"]; "@stylistic/no-extra-semi": ["warn"]; "@stylistic/no-trailing-spaces": ["warn", { ignoreComments: true; }]; "@stylistic/space-infix-ops": ["warn", { int32Hint: true; }]; "@stylistic/object-curly-spacing": ["warn", "always", { arraysInObjects: false; objectsInObjects: false; }]; "@stylistic/comma-spacing": ["warn", { before: false; after: true; }]; "@stylistic/keyword-spacing": ["warn", { before: true; after: true; }]; "@stylistic/quotes": ["warn", "double", { avoidEscape: true; allowTemplateLiterals: true; }]; "@stylistic/space-in-parens": ["warn", "never"]; "@stylistic/array-bracket-spacing": ["warn", "never"]; "@stylistic/arrow-spacing": ["warn"]; "@stylistic/eol-last": ["warn", "always"]; "@stylistic/comma-dangle": ["warn", { arrays: "always-multiline"; objects: "always"; imports: "never"; exports: "always-multiline"; functions: "always-multiline"; }]; "@stylistic/member-delimiter-style": ["warn", { singleline: { delimiter: "comma"; requireLast: true; }; multiline: { delimiter: "comma"; requireLast: true; }; multilineDetection: "brackets"; }]; "@stylistic/key-spacing": ["warn", { singleLine: { beforeColon: false; afterColon: true; }; multiLine: { beforeColon: false; afterColon: true; }; align: { beforeColon: false; afterColon: true; on: "value"; }; }]; "no-compare-neg-zero": ["error"]; "no-debugger": ["error"]; "no-irregular-whitespace": ["error", { skipComments: boolean; skipJSXText: boolean; skipRegExps: boolean; skipStrings: boolean; skipTemplates: boolean; }]; "no-promise-executor-return": ["warn", { allowVoid: boolean; }]; "no-self-assign": ["warn", { props: boolean; }]; "no-self-compare": ["warn"]; "require-atomic-updates": ["error", { allowProperties: boolean; }]; "use-isnan": ["warn", { enforceForSwitchCase: boolean; enforceForIndexOf: boolean; }]; "no-caller": ["error"]; eqeqeq: ["warn", string, { null: string; }]; "default-case-last": ["warn"]; "default-case": ["warn", { commentPattern: string; }]; "no-implicit-coercion": ["warn", { boolean: boolean; number: boolean; string: boolean; disallowTemplateShorthand: boolean; allow: never[]; }]; "no-octal": ["warn"]; "no-nonoctal-decimal-escape": ["warn"]; "no-throw-literal": ["warn"]; "no-undefined": ["warn"]; "no-useless-escape": ["warn"]; "no-useless-rename": ["warn", { ignoreImport: boolean; ignoreExport: boolean; ignoreDestructuring: boolean; }]; "no-var": ["warn"]; "prefer-const": ["warn", { destructuring: string; ignoreReadBeforeAssign: boolean; }]; "prefer-promise-reject-errors": ["warn", { allowEmptyReject: boolean; }]; "prefer-template": ["warn"]; "require-unicode-regexp": ["warn"]; "symbol-description": ["warn"]; }; typeScript_eslint(): { "no-compare-neg-zero": ["error"]; "no-debugger": ["error"]; "no-irregular-whitespace": ["error", { skipComments: boolean; skipJSXText: boolean; skipRegExps: boolean; skipStrings: boolean; skipTemplates: boolean; }]; "no-promise-executor-return": ["warn", { allowVoid: boolean; }]; "no-self-assign": ["warn", { props: boolean; }]; "no-self-compare": ["warn"]; "require-atomic-updates": ["error", { allowProperties: boolean; }]; "use-isnan": ["warn", { enforceForSwitchCase: boolean; enforceForIndexOf: boolean; }]; "no-caller": ["error"]; eqeqeq: ["warn", string, { null: string; }]; "default-case-last": ["warn"]; "default-case": ["warn", { commentPattern: string; }]; "no-implicit-coercion": ["warn", { boolean: boolean; number: boolean; string: boolean; disallowTemplateShorthand: boolean; allow: never[]; }]; "no-octal": ["warn"]; "no-nonoctal-decimal-escape": ["warn"]; "no-throw-literal": ["warn"]; "no-undefined": ["warn"]; "no-useless-escape": ["warn"]; "no-useless-rename": ["warn", { ignoreImport: boolean; ignoreExport: boolean; ignoreDestructuring: boolean; }]; "no-var": ["warn"]; "prefer-const": ["warn", { destructuring: string; ignoreReadBeforeAssign: boolean; }]; "prefer-promise-reject-errors": ["warn", { allowEmptyReject: boolean; }]; "prefer-template": ["warn"]; "require-unicode-regexp": ["warn"]; "symbol-description": ["warn"]; }; typeScript_stylistic(): { "@stylistic/type-annotation-spacing": ["warn", { before: false; after: true; overrides: { arrow: { before: true; after: true; }; }; }]; "@stylistic/space-before-function-paren": ["warn", { anonymous: "always"; named: "never"; asyncArrow: "always"; }]; "@stylistic/semi": ["warn", "always"]; "@stylistic/no-extra-semi": ["warn"]; "@stylistic/no-trailing-spaces": ["warn", { ignoreComments: true; }]; "@stylistic/space-infix-ops": ["warn", { int32Hint: true; }]; "@stylistic/object-curly-spacing": ["warn", "always", { arraysInObjects: false; objectsInObjects: false; }]; "@stylistic/comma-spacing": ["warn", { before: false; after: true; }]; "@stylistic/keyword-spacing": ["warn", { before: true; after: true; }]; "@stylistic/quotes": ["warn", "double", { avoidEscape: true; allowTemplateLiterals: true; }]; "@stylistic/space-in-parens": ["warn", "never"]; "@stylistic/array-bracket-spacing": ["warn", "never"]; "@stylistic/arrow-spacing": ["warn"]; "@stylistic/eol-last": ["warn", "always"]; "@stylistic/comma-dangle": ["warn", { arrays: "always-multiline"; objects: "always"; imports: "never"; exports: "always-multiline"; functions: "always-multiline"; }]; "@stylistic/member-delimiter-style": ["warn", { singleline: { delimiter: "comma"; requireLast: true; }; multiline: { delimiter: "comma"; requireLast: true; }; multilineDetection: "brackets"; }]; "@stylistic/key-spacing": ["warn", { singleLine: { beforeColon: false; afterColon: true; }; multiLine: { beforeColon: false; afterColon: true; }; align: { beforeColon: false; afterColon: true; on: "value"; }; }]; }; typeScript_filteredBy_recommended(): { "@typescript-eslint/ban-ts-comment": ["error", { "ts-expect-error": string; "ts-ignore": string; "ts-nocheck": string; "ts-check": boolean; }]; "@typescript-eslint/no-empty-object-type": ["error", { allowInterfaces: string; allowObjectTypes: string; }]; "@typescript-eslint/no-unsafe-function-type": ["error"]; "@typescript-eslint/no-wrapper-object-types": ["error"]; "@typescript-eslint/no-duplicate-enum-values": ["error"]; "no-loss-of-precision": ["off"]; "@typescript-eslint/no-loss-of-precision": ["error"]; "@typescript-eslint/no-misused-new": ["error"]; "@typescript-eslint/no-namespace": ["warn", { allowDeclarations: boolean; allowDefinitionFiles: boolean; }]; "@typescript-eslint/no-unnecessary-type-constraint": ["error"]; "@typescript-eslint/no-unsafe-declaration-merging": ["error"]; "@typescript-eslint/prefer-as-const": ["error"]; }; typeScript_filteredBy_tsStylistic(): { "@typescript-eslint/consistent-type-assertions": ["warn", { assertionStyle: string; objectLiteralTypeAssertions: string; }]; "@typescript-eslint/no-confusing-non-null-assertion": ["warn"]; }; typeScript_filteredBy_strict(): { "@typescript-eslint/no-invalid-void-type": ["warn", { allowInGenericTypeArguments: boolean; allowAsThisParameter: boolean; }]; "@typescript-eslint/no-non-null-assertion": ["error"]; "@typescript-eslint/prefer-ts-expect-error": ["error"]; }; typeScript_filteredBy_miscellaneous(): { "@typescript-eslint/no-import-type-side-effects": ["warn"]; "no-unused-expressions": ["off"]; "@typescript-eslint/no-unused-expressions": ["warn", { allowShortCircuit: boolean; allowTernary: boolean; allowTaggedTemplates: boolean; }]; "@typescript-eslint/no-useless-empty-export": ["error"]; }; }; //#endregion //#region src/entree-utils.d.ts type stylistic_RuleOptions = { [K in keyof RuleOptions]?: Linter.RuleEntry<RuleOptions[K]> }; declare module "eslint" { namespace Linter { interface RulesRecord extends stylistic_RuleOptions, RuleOptions$1 {} } } /** * A simple helper to make working with rules in `@ts-check`-enabled files easier * by returning a narrowly typed object with explicitly known keys. * * Needed for {@link entreeFilterRules} to work correctly. * * Is not not needed for ESLint otherwise. */ declare function entreeDefineRules<T extends Linter.RulesRecord>(rules: T): T; /** * Provide a rules object to receive a getter function that returns the option of the given rule. * * Useful for sharing options between a base rule, and a rule that extends the base rule, * e.g. in the case of `eslint-plugin-vue` extension rules and the corresponding base `@stylistic` rules. */ declare function entreeAdoptOptionsFromRules<T extends Linter.RulesRecord>(rules: T): { getOptionsOf: <K extends keyof T>(keyOfRule: K) => NonNullable<T[K]>; }; /** * Filter rules for adoption or debugging purposes by excluding and picking rules. * * --- * * Filtering is meant to help in the adoption process. * * Ideally, the filtering is entirely removed after processing the whole codebase, and all rules are fully covering the code. * * - `exclude` is used to cut down on the printed result of eslint, to set aside rules that overwhelm the output * - `pick` is used to select from the remaining results the ones you currently want to fix, and to verify their adoption * * After the rule(s) in `pick` are done, run eslint again, and pick again from the results. * * After everything you picked is done, process the rules that you previously excluded, if there were any. */ declare function entreeFilterRules<T extends Linter.RulesRecord, const TExcludeKeys extends keyof T, const TPickableKeys extends keyof Omit<T, TExcludeKeys>>(rules: T, opts?: ({ exclude: readonly TExcludeKeys[]; pick?: undefined; debug?: boolean; } | { exclude: readonly TExcludeKeys[]; pick: TPickableKeys[]; debug?: boolean; })): Simplify<Pick<Omit<T, TExcludeKeys>, TPickableKeys>>; //#endregion export { defineConfig, entreeAdoptOptionsFromRules, entreeConfigs, entreeDefineRules, entreeFilterRules, entreeRules, gitignore }; //# sourceMappingURL=index.d.ts.map