@wistia/oxlint-config 1.8.0 → 1.9.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wistia/oxlint-config",
3
- "version": "1.8.0",
3
+ "version": "1.9.0",
4
4
  "description": "Wistia's Oxlint configurations",
5
5
  "packageManager": "yarn@4.17.1",
6
6
  "type": "module",
@@ -71,15 +71,15 @@
71
71
  }
72
72
  },
73
73
  "dependencies": {
74
- "@eslint-react/eslint-plugin": "^5.10.0",
75
- "@vitest/eslint-plugin": "^1.6.20",
74
+ "@eslint-react/eslint-plugin": "^5.11.3",
75
+ "@vitest/eslint-plugin": "^1.6.21",
76
76
  "confusing-browser-globals": "^1.0.11",
77
77
  "eslint-plugin-barrel-files": "^3.0.1",
78
78
  "eslint-plugin-import-x": "^4.17.1",
79
79
  "eslint-plugin-jest-dom": "^5.5.0",
80
80
  "eslint-plugin-n": "^18.2.1",
81
81
  "eslint-plugin-no-only-tests": "^3.4.0",
82
- "eslint-plugin-playwright": "^2.10.4",
82
+ "eslint-plugin-playwright": "^2.10.5",
83
83
  "eslint-plugin-storybook": "^10.4.6",
84
84
  "eslint-plugin-styled-components": "^0.0.0",
85
85
  "eslint-plugin-styled-components-a11y": "^2.2.1",
@@ -94,7 +94,7 @@
94
94
  "oxlint": "^1.73.0",
95
95
  "oxlint-tsgolint": "^0.24.0",
96
96
  "storybook": "^10.4.6",
97
- "vitest": "^4.1.9"
97
+ "vitest": "^4.1.10"
98
98
  },
99
99
  "engines": {
100
100
  "node": "^20.19.0 || ^22.13.0 || >=24 || >=26"
@@ -191,5 +191,59 @@ export const playwrightRules = {
191
191
  // Require toThrow message
192
192
  // https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/require-to-throw-message.md
193
193
  'eslint-plugin-playwright/require-to-throw-message': 'error',
194
+
195
+ // Disallow duplicate slow() annotations
196
+ // https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-duplicate-slow.md
197
+ 'eslint-plugin-playwright/no-duplicate-slow': 'error',
198
+
199
+ // Enforce blank lines between test blocks
200
+ // https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/consistent-spacing-between-blocks.md
201
+ // Decision: style preference, left to a formatter
202
+ 'eslint-plugin-playwright/consistent-spacing-between-blocks': 'off',
203
+
204
+ // Disallow setup and teardown hooks
205
+ // https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-hooks.md
206
+ // Decision: too strict for general use
207
+ 'eslint-plugin-playwright/no-hooks': 'off',
208
+
209
+ // Disallow configured locators
210
+ // https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-restricted-locators.md
211
+ // Decision: no-op without project-specific options
212
+ 'eslint-plugin-playwright/no-restricted-locators': 'off',
213
+
214
+ // Disallow configured matchers
215
+ // https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-restricted-matchers.md
216
+ // Decision: no-op without project-specific options
217
+ 'eslint-plugin-playwright/no-restricted-matchers': 'off',
218
+
219
+ // Disallow configured ARIA roles in locators
220
+ // https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-restricted-roles.md
221
+ // Decision: no-op without project-specific options
222
+ 'eslint-plugin-playwright/no-restricted-roles': 'off',
223
+
224
+ // Disallow skipped tests
225
+ // https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/no-skipped-test.md
226
+ // Decision: skipping tests is legitimate, matching vitest/no-disabled-tests
227
+ 'eslint-plugin-playwright/no-skipped-test': 'off',
228
+
229
+ // Enforce lowercase titles
230
+ // https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/prefer-lowercase-title.md
231
+ // Decision: too opinionated for general use, matching vitest/prefer-lowercase-title
232
+ 'eslint-plugin-playwright/prefer-lowercase-title': 'off',
233
+
234
+ // Require soft assertions
235
+ // https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/require-soft-assertions.md
236
+ // Decision: too strict for general use
237
+ 'eslint-plugin-playwright/require-soft-assertions': 'off',
238
+
239
+ // Require tags on all tests
240
+ // https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/require-tags.md
241
+ // Decision: too strict for general use
242
+ 'eslint-plugin-playwright/require-tags': 'off',
243
+
244
+ // Require explicit timeout on toPass()
245
+ // https://github.com/playwright-community/eslint-plugin-playwright/blob/main/docs/rules/require-to-pass-timeout.md
246
+ // Decision: too strict for general use, matching vitest/require-test-timeout
247
+ 'eslint-plugin-playwright/require-to-pass-timeout': 'off',
194
248
  },
195
249
  };
package/rules/react.mjs CHANGED
@@ -661,6 +661,10 @@ export const reactRules = {
661
661
  // https://eslint-react.xyz/docs/rules/web-api-no-leaked-resize-observer
662
662
  '@eslint-react/web-api-no-leaked-resize-observer': 'error',
663
663
 
664
+ // Prevent leaked IntersectionObserver instances
665
+ // https://eslint-react.xyz/docs/rules/web-api-no-leaked-intersection-observer
666
+ '@eslint-react/web-api-no-leaked-intersection-observer': 'error',
667
+
664
668
  // Prevent leaked setTimeout calls
665
669
  // https://eslint-react.xyz/docs/rules/web-api-no-leaked-timeout
666
670
  '@eslint-react/web-api-no-leaked-timeout': 'error',
@@ -44,6 +44,11 @@ export const storybookRules = {
44
44
  // https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-renderer-packages.md
45
45
  'eslint-plugin-storybook/no-renderer-packages': 'error',
46
46
 
47
+ // Disallow title property in meta (forces CSF3 auto-generated titles)
48
+ // https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-title-property-in-meta.md
49
+ // Decision: explicit titles are a legitimate pattern
50
+ 'eslint-plugin-storybook/no-title-property-in-meta': 'off',
51
+
47
52
  // No uninstalled addons
48
53
  // https://github.com/storybookjs/eslint-plugin-storybook/blob/main/docs/rules/no-uninstalled-addons.md
49
54
  'eslint-plugin-storybook/no-uninstalled-addons': 'error',
@@ -4,6 +4,10 @@ import { resolvePlugin } from '../resolve-plugin.mjs';
4
4
  export const styledComponentsRules = {
5
5
  jsPlugins: [resolvePlugin('eslint-plugin-styled-components-a11y')],
6
6
  rules: {
7
+ // Enforce emojis are wrapped and given accessible text
8
+ // Decision: deprecated in jsx-a11y
9
+ 'eslint-plugin-styled-components-a11y/accessible-emoji': 'off',
10
+
7
11
  // Enforce that all elements that require alternative text have meaningful information
8
12
  // https://github.com/brendanmorrell/eslint-plugin-styled-components-a11y/blob/master/docs/rules/alt-text.md
9
13
  'eslint-plugin-styled-components-a11y/alt-text': 'error',
@@ -98,6 +102,16 @@ export const styledComponentsRules = {
98
102
  // Enforce label-control association
99
103
  'eslint-plugin-styled-components-a11y/label-has-associated-control': 'error',
100
104
 
105
+ // Enforce label has htmlFor
106
+ // Decision: deprecated in jsx-a11y, superseded by label-has-associated-control
107
+ 'eslint-plugin-styled-components-a11y/label-has-for': 'off',
108
+
109
+ // Enforce lang attribute has a valid value
110
+ // Decision: broken in the plugin — exported but missing from its internal
111
+ // ruleNameToTypeDict, so its create() crashes (path.join on undefined) and
112
+ // oxlint reports a JS-plugin runtime error on every linted file
113
+ 'eslint-plugin-styled-components-a11y/lang': 'off',
114
+
101
115
  // Enforce that media elements have captions
102
116
  'eslint-plugin-styled-components-a11y/media-has-caption': 'error',
103
117
 
@@ -132,6 +146,10 @@ export const styledComponentsRules = {
132
146
  // Enforce tabIndex value is not greater than zero
133
147
  'eslint-plugin-styled-components-a11y/no-noninteractive-tabindex': 'error',
134
148
 
149
+ // Disallow onChange without onBlur
150
+ // Decision: deprecated in jsx-a11y
151
+ 'eslint-plugin-styled-components-a11y/no-onchange': 'off',
152
+
135
153
  // Enforce explicit role is not redundant
136
154
  'eslint-plugin-styled-components-a11y/no-redundant-roles': 'error',
137
155
 
@@ -97,6 +97,11 @@ export const testingLibraryRules = {
97
97
  // https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/prefer-find-by.md
98
98
  'eslint-plugin-testing-library/prefer-find-by': 'error',
99
99
 
100
+ // Prefer implicit assertions from getBy* queries over explicit ones
101
+ // https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/prefer-implicit-assert.md
102
+ // Decision: conflicts with explicit jest-dom assertions
103
+ 'eslint-plugin-testing-library/prefer-implicit-assert': 'off',
104
+
100
105
  // Ensure appropriate get*/query* queries are used with their respective matchers
101
106
  // https://github.com/testing-library/eslint-plugin-testing-library/blob/main/docs/rules/prefer-presence-queries.md
102
107
  'eslint-plugin-testing-library/prefer-presence-queries': 'error',
package/rules/vitest.mjs CHANGED
@@ -704,5 +704,15 @@ export const vitestRules = {
704
704
  // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-title.md
705
705
  // Decision: handled by native vitest/valid-title
706
706
  'vitest-js/valid-title': 'off',
707
+
708
+ // Prefer mockReturnValue() over mockImplementation() returning a value
709
+ // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-mock-return-shorthand.md
710
+ // Decision: handled by native vitest/prefer-mock-return-shorthand
711
+ 'vitest-js/prefer-mock-return-shorthand': 'off',
712
+
713
+ // Report todo tests
714
+ // https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/warn-todo.md
715
+ // Decision: handled by native vitest/warn-todo
716
+ 'vitest-js/warn-todo': 'off',
707
717
  },
708
718
  };