@oliver139/eslint-config 3.0.0 → 3.1.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/cli.d.ts CHANGED
@@ -1 +1 @@
1
- export { };
1
+ export {};
package/dist/cli.js CHANGED
@@ -9,7 +9,7 @@ import parse from "parse-gitignore";
9
9
  import { execSync } from "node:child_process";
10
10
 
11
11
  //#region package.json
12
- var version = "3.0.0";
12
+ var version = "3.1.0";
13
13
 
14
14
  //#endregion
15
15
  //#region src/cli/constants.ts
@@ -178,10 +178,10 @@ async function updateEslintFiles(result) {
178
178
  //#region src/cli/constants-generated.ts
179
179
  const versionsMap = {
180
180
  "@eslint-react/eslint-plugin": "^1.52.3",
181
- "@next/eslint-plugin-next": "^15.4.4",
182
- "@unocss/eslint-plugin": "^66.3.3",
181
+ "@next/eslint-plugin-next": "^15.4.6",
182
+ "@unocss/eslint-plugin": "^66.4.2",
183
183
  "astro-eslint-parser": "^1.2.2",
184
- "eslint": "^9.31.0",
184
+ "eslint": "^9.33.0",
185
185
  "eslint-plugin-astro": "^1.3.1",
186
186
  "eslint-plugin-format": "^1.0.1",
187
187
  "eslint-plugin-react-hooks": "^5.2.0",
@@ -190,7 +190,7 @@ const versionsMap = {
190
190
  "eslint-plugin-svelte": "^3.11.0",
191
191
  "prettier-plugin-astro": "^0.14.1",
192
192
  "prettier-plugin-slidev": "^1.0.5",
193
- "svelte-eslint-parser": "^1.3.0"
193
+ "svelte-eslint-parser": "^1.3.1"
194
194
  };
195
195
 
196
196
  //#endregion
@@ -341,4 +341,5 @@ cli.help();
341
341
  cli.version(version);
342
342
  cli.parse();
343
343
 
344
- //#endregion
344
+ //#endregion
345
+ export { };
package/dist/index.d.ts CHANGED
@@ -111,182 +111,182 @@ interface RuleOptions {
111
111
  * apply `jsx-a11y/alt-text` rule to Astro components
112
112
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/alt-text/
113
113
  */
114
- 'astro/jsx-a11y/alt-text'?: Linter.RuleEntry<[]>;
114
+ 'astro/jsx-a11y/alt-text'?: Linter.RuleEntry<AstroJsxA11YAltText>;
115
115
  /**
116
116
  * apply `jsx-a11y/anchor-ambiguous-text` rule to Astro components
117
117
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/anchor-ambiguous-text/
118
118
  */
119
- 'astro/jsx-a11y/anchor-ambiguous-text'?: Linter.RuleEntry<[]>;
119
+ 'astro/jsx-a11y/anchor-ambiguous-text'?: Linter.RuleEntry<AstroJsxA11YAnchorAmbiguousText>;
120
120
  /**
121
121
  * apply `jsx-a11y/anchor-has-content` rule to Astro components
122
122
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/anchor-has-content/
123
123
  */
124
- 'astro/jsx-a11y/anchor-has-content'?: Linter.RuleEntry<[]>;
124
+ 'astro/jsx-a11y/anchor-has-content'?: Linter.RuleEntry<AstroJsxA11YAnchorHasContent>;
125
125
  /**
126
126
  * apply `jsx-a11y/anchor-is-valid` rule to Astro components
127
127
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/anchor-is-valid/
128
128
  */
129
- 'astro/jsx-a11y/anchor-is-valid'?: Linter.RuleEntry<[]>;
129
+ 'astro/jsx-a11y/anchor-is-valid'?: Linter.RuleEntry<AstroJsxA11YAnchorIsValid>;
130
130
  /**
131
131
  * apply `jsx-a11y/aria-activedescendant-has-tabindex` rule to Astro components
132
132
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-activedescendant-has-tabindex/
133
133
  */
134
- 'astro/jsx-a11y/aria-activedescendant-has-tabindex'?: Linter.RuleEntry<[]>;
134
+ 'astro/jsx-a11y/aria-activedescendant-has-tabindex'?: Linter.RuleEntry<AstroJsxA11YAriaActivedescendantHasTabindex>;
135
135
  /**
136
136
  * apply `jsx-a11y/aria-props` rule to Astro components
137
137
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-props/
138
138
  */
139
- 'astro/jsx-a11y/aria-props'?: Linter.RuleEntry<[]>;
139
+ 'astro/jsx-a11y/aria-props'?: Linter.RuleEntry<AstroJsxA11YAriaProps>;
140
140
  /**
141
141
  * apply `jsx-a11y/aria-proptypes` rule to Astro components
142
142
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-proptypes/
143
143
  */
144
- 'astro/jsx-a11y/aria-proptypes'?: Linter.RuleEntry<[]>;
144
+ 'astro/jsx-a11y/aria-proptypes'?: Linter.RuleEntry<AstroJsxA11YAriaProptypes>;
145
145
  /**
146
146
  * apply `jsx-a11y/aria-role` rule to Astro components
147
147
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-role/
148
148
  */
149
- 'astro/jsx-a11y/aria-role'?: Linter.RuleEntry<[]>;
149
+ 'astro/jsx-a11y/aria-role'?: Linter.RuleEntry<AstroJsxA11YAriaRole>;
150
150
  /**
151
151
  * apply `jsx-a11y/aria-unsupported-elements` rule to Astro components
152
152
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/aria-unsupported-elements/
153
153
  */
154
- 'astro/jsx-a11y/aria-unsupported-elements'?: Linter.RuleEntry<[]>;
154
+ 'astro/jsx-a11y/aria-unsupported-elements'?: Linter.RuleEntry<AstroJsxA11YAriaUnsupportedElements>;
155
155
  /**
156
156
  * apply `jsx-a11y/autocomplete-valid` rule to Astro components
157
157
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/autocomplete-valid/
158
158
  */
159
- 'astro/jsx-a11y/autocomplete-valid'?: Linter.RuleEntry<[]>;
159
+ 'astro/jsx-a11y/autocomplete-valid'?: Linter.RuleEntry<AstroJsxA11YAutocompleteValid>;
160
160
  /**
161
161
  * apply `jsx-a11y/click-events-have-key-events` rule to Astro components
162
162
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/click-events-have-key-events/
163
163
  */
164
- 'astro/jsx-a11y/click-events-have-key-events'?: Linter.RuleEntry<[]>;
164
+ 'astro/jsx-a11y/click-events-have-key-events'?: Linter.RuleEntry<AstroJsxA11YClickEventsHaveKeyEvents>;
165
165
  /**
166
166
  * apply `jsx-a11y/control-has-associated-label` rule to Astro components
167
167
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/control-has-associated-label/
168
168
  */
169
- 'astro/jsx-a11y/control-has-associated-label'?: Linter.RuleEntry<[]>;
169
+ 'astro/jsx-a11y/control-has-associated-label'?: Linter.RuleEntry<AstroJsxA11YControlHasAssociatedLabel>;
170
170
  /**
171
171
  * apply `jsx-a11y/heading-has-content` rule to Astro components
172
172
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/heading-has-content/
173
173
  */
174
- 'astro/jsx-a11y/heading-has-content'?: Linter.RuleEntry<[]>;
174
+ 'astro/jsx-a11y/heading-has-content'?: Linter.RuleEntry<AstroJsxA11YHeadingHasContent>;
175
175
  /**
176
176
  * apply `jsx-a11y/html-has-lang` rule to Astro components
177
177
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/html-has-lang/
178
178
  */
179
- 'astro/jsx-a11y/html-has-lang'?: Linter.RuleEntry<[]>;
179
+ 'astro/jsx-a11y/html-has-lang'?: Linter.RuleEntry<AstroJsxA11YHtmlHasLang>;
180
180
  /**
181
181
  * apply `jsx-a11y/iframe-has-title` rule to Astro components
182
182
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/iframe-has-title/
183
183
  */
184
- 'astro/jsx-a11y/iframe-has-title'?: Linter.RuleEntry<[]>;
184
+ 'astro/jsx-a11y/iframe-has-title'?: Linter.RuleEntry<AstroJsxA11YIframeHasTitle>;
185
185
  /**
186
186
  * apply `jsx-a11y/img-redundant-alt` rule to Astro components
187
187
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/img-redundant-alt/
188
188
  */
189
- 'astro/jsx-a11y/img-redundant-alt'?: Linter.RuleEntry<[]>;
189
+ 'astro/jsx-a11y/img-redundant-alt'?: Linter.RuleEntry<AstroJsxA11YImgRedundantAlt>;
190
190
  /**
191
191
  * apply `jsx-a11y/interactive-supports-focus` rule to Astro components
192
192
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/interactive-supports-focus/
193
193
  */
194
- 'astro/jsx-a11y/interactive-supports-focus'?: Linter.RuleEntry<[]>;
194
+ 'astro/jsx-a11y/interactive-supports-focus'?: Linter.RuleEntry<AstroJsxA11YInteractiveSupportsFocus>;
195
195
  /**
196
196
  * apply `jsx-a11y/label-has-associated-control` rule to Astro components
197
197
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/label-has-associated-control/
198
198
  */
199
- 'astro/jsx-a11y/label-has-associated-control'?: Linter.RuleEntry<[]>;
199
+ 'astro/jsx-a11y/label-has-associated-control'?: Linter.RuleEntry<AstroJsxA11YLabelHasAssociatedControl>;
200
200
  /**
201
201
  * apply `jsx-a11y/lang` rule to Astro components
202
202
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/lang/
203
203
  */
204
- 'astro/jsx-a11y/lang'?: Linter.RuleEntry<[]>;
204
+ 'astro/jsx-a11y/lang'?: Linter.RuleEntry<AstroJsxA11YLang>;
205
205
  /**
206
206
  * apply `jsx-a11y/media-has-caption` rule to Astro components
207
207
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/media-has-caption/
208
208
  */
209
- 'astro/jsx-a11y/media-has-caption'?: Linter.RuleEntry<[]>;
209
+ 'astro/jsx-a11y/media-has-caption'?: Linter.RuleEntry<AstroJsxA11YMediaHasCaption>;
210
210
  /**
211
211
  * apply `jsx-a11y/mouse-events-have-key-events` rule to Astro components
212
212
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/mouse-events-have-key-events/
213
213
  */
214
- 'astro/jsx-a11y/mouse-events-have-key-events'?: Linter.RuleEntry<[]>;
214
+ 'astro/jsx-a11y/mouse-events-have-key-events'?: Linter.RuleEntry<AstroJsxA11YMouseEventsHaveKeyEvents>;
215
215
  /**
216
216
  * apply `jsx-a11y/no-access-key` rule to Astro components
217
217
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-access-key/
218
218
  */
219
- 'astro/jsx-a11y/no-access-key'?: Linter.RuleEntry<[]>;
219
+ 'astro/jsx-a11y/no-access-key'?: Linter.RuleEntry<AstroJsxA11YNoAccessKey>;
220
220
  /**
221
221
  * apply `jsx-a11y/no-aria-hidden-on-focusable` rule to Astro components
222
222
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-aria-hidden-on-focusable/
223
223
  */
224
- 'astro/jsx-a11y/no-aria-hidden-on-focusable'?: Linter.RuleEntry<[]>;
224
+ 'astro/jsx-a11y/no-aria-hidden-on-focusable'?: Linter.RuleEntry<AstroJsxA11YNoAriaHiddenOnFocusable>;
225
225
  /**
226
226
  * apply `jsx-a11y/no-autofocus` rule to Astro components
227
227
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-autofocus/
228
228
  */
229
- 'astro/jsx-a11y/no-autofocus'?: Linter.RuleEntry<[]>;
229
+ 'astro/jsx-a11y/no-autofocus'?: Linter.RuleEntry<AstroJsxA11YNoAutofocus>;
230
230
  /**
231
231
  * apply `jsx-a11y/no-distracting-elements` rule to Astro components
232
232
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-distracting-elements/
233
233
  */
234
- 'astro/jsx-a11y/no-distracting-elements'?: Linter.RuleEntry<[]>;
234
+ 'astro/jsx-a11y/no-distracting-elements'?: Linter.RuleEntry<AstroJsxA11YNoDistractingElements>;
235
235
  /**
236
236
  * apply `jsx-a11y/no-interactive-element-to-noninteractive-role` rule to Astro components
237
237
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-interactive-element-to-noninteractive-role/
238
238
  */
239
- 'astro/jsx-a11y/no-interactive-element-to-noninteractive-role'?: Linter.RuleEntry<[]>;
239
+ 'astro/jsx-a11y/no-interactive-element-to-noninteractive-role'?: Linter.RuleEntry<AstroJsxA11YNoInteractiveElementToNoninteractiveRole>;
240
240
  /**
241
241
  * apply `jsx-a11y/no-noninteractive-element-interactions` rule to Astro components
242
242
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-noninteractive-element-interactions/
243
243
  */
244
- 'astro/jsx-a11y/no-noninteractive-element-interactions'?: Linter.RuleEntry<[]>;
244
+ 'astro/jsx-a11y/no-noninteractive-element-interactions'?: Linter.RuleEntry<AstroJsxA11YNoNoninteractiveElementInteractions>;
245
245
  /**
246
246
  * apply `jsx-a11y/no-noninteractive-element-to-interactive-role` rule to Astro components
247
247
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-noninteractive-element-to-interactive-role/
248
248
  */
249
- 'astro/jsx-a11y/no-noninteractive-element-to-interactive-role'?: Linter.RuleEntry<[]>;
249
+ 'astro/jsx-a11y/no-noninteractive-element-to-interactive-role'?: Linter.RuleEntry<AstroJsxA11YNoNoninteractiveElementToInteractiveRole>;
250
250
  /**
251
251
  * apply `jsx-a11y/no-noninteractive-tabindex` rule to Astro components
252
252
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-noninteractive-tabindex/
253
253
  */
254
- 'astro/jsx-a11y/no-noninteractive-tabindex'?: Linter.RuleEntry<[]>;
254
+ 'astro/jsx-a11y/no-noninteractive-tabindex'?: Linter.RuleEntry<AstroJsxA11YNoNoninteractiveTabindex>;
255
255
  /**
256
256
  * apply `jsx-a11y/no-redundant-roles` rule to Astro components
257
257
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-redundant-roles/
258
258
  */
259
- 'astro/jsx-a11y/no-redundant-roles'?: Linter.RuleEntry<[]>;
259
+ 'astro/jsx-a11y/no-redundant-roles'?: Linter.RuleEntry<AstroJsxA11YNoRedundantRoles>;
260
260
  /**
261
261
  * apply `jsx-a11y/no-static-element-interactions` rule to Astro components
262
262
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/no-static-element-interactions/
263
263
  */
264
- 'astro/jsx-a11y/no-static-element-interactions'?: Linter.RuleEntry<[]>;
264
+ 'astro/jsx-a11y/no-static-element-interactions'?: Linter.RuleEntry<AstroJsxA11YNoStaticElementInteractions>;
265
265
  /**
266
266
  * apply `jsx-a11y/prefer-tag-over-role` rule to Astro components
267
267
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/prefer-tag-over-role/
268
268
  */
269
- 'astro/jsx-a11y/prefer-tag-over-role'?: Linter.RuleEntry<[]>;
269
+ 'astro/jsx-a11y/prefer-tag-over-role'?: Linter.RuleEntry<AstroJsxA11YPreferTagOverRole>;
270
270
  /**
271
271
  * apply `jsx-a11y/role-has-required-aria-props` rule to Astro components
272
272
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/role-has-required-aria-props/
273
273
  */
274
- 'astro/jsx-a11y/role-has-required-aria-props'?: Linter.RuleEntry<[]>;
274
+ 'astro/jsx-a11y/role-has-required-aria-props'?: Linter.RuleEntry<AstroJsxA11YRoleHasRequiredAriaProps>;
275
275
  /**
276
276
  * apply `jsx-a11y/role-supports-aria-props` rule to Astro components
277
277
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/role-supports-aria-props/
278
278
  */
279
- 'astro/jsx-a11y/role-supports-aria-props'?: Linter.RuleEntry<[]>;
279
+ 'astro/jsx-a11y/role-supports-aria-props'?: Linter.RuleEntry<AstroJsxA11YRoleSupportsAriaProps>;
280
280
  /**
281
281
  * apply `jsx-a11y/scope` rule to Astro components
282
282
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/scope/
283
283
  */
284
- 'astro/jsx-a11y/scope'?: Linter.RuleEntry<[]>;
284
+ 'astro/jsx-a11y/scope'?: Linter.RuleEntry<AstroJsxA11YScope>;
285
285
  /**
286
286
  * apply `jsx-a11y/tabindex-no-positive` rule to Astro components
287
287
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/jsx-a11y/tabindex-no-positive/
288
288
  */
289
- 'astro/jsx-a11y/tabindex-no-positive'?: Linter.RuleEntry<[]>;
289
+ 'astro/jsx-a11y/tabindex-no-positive'?: Linter.RuleEntry<AstroJsxA11YTabindexNoPositive>;
290
290
  /**
291
291
  * the client:only directive is missing the correct component's framework value
292
292
  * @see https://ota-meshi.github.io/eslint-plugin-astro/rules/missing-client-only-directive-value/
@@ -1204,6 +1204,204 @@ interface RuleOptions {
1204
1204
  * @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/vue-custom-block/no-parsing-error.html
1205
1205
  */
1206
1206
  'jsonc/vue-custom-block/no-parsing-error'?: Linter.RuleEntry<[]>;
1207
+ /**
1208
+ * Enforce emojis are wrapped in `<span>` and provide screen reader access.
1209
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/accessible-emoji.md
1210
+ * @deprecated
1211
+ */
1212
+ 'jsx-a11y/accessible-emoji'?: Linter.RuleEntry<JsxA11YAccessibleEmoji>;
1213
+ /**
1214
+ * Enforce all elements that require alternative text have meaningful information to relay back to end user.
1215
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/alt-text.md
1216
+ */
1217
+ 'jsx-a11y/alt-text'?: Linter.RuleEntry<JsxA11YAltText>;
1218
+ /**
1219
+ * Enforce `<a>` text to not exactly match "click here", "here", "link", or "a link".
1220
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-ambiguous-text.md
1221
+ */
1222
+ 'jsx-a11y/anchor-ambiguous-text'?: Linter.RuleEntry<JsxA11YAnchorAmbiguousText>;
1223
+ /**
1224
+ * Enforce all anchors to contain accessible content.
1225
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-has-content.md
1226
+ */
1227
+ 'jsx-a11y/anchor-has-content'?: Linter.RuleEntry<JsxA11YAnchorHasContent>;
1228
+ /**
1229
+ * Enforce all anchors are valid, navigable elements.
1230
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-is-valid.md
1231
+ */
1232
+ 'jsx-a11y/anchor-is-valid'?: Linter.RuleEntry<JsxA11YAnchorIsValid>;
1233
+ /**
1234
+ * Enforce elements with aria-activedescendant are tabbable.
1235
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-activedescendant-has-tabindex.md
1236
+ */
1237
+ 'jsx-a11y/aria-activedescendant-has-tabindex'?: Linter.RuleEntry<JsxA11YAriaActivedescendantHasTabindex>;
1238
+ /**
1239
+ * Enforce all `aria-*` props are valid.
1240
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-props.md
1241
+ */
1242
+ 'jsx-a11y/aria-props'?: Linter.RuleEntry<JsxA11YAriaProps>;
1243
+ /**
1244
+ * Enforce ARIA state and property values are valid.
1245
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-proptypes.md
1246
+ */
1247
+ 'jsx-a11y/aria-proptypes'?: Linter.RuleEntry<JsxA11YAriaProptypes>;
1248
+ /**
1249
+ * Enforce that elements with ARIA roles must use a valid, non-abstract ARIA role.
1250
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-role.md
1251
+ */
1252
+ 'jsx-a11y/aria-role'?: Linter.RuleEntry<JsxA11YAriaRole>;
1253
+ /**
1254
+ * Enforce that elements that do not support ARIA roles, states, and properties do not have those attributes.
1255
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-unsupported-elements.md
1256
+ */
1257
+ 'jsx-a11y/aria-unsupported-elements'?: Linter.RuleEntry<JsxA11YAriaUnsupportedElements>;
1258
+ /**
1259
+ * Enforce that autocomplete attributes are used correctly.
1260
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/autocomplete-valid.md
1261
+ */
1262
+ 'jsx-a11y/autocomplete-valid'?: Linter.RuleEntry<JsxA11YAutocompleteValid>;
1263
+ /**
1264
+ * Enforce a clickable non-interactive element has at least one keyboard event listener.
1265
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/click-events-have-key-events.md
1266
+ */
1267
+ 'jsx-a11y/click-events-have-key-events'?: Linter.RuleEntry<JsxA11YClickEventsHaveKeyEvents>;
1268
+ /**
1269
+ * Enforce that a control (an interactive element) has a text label.
1270
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/control-has-associated-label.md
1271
+ */
1272
+ 'jsx-a11y/control-has-associated-label'?: Linter.RuleEntry<JsxA11YControlHasAssociatedLabel>;
1273
+ /**
1274
+ * Enforce heading (`h1`, `h2`, etc) elements contain accessible content.
1275
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/heading-has-content.md
1276
+ */
1277
+ 'jsx-a11y/heading-has-content'?: Linter.RuleEntry<JsxA11YHeadingHasContent>;
1278
+ /**
1279
+ * Enforce `<html>` element has `lang` prop.
1280
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/html-has-lang.md
1281
+ */
1282
+ 'jsx-a11y/html-has-lang'?: Linter.RuleEntry<JsxA11YHtmlHasLang>;
1283
+ /**
1284
+ * Enforce iframe elements have a title attribute.
1285
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/iframe-has-title.md
1286
+ */
1287
+ 'jsx-a11y/iframe-has-title'?: Linter.RuleEntry<JsxA11YIframeHasTitle>;
1288
+ /**
1289
+ * Enforce `<img>` alt prop does not contain the word "image", "picture", or "photo".
1290
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/img-redundant-alt.md
1291
+ */
1292
+ 'jsx-a11y/img-redundant-alt'?: Linter.RuleEntry<JsxA11YImgRedundantAlt>;
1293
+ /**
1294
+ * Enforce that elements with interactive handlers like `onClick` must be focusable.
1295
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/interactive-supports-focus.md
1296
+ */
1297
+ 'jsx-a11y/interactive-supports-focus'?: Linter.RuleEntry<JsxA11YInteractiveSupportsFocus>;
1298
+ /**
1299
+ * Enforce that a `label` tag has a text label and an associated control.
1300
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/label-has-associated-control.md
1301
+ */
1302
+ 'jsx-a11y/label-has-associated-control'?: Linter.RuleEntry<JsxA11YLabelHasAssociatedControl>;
1303
+ /**
1304
+ * Enforce that `<label>` elements have the `htmlFor` prop.
1305
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/label-has-for.md
1306
+ * @deprecated
1307
+ */
1308
+ 'jsx-a11y/label-has-for'?: Linter.RuleEntry<JsxA11YLabelHasFor>;
1309
+ /**
1310
+ * Enforce lang attribute has a valid value.
1311
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/lang.md
1312
+ */
1313
+ 'jsx-a11y/lang'?: Linter.RuleEntry<JsxA11YLang>;
1314
+ /**
1315
+ * Enforces that `<audio>` and `<video>` elements must have a `<track>` for captions.
1316
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/media-has-caption.md
1317
+ */
1318
+ 'jsx-a11y/media-has-caption'?: Linter.RuleEntry<JsxA11YMediaHasCaption>;
1319
+ /**
1320
+ * Enforce that `onMouseOver`/`onMouseOut` are accompanied by `onFocus`/`onBlur` for keyboard-only users.
1321
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/mouse-events-have-key-events.md
1322
+ */
1323
+ 'jsx-a11y/mouse-events-have-key-events'?: Linter.RuleEntry<JsxA11YMouseEventsHaveKeyEvents>;
1324
+ /**
1325
+ * Enforce that the `accessKey` prop is not used on any element to avoid complications with keyboard commands used by a screen reader.
1326
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-access-key.md
1327
+ */
1328
+ 'jsx-a11y/no-access-key'?: Linter.RuleEntry<JsxA11YNoAccessKey>;
1329
+ /**
1330
+ * Disallow `aria-hidden="true"` from being set on focusable elements.
1331
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-aria-hidden-on-focusable.md
1332
+ */
1333
+ 'jsx-a11y/no-aria-hidden-on-focusable'?: Linter.RuleEntry<JsxA11YNoAriaHiddenOnFocusable>;
1334
+ /**
1335
+ * Enforce autoFocus prop is not used.
1336
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-autofocus.md
1337
+ */
1338
+ 'jsx-a11y/no-autofocus'?: Linter.RuleEntry<JsxA11YNoAutofocus>;
1339
+ /**
1340
+ * Enforce distracting elements are not used.
1341
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-distracting-elements.md
1342
+ */
1343
+ 'jsx-a11y/no-distracting-elements'?: Linter.RuleEntry<JsxA11YNoDistractingElements>;
1344
+ /**
1345
+ * Interactive elements should not be assigned non-interactive roles.
1346
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-interactive-element-to-noninteractive-role.md
1347
+ */
1348
+ 'jsx-a11y/no-interactive-element-to-noninteractive-role'?: Linter.RuleEntry<JsxA11YNoInteractiveElementToNoninteractiveRole>;
1349
+ /**
1350
+ * Non-interactive elements should not be assigned mouse or keyboard event listeners.
1351
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-element-interactions.md
1352
+ */
1353
+ 'jsx-a11y/no-noninteractive-element-interactions'?: Linter.RuleEntry<JsxA11YNoNoninteractiveElementInteractions>;
1354
+ /**
1355
+ * Non-interactive elements should not be assigned interactive roles.
1356
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-element-to-interactive-role.md
1357
+ */
1358
+ 'jsx-a11y/no-noninteractive-element-to-interactive-role'?: Linter.RuleEntry<JsxA11YNoNoninteractiveElementToInteractiveRole>;
1359
+ /**
1360
+ * `tabIndex` should only be declared on interactive elements.
1361
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-tabindex.md
1362
+ */
1363
+ 'jsx-a11y/no-noninteractive-tabindex'?: Linter.RuleEntry<JsxA11YNoNoninteractiveTabindex>;
1364
+ /**
1365
+ * Enforce usage of `onBlur` over `onChange` on select menus for accessibility.
1366
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-onchange.md
1367
+ * @deprecated
1368
+ */
1369
+ 'jsx-a11y/no-onchange'?: Linter.RuleEntry<JsxA11YNoOnchange>;
1370
+ /**
1371
+ * Enforce explicit role property is not the same as implicit/default role property on element.
1372
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-redundant-roles.md
1373
+ */
1374
+ 'jsx-a11y/no-redundant-roles'?: Linter.RuleEntry<JsxA11YNoRedundantRoles>;
1375
+ /**
1376
+ * Enforce that non-interactive, visible elements (such as `<div>`) that have click handlers use the role attribute.
1377
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-static-element-interactions.md
1378
+ */
1379
+ 'jsx-a11y/no-static-element-interactions'?: Linter.RuleEntry<JsxA11YNoStaticElementInteractions>;
1380
+ /**
1381
+ * Enforces using semantic DOM elements over the ARIA `role` property.
1382
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/prefer-tag-over-role.md
1383
+ */
1384
+ 'jsx-a11y/prefer-tag-over-role'?: Linter.RuleEntry<JsxA11YPreferTagOverRole>;
1385
+ /**
1386
+ * Enforce that elements with ARIA roles must have all required attributes for that role.
1387
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/role-has-required-aria-props.md
1388
+ */
1389
+ 'jsx-a11y/role-has-required-aria-props'?: Linter.RuleEntry<JsxA11YRoleHasRequiredAriaProps>;
1390
+ /**
1391
+ * Enforce that elements with explicit or implicit roles defined contain only `aria-*` properties supported by that `role`.
1392
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/role-supports-aria-props.md
1393
+ */
1394
+ 'jsx-a11y/role-supports-aria-props'?: Linter.RuleEntry<JsxA11YRoleSupportsAriaProps>;
1395
+ /**
1396
+ * Enforce `scope` prop is only used on `<th>` elements.
1397
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/scope.md
1398
+ */
1399
+ 'jsx-a11y/scope'?: Linter.RuleEntry<JsxA11YScope>;
1400
+ /**
1401
+ * Enforce `tabIndex` value is not greater than zero.
1402
+ * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/tabindex-no-positive.md
1403
+ */
1404
+ 'jsx-a11y/tabindex-no-positive'?: Linter.RuleEntry<JsxA11YTabindexNoPositive>;
1207
1405
  /**
1208
1406
  * Enforce the consistent use of either double or single quotes in JSX attributes
1209
1407
  * @see https://eslint.org/docs/latest/rules/jsx-quotes
@@ -6658,7 +6856,7 @@ interface RuleOptions {
6658
6856
  * Order of UnoCSS utilities in class attribute
6659
6857
  * @see https://unocss.dev/integrations/eslint#rules
6660
6858
  */
6661
- 'unocss/order'?: Linter.RuleEntry<[]>;
6859
+ 'unocss/order'?: Linter.RuleEntry<UnocssOrder>;
6662
6860
  /**
6663
6861
  * Order of UnoCSS attributes
6664
6862
  * @see https://unocss.dev/integrations/eslint#rules
@@ -7224,6 +7422,16 @@ interface RuleOptions {
7224
7422
  * @see https://eslint.vuejs.org/rules/no-mutating-props.html
7225
7423
  */
7226
7424
  'vue/no-mutating-props'?: Linter.RuleEntry<VueNoMutatingProps>;
7425
+ /**
7426
+ * Disallow negated conditions in `<template>`
7427
+ * @see https://eslint.vuejs.org/rules/no-negated-condition.html
7428
+ */
7429
+ 'vue/no-negated-condition'?: Linter.RuleEntry<[]>;
7430
+ /**
7431
+ * disallow negated conditions in v-if/v-else
7432
+ * @see https://eslint.vuejs.org/rules/no-negated-v-if-condition.html
7433
+ */
7434
+ 'vue/no-negated-v-if-condition'?: Linter.RuleEntry<[]>;
7227
7435
  /**
7228
7436
  * disallow parsing errors in `<template>`
7229
7437
  * @see https://eslint.vuejs.org/rules/no-parsing-error.html
@@ -8162,6 +8370,188 @@ type ArrowSpacing = [] | [{
8162
8370
  before?: boolean;
8163
8371
  after?: boolean;
8164
8372
  }];
8373
+ // ----- astro/jsx-a11y/alt-text -----
8374
+ type AstroJsxA11YAltText = [] | [{
8375
+ elements?: string[];
8376
+ img?: string[];
8377
+ object?: string[];
8378
+ area?: string[];
8379
+ "input[type=\"image\"]"?: string[];
8380
+ [k: string]: unknown | undefined;
8381
+ }];
8382
+ // ----- astro/jsx-a11y/anchor-ambiguous-text -----
8383
+ type AstroJsxA11YAnchorAmbiguousText = [] | [{
8384
+ words?: string[];
8385
+ [k: string]: unknown | undefined;
8386
+ }];
8387
+ // ----- astro/jsx-a11y/anchor-has-content -----
8388
+ type AstroJsxA11YAnchorHasContent = [] | [{
8389
+ components?: string[];
8390
+ [k: string]: unknown | undefined;
8391
+ }];
8392
+ // ----- astro/jsx-a11y/anchor-is-valid -----
8393
+ type AstroJsxA11YAnchorIsValid = [] | [{
8394
+ components?: string[];
8395
+ specialLink?: string[];
8396
+ aspects?: [("noHref" | "invalidHref" | "preferButton"), ...(("noHref" | "invalidHref" | "preferButton"))[]];
8397
+ [k: string]: unknown | undefined;
8398
+ }];
8399
+ // ----- astro/jsx-a11y/aria-activedescendant-has-tabindex -----
8400
+ type AstroJsxA11YAriaActivedescendantHasTabindex = [] | [{
8401
+ [k: string]: unknown | undefined;
8402
+ }];
8403
+ // ----- astro/jsx-a11y/aria-props -----
8404
+ type AstroJsxA11YAriaProps = [] | [{
8405
+ [k: string]: unknown | undefined;
8406
+ }];
8407
+ // ----- astro/jsx-a11y/aria-proptypes -----
8408
+ type AstroJsxA11YAriaProptypes = [] | [{
8409
+ [k: string]: unknown | undefined;
8410
+ }];
8411
+ // ----- astro/jsx-a11y/aria-role -----
8412
+ type AstroJsxA11YAriaRole = [] | [{
8413
+ allowedInvalidRoles?: string[];
8414
+ ignoreNonDOM?: boolean;
8415
+ [k: string]: unknown | undefined;
8416
+ }];
8417
+ // ----- astro/jsx-a11y/aria-unsupported-elements -----
8418
+ type AstroJsxA11YAriaUnsupportedElements = [] | [{
8419
+ [k: string]: unknown | undefined;
8420
+ }];
8421
+ // ----- astro/jsx-a11y/autocomplete-valid -----
8422
+ type AstroJsxA11YAutocompleteValid = [] | [{
8423
+ inputComponents?: string[];
8424
+ [k: string]: unknown | undefined;
8425
+ }];
8426
+ // ----- astro/jsx-a11y/click-events-have-key-events -----
8427
+ type AstroJsxA11YClickEventsHaveKeyEvents = [] | [{
8428
+ [k: string]: unknown | undefined;
8429
+ }];
8430
+ // ----- astro/jsx-a11y/control-has-associated-label -----
8431
+ type AstroJsxA11YControlHasAssociatedLabel = [] | [{
8432
+ labelAttributes?: string[];
8433
+ controlComponents?: string[];
8434
+ ignoreElements?: string[];
8435
+ ignoreRoles?: string[];
8436
+ depth?: number;
8437
+ [k: string]: unknown | undefined;
8438
+ }];
8439
+ // ----- astro/jsx-a11y/heading-has-content -----
8440
+ type AstroJsxA11YHeadingHasContent = [] | [{
8441
+ components?: string[];
8442
+ [k: string]: unknown | undefined;
8443
+ }];
8444
+ // ----- astro/jsx-a11y/html-has-lang -----
8445
+ type AstroJsxA11YHtmlHasLang = [] | [{
8446
+ [k: string]: unknown | undefined;
8447
+ }];
8448
+ // ----- astro/jsx-a11y/iframe-has-title -----
8449
+ type AstroJsxA11YIframeHasTitle = [] | [{
8450
+ [k: string]: unknown | undefined;
8451
+ }];
8452
+ // ----- astro/jsx-a11y/img-redundant-alt -----
8453
+ type AstroJsxA11YImgRedundantAlt = [] | [{
8454
+ components?: string[];
8455
+ words?: string[];
8456
+ [k: string]: unknown | undefined;
8457
+ }];
8458
+ // ----- astro/jsx-a11y/interactive-supports-focus -----
8459
+ type AstroJsxA11YInteractiveSupportsFocus = [] | [{
8460
+ 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")[];
8461
+ [k: string]: unknown | undefined;
8462
+ }];
8463
+ // ----- astro/jsx-a11y/label-has-associated-control -----
8464
+ type AstroJsxA11YLabelHasAssociatedControl = [] | [{
8465
+ labelComponents?: string[];
8466
+ labelAttributes?: string[];
8467
+ controlComponents?: string[];
8468
+ assert?: ("htmlFor" | "nesting" | "both" | "either");
8469
+ depth?: number;
8470
+ [k: string]: unknown | undefined;
8471
+ }];
8472
+ // ----- astro/jsx-a11y/lang -----
8473
+ type AstroJsxA11YLang = [] | [{
8474
+ [k: string]: unknown | undefined;
8475
+ }];
8476
+ // ----- astro/jsx-a11y/media-has-caption -----
8477
+ type AstroJsxA11YMediaHasCaption = [] | [{
8478
+ audio?: string[];
8479
+ video?: string[];
8480
+ track?: string[];
8481
+ [k: string]: unknown | undefined;
8482
+ }];
8483
+ // ----- astro/jsx-a11y/mouse-events-have-key-events -----
8484
+ type AstroJsxA11YMouseEventsHaveKeyEvents = [] | [{
8485
+ hoverInHandlers?: string[];
8486
+ hoverOutHandlers?: string[];
8487
+ [k: string]: unknown | undefined;
8488
+ }];
8489
+ // ----- astro/jsx-a11y/no-access-key -----
8490
+ type AstroJsxA11YNoAccessKey = [] | [{
8491
+ [k: string]: unknown | undefined;
8492
+ }];
8493
+ // ----- astro/jsx-a11y/no-aria-hidden-on-focusable -----
8494
+ type AstroJsxA11YNoAriaHiddenOnFocusable = [] | [{
8495
+ [k: string]: unknown | undefined;
8496
+ }];
8497
+ // ----- astro/jsx-a11y/no-autofocus -----
8498
+ type AstroJsxA11YNoAutofocus = [] | [{
8499
+ ignoreNonDOM?: boolean;
8500
+ [k: string]: unknown | undefined;
8501
+ }];
8502
+ // ----- astro/jsx-a11y/no-distracting-elements -----
8503
+ type AstroJsxA11YNoDistractingElements = [] | [{
8504
+ elements?: ("marquee" | "blink")[];
8505
+ [k: string]: unknown | undefined;
8506
+ }];
8507
+ // ----- astro/jsx-a11y/no-interactive-element-to-noninteractive-role -----
8508
+ type AstroJsxA11YNoInteractiveElementToNoninteractiveRole = [] | [{
8509
+ [k: string]: string[] | undefined;
8510
+ }];
8511
+ // ----- astro/jsx-a11y/no-noninteractive-element-interactions -----
8512
+ type AstroJsxA11YNoNoninteractiveElementInteractions = [] | [{
8513
+ handlers?: string[];
8514
+ [k: string]: unknown | undefined;
8515
+ }];
8516
+ // ----- astro/jsx-a11y/no-noninteractive-element-to-interactive-role -----
8517
+ type AstroJsxA11YNoNoninteractiveElementToInteractiveRole = [] | [{
8518
+ [k: string]: string[] | undefined;
8519
+ }];
8520
+ // ----- astro/jsx-a11y/no-noninteractive-tabindex -----
8521
+ type AstroJsxA11YNoNoninteractiveTabindex = [] | [{
8522
+ roles?: string[];
8523
+ tags?: string[];
8524
+ [k: string]: unknown | undefined;
8525
+ }];
8526
+ // ----- astro/jsx-a11y/no-redundant-roles -----
8527
+ type AstroJsxA11YNoRedundantRoles = [] | [{
8528
+ [k: string]: string[] | undefined;
8529
+ }];
8530
+ // ----- astro/jsx-a11y/no-static-element-interactions -----
8531
+ type AstroJsxA11YNoStaticElementInteractions = [] | [{
8532
+ handlers?: string[];
8533
+ [k: string]: unknown | undefined;
8534
+ }];
8535
+ // ----- astro/jsx-a11y/prefer-tag-over-role -----
8536
+ type AstroJsxA11YPreferTagOverRole = [] | [{
8537
+ [k: string]: unknown | undefined;
8538
+ }];
8539
+ // ----- astro/jsx-a11y/role-has-required-aria-props -----
8540
+ type AstroJsxA11YRoleHasRequiredAriaProps = [] | [{
8541
+ [k: string]: unknown | undefined;
8542
+ }];
8543
+ // ----- astro/jsx-a11y/role-supports-aria-props -----
8544
+ type AstroJsxA11YRoleSupportsAriaProps = [] | [{
8545
+ [k: string]: unknown | undefined;
8546
+ }];
8547
+ // ----- astro/jsx-a11y/scope -----
8548
+ type AstroJsxA11YScope = [] | [{
8549
+ [k: string]: unknown | undefined;
8550
+ }];
8551
+ // ----- astro/jsx-a11y/tabindex-no-positive -----
8552
+ type AstroJsxA11YTabindexNoPositive = [] | [{
8553
+ [k: string]: unknown | undefined;
8554
+ }];
8165
8555
  // ----- astro/prefer-split-class-list -----
8166
8556
  type AstroPreferSplitClassList = [] | [{
8167
8557
  splitLiteral?: boolean;
@@ -9184,6 +9574,209 @@ type JsoncSpaceUnaryOps = [] | [{
9184
9574
  [k: string]: boolean | undefined;
9185
9575
  };
9186
9576
  }];
9577
+ // ----- jsx-a11y/accessible-emoji -----
9578
+ type JsxA11YAccessibleEmoji = [] | [{
9579
+ [k: string]: unknown | undefined;
9580
+ }];
9581
+ // ----- jsx-a11y/alt-text -----
9582
+ type JsxA11YAltText = [] | [{
9583
+ elements?: string[];
9584
+ img?: string[];
9585
+ object?: string[];
9586
+ area?: string[];
9587
+ "input[type=\"image\"]"?: string[];
9588
+ [k: string]: unknown | undefined;
9589
+ }];
9590
+ // ----- jsx-a11y/anchor-ambiguous-text -----
9591
+ type JsxA11YAnchorAmbiguousText = [] | [{
9592
+ words?: string[];
9593
+ [k: string]: unknown | undefined;
9594
+ }];
9595
+ // ----- jsx-a11y/anchor-has-content -----
9596
+ type JsxA11YAnchorHasContent = [] | [{
9597
+ components?: string[];
9598
+ [k: string]: unknown | undefined;
9599
+ }];
9600
+ // ----- jsx-a11y/anchor-is-valid -----
9601
+ type JsxA11YAnchorIsValid = [] | [{
9602
+ components?: string[];
9603
+ specialLink?: string[];
9604
+ aspects?: [("noHref" | "invalidHref" | "preferButton"), ...(("noHref" | "invalidHref" | "preferButton"))[]];
9605
+ [k: string]: unknown | undefined;
9606
+ }];
9607
+ // ----- jsx-a11y/aria-activedescendant-has-tabindex -----
9608
+ type JsxA11YAriaActivedescendantHasTabindex = [] | [{
9609
+ [k: string]: unknown | undefined;
9610
+ }];
9611
+ // ----- jsx-a11y/aria-props -----
9612
+ type JsxA11YAriaProps = [] | [{
9613
+ [k: string]: unknown | undefined;
9614
+ }];
9615
+ // ----- jsx-a11y/aria-proptypes -----
9616
+ type JsxA11YAriaProptypes = [] | [{
9617
+ [k: string]: unknown | undefined;
9618
+ }];
9619
+ // ----- jsx-a11y/aria-role -----
9620
+ type JsxA11YAriaRole = [] | [{
9621
+ allowedInvalidRoles?: string[];
9622
+ ignoreNonDOM?: boolean;
9623
+ [k: string]: unknown | undefined;
9624
+ }];
9625
+ // ----- jsx-a11y/aria-unsupported-elements -----
9626
+ type JsxA11YAriaUnsupportedElements = [] | [{
9627
+ [k: string]: unknown | undefined;
9628
+ }];
9629
+ // ----- jsx-a11y/autocomplete-valid -----
9630
+ type JsxA11YAutocompleteValid = [] | [{
9631
+ inputComponents?: string[];
9632
+ [k: string]: unknown | undefined;
9633
+ }];
9634
+ // ----- jsx-a11y/click-events-have-key-events -----
9635
+ type JsxA11YClickEventsHaveKeyEvents = [] | [{
9636
+ [k: string]: unknown | undefined;
9637
+ }];
9638
+ // ----- jsx-a11y/control-has-associated-label -----
9639
+ type JsxA11YControlHasAssociatedLabel = [] | [{
9640
+ labelAttributes?: string[];
9641
+ controlComponents?: string[];
9642
+ ignoreElements?: string[];
9643
+ ignoreRoles?: string[];
9644
+ depth?: number;
9645
+ [k: string]: unknown | undefined;
9646
+ }];
9647
+ // ----- jsx-a11y/heading-has-content -----
9648
+ type JsxA11YHeadingHasContent = [] | [{
9649
+ components?: string[];
9650
+ [k: string]: unknown | undefined;
9651
+ }];
9652
+ // ----- jsx-a11y/html-has-lang -----
9653
+ type JsxA11YHtmlHasLang = [] | [{
9654
+ [k: string]: unknown | undefined;
9655
+ }];
9656
+ // ----- jsx-a11y/iframe-has-title -----
9657
+ type JsxA11YIframeHasTitle = [] | [{
9658
+ [k: string]: unknown | undefined;
9659
+ }];
9660
+ // ----- jsx-a11y/img-redundant-alt -----
9661
+ type JsxA11YImgRedundantAlt = [] | [{
9662
+ components?: string[];
9663
+ words?: string[];
9664
+ [k: string]: unknown | undefined;
9665
+ }];
9666
+ // ----- jsx-a11y/interactive-supports-focus -----
9667
+ type JsxA11YInteractiveSupportsFocus = [] | [{
9668
+ 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")[];
9669
+ [k: string]: unknown | undefined;
9670
+ }];
9671
+ // ----- jsx-a11y/label-has-associated-control -----
9672
+ type JsxA11YLabelHasAssociatedControl = [] | [{
9673
+ labelComponents?: string[];
9674
+ labelAttributes?: string[];
9675
+ controlComponents?: string[];
9676
+ assert?: ("htmlFor" | "nesting" | "both" | "either");
9677
+ depth?: number;
9678
+ [k: string]: unknown | undefined;
9679
+ }];
9680
+ // ----- jsx-a11y/label-has-for -----
9681
+ type JsxA11YLabelHasFor = [] | [{
9682
+ components?: string[];
9683
+ required?: (("nesting" | "id") | {
9684
+ some: ("nesting" | "id")[];
9685
+ [k: string]: unknown | undefined;
9686
+ } | {
9687
+ every: ("nesting" | "id")[];
9688
+ [k: string]: unknown | undefined;
9689
+ });
9690
+ allowChildren?: boolean;
9691
+ [k: string]: unknown | undefined;
9692
+ }];
9693
+ // ----- jsx-a11y/lang -----
9694
+ type JsxA11YLang = [] | [{
9695
+ [k: string]: unknown | undefined;
9696
+ }];
9697
+ // ----- jsx-a11y/media-has-caption -----
9698
+ type JsxA11YMediaHasCaption = [] | [{
9699
+ audio?: string[];
9700
+ video?: string[];
9701
+ track?: string[];
9702
+ [k: string]: unknown | undefined;
9703
+ }];
9704
+ // ----- jsx-a11y/mouse-events-have-key-events -----
9705
+ type JsxA11YMouseEventsHaveKeyEvents = [] | [{
9706
+ hoverInHandlers?: string[];
9707
+ hoverOutHandlers?: string[];
9708
+ [k: string]: unknown | undefined;
9709
+ }];
9710
+ // ----- jsx-a11y/no-access-key -----
9711
+ type JsxA11YNoAccessKey = [] | [{
9712
+ [k: string]: unknown | undefined;
9713
+ }];
9714
+ // ----- jsx-a11y/no-aria-hidden-on-focusable -----
9715
+ type JsxA11YNoAriaHiddenOnFocusable = [] | [{
9716
+ [k: string]: unknown | undefined;
9717
+ }];
9718
+ // ----- jsx-a11y/no-autofocus -----
9719
+ type JsxA11YNoAutofocus = [] | [{
9720
+ ignoreNonDOM?: boolean;
9721
+ [k: string]: unknown | undefined;
9722
+ }];
9723
+ // ----- jsx-a11y/no-distracting-elements -----
9724
+ type JsxA11YNoDistractingElements = [] | [{
9725
+ elements?: ("marquee" | "blink")[];
9726
+ [k: string]: unknown | undefined;
9727
+ }];
9728
+ // ----- jsx-a11y/no-interactive-element-to-noninteractive-role -----
9729
+ type JsxA11YNoInteractiveElementToNoninteractiveRole = [] | [{
9730
+ [k: string]: string[] | undefined;
9731
+ }];
9732
+ // ----- jsx-a11y/no-noninteractive-element-interactions -----
9733
+ type JsxA11YNoNoninteractiveElementInteractions = [] | [{
9734
+ handlers?: string[];
9735
+ [k: string]: unknown | undefined;
9736
+ }];
9737
+ // ----- jsx-a11y/no-noninteractive-element-to-interactive-role -----
9738
+ type JsxA11YNoNoninteractiveElementToInteractiveRole = [] | [{
9739
+ [k: string]: string[] | undefined;
9740
+ }];
9741
+ // ----- jsx-a11y/no-noninteractive-tabindex -----
9742
+ type JsxA11YNoNoninteractiveTabindex = [] | [{
9743
+ roles?: string[];
9744
+ tags?: string[];
9745
+ [k: string]: unknown | undefined;
9746
+ }];
9747
+ // ----- jsx-a11y/no-onchange -----
9748
+ type JsxA11YNoOnchange = [] | [{
9749
+ [k: string]: unknown | undefined;
9750
+ }];
9751
+ // ----- jsx-a11y/no-redundant-roles -----
9752
+ type JsxA11YNoRedundantRoles = [] | [{
9753
+ [k: string]: string[] | undefined;
9754
+ }];
9755
+ // ----- jsx-a11y/no-static-element-interactions -----
9756
+ type JsxA11YNoStaticElementInteractions = [] | [{
9757
+ handlers?: string[];
9758
+ [k: string]: unknown | undefined;
9759
+ }];
9760
+ // ----- jsx-a11y/prefer-tag-over-role -----
9761
+ type JsxA11YPreferTagOverRole = [] | [{
9762
+ [k: string]: unknown | undefined;
9763
+ }];
9764
+ // ----- jsx-a11y/role-has-required-aria-props -----
9765
+ type JsxA11YRoleHasRequiredAriaProps = [] | [{
9766
+ [k: string]: unknown | undefined;
9767
+ }];
9768
+ // ----- jsx-a11y/role-supports-aria-props -----
9769
+ type JsxA11YRoleSupportsAriaProps = [] | [{
9770
+ [k: string]: unknown | undefined;
9771
+ }];
9772
+ // ----- jsx-a11y/scope -----
9773
+ type JsxA11YScope = [] | [{
9774
+ [k: string]: unknown | undefined;
9775
+ }];
9776
+ // ----- jsx-a11y/tabindex-no-positive -----
9777
+ type JsxA11YTabindexNoPositive = [] | [{
9778
+ [k: string]: unknown | undefined;
9779
+ }];
9187
9780
  // ----- jsx-quotes -----
9188
9781
  type JsxQuotes = [] | [("prefer-single" | "prefer-double")];
9189
9782
  // ----- key-spacing -----
@@ -9959,10 +10552,17 @@ type NoRestrictedExports = [] | [({
9959
10552
  };
9960
10553
  })];
9961
10554
  // ----- no-restricted-globals -----
9962
- type NoRestrictedGlobals = (string | {
10555
+ type NoRestrictedGlobals = ((string | {
9963
10556
  name: string;
9964
10557
  message?: string;
9965
- })[];
10558
+ })[] | [] | [{
10559
+ globals: (string | {
10560
+ name: string;
10561
+ message?: string;
10562
+ })[];
10563
+ checkGlobalObject?: boolean;
10564
+ globalObjects?: string[];
10565
+ }]);
9966
10566
  // ----- no-restricted-imports -----
9967
10567
  type NoRestrictedImports = ((string | {
9968
10568
  name: string;
@@ -10457,6 +11057,8 @@ type OneVar = [] | [(("always" | "never" | "consecutive") | {
10457
11057
  var?: ("always" | "never" | "consecutive");
10458
11058
  let?: ("always" | "never" | "consecutive");
10459
11059
  const?: ("always" | "never" | "consecutive");
11060
+ using?: ("always" | "never" | "consecutive");
11061
+ awaitUsing?: ("always" | "never" | "consecutive");
10460
11062
  } | {
10461
11063
  initialized?: ("always" | "never" | "consecutive");
10462
11064
  uninitialized?: ("always" | "never" | "consecutive");
@@ -15320,6 +15922,12 @@ type UnocssEnforceClassCompile = [] | [{
15320
15922
  prefix?: string;
15321
15923
  enableFix?: boolean;
15322
15924
  }];
15925
+ // ----- unocss/order -----
15926
+ type UnocssOrder = [] | [{
15927
+ unoFunctions?: string[];
15928
+ unoVariables?: string[];
15929
+ [k: string]: unknown | undefined;
15930
+ }];
15323
15931
  // ----- unused-imports/no-unused-imports -----
15324
15932
  type UnusedImportsNoUnusedImports = [] | [(("all" | "local") | {
15325
15933
  args?: ("all" | "after-used" | "none");
@@ -16072,6 +16680,7 @@ type VueNoDeprecatedRouterLinkTagProp = [] | [{
16072
16680
  // ----- vue/no-deprecated-slot-attribute -----
16073
16681
  type VueNoDeprecatedSlotAttribute = [] | [{
16074
16682
  ignore?: string[];
16683
+ ignoreParents?: string[];
16075
16684
  }];
16076
16685
  // ----- vue/no-dupe-keys -----
16077
16686
  type VueNoDupeKeys = [] | [{
@@ -16926,6 +17535,19 @@ interface OptionsVue extends OptionsOverrides {
16926
17535
  */
16927
17536
  a11y?: boolean;
16928
17537
  }
17538
+ interface OptionsJSXA11y extends OptionsOverrides {}
17539
+ interface OptionsJSX {
17540
+ /**
17541
+ * Enable JSX accessibility rules.
17542
+ *
17543
+ * Requires installing:
17544
+ * - `eslint-plugin-jsx-a11y`
17545
+ *
17546
+ * Can be a boolean or an object for custom options and overrides.
17547
+ * @default false
17548
+ */
17549
+ a11y?: boolean | OptionsJSXA11y;
17550
+ }
16929
17551
  type OptionsTypescript = (OptionsTypeScriptWithTypes & OptionsOverrides) | (OptionsTypeScriptParserOptions & OptionsOverrides);
16930
17552
  interface OptionsFormatters {
16931
17553
  /**
@@ -17109,11 +17731,11 @@ interface OptionsConfig extends OptionsComponentExts, OptionsProjectType {
17109
17731
  /**
17110
17732
  * Enable JSX related rules.
17111
17733
  *
17112
- * Currently only stylistic rules are included.
17734
+ * Passing an object to enable JSX accessibility rules.
17113
17735
  *
17114
17736
  * @default true
17115
17737
  */
17116
- jsx?: boolean;
17738
+ jsx?: boolean | OptionsJSX;
17117
17739
  /**
17118
17740
  * Options for eslint-plugin-unicorn.
17119
17741
  *
@@ -17350,7 +17972,7 @@ declare function jsdoc(options?: OptionsStylistic): Promise<TypedFlatConfigItem[
17350
17972
  declare function jsonc(options?: OptionsFiles & OptionsStylistic & OptionsOverrides): Promise<TypedFlatConfigItem[]>;
17351
17973
  //#endregion
17352
17974
  //#region src/configs/jsx.d.ts
17353
- declare function jsx(): Promise<TypedFlatConfigItem[]>;
17975
+ declare function jsx(options?: OptionsJSX): Promise<TypedFlatConfigItem[]>;
17354
17976
  //#endregion
17355
17977
  //#region src/configs/markdown.d.ts
17356
17978
  declare function markdown(options?: OptionsFiles & OptionsComponentExts & OptionsOverrides): Promise<TypedFlatConfigItem[]>;
@@ -17531,4 +18153,4 @@ declare function ensurePackages(packages: (string | undefined)[]): Promise<void>
17531
18153
  declare function isInEditorEnv(): boolean;
17532
18154
  declare function isInGitHooksOrLintStaged(): boolean;
17533
18155
  //#endregion
17534
- export { Awaitable, type ConfigNames, GLOB_ALL_SRC, GLOB_ASTRO, GLOB_ASTRO_TS, GLOB_CSS, GLOB_EXCLUDE, GLOB_GRAPHQL, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_SVELTE, GLOB_SVG, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_XML, GLOB_YAML, OptionsComponentExts, OptionsConfig, OptionsFiles, OptionsFormatters, OptionsHasTypeScript, OptionsIsInEditor, OptionsOverrides, OptionsProjectType, OptionsRegExp, OptionsStylistic, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes, OptionsTypescript, OptionsUnicorn, OptionsUnoCSS, OptionsVue, ResolvedOptions, Rules, StylisticConfig, StylisticConfigDefaults, StylisticOptions, TypedFlatConfigItem, antfu, astro, combine, command, comments, antfu as default, defaultPluginRenaming, disables, ensurePackages, formatters, getOverrides, ignores, imports, interopDefault, isInEditorEnv, isInGitHooksOrLintStaged, isPackageInScope, javascript, jsdoc, jsonc, jsx, markdown, nextjs, node, parserPlain, perfectionist, pnpm, react, regexp, renamePluginInConfigs, renameRules, resolveSubOptions, solid, sortPackageJson, sortTsconfig, stylistic, svelte, test, toArray, toml, typescript, unicorn, unocss, vue, yaml };
18156
+ export { Awaitable, type ConfigNames, GLOB_ALL_SRC, GLOB_ASTRO, GLOB_ASTRO_TS, GLOB_CSS, GLOB_EXCLUDE, GLOB_GRAPHQL, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_SVELTE, GLOB_SVG, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_XML, GLOB_YAML, OptionsComponentExts, OptionsConfig, OptionsFiles, OptionsFormatters, OptionsHasTypeScript, OptionsIsInEditor, OptionsJSX, OptionsJSXA11y, OptionsOverrides, OptionsProjectType, OptionsRegExp, OptionsStylistic, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes, OptionsTypescript, OptionsUnicorn, OptionsUnoCSS, OptionsVue, ResolvedOptions, Rules, StylisticConfig, StylisticConfigDefaults, StylisticOptions, TypedFlatConfigItem, antfu, astro, combine, command, comments, antfu as default, defaultPluginRenaming, disables, ensurePackages, formatters, getOverrides, ignores, imports, interopDefault, isInEditorEnv, isInGitHooksOrLintStaged, isPackageInScope, javascript, jsdoc, jsonc, jsx, markdown, nextjs, node, parserPlain, perfectionist, pnpm, react, regexp, renamePluginInConfigs, renameRules, resolveSubOptions, solid, sortPackageJson, sortTsconfig, stylistic, svelte, test, toArray, toml, typescript, unicorn, unocss, vue, yaml };
package/dist/index.js CHANGED
@@ -928,11 +928,40 @@ async function jsonc(options = {}) {
928
928
 
929
929
  //#endregion
930
930
  //#region src/configs/jsx.ts
931
- async function jsx() {
932
- return [{
931
+ async function jsx(options = {}) {
932
+ const { a11y } = options;
933
+ const baseConfig = {
933
934
  files: [GLOB_JSX, GLOB_TSX],
934
935
  languageOptions: { parserOptions: { ecmaFeatures: { jsx: true } } },
935
- name: "antfu/jsx/setup"
936
+ name: "antfu/jsx/setup",
937
+ plugins: {},
938
+ rules: {}
939
+ };
940
+ if (!a11y) return [baseConfig];
941
+ await ensurePackages(["eslint-plugin-jsx-a11y"]);
942
+ const jsxA11yPlugin = await interopDefault(import("eslint-plugin-jsx-a11y"));
943
+ const a11yConfig = jsxA11yPlugin.flatConfigs.recommended;
944
+ const a11yRules = {
945
+ ...a11yConfig.rules || {},
946
+ ...typeof a11y === "object" && a11y.overrides ? a11y.overrides : {}
947
+ };
948
+ return [{
949
+ ...baseConfig,
950
+ ...a11yConfig,
951
+ files: baseConfig.files,
952
+ languageOptions: {
953
+ ...baseConfig.languageOptions,
954
+ ...a11yConfig.languageOptions
955
+ },
956
+ name: baseConfig.name,
957
+ plugins: {
958
+ ...baseConfig.plugins,
959
+ "jsx-a11y": jsxA11yPlugin
960
+ },
961
+ rules: {
962
+ ...baseConfig.rules,
963
+ ...a11yRules
964
+ }
936
965
  }];
937
966
  }
938
967
 
@@ -2260,7 +2289,7 @@ function antfu(options = {}, ...userConfigs) {
2260
2289
  if (isInEditor) console.log("[@oliver139/eslint-config] Detected running in editor, some rules are disabled.");
2261
2290
  }
2262
2291
  const stylisticOptions = options.stylistic === false ? false : typeof options.stylistic === "object" ? options.stylistic : {};
2263
- if (stylisticOptions && !("jsx" in stylisticOptions)) stylisticOptions.jsx = enableJsx;
2292
+ if (stylisticOptions && !("jsx" in stylisticOptions)) stylisticOptions.jsx = typeof enableJsx === "object" ? true : enableJsx;
2264
2293
  const configs$1 = [];
2265
2294
  if (enableGitignore) if (typeof enableGitignore !== "boolean") configs$1.push(interopDefault(import("eslint-config-flat-gitignore")).then((r) => [r({
2266
2295
  name: "antfu/gitignore",
@@ -2282,7 +2311,7 @@ function antfu(options = {}, ...userConfigs) {
2282
2311
  }));
2283
2312
  if (enableUnicorn) configs$1.push(unicorn(enableUnicorn === true ? {} : enableUnicorn));
2284
2313
  if (enableVue) componentExts.push("vue");
2285
- if (enableJsx) configs$1.push(jsx());
2314
+ if (enableJsx) configs$1.push(jsx(enableJsx === true ? {} : enableJsx));
2286
2315
  if (enableTypeScript) configs$1.push(typescript({
2287
2316
  ...typescriptOptions,
2288
2317
  componentExts,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@oliver139/eslint-config",
3
3
  "type": "module",
4
- "version": "3.0.0",
4
+ "version": "3.1.0",
5
5
  "description": " Oliver's ESLint config preset powered by @antfu/eslint-config",
6
6
  "author": "Oliver Mak <oliver139.working@gmail.com> (https://github.com/oliver139)",
7
7
  "license": "MIT",
@@ -35,6 +35,7 @@
35
35
  "eslint": "^9.10.0",
36
36
  "eslint-plugin-astro": "^1.2.0",
37
37
  "eslint-plugin-format": ">=0.1.0",
38
+ "eslint-plugin-jsx-a11y": ">=6.10.2",
38
39
  "eslint-plugin-react-hooks": "^5.2.0",
39
40
  "eslint-plugin-react-refresh": "^0.4.19",
40
41
  "eslint-plugin-solid": "^0.14.3",
@@ -66,6 +67,9 @@
66
67
  "eslint-plugin-format": {
67
68
  "optional": true
68
69
  },
70
+ "eslint-plugin-jsx-a11y": {
71
+ "optional": true
72
+ },
69
73
  "eslint-plugin-react-hooks": {
70
74
  "optional": true
71
75
  },
@@ -96,29 +100,29 @@
96
100
  "@clack/prompts": "^0.11.0",
97
101
  "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0",
98
102
  "@eslint/markdown": "^7.1.0",
99
- "@stylistic/eslint-plugin": "^5.2.2",
100
- "@typescript-eslint/eslint-plugin": "^8.38.0",
101
- "@typescript-eslint/parser": "^8.38.0",
103
+ "@stylistic/eslint-plugin": "^5.2.3",
104
+ "@typescript-eslint/eslint-plugin": "^8.39.0",
105
+ "@typescript-eslint/parser": "^8.39.0",
102
106
  "@vitest/eslint-plugin": "^1.3.4",
103
107
  "ansis": "^4.1.0",
104
108
  "cac": "^6.7.14",
105
109
  "eslint-config-flat-gitignore": "^2.1.0",
106
- "eslint-flat-config-utils": "^2.1.0",
110
+ "eslint-flat-config-utils": "^2.1.1",
107
111
  "eslint-merge-processors": "^2.0.0",
108
112
  "eslint-plugin-antfu": "^3.1.1",
109
113
  "eslint-plugin-command": "^3.3.1",
110
114
  "eslint-plugin-import-lite": "^0.3.0",
111
- "eslint-plugin-jsdoc": "^51.4.1",
115
+ "eslint-plugin-jsdoc": "^52.0.4",
112
116
  "eslint-plugin-jsonc": "^2.20.1",
113
- "eslint-plugin-n": "^17.21.0",
117
+ "eslint-plugin-n": "^17.21.3",
114
118
  "eslint-plugin-no-only-tests": "^3.3.0",
115
119
  "eslint-plugin-perfectionist": "^4.15.0",
116
120
  "eslint-plugin-pnpm": "^1.1.0",
117
- "eslint-plugin-regexp": "^2.9.0",
121
+ "eslint-plugin-regexp": "^2.10.0",
118
122
  "eslint-plugin-toml": "^0.12.0",
119
123
  "eslint-plugin-unicorn": "^60.0.0",
120
124
  "eslint-plugin-unused-imports": "^4.1.4",
121
- "eslint-plugin-vue": "^10.3.0",
125
+ "eslint-plugin-vue": "^10.4.0",
122
126
  "eslint-plugin-yml": "^1.18.0",
123
127
  "eslint-processor-vue-blocks": "^2.0.0",
124
128
  "globals": "^16.3.0",
@@ -133,15 +137,17 @@
133
137
  "@antfu/ni": "^25.0.0",
134
138
  "@eslint-react/eslint-plugin": "^1.52.3",
135
139
  "@eslint/config-inspector": "^1.1.0",
136
- "@next/eslint-plugin-next": "^15.4.4",
140
+ "@next/eslint-plugin-next": "^15.4.6",
137
141
  "@prettier/plugin-xml": "^3.4.2",
138
- "@types/node": "^24.1.0",
139
- "@unocss/eslint-plugin": "^66.3.3",
142
+ "@types/eslint-plugin-jsx-a11y": "^6.10.0",
143
+ "@types/node": "^24.2.1",
144
+ "@unocss/eslint-plugin": "^66.4.2",
140
145
  "astro-eslint-parser": "^1.2.2",
141
- "bumpp": "^10.2.0",
142
- "eslint": "^9.31.0",
146
+ "bumpp": "^10.2.2",
147
+ "eslint": "^9.33.0",
143
148
  "eslint-plugin-astro": "^1.3.1",
144
149
  "eslint-plugin-format": "^1.0.1",
150
+ "eslint-plugin-jsx-a11y": "^6.10.2",
145
151
  "eslint-plugin-react-hooks": "^5.2.0",
146
152
  "eslint-plugin-react-refresh": "^0.4.20",
147
153
  "eslint-plugin-solid": "^0.14.5",
@@ -150,20 +156,20 @@
150
156
  "eslint-typegen": "^2.3.0",
151
157
  "execa": "^9.6.0",
152
158
  "jiti": "^2.5.1",
153
- "lint-staged": "^16.1.2",
159
+ "lint-staged": "^16.1.5",
154
160
  "pnpm-workspace-yaml": "^1.1.0",
155
161
  "prettier-plugin-astro": "^0.14.1",
156
162
  "prettier-plugin-slidev": "^1.0.5",
157
- "simple-git-hooks": "^2.13.0",
158
- "svelte": "^5.36.16",
159
- "svelte-eslint-parser": "^1.3.0",
163
+ "simple-git-hooks": "^2.13.1",
164
+ "svelte": "^5.38.0",
165
+ "svelte-eslint-parser": "^1.3.1",
160
166
  "tinyglobby": "^0.2.14",
161
- "tsdown": "^0.13.0",
167
+ "tsdown": "^0.14.0",
162
168
  "tsx": "^4.20.3",
163
- "typescript": "^5.8.3",
169
+ "typescript": "^5.9.2",
164
170
  "vitest": "^3.2.4",
165
171
  "vue": "^3.5.18",
166
- "@oliver139/eslint-config": "3.0.0"
172
+ "@oliver139/eslint-config": "3.1.0"
167
173
  },
168
174
  "resolutions": {
169
175
  "eslint": "catalog:peer"