@favorodera/eslint-config 0.1.4 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  <p>
5
5
  <a href="https://github.com/favorodera/eslint-config/blob/main/LICENSE"><img src="https://img.shields.io/github/license/favorodera/eslint-config.svg?style=plastic&label=License&color=blue" alt="License"></a>
6
6
  <a href="https://github.com/favorodera/eslint-config/stargazers"><img src="https://img.shields.io/github/stars/favorodera/eslint-config.svg?style=plastic&label=Stars&color=blue" alt="GitHub Stars"></a>
7
- <a href="https://npmx.dev/package/@favorodera/eslint-config"><img src="https://img.shields.io/npm/dw/@favorodera/eslint-config.svg?style=plastic&label=NPM%20Downloads&color=blue" alt="NPM Downloads"></a>
7
+ <a href="https://npmx.dev/package/@favorodera/eslint-config"><img src="https://img.shields.io/npm/dt/@favorodera/eslint-config.svg?style=plastic&label=NPM%20Downloads&color=blue" alt="NPM Downloads"></a>
8
8
  <a href="https://npmx.dev/package/@favorodera/eslint-config"><img src="https://img.shields.io/npm/v/@favorodera/eslint-config.svg?style=plastic&label=Version&color=blue" alt="NPM Version"></a>
9
9
  </p>
10
10
  </div>
@@ -30,7 +30,7 @@ The following configurations are bundled and enabled by default (they can be ind
30
30
 
31
31
  - **JavaScript** — Core ESLint rules (`@eslint/js`)
32
32
  - **TypeScript** — Type-aware linting (`typescript-eslint`)
33
- - **Vue** — Single-file component support (`eslint-plugin-vue`, `vue-eslint-parser`)
33
+ - **Vue** — Single-file component support and accessibility linting (`eslint-plugin-vue`, `vue-eslint-parser`, `eslint-plugin-vuejs-accessibility`)
34
34
  - **Stylistic** — Formatting rules (`@stylistic/eslint-plugin`)
35
35
  - **Tailwind CSS** — Utility class linting and sorting (`eslint-plugin-better-tailwindcss`)
36
36
  - **Test** — Test and Vitest specific linting (`@vitest/eslint-plugin`)
@@ -94,10 +94,8 @@ export default factory({
94
94
 
95
95
  // Example: Customize specific rulesets
96
96
  stylistic: {
97
- settings: {
98
- indent: 4,
99
- quotes: 'double',
100
- },
97
+ indent: 4,
98
+ quotes: 'double',
101
99
  },
102
100
 
103
101
  // Example: Disable tailwind if you aren't using it
package/dist/index.d.mts CHANGED
@@ -5220,6 +5220,99 @@ interface RuleOptions {
5220
5220
  * @see https://eslint.org/docs/latest/rules/vars-on-top
5221
5221
  */
5222
5222
  'vars-on-top'?: Linter.RuleEntry<[]>;
5223
+ /**
5224
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/alt-text.html
5225
+ */
5226
+ 'vue-a11y/alt-text'?: Linter.RuleEntry<VueA11YAltText>;
5227
+ /**
5228
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/anchor-has-content.html
5229
+ */
5230
+ 'vue-a11y/anchor-has-content'?: Linter.RuleEntry<VueA11YAnchorHasContent>;
5231
+ /**
5232
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/aria-props.html
5233
+ */
5234
+ 'vue-a11y/aria-props'?: Linter.RuleEntry<[]>;
5235
+ /**
5236
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/aria-role.html
5237
+ */
5238
+ 'vue-a11y/aria-role'?: Linter.RuleEntry<VueA11YAriaRole>;
5239
+ /**
5240
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/aria-unsupported-elements.html
5241
+ */
5242
+ 'vue-a11y/aria-unsupported-elements'?: Linter.RuleEntry<[]>;
5243
+ /**
5244
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/click-events-have-key-events.html
5245
+ */
5246
+ 'vue-a11y/click-events-have-key-events'?: Linter.RuleEntry<[]>;
5247
+ /**
5248
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/form-control-has-label.html
5249
+ */
5250
+ 'vue-a11y/form-control-has-label'?: Linter.RuleEntry<VueA11YFormControlHasLabel>;
5251
+ /**
5252
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/heading-has-content.html
5253
+ */
5254
+ 'vue-a11y/heading-has-content'?: Linter.RuleEntry<VueA11YHeadingHasContent>;
5255
+ /**
5256
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/iframe-has-title.html
5257
+ */
5258
+ 'vue-a11y/iframe-has-title'?: Linter.RuleEntry<[]>;
5259
+ /**
5260
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/interactive-supports-focus.html
5261
+ */
5262
+ 'vue-a11y/interactive-supports-focus'?: Linter.RuleEntry<VueA11YInteractiveSupportsFocus>;
5263
+ /**
5264
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/label-has-for.html
5265
+ */
5266
+ 'vue-a11y/label-has-for'?: Linter.RuleEntry<VueA11YLabelHasFor>;
5267
+ /**
5268
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/media-has-caption.html
5269
+ */
5270
+ 'vue-a11y/media-has-caption'?: Linter.RuleEntry<VueA11YMediaHasCaption>;
5271
+ /**
5272
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/mouse-events-have-key-events.html
5273
+ */
5274
+ 'vue-a11y/mouse-events-have-key-events'?: Linter.RuleEntry<[]>;
5275
+ /**
5276
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/no-access-key.html
5277
+ */
5278
+ 'vue-a11y/no-access-key'?: Linter.RuleEntry<[]>;
5279
+ /**
5280
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/no-aria-hidden-on-focusable.html
5281
+ */
5282
+ 'vue-a11y/no-aria-hidden-on-focusable'?: Linter.RuleEntry<[]>;
5283
+ /**
5284
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/no-autofocus.html
5285
+ */
5286
+ 'vue-a11y/no-autofocus'?: Linter.RuleEntry<VueA11YNoAutofocus>;
5287
+ /**
5288
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/no-distracting-elements.html
5289
+ */
5290
+ 'vue-a11y/no-distracting-elements'?: Linter.RuleEntry<VueA11YNoDistractingElements>;
5291
+ /**
5292
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/no-onchange.html
5293
+ * @deprecated
5294
+ */
5295
+ 'vue-a11y/no-onchange'?: Linter.RuleEntry<[]>;
5296
+ /**
5297
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/no-redundant-roles.html
5298
+ */
5299
+ 'vue-a11y/no-redundant-roles'?: Linter.RuleEntry<VueA11YNoRedundantRoles>;
5300
+ /**
5301
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/no-role-presentation-on-focusable.html
5302
+ */
5303
+ 'vue-a11y/no-role-presentation-on-focusable'?: Linter.RuleEntry<[]>;
5304
+ /**
5305
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/no-static-element-interactions.html
5306
+ */
5307
+ 'vue-a11y/no-static-element-interactions'?: Linter.RuleEntry<[]>;
5308
+ /**
5309
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/role-has-required-aria-props.html
5310
+ */
5311
+ 'vue-a11y/role-has-required-aria-props'?: Linter.RuleEntry<[]>;
5312
+ /**
5313
+ * @see https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility/rules/tabindex-no-positive.html
5314
+ */
5315
+ 'vue-a11y/tabindex-no-positive'?: Linter.RuleEntry<[]>;
5223
5316
  /**
5224
5317
  * Enforce linebreaks after opening and before closing array brackets in `<template>`
5225
5318
  * @see https://eslint.vuejs.org/rules/array-bracket-newline.html
@@ -16797,6 +16890,66 @@ type UseIsnan = [] | [{
16797
16890
  }]; // ----- valid-typeof -----
16798
16891
  type ValidTypeof = [] | [{
16799
16892
  requireStringLiterals?: boolean;
16893
+ }]; // ----- vue-a11y/alt-text -----
16894
+ type VueA11YAltText = [] | [{
16895
+ elements?: string[];
16896
+ img?: string[];
16897
+ object?: string[];
16898
+ area?: string[];
16899
+ "input[type=\"image\"]"?: string[];
16900
+ [k: string]: unknown | undefined;
16901
+ }]; // ----- vue-a11y/anchor-has-content -----
16902
+ type VueA11YAnchorHasContent = [] | [{
16903
+ components?: string[];
16904
+ accessibleChildren?: string[];
16905
+ accessibleDirectives?: string[];
16906
+ [k: string]: unknown | undefined;
16907
+ }]; // ----- vue-a11y/aria-role -----
16908
+ type VueA11YAriaRole = [] | [{
16909
+ ignoreNonDOM?: boolean;
16910
+ }]; // ----- vue-a11y/form-control-has-label -----
16911
+ type VueA11YFormControlHasLabel = [] | [{
16912
+ labelComponents?: string[];
16913
+ controlComponents?: string[];
16914
+ [k: string]: unknown | undefined;
16915
+ }]; // ----- vue-a11y/heading-has-content -----
16916
+ type VueA11YHeadingHasContent = [] | [{
16917
+ components?: string[];
16918
+ accessibleChildren?: string[];
16919
+ accessibleDirectives?: string[];
16920
+ [k: string]: unknown | undefined;
16921
+ }]; // ----- vue-a11y/interactive-supports-focus -----
16922
+ type VueA11YInteractiveSupportsFocus = [] | [{
16923
+ tabbable?: ("button" | "checkbox" | "columnheader" | "combobox" | "grid" | "gridcell" | "link" | "listbox" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "option" | "progressbar" | "radio" | "radiogroup" | "row" | "rowheader" | "scrollbar" | "searchbox" | "slider" | "spinbutton" | "switch" | "tab" | "tablist" | "textbox" | "tree" | "treegrid" | "treeitem" | "doc-backlink" | "doc-biblioref" | "doc-glossref" | "doc-noteref")[];
16924
+ [k: string]: unknown | undefined;
16925
+ }]; // ----- vue-a11y/label-has-for -----
16926
+ type VueA11YLabelHasFor = [] | [{
16927
+ components?: string[];
16928
+ controlComponents?: string[];
16929
+ required?: (("nesting" | "id") | {
16930
+ some: ("nesting" | "id")[];
16931
+ [k: string]: unknown | undefined;
16932
+ } | {
16933
+ every: ("nesting" | "id")[];
16934
+ [k: string]: unknown | undefined;
16935
+ });
16936
+ allowChildren?: boolean;
16937
+ [k: string]: unknown | undefined;
16938
+ }]; // ----- vue-a11y/media-has-caption -----
16939
+ type VueA11YMediaHasCaption = [] | [{
16940
+ audio?: string[];
16941
+ track?: string[];
16942
+ video?: string[];
16943
+ [k: string]: unknown | undefined;
16944
+ }]; // ----- vue-a11y/no-autofocus -----
16945
+ type VueA11YNoAutofocus = [] | [{
16946
+ ignoreNonDOM?: boolean;
16947
+ }]; // ----- vue-a11y/no-distracting-elements -----
16948
+ type VueA11YNoDistractingElements = [] | [{
16949
+ [k: string]: unknown | undefined;
16950
+ }]; // ----- vue-a11y/no-redundant-roles -----
16951
+ type VueA11YNoRedundantRoles = [] | [{
16952
+ [k: string]: string[] | undefined;
16800
16953
  }]; // ----- vue/array-bracket-newline -----
16801
16954
  type VueArrayBracketNewline = [] | [(("always" | "never" | "consistent") | {
16802
16955
  multiline?: boolean;
@@ -18125,18 +18278,11 @@ type Yoda = [] | [("always" | "never")] | [("always" | "never"), {
18125
18278
  exceptRange?: boolean;
18126
18279
  onlyEquality?: boolean;
18127
18280
  }]; // Names of all the configs
18128
- type ConfigNames = 'favorodera/ignores' | 'favorodera/imports/setup' | 'favorodera/imports/rules' | 'favorodera/javascript/setup' | 'favorodera/javascript/rules' | 'favorodera/jsdoc/setup' | 'favorodera/jsdoc/rules' | 'favorodera/jsonc/setup' | 'favorodera/jsonc/rules' | 'favorodera/jsonc/sort/package-json' | 'favorodera/jsonc/sort/tsconfig-json' | 'favorodera/jsonc/disables' | 'favorodera/markdown/setup' | 'favorodera/markdown/rules' | 'favorodera/markdown/code-in-md/disables' | 'favorodera/node/setup' | 'favorodera/node/rules' | 'favorodera/node/disables' | 'favorodera/perfectionist/setup' | 'favorodera/perfectionist/rules' | 'favorodera/pnpm/setup' | 'favorodera/pnpm/package-json' | 'favorodera/pnpm/pnpm-workspace-yaml' | 'favorodera/stylistic/setup' | 'favorodera/stylistic/rules' | 'favorodera/tailwind/setup' | 'favorodera/tailwind/rules' | 'favorodera/test/setup' | 'favorodera/test/rules' | 'favorodera/test/disables' | 'favorodera/typescript/setup' | 'favorodera/typescript/rules' | 'favorodera/unicorn/setup' | 'favorodera/unicorn/rules' | 'favorodera/unused-imports/setup' | 'favorodera/unused-imports/rules' | 'favorodera/unused-imports/disables' | 'favorodera/vue/setup' | 'favorodera/vue/rules' | 'favorodera/yaml/setup' | 'favorodera/yaml/rules' | 'favorodera/yaml/sort/pnpm-workspace-yaml';
18281
+ type ConfigNames = 'favorodera/ignores' | 'favorodera/imports/setup' | 'favorodera/imports/rules' | 'favorodera/javascript/setup' | 'favorodera/javascript/rules' | 'favorodera/jsdoc/recommended/setup' | 'favorodera/jsdoc/stylistic/setup' | 'favorodera/jsdoc/rules' | 'favorodera/jsonc/setup' | 'favorodera/jsonc/rules' | 'favorodera/jsonc/sort/package-json' | 'favorodera/jsonc/sort/tsconfig-json' | 'favorodera/markdown/setup' | 'favorodera/markdown/rules' | 'favorodera/node/setup' | 'favorodera/node/rules' | 'favorodera/perfectionist/setup' | 'favorodera/perfectionist/rules' | 'favorodera/pnpm/setup' | 'favorodera/pnpm/package-json' | 'favorodera/pnpm/pnpm-workspace-yaml' | 'favorodera/stylistic/setup' | 'favorodera/stylistic/rules' | 'favorodera/tailwind/recommended/setup' | 'favorodera/tailwind/stylistic/setup' | 'favorodera/tailwind/rules' | 'favorodera/test/setup' | 'favorodera/test/rules' | 'favorodera/typescript/setup' | 'favorodera/typescript/rules' | 'favorodera/unicorn/setup' | 'favorodera/unicorn/rules' | 'favorodera/unused-imports/setup' | 'favorodera/unused-imports/rules' | 'favorodera/vue/setup' | 'favorodera/vue/a11y/setup' | 'favorodera/vue/rules' | 'favorodera/vue/a11y/rules' | 'favorodera/yaml/setup' | 'favorodera/yaml/rules' | 'favorodera/yaml/sort/pnpm-workspace-yaml' | 'favorodera/disables/jsonc' | 'favorodera/disables/markdown' | 'favorodera/disables/code-in-markdown' | 'favorodera/disables/js-ts-vue' | 'favorodera/disables/vue' | 'favorodera/disables/test';
18129
18282
  //#endregion
18130
18283
  //#region src/types/utils.d.ts
18131
18284
  /** ESLint rules configuration with type-safe autocompletion */
18132
18285
  type Rules = Record<string, Linter.RuleEntry<any> | undefined> & RuleOptions;
18133
- /** Shared configuration options for ESLint rules */
18134
- interface SharedOptions {
18135
- /** File glob patterns to apply configuration to */
18136
- files?: Array<string>;
18137
- /** Override rules configuration */
18138
- overrides?: TypedFlatConfigItem['rules'];
18139
- }
18140
18286
  /**
18141
18287
  * An updated version of ESLint's `Linter.Config`, which provides autocompletion
18142
18288
  * for `rules` and relaxes type limitations for `plugins` and `rules`, because
@@ -18163,198 +18309,148 @@ type TypedFlatConfigItem = Omit<ConfigWithExtends, 'plugins' | 'rules'> & {
18163
18309
  */
18164
18310
  type IgnoresPatterns = ((defaults: Array<string>) => Array<string>) | Array<string>;
18165
18311
  //#endregion
18166
- //#region src/configs/imports.d.ts
18167
- /** Options for configuring imports linting rules. */
18168
- type ImportsConfigOptions = SharedOptions;
18169
- //#endregion
18170
- //#region src/configs/javascript.d.ts
18171
- /** Options for configuring JavaScript linting rules. */
18172
- type JavascriptConfigOptions = SharedOptions;
18173
- //#endregion
18174
- //#region src/configs/jsdoc.d.ts
18175
- /** Options for configuring JSDoc linting rules. */
18176
- type JSDocConfigOptions = SharedOptions;
18177
- //#endregion
18178
- //#region src/configs/jsonc.d.ts
18179
- /** Options for configuring JSON and JSONC linting rules. */
18180
- type JSONCConfigOptions = SharedOptions;
18181
- //#endregion
18182
18312
  //#region src/configs/markdown.d.ts
18183
18313
  /** Options for configuring Markdown linting rules. */
18184
- type MarkdownConfigOptions = SharedOptions & {
18314
+ interface MarkdownConfigOptions {
18185
18315
  /**
18186
18316
  * Enable GitHub Flavored Markdown (GFM) support.
18187
18317
  * When true, applies additional linting rules specific to GFM extensions
18188
18318
  * like tables, task lists, and strikethrough.
18189
18319
  */
18190
18320
  gfm?: boolean;
18191
- };
18192
- //#endregion
18193
- //#region src/configs/node.d.ts
18194
- /** Options for configuring Node.js linting rules. */
18195
- type NodeConfigOptions = SharedOptions;
18321
+ }
18196
18322
  //#endregion
18197
18323
  //#region src/configs/perfectionist.d.ts
18198
- /** Options for configuring Perfectionist linting rules. */
18199
- type PerfectionistConfigOptions = SharedOptions & {
18324
+ /**
18325
+ * Options for configuring Perfectionist linting rules.
18326
+ * @see https://perfectionist.dev/guide/getting-started#settings
18327
+ * @see https://perfectionist.dev/configs/recommended-custom
18328
+ */
18329
+ interface PerfectionistConfigOptions {
18200
18330
  /**
18201
- * Global settings for the Perfectionist plugin, applied to all rules
18202
- * unless overridden by rule-specific options.
18203
- * @see https://perfectionist.dev/guide/getting-started#settings
18204
- * @see https://perfectionist.dev/configs/recommended-custom
18331
+ * The type of sorting algorithm.
18332
+ * @default 'natural'
18205
18333
  */
18206
- settings?: {
18207
- /**
18208
- * The type of sorting algorithm.
18209
- * @default 'natural'
18210
- */
18211
- type?: 'alphabetical' | 'custom' | 'line-length' | 'natural';
18212
- /**
18213
- * The order of sorting.
18214
- * @default 'asc'
18215
- */
18334
+ type?: 'alphabetical' | 'custom' | 'line-length' | 'natural';
18335
+ /**
18336
+ * The order of sorting.
18337
+ * @default 'asc'
18338
+ */
18339
+ order?: 'asc' | 'desc';
18340
+ /**
18341
+ * The fallback sorting type and order used when two elements are equal
18342
+ * under the primary comparison.
18343
+ */
18344
+ fallbackSort?: {
18216
18345
  order?: 'asc' | 'desc';
18217
- /**
18218
- * The fallback sorting type and order used when two elements are equal
18219
- * under the primary comparison.
18220
- */
18221
- fallbackSort?: {
18222
- order?: 'asc' | 'desc';
18223
- type: 'alphabetical' | 'custom' | 'line-length' | 'natural';
18224
- };
18225
- /**
18226
- * Custom alphabet string for the `'custom'` sort type.
18227
- * Defines the exact character order to use.
18228
- */
18229
- alphabet?: string;
18230
- /**
18231
- * Ignore case when sorting.
18232
- * @default true
18233
- */
18234
- ignoreCase?: boolean;
18235
- /**
18236
- * Control whether special characters should be kept, trimmed or removed
18237
- * before sorting.
18238
- * @default 'keep'
18239
- */
18240
- specialCharacters?: 'keep' | 'remove' | 'trim';
18241
- /**
18242
- * Locale(s) used for locale-aware string comparison.
18243
- * A BCP 47 language tag or an array of such tags.
18244
- * @default 'en-US'
18245
- * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare#locales
18246
- */
18247
- locales?: Array<string> | string;
18248
- /**
18249
- * Partition sorted elements by comments.
18250
- * Can be `true`, `false`, a regexp pattern string, or an array of patterns.
18251
- * @default true
18252
- */
18253
- partitionByComment?: Array<string> | boolean | string;
18254
- /**
18255
- * Partition sorted elements by newlines.
18256
- * @default true
18257
- */
18258
- partitionByNewLine?: boolean;
18259
- /**
18260
- * Specifies how to handle newlines between groups.
18261
- * `'ignore'` preserves existing newlines; a number enforces that many blank lines.
18262
- * @default 'ignore'
18263
- */
18264
- newlinesBetween?: 'ignore' | number;
18265
- /**
18266
- * Specifies how to handle newlines between elements of each group.
18267
- * `'ignore'` preserves existing newlines; a number enforces that many blank lines.
18268
- * @default 'ignore'
18269
- */
18270
- newlinesInside?: 'ignore' | 'newlinesBetween' | number;
18346
+ type: 'alphabetical' | 'custom' | 'line-length' | 'natural';
18271
18347
  };
18272
- };
18348
+ /**
18349
+ * Custom alphabet string for the `'custom'` sort type.
18350
+ * Defines the exact character order to use.
18351
+ */
18352
+ alphabet?: string;
18353
+ /**
18354
+ * Ignore case when sorting.
18355
+ * @default true
18356
+ */
18357
+ ignoreCase?: boolean;
18358
+ /**
18359
+ * Control whether special characters should be kept, trimmed or removed
18360
+ * before sorting.
18361
+ * @default 'keep'
18362
+ */
18363
+ specialCharacters?: 'keep' | 'remove' | 'trim';
18364
+ /**
18365
+ * Locale(s) used for locale-aware string comparison.
18366
+ * A BCP 47 language tag or an array of such tags.
18367
+ * @default 'en-US'
18368
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare#locales
18369
+ */
18370
+ locales?: Array<string> | string;
18371
+ /**
18372
+ * Partition sorted elements by comments.
18373
+ * Can be `true`, `false`, a regexp pattern string, or an array of patterns.
18374
+ * @default true
18375
+ */
18376
+ partitionByComment?: Array<string> | boolean | string;
18377
+ /**
18378
+ * Partition sorted elements by newlines.
18379
+ * @default true
18380
+ */
18381
+ partitionByNewLine?: boolean;
18382
+ /**
18383
+ * Specifies how to handle newlines between groups.
18384
+ * `'ignore'` preserves existing newlines; a number enforces that many blank lines.
18385
+ * @default 'ignore'
18386
+ */
18387
+ newlinesBetween?: 'ignore' | number;
18388
+ /**
18389
+ * Specifies how to handle newlines between elements of each group.
18390
+ * `'ignore'` preserves existing newlines; a number enforces that many blank lines.
18391
+ * @default 'ignore'
18392
+ */
18393
+ newlinesInside?: 'ignore' | 'newlinesBetween' | number;
18394
+ }
18273
18395
  //#endregion
18274
18396
  //#region src/configs/stylistic.d.ts
18275
18397
  /** Options for configuring Stylistic formatting rules. */
18276
- type StylisticConfigOptions = SharedOptions & {
18277
- settings?: Omit<StylisticCustomizeOptions, 'pluginName'>;
18278
- };
18398
+ type StylisticConfigOptions = Omit<StylisticCustomizeOptions, 'pluginName'>;
18279
18399
  //#endregion
18280
18400
  //#region src/configs/tailwind.d.ts
18281
- /** Options for configuring Tailwind CSS linting rules. */
18282
- type TailwindConfigOptions = SharedOptions & {
18401
+ /**
18402
+ * Options for configuring Tailwind CSS linting rules.
18403
+ * @see https://github.com/schoero/eslint-plugin-better-tailwindcss/blob/main/docs/settings/settings.md
18404
+ */
18405
+ interface TailwindConfigOptions {
18283
18406
  /**
18284
- * Custom settings for the `eslint-plugin-better-tailwindcss` plugin.
18285
- * Configure project paths, detection features, and rule specifics.
18286
- * @see https://github.com/schoero/eslint-plugin-better-tailwindcss/blob/main/docs/settings/settings.md
18407
+ * Working directory used to resolve Tailwind config files.
18408
+ * Useful for monorepos where linting runs from the root but each project has its own setup.
18409
+ * Relative to the ESLint process's cwd; defaults to that cwd if not specified.
18287
18410
  */
18288
- settings?: {
18289
- /**
18290
- * Working directory used to resolve Tailwind config files.
18291
- * Useful for monorepos where linting runs from the root but each project has its own setup.
18292
- * Relative to the ESLint process's cwd; defaults to that cwd if not specified.
18293
- */
18294
- cwd?: string;
18295
- /**
18296
- * Whether to detect custom component classes (like `card`, `btn`) defined in Tailwind CSS v4,
18297
- * so they are not reported as unknown classes.
18298
- * @default true
18299
- */
18300
- detectComponentClasses?: boolean;
18301
- /**
18302
- * Path to the CSS entry file (e.g. `src/global.css`), relative to the current working directory.
18303
- * Falls back to the default configuration when omitted.
18304
- */
18305
- entryPoint?: string;
18306
- /**
18307
- * How linting messages are displayed:
18308
- * - `"visual"` visualizes whitespace/line breaks (default outside CI)
18309
- * - `"compact"` – single-line messages, suitable for CI
18310
- * - `"raw"` raw information without visualization
18311
- *
18312
- * Defaults to `"visual"`, or `"compact"` in CI environments.
18313
- */
18314
- messageStyle?: 'compact' | 'raw' | 'visual';
18315
- /**
18316
- * Font size of the `<html>` element in pixels (default 16px).
18317
- * Used to determine if arbitrary values can be replaced with predefined sizing scales.
18318
- */
18319
- rootFontSize?: number;
18320
- /**
18321
- * Flat list of AST selectors that determine which string literals are linted as Tailwind classes.
18322
- * Only matches are treated as class candidates.
18323
- */
18324
- selectors?: Selectors;
18325
- };
18326
- };
18327
- //#endregion
18328
- //#region src/configs/test.d.ts
18329
- /** Options for configuring test (Vitest) linting rules. */
18330
- type TestConfigOptions = SharedOptions;
18331
- //#endregion
18332
- //#region src/configs/typescript.d.ts
18333
- /** Options for configuring TypeScript linting rules. */
18334
- type TypescriptConfigOptions = SharedOptions;
18335
- //#endregion
18336
- //#region src/configs/unicorn.d.ts
18337
- /** Options for configuring Unicorn linting rules. */
18338
- type UnicornConfigOptions = SharedOptions;
18339
- //#endregion
18340
- //#region src/configs/unused-imports.d.ts
18341
- /** Options for configuring unused imports linting rules. */
18342
- type UnusedImportsConfigOptions = SharedOptions;
18411
+ cwd?: string;
18412
+ /**
18413
+ * Whether to detect custom component classes (like `card`, `btn`) defined in Tailwind CSS v4,
18414
+ * so they are not reported as unknown classes.
18415
+ * @default true
18416
+ */
18417
+ detectComponentClasses?: boolean;
18418
+ /**
18419
+ * Path to the CSS entry file (e.g. `src/global.css`), relative to the current working directory.
18420
+ * Falls back to the default configuration when omitted.
18421
+ */
18422
+ entryPoint?: string;
18423
+ /**
18424
+ * How linting messages are displayed:
18425
+ * - `"visual"` visualizes whitespace/line breaks (default outside CI)
18426
+ * - `"compact"` single-line messages, suitable for CI
18427
+ * - `"raw"` – raw information without visualization
18428
+ *
18429
+ * Defaults to `"visual"`, or `"compact"` in CI environments.
18430
+ */
18431
+ messageStyle?: 'compact' | 'raw' | 'visual';
18432
+ /**
18433
+ * Font size of the `<html>` element in pixels (default 16px).
18434
+ * Used to determine if arbitrary values can be replaced with predefined sizing scales.
18435
+ */
18436
+ rootFontSize?: number;
18437
+ /**
18438
+ * Flat list of AST selectors that determine which string literals are linted as Tailwind classes.
18439
+ * Only matches are treated as class candidates.
18440
+ */
18441
+ selectors?: Selectors;
18442
+ }
18343
18443
  //#endregion
18344
18444
  //#region src/configs/vue.d.ts
18345
18445
  /** Options for configuring Vue single-file component linting rules. */
18346
- type VueConfigOptions = SharedOptions & {
18446
+ interface VueConfigOptions {
18347
18447
  /**
18348
18448
  * Configuration for extracting and linting custom Single-File Component (SFC) blocks
18349
18449
  * such as `<style>`, `<route>`, or `<i18n>`.
18350
18450
  * Pass `false` to disable block processing, or an options object to customize block matching.
18351
18451
  */
18352
18452
  sfcBlocks?: boolean | Options;
18353
- };
18354
- //#endregion
18355
- //#region src/configs/yaml.d.ts
18356
- /** Options for configuring YAML linting rules. */
18357
- type YAMLConfigOptions = SharedOptions;
18453
+ }
18358
18454
  //#endregion
18359
18455
  //#region src/factory.d.ts
18360
18456
  /**
@@ -18369,17 +18465,17 @@ interface ConfigOptions {
18369
18465
  /** Glob patterns to exclude from linting. */
18370
18466
  ignores?: IgnoresPatterns;
18371
18467
  /** Imports sorting and quality rules (via `eslint-plugin-import-lite`). */
18372
- imports?: boolean | ImportsConfigOptions;
18468
+ imports?: boolean;
18373
18469
  /** Core JavaScript language rules (via `@eslint/js`). */
18374
- javascript?: boolean | JavascriptConfigOptions;
18470
+ javascript?: boolean;
18375
18471
  /** JSDoc comments formatting and validation (via `eslint-plugin-jsdoc`). */
18376
- jsdoc?: boolean | JSDocConfigOptions;
18472
+ jsdoc?: boolean;
18377
18473
  /** JSON, JSON5, and JSONC files linting and sorting (via `eslint-plugin-jsonc`). */
18378
- jsonc?: boolean | JSONCConfigOptions;
18474
+ jsonc?: boolean;
18379
18475
  /** Markdown files and embedded code blocks linting (via `@eslint/markdown`). */
18380
18476
  markdown?: boolean | MarkdownConfigOptions;
18381
18477
  /** Node.js specific linting rules (via `eslint-plugin-n`). */
18382
- node?: boolean | NodeConfigOptions;
18478
+ node?: boolean;
18383
18479
  /** Perfectionist rules for sorting objects, imports, classes, etc (via `eslint-plugin-perfectionist`). */
18384
18480
  perfectionist?: boolean | PerfectionistConfigOptions;
18385
18481
  /** PNPM workspaces rules (via `eslint-plugin-pnpm`). */
@@ -18389,17 +18485,17 @@ interface ConfigOptions {
18389
18485
  /** Tailwind CSS class sorting and best practices (via `eslint-plugin-better-tailwindcss`). */
18390
18486
  tailwind?: boolean | TailwindConfigOptions;
18391
18487
  /** Test and Vitest specific linting rules (via `@vitest/eslint-plugin`). */
18392
- test?: boolean | TestConfigOptions;
18488
+ test?: boolean;
18393
18489
  /** TypeScript language linting (via `typescript-eslint`). */
18394
- typescript?: boolean | TypescriptConfigOptions;
18490
+ typescript?: boolean;
18395
18491
  /** Unicorn rules for various code quality improvements (via `eslint-plugin-unicorn`). */
18396
- unicorn?: boolean | UnicornConfigOptions;
18492
+ unicorn?: boolean;
18397
18493
  /** Unused imports and variables detection and cleanup (via `eslint-plugin-unused-imports`). */
18398
- unusedImports?: boolean | UnusedImportsConfigOptions;
18399
- /** Vue single-file components linting (via `eslint-plugin-vue`). */
18494
+ unusedImports?: boolean;
18495
+ /** Vue single-file components accessibility and linting (via `eslint-plugin-vue` and `eslint-plugin-vuejs-accessibility`). */
18400
18496
  vue?: boolean | VueConfigOptions;
18401
18497
  /** YAML files linting and sorting (via `eslint-plugin-yml`). */
18402
- yaml?: boolean | YAMLConfigOptions;
18498
+ yaml?: boolean;
18403
18499
  }
18404
18500
  /**
18405
18501
  * Factory to create a flat ESLint config.
@@ -18421,7 +18517,7 @@ declare const mdGlob = "**/*.md";
18421
18517
  /** Glob pattern for matching virtual files extracted from Markdown */
18422
18518
  declare const mdInMdGlob = "**/*.md/*.md";
18423
18519
  /** Glob pattern for matching code blocks embedded in Markdown files */
18424
- declare const codeInMdGlob = "**/*.md/*.{js,cjs,mjs,ts,cts,mts,vue}";
18520
+ declare const codeInMdGlob = "**/*.md/**/*.{js,cjs,mjs,ts,cts,mts,vue}";
18425
18521
  /** Glob pattern for matching scripts files */
18426
18522
  declare const scriptsGlob = "**/*.{js,cjs,mjs,ts,cts,mts}";
18427
18523
  /** Glob pattern for matching test files */
@@ -18468,5 +18564,14 @@ declare function extractRules(...configArrays: Array<Array<{
18468
18564
  declare function importModule<TModule>(module: Awaitable<TModule>): Promise<TModule extends {
18469
18565
  default: infer TModuleDefault;
18470
18566
  } ? TModuleDefault : TModule>;
18567
+ /**
18568
+ * Creates a new object that omits the specified keys from the target object.
18569
+ * @template TTarget The type of the target object.
18570
+ * @template TTargetKeys The type of the keys to omit from the target object.
18571
+ * @param target The target object from which to omit the specified keys.
18572
+ * @param keys An array of keys to omit from the target object.
18573
+ * @returns A new object that contains all properties of the target object except for the specified keys.
18574
+ */
18575
+ declare function omit<TTarget extends object, TTargetKeys extends keyof TTarget>(target: TTarget, keys: Array<TTargetKeys>): Omit<TTarget, TTargetKeys>;
18471
18576
  //#endregion
18472
- export { type ConfigNames, type ConfigOptions, type TypedFlatConfigItem, codeInMdGlob, extractRules, factory, ignoresGlob, importModule, jsGlob, json5Glob, jsonGlob, jsoncGlob, mdGlob, mdInMdGlob, packageJsonGlob, pnpmWorkspaceGlob, scriptsGlob, testGlob, tsConfigGlob, tsGlob, vueGlob, yamlGlob };
18577
+ export { type ConfigNames, type ConfigOptions, type TypedFlatConfigItem, codeInMdGlob, extractRules, factory, ignoresGlob, importModule, jsGlob, json5Glob, jsonGlob, jsoncGlob, mdGlob, mdInMdGlob, omit, packageJsonGlob, pnpmWorkspaceGlob, scriptsGlob, testGlob, tsConfigGlob, tsGlob, vueGlob, yamlGlob };