@storm-software/eslint 0.124.0 → 0.124.2

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.
@@ -8,7 +8,7 @@ import {
8
8
  // src/utils/get-file-banner.ts
9
9
  var getFileBanner = /* @__PURE__ */ __name((name = "") => {
10
10
  if (!name) {
11
- name = process.env.STORM_NAMESPACE || "";
11
+ name = process.env.STORM_NAME || "";
12
12
  }
13
13
  let padding = " ";
14
14
  for (let i = 0; i < name.length + 2 && padding.length > 4; i++) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getFileBanner
3
- } from "./chunk-K6KBWFPU.js";
3
+ } from "./chunk-J2PN7K74.js";
4
4
  import {
5
5
  GLOB_SRC
6
6
  } from "./chunk-X3L37QNE.js";
@@ -45,9 +45,9 @@ __name(getLeadingComments, "getLeadingComments");
45
45
  function genCommentBody(commentType, textArray, eol, numNewlines) {
46
46
  const eols = eol.repeat(numNewlines);
47
47
  if (commentType === "block") {
48
- return "/*" + textArray.join(eol) + "*/" + eols;
48
+ return "/* " + textArray.join(eol) + " */" + eols;
49
49
  } else {
50
- return "//" + textArray.join(eol + "//") + eols;
50
+ return "// " + textArray.join(eol + " //") + eols;
51
51
  }
52
52
  }
53
53
  __name(genCommentBody, "genCommentBody");
package/dist/preset.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Linter } from 'eslint';
2
2
  import { FlatConfigComposer } from 'eslint-flat-config-utils';
3
- import { O as OptionsConfig, R as RuleOptions, T as TypedFlatConfigItem, A as Awaitable, C as ConfigNames } from './types-CHy285SF.js';
3
+ import { O as OptionsConfig, R as RuleOptions, T as TypedFlatConfigItem, A as Awaitable, C as ConfigNames } from './types-Cnmfgj1g.js';
4
4
  import '@nx/eslint-plugin/src/utils/runtime-lint-utils';
5
5
  import '@stylistic/eslint-plugin';
6
6
  import '@typescript-eslint/parser';
package/dist/preset.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  banner_plugin_default
3
- } from "./chunk-W6QEP5VE.js";
4
- import "./chunk-K6KBWFPU.js";
3
+ } from "./chunk-LFZMLUCG.js";
4
+ import "./chunk-J2PN7K74.js";
5
5
  import {
6
6
  GLOB_ASTRO,
7
7
  GLOB_ASTRO_TS,
@@ -190,7 +190,16 @@ async function stylistic(options = {}) {
190
190
  },
191
191
  rules: {
192
192
  ...config.rules,
193
- "lines-around-comment": "off",
193
+ "style/lines-around-comment": "off",
194
+ // "style/padding-line-between-statements": [
195
+ // "error",
196
+ // { blankLine: "always", prev: ["const", "let", "var"], next: "*" },
197
+ // {
198
+ // blankLine: "any",
199
+ // prev: ["const", "let", "var"],
200
+ // next: ["const", "let", "var"]
201
+ // }
202
+ // ],
194
203
  ...overrides
195
204
  }
196
205
  }
@@ -474,7 +483,7 @@ var compat = new FlatCompat({
474
483
  baseDirectory: import.meta.dirname
475
484
  });
476
485
  async function graphql(options = {}) {
477
- const { relay = true, operations = true, schema = true } = options;
486
+ const { relay = true, operations = true, schema = true, overrides = {} } = options;
478
487
  await ensurePackages([
479
488
  "@graphql-eslint/eslint-plugin",
480
489
  "eslint-plugin-relay"
@@ -664,7 +673,8 @@ async function graphql(options = {}) {
664
673
  "@graphql-eslint/value-literals-of-correct-type": "error",
665
674
  "@graphql-eslint/variables-are-input-types": "error",
666
675
  "@graphql-eslint/variables-in-allowed-position": "error"
667
- } : {}
676
+ } : {},
677
+ ...overrides
668
678
  }
669
679
  },
670
680
  ...relay ? compat.config({
@@ -735,7 +745,7 @@ async function imports(options = {}) {
735
745
  "error",
736
746
  "prefer-top-level"
737
747
  ],
738
- "import/first": "error",
748
+ "import/first": "off",
739
749
  "import/no-duplicates": "error",
740
750
  "import/no-mutable-exports": "error",
741
751
  "import/no-named-default": "error",
@@ -2062,8 +2072,15 @@ __name(jsonc, "jsonc");
2062
2072
 
2063
2073
  // src/configs/jsx.ts
2064
2074
  async function jsx() {
2075
+ await ensurePackages([
2076
+ "eslint-plugin-jsx-a11y"
2077
+ ]);
2078
+ const [pluginJsxA11y] = await Promise.all([
2079
+ interopDefault(import("eslint-plugin-jsx-a11y"))
2080
+ ]);
2065
2081
  return [
2066
2082
  {
2083
+ name: "storm/jsx/setup",
2067
2084
  files: [
2068
2085
  GLOB_JSX,
2069
2086
  GLOB_TSX
@@ -2075,7 +2092,200 @@ async function jsx() {
2075
2092
  }
2076
2093
  }
2077
2094
  },
2078
- name: "antfu/jsx/setup"
2095
+ plugins: {
2096
+ "jsx-a11y": pluginJsxA11y
2097
+ }
2098
+ },
2099
+ {
2100
+ name: "storm/jsx/rules",
2101
+ rules: {
2102
+ "jsx-a11y/alt-text": "error",
2103
+ "jsx-a11y/anchor-ambiguous-text": "off",
2104
+ "jsx-a11y/anchor-has-content": "error",
2105
+ "jsx-a11y/anchor-is-valid": "error",
2106
+ "jsx-a11y/aria-activedescendant-has-tabindex": "error",
2107
+ "jsx-a11y/aria-props": "error",
2108
+ "jsx-a11y/aria-proptypes": "error",
2109
+ "jsx-a11y/aria-role": "error",
2110
+ "jsx-a11y/aria-unsupported-elements": "error",
2111
+ "jsx-a11y/autocomplete-valid": "error",
2112
+ "jsx-a11y/click-events-have-key-events": "error",
2113
+ "jsx-a11y/control-has-associated-label": [
2114
+ "off",
2115
+ {
2116
+ ignoreElements: [
2117
+ "audio",
2118
+ "canvas",
2119
+ "embed",
2120
+ "input",
2121
+ "textarea",
2122
+ "tr",
2123
+ "video"
2124
+ ],
2125
+ ignoreRoles: [
2126
+ "grid",
2127
+ "listbox",
2128
+ "menu",
2129
+ "menubar",
2130
+ "radiogroup",
2131
+ "row",
2132
+ "tablist",
2133
+ "toolbar",
2134
+ "tree",
2135
+ "treegrid"
2136
+ ],
2137
+ includeRoles: [
2138
+ "alert",
2139
+ "dialog"
2140
+ ]
2141
+ }
2142
+ ],
2143
+ "jsx-a11y/heading-has-content": "error",
2144
+ "jsx-a11y/html-has-lang": "error",
2145
+ "jsx-a11y/iframe-has-title": "error",
2146
+ "jsx-a11y/img-redundant-alt": "error",
2147
+ "jsx-a11y/interactive-supports-focus": [
2148
+ "error",
2149
+ {
2150
+ tabbable: [
2151
+ "button",
2152
+ "checkbox",
2153
+ "link",
2154
+ "searchbox",
2155
+ "spinbutton",
2156
+ "switch",
2157
+ "textbox"
2158
+ ]
2159
+ }
2160
+ ],
2161
+ "jsx-a11y/label-has-associated-control": "error",
2162
+ "jsx-a11y/label-has-for": "off",
2163
+ "jsx-a11y/media-has-caption": "error",
2164
+ "jsx-a11y/mouse-events-have-key-events": "error",
2165
+ "jsx-a11y/no-access-key": "error",
2166
+ "jsx-a11y/no-autofocus": "error",
2167
+ "jsx-a11y/no-distracting-elements": "error",
2168
+ "jsx-a11y/no-interactive-element-to-noninteractive-role": [
2169
+ "error",
2170
+ {
2171
+ tr: [
2172
+ "none",
2173
+ "presentation"
2174
+ ],
2175
+ canvas: [
2176
+ "img"
2177
+ ]
2178
+ }
2179
+ ],
2180
+ "jsx-a11y/no-noninteractive-element-interactions": [
2181
+ "error",
2182
+ {
2183
+ handlers: [
2184
+ "onClick",
2185
+ "onError",
2186
+ "onLoad",
2187
+ "onMouseDown",
2188
+ "onMouseUp",
2189
+ "onKeyPress",
2190
+ "onKeyDown",
2191
+ "onKeyUp"
2192
+ ],
2193
+ alert: [
2194
+ "onKeyUp",
2195
+ "onKeyDown",
2196
+ "onKeyPress"
2197
+ ],
2198
+ body: [
2199
+ "onError",
2200
+ "onLoad"
2201
+ ],
2202
+ dialog: [
2203
+ "onKeyUp",
2204
+ "onKeyDown",
2205
+ "onKeyPress"
2206
+ ],
2207
+ iframe: [
2208
+ "onError",
2209
+ "onLoad"
2210
+ ],
2211
+ img: [
2212
+ "onError",
2213
+ "onLoad"
2214
+ ]
2215
+ }
2216
+ ],
2217
+ "jsx-a11y/no-noninteractive-element-to-interactive-role": [
2218
+ "error",
2219
+ {
2220
+ ul: [
2221
+ "listbox",
2222
+ "menu",
2223
+ "menubar",
2224
+ "radiogroup",
2225
+ "tablist",
2226
+ "tree",
2227
+ "treegrid"
2228
+ ],
2229
+ ol: [
2230
+ "listbox",
2231
+ "menu",
2232
+ "menubar",
2233
+ "radiogroup",
2234
+ "tablist",
2235
+ "tree",
2236
+ "treegrid"
2237
+ ],
2238
+ li: [
2239
+ "menuitem",
2240
+ "menuitemradio",
2241
+ "menuitemcheckbox",
2242
+ "option",
2243
+ "row",
2244
+ "tab",
2245
+ "treeitem"
2246
+ ],
2247
+ table: [
2248
+ "grid"
2249
+ ],
2250
+ td: [
2251
+ "gridcell"
2252
+ ],
2253
+ fieldset: [
2254
+ "radiogroup",
2255
+ "presentation"
2256
+ ]
2257
+ }
2258
+ ],
2259
+ "jsx-a11y/no-noninteractive-tabindex": [
2260
+ "error",
2261
+ {
2262
+ tags: [],
2263
+ roles: [
2264
+ "tabpanel"
2265
+ ],
2266
+ allowExpressionValues: true
2267
+ }
2268
+ ],
2269
+ "jsx-a11y/no-redundant-roles": "error",
2270
+ "jsx-a11y/no-static-element-interactions": [
2271
+ "error",
2272
+ {
2273
+ allowExpressionValues: true,
2274
+ handlers: [
2275
+ "onClick",
2276
+ "onMouseDown",
2277
+ "onMouseUp",
2278
+ "onKeyPress",
2279
+ "onKeyDown",
2280
+ "onKeyUp"
2281
+ ]
2282
+ }
2283
+ ],
2284
+ "jsx-a11y/role-has-required-aria-props": "error",
2285
+ "jsx-a11y/role-supports-aria-props": "error",
2286
+ "jsx-a11y/scope": "error",
2287
+ "jsx-a11y/tabindex-no-positive": "error"
2288
+ }
2079
2289
  }
2080
2290
  ];
2081
2291
  }
@@ -2105,7 +2315,7 @@ async function markdown(options = {}) {
2105
2315
  // but not the markdown file itself. We use `eslint-merge-processors` to
2106
2316
  // add a pass-through processor for the markdown file itself.
2107
2317
  processor: mergeProcessors([
2108
- markdown1.processors.markdown,
2318
+ markdown1.processors?.markdown,
2109
2319
  processorPassThrough
2110
2320
  ])
2111
2321
  },
@@ -2174,7 +2384,7 @@ async function next(options = {}) {
2174
2384
  ]);
2175
2385
  return [
2176
2386
  ...compat2.config({
2177
- name: "storm/next",
2387
+ name: "storm/next/rules",
2178
2388
  extends: [
2179
2389
  "next"
2180
2390
  ],
@@ -3434,7 +3644,7 @@ __name(yaml, "yaml");
3434
3644
  import cspellConfig from "@cspell/eslint-plugin/recommended";
3435
3645
  import { findWorkspaceRoot, joinPaths } from "@storm-software/config-tools";
3436
3646
  async function cspell(options = {}) {
3437
- const { configFile = "./.vscode/cspell.json" } = options;
3647
+ const { configFile = "./.vscode/cspell.json", overrides = {} } = options;
3438
3648
  return [
3439
3649
  {
3440
3650
  name: "storm/cspell/rules",
@@ -3447,7 +3657,8 @@ async function cspell(options = {}) {
3447
3657
  configFile: joinPaths(findWorkspaceRoot(), configFile),
3448
3658
  autoFix: true
3449
3659
  }
3450
- ]
3660
+ ],
3661
+ ...overrides
3451
3662
  }
3452
3663
  }
3453
3664
  ];
@@ -1307,6 +1307,204 @@ interface RuleOptions {
1307
1307
  * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/vue-custom-block/no-parsing-error.html
1308
1308
  */
1309
1309
  'jsonc/vue-custom-block/no-parsing-error'?: Linter.RuleEntry<[]>
1310
+ /**
1311
+ * Enforce emojis are wrapped in `<span>` and provide screen reader access.
1312
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/accessible-emoji.md
1313
+ * @deprecated
1314
+ */
1315
+ 'jsx-a11y/accessible-emoji'?: Linter.RuleEntry<JsxA11YAccessibleEmoji>
1316
+ /**
1317
+ * Enforce all elements that require alternative text have meaningful information to relay back to end user.
1318
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/alt-text.md
1319
+ */
1320
+ 'jsx-a11y/alt-text'?: Linter.RuleEntry<JsxA11YAltText>
1321
+ /**
1322
+ * Enforce `<a>` text to not exactly match "click here", "here", "link", or "a link".
1323
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-ambiguous-text.md
1324
+ */
1325
+ 'jsx-a11y/anchor-ambiguous-text'?: Linter.RuleEntry<JsxA11YAnchorAmbiguousText>
1326
+ /**
1327
+ * Enforce all anchors to contain accessible content.
1328
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-has-content.md
1329
+ */
1330
+ 'jsx-a11y/anchor-has-content'?: Linter.RuleEntry<JsxA11YAnchorHasContent>
1331
+ /**
1332
+ * Enforce all anchors are valid, navigable elements.
1333
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-is-valid.md
1334
+ */
1335
+ 'jsx-a11y/anchor-is-valid'?: Linter.RuleEntry<JsxA11YAnchorIsValid>
1336
+ /**
1337
+ * Enforce elements with aria-activedescendant are tabbable.
1338
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-activedescendant-has-tabindex.md
1339
+ */
1340
+ 'jsx-a11y/aria-activedescendant-has-tabindex'?: Linter.RuleEntry<JsxA11YAriaActivedescendantHasTabindex>
1341
+ /**
1342
+ * Enforce all `aria-*` props are valid.
1343
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-props.md
1344
+ */
1345
+ 'jsx-a11y/aria-props'?: Linter.RuleEntry<JsxA11YAriaProps>
1346
+ /**
1347
+ * Enforce ARIA state and property values are valid.
1348
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-proptypes.md
1349
+ */
1350
+ 'jsx-a11y/aria-proptypes'?: Linter.RuleEntry<JsxA11YAriaProptypes>
1351
+ /**
1352
+ * Enforce that elements with ARIA roles must use a valid, non-abstract ARIA role.
1353
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-role.md
1354
+ */
1355
+ 'jsx-a11y/aria-role'?: Linter.RuleEntry<JsxA11YAriaRole>
1356
+ /**
1357
+ * Enforce that elements that do not support ARIA roles, states, and properties do not have those attributes.
1358
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-unsupported-elements.md
1359
+ */
1360
+ 'jsx-a11y/aria-unsupported-elements'?: Linter.RuleEntry<JsxA11YAriaUnsupportedElements>
1361
+ /**
1362
+ * Enforce that autocomplete attributes are used correctly.
1363
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/autocomplete-valid.md
1364
+ */
1365
+ 'jsx-a11y/autocomplete-valid'?: Linter.RuleEntry<JsxA11YAutocompleteValid>
1366
+ /**
1367
+ * Enforce a clickable non-interactive element has at least one keyboard event listener.
1368
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/click-events-have-key-events.md
1369
+ */
1370
+ 'jsx-a11y/click-events-have-key-events'?: Linter.RuleEntry<JsxA11YClickEventsHaveKeyEvents>
1371
+ /**
1372
+ * Enforce that a control (an interactive element) has a text label.
1373
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/control-has-associated-label.md
1374
+ */
1375
+ 'jsx-a11y/control-has-associated-label'?: Linter.RuleEntry<JsxA11YControlHasAssociatedLabel>
1376
+ /**
1377
+ * Enforce heading (`h1`, `h2`, etc) elements contain accessible content.
1378
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/heading-has-content.md
1379
+ */
1380
+ 'jsx-a11y/heading-has-content'?: Linter.RuleEntry<JsxA11YHeadingHasContent>
1381
+ /**
1382
+ * Enforce `<html>` element has `lang` prop.
1383
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/html-has-lang.md
1384
+ */
1385
+ 'jsx-a11y/html-has-lang'?: Linter.RuleEntry<JsxA11YHtmlHasLang>
1386
+ /**
1387
+ * Enforce iframe elements have a title attribute.
1388
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/iframe-has-title.md
1389
+ */
1390
+ 'jsx-a11y/iframe-has-title'?: Linter.RuleEntry<JsxA11YIframeHasTitle>
1391
+ /**
1392
+ * Enforce `<img>` alt prop does not contain the word "image", "picture", or "photo".
1393
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/img-redundant-alt.md
1394
+ */
1395
+ 'jsx-a11y/img-redundant-alt'?: Linter.RuleEntry<JsxA11YImgRedundantAlt>
1396
+ /**
1397
+ * Enforce that elements with interactive handlers like `onClick` must be focusable.
1398
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/interactive-supports-focus.md
1399
+ */
1400
+ 'jsx-a11y/interactive-supports-focus'?: Linter.RuleEntry<JsxA11YInteractiveSupportsFocus>
1401
+ /**
1402
+ * Enforce that a `label` tag has a text label and an associated control.
1403
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/label-has-associated-control.md
1404
+ */
1405
+ 'jsx-a11y/label-has-associated-control'?: Linter.RuleEntry<JsxA11YLabelHasAssociatedControl>
1406
+ /**
1407
+ * Enforce that `<label>` elements have the `htmlFor` prop.
1408
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/label-has-for.md
1409
+ * @deprecated
1410
+ */
1411
+ 'jsx-a11y/label-has-for'?: Linter.RuleEntry<JsxA11YLabelHasFor>
1412
+ /**
1413
+ * Enforce lang attribute has a valid value.
1414
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/lang.md
1415
+ */
1416
+ 'jsx-a11y/lang'?: Linter.RuleEntry<JsxA11YLang>
1417
+ /**
1418
+ * Enforces that `<audio>` and `<video>` elements must have a `<track>` for captions.
1419
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/media-has-caption.md
1420
+ */
1421
+ 'jsx-a11y/media-has-caption'?: Linter.RuleEntry<JsxA11YMediaHasCaption>
1422
+ /**
1423
+ * Enforce that `onMouseOver`/`onMouseOut` are accompanied by `onFocus`/`onBlur` for keyboard-only users.
1424
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/mouse-events-have-key-events.md
1425
+ */
1426
+ 'jsx-a11y/mouse-events-have-key-events'?: Linter.RuleEntry<JsxA11YMouseEventsHaveKeyEvents>
1427
+ /**
1428
+ * Enforce that the `accessKey` prop is not used on any element to avoid complications with keyboard commands used by a screen reader.
1429
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-access-key.md
1430
+ */
1431
+ 'jsx-a11y/no-access-key'?: Linter.RuleEntry<JsxA11YNoAccessKey>
1432
+ /**
1433
+ * Disallow `aria-hidden="true"` from being set on focusable elements.
1434
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-aria-hidden-on-focusable.md
1435
+ */
1436
+ 'jsx-a11y/no-aria-hidden-on-focusable'?: Linter.RuleEntry<JsxA11YNoAriaHiddenOnFocusable>
1437
+ /**
1438
+ * Enforce autoFocus prop is not used.
1439
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-autofocus.md
1440
+ */
1441
+ 'jsx-a11y/no-autofocus'?: Linter.RuleEntry<JsxA11YNoAutofocus>
1442
+ /**
1443
+ * Enforce distracting elements are not used.
1444
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-distracting-elements.md
1445
+ */
1446
+ 'jsx-a11y/no-distracting-elements'?: Linter.RuleEntry<JsxA11YNoDistractingElements>
1447
+ /**
1448
+ * Interactive elements should not be assigned non-interactive roles.
1449
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-interactive-element-to-noninteractive-role.md
1450
+ */
1451
+ 'jsx-a11y/no-interactive-element-to-noninteractive-role'?: Linter.RuleEntry<JsxA11YNoInteractiveElementToNoninteractiveRole>
1452
+ /**
1453
+ * Non-interactive elements should not be assigned mouse or keyboard event listeners.
1454
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-element-interactions.md
1455
+ */
1456
+ 'jsx-a11y/no-noninteractive-element-interactions'?: Linter.RuleEntry<JsxA11YNoNoninteractiveElementInteractions>
1457
+ /**
1458
+ * Non-interactive elements should not be assigned interactive roles.
1459
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-element-to-interactive-role.md
1460
+ */
1461
+ 'jsx-a11y/no-noninteractive-element-to-interactive-role'?: Linter.RuleEntry<JsxA11YNoNoninteractiveElementToInteractiveRole>
1462
+ /**
1463
+ * `tabIndex` should only be declared on interactive elements.
1464
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-tabindex.md
1465
+ */
1466
+ 'jsx-a11y/no-noninteractive-tabindex'?: Linter.RuleEntry<JsxA11YNoNoninteractiveTabindex>
1467
+ /**
1468
+ * Enforce usage of `onBlur` over `onChange` on select menus for accessibility.
1469
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-onchange.md
1470
+ * @deprecated
1471
+ */
1472
+ 'jsx-a11y/no-onchange'?: Linter.RuleEntry<JsxA11YNoOnchange>
1473
+ /**
1474
+ * Enforce explicit role property is not the same as implicit/default role property on element.
1475
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-redundant-roles.md
1476
+ */
1477
+ 'jsx-a11y/no-redundant-roles'?: Linter.RuleEntry<JsxA11YNoRedundantRoles>
1478
+ /**
1479
+ * Enforce that non-interactive, visible elements (such as `<div>`) that have click handlers use the role attribute.
1480
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-static-element-interactions.md
1481
+ */
1482
+ 'jsx-a11y/no-static-element-interactions'?: Linter.RuleEntry<JsxA11YNoStaticElementInteractions>
1483
+ /**
1484
+ * Enforces using semantic DOM elements over the ARIA `role` property.
1485
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/prefer-tag-over-role.md
1486
+ */
1487
+ 'jsx-a11y/prefer-tag-over-role'?: Linter.RuleEntry<JsxA11YPreferTagOverRole>
1488
+ /**
1489
+ * Enforce that elements with ARIA roles must have all required attributes for that role.
1490
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/role-has-required-aria-props.md
1491
+ */
1492
+ 'jsx-a11y/role-has-required-aria-props'?: Linter.RuleEntry<JsxA11YRoleHasRequiredAriaProps>
1493
+ /**
1494
+ * Enforce that elements with explicit or implicit roles defined contain only `aria-*` properties supported by that `role`.
1495
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/role-supports-aria-props.md
1496
+ */
1497
+ 'jsx-a11y/role-supports-aria-props'?: Linter.RuleEntry<JsxA11YRoleSupportsAriaProps>
1498
+ /**
1499
+ * Enforce `scope` prop is only used on `<th>` elements.
1500
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/scope.md
1501
+ */
1502
+ 'jsx-a11y/scope'?: Linter.RuleEntry<JsxA11YScope>
1503
+ /**
1504
+ * Enforce `tabIndex` value is not greater than zero.
1505
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/tabindex-no-positive.md
1506
+ */
1507
+ 'jsx-a11y/tabindex-no-positive'?: Linter.RuleEntry<JsxA11YTabindexNoPositive>
1310
1508
  /**
1311
1509
  * Enforce the consistent use of either double or single quotes in JSX attributes
1312
1510
  * @see https://eslint.org/docs/latest/rules/jsx-quotes
@@ -7744,6 +7942,221 @@ type JsoncSpaceUnaryOps = []|[{
7744
7942
  [k: string]: boolean | undefined
7745
7943
  }
7746
7944
  }]
7945
+ // ----- jsx-a11y/accessible-emoji -----
7946
+ type JsxA11YAccessibleEmoji = []|[{
7947
+ [k: string]: unknown | undefined
7948
+ }]
7949
+ // ----- jsx-a11y/alt-text -----
7950
+ type JsxA11YAltText = []|[{
7951
+ elements?: string[]
7952
+ img?: string[]
7953
+ object?: string[]
7954
+ area?: string[]
7955
+ "input[type=\"image\"]"?: string[]
7956
+ [k: string]: unknown | undefined
7957
+ }]
7958
+ // ----- jsx-a11y/anchor-ambiguous-text -----
7959
+ type JsxA11YAnchorAmbiguousText = []|[{
7960
+ words?: string[]
7961
+ [k: string]: unknown | undefined
7962
+ }]
7963
+ // ----- jsx-a11y/anchor-has-content -----
7964
+ type JsxA11YAnchorHasContent = []|[{
7965
+ components?: string[]
7966
+ [k: string]: unknown | undefined
7967
+ }]
7968
+ // ----- jsx-a11y/anchor-is-valid -----
7969
+ type JsxA11YAnchorIsValid = []|[{
7970
+ components?: string[]
7971
+ specialLink?: string[]
7972
+
7973
+ aspects?: [("noHref" | "invalidHref" | "preferButton"), ...(("noHref" | "invalidHref" | "preferButton"))[]]
7974
+ [k: string]: unknown | undefined
7975
+ }]
7976
+ // ----- jsx-a11y/aria-activedescendant-has-tabindex -----
7977
+ type JsxA11YAriaActivedescendantHasTabindex = []|[{
7978
+ [k: string]: unknown | undefined
7979
+ }]
7980
+ // ----- jsx-a11y/aria-props -----
7981
+ type JsxA11YAriaProps = []|[{
7982
+ [k: string]: unknown | undefined
7983
+ }]
7984
+ // ----- jsx-a11y/aria-proptypes -----
7985
+ type JsxA11YAriaProptypes = []|[{
7986
+ [k: string]: unknown | undefined
7987
+ }]
7988
+ // ----- jsx-a11y/aria-role -----
7989
+ type JsxA11YAriaRole = []|[{
7990
+ allowedInvalidRoles?: string[]
7991
+ ignoreNonDOM?: boolean
7992
+ [k: string]: unknown | undefined
7993
+ }]
7994
+ // ----- jsx-a11y/aria-unsupported-elements -----
7995
+ type JsxA11YAriaUnsupportedElements = []|[{
7996
+ [k: string]: unknown | undefined
7997
+ }]
7998
+ // ----- jsx-a11y/autocomplete-valid -----
7999
+ type JsxA11YAutocompleteValid = []|[{
8000
+ inputComponents?: string[]
8001
+ [k: string]: unknown | undefined
8002
+ }]
8003
+ // ----- jsx-a11y/click-events-have-key-events -----
8004
+ type JsxA11YClickEventsHaveKeyEvents = []|[{
8005
+ [k: string]: unknown | undefined
8006
+ }]
8007
+ // ----- jsx-a11y/control-has-associated-label -----
8008
+ type JsxA11YControlHasAssociatedLabel = []|[{
8009
+ labelAttributes?: string[]
8010
+ controlComponents?: string[]
8011
+ ignoreElements?: string[]
8012
+ ignoreRoles?: string[]
8013
+
8014
+ depth?: number
8015
+ [k: string]: unknown | undefined
8016
+ }]
8017
+ // ----- jsx-a11y/heading-has-content -----
8018
+ type JsxA11YHeadingHasContent = []|[{
8019
+ components?: string[]
8020
+ [k: string]: unknown | undefined
8021
+ }]
8022
+ // ----- jsx-a11y/html-has-lang -----
8023
+ type JsxA11YHtmlHasLang = []|[{
8024
+ [k: string]: unknown | undefined
8025
+ }]
8026
+ // ----- jsx-a11y/iframe-has-title -----
8027
+ type JsxA11YIframeHasTitle = []|[{
8028
+ [k: string]: unknown | undefined
8029
+ }]
8030
+ // ----- jsx-a11y/img-redundant-alt -----
8031
+ type JsxA11YImgRedundantAlt = []|[{
8032
+ components?: string[]
8033
+ words?: string[]
8034
+ [k: string]: unknown | undefined
8035
+ }]
8036
+ // ----- jsx-a11y/interactive-supports-focus -----
8037
+ type JsxA11YInteractiveSupportsFocus = []|[{
8038
+
8039
+ 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")[]
8040
+ [k: string]: unknown | undefined
8041
+ }]
8042
+ // ----- jsx-a11y/label-has-associated-control -----
8043
+ type JsxA11YLabelHasAssociatedControl = []|[{
8044
+ labelComponents?: string[]
8045
+ labelAttributes?: string[]
8046
+ controlComponents?: string[]
8047
+
8048
+ assert?: ("htmlFor" | "nesting" | "both" | "either")
8049
+
8050
+ depth?: number
8051
+ [k: string]: unknown | undefined
8052
+ }]
8053
+ // ----- jsx-a11y/label-has-for -----
8054
+ type JsxA11YLabelHasFor = []|[{
8055
+ components?: string[]
8056
+ required?: (("nesting" | "id") | {
8057
+
8058
+ some: ("nesting" | "id")[]
8059
+ [k: string]: unknown | undefined
8060
+ } | {
8061
+
8062
+ every: ("nesting" | "id")[]
8063
+ [k: string]: unknown | undefined
8064
+ })
8065
+ allowChildren?: boolean
8066
+ [k: string]: unknown | undefined
8067
+ }]
8068
+ // ----- jsx-a11y/lang -----
8069
+ type JsxA11YLang = []|[{
8070
+ [k: string]: unknown | undefined
8071
+ }]
8072
+ // ----- jsx-a11y/media-has-caption -----
8073
+ type JsxA11YMediaHasCaption = []|[{
8074
+ audio?: string[]
8075
+ video?: string[]
8076
+ track?: string[]
8077
+ [k: string]: unknown | undefined
8078
+ }]
8079
+ // ----- jsx-a11y/mouse-events-have-key-events -----
8080
+ type JsxA11YMouseEventsHaveKeyEvents = []|[{
8081
+
8082
+ hoverInHandlers?: string[]
8083
+
8084
+ hoverOutHandlers?: string[]
8085
+ [k: string]: unknown | undefined
8086
+ }]
8087
+ // ----- jsx-a11y/no-access-key -----
8088
+ type JsxA11YNoAccessKey = []|[{
8089
+ [k: string]: unknown | undefined
8090
+ }]
8091
+ // ----- jsx-a11y/no-aria-hidden-on-focusable -----
8092
+ type JsxA11YNoAriaHiddenOnFocusable = []|[{
8093
+ [k: string]: unknown | undefined
8094
+ }]
8095
+ // ----- jsx-a11y/no-autofocus -----
8096
+ type JsxA11YNoAutofocus = []|[{
8097
+ ignoreNonDOM?: boolean
8098
+ [k: string]: unknown | undefined
8099
+ }]
8100
+ // ----- jsx-a11y/no-distracting-elements -----
8101
+ type JsxA11YNoDistractingElements = []|[{
8102
+
8103
+ elements?: ("marquee" | "blink")[]
8104
+ [k: string]: unknown | undefined
8105
+ }]
8106
+ // ----- jsx-a11y/no-interactive-element-to-noninteractive-role -----
8107
+ type JsxA11YNoInteractiveElementToNoninteractiveRole = []|[{
8108
+ [k: string]: string[] | undefined
8109
+ }]
8110
+ // ----- jsx-a11y/no-noninteractive-element-interactions -----
8111
+ type JsxA11YNoNoninteractiveElementInteractions = []|[{
8112
+ handlers?: string[]
8113
+ [k: string]: unknown | undefined
8114
+ }]
8115
+ // ----- jsx-a11y/no-noninteractive-element-to-interactive-role -----
8116
+ type JsxA11YNoNoninteractiveElementToInteractiveRole = []|[{
8117
+ [k: string]: string[] | undefined
8118
+ }]
8119
+ // ----- jsx-a11y/no-noninteractive-tabindex -----
8120
+ type JsxA11YNoNoninteractiveTabindex = []|[{
8121
+
8122
+ roles?: string[]
8123
+
8124
+ tags?: string[]
8125
+ [k: string]: unknown | undefined
8126
+ }]
8127
+ // ----- jsx-a11y/no-onchange -----
8128
+ type JsxA11YNoOnchange = []|[{
8129
+ [k: string]: unknown | undefined
8130
+ }]
8131
+ // ----- jsx-a11y/no-redundant-roles -----
8132
+ type JsxA11YNoRedundantRoles = []|[{
8133
+ [k: string]: string[] | undefined
8134
+ }]
8135
+ // ----- jsx-a11y/no-static-element-interactions -----
8136
+ type JsxA11YNoStaticElementInteractions = []|[{
8137
+ handlers?: string[]
8138
+ [k: string]: unknown | undefined
8139
+ }]
8140
+ // ----- jsx-a11y/prefer-tag-over-role -----
8141
+ type JsxA11YPreferTagOverRole = []|[{
8142
+ [k: string]: unknown | undefined
8143
+ }]
8144
+ // ----- jsx-a11y/role-has-required-aria-props -----
8145
+ type JsxA11YRoleHasRequiredAriaProps = []|[{
8146
+ [k: string]: unknown | undefined
8147
+ }]
8148
+ // ----- jsx-a11y/role-supports-aria-props -----
8149
+ type JsxA11YRoleSupportsAriaProps = []|[{
8150
+ [k: string]: unknown | undefined
8151
+ }]
8152
+ // ----- jsx-a11y/scope -----
8153
+ type JsxA11YScope = []|[{
8154
+ [k: string]: unknown | undefined
8155
+ }]
8156
+ // ----- jsx-a11y/tabindex-no-positive -----
8157
+ type JsxA11YTabindexNoPositive = []|[{
8158
+ [k: string]: unknown | undefined
8159
+ }]
7747
8160
  // ----- jsx-quotes -----
7748
8161
  type JsxQuotes = []|[("prefer-single" | "prefer-double")]
7749
8162
  // ----- key-spacing -----
@@ -14224,7 +14637,7 @@ type Yoda = []|[("always" | "never")]|[("always" | "never"), {
14224
14637
  onlyEquality?: boolean
14225
14638
  }]
14226
14639
  // Names of all the configs
14227
- type ConfigNames = 'storm/astro/setup' | 'storm/astro/rules' | 'storm/formatter/setup' | 'storm/imports/rules' | 'storm/javascript/setup' | 'storm/javascript/banner' | 'storm/javascript/rules' | 'antfu/jsx/setup' | 'storm/jsdoc/rules' | 'storm/jsonc/setup' | 'storm/jsonc/rules' | 'storm/markdown/setup' | 'storm/markdown/processor' | 'storm/markdown/parser' | 'storm/markdown/disables' | 'storm/node/rules' | 'storm/perfectionist/setup' | 'storm/react/setup' | 'storm/react/rules' | 'storm/sort/package-json' | 'storm/stylistic/rules' | 'storm/test/setup' | 'storm/test/rules' | 'storm/toml/setup' | 'storm/toml/rules' | 'storm/regexp/rules' | 'storm/typescript/setup' | 'storm/typescript/parser' | 'storm/typescript/type-aware-parser' | 'storm/typescript/rules' | 'storm/typescript/rules-type-aware' | 'storm/unicorn/rules' | 'storm/unocss' | 'storm/yaml/setup' | 'storm/yaml/rules'
14640
+ type ConfigNames = 'storm/astro/setup' | 'storm/astro/rules' | 'storm/formatter/setup' | 'storm/imports/rules' | 'storm/javascript/setup' | 'storm/javascript/banner' | 'storm/javascript/rules' | 'storm/jsx/setup' | 'storm/jsx/rules' | 'storm/jsdoc/rules' | 'storm/jsonc/setup' | 'storm/jsonc/rules' | 'storm/markdown/setup' | 'storm/markdown/processor' | 'storm/markdown/parser' | 'storm/markdown/disables' | 'storm/node/rules' | 'storm/perfectionist/setup' | 'storm/react/setup' | 'storm/react/rules' | 'storm/sort/package-json' | 'storm/stylistic/rules' | 'storm/test/setup' | 'storm/test/rules' | 'storm/toml/setup' | 'storm/toml/rules' | 'storm/regexp/rules' | 'storm/typescript/setup' | 'storm/typescript/parser' | 'storm/typescript/type-aware-parser' | 'storm/typescript/rules' | 'storm/typescript/rules-type-aware' | 'storm/unicorn/rules' | 'storm/unocss' | 'storm/yaml/setup' | 'storm/yaml/rules'
14228
14641
 
14229
14642
  /**
14230
14643
  * Vendor types from Prettier so we don't rely on the dependency.
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  banner_plugin_default
3
- } from "../chunk-W6QEP5VE.js";
4
- import "../chunk-K6KBWFPU.js";
3
+ } from "../chunk-LFZMLUCG.js";
4
+ import "../chunk-J2PN7K74.js";
5
5
  import "../chunk-X3L37QNE.js";
6
6
  import "../chunk-SHUYVCID.js";
7
7
  export {
@@ -1,5 +1,5 @@
1
1
  import { Awaitable } from 'eslint-flat-config-utils';
2
- import { T as TypedFlatConfigItem } from '../types-CHy285SF.js';
2
+ import { T as TypedFlatConfigItem } from '../types-Cnmfgj1g.js';
3
3
  import '@nx/eslint-plugin/src/utils/runtime-lint-utils';
4
4
  import '@stylistic/eslint-plugin';
5
5
  import '@typescript-eslint/parser';
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getFileBanner
3
- } from "../chunk-K6KBWFPU.js";
3
+ } from "../chunk-J2PN7K74.js";
4
4
  import "../chunk-X3L37QNE.js";
5
5
  import "../chunk-SHUYVCID.js";
6
6
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storm-software/eslint",
3
- "version": "0.124.0",
3
+ "version": "0.124.2",
4
4
  "type": "module",
5
5
  "description": "⚡ A package containing the base ESLint configuration used by Storm Software across many projects.",
6
6
  "repository": {