@bfra.me/eslint-config 0.45.1 → 0.46.0
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/lib/index.d.ts +446 -1
- package/lib/index.js +11 -4
- package/package.json +2 -2
- package/src/configs/ignores.ts +35 -2
- package/src/define-config.ts +2 -1
- package/src/options.ts +10 -0
- package/src/rules.d.ts +413 -0
package/lib/index.d.ts
CHANGED
|
@@ -2731,6 +2731,204 @@ interface Rules {
|
|
|
2731
2731
|
* @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/vue-custom-block/no-parsing-error.html
|
|
2732
2732
|
*/
|
|
2733
2733
|
'jsonc/vue-custom-block/no-parsing-error'?: Linter.RuleEntry<[]>
|
|
2734
|
+
/**
|
|
2735
|
+
* Enforce emojis are wrapped in `<span>` and provide screen reader access.
|
|
2736
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/accessible-emoji.md
|
|
2737
|
+
* @deprecated
|
|
2738
|
+
*/
|
|
2739
|
+
'jsx-a11y/accessible-emoji'?: Linter.RuleEntry<JsxA11YAccessibleEmoji>
|
|
2740
|
+
/**
|
|
2741
|
+
* Enforce all elements that require alternative text have meaningful information to relay back to end user.
|
|
2742
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/alt-text.md
|
|
2743
|
+
*/
|
|
2744
|
+
'jsx-a11y/alt-text'?: Linter.RuleEntry<JsxA11YAltText>
|
|
2745
|
+
/**
|
|
2746
|
+
* Enforce `<a>` text to not exactly match "click here", "here", "link", or "a link".
|
|
2747
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-ambiguous-text.md
|
|
2748
|
+
*/
|
|
2749
|
+
'jsx-a11y/anchor-ambiguous-text'?: Linter.RuleEntry<JsxA11YAnchorAmbiguousText>
|
|
2750
|
+
/**
|
|
2751
|
+
* Enforce all anchors to contain accessible content.
|
|
2752
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-has-content.md
|
|
2753
|
+
*/
|
|
2754
|
+
'jsx-a11y/anchor-has-content'?: Linter.RuleEntry<JsxA11YAnchorHasContent>
|
|
2755
|
+
/**
|
|
2756
|
+
* Enforce all anchors are valid, navigable elements.
|
|
2757
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-is-valid.md
|
|
2758
|
+
*/
|
|
2759
|
+
'jsx-a11y/anchor-is-valid'?: Linter.RuleEntry<JsxA11YAnchorIsValid>
|
|
2760
|
+
/**
|
|
2761
|
+
* Enforce elements with aria-activedescendant are tabbable.
|
|
2762
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-activedescendant-has-tabindex.md
|
|
2763
|
+
*/
|
|
2764
|
+
'jsx-a11y/aria-activedescendant-has-tabindex'?: Linter.RuleEntry<JsxA11YAriaActivedescendantHasTabindex>
|
|
2765
|
+
/**
|
|
2766
|
+
* Enforce all `aria-*` props are valid.
|
|
2767
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-props.md
|
|
2768
|
+
*/
|
|
2769
|
+
'jsx-a11y/aria-props'?: Linter.RuleEntry<JsxA11YAriaProps>
|
|
2770
|
+
/**
|
|
2771
|
+
* Enforce ARIA state and property values are valid.
|
|
2772
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-proptypes.md
|
|
2773
|
+
*/
|
|
2774
|
+
'jsx-a11y/aria-proptypes'?: Linter.RuleEntry<JsxA11YAriaProptypes>
|
|
2775
|
+
/**
|
|
2776
|
+
* Enforce that elements with ARIA roles must use a valid, non-abstract ARIA role.
|
|
2777
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-role.md
|
|
2778
|
+
*/
|
|
2779
|
+
'jsx-a11y/aria-role'?: Linter.RuleEntry<JsxA11YAriaRole>
|
|
2780
|
+
/**
|
|
2781
|
+
* Enforce that elements that do not support ARIA roles, states, and properties do not have those attributes.
|
|
2782
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-unsupported-elements.md
|
|
2783
|
+
*/
|
|
2784
|
+
'jsx-a11y/aria-unsupported-elements'?: Linter.RuleEntry<JsxA11YAriaUnsupportedElements>
|
|
2785
|
+
/**
|
|
2786
|
+
* Enforce that autocomplete attributes are used correctly.
|
|
2787
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/autocomplete-valid.md
|
|
2788
|
+
*/
|
|
2789
|
+
'jsx-a11y/autocomplete-valid'?: Linter.RuleEntry<JsxA11YAutocompleteValid>
|
|
2790
|
+
/**
|
|
2791
|
+
* Enforce a clickable non-interactive element has at least one keyboard event listener.
|
|
2792
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/click-events-have-key-events.md
|
|
2793
|
+
*/
|
|
2794
|
+
'jsx-a11y/click-events-have-key-events'?: Linter.RuleEntry<JsxA11YClickEventsHaveKeyEvents>
|
|
2795
|
+
/**
|
|
2796
|
+
* Enforce that a control (an interactive element) has a text label.
|
|
2797
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/control-has-associated-label.md
|
|
2798
|
+
*/
|
|
2799
|
+
'jsx-a11y/control-has-associated-label'?: Linter.RuleEntry<JsxA11YControlHasAssociatedLabel>
|
|
2800
|
+
/**
|
|
2801
|
+
* Enforce heading (`h1`, `h2`, etc) elements contain accessible content.
|
|
2802
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/heading-has-content.md
|
|
2803
|
+
*/
|
|
2804
|
+
'jsx-a11y/heading-has-content'?: Linter.RuleEntry<JsxA11YHeadingHasContent>
|
|
2805
|
+
/**
|
|
2806
|
+
* Enforce `<html>` element has `lang` prop.
|
|
2807
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/html-has-lang.md
|
|
2808
|
+
*/
|
|
2809
|
+
'jsx-a11y/html-has-lang'?: Linter.RuleEntry<JsxA11YHtmlHasLang>
|
|
2810
|
+
/**
|
|
2811
|
+
* Enforce iframe elements have a title attribute.
|
|
2812
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/iframe-has-title.md
|
|
2813
|
+
*/
|
|
2814
|
+
'jsx-a11y/iframe-has-title'?: Linter.RuleEntry<JsxA11YIframeHasTitle>
|
|
2815
|
+
/**
|
|
2816
|
+
* Enforce `<img>` alt prop does not contain the word "image", "picture", or "photo".
|
|
2817
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/img-redundant-alt.md
|
|
2818
|
+
*/
|
|
2819
|
+
'jsx-a11y/img-redundant-alt'?: Linter.RuleEntry<JsxA11YImgRedundantAlt>
|
|
2820
|
+
/**
|
|
2821
|
+
* Enforce that elements with interactive handlers like `onClick` must be focusable.
|
|
2822
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/interactive-supports-focus.md
|
|
2823
|
+
*/
|
|
2824
|
+
'jsx-a11y/interactive-supports-focus'?: Linter.RuleEntry<JsxA11YInteractiveSupportsFocus>
|
|
2825
|
+
/**
|
|
2826
|
+
* Enforce that a `label` tag has a text label and an associated control.
|
|
2827
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/label-has-associated-control.md
|
|
2828
|
+
*/
|
|
2829
|
+
'jsx-a11y/label-has-associated-control'?: Linter.RuleEntry<JsxA11YLabelHasAssociatedControl>
|
|
2830
|
+
/**
|
|
2831
|
+
* Enforce that `<label>` elements have the `htmlFor` prop.
|
|
2832
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/label-has-for.md
|
|
2833
|
+
* @deprecated
|
|
2834
|
+
*/
|
|
2835
|
+
'jsx-a11y/label-has-for'?: Linter.RuleEntry<JsxA11YLabelHasFor>
|
|
2836
|
+
/**
|
|
2837
|
+
* Enforce lang attribute has a valid value.
|
|
2838
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/lang.md
|
|
2839
|
+
*/
|
|
2840
|
+
'jsx-a11y/lang'?: Linter.RuleEntry<JsxA11YLang>
|
|
2841
|
+
/**
|
|
2842
|
+
* Enforces that `<audio>` and `<video>` elements must have a `<track>` for captions.
|
|
2843
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/media-has-caption.md
|
|
2844
|
+
*/
|
|
2845
|
+
'jsx-a11y/media-has-caption'?: Linter.RuleEntry<JsxA11YMediaHasCaption>
|
|
2846
|
+
/**
|
|
2847
|
+
* Enforce that `onMouseOver`/`onMouseOut` are accompanied by `onFocus`/`onBlur` for keyboard-only users.
|
|
2848
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/mouse-events-have-key-events.md
|
|
2849
|
+
*/
|
|
2850
|
+
'jsx-a11y/mouse-events-have-key-events'?: Linter.RuleEntry<JsxA11YMouseEventsHaveKeyEvents>
|
|
2851
|
+
/**
|
|
2852
|
+
* Enforce that the `accessKey` prop is not used on any element to avoid complications with keyboard commands used by a screen reader.
|
|
2853
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-access-key.md
|
|
2854
|
+
*/
|
|
2855
|
+
'jsx-a11y/no-access-key'?: Linter.RuleEntry<JsxA11YNoAccessKey>
|
|
2856
|
+
/**
|
|
2857
|
+
* Disallow `aria-hidden="true"` from being set on focusable elements.
|
|
2858
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-aria-hidden-on-focusable.md
|
|
2859
|
+
*/
|
|
2860
|
+
'jsx-a11y/no-aria-hidden-on-focusable'?: Linter.RuleEntry<JsxA11YNoAriaHiddenOnFocusable>
|
|
2861
|
+
/**
|
|
2862
|
+
* Enforce autoFocus prop is not used.
|
|
2863
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-autofocus.md
|
|
2864
|
+
*/
|
|
2865
|
+
'jsx-a11y/no-autofocus'?: Linter.RuleEntry<JsxA11YNoAutofocus>
|
|
2866
|
+
/**
|
|
2867
|
+
* Enforce distracting elements are not used.
|
|
2868
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-distracting-elements.md
|
|
2869
|
+
*/
|
|
2870
|
+
'jsx-a11y/no-distracting-elements'?: Linter.RuleEntry<JsxA11YNoDistractingElements>
|
|
2871
|
+
/**
|
|
2872
|
+
* Interactive elements should not be assigned non-interactive roles.
|
|
2873
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-interactive-element-to-noninteractive-role.md
|
|
2874
|
+
*/
|
|
2875
|
+
'jsx-a11y/no-interactive-element-to-noninteractive-role'?: Linter.RuleEntry<JsxA11YNoInteractiveElementToNoninteractiveRole>
|
|
2876
|
+
/**
|
|
2877
|
+
* Non-interactive elements should not be assigned mouse or keyboard event listeners.
|
|
2878
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-element-interactions.md
|
|
2879
|
+
*/
|
|
2880
|
+
'jsx-a11y/no-noninteractive-element-interactions'?: Linter.RuleEntry<JsxA11YNoNoninteractiveElementInteractions>
|
|
2881
|
+
/**
|
|
2882
|
+
* Non-interactive elements should not be assigned interactive roles.
|
|
2883
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-element-to-interactive-role.md
|
|
2884
|
+
*/
|
|
2885
|
+
'jsx-a11y/no-noninteractive-element-to-interactive-role'?: Linter.RuleEntry<JsxA11YNoNoninteractiveElementToInteractiveRole>
|
|
2886
|
+
/**
|
|
2887
|
+
* `tabIndex` should only be declared on interactive elements.
|
|
2888
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-tabindex.md
|
|
2889
|
+
*/
|
|
2890
|
+
'jsx-a11y/no-noninteractive-tabindex'?: Linter.RuleEntry<JsxA11YNoNoninteractiveTabindex>
|
|
2891
|
+
/**
|
|
2892
|
+
* Enforce usage of `onBlur` over `onChange` on select menus for accessibility.
|
|
2893
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-onchange.md
|
|
2894
|
+
* @deprecated
|
|
2895
|
+
*/
|
|
2896
|
+
'jsx-a11y/no-onchange'?: Linter.RuleEntry<JsxA11YNoOnchange>
|
|
2897
|
+
/**
|
|
2898
|
+
* Enforce explicit role property is not the same as implicit/default role property on element.
|
|
2899
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-redundant-roles.md
|
|
2900
|
+
*/
|
|
2901
|
+
'jsx-a11y/no-redundant-roles'?: Linter.RuleEntry<JsxA11YNoRedundantRoles>
|
|
2902
|
+
/**
|
|
2903
|
+
* Enforce that non-interactive, visible elements (such as `<div>`) that have click handlers use the role attribute.
|
|
2904
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-static-element-interactions.md
|
|
2905
|
+
*/
|
|
2906
|
+
'jsx-a11y/no-static-element-interactions'?: Linter.RuleEntry<JsxA11YNoStaticElementInteractions>
|
|
2907
|
+
/**
|
|
2908
|
+
* Enforces using semantic DOM elements over the ARIA `role` property.
|
|
2909
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/prefer-tag-over-role.md
|
|
2910
|
+
*/
|
|
2911
|
+
'jsx-a11y/prefer-tag-over-role'?: Linter.RuleEntry<JsxA11YPreferTagOverRole>
|
|
2912
|
+
/**
|
|
2913
|
+
* Enforce that elements with ARIA roles must have all required attributes for that role.
|
|
2914
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/role-has-required-aria-props.md
|
|
2915
|
+
*/
|
|
2916
|
+
'jsx-a11y/role-has-required-aria-props'?: Linter.RuleEntry<JsxA11YRoleHasRequiredAriaProps>
|
|
2917
|
+
/**
|
|
2918
|
+
* Enforce that elements with explicit or implicit roles defined contain only `aria-*` properties supported by that `role`.
|
|
2919
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/role-supports-aria-props.md
|
|
2920
|
+
*/
|
|
2921
|
+
'jsx-a11y/role-supports-aria-props'?: Linter.RuleEntry<JsxA11YRoleSupportsAriaProps>
|
|
2922
|
+
/**
|
|
2923
|
+
* Enforce `scope` prop is only used on `<th>` elements.
|
|
2924
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/scope.md
|
|
2925
|
+
*/
|
|
2926
|
+
'jsx-a11y/scope'?: Linter.RuleEntry<JsxA11YScope>
|
|
2927
|
+
/**
|
|
2928
|
+
* Enforce `tabIndex` value is not greater than zero.
|
|
2929
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/tabindex-no-positive.md
|
|
2930
|
+
*/
|
|
2931
|
+
'jsx-a11y/tabindex-no-positive'?: Linter.RuleEntry<JsxA11YTabindexNoPositive>
|
|
2734
2932
|
/**
|
|
2735
2933
|
* Enforce the consistent use of either double or single quotes in JSX attributes
|
|
2736
2934
|
* @see https://eslint.org/docs/latest/rules/jsx-quotes
|
|
@@ -11143,6 +11341,221 @@ type JsoncSpaceUnaryOps = []|[{
|
|
|
11143
11341
|
[k: string]: boolean | undefined
|
|
11144
11342
|
}
|
|
11145
11343
|
}]
|
|
11344
|
+
// ----- jsx-a11y/accessible-emoji -----
|
|
11345
|
+
type JsxA11YAccessibleEmoji = []|[{
|
|
11346
|
+
[k: string]: unknown | undefined
|
|
11347
|
+
}]
|
|
11348
|
+
// ----- jsx-a11y/alt-text -----
|
|
11349
|
+
type JsxA11YAltText = []|[{
|
|
11350
|
+
elements?: string[]
|
|
11351
|
+
img?: string[]
|
|
11352
|
+
object?: string[]
|
|
11353
|
+
area?: string[]
|
|
11354
|
+
"input[type=\"image\"]"?: string[]
|
|
11355
|
+
[k: string]: unknown | undefined
|
|
11356
|
+
}]
|
|
11357
|
+
// ----- jsx-a11y/anchor-ambiguous-text -----
|
|
11358
|
+
type JsxA11YAnchorAmbiguousText = []|[{
|
|
11359
|
+
words?: string[]
|
|
11360
|
+
[k: string]: unknown | undefined
|
|
11361
|
+
}]
|
|
11362
|
+
// ----- jsx-a11y/anchor-has-content -----
|
|
11363
|
+
type JsxA11YAnchorHasContent = []|[{
|
|
11364
|
+
components?: string[]
|
|
11365
|
+
[k: string]: unknown | undefined
|
|
11366
|
+
}]
|
|
11367
|
+
// ----- jsx-a11y/anchor-is-valid -----
|
|
11368
|
+
type JsxA11YAnchorIsValid = []|[{
|
|
11369
|
+
components?: string[]
|
|
11370
|
+
specialLink?: string[]
|
|
11371
|
+
|
|
11372
|
+
aspects?: [("noHref" | "invalidHref" | "preferButton"), ...(("noHref" | "invalidHref" | "preferButton"))[]]
|
|
11373
|
+
[k: string]: unknown | undefined
|
|
11374
|
+
}]
|
|
11375
|
+
// ----- jsx-a11y/aria-activedescendant-has-tabindex -----
|
|
11376
|
+
type JsxA11YAriaActivedescendantHasTabindex = []|[{
|
|
11377
|
+
[k: string]: unknown | undefined
|
|
11378
|
+
}]
|
|
11379
|
+
// ----- jsx-a11y/aria-props -----
|
|
11380
|
+
type JsxA11YAriaProps = []|[{
|
|
11381
|
+
[k: string]: unknown | undefined
|
|
11382
|
+
}]
|
|
11383
|
+
// ----- jsx-a11y/aria-proptypes -----
|
|
11384
|
+
type JsxA11YAriaProptypes = []|[{
|
|
11385
|
+
[k: string]: unknown | undefined
|
|
11386
|
+
}]
|
|
11387
|
+
// ----- jsx-a11y/aria-role -----
|
|
11388
|
+
type JsxA11YAriaRole = []|[{
|
|
11389
|
+
allowedInvalidRoles?: string[]
|
|
11390
|
+
ignoreNonDOM?: boolean
|
|
11391
|
+
[k: string]: unknown | undefined
|
|
11392
|
+
}]
|
|
11393
|
+
// ----- jsx-a11y/aria-unsupported-elements -----
|
|
11394
|
+
type JsxA11YAriaUnsupportedElements = []|[{
|
|
11395
|
+
[k: string]: unknown | undefined
|
|
11396
|
+
}]
|
|
11397
|
+
// ----- jsx-a11y/autocomplete-valid -----
|
|
11398
|
+
type JsxA11YAutocompleteValid = []|[{
|
|
11399
|
+
inputComponents?: string[]
|
|
11400
|
+
[k: string]: unknown | undefined
|
|
11401
|
+
}]
|
|
11402
|
+
// ----- jsx-a11y/click-events-have-key-events -----
|
|
11403
|
+
type JsxA11YClickEventsHaveKeyEvents = []|[{
|
|
11404
|
+
[k: string]: unknown | undefined
|
|
11405
|
+
}]
|
|
11406
|
+
// ----- jsx-a11y/control-has-associated-label -----
|
|
11407
|
+
type JsxA11YControlHasAssociatedLabel = []|[{
|
|
11408
|
+
labelAttributes?: string[]
|
|
11409
|
+
controlComponents?: string[]
|
|
11410
|
+
ignoreElements?: string[]
|
|
11411
|
+
ignoreRoles?: string[]
|
|
11412
|
+
|
|
11413
|
+
depth?: number
|
|
11414
|
+
[k: string]: unknown | undefined
|
|
11415
|
+
}]
|
|
11416
|
+
// ----- jsx-a11y/heading-has-content -----
|
|
11417
|
+
type JsxA11YHeadingHasContent = []|[{
|
|
11418
|
+
components?: string[]
|
|
11419
|
+
[k: string]: unknown | undefined
|
|
11420
|
+
}]
|
|
11421
|
+
// ----- jsx-a11y/html-has-lang -----
|
|
11422
|
+
type JsxA11YHtmlHasLang = []|[{
|
|
11423
|
+
[k: string]: unknown | undefined
|
|
11424
|
+
}]
|
|
11425
|
+
// ----- jsx-a11y/iframe-has-title -----
|
|
11426
|
+
type JsxA11YIframeHasTitle = []|[{
|
|
11427
|
+
[k: string]: unknown | undefined
|
|
11428
|
+
}]
|
|
11429
|
+
// ----- jsx-a11y/img-redundant-alt -----
|
|
11430
|
+
type JsxA11YImgRedundantAlt = []|[{
|
|
11431
|
+
components?: string[]
|
|
11432
|
+
words?: string[]
|
|
11433
|
+
[k: string]: unknown | undefined
|
|
11434
|
+
}]
|
|
11435
|
+
// ----- jsx-a11y/interactive-supports-focus -----
|
|
11436
|
+
type JsxA11YInteractiveSupportsFocus = []|[{
|
|
11437
|
+
|
|
11438
|
+
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")[]
|
|
11439
|
+
[k: string]: unknown | undefined
|
|
11440
|
+
}]
|
|
11441
|
+
// ----- jsx-a11y/label-has-associated-control -----
|
|
11442
|
+
type JsxA11YLabelHasAssociatedControl = []|[{
|
|
11443
|
+
labelComponents?: string[]
|
|
11444
|
+
labelAttributes?: string[]
|
|
11445
|
+
controlComponents?: string[]
|
|
11446
|
+
|
|
11447
|
+
assert?: ("htmlFor" | "nesting" | "both" | "either")
|
|
11448
|
+
|
|
11449
|
+
depth?: number
|
|
11450
|
+
[k: string]: unknown | undefined
|
|
11451
|
+
}]
|
|
11452
|
+
// ----- jsx-a11y/label-has-for -----
|
|
11453
|
+
type JsxA11YLabelHasFor = []|[{
|
|
11454
|
+
components?: string[]
|
|
11455
|
+
required?: (("nesting" | "id") | {
|
|
11456
|
+
|
|
11457
|
+
some: ("nesting" | "id")[]
|
|
11458
|
+
[k: string]: unknown | undefined
|
|
11459
|
+
} | {
|
|
11460
|
+
|
|
11461
|
+
every: ("nesting" | "id")[]
|
|
11462
|
+
[k: string]: unknown | undefined
|
|
11463
|
+
})
|
|
11464
|
+
allowChildren?: boolean
|
|
11465
|
+
[k: string]: unknown | undefined
|
|
11466
|
+
}]
|
|
11467
|
+
// ----- jsx-a11y/lang -----
|
|
11468
|
+
type JsxA11YLang = []|[{
|
|
11469
|
+
[k: string]: unknown | undefined
|
|
11470
|
+
}]
|
|
11471
|
+
// ----- jsx-a11y/media-has-caption -----
|
|
11472
|
+
type JsxA11YMediaHasCaption = []|[{
|
|
11473
|
+
audio?: string[]
|
|
11474
|
+
video?: string[]
|
|
11475
|
+
track?: string[]
|
|
11476
|
+
[k: string]: unknown | undefined
|
|
11477
|
+
}]
|
|
11478
|
+
// ----- jsx-a11y/mouse-events-have-key-events -----
|
|
11479
|
+
type JsxA11YMouseEventsHaveKeyEvents = []|[{
|
|
11480
|
+
|
|
11481
|
+
hoverInHandlers?: string[]
|
|
11482
|
+
|
|
11483
|
+
hoverOutHandlers?: string[]
|
|
11484
|
+
[k: string]: unknown | undefined
|
|
11485
|
+
}]
|
|
11486
|
+
// ----- jsx-a11y/no-access-key -----
|
|
11487
|
+
type JsxA11YNoAccessKey = []|[{
|
|
11488
|
+
[k: string]: unknown | undefined
|
|
11489
|
+
}]
|
|
11490
|
+
// ----- jsx-a11y/no-aria-hidden-on-focusable -----
|
|
11491
|
+
type JsxA11YNoAriaHiddenOnFocusable = []|[{
|
|
11492
|
+
[k: string]: unknown | undefined
|
|
11493
|
+
}]
|
|
11494
|
+
// ----- jsx-a11y/no-autofocus -----
|
|
11495
|
+
type JsxA11YNoAutofocus = []|[{
|
|
11496
|
+
ignoreNonDOM?: boolean
|
|
11497
|
+
[k: string]: unknown | undefined
|
|
11498
|
+
}]
|
|
11499
|
+
// ----- jsx-a11y/no-distracting-elements -----
|
|
11500
|
+
type JsxA11YNoDistractingElements = []|[{
|
|
11501
|
+
|
|
11502
|
+
elements?: ("marquee" | "blink")[]
|
|
11503
|
+
[k: string]: unknown | undefined
|
|
11504
|
+
}]
|
|
11505
|
+
// ----- jsx-a11y/no-interactive-element-to-noninteractive-role -----
|
|
11506
|
+
type JsxA11YNoInteractiveElementToNoninteractiveRole = []|[{
|
|
11507
|
+
[k: string]: string[] | undefined
|
|
11508
|
+
}]
|
|
11509
|
+
// ----- jsx-a11y/no-noninteractive-element-interactions -----
|
|
11510
|
+
type JsxA11YNoNoninteractiveElementInteractions = []|[{
|
|
11511
|
+
handlers?: string[]
|
|
11512
|
+
[k: string]: unknown | undefined
|
|
11513
|
+
}]
|
|
11514
|
+
// ----- jsx-a11y/no-noninteractive-element-to-interactive-role -----
|
|
11515
|
+
type JsxA11YNoNoninteractiveElementToInteractiveRole = []|[{
|
|
11516
|
+
[k: string]: string[] | undefined
|
|
11517
|
+
}]
|
|
11518
|
+
// ----- jsx-a11y/no-noninteractive-tabindex -----
|
|
11519
|
+
type JsxA11YNoNoninteractiveTabindex = []|[{
|
|
11520
|
+
|
|
11521
|
+
roles?: string[]
|
|
11522
|
+
|
|
11523
|
+
tags?: string[]
|
|
11524
|
+
[k: string]: unknown | undefined
|
|
11525
|
+
}]
|
|
11526
|
+
// ----- jsx-a11y/no-onchange -----
|
|
11527
|
+
type JsxA11YNoOnchange = []|[{
|
|
11528
|
+
[k: string]: unknown | undefined
|
|
11529
|
+
}]
|
|
11530
|
+
// ----- jsx-a11y/no-redundant-roles -----
|
|
11531
|
+
type JsxA11YNoRedundantRoles = []|[{
|
|
11532
|
+
[k: string]: string[] | undefined
|
|
11533
|
+
}]
|
|
11534
|
+
// ----- jsx-a11y/no-static-element-interactions -----
|
|
11535
|
+
type JsxA11YNoStaticElementInteractions = []|[{
|
|
11536
|
+
handlers?: string[]
|
|
11537
|
+
[k: string]: unknown | undefined
|
|
11538
|
+
}]
|
|
11539
|
+
// ----- jsx-a11y/prefer-tag-over-role -----
|
|
11540
|
+
type JsxA11YPreferTagOverRole = []|[{
|
|
11541
|
+
[k: string]: unknown | undefined
|
|
11542
|
+
}]
|
|
11543
|
+
// ----- jsx-a11y/role-has-required-aria-props -----
|
|
11544
|
+
type JsxA11YRoleHasRequiredAriaProps = []|[{
|
|
11545
|
+
[k: string]: unknown | undefined
|
|
11546
|
+
}]
|
|
11547
|
+
// ----- jsx-a11y/role-supports-aria-props -----
|
|
11548
|
+
type JsxA11YRoleSupportsAriaProps = []|[{
|
|
11549
|
+
[k: string]: unknown | undefined
|
|
11550
|
+
}]
|
|
11551
|
+
// ----- jsx-a11y/scope -----
|
|
11552
|
+
type JsxA11YScope = []|[{
|
|
11553
|
+
[k: string]: unknown | undefined
|
|
11554
|
+
}]
|
|
11555
|
+
// ----- jsx-a11y/tabindex-no-positive -----
|
|
11556
|
+
type JsxA11YTabindexNoPositive = []|[{
|
|
11557
|
+
[k: string]: unknown | undefined
|
|
11558
|
+
}]
|
|
11146
11559
|
// ----- jsx-quotes -----
|
|
11147
11560
|
type JsxQuotes = []|[("prefer-single" | "prefer-double")]
|
|
11148
11561
|
// ----- key-spacing -----
|
|
@@ -16789,7 +17202,30 @@ interface FallbackOptions {
|
|
|
16789
17202
|
}
|
|
16790
17203
|
declare function fallback(missingList?: string[], options?: FallbackOptions): Promise<Config[]>;
|
|
16791
17204
|
|
|
16792
|
-
|
|
17205
|
+
/**
|
|
17206
|
+
* Generates an ESLint configuration section that merges built-in glob exclusions
|
|
17207
|
+
* with user-provided ignore patterns.
|
|
17208
|
+
*
|
|
17209
|
+
* Accepts either:
|
|
17210
|
+
* - An array of glob patterns to append to the default exclusions.
|
|
17211
|
+
* - A function that receives the original exclusions and returns a transformed array.
|
|
17212
|
+
*
|
|
17213
|
+
* The result is a single configuration entry named `@bfra.me/ignores` containing the
|
|
17214
|
+
* computed ignore list.
|
|
17215
|
+
*
|
|
17216
|
+
* @param userIgnores - An array of glob patterns to add to the defaults, or a
|
|
17217
|
+
* function that maps the original exclusions to a new set. Defaults to an empty array.
|
|
17218
|
+
* @returns A promise resolving to an array with one `Config` object that includes the merged ignores.
|
|
17219
|
+
*
|
|
17220
|
+
* @example
|
|
17221
|
+
* // Append additional patterns
|
|
17222
|
+
* await ignores(['dist/**', 'coverage/**'])
|
|
17223
|
+
*
|
|
17224
|
+
* @example
|
|
17225
|
+
* // Transform the defaults
|
|
17226
|
+
* await ignores((originals) => originals.filter((p) => !p.includes('node_modules')))
|
|
17227
|
+
*/
|
|
17228
|
+
declare function ignores(userIgnores?: string[] | ((originals: string[]) => string[])): Promise<Config[]>;
|
|
16793
17229
|
declare function gitignore(gitignoreOptions?: FlatGitignoreOptions): Promise<Config[]>;
|
|
16794
17230
|
|
|
16795
17231
|
/**
|
|
@@ -17494,6 +17930,15 @@ type Options = Flatten<{
|
|
|
17494
17930
|
* @default true
|
|
17495
17931
|
*/
|
|
17496
17932
|
gitignore?: boolean | FlatGitignoreOptions;
|
|
17933
|
+
/**
|
|
17934
|
+
* Extend the global ignores.
|
|
17935
|
+
*
|
|
17936
|
+
* Passing an array to extends the ignores.
|
|
17937
|
+
* Passing a function to modify the default ignores.
|
|
17938
|
+
*
|
|
17939
|
+
* @default []
|
|
17940
|
+
*/
|
|
17941
|
+
ignores?: string[] | ((originals: string[]) => string[]);
|
|
17497
17942
|
/**
|
|
17498
17943
|
* Options to override the behavior of import-related rules.
|
|
17499
17944
|
*
|
package/lib/index.js
CHANGED
|
@@ -112,7 +112,7 @@ var GLOB_EXCLUDE = [
|
|
|
112
112
|
import { fileURLToPath } from "url";
|
|
113
113
|
|
|
114
114
|
// package.json
|
|
115
|
-
var version = "0.
|
|
115
|
+
var version = "0.46.0";
|
|
116
116
|
|
|
117
117
|
// src/parsers/any-parser.ts
|
|
118
118
|
var lineBreakPattern = /\r\n|[\n\r\u2028\u2029]/u;
|
|
@@ -350,11 +350,17 @@ function eslintComments() {
|
|
|
350
350
|
}
|
|
351
351
|
|
|
352
352
|
// src/configs/ignores.ts
|
|
353
|
-
async function ignores(
|
|
353
|
+
async function ignores(userIgnores = []) {
|
|
354
|
+
let ignores2 = [...GLOB_EXCLUDE];
|
|
355
|
+
if (typeof userIgnores === "function") {
|
|
356
|
+
ignores2 = userIgnores(ignores2);
|
|
357
|
+
} else {
|
|
358
|
+
ignores2.push(...userIgnores);
|
|
359
|
+
}
|
|
354
360
|
return [
|
|
355
361
|
{
|
|
356
362
|
name: "@bfra.me/ignores",
|
|
357
|
-
ignores:
|
|
363
|
+
ignores: ignores2
|
|
358
364
|
}
|
|
359
365
|
];
|
|
360
366
|
}
|
|
@@ -2222,6 +2228,7 @@ async function defineConfig(options = {}, ...userConfigs) {
|
|
|
2222
2228
|
const {
|
|
2223
2229
|
astro: enableAstro = false,
|
|
2224
2230
|
gitignore: enableGitignore = true,
|
|
2231
|
+
ignores: userIgnores = [],
|
|
2225
2232
|
imports: enableImports = true,
|
|
2226
2233
|
jsx: enableJsx = true,
|
|
2227
2234
|
nextjs: enableNextjs = false,
|
|
@@ -2252,7 +2259,7 @@ async function defineConfig(options = {}, ...userConfigs) {
|
|
|
2252
2259
|
configs.push(gitignore(enableGitignore === true ? { strict: false } : enableGitignore));
|
|
2253
2260
|
}
|
|
2254
2261
|
configs.push(
|
|
2255
|
-
ignores(
|
|
2262
|
+
ignores(userIgnores),
|
|
2256
2263
|
javascript({ isInEditor, overrides: getOverrides(options, "javascript") }),
|
|
2257
2264
|
eslintComments(),
|
|
2258
2265
|
node(),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bfra.me/eslint-config",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.46.0",
|
|
4
4
|
"description": "Shared ESLint configuration for bfra.me",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bfra.me",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"@eslint-react/eslint-plugin": "2.3.9",
|
|
67
67
|
"@eslint/config-inspector": "1.4.2",
|
|
68
68
|
"@eslint/core": "1.0.0",
|
|
69
|
-
"@next/eslint-plugin-next": "16.0.
|
|
69
|
+
"@next/eslint-plugin-next": "16.0.5",
|
|
70
70
|
"@types/eslint-config-prettier": "6.11.3",
|
|
71
71
|
"@types/eslint-plugin-jsx-a11y": "6.10.1",
|
|
72
72
|
"@typescript-eslint/types": "8.48.0",
|
package/src/configs/ignores.ts
CHANGED
|
@@ -3,11 +3,44 @@ import type {Config} from '../config'
|
|
|
3
3
|
import {GLOB_EXCLUDE} from '../globs'
|
|
4
4
|
import {interopDefault} from '../utils'
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Generates an ESLint configuration section that merges built-in glob exclusions
|
|
8
|
+
* with user-provided ignore patterns.
|
|
9
|
+
*
|
|
10
|
+
* Accepts either:
|
|
11
|
+
* - An array of glob patterns to append to the default exclusions.
|
|
12
|
+
* - A function that receives the original exclusions and returns a transformed array.
|
|
13
|
+
*
|
|
14
|
+
* The result is a single configuration entry named `@bfra.me/ignores` containing the
|
|
15
|
+
* computed ignore list.
|
|
16
|
+
*
|
|
17
|
+
* @param userIgnores - An array of glob patterns to add to the defaults, or a
|
|
18
|
+
* function that maps the original exclusions to a new set. Defaults to an empty array.
|
|
19
|
+
* @returns A promise resolving to an array with one `Config` object that includes the merged ignores.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* // Append additional patterns
|
|
23
|
+
* await ignores(['dist/**', 'coverage/**'])
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* // Transform the defaults
|
|
27
|
+
* await ignores((originals) => originals.filter((p) => !p.includes('node_modules')))
|
|
28
|
+
*/
|
|
29
|
+
export async function ignores(
|
|
30
|
+
userIgnores: string[] | ((originals: string[]) => string[]) = [],
|
|
31
|
+
): Promise<Config[]> {
|
|
32
|
+
let ignores = [...GLOB_EXCLUDE]
|
|
33
|
+
|
|
34
|
+
if (typeof userIgnores === 'function') {
|
|
35
|
+
ignores = userIgnores(ignores)
|
|
36
|
+
} else {
|
|
37
|
+
ignores.push(...userIgnores)
|
|
38
|
+
}
|
|
39
|
+
|
|
7
40
|
return [
|
|
8
41
|
{
|
|
9
42
|
name: '@bfra.me/ignores',
|
|
10
|
-
ignores
|
|
43
|
+
ignores,
|
|
11
44
|
},
|
|
12
45
|
]
|
|
13
46
|
}
|
package/src/define-config.ts
CHANGED
|
@@ -66,6 +66,7 @@ export async function defineConfig<C extends Config = Config, CN extends ConfigN
|
|
|
66
66
|
const {
|
|
67
67
|
astro: enableAstro = false,
|
|
68
68
|
gitignore: enableGitignore = true,
|
|
69
|
+
ignores: userIgnores = [],
|
|
69
70
|
imports: enableImports = true,
|
|
70
71
|
jsx: enableJsx = true,
|
|
71
72
|
nextjs: enableNextjs = false,
|
|
@@ -108,7 +109,7 @@ export async function defineConfig<C extends Config = Config, CN extends ConfigN
|
|
|
108
109
|
}
|
|
109
110
|
|
|
110
111
|
configs.push(
|
|
111
|
-
ignores(
|
|
112
|
+
ignores(userIgnores),
|
|
112
113
|
javascript({isInEditor, overrides: getOverrides(options, 'javascript')}),
|
|
113
114
|
eslintComments(),
|
|
114
115
|
node(),
|
package/src/options.ts
CHANGED
|
@@ -207,6 +207,16 @@ export type Options = Flatten<
|
|
|
207
207
|
*/
|
|
208
208
|
gitignore?: boolean | FlatGitignoreOptions
|
|
209
209
|
|
|
210
|
+
/**
|
|
211
|
+
* Extend the global ignores.
|
|
212
|
+
*
|
|
213
|
+
* Passing an array to extends the ignores.
|
|
214
|
+
* Passing a function to modify the default ignores.
|
|
215
|
+
*
|
|
216
|
+
* @default []
|
|
217
|
+
*/
|
|
218
|
+
ignores?: string[] | ((originals: string[]) => string[])
|
|
219
|
+
|
|
210
220
|
/**
|
|
211
221
|
* Options to override the behavior of import-related rules.
|
|
212
222
|
*
|
package/src/rules.d.ts
CHANGED
|
@@ -2722,6 +2722,204 @@ export interface Rules {
|
|
|
2722
2722
|
* @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/vue-custom-block/no-parsing-error.html
|
|
2723
2723
|
*/
|
|
2724
2724
|
'jsonc/vue-custom-block/no-parsing-error'?: Linter.RuleEntry<[]>
|
|
2725
|
+
/**
|
|
2726
|
+
* Enforce emojis are wrapped in `<span>` and provide screen reader access.
|
|
2727
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/accessible-emoji.md
|
|
2728
|
+
* @deprecated
|
|
2729
|
+
*/
|
|
2730
|
+
'jsx-a11y/accessible-emoji'?: Linter.RuleEntry<JsxA11YAccessibleEmoji>
|
|
2731
|
+
/**
|
|
2732
|
+
* Enforce all elements that require alternative text have meaningful information to relay back to end user.
|
|
2733
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/alt-text.md
|
|
2734
|
+
*/
|
|
2735
|
+
'jsx-a11y/alt-text'?: Linter.RuleEntry<JsxA11YAltText>
|
|
2736
|
+
/**
|
|
2737
|
+
* Enforce `<a>` text to not exactly match "click here", "here", "link", or "a link".
|
|
2738
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-ambiguous-text.md
|
|
2739
|
+
*/
|
|
2740
|
+
'jsx-a11y/anchor-ambiguous-text'?: Linter.RuleEntry<JsxA11YAnchorAmbiguousText>
|
|
2741
|
+
/**
|
|
2742
|
+
* Enforce all anchors to contain accessible content.
|
|
2743
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-has-content.md
|
|
2744
|
+
*/
|
|
2745
|
+
'jsx-a11y/anchor-has-content'?: Linter.RuleEntry<JsxA11YAnchorHasContent>
|
|
2746
|
+
/**
|
|
2747
|
+
* Enforce all anchors are valid, navigable elements.
|
|
2748
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-is-valid.md
|
|
2749
|
+
*/
|
|
2750
|
+
'jsx-a11y/anchor-is-valid'?: Linter.RuleEntry<JsxA11YAnchorIsValid>
|
|
2751
|
+
/**
|
|
2752
|
+
* Enforce elements with aria-activedescendant are tabbable.
|
|
2753
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-activedescendant-has-tabindex.md
|
|
2754
|
+
*/
|
|
2755
|
+
'jsx-a11y/aria-activedescendant-has-tabindex'?: Linter.RuleEntry<JsxA11YAriaActivedescendantHasTabindex>
|
|
2756
|
+
/**
|
|
2757
|
+
* Enforce all `aria-*` props are valid.
|
|
2758
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-props.md
|
|
2759
|
+
*/
|
|
2760
|
+
'jsx-a11y/aria-props'?: Linter.RuleEntry<JsxA11YAriaProps>
|
|
2761
|
+
/**
|
|
2762
|
+
* Enforce ARIA state and property values are valid.
|
|
2763
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-proptypes.md
|
|
2764
|
+
*/
|
|
2765
|
+
'jsx-a11y/aria-proptypes'?: Linter.RuleEntry<JsxA11YAriaProptypes>
|
|
2766
|
+
/**
|
|
2767
|
+
* Enforce that elements with ARIA roles must use a valid, non-abstract ARIA role.
|
|
2768
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-role.md
|
|
2769
|
+
*/
|
|
2770
|
+
'jsx-a11y/aria-role'?: Linter.RuleEntry<JsxA11YAriaRole>
|
|
2771
|
+
/**
|
|
2772
|
+
* Enforce that elements that do not support ARIA roles, states, and properties do not have those attributes.
|
|
2773
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-unsupported-elements.md
|
|
2774
|
+
*/
|
|
2775
|
+
'jsx-a11y/aria-unsupported-elements'?: Linter.RuleEntry<JsxA11YAriaUnsupportedElements>
|
|
2776
|
+
/**
|
|
2777
|
+
* Enforce that autocomplete attributes are used correctly.
|
|
2778
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/autocomplete-valid.md
|
|
2779
|
+
*/
|
|
2780
|
+
'jsx-a11y/autocomplete-valid'?: Linter.RuleEntry<JsxA11YAutocompleteValid>
|
|
2781
|
+
/**
|
|
2782
|
+
* Enforce a clickable non-interactive element has at least one keyboard event listener.
|
|
2783
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/click-events-have-key-events.md
|
|
2784
|
+
*/
|
|
2785
|
+
'jsx-a11y/click-events-have-key-events'?: Linter.RuleEntry<JsxA11YClickEventsHaveKeyEvents>
|
|
2786
|
+
/**
|
|
2787
|
+
* Enforce that a control (an interactive element) has a text label.
|
|
2788
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/control-has-associated-label.md
|
|
2789
|
+
*/
|
|
2790
|
+
'jsx-a11y/control-has-associated-label'?: Linter.RuleEntry<JsxA11YControlHasAssociatedLabel>
|
|
2791
|
+
/**
|
|
2792
|
+
* Enforce heading (`h1`, `h2`, etc) elements contain accessible content.
|
|
2793
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/heading-has-content.md
|
|
2794
|
+
*/
|
|
2795
|
+
'jsx-a11y/heading-has-content'?: Linter.RuleEntry<JsxA11YHeadingHasContent>
|
|
2796
|
+
/**
|
|
2797
|
+
* Enforce `<html>` element has `lang` prop.
|
|
2798
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/html-has-lang.md
|
|
2799
|
+
*/
|
|
2800
|
+
'jsx-a11y/html-has-lang'?: Linter.RuleEntry<JsxA11YHtmlHasLang>
|
|
2801
|
+
/**
|
|
2802
|
+
* Enforce iframe elements have a title attribute.
|
|
2803
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/iframe-has-title.md
|
|
2804
|
+
*/
|
|
2805
|
+
'jsx-a11y/iframe-has-title'?: Linter.RuleEntry<JsxA11YIframeHasTitle>
|
|
2806
|
+
/**
|
|
2807
|
+
* Enforce `<img>` alt prop does not contain the word "image", "picture", or "photo".
|
|
2808
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/img-redundant-alt.md
|
|
2809
|
+
*/
|
|
2810
|
+
'jsx-a11y/img-redundant-alt'?: Linter.RuleEntry<JsxA11YImgRedundantAlt>
|
|
2811
|
+
/**
|
|
2812
|
+
* Enforce that elements with interactive handlers like `onClick` must be focusable.
|
|
2813
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/interactive-supports-focus.md
|
|
2814
|
+
*/
|
|
2815
|
+
'jsx-a11y/interactive-supports-focus'?: Linter.RuleEntry<JsxA11YInteractiveSupportsFocus>
|
|
2816
|
+
/**
|
|
2817
|
+
* Enforce that a `label` tag has a text label and an associated control.
|
|
2818
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/label-has-associated-control.md
|
|
2819
|
+
*/
|
|
2820
|
+
'jsx-a11y/label-has-associated-control'?: Linter.RuleEntry<JsxA11YLabelHasAssociatedControl>
|
|
2821
|
+
/**
|
|
2822
|
+
* Enforce that `<label>` elements have the `htmlFor` prop.
|
|
2823
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/label-has-for.md
|
|
2824
|
+
* @deprecated
|
|
2825
|
+
*/
|
|
2826
|
+
'jsx-a11y/label-has-for'?: Linter.RuleEntry<JsxA11YLabelHasFor>
|
|
2827
|
+
/**
|
|
2828
|
+
* Enforce lang attribute has a valid value.
|
|
2829
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/lang.md
|
|
2830
|
+
*/
|
|
2831
|
+
'jsx-a11y/lang'?: Linter.RuleEntry<JsxA11YLang>
|
|
2832
|
+
/**
|
|
2833
|
+
* Enforces that `<audio>` and `<video>` elements must have a `<track>` for captions.
|
|
2834
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/media-has-caption.md
|
|
2835
|
+
*/
|
|
2836
|
+
'jsx-a11y/media-has-caption'?: Linter.RuleEntry<JsxA11YMediaHasCaption>
|
|
2837
|
+
/**
|
|
2838
|
+
* Enforce that `onMouseOver`/`onMouseOut` are accompanied by `onFocus`/`onBlur` for keyboard-only users.
|
|
2839
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/mouse-events-have-key-events.md
|
|
2840
|
+
*/
|
|
2841
|
+
'jsx-a11y/mouse-events-have-key-events'?: Linter.RuleEntry<JsxA11YMouseEventsHaveKeyEvents>
|
|
2842
|
+
/**
|
|
2843
|
+
* Enforce that the `accessKey` prop is not used on any element to avoid complications with keyboard commands used by a screen reader.
|
|
2844
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-access-key.md
|
|
2845
|
+
*/
|
|
2846
|
+
'jsx-a11y/no-access-key'?: Linter.RuleEntry<JsxA11YNoAccessKey>
|
|
2847
|
+
/**
|
|
2848
|
+
* Disallow `aria-hidden="true"` from being set on focusable elements.
|
|
2849
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-aria-hidden-on-focusable.md
|
|
2850
|
+
*/
|
|
2851
|
+
'jsx-a11y/no-aria-hidden-on-focusable'?: Linter.RuleEntry<JsxA11YNoAriaHiddenOnFocusable>
|
|
2852
|
+
/**
|
|
2853
|
+
* Enforce autoFocus prop is not used.
|
|
2854
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-autofocus.md
|
|
2855
|
+
*/
|
|
2856
|
+
'jsx-a11y/no-autofocus'?: Linter.RuleEntry<JsxA11YNoAutofocus>
|
|
2857
|
+
/**
|
|
2858
|
+
* Enforce distracting elements are not used.
|
|
2859
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-distracting-elements.md
|
|
2860
|
+
*/
|
|
2861
|
+
'jsx-a11y/no-distracting-elements'?: Linter.RuleEntry<JsxA11YNoDistractingElements>
|
|
2862
|
+
/**
|
|
2863
|
+
* Interactive elements should not be assigned non-interactive roles.
|
|
2864
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-interactive-element-to-noninteractive-role.md
|
|
2865
|
+
*/
|
|
2866
|
+
'jsx-a11y/no-interactive-element-to-noninteractive-role'?: Linter.RuleEntry<JsxA11YNoInteractiveElementToNoninteractiveRole>
|
|
2867
|
+
/**
|
|
2868
|
+
* Non-interactive elements should not be assigned mouse or keyboard event listeners.
|
|
2869
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-element-interactions.md
|
|
2870
|
+
*/
|
|
2871
|
+
'jsx-a11y/no-noninteractive-element-interactions'?: Linter.RuleEntry<JsxA11YNoNoninteractiveElementInteractions>
|
|
2872
|
+
/**
|
|
2873
|
+
* Non-interactive elements should not be assigned interactive roles.
|
|
2874
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-element-to-interactive-role.md
|
|
2875
|
+
*/
|
|
2876
|
+
'jsx-a11y/no-noninteractive-element-to-interactive-role'?: Linter.RuleEntry<JsxA11YNoNoninteractiveElementToInteractiveRole>
|
|
2877
|
+
/**
|
|
2878
|
+
* `tabIndex` should only be declared on interactive elements.
|
|
2879
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-tabindex.md
|
|
2880
|
+
*/
|
|
2881
|
+
'jsx-a11y/no-noninteractive-tabindex'?: Linter.RuleEntry<JsxA11YNoNoninteractiveTabindex>
|
|
2882
|
+
/**
|
|
2883
|
+
* Enforce usage of `onBlur` over `onChange` on select menus for accessibility.
|
|
2884
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-onchange.md
|
|
2885
|
+
* @deprecated
|
|
2886
|
+
*/
|
|
2887
|
+
'jsx-a11y/no-onchange'?: Linter.RuleEntry<JsxA11YNoOnchange>
|
|
2888
|
+
/**
|
|
2889
|
+
* Enforce explicit role property is not the same as implicit/default role property on element.
|
|
2890
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-redundant-roles.md
|
|
2891
|
+
*/
|
|
2892
|
+
'jsx-a11y/no-redundant-roles'?: Linter.RuleEntry<JsxA11YNoRedundantRoles>
|
|
2893
|
+
/**
|
|
2894
|
+
* Enforce that non-interactive, visible elements (such as `<div>`) that have click handlers use the role attribute.
|
|
2895
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-static-element-interactions.md
|
|
2896
|
+
*/
|
|
2897
|
+
'jsx-a11y/no-static-element-interactions'?: Linter.RuleEntry<JsxA11YNoStaticElementInteractions>
|
|
2898
|
+
/**
|
|
2899
|
+
* Enforces using semantic DOM elements over the ARIA `role` property.
|
|
2900
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/prefer-tag-over-role.md
|
|
2901
|
+
*/
|
|
2902
|
+
'jsx-a11y/prefer-tag-over-role'?: Linter.RuleEntry<JsxA11YPreferTagOverRole>
|
|
2903
|
+
/**
|
|
2904
|
+
* Enforce that elements with ARIA roles must have all required attributes for that role.
|
|
2905
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/role-has-required-aria-props.md
|
|
2906
|
+
*/
|
|
2907
|
+
'jsx-a11y/role-has-required-aria-props'?: Linter.RuleEntry<JsxA11YRoleHasRequiredAriaProps>
|
|
2908
|
+
/**
|
|
2909
|
+
* Enforce that elements with explicit or implicit roles defined contain only `aria-*` properties supported by that `role`.
|
|
2910
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/role-supports-aria-props.md
|
|
2911
|
+
*/
|
|
2912
|
+
'jsx-a11y/role-supports-aria-props'?: Linter.RuleEntry<JsxA11YRoleSupportsAriaProps>
|
|
2913
|
+
/**
|
|
2914
|
+
* Enforce `scope` prop is only used on `<th>` elements.
|
|
2915
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/scope.md
|
|
2916
|
+
*/
|
|
2917
|
+
'jsx-a11y/scope'?: Linter.RuleEntry<JsxA11YScope>
|
|
2918
|
+
/**
|
|
2919
|
+
* Enforce `tabIndex` value is not greater than zero.
|
|
2920
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/tabindex-no-positive.md
|
|
2921
|
+
*/
|
|
2922
|
+
'jsx-a11y/tabindex-no-positive'?: Linter.RuleEntry<JsxA11YTabindexNoPositive>
|
|
2725
2923
|
/**
|
|
2726
2924
|
* Enforce the consistent use of either double or single quotes in JSX attributes
|
|
2727
2925
|
* @see https://eslint.org/docs/latest/rules/jsx-quotes
|
|
@@ -11134,6 +11332,221 @@ type JsoncSpaceUnaryOps = []|[{
|
|
|
11134
11332
|
[k: string]: boolean | undefined
|
|
11135
11333
|
}
|
|
11136
11334
|
}]
|
|
11335
|
+
// ----- jsx-a11y/accessible-emoji -----
|
|
11336
|
+
type JsxA11YAccessibleEmoji = []|[{
|
|
11337
|
+
[k: string]: unknown | undefined
|
|
11338
|
+
}]
|
|
11339
|
+
// ----- jsx-a11y/alt-text -----
|
|
11340
|
+
type JsxA11YAltText = []|[{
|
|
11341
|
+
elements?: string[]
|
|
11342
|
+
img?: string[]
|
|
11343
|
+
object?: string[]
|
|
11344
|
+
area?: string[]
|
|
11345
|
+
"input[type=\"image\"]"?: string[]
|
|
11346
|
+
[k: string]: unknown | undefined
|
|
11347
|
+
}]
|
|
11348
|
+
// ----- jsx-a11y/anchor-ambiguous-text -----
|
|
11349
|
+
type JsxA11YAnchorAmbiguousText = []|[{
|
|
11350
|
+
words?: string[]
|
|
11351
|
+
[k: string]: unknown | undefined
|
|
11352
|
+
}]
|
|
11353
|
+
// ----- jsx-a11y/anchor-has-content -----
|
|
11354
|
+
type JsxA11YAnchorHasContent = []|[{
|
|
11355
|
+
components?: string[]
|
|
11356
|
+
[k: string]: unknown | undefined
|
|
11357
|
+
}]
|
|
11358
|
+
// ----- jsx-a11y/anchor-is-valid -----
|
|
11359
|
+
type JsxA11YAnchorIsValid = []|[{
|
|
11360
|
+
components?: string[]
|
|
11361
|
+
specialLink?: string[]
|
|
11362
|
+
|
|
11363
|
+
aspects?: [("noHref" | "invalidHref" | "preferButton"), ...(("noHref" | "invalidHref" | "preferButton"))[]]
|
|
11364
|
+
[k: string]: unknown | undefined
|
|
11365
|
+
}]
|
|
11366
|
+
// ----- jsx-a11y/aria-activedescendant-has-tabindex -----
|
|
11367
|
+
type JsxA11YAriaActivedescendantHasTabindex = []|[{
|
|
11368
|
+
[k: string]: unknown | undefined
|
|
11369
|
+
}]
|
|
11370
|
+
// ----- jsx-a11y/aria-props -----
|
|
11371
|
+
type JsxA11YAriaProps = []|[{
|
|
11372
|
+
[k: string]: unknown | undefined
|
|
11373
|
+
}]
|
|
11374
|
+
// ----- jsx-a11y/aria-proptypes -----
|
|
11375
|
+
type JsxA11YAriaProptypes = []|[{
|
|
11376
|
+
[k: string]: unknown | undefined
|
|
11377
|
+
}]
|
|
11378
|
+
// ----- jsx-a11y/aria-role -----
|
|
11379
|
+
type JsxA11YAriaRole = []|[{
|
|
11380
|
+
allowedInvalidRoles?: string[]
|
|
11381
|
+
ignoreNonDOM?: boolean
|
|
11382
|
+
[k: string]: unknown | undefined
|
|
11383
|
+
}]
|
|
11384
|
+
// ----- jsx-a11y/aria-unsupported-elements -----
|
|
11385
|
+
type JsxA11YAriaUnsupportedElements = []|[{
|
|
11386
|
+
[k: string]: unknown | undefined
|
|
11387
|
+
}]
|
|
11388
|
+
// ----- jsx-a11y/autocomplete-valid -----
|
|
11389
|
+
type JsxA11YAutocompleteValid = []|[{
|
|
11390
|
+
inputComponents?: string[]
|
|
11391
|
+
[k: string]: unknown | undefined
|
|
11392
|
+
}]
|
|
11393
|
+
// ----- jsx-a11y/click-events-have-key-events -----
|
|
11394
|
+
type JsxA11YClickEventsHaveKeyEvents = []|[{
|
|
11395
|
+
[k: string]: unknown | undefined
|
|
11396
|
+
}]
|
|
11397
|
+
// ----- jsx-a11y/control-has-associated-label -----
|
|
11398
|
+
type JsxA11YControlHasAssociatedLabel = []|[{
|
|
11399
|
+
labelAttributes?: string[]
|
|
11400
|
+
controlComponents?: string[]
|
|
11401
|
+
ignoreElements?: string[]
|
|
11402
|
+
ignoreRoles?: string[]
|
|
11403
|
+
|
|
11404
|
+
depth?: number
|
|
11405
|
+
[k: string]: unknown | undefined
|
|
11406
|
+
}]
|
|
11407
|
+
// ----- jsx-a11y/heading-has-content -----
|
|
11408
|
+
type JsxA11YHeadingHasContent = []|[{
|
|
11409
|
+
components?: string[]
|
|
11410
|
+
[k: string]: unknown | undefined
|
|
11411
|
+
}]
|
|
11412
|
+
// ----- jsx-a11y/html-has-lang -----
|
|
11413
|
+
type JsxA11YHtmlHasLang = []|[{
|
|
11414
|
+
[k: string]: unknown | undefined
|
|
11415
|
+
}]
|
|
11416
|
+
// ----- jsx-a11y/iframe-has-title -----
|
|
11417
|
+
type JsxA11YIframeHasTitle = []|[{
|
|
11418
|
+
[k: string]: unknown | undefined
|
|
11419
|
+
}]
|
|
11420
|
+
// ----- jsx-a11y/img-redundant-alt -----
|
|
11421
|
+
type JsxA11YImgRedundantAlt = []|[{
|
|
11422
|
+
components?: string[]
|
|
11423
|
+
words?: string[]
|
|
11424
|
+
[k: string]: unknown | undefined
|
|
11425
|
+
}]
|
|
11426
|
+
// ----- jsx-a11y/interactive-supports-focus -----
|
|
11427
|
+
type JsxA11YInteractiveSupportsFocus = []|[{
|
|
11428
|
+
|
|
11429
|
+
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")[]
|
|
11430
|
+
[k: string]: unknown | undefined
|
|
11431
|
+
}]
|
|
11432
|
+
// ----- jsx-a11y/label-has-associated-control -----
|
|
11433
|
+
type JsxA11YLabelHasAssociatedControl = []|[{
|
|
11434
|
+
labelComponents?: string[]
|
|
11435
|
+
labelAttributes?: string[]
|
|
11436
|
+
controlComponents?: string[]
|
|
11437
|
+
|
|
11438
|
+
assert?: ("htmlFor" | "nesting" | "both" | "either")
|
|
11439
|
+
|
|
11440
|
+
depth?: number
|
|
11441
|
+
[k: string]: unknown | undefined
|
|
11442
|
+
}]
|
|
11443
|
+
// ----- jsx-a11y/label-has-for -----
|
|
11444
|
+
type JsxA11YLabelHasFor = []|[{
|
|
11445
|
+
components?: string[]
|
|
11446
|
+
required?: (("nesting" | "id") | {
|
|
11447
|
+
|
|
11448
|
+
some: ("nesting" | "id")[]
|
|
11449
|
+
[k: string]: unknown | undefined
|
|
11450
|
+
} | {
|
|
11451
|
+
|
|
11452
|
+
every: ("nesting" | "id")[]
|
|
11453
|
+
[k: string]: unknown | undefined
|
|
11454
|
+
})
|
|
11455
|
+
allowChildren?: boolean
|
|
11456
|
+
[k: string]: unknown | undefined
|
|
11457
|
+
}]
|
|
11458
|
+
// ----- jsx-a11y/lang -----
|
|
11459
|
+
type JsxA11YLang = []|[{
|
|
11460
|
+
[k: string]: unknown | undefined
|
|
11461
|
+
}]
|
|
11462
|
+
// ----- jsx-a11y/media-has-caption -----
|
|
11463
|
+
type JsxA11YMediaHasCaption = []|[{
|
|
11464
|
+
audio?: string[]
|
|
11465
|
+
video?: string[]
|
|
11466
|
+
track?: string[]
|
|
11467
|
+
[k: string]: unknown | undefined
|
|
11468
|
+
}]
|
|
11469
|
+
// ----- jsx-a11y/mouse-events-have-key-events -----
|
|
11470
|
+
type JsxA11YMouseEventsHaveKeyEvents = []|[{
|
|
11471
|
+
|
|
11472
|
+
hoverInHandlers?: string[]
|
|
11473
|
+
|
|
11474
|
+
hoverOutHandlers?: string[]
|
|
11475
|
+
[k: string]: unknown | undefined
|
|
11476
|
+
}]
|
|
11477
|
+
// ----- jsx-a11y/no-access-key -----
|
|
11478
|
+
type JsxA11YNoAccessKey = []|[{
|
|
11479
|
+
[k: string]: unknown | undefined
|
|
11480
|
+
}]
|
|
11481
|
+
// ----- jsx-a11y/no-aria-hidden-on-focusable -----
|
|
11482
|
+
type JsxA11YNoAriaHiddenOnFocusable = []|[{
|
|
11483
|
+
[k: string]: unknown | undefined
|
|
11484
|
+
}]
|
|
11485
|
+
// ----- jsx-a11y/no-autofocus -----
|
|
11486
|
+
type JsxA11YNoAutofocus = []|[{
|
|
11487
|
+
ignoreNonDOM?: boolean
|
|
11488
|
+
[k: string]: unknown | undefined
|
|
11489
|
+
}]
|
|
11490
|
+
// ----- jsx-a11y/no-distracting-elements -----
|
|
11491
|
+
type JsxA11YNoDistractingElements = []|[{
|
|
11492
|
+
|
|
11493
|
+
elements?: ("marquee" | "blink")[]
|
|
11494
|
+
[k: string]: unknown | undefined
|
|
11495
|
+
}]
|
|
11496
|
+
// ----- jsx-a11y/no-interactive-element-to-noninteractive-role -----
|
|
11497
|
+
type JsxA11YNoInteractiveElementToNoninteractiveRole = []|[{
|
|
11498
|
+
[k: string]: string[] | undefined
|
|
11499
|
+
}]
|
|
11500
|
+
// ----- jsx-a11y/no-noninteractive-element-interactions -----
|
|
11501
|
+
type JsxA11YNoNoninteractiveElementInteractions = []|[{
|
|
11502
|
+
handlers?: string[]
|
|
11503
|
+
[k: string]: unknown | undefined
|
|
11504
|
+
}]
|
|
11505
|
+
// ----- jsx-a11y/no-noninteractive-element-to-interactive-role -----
|
|
11506
|
+
type JsxA11YNoNoninteractiveElementToInteractiveRole = []|[{
|
|
11507
|
+
[k: string]: string[] | undefined
|
|
11508
|
+
}]
|
|
11509
|
+
// ----- jsx-a11y/no-noninteractive-tabindex -----
|
|
11510
|
+
type JsxA11YNoNoninteractiveTabindex = []|[{
|
|
11511
|
+
|
|
11512
|
+
roles?: string[]
|
|
11513
|
+
|
|
11514
|
+
tags?: string[]
|
|
11515
|
+
[k: string]: unknown | undefined
|
|
11516
|
+
}]
|
|
11517
|
+
// ----- jsx-a11y/no-onchange -----
|
|
11518
|
+
type JsxA11YNoOnchange = []|[{
|
|
11519
|
+
[k: string]: unknown | undefined
|
|
11520
|
+
}]
|
|
11521
|
+
// ----- jsx-a11y/no-redundant-roles -----
|
|
11522
|
+
type JsxA11YNoRedundantRoles = []|[{
|
|
11523
|
+
[k: string]: string[] | undefined
|
|
11524
|
+
}]
|
|
11525
|
+
// ----- jsx-a11y/no-static-element-interactions -----
|
|
11526
|
+
type JsxA11YNoStaticElementInteractions = []|[{
|
|
11527
|
+
handlers?: string[]
|
|
11528
|
+
[k: string]: unknown | undefined
|
|
11529
|
+
}]
|
|
11530
|
+
// ----- jsx-a11y/prefer-tag-over-role -----
|
|
11531
|
+
type JsxA11YPreferTagOverRole = []|[{
|
|
11532
|
+
[k: string]: unknown | undefined
|
|
11533
|
+
}]
|
|
11534
|
+
// ----- jsx-a11y/role-has-required-aria-props -----
|
|
11535
|
+
type JsxA11YRoleHasRequiredAriaProps = []|[{
|
|
11536
|
+
[k: string]: unknown | undefined
|
|
11537
|
+
}]
|
|
11538
|
+
// ----- jsx-a11y/role-supports-aria-props -----
|
|
11539
|
+
type JsxA11YRoleSupportsAriaProps = []|[{
|
|
11540
|
+
[k: string]: unknown | undefined
|
|
11541
|
+
}]
|
|
11542
|
+
// ----- jsx-a11y/scope -----
|
|
11543
|
+
type JsxA11YScope = []|[{
|
|
11544
|
+
[k: string]: unknown | undefined
|
|
11545
|
+
}]
|
|
11546
|
+
// ----- jsx-a11y/tabindex-no-positive -----
|
|
11547
|
+
type JsxA11YTabindexNoPositive = []|[{
|
|
11548
|
+
[k: string]: unknown | undefined
|
|
11549
|
+
}]
|
|
11137
11550
|
// ----- jsx-quotes -----
|
|
11138
11551
|
type JsxQuotes = []|[("prefer-single" | "prefer-double")]
|
|
11139
11552
|
// ----- key-spacing -----
|