@storm-software/eslint 0.20.1 → 0.22.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/dist/preset.d.ts CHANGED
@@ -780,6 +780,726 @@ interface RuleOptions {
780
780
  * @see https://typescript-eslint.io/rules/use-unknown-in-catch-callback-variable
781
781
  */
782
782
  '@typescript-eslint/use-unknown-in-catch-callback-variable'?: Linter.RuleEntry<[]>
783
+ /**
784
+ * Enforce emojis are wrapped in `<span>` and provide screenreader access.
785
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/accessible-emoji.md
786
+ * @deprecated
787
+ */
788
+ 'jsx-a11y/accessible-emoji'?: Linter.RuleEntry<JsxA11yAccessibleEmoji>
789
+ /**
790
+ * Enforce all elements that require alternative text have meaningful information to relay back to end user.
791
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/alt-text.md
792
+ */
793
+ 'jsx-a11y/alt-text'?: Linter.RuleEntry<JsxA11yAltText>
794
+ /**
795
+ * Enforce `<a>` text to not exactly match "click here", "here", "link", or "a link".
796
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-ambiguous-text.md
797
+ */
798
+ 'jsx-a11y/anchor-ambiguous-text'?: Linter.RuleEntry<JsxA11yAnchorAmbiguousText>
799
+ /**
800
+ * Enforce all anchors to contain accessible content.
801
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-has-content.md
802
+ */
803
+ 'jsx-a11y/anchor-has-content'?: Linter.RuleEntry<JsxA11yAnchorHasContent>
804
+ /**
805
+ * Enforce all anchors are valid, navigable elements.
806
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-is-valid.md
807
+ */
808
+ 'jsx-a11y/anchor-is-valid'?: Linter.RuleEntry<JsxA11yAnchorIsValid>
809
+ /**
810
+ * Enforce elements with aria-activedescendant are tabbable.
811
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-activedescendant-has-tabindex.md
812
+ */
813
+ 'jsx-a11y/aria-activedescendant-has-tabindex'?: Linter.RuleEntry<JsxA11yAriaActivedescendantHasTabindex>
814
+ /**
815
+ * Enforce all `aria-*` props are valid.
816
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-props.md
817
+ */
818
+ 'jsx-a11y/aria-props'?: Linter.RuleEntry<JsxA11yAriaProps>
819
+ /**
820
+ * Enforce ARIA state and property values are valid.
821
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-proptypes.md
822
+ */
823
+ 'jsx-a11y/aria-proptypes'?: Linter.RuleEntry<JsxA11yAriaProptypes>
824
+ /**
825
+ * Enforce that elements with ARIA roles must use a valid, non-abstract ARIA role.
826
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-role.md
827
+ */
828
+ 'jsx-a11y/aria-role'?: Linter.RuleEntry<JsxA11yAriaRole>
829
+ /**
830
+ * Enforce that elements that do not support ARIA roles, states, and properties do not have those attributes.
831
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-unsupported-elements.md
832
+ */
833
+ 'jsx-a11y/aria-unsupported-elements'?: Linter.RuleEntry<JsxA11yAriaUnsupportedElements>
834
+ /**
835
+ * Enforce that autocomplete attributes are used correctly.
836
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/autocomplete-valid.md
837
+ */
838
+ 'jsx-a11y/autocomplete-valid'?: Linter.RuleEntry<JsxA11yAutocompleteValid>
839
+ /**
840
+ * Enforce a clickable non-interactive element has at least one keyboard event listener.
841
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/click-events-have-key-events.md
842
+ */
843
+ 'jsx-a11y/click-events-have-key-events'?: Linter.RuleEntry<JsxA11yClickEventsHaveKeyEvents>
844
+ /**
845
+ * Enforce that a control (an interactive element) has a text label.
846
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/control-has-associated-label.md
847
+ */
848
+ 'jsx-a11y/control-has-associated-label'?: Linter.RuleEntry<JsxA11yControlHasAssociatedLabel>
849
+ /**
850
+ * Enforce heading (`h1`, `h2`, etc) elements contain accessible content.
851
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/heading-has-content.md
852
+ */
853
+ 'jsx-a11y/heading-has-content'?: Linter.RuleEntry<JsxA11yHeadingHasContent>
854
+ /**
855
+ * Enforce `<html>` element has `lang` prop.
856
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/html-has-lang.md
857
+ */
858
+ 'jsx-a11y/html-has-lang'?: Linter.RuleEntry<JsxA11yHtmlHasLang>
859
+ /**
860
+ * Enforce iframe elements have a title attribute.
861
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/iframe-has-title.md
862
+ */
863
+ 'jsx-a11y/iframe-has-title'?: Linter.RuleEntry<JsxA11yIframeHasTitle>
864
+ /**
865
+ * Enforce `<img>` alt prop does not contain the word "image", "picture", or "photo".
866
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/img-redundant-alt.md
867
+ */
868
+ 'jsx-a11y/img-redundant-alt'?: Linter.RuleEntry<JsxA11yImgRedundantAlt>
869
+ /**
870
+ * Enforce that elements with interactive handlers like `onClick` must be focusable.
871
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/interactive-supports-focus.md
872
+ */
873
+ 'jsx-a11y/interactive-supports-focus'?: Linter.RuleEntry<JsxA11yInteractiveSupportsFocus>
874
+ /**
875
+ * Enforce that a `label` tag has a text label and an associated control.
876
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/label-has-associated-control.md
877
+ */
878
+ 'jsx-a11y/label-has-associated-control'?: Linter.RuleEntry<JsxA11yLabelHasAssociatedControl>
879
+ /**
880
+ * Enforce that `<label>` elements have the `htmlFor` prop.
881
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/label-has-for.md
882
+ * @deprecated
883
+ */
884
+ 'jsx-a11y/label-has-for'?: Linter.RuleEntry<JsxA11yLabelHasFor>
885
+ /**
886
+ * Enforce lang attribute has a valid value.
887
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/lang.md
888
+ */
889
+ 'jsx-a11y/lang'?: Linter.RuleEntry<JsxA11yLang>
890
+ /**
891
+ * Enforces that `<audio>` and `<video>` elements must have a `<track>` for captions.
892
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/media-has-caption.md
893
+ */
894
+ 'jsx-a11y/media-has-caption'?: Linter.RuleEntry<JsxA11yMediaHasCaption>
895
+ /**
896
+ * Enforce that `onMouseOver`/`onMouseOut` are accompanied by `onFocus`/`onBlur` for keyboard-only users.
897
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/mouse-events-have-key-events.md
898
+ */
899
+ 'jsx-a11y/mouse-events-have-key-events'?: Linter.RuleEntry<JsxA11yMouseEventsHaveKeyEvents>
900
+ /**
901
+ * Enforce that the `accessKey` prop is not used on any element to avoid complications with keyboard commands used by a screenreader.
902
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-access-key.md
903
+ */
904
+ 'jsx-a11y/no-access-key'?: Linter.RuleEntry<JsxA11yNoAccessKey>
905
+ /**
906
+ * Disallow `aria-hidden="true"` from being set on focusable elements.
907
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-aria-hidden-on-focusable.md
908
+ */
909
+ 'jsx-a11y/no-aria-hidden-on-focusable'?: Linter.RuleEntry<JsxA11yNoAriaHiddenOnFocusable>
910
+ /**
911
+ * Enforce autoFocus prop is not used.
912
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-autofocus.md
913
+ */
914
+ 'jsx-a11y/no-autofocus'?: Linter.RuleEntry<JsxA11yNoAutofocus>
915
+ /**
916
+ * Enforce distracting elements are not used.
917
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-distracting-elements.md
918
+ */
919
+ 'jsx-a11y/no-distracting-elements'?: Linter.RuleEntry<JsxA11yNoDistractingElements>
920
+ /**
921
+ * Interactive elements should not be assigned non-interactive roles.
922
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-interactive-element-to-noninteractive-role.md
923
+ */
924
+ 'jsx-a11y/no-interactive-element-to-noninteractive-role'?: Linter.RuleEntry<JsxA11yNoInteractiveElementToNoninteractiveRole>
925
+ /**
926
+ * Non-interactive elements should not be assigned mouse or keyboard event listeners.
927
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-element-interactions.md
928
+ */
929
+ 'jsx-a11y/no-noninteractive-element-interactions'?: Linter.RuleEntry<JsxA11yNoNoninteractiveElementInteractions>
930
+ /**
931
+ * Non-interactive elements should not be assigned interactive roles.
932
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-element-to-interactive-role.md
933
+ */
934
+ 'jsx-a11y/no-noninteractive-element-to-interactive-role'?: Linter.RuleEntry<JsxA11yNoNoninteractiveElementToInteractiveRole>
935
+ /**
936
+ * `tabIndex` should only be declared on interactive elements.
937
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-tabindex.md
938
+ */
939
+ 'jsx-a11y/no-noninteractive-tabindex'?: Linter.RuleEntry<JsxA11yNoNoninteractiveTabindex>
940
+ /**
941
+ * Enforce usage of `onBlur` over `onChange` on select menus for accessibility.
942
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-onchange.md
943
+ * @deprecated
944
+ */
945
+ 'jsx-a11y/no-onchange'?: Linter.RuleEntry<JsxA11yNoOnchange>
946
+ /**
947
+ * Enforce explicit role property is not the same as implicit/default role property on element.
948
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-redundant-roles.md
949
+ */
950
+ 'jsx-a11y/no-redundant-roles'?: Linter.RuleEntry<JsxA11yNoRedundantRoles>
951
+ /**
952
+ * Enforce that non-interactive, visible elements (such as `<div>`) that have click handlers use the role attribute.
953
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-static-element-interactions.md
954
+ */
955
+ 'jsx-a11y/no-static-element-interactions'?: Linter.RuleEntry<JsxA11yNoStaticElementInteractions>
956
+ /**
957
+ * Enforces using semantic DOM elements over the ARIA `role` property.
958
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/prefer-tag-over-role.md
959
+ */
960
+ 'jsx-a11y/prefer-tag-over-role'?: Linter.RuleEntry<JsxA11yPreferTagOverRole>
961
+ /**
962
+ * Enforce that elements with ARIA roles must have all required attributes for that role.
963
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/role-has-required-aria-props.md
964
+ */
965
+ 'jsx-a11y/role-has-required-aria-props'?: Linter.RuleEntry<JsxA11yRoleHasRequiredAriaProps>
966
+ /**
967
+ * Enforce that elements with explicit or implicit roles defined contain only `aria-*` properties supported by that `role`.
968
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/role-supports-aria-props.md
969
+ */
970
+ 'jsx-a11y/role-supports-aria-props'?: Linter.RuleEntry<JsxA11yRoleSupportsAriaProps>
971
+ /**
972
+ * Enforce `scope` prop is only used on `<th>` elements.
973
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/scope.md
974
+ */
975
+ 'jsx-a11y/scope'?: Linter.RuleEntry<JsxA11yScope>
976
+ /**
977
+ * Enforce `tabIndex` value is not greater than zero.
978
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/tabindex-no-positive.md
979
+ */
980
+ 'jsx-a11y/tabindex-no-positive'?: Linter.RuleEntry<JsxA11yTabindexNoPositive>
981
+ /**
982
+ * verifies the list of dependencies for Hooks like useEffect and similar
983
+ * @see https://github.com/facebook/react/issues/14920
984
+ */
985
+ 'react-hooks/exhaustive-deps'?: Linter.RuleEntry<ReactHooksExhaustiveDeps>
986
+ /**
987
+ * enforces the Rules of Hooks
988
+ * @see https://reactjs.org/docs/hooks-rules.html
989
+ */
990
+ 'react-hooks/rules-of-hooks'?: Linter.RuleEntry<[]>
991
+ /**
992
+ * Enforces consistent naming for boolean props
993
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/boolean-prop-naming.md
994
+ */
995
+ 'react/boolean-prop-naming'?: Linter.RuleEntry<ReactBooleanPropNaming>
996
+ /**
997
+ * Disallow usage of `button` elements without an explicit `type` attribute
998
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/button-has-type.md
999
+ */
1000
+ 'react/button-has-type'?: Linter.RuleEntry<ReactButtonHasType>
1001
+ /**
1002
+ * Enforce using `onChange` or `readonly` attribute when `checked` is used
1003
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/checked-requires-onchange-or-readonly.md
1004
+ */
1005
+ 'react/checked-requires-onchange-or-readonly'?: Linter.RuleEntry<ReactCheckedRequiresOnchangeOrReadonly>
1006
+ /**
1007
+ * Enforce all defaultProps have a corresponding non-required PropType
1008
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/default-props-match-prop-types.md
1009
+ */
1010
+ 'react/default-props-match-prop-types'?: Linter.RuleEntry<ReactDefaultPropsMatchPropTypes>
1011
+ /**
1012
+ * Enforce consistent usage of destructuring assignment of props, state, and context
1013
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/destructuring-assignment.md
1014
+ */
1015
+ 'react/destructuring-assignment'?: Linter.RuleEntry<ReactDestructuringAssignment>
1016
+ /**
1017
+ * Disallow missing displayName in a React component definition
1018
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/display-name.md
1019
+ */
1020
+ 'react/display-name'?: Linter.RuleEntry<ReactDisplayName>
1021
+ /**
1022
+ * Disallow certain props on components
1023
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-component-props.md
1024
+ */
1025
+ 'react/forbid-component-props'?: Linter.RuleEntry<ReactForbidComponentProps>
1026
+ /**
1027
+ * Disallow certain props on DOM Nodes
1028
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-dom-props.md
1029
+ */
1030
+ 'react/forbid-dom-props'?: Linter.RuleEntry<ReactForbidDomProps>
1031
+ /**
1032
+ * Disallow certain elements
1033
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-elements.md
1034
+ */
1035
+ 'react/forbid-elements'?: Linter.RuleEntry<ReactForbidElements>
1036
+ /**
1037
+ * Disallow using another component's propTypes
1038
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-foreign-prop-types.md
1039
+ */
1040
+ 'react/forbid-foreign-prop-types'?: Linter.RuleEntry<ReactForbidForeignPropTypes>
1041
+ /**
1042
+ * Disallow certain propTypes
1043
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/forbid-prop-types.md
1044
+ */
1045
+ 'react/forbid-prop-types'?: Linter.RuleEntry<ReactForbidPropTypes>
1046
+ /**
1047
+ * Enforce a specific function type for function components
1048
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/function-component-definition.md
1049
+ */
1050
+ 'react/function-component-definition'?: Linter.RuleEntry<ReactFunctionComponentDefinition>
1051
+ /**
1052
+ * Ensure destructuring and symmetric naming of useState hook value and setter variables
1053
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/hook-use-state.md
1054
+ */
1055
+ 'react/hook-use-state'?: Linter.RuleEntry<ReactHookUseState>
1056
+ /**
1057
+ * Enforce sandbox attribute on iframe elements
1058
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/iframe-missing-sandbox.md
1059
+ */
1060
+ 'react/iframe-missing-sandbox'?: Linter.RuleEntry<[]>
1061
+ /**
1062
+ * Enforce boolean attributes notation in JSX
1063
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-boolean-value.md
1064
+ */
1065
+ 'react/jsx-boolean-value'?: Linter.RuleEntry<ReactJsxBooleanValue>
1066
+ /**
1067
+ * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions
1068
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-child-element-spacing.md
1069
+ */
1070
+ 'react/jsx-child-element-spacing'?: Linter.RuleEntry<[]>
1071
+ /**
1072
+ * Enforce closing bracket location in JSX
1073
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-closing-bracket-location.md
1074
+ */
1075
+ 'react/jsx-closing-bracket-location'?: Linter.RuleEntry<ReactJsxClosingBracketLocation>
1076
+ /**
1077
+ * Enforce closing tag location for multiline JSX
1078
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-closing-tag-location.md
1079
+ */
1080
+ 'react/jsx-closing-tag-location'?: Linter.RuleEntry<[]>
1081
+ /**
1082
+ * Disallow unnecessary JSX expressions when literals alone are sufficient or enforce JSX expressions on literals in JSX children or attributes
1083
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-brace-presence.md
1084
+ */
1085
+ 'react/jsx-curly-brace-presence'?: Linter.RuleEntry<ReactJsxCurlyBracePresence>
1086
+ /**
1087
+ * Enforce consistent linebreaks in curly braces in JSX attributes and expressions
1088
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-newline.md
1089
+ */
1090
+ 'react/jsx-curly-newline'?: Linter.RuleEntry<ReactJsxCurlyNewline>
1091
+ /**
1092
+ * Enforce or disallow spaces inside of curly braces in JSX attributes and expressions
1093
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-curly-spacing.md
1094
+ */
1095
+ 'react/jsx-curly-spacing'?: Linter.RuleEntry<ReactJsxCurlySpacing>
1096
+ /**
1097
+ * Enforce or disallow spaces around equal signs in JSX attributes
1098
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-equals-spacing.md
1099
+ */
1100
+ 'react/jsx-equals-spacing'?: Linter.RuleEntry<ReactJsxEqualsSpacing>
1101
+ /**
1102
+ * Disallow file extensions that may contain JSX
1103
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-filename-extension.md
1104
+ */
1105
+ 'react/jsx-filename-extension'?: Linter.RuleEntry<ReactJsxFilenameExtension>
1106
+ /**
1107
+ * Enforce proper position of the first property in JSX
1108
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-first-prop-new-line.md
1109
+ */
1110
+ 'react/jsx-first-prop-new-line'?: Linter.RuleEntry<ReactJsxFirstPropNewLine>
1111
+ /**
1112
+ * Enforce shorthand or standard form for React fragments
1113
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-fragments.md
1114
+ */
1115
+ 'react/jsx-fragments'?: Linter.RuleEntry<ReactJsxFragments>
1116
+ /**
1117
+ * Enforce event handler naming conventions in JSX
1118
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-handler-names.md
1119
+ */
1120
+ 'react/jsx-handler-names'?: Linter.RuleEntry<ReactJsxHandlerNames>
1121
+ /**
1122
+ * Enforce JSX indentation
1123
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-indent.md
1124
+ */
1125
+ 'react/jsx-indent'?: Linter.RuleEntry<ReactJsxIndent>
1126
+ /**
1127
+ * Enforce props indentation in JSX
1128
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-indent-props.md
1129
+ */
1130
+ 'react/jsx-indent-props'?: Linter.RuleEntry<ReactJsxIndentProps>
1131
+ /**
1132
+ * Disallow missing `key` props in iterators/collection literals
1133
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-key.md
1134
+ */
1135
+ 'react/jsx-key'?: Linter.RuleEntry<ReactJsxKey>
1136
+ /**
1137
+ * Enforce JSX maximum depth
1138
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-max-depth.md
1139
+ */
1140
+ 'react/jsx-max-depth'?: Linter.RuleEntry<ReactJsxMaxDepth>
1141
+ /**
1142
+ * Enforce maximum of props on a single line in JSX
1143
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-max-props-per-line.md
1144
+ */
1145
+ 'react/jsx-max-props-per-line'?: Linter.RuleEntry<ReactJsxMaxPropsPerLine>
1146
+ /**
1147
+ * Require or prevent a new line after jsx elements and expressions.
1148
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-newline.md
1149
+ */
1150
+ 'react/jsx-newline'?: Linter.RuleEntry<ReactJsxNewline>
1151
+ /**
1152
+ * Disallow `.bind()` or arrow functions in JSX props
1153
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-bind.md
1154
+ */
1155
+ 'react/jsx-no-bind'?: Linter.RuleEntry<ReactJsxNoBind>
1156
+ /**
1157
+ * Disallow comments from being inserted as text nodes
1158
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-comment-textnodes.md
1159
+ */
1160
+ 'react/jsx-no-comment-textnodes'?: Linter.RuleEntry<[]>
1161
+ /**
1162
+ * Disallows JSX context provider values from taking values that will cause needless rerenders
1163
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-constructed-context-values.md
1164
+ */
1165
+ 'react/jsx-no-constructed-context-values'?: Linter.RuleEntry<[]>
1166
+ /**
1167
+ * Disallow duplicate properties in JSX
1168
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-duplicate-props.md
1169
+ */
1170
+ 'react/jsx-no-duplicate-props'?: Linter.RuleEntry<ReactJsxNoDuplicateProps>
1171
+ /**
1172
+ * Disallow problematic leaked values from being rendered
1173
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-leaked-render.md
1174
+ */
1175
+ 'react/jsx-no-leaked-render'?: Linter.RuleEntry<ReactJsxNoLeakedRender>
1176
+ /**
1177
+ * Disallow usage of string literals in JSX
1178
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-literals.md
1179
+ */
1180
+ 'react/jsx-no-literals'?: Linter.RuleEntry<ReactJsxNoLiterals>
1181
+ /**
1182
+ * Disallow usage of `javascript:` URLs
1183
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-script-url.md
1184
+ */
1185
+ 'react/jsx-no-script-url'?: Linter.RuleEntry<ReactJsxNoScriptUrl>
1186
+ /**
1187
+ * Disallow `target="_blank"` attribute without `rel="noreferrer"`
1188
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-target-blank.md
1189
+ */
1190
+ 'react/jsx-no-target-blank'?: Linter.RuleEntry<ReactJsxNoTargetBlank>
1191
+ /**
1192
+ * Disallow undeclared variables in JSX
1193
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-undef.md
1194
+ */
1195
+ 'react/jsx-no-undef'?: Linter.RuleEntry<ReactJsxNoUndef>
1196
+ /**
1197
+ * Disallow unnecessary fragments
1198
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-no-useless-fragment.md
1199
+ */
1200
+ 'react/jsx-no-useless-fragment'?: Linter.RuleEntry<ReactJsxNoUselessFragment>
1201
+ /**
1202
+ * Require one JSX element per line
1203
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-one-expression-per-line.md
1204
+ */
1205
+ 'react/jsx-one-expression-per-line'?: Linter.RuleEntry<ReactJsxOneExpressionPerLine>
1206
+ /**
1207
+ * Enforce PascalCase for user-defined JSX components
1208
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-pascal-case.md
1209
+ */
1210
+ 'react/jsx-pascal-case'?: Linter.RuleEntry<ReactJsxPascalCase>
1211
+ /**
1212
+ * Disallow multiple spaces between inline JSX props
1213
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-multi-spaces.md
1214
+ */
1215
+ 'react/jsx-props-no-multi-spaces'?: Linter.RuleEntry<[]>
1216
+ /**
1217
+ * Disallow JSX prop spreading
1218
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-props-no-spreading.md
1219
+ */
1220
+ 'react/jsx-props-no-spreading'?: Linter.RuleEntry<ReactJsxPropsNoSpreading>
1221
+ /**
1222
+ * Enforce defaultProps declarations alphabetical sorting
1223
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-default-props.md
1224
+ * @deprecated
1225
+ */
1226
+ 'react/jsx-sort-default-props'?: Linter.RuleEntry<ReactJsxSortDefaultProps>
1227
+ /**
1228
+ * Enforce props alphabetical sorting
1229
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-sort-props.md
1230
+ */
1231
+ 'react/jsx-sort-props'?: Linter.RuleEntry<ReactJsxSortProps>
1232
+ /**
1233
+ * Enforce spacing before closing bracket in JSX
1234
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-space-before-closing.md
1235
+ * @deprecated
1236
+ */
1237
+ 'react/jsx-space-before-closing'?: Linter.RuleEntry<ReactJsxSpaceBeforeClosing>
1238
+ /**
1239
+ * Enforce whitespace in and around the JSX opening and closing brackets
1240
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-tag-spacing.md
1241
+ */
1242
+ 'react/jsx-tag-spacing'?: Linter.RuleEntry<ReactJsxTagSpacing>
1243
+ /**
1244
+ * Disallow React to be incorrectly marked as unused
1245
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-uses-react.md
1246
+ */
1247
+ 'react/jsx-uses-react'?: Linter.RuleEntry<[]>
1248
+ /**
1249
+ * Disallow variables used in JSX to be incorrectly marked as unused
1250
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-uses-vars.md
1251
+ */
1252
+ 'react/jsx-uses-vars'?: Linter.RuleEntry<[]>
1253
+ /**
1254
+ * Disallow missing parentheses around multiline JSX
1255
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/jsx-wrap-multilines.md
1256
+ */
1257
+ 'react/jsx-wrap-multilines'?: Linter.RuleEntry<ReactJsxWrapMultilines>
1258
+ /**
1259
+ * Disallow when this.state is accessed within setState
1260
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-access-state-in-setstate.md
1261
+ */
1262
+ 'react/no-access-state-in-setstate'?: Linter.RuleEntry<[]>
1263
+ /**
1264
+ * Disallow adjacent inline elements not separated by whitespace.
1265
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-adjacent-inline-elements.md
1266
+ */
1267
+ 'react/no-adjacent-inline-elements'?: Linter.RuleEntry<[]>
1268
+ /**
1269
+ * Disallow usage of Array index in keys
1270
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-array-index-key.md
1271
+ */
1272
+ 'react/no-array-index-key'?: Linter.RuleEntry<[]>
1273
+ /**
1274
+ * Lifecycle methods should be methods on the prototype, not class fields
1275
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-arrow-function-lifecycle.md
1276
+ */
1277
+ 'react/no-arrow-function-lifecycle'?: Linter.RuleEntry<[]>
1278
+ /**
1279
+ * Disallow passing of children as props
1280
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-children-prop.md
1281
+ */
1282
+ 'react/no-children-prop'?: Linter.RuleEntry<ReactNoChildrenProp>
1283
+ /**
1284
+ * Disallow usage of dangerous JSX properties
1285
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger.md
1286
+ */
1287
+ 'react/no-danger'?: Linter.RuleEntry<[]>
1288
+ /**
1289
+ * Disallow when a DOM element is using both children and dangerouslySetInnerHTML
1290
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-danger-with-children.md
1291
+ */
1292
+ 'react/no-danger-with-children'?: Linter.RuleEntry<[]>
1293
+ /**
1294
+ * Disallow usage of deprecated methods
1295
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-deprecated.md
1296
+ */
1297
+ 'react/no-deprecated'?: Linter.RuleEntry<[]>
1298
+ /**
1299
+ * Disallow usage of setState in componentDidMount
1300
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-did-mount-set-state.md
1301
+ */
1302
+ 'react/no-did-mount-set-state'?: Linter.RuleEntry<ReactNoDidMountSetState>
1303
+ /**
1304
+ * Disallow usage of setState in componentDidUpdate
1305
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-did-update-set-state.md
1306
+ */
1307
+ 'react/no-did-update-set-state'?: Linter.RuleEntry<ReactNoDidUpdateSetState>
1308
+ /**
1309
+ * Disallow direct mutation of this.state
1310
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-direct-mutation-state.md
1311
+ */
1312
+ 'react/no-direct-mutation-state'?: Linter.RuleEntry<[]>
1313
+ /**
1314
+ * Disallow usage of findDOMNode
1315
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-find-dom-node.md
1316
+ */
1317
+ 'react/no-find-dom-node'?: Linter.RuleEntry<[]>
1318
+ /**
1319
+ * Disallow usage of invalid attributes
1320
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-invalid-html-attribute.md
1321
+ */
1322
+ 'react/no-invalid-html-attribute'?: Linter.RuleEntry<ReactNoInvalidHtmlAttribute>
1323
+ /**
1324
+ * Disallow usage of isMounted
1325
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-is-mounted.md
1326
+ */
1327
+ 'react/no-is-mounted'?: Linter.RuleEntry<[]>
1328
+ /**
1329
+ * Disallow multiple component definition per file
1330
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-multi-comp.md
1331
+ */
1332
+ 'react/no-multi-comp'?: Linter.RuleEntry<ReactNoMultiComp>
1333
+ /**
1334
+ * Enforce that namespaces are not used in React elements
1335
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-namespace.md
1336
+ */
1337
+ 'react/no-namespace'?: Linter.RuleEntry<[]>
1338
+ /**
1339
+ * Disallow usage of referential-type variables as default param in functional component
1340
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-object-type-as-default-prop.md
1341
+ */
1342
+ 'react/no-object-type-as-default-prop'?: Linter.RuleEntry<[]>
1343
+ /**
1344
+ * Disallow usage of shouldComponentUpdate when extending React.PureComponent
1345
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-redundant-should-component-update.md
1346
+ */
1347
+ 'react/no-redundant-should-component-update'?: Linter.RuleEntry<[]>
1348
+ /**
1349
+ * Disallow usage of the return value of ReactDOM.render
1350
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-render-return-value.md
1351
+ */
1352
+ 'react/no-render-return-value'?: Linter.RuleEntry<[]>
1353
+ /**
1354
+ * Disallow usage of setState
1355
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-set-state.md
1356
+ */
1357
+ 'react/no-set-state'?: Linter.RuleEntry<[]>
1358
+ /**
1359
+ * Disallow using string references
1360
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-string-refs.md
1361
+ */
1362
+ 'react/no-string-refs'?: Linter.RuleEntry<ReactNoStringRefs>
1363
+ /**
1364
+ * Disallow `this` from being used in stateless functional components
1365
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-this-in-sfc.md
1366
+ */
1367
+ 'react/no-this-in-sfc'?: Linter.RuleEntry<[]>
1368
+ /**
1369
+ * Disallow common typos
1370
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-typos.md
1371
+ */
1372
+ 'react/no-typos'?: Linter.RuleEntry<[]>
1373
+ /**
1374
+ * Disallow unescaped HTML entities from appearing in markup
1375
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unescaped-entities.md
1376
+ */
1377
+ 'react/no-unescaped-entities'?: Linter.RuleEntry<ReactNoUnescapedEntities>
1378
+ /**
1379
+ * Disallow usage of unknown DOM property
1380
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unknown-property.md
1381
+ */
1382
+ 'react/no-unknown-property'?: Linter.RuleEntry<ReactNoUnknownProperty>
1383
+ /**
1384
+ * Disallow usage of unsafe lifecycle methods
1385
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unsafe.md
1386
+ */
1387
+ 'react/no-unsafe'?: Linter.RuleEntry<ReactNoUnsafe>
1388
+ /**
1389
+ * Disallow creating unstable components inside components
1390
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unstable-nested-components.md
1391
+ */
1392
+ 'react/no-unstable-nested-components'?: Linter.RuleEntry<ReactNoUnstableNestedComponents>
1393
+ /**
1394
+ * Disallow declaring unused methods of component class
1395
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-class-component-methods.md
1396
+ */
1397
+ 'react/no-unused-class-component-methods'?: Linter.RuleEntry<[]>
1398
+ /**
1399
+ * Disallow definitions of unused propTypes
1400
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-prop-types.md
1401
+ */
1402
+ 'react/no-unused-prop-types'?: Linter.RuleEntry<ReactNoUnusedPropTypes>
1403
+ /**
1404
+ * Disallow definitions of unused state
1405
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-unused-state.md
1406
+ */
1407
+ 'react/no-unused-state'?: Linter.RuleEntry<[]>
1408
+ /**
1409
+ * Disallow usage of setState in componentWillUpdate
1410
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/no-will-update-set-state.md
1411
+ */
1412
+ 'react/no-will-update-set-state'?: Linter.RuleEntry<ReactNoWillUpdateSetState>
1413
+ /**
1414
+ * Enforce ES5 or ES6 class for React Components
1415
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-es6-class.md
1416
+ */
1417
+ 'react/prefer-es6-class'?: Linter.RuleEntry<ReactPreferEs6Class>
1418
+ /**
1419
+ * Prefer exact proptype definitions
1420
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-exact-props.md
1421
+ */
1422
+ 'react/prefer-exact-props'?: Linter.RuleEntry<[]>
1423
+ /**
1424
+ * Enforce that props are read-only
1425
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-read-only-props.md
1426
+ */
1427
+ 'react/prefer-read-only-props'?: Linter.RuleEntry<[]>
1428
+ /**
1429
+ * Enforce stateless components to be written as a pure function
1430
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prefer-stateless-function.md
1431
+ */
1432
+ 'react/prefer-stateless-function'?: Linter.RuleEntry<ReactPreferStatelessFunction>
1433
+ /**
1434
+ * Disallow missing props validation in a React component definition
1435
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/prop-types.md
1436
+ */
1437
+ 'react/prop-types'?: Linter.RuleEntry<ReactPropTypes>
1438
+ /**
1439
+ * Disallow missing React when using JSX
1440
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/react-in-jsx-scope.md
1441
+ */
1442
+ 'react/react-in-jsx-scope'?: Linter.RuleEntry<[]>
1443
+ /**
1444
+ * Enforce a defaultProps definition for every prop that is not a required prop
1445
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-default-props.md
1446
+ */
1447
+ 'react/require-default-props'?: Linter.RuleEntry<ReactRequireDefaultProps>
1448
+ /**
1449
+ * Enforce React components to have a shouldComponentUpdate method
1450
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-optimization.md
1451
+ */
1452
+ 'react/require-optimization'?: Linter.RuleEntry<ReactRequireOptimization>
1453
+ /**
1454
+ * Enforce ES5 or ES6 class for returning value in render function
1455
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/require-render-return.md
1456
+ */
1457
+ 'react/require-render-return'?: Linter.RuleEntry<[]>
1458
+ /**
1459
+ * Disallow extra closing tags for components without children
1460
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/self-closing-comp.md
1461
+ */
1462
+ 'react/self-closing-comp'?: Linter.RuleEntry<ReactSelfClosingComp>
1463
+ /**
1464
+ * Enforce component methods order
1465
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-comp.md
1466
+ */
1467
+ 'react/sort-comp'?: Linter.RuleEntry<ReactSortComp>
1468
+ /**
1469
+ * Enforce defaultProps declarations alphabetical sorting
1470
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-default-props.md
1471
+ */
1472
+ 'react/sort-default-props'?: Linter.RuleEntry<ReactSortDefaultProps>
1473
+ /**
1474
+ * Enforce propTypes declarations alphabetical sorting
1475
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/sort-prop-types.md
1476
+ */
1477
+ 'react/sort-prop-types'?: Linter.RuleEntry<ReactSortPropTypes>
1478
+ /**
1479
+ * Enforce class component state initialization style
1480
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/state-in-constructor.md
1481
+ */
1482
+ 'react/state-in-constructor'?: Linter.RuleEntry<ReactStateInConstructor>
1483
+ /**
1484
+ * Enforces where React component static properties should be positioned.
1485
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/static-property-placement.md
1486
+ */
1487
+ 'react/static-property-placement'?: Linter.RuleEntry<ReactStaticPropertyPlacement>
1488
+ /**
1489
+ * Enforce style prop value is an object
1490
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/style-prop-object.md
1491
+ */
1492
+ 'react/style-prop-object'?: Linter.RuleEntry<ReactStylePropObject>
1493
+ /**
1494
+ * Disallow void DOM elements (e.g. `<img />`, `<br />`) from receiving children
1495
+ * @see https://github.com/jsx-eslint/eslint-plugin-react/tree/master/docs/rules/void-dom-elements-no-children.md
1496
+ */
1497
+ 'react/void-dom-elements-no-children'?: Linter.RuleEntry<[]>
1498
+ /**
1499
+ * Validates that TypeScript documentation comments conform to the TSDoc standard
1500
+ * @see https://tsdoc.org/pages/packages/eslint-plugin-tsdoc
1501
+ */
1502
+ 'tsdoc/syntax'?: Linter.RuleEntry<[]>
783
1503
  /**
784
1504
  * Improve regexes by making them shorter, consistent, and safer.
785
1505
  * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v54.0.0/docs/rules/better-regex.md
@@ -3003,6 +3723,438 @@ type TypescriptEslintUnifiedSignatures = []|[{
3003
3723
 
3004
3724
  ignoreDifferentlyNamedParameters?: boolean
3005
3725
  }]
3726
+ // ----- react-hooks/exhaustive-deps -----
3727
+ type ReactHooksExhaustiveDeps = []|[{
3728
+ additionalHooks?: string
3729
+ enableDangerousAutofixThisMayCauseInfiniteLoops?: boolean
3730
+ }]
3731
+ // ----- react/boolean-prop-naming -----
3732
+ type ReactBooleanPropNaming = []|[{
3733
+
3734
+ propTypeNames?: [string, ...(string)[]]
3735
+ rule?: string
3736
+ message?: string
3737
+ validateNested?: boolean
3738
+ }]
3739
+ // ----- react/button-has-type -----
3740
+ type ReactButtonHasType = []|[{
3741
+ button?: boolean
3742
+ submit?: boolean
3743
+ reset?: boolean
3744
+ }]
3745
+ // ----- react/checked-requires-onchange-or-readonly -----
3746
+ type ReactCheckedRequiresOnchangeOrReadonly = []|[{
3747
+ ignoreMissingProperties?: boolean
3748
+ ignoreExclusiveCheckedAttribute?: boolean
3749
+ }]
3750
+ // ----- react/default-props-match-prop-types -----
3751
+ type ReactDefaultPropsMatchPropTypes = []|[{
3752
+ allowRequiredDefaults?: boolean
3753
+ }]
3754
+ // ----- react/destructuring-assignment -----
3755
+ type ReactDestructuringAssignment = []|[("always" | "never")]|[("always" | "never"), {
3756
+ ignoreClassFields?: boolean
3757
+ destructureInSignature?: ("always" | "ignore")
3758
+ }]
3759
+ // ----- react/display-name -----
3760
+ type ReactDisplayName = []|[{
3761
+ ignoreTranspilerName?: boolean
3762
+ checkContextObjects?: boolean
3763
+ }]
3764
+ // ----- react/forbid-component-props -----
3765
+ type ReactForbidComponentProps = []|[{
3766
+ forbid?: (string | {
3767
+ propName?: string
3768
+ allowedFor?: string[]
3769
+ message?: string
3770
+ } | {
3771
+ propName?: string
3772
+
3773
+ disallowedFor: [string, ...(string)[]]
3774
+ message?: string
3775
+ })[]
3776
+ [k: string]: unknown | undefined
3777
+ }]
3778
+ // ----- react/forbid-dom-props -----
3779
+ type ReactForbidDomProps = []|[{
3780
+ forbid?: (string | {
3781
+ propName?: string
3782
+ disallowedFor?: string[]
3783
+ message?: string
3784
+ [k: string]: unknown | undefined
3785
+ })[]
3786
+ }]
3787
+ // ----- react/forbid-elements -----
3788
+ type ReactForbidElements = []|[{
3789
+ forbid?: (string | {
3790
+ element: string
3791
+ message?: string
3792
+ })[]
3793
+ }]
3794
+ // ----- react/forbid-foreign-prop-types -----
3795
+ type ReactForbidForeignPropTypes = []|[{
3796
+ allowInPropTypes?: boolean
3797
+ }]
3798
+ // ----- react/forbid-prop-types -----
3799
+ type ReactForbidPropTypes = []|[{
3800
+ forbid?: string[]
3801
+ checkContextTypes?: boolean
3802
+ checkChildContextTypes?: boolean
3803
+ [k: string]: unknown | undefined
3804
+ }]
3805
+ // ----- react/function-component-definition -----
3806
+ type ReactFunctionComponentDefinition = []|[{
3807
+ namedComponents?: (("function-declaration" | "arrow-function" | "function-expression") | ("function-declaration" | "arrow-function" | "function-expression")[])
3808
+ unnamedComponents?: (("arrow-function" | "function-expression") | ("arrow-function" | "function-expression")[])
3809
+ [k: string]: unknown | undefined
3810
+ }]
3811
+ // ----- react/hook-use-state -----
3812
+ type ReactHookUseState = []|[{
3813
+ allowDestructuredState?: boolean
3814
+ }]
3815
+ // ----- react/jsx-boolean-value -----
3816
+ type ReactJsxBooleanValue = ([]|[("always" | "never")] | []|["always"]|["always", {
3817
+ never?: string[]
3818
+ assumeUndefinedIsFalse?: boolean
3819
+ }] | []|["never"]|["never", {
3820
+ always?: string[]
3821
+ assumeUndefinedIsFalse?: boolean
3822
+ }])
3823
+ // ----- react/jsx-closing-bracket-location -----
3824
+ type ReactJsxClosingBracketLocation = []|[(("after-props" | "props-aligned" | "tag-aligned" | "line-aligned") | {
3825
+ location?: ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned")
3826
+ } | {
3827
+ nonEmpty?: ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned" | false)
3828
+ selfClosing?: ("after-props" | "props-aligned" | "tag-aligned" | "line-aligned" | false)
3829
+ })]
3830
+ // ----- react/jsx-curly-brace-presence -----
3831
+ type ReactJsxCurlyBracePresence = []|[({
3832
+ props?: ("always" | "never" | "ignore")
3833
+ children?: ("always" | "never" | "ignore")
3834
+ propElementValues?: ("always" | "never" | "ignore")
3835
+ } | ("always" | "never" | "ignore"))]
3836
+ // ----- react/jsx-curly-newline -----
3837
+ type ReactJsxCurlyNewline = []|[(("consistent" | "never") | {
3838
+ singleline?: ("consistent" | "require" | "forbid")
3839
+ multiline?: ("consistent" | "require" | "forbid")
3840
+ })]
3841
+ // ----- react/jsx-curly-spacing -----
3842
+ type ReactJsxCurlySpacing = []|[((_ReactJsxCurlySpacing_BasicConfig & {
3843
+ attributes?: _ReactJsxCurlySpacingBasicConfigOrBoolean
3844
+ children?: _ReactJsxCurlySpacingBasicConfigOrBoolean
3845
+ [k: string]: unknown | undefined
3846
+ }) | ("always" | "never"))]|[((_ReactJsxCurlySpacing_BasicConfig & {
3847
+ attributes?: _ReactJsxCurlySpacingBasicConfigOrBoolean
3848
+ children?: _ReactJsxCurlySpacingBasicConfigOrBoolean
3849
+ [k: string]: unknown | undefined
3850
+ }) | ("always" | "never")), {
3851
+ allowMultiline?: boolean
3852
+ spacing?: {
3853
+ objectLiterals?: ("always" | "never")
3854
+ [k: string]: unknown | undefined
3855
+ }
3856
+ }]
3857
+ type _ReactJsxCurlySpacingBasicConfigOrBoolean = (_ReactJsxCurlySpacing_BasicConfig | boolean)
3858
+ interface _ReactJsxCurlySpacing_BasicConfig {
3859
+ when?: ("always" | "never")
3860
+ allowMultiline?: boolean
3861
+ spacing?: {
3862
+ objectLiterals?: ("always" | "never")
3863
+ [k: string]: unknown | undefined
3864
+ }
3865
+ [k: string]: unknown | undefined
3866
+ }
3867
+ // ----- react/jsx-equals-spacing -----
3868
+ type ReactJsxEqualsSpacing = []|[("always" | "never")]
3869
+ // ----- react/jsx-filename-extension -----
3870
+ type ReactJsxFilenameExtension = []|[{
3871
+ allow?: ("always" | "as-needed")
3872
+ extensions?: string[]
3873
+ ignoreFilesWithoutCode?: boolean
3874
+ }]
3875
+ // ----- react/jsx-first-prop-new-line -----
3876
+ type ReactJsxFirstPropNewLine = []|[("always" | "never" | "multiline" | "multiline-multiprop" | "multiprop")]
3877
+ // ----- react/jsx-fragments -----
3878
+ type ReactJsxFragments = []|[("syntax" | "element")]
3879
+ // ----- react/jsx-handler-names -----
3880
+ type ReactJsxHandlerNames = []|[({
3881
+ eventHandlerPrefix?: string
3882
+ eventHandlerPropPrefix?: string
3883
+ checkLocalVariables?: boolean
3884
+ checkInlineFunction?: boolean
3885
+ } | {
3886
+ eventHandlerPrefix?: string
3887
+ eventHandlerPropPrefix?: false
3888
+ checkLocalVariables?: boolean
3889
+ checkInlineFunction?: boolean
3890
+ } | {
3891
+ eventHandlerPrefix?: false
3892
+ eventHandlerPropPrefix?: string
3893
+ checkLocalVariables?: boolean
3894
+ checkInlineFunction?: boolean
3895
+ } | {
3896
+ checkLocalVariables?: boolean
3897
+ } | {
3898
+ checkInlineFunction?: boolean
3899
+ })]
3900
+ // ----- react/jsx-indent -----
3901
+ type ReactJsxIndent = []|[("tab" | number)]|[("tab" | number), {
3902
+ checkAttributes?: boolean
3903
+ indentLogicalExpressions?: boolean
3904
+ }]
3905
+ // ----- react/jsx-indent-props -----
3906
+ type ReactJsxIndentProps = []|[(("tab" | "first") | number | {
3907
+ indentMode?: (("tab" | "first") | number)
3908
+ ignoreTernaryOperator?: boolean
3909
+ [k: string]: unknown | undefined
3910
+ })]
3911
+ // ----- react/jsx-key -----
3912
+ type ReactJsxKey = []|[{
3913
+ checkFragmentShorthand?: boolean
3914
+ checkKeyMustBeforeSpread?: boolean
3915
+ warnOnDuplicates?: boolean
3916
+ }]
3917
+ // ----- react/jsx-max-depth -----
3918
+ type ReactJsxMaxDepth = []|[{
3919
+ max?: number
3920
+ }]
3921
+ // ----- react/jsx-max-props-per-line -----
3922
+ type ReactJsxMaxPropsPerLine = []|[({
3923
+ maximum?: {
3924
+ single?: number
3925
+ multi?: number
3926
+ [k: string]: unknown | undefined
3927
+ }
3928
+ } | {
3929
+ maximum?: number
3930
+ when?: ("always" | "multiline")
3931
+ })]
3932
+ // ----- react/jsx-newline -----
3933
+ type ReactJsxNewline = []|[{
3934
+ prevent?: boolean
3935
+ allowMultilines?: boolean
3936
+ }]
3937
+ // ----- react/jsx-no-bind -----
3938
+ type ReactJsxNoBind = []|[{
3939
+ allowArrowFunctions?: boolean
3940
+ allowBind?: boolean
3941
+ allowFunctions?: boolean
3942
+ ignoreRefs?: boolean
3943
+ ignoreDOMComponents?: boolean
3944
+ }]
3945
+ // ----- react/jsx-no-duplicate-props -----
3946
+ type ReactJsxNoDuplicateProps = []|[{
3947
+ ignoreCase?: boolean
3948
+ }]
3949
+ // ----- react/jsx-no-leaked-render -----
3950
+ type ReactJsxNoLeakedRender = []|[{
3951
+ validStrategies?: ("ternary" | "coerce")[]
3952
+ }]
3953
+ // ----- react/jsx-no-literals -----
3954
+ type ReactJsxNoLiterals = []|[{
3955
+ noStrings?: boolean
3956
+ allowedStrings?: string[]
3957
+ ignoreProps?: boolean
3958
+ noAttributeStrings?: boolean
3959
+ }]
3960
+ // ----- react/jsx-no-script-url -----
3961
+ type ReactJsxNoScriptUrl = ([]|[{
3962
+ name: string
3963
+ props: string[]
3964
+ }[]]|[{
3965
+ name: string
3966
+ props: string[]
3967
+ }[], {
3968
+ includeFromSettings?: boolean
3969
+ [k: string]: unknown | undefined
3970
+ }] | []|[{
3971
+ includeFromSettings?: boolean
3972
+ [k: string]: unknown | undefined
3973
+ }])
3974
+ // ----- react/jsx-no-target-blank -----
3975
+ type ReactJsxNoTargetBlank = []|[{
3976
+ allowReferrer?: boolean
3977
+ enforceDynamicLinks?: ("always" | "never")
3978
+ warnOnSpreadAttributes?: boolean
3979
+ links?: boolean
3980
+ forms?: boolean
3981
+ }]
3982
+ // ----- react/jsx-no-undef -----
3983
+ type ReactJsxNoUndef = []|[{
3984
+ allowGlobals?: boolean
3985
+ }]
3986
+ // ----- react/jsx-no-useless-fragment -----
3987
+ type ReactJsxNoUselessFragment = []|[{
3988
+ allowExpressions?: boolean
3989
+ [k: string]: unknown | undefined
3990
+ }]
3991
+ // ----- react/jsx-one-expression-per-line -----
3992
+ type ReactJsxOneExpressionPerLine = []|[{
3993
+ allow?: ("none" | "literal" | "single-child" | "non-jsx")
3994
+ }]
3995
+ // ----- react/jsx-pascal-case -----
3996
+ type ReactJsxPascalCase = []|[{
3997
+ allowAllCaps?: boolean
3998
+ allowLeadingUnderscore?: boolean
3999
+ allowNamespace?: boolean
4000
+
4001
+ ignore?: []|[string]
4002
+ }]
4003
+ // ----- react/jsx-props-no-spreading -----
4004
+ type ReactJsxPropsNoSpreading = []|[({
4005
+ html?: ("enforce" | "ignore")
4006
+ custom?: ("enforce" | "ignore")
4007
+ exceptions?: string[]
4008
+ [k: string]: unknown | undefined
4009
+ } & {
4010
+ [k: string]: unknown | undefined
4011
+ })]
4012
+ // ----- react/jsx-sort-default-props -----
4013
+ type ReactJsxSortDefaultProps = []|[{
4014
+ ignoreCase?: boolean
4015
+ }]
4016
+ // ----- react/jsx-sort-props -----
4017
+ type ReactJsxSortProps = []|[{
4018
+ callbacksLast?: boolean
4019
+ shorthandFirst?: boolean
4020
+ shorthandLast?: boolean
4021
+ multiline?: ("ignore" | "first" | "last")
4022
+ ignoreCase?: boolean
4023
+ noSortAlphabetically?: boolean
4024
+ reservedFirst?: (unknown[] | boolean)
4025
+ locale?: string
4026
+ }]
4027
+ // ----- react/jsx-space-before-closing -----
4028
+ type ReactJsxSpaceBeforeClosing = []|[("always" | "never")]
4029
+ // ----- react/jsx-tag-spacing -----
4030
+ type ReactJsxTagSpacing = []|[{
4031
+ closingSlash?: ("always" | "never" | "allow")
4032
+ beforeSelfClosing?: ("always" | "proportional-always" | "never" | "allow")
4033
+ afterOpening?: ("always" | "allow-multiline" | "never" | "allow")
4034
+ beforeClosing?: ("always" | "proportional-always" | "never" | "allow")
4035
+ }]
4036
+ // ----- react/jsx-wrap-multilines -----
4037
+ type ReactJsxWrapMultilines = []|[{
4038
+ declaration?: (true | false | "ignore" | "parens" | "parens-new-line" | "never")
4039
+ assignment?: (true | false | "ignore" | "parens" | "parens-new-line" | "never")
4040
+ return?: (true | false | "ignore" | "parens" | "parens-new-line" | "never")
4041
+ arrow?: (true | false | "ignore" | "parens" | "parens-new-line" | "never")
4042
+ condition?: (true | false | "ignore" | "parens" | "parens-new-line" | "never")
4043
+ logical?: (true | false | "ignore" | "parens" | "parens-new-line" | "never")
4044
+ prop?: (true | false | "ignore" | "parens" | "parens-new-line" | "never")
4045
+ }]
4046
+ // ----- react/no-children-prop -----
4047
+ type ReactNoChildrenProp = []|[{
4048
+ allowFunctions?: boolean
4049
+ }]
4050
+ // ----- react/no-did-mount-set-state -----
4051
+ type ReactNoDidMountSetState = []|["disallow-in-func"]
4052
+ // ----- react/no-did-update-set-state -----
4053
+ type ReactNoDidUpdateSetState = []|["disallow-in-func"]
4054
+ // ----- react/no-invalid-html-attribute -----
4055
+ type ReactNoInvalidHtmlAttribute = []|[("rel")[]]
4056
+ // ----- react/no-multi-comp -----
4057
+ type ReactNoMultiComp = []|[{
4058
+ ignoreStateless?: boolean
4059
+ }]
4060
+ // ----- react/no-string-refs -----
4061
+ type ReactNoStringRefs = []|[{
4062
+ noTemplateLiterals?: boolean
4063
+ }]
4064
+ // ----- react/no-unescaped-entities -----
4065
+ type ReactNoUnescapedEntities = []|[{
4066
+ forbid?: (string | {
4067
+ char?: string
4068
+ alternatives?: string[]
4069
+ [k: string]: unknown | undefined
4070
+ })[]
4071
+ }]
4072
+ // ----- react/no-unknown-property -----
4073
+ type ReactNoUnknownProperty = []|[{
4074
+ ignore?: string[]
4075
+ requireDataLowercase?: boolean
4076
+ }]
4077
+ // ----- react/no-unsafe -----
4078
+ type ReactNoUnsafe = []|[{
4079
+ checkAliases?: boolean
4080
+ }]
4081
+ // ----- react/no-unstable-nested-components -----
4082
+ type ReactNoUnstableNestedComponents = []|[{
4083
+ customValidators?: string[]
4084
+ allowAsProps?: boolean
4085
+ }]
4086
+ // ----- react/no-unused-prop-types -----
4087
+ type ReactNoUnusedPropTypes = []|[{
4088
+ ignore?: string[]
4089
+ customValidators?: string[]
4090
+ skipShapeProps?: boolean
4091
+ }]
4092
+ // ----- react/no-will-update-set-state -----
4093
+ type ReactNoWillUpdateSetState = []|["disallow-in-func"]
4094
+ // ----- react/prefer-es6-class -----
4095
+ type ReactPreferEs6Class = []|[("always" | "never")]
4096
+ // ----- react/prefer-stateless-function -----
4097
+ type ReactPreferStatelessFunction = []|[{
4098
+ ignorePureComponents?: boolean
4099
+ }]
4100
+ // ----- react/prop-types -----
4101
+ type ReactPropTypes = []|[{
4102
+ ignore?: string[]
4103
+ customValidators?: string[]
4104
+ skipUndeclared?: boolean
4105
+ }]
4106
+ // ----- react/require-default-props -----
4107
+ type ReactRequireDefaultProps = []|[{
4108
+ forbidDefaultForRequired?: boolean
4109
+ classes?: ("defaultProps" | "ignore")
4110
+ functions?: ("defaultArguments" | "defaultProps" | "ignore")
4111
+ ignoreFunctionalComponents?: boolean
4112
+ }]
4113
+ // ----- react/require-optimization -----
4114
+ type ReactRequireOptimization = []|[{
4115
+ allowDecorators?: string[]
4116
+ }]
4117
+ // ----- react/self-closing-comp -----
4118
+ type ReactSelfClosingComp = []|[{
4119
+ component?: boolean
4120
+ html?: boolean
4121
+ }]
4122
+ // ----- react/sort-comp -----
4123
+ type ReactSortComp = []|[{
4124
+ order?: string[]
4125
+ groups?: {
4126
+ [k: string]: string[]
4127
+ }
4128
+ }]
4129
+ // ----- react/sort-default-props -----
4130
+ type ReactSortDefaultProps = []|[{
4131
+ ignoreCase?: boolean
4132
+ }]
4133
+ // ----- react/sort-prop-types -----
4134
+ type ReactSortPropTypes = []|[{
4135
+ requiredFirst?: boolean
4136
+ callbacksLast?: boolean
4137
+ ignoreCase?: boolean
4138
+ noSortAlphabetically?: boolean
4139
+ sortShapeProp?: boolean
4140
+ checkTypes?: boolean
4141
+ }]
4142
+ // ----- react/state-in-constructor -----
4143
+ type ReactStateInConstructor = []|[("always" | "never")]
4144
+ // ----- react/static-property-placement -----
4145
+ type ReactStaticPropertyPlacement = []|[("static public field" | "static getter" | "property assignment")]|[("static public field" | "static getter" | "property assignment"), {
4146
+ propTypes?: ("static public field" | "static getter" | "property assignment")
4147
+ defaultProps?: ("static public field" | "static getter" | "property assignment")
4148
+ childContextTypes?: ("static public field" | "static getter" | "property assignment")
4149
+ contextTypes?: ("static public field" | "static getter" | "property assignment")
4150
+ contextType?: ("static public field" | "static getter" | "property assignment")
4151
+ displayName?: ("static public field" | "static getter" | "property assignment")
4152
+ }]
4153
+ // ----- react/style-prop-object -----
4154
+ type ReactStylePropObject = []|[{
4155
+ allow?: string[]
4156
+ [k: string]: unknown | undefined
4157
+ }]
3006
4158
  // ----- unicorn/better-regex -----
3007
4159
  type UnicornBetterRegex = []|[{
3008
4160
  sortCharacterClasses?: boolean