@wistia/oxlint-config 1.11.1 → 1.12.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/CHANGELOG.md ADDED
@@ -0,0 +1,439 @@
1
+ # @wistia/oxlint-config
2
+
3
+ ## 1.12.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#179](https://github.com/wistia/oxlint-config/pull/179) [`2cb8282`](https://github.com/wistia/oxlint-config/commit/2cb8282f1660a8c2b211ef86d7cbb9249500a1ec) Thanks [@okize](https://github.com/okize)! - feat: configure the React Compiler rule split from oxlint v1.79.0
8
+
9
+ - Bump `oxlint` peer minimum to `>= 1.79.0` and `oxfmt` peer minimum to `>= 0.64.0`
10
+ - oxlint v1.79.0 removes `react/react-compiler` (previously `error`) and splits it into 22 per-category React Compiler rules. All 22 are now configured:
11
+ - `error` — the upstream `recommended` preset: `react/error-boundaries`, `react/globals`, `react/immutability`, `react/incompatible-library`, `react/preserve-manual-memoization`, `react/purity`, `react/refs`, `react/set-state-in-effect`, `react/set-state-in-render`, `react/static-components`, `react/unsupported-syntax`, `react/use-memo`, `react/void-use-memo`
12
+ - `off` — duplicate existing native coverage: `react/hooks` (handled by `react/rules-of-hooks`), `react/exhaustive-effect-dependencies` and `react/memo-dependencies` (handled by `react/exhaustive-deps`)
13
+ - `off` — report compiler status rather than code defects: `react/invariant`, `react/todo`, `react/syntax`
14
+ - `off` — upstream keeps these off; revisit if the React Compiler transform is adopted: `react/no-deriving-state-in-effects`, `react/rule-suppression`, `react/capitalized-calls`
15
+ - Ten `@eslint-react` jsPlugin rules superseded by the new native rules flip from `error` to `off`: `error-boundaries`, `globals`, `immutability`, `purity`, `refs`, `set-state-in-effect`, `set-state-in-render`, `static-components`, `unsupported-syntax`, `use-memo`
16
+ - Behavior changes in v1.79.0 to rules already set to `error`, no config change required:
17
+ - `eslint/no-irregular-whitespace` now checks comments by default
18
+ - `eslint/no-redeclare` now runs in ES modules, skipping only the globals check
19
+ - `import/no-named-as-default` now reports local export conflicts
20
+ - `import/no-named-default` now flags type-only named defaults
21
+ - `react/rules-of-hooks` now reports hooks inside `try` blocks
22
+ - `react/exhaustive-deps` now handles destructured object dependencies
23
+
24
+ ## 1.11.2
25
+
26
+ ### Patch Changes
27
+
28
+ - [#173](https://github.com/wistia/oxlint-config/pull/173) [`73b7bd9`](https://github.com/wistia/oxlint-config/commit/73b7bd94a2f9a0ce3a1675eb26a2b9b8392392b9) Thanks [@okize](https://github.com/okize)! - build(deps): upgrade `oxlint` to v1.78.0
29
+
30
+ - Bump `oxlint` peer minimum to `>= 1.78.0` and `oxfmt` peer minimum to `>= 0.63.0`
31
+ - New native rule in v1.78.0, now configured:
32
+ - `eslint/one-var` set to `['error', 'never']` — variables must be declared separately
33
+
34
+ ## 1.11.1
35
+
36
+ ### Patch Changes
37
+
38
+ - [#171](https://github.com/wistia/oxlint-config/pull/171) [`5ca5aa6`](https://github.com/wistia/oxlint-config/commit/5ca5aa6d57b2aa5302bce9e3daae6dd344177e21) Thanks [@okize](https://github.com/okize)! - build(deps): upgrade `oxlint` to v1.77.0
39
+
40
+ - Bump `oxlint` peer minimum to `>= 1.77.0`
41
+ - No new native rules, renames, or removals in v1.77.0 — no rule-file changes required
42
+ - Behavior change in v1.77.0 to a rule already set to `error`, no config change required:
43
+ - `oxc/bad-char-at-comparison` expands coverage ([#25001](https://github.com/wistia/oxlint-config/issues/25001))
44
+
45
+ ## 1.11.0
46
+
47
+ ### Minor Changes
48
+
49
+ - [#163](https://github.com/wistia/oxlint-config/pull/163) [`d17e9db`](https://github.com/wistia/oxlint-config/commit/d17e9db7e783312761bf8a2c589783a66153570d) Thanks [@okize](https://github.com/okize)! - feat: configure new native rules from oxlint v1.76.0
50
+
51
+ - Bump `oxlint` peer minimum to `>= 1.76.0`
52
+ - Configure the new native rules in oxlint v1.76.0:
53
+ - `oxc/bad-match-all-arg`: `error` — flags `matchAll()` with a non-global regex, which throws a `TypeError` at runtime
54
+ - `node/exports-style`: `['error', 'module.exports']`, replacing jsPlugin `n/exports-style` (now `off`) — same option as the previous jsPlugin default, no behavior change
55
+ - `eslint/id-denylist`: `off` — requires a project-specific identifier list; too opinionated for a shared config
56
+ - Behavior changes in v1.76.0 to rules already set to `error`, no config change required:
57
+ - `typescript/no-confusing-non-null-assertion` now also reports `in` and `instanceof`
58
+ - `jsx_a11y/interactive-supports-focus` now matches ESLint behavior for custom components
59
+ - `eslint/func-names` now ignores overloads
60
+ - `unicorn/no-array-reverse` and `unicorn/no-array-sort` replacements are now suggestions rather than auto-fixes
61
+
62
+ ## 1.10.1
63
+
64
+ ### Patch Changes
65
+
66
+ - [#164](https://github.com/wistia/oxlint-config/pull/164) [`5e92c96`](https://github.com/wistia/oxlint-config/commit/5e92c9603eeceb476eb9e1958597473cc597ffea) Thanks [@okize](https://github.com/okize)! - fix: allow both `chalk` import forms in `unicorn/import-style`
67
+
68
+ `chalk` is now `{ named: true, default: true }`. The previous `default: false` errored on `import chalk from 'chalk'` — the pre-built instance that is chalk's entire main API — forcing consumers to add an `oxlint-disable-next-line` on the idiomatic import. `import { Chalk } from 'chalk'` is also valid (it is the class you instantiate for a custom instance), so both forms are now allowed.
69
+
70
+ ## 1.10.0
71
+
72
+ ### Minor Changes
73
+
74
+ - [#156](https://github.com/wistia/oxlint-config/pull/156) [`d1b23e3`](https://github.com/wistia/oxlint-config/commit/d1b23e3f0e6c1606643c12ec04c587b34058e272) Thanks [@okize](https://github.com/okize)! - feat: configure new native rules and bump peer minimums
75
+
76
+ - Bump peer minimums: `oxlint` to `>= 1.75.0`, `oxfmt` to `>= 0.60.0`, `eslint` to `>=10.7.0`
77
+ - Configure the new native rules in oxlint v1.75.0:
78
+ - `node/no-top-level-await`: `['error', { ignoreBin: true }]`, replacing jsPlugin `n/no-top-level-await` (now `off`) — same options, no behavior change
79
+ - `vitest/padding-around-test-blocks`: `error`, replacing jsPlugin `vitest-js/padding-around-test-blocks` (now `off`) — no behavior change
80
+ - `react/function-component-definition`: `off` (style preference)
81
+ - `import/consistent-type-specifier-style` gains a `prefer-top-level-if-only-type-imports` option in v1.75.0; the configured `prefer-top-level` setting is unchanged
82
+
83
+ ## 1.9.1
84
+
85
+ ### Patch Changes
86
+
87
+ - [#153](https://github.com/wistia/oxlint-config/pull/153) [`c7afe2e`](https://github.com/wistia/oxlint-config/commit/c7afe2ef1419c673cf3a5e9ef295ef29cf3aaec8) Thanks [@okize](https://github.com/okize)! - build(deps): upgrade `oxlint` to v1.74.0 and `oxfmt` to v0.59.0
88
+
89
+ - Bump peer minimums: `oxlint` to `>= 1.74.0`, `oxfmt` to `>= 0.59.0`
90
+ - No rule changes: oxlint v1.74.0 adds no new native rules and renames or removes none
91
+ - Behavior changes to already-configured rules, all false-positive or fix improvements: `import/no-duplicates` gains an autofix; `eslint/no-loop-func` no longer errors on catch variables; `eslint/no-unused-vars` counts default-parameter updates as usage; `eslint/no-unreachable` handles `break` in switch statements correctly
92
+ - Drop repo-only `ignorePatterns` from `oxfmt.config.mjs`; oxlint v1.74.0 errors on `ignorePatterns` that cannot match files outside the config directory
93
+
94
+ ## 1.9.0
95
+
96
+ ### Minor Changes
97
+
98
+ - [#150](https://github.com/wistia/oxlint-config/pull/150) [`298a7db`](https://github.com/wistia/oxlint-config/commit/298a7dba27872143f8c1d7905e7609b150dbb149) Thanks [@okize](https://github.com/okize)! - feat: explicitly configure every jsPlugin rule and enforce coverage in tests
99
+
100
+ Every rule of every declared jsPlugin is now explicitly `error` or `off`, matching the existing convention for native oxlint rules. A new test fails when a jsPlugin upgrade adds, renames, or removes rules, and config validation now also fails on jsPlugin runtime errors.
101
+
102
+ New rules set to `error`:
103
+
104
+ - `@eslint-react/web-api-no-leaked-intersection-observer`
105
+ - `eslint-plugin-playwright/no-duplicate-slow`
106
+
107
+ All other previously unconfigured jsPlugin rules are set to `off` with documented decisions, including `eslint-plugin-styled-components-a11y/lang`, which the plugin exports but crashes on when enabled. Alias names exposing an already-configured rule object under a second name (the 53 `@eslint-react/x-*` names) are exempt: the coverage test requires exactly one configured name per rule.
108
+
109
+ ## 1.8.0
110
+
111
+ ### Minor Changes
112
+
113
+ - [#140](https://github.com/wistia/oxlint-config/pull/140) [`7693fd0`](https://github.com/wistia/oxlint-config/commit/7693fd0a4a4f275be0fc7bde7a0d7047979403cf) Thanks [@okize](https://github.com/okize)! - feat: configure new native rules from oxlint v1.73.0
114
+
115
+ New rules, all set to `error`:
116
+
117
+ - `eslint/no-unreachable-loop`
118
+ - `unicorn/explicit-timer-delay`
119
+ - `unicorn/no-confusing-array-with`
120
+
121
+ Peer dependency minimums raised: `oxlint >= 1.73.0`, `oxlint-tsgolint >= 0.24.0`, `oxfmt >= 0.58.0`.
122
+
123
+ ## 1.7.3
124
+
125
+ ### Patch Changes
126
+
127
+ - [#146](https://github.com/wistia/oxlint-config/pull/146) [`950e921`](https://github.com/wistia/oxlint-config/commit/950e92141f2afa1fbc28c100f2cab90d14f2ecf0) Thanks [@okize](https://github.com/okize)! - Resolve jsPlugin package specifiers to absolute paths from within this package (via the new `resolve-plugin.mjs` helper, shipped in the tarball) so plugins load in consumers whose dependency trees nest this package's dependencies — e.g. a consumer on typescript 7 while this package depends on typescript 6. Bare specifiers were resolved by oxlint from the consumer's config location and failed with "Failed to load JS plugin" when the plugin was not hoisted to the consumer's root. Config validation tests now catch jsPlugin load failures, which oxlint prints to stdout — the previous stderr-only assertion passed vacuously.
128
+
129
+ ## 1.7.2
130
+
131
+ ### Patch Changes
132
+
133
+ - [#144](https://github.com/wistia/oxlint-config/pull/144) [`f49c832`](https://github.com/wistia/oxlint-config/commit/f49c832bf31ae62e0bd6cad8c0525e9d21995677) Thanks [@okize](https://github.com/okize)! - Restore the oxfmt config object that v1.7.1 accidentally dropped. `oxfmtConfig.mjs` imported a file that was never committed, so importing `@wistia/oxlint-config/oxfmtConfig` crashed with ERR_MODULE_NOT_FOUND. The config object is inlined again (named `oxfmtConfig` export and default export, matching the type declarations), this repo now formats itself with the shipped config, and a smoke test imports the module so a broken import graph can't ship again.
134
+
135
+ ## 1.7.1
136
+
137
+ ### Patch Changes
138
+
139
+ - [#141](https://github.com/wistia/oxlint-config/pull/141) [`fc7a1af`](https://github.com/wistia/oxlint-config/commit/fc7a1af9f2d7d6e4bf91a23d0ec0892f817d0413) Thanks [@okize](https://github.com/okize)! - Anchor the package.json `files` patterns to the package root. Yarn matches unanchored entries gitignore-style at any depth, so the bare `index.mjs` pattern pulled `test/fixtures/**/index.mjs` files into the published tarball.
140
+
141
+ ## 1.7.0
142
+
143
+ ### Minor Changes
144
+
145
+ - [#135](https://github.com/wistia/oxlint-config/pull/135) [`81032aa`](https://github.com/wistia/oxlint-config/commit/81032aa26552bb686ee965c4de193a6c49fd994c) Thanks [@okize](https://github.com/okize)! - feat: configure new `node` and `unicorn` native rules
146
+
147
+ ## 1.6.1
148
+
149
+ ### Patch Changes
150
+
151
+ - [#132](https://github.com/wistia/oxlint-config/pull/132) [`e074e30`](https://github.com/wistia/oxlint-config/commit/e074e30c67b0433bf855bbe2c0e04ff91135d9bc) Thanks [@okize](https://github.com/okize)! - fix: ship type declarations for the `oxfmtConfig` subpath export
152
+
153
+ ## 1.6.0
154
+
155
+ ### Minor Changes
156
+
157
+ - [#130](https://github.com/wistia/oxlint-config/pull/130) [`f5940f8`](https://github.com/wistia/oxlint-config/commit/f5940f8816ff65f4a50e462e5ec20e4f8e7f7849) Thanks [@okize](https://github.com/okize)! - feat: add standardized `Oxfmt` config to exports
158
+
159
+ ## 1.5.0
160
+
161
+ ### Minor Changes
162
+
163
+ - [#128](https://github.com/wistia/oxlint-config/pull/128) [`44eeb0d`](https://github.com/wistia/oxlint-config/commit/44eeb0d70e4f2703257db58a43eb048fa2225bf8) Thanks [@okize](https://github.com/okize)! - feat: configure new unicorn rules
164
+
165
+ ## 1.4.0
166
+
167
+ ### Minor Changes
168
+
169
+ - [#125](https://github.com/wistia/oxlint-config/pull/125) [`784a928`](https://github.com/wistia/oxlint-config/commit/784a928b4e213d43f719c7bc0a0ad42a872530e2) Thanks [@okize](https://github.com/okize)! - feat: rely on oxfmt for import ordering, disable `import-x-js/order`
170
+
171
+ ## 1.3.0
172
+
173
+ ### Minor Changes
174
+
175
+ - [#117](https://github.com/wistia/oxlint-config/pull/117) [`cd93a96`](https://github.com/wistia/oxlint-config/commit/cd93a969c125bf382ff0c9174f3389acd9f7045f) Thanks [@okize](https://github.com/okize)! - feat: add `custom/match-exported` rule via custom local jsPlugin
176
+
177
+ ## 1.2.0
178
+
179
+ ### Minor Changes
180
+
181
+ - [#121](https://github.com/wistia/oxlint-config/pull/121) [`278e34b`](https://github.com/wistia/oxlint-config/commit/278e34bb9d2bc4ae52e49835e34b5d69005668d2) Thanks [@okize](https://github.com/okize)! - feat(import): order type imports before runtime imports
182
+
183
+ ## 1.1.1
184
+
185
+ ### Patch Changes
186
+
187
+ - [#119](https://github.com/wistia/oxlint-config/pull/119) [`7724ae5`](https://github.com/wistia/oxlint-config/commit/7724ae51fa3328cb5637cb982354faedcc189fe1) Thanks [@okize](https://github.com/okize)! - fix(node): configure native node/callback-return and reconcile n/ jsPlugin inversions
188
+
189
+ ## 1.1.0
190
+
191
+ ### Minor Changes
192
+
193
+ - [#118](https://github.com/wistia/oxlint-config/pull/118) [`d057248`](https://github.com/wistia/oxlint-config/commit/d057248d21d0a9282d76dc3775fa81a744c7354f) Thanks [@okize](https://github.com/okize)! - feat: configure new `react` and `unicorn` rules
194
+
195
+ ## 1.0.5
196
+
197
+ ### Patch Changes
198
+
199
+ - [#111](https://github.com/wistia/oxlint-config/pull/111) [`0f7b064`](https://github.com/wistia/oxlint-config/commit/0f7b064f387c44659869b01315fe5392b2a45311) Thanks [@okize](https://github.com/okize)! - fix: enable `eslint/curly` rule
200
+
201
+ ## 1.0.4
202
+
203
+ ### Patch Changes
204
+
205
+ - [#109](https://github.com/wistia/oxlint-config/pull/109) [`616754c`](https://github.com/wistia/oxlint-config/commit/616754c259339bba4aee78310f444553ca44e4c0) Thanks [@okize](https://github.com/okize)! - fix: update `eslint/no-param-reassign` to be a little looser and avoid maintaining an allowlist
206
+
207
+ ## 1.0.3
208
+
209
+ ### Patch Changes
210
+
211
+ - [#107](https://github.com/wistia/oxlint-config/pull/107) [`bb9b52d`](https://github.com/wistia/oxlint-config/commit/bb9b52d0abea040f37125731abb63d9aa23c85ad) Thanks [@okize](https://github.com/okize)! - fix: disable unicorn/no-useless-promise-resolve-reject (conflicts with require-await)
212
+
213
+ ## 1.0.2
214
+
215
+ ### Patch Changes
216
+
217
+ - [#105](https://github.com/wistia/oxlint-config/pull/105) [`ebf6def`](https://github.com/wistia/oxlint-config/commit/ebf6def36e1ccda8d483b5aec9aa7aa5a4074551) Thanks [@okize](https://github.com/okize)! - fix: reconcile rules with oxlint v1.69.0
218
+ - Configure new native `eslint/prefer-named-capture-group` (off, too strict)
219
+ - Configure new native `typescript/method-signature-style` (error)
220
+ - Bump peer minimums: `eslint` to `>= 10.4.1`, `oxlint` to `>= 1.69.0`
221
+ - Update `validate-configs` test to detect config rejection via stderr instead of the removed "Found" summary line
222
+
223
+ ## 1.0.1
224
+
225
+ ### Patch Changes
226
+
227
+ - [#102](https://github.com/wistia/oxlint-config/pull/102) [`9129584`](https://github.com/wistia/oxlint-config/commit/9129584bda88123f8df500b1f0ff0e54bde3dfee) Thanks [@okize](https://github.com/okize)! - fix: add `eslint` package as a peerDependency
228
+
229
+ ## 1.0.0
230
+
231
+ ### Major Changes
232
+
233
+ - [#100](https://github.com/wistia/oxlint-config/pull/100) [`b536b56`](https://github.com/wistia/oxlint-config/commit/b536b567e0ec4f8ca6ab3721cba92009cb3f7966) Thanks [@okize](https://github.com/okize)! - feat!: no breaking changes from previous release, just declaring this package as v1
234
+
235
+ ## 0.9.4
236
+
237
+ ### Patch Changes
238
+
239
+ - [#98](https://github.com/wistia/oxlint-config/pull/98) [`3a5d713`](https://github.com/wistia/oxlint-config/commit/3a5d713e508991a359fffee42708810587686bb2) Thanks [@okize](https://github.com/okize)! - fix: enable & disable various rules
240
+
241
+ ## 0.9.3
242
+
243
+ ### Patch Changes
244
+
245
+ - [#96](https://github.com/wistia/oxlint-config/pull/96) [`684b5be`](https://github.com/wistia/oxlint-config/commit/684b5be2d25a8299775b369d46a81e5a6b4a761a) Thanks [@okize](https://github.com/okize)! - fix: `eslint/no-useless-assignment` rule should only be `off` in typescript config
246
+
247
+ ## 0.9.2
248
+
249
+ ### Patch Changes
250
+
251
+ - [#93](https://github.com/wistia/oxlint-config/pull/93) [`1d76d7f`](https://github.com/wistia/oxlint-config/commit/1d76d7f455e9260f0f45eeb210d546b1148c9a62) Thanks [@okize](https://github.com/okize)! - fix: disable `unicorn(no-useless-switch-case)` rule
252
+
253
+ ## 0.9.1
254
+
255
+ ### Patch Changes
256
+
257
+ - [#91](https://github.com/wistia/oxlint-config/pull/91) [`f3824be`](https://github.com/wistia/oxlint-config/commit/f3824be1dec1fae0f15c7b8d4cf7a0f9feec7a24) Thanks [@okize](https://github.com/okize)! - fix: disable `unicorn/prefer-global-this` rule and modify `unicorn/import-style` rule
258
+
259
+ ## 0.9.0
260
+
261
+ ### Minor Changes
262
+
263
+ - [#88](https://github.com/wistia/oxlint-config/pull/88) [`1d74f94`](https://github.com/wistia/oxlint-config/commit/1d74f94158e19e05de2affd31cde831b593a0518) Thanks [@okize](https://github.com/okize)! - feat: ensure unicorn rules work correctly
264
+
265
+ ## 0.8.2
266
+
267
+ ### Patch Changes
268
+
269
+ - [#85](https://github.com/wistia/oxlint-config/pull/85) [`e07db56`](https://github.com/wistia/oxlint-config/commit/e07db56628aaf903f531af34eeeafdcc12d6a6a8) Thanks [@okize](https://github.com/okize)! - fix: update `vitest` config to favor native rules over plugin
270
+
271
+ ## 0.8.1
272
+
273
+ ### Patch Changes
274
+
275
+ - [#82](https://github.com/wistia/oxlint-config/pull/82) [`ccb5847`](https://github.com/wistia/oxlint-config/commit/ccb58478051486be6593b4533084d849c2c69cbc) Thanks [@okize](https://github.com/okize)! - fix: disable `no-extraneous-dependencies` and leave it to knip to figure out
276
+
277
+ ## 0.8.0
278
+
279
+ ### Minor Changes
280
+
281
+ - [#78](https://github.com/wistia/oxlint-config/pull/78) [`6b77af0`](https://github.com/wistia/oxlint-config/commit/6b77af04ca3b1ba6877fd17af7bdc4996f3b8b45) Thanks [@okize](https://github.com/okize)! - feat: add native oxlint rules for eslint, import, jsx-a11y, react, and vitest plugins
282
+
283
+ ## 0.7.5
284
+
285
+ ### Patch Changes
286
+
287
+ - [#72](https://github.com/wistia/oxlint-config/pull/72) [`46ca002`](https://github.com/wistia/oxlint-config/commit/46ca00287af1f89ece05124689af0592226f849a) Thanks [@okize](https://github.com/okize)! - fix: enable rules that should not have been set to `off`
288
+
289
+ ## 0.7.4
290
+
291
+ ### Patch Changes
292
+
293
+ - [#68](https://github.com/wistia/oxlint-config/pull/68) [`e437df8`](https://github.com/wistia/oxlint-config/commit/e437df8cf031a45203518178e63cb6b6e7e5df46) Thanks [@okize](https://github.com/okize)! - fix: explicitly configure all missing native oxlint rules to prevent default warn severity
294
+
295
+ ## 0.7.3
296
+
297
+ ### Patch Changes
298
+
299
+ - [#66](https://github.com/wistia/oxlint-config/pull/66) [`85054b9`](https://github.com/wistia/oxlint-config/commit/85054b9dc07779183a453509fc21db345fd35fd3) Thanks [@okize](https://github.com/okize)! - fix: remove jest plugin, use vitest-only rules to eliminate warn-level defaults
300
+
301
+ ## 0.7.2
302
+
303
+ ### Patch Changes
304
+
305
+ - [#63](https://github.com/wistia/oxlint-config/pull/63) [`c21219e`](https://github.com/wistia/oxlint-config/commit/c21219e9539c152ddc2a0e29b241e76874459984) Thanks [@okize](https://github.com/okize)! - fix: enable `vitest/valid-title` & disable `jest/valid-title`
306
+
307
+ ## 0.7.1
308
+
309
+ ### Patch Changes
310
+
311
+ - [#61](https://github.com/wistia/oxlint-config/pull/61) [`b852e47`](https://github.com/wistia/oxlint-config/commit/b852e47c11bb3d56792530e83c0f65158c8aa705) Thanks [@okize](https://github.com/okize)! - fix: `n/no-process-exit` should be set to error
312
+
313
+ ## 0.7.0
314
+
315
+ ### Minor Changes
316
+
317
+ - [#58](https://github.com/wistia/oxlint-config/pull/58) [`3769a02`](https://github.com/wistia/oxlint-config/commit/3769a02b66b1bcab0531d8a7711f3fad40b6b51d) Thanks [@okize](https://github.com/okize)! - feat: update react rules for new @eslint-react/eslint-plugin version
318
+
319
+ - [#56](https://github.com/wistia/oxlint-config/pull/56) [`6562106`](https://github.com/wistia/oxlint-config/commit/65621065c5bb49b851bf0e937cb8e9d711ed1282) Thanks [@okize](https://github.com/okize)! - feat: update `vitest` rules
320
+
321
+ ## 0.6.1
322
+
323
+ ### Patch Changes
324
+
325
+ - [#52](https://github.com/wistia/oxlint-config/pull/52) [`675ef21`](https://github.com/wistia/oxlint-config/commit/675ef215854ad1ceca79212f8e748489bddf4676) Thanks [@okize](https://github.com/okize)! - fix: add missing rules
326
+
327
+ ## 0.6.0
328
+
329
+ ### Minor Changes
330
+
331
+ - [#48](https://github.com/wistia/oxlint-config/pull/48) [`98e2c92`](https://github.com/wistia/oxlint-config/commit/98e2c920dc03f19996869b368ca095b96ab8f19f) Thanks [@okize](https://github.com/okize)! - feat: enable `no-restricted-globals` rule
332
+
333
+ ## 0.5.1
334
+
335
+ ### Patch Changes
336
+
337
+ - [#44](https://github.com/wistia/oxlint-config/pull/44) [`1c264a3`](https://github.com/wistia/oxlint-config/commit/1c264a312de7a34eadb84fe8ce889d464e1288ed) Thanks [@okize](https://github.com/okize)! - fix: allow 'log', 'warn' & 'error' methods in `no-console` rule
338
+
339
+ ## 0.5.0
340
+
341
+ ### Minor Changes
342
+
343
+ - [#42](https://github.com/wistia/oxlint-config/pull/42) [`8682859`](https://github.com/wistia/oxlint-config/commit/8682859e8680595e0068820b25cd947b90f1e5da) Thanks [@okize](https://github.com/okize)! - feat: turn off `eslint/no-magic-numbers` since it is frequently disabled
344
+
345
+ ## 0.4.7
346
+
347
+ ### Patch Changes
348
+
349
+ - [#40](https://github.com/wistia/oxlint-config/pull/40) [`88b04c3`](https://github.com/wistia/oxlint-config/commit/88b04c30783116b215436624d3bc49549848d25e) Thanks [@okize](https://github.com/okize)! - fix: `eslint/no-unused-vars` was intended to be `off`
350
+
351
+ ## 0.4.6
352
+
353
+ ### Patch Changes
354
+
355
+ - [#38](https://github.com/wistia/oxlint-config/pull/38) [`db05ae2`](https://github.com/wistia/oxlint-config/commit/db05ae2fc9f10a28f3b612729a60a3065eff2036) Thanks [@okize](https://github.com/okize)! - fix: do not disable base rules in typescript config that do not have an equivalent rule at this point
356
+
357
+ ## 0.4.5
358
+
359
+ ### Patch Changes
360
+
361
+ - [#36](https://github.com/wistia/oxlint-config/pull/36) [`49d2b43`](https://github.com/wistia/oxlint-config/commit/49d2b43295f6039991c65818aa29becdda096019) Thanks [@okize](https://github.com/okize)! - fix: disable @eslint-react rules that are covered by oxlint rules already
362
+
363
+ ## 0.4.4
364
+
365
+ ### Patch Changes
366
+
367
+ - [#34](https://github.com/wistia/oxlint-config/pull/34) [`16415e1`](https://github.com/wistia/oxlint-config/commit/16415e14b4a6fa120e642de11753bee4f8033a8d) Thanks [@okize](https://github.com/okize)! - fix: disable react rules that require type information
368
+
369
+ ## 0.4.3
370
+
371
+ ### Patch Changes
372
+
373
+ - [#32](https://github.com/wistia/oxlint-config/pull/32) [`3762563`](https://github.com/wistia/oxlint-config/commit/3762563104abe0155bd7c1b2ba4cb6fc9b3183ac) Thanks [@okize](https://github.com/okize)! - fix: add explicit severity for all oxlint default-enabled rules missing from config (vitest, typescript, unicorn)
374
+
375
+ ## 0.4.2
376
+
377
+ ### Patch Changes
378
+
379
+ - [#30](https://github.com/wistia/oxlint-config/pull/30) [`b797b64`](https://github.com/wistia/oxlint-config/commit/b797b6442d5991e2c42e5c27ae719ebc3cc9d7a1) Thanks [@okize](https://github.com/okize)! - fix: add missing `vitest/require-mock-type-parameters` rule
380
+
381
+ ## 0.4.1
382
+
383
+ ### Patch Changes
384
+
385
+ - [#28](https://github.com/wistia/oxlint-config/pull/28) [`8acbf9d`](https://github.com/wistia/oxlint-config/commit/8acbf9d653775c9d34fafc4bfd5438e538fdd52a) Thanks [@okize](https://github.com/okize)! - fix: add missing eslint-react rules
386
+
387
+ ## 0.4.0
388
+
389
+ ### Minor Changes
390
+
391
+ - [#23](https://github.com/wistia/oxlint-config/pull/23) [`14b32be`](https://github.com/wistia/oxlint-config/commit/14b32bee07f385324778e2646aa7ba740e4c8089) Thanks [@okize](https://github.com/okize)! - feat!: enable type-aware linting and type checking via tsgolint
392
+
393
+ ## 0.3.5
394
+
395
+ ### Patch Changes
396
+
397
+ - [#19](https://github.com/wistia/oxlint-config/pull/19) [`f4c3cad`](https://github.com/wistia/oxlint-config/commit/f4c3cad67a3186013ca94e717225c3dd220234e2) Thanks [@okize](https://github.com/okize)! - feat: switch to `overrides` and add file paths for `extends` in consumer configs
398
+
399
+ ## 0.3.4
400
+
401
+ ### Patch Changes
402
+
403
+ - [#16](https://github.com/wistia/oxlint-config/pull/16) [`6ac9316`](https://github.com/wistia/oxlint-config/commit/6ac931625b570aaae3223688fe49cd12effabfc2) Thanks [@okize](https://github.com/okize)! - feat: add filenames and barrel-files rules via jsPlugins
404
+
405
+ ## 0.3.3
406
+
407
+ ### Patch Changes
408
+
409
+ - [#14](https://github.com/wistia/oxlint-config/pull/14) [`47ee30a`](https://github.com/wistia/oxlint-config/commit/47ee30a612d85367b2027c4fcf895af54fce9ab2) Thanks [@okize](https://github.com/okize)! - feat: include more rules from `import-x` and `eslint` base rules
410
+
411
+ ## 0.3.2
412
+
413
+ ### Patch Changes
414
+
415
+ - [#12](https://github.com/wistia/oxlint-config/pull/12) [`650b7cb`](https://github.com/wistia/oxlint-config/commit/650b7cbe893a5006aafabc543afc20f000378abb) Thanks [@okize](https://github.com/okize)! - feat: add type declarations for TypeScript consumers
416
+
417
+ ## 0.3.1
418
+
419
+ ### Patch Changes
420
+
421
+ - [#10](https://github.com/wistia/oxlint-config/pull/10) [`ad37d45`](https://github.com/wistia/oxlint-config/commit/ad37d45db5911119cc9d7725ada72b94ab22a311) Thanks [@okize](https://github.com/okize)! - fix: convert typescript to ESM javascript
422
+
423
+ ## 0.3.0
424
+
425
+ ### Minor Changes
426
+
427
+ - [#8](https://github.com/wistia/oxlint-config/pull/8) [`b4075f2`](https://github.com/wistia/oxlint-config/commit/b4075f22baf55fd80c196665250279620ecb5f97) Thanks [@okize](https://github.com/okize)! - feat: replace JSONC configs with TypeScript
428
+
429
+ ## 0.2.0
430
+
431
+ ### Minor Changes
432
+
433
+ - 10f14ec: feat: add config & rulesets for styled-components, testing-library, playwright & storybook'
434
+
435
+ ## 0.1.0
436
+
437
+ ### Minor Changes
438
+
439
+ - 25713f4: feat: shared oxlint configs for javascript, typescript, react, node, and vitest
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wistia/oxlint-config",
3
- "version": "1.11.1",
3
+ "version": "1.12.0",
4
4
  "description": "Wistia's Oxlint configurations",
5
5
  "keywords": [
6
6
  "linter",
@@ -92,19 +92,19 @@
92
92
  "typescript": "^6.0.3"
93
93
  },
94
94
  "devDependencies": {
95
- "@changesets/changelog-github": "^0.7.0",
96
- "@changesets/cli": "^2.31.1",
95
+ "@changesets/changelog-github": "^1.0.0",
96
+ "@changesets/cli": "^3.0.0",
97
97
  "eslint": "^10.8.0",
98
- "oxfmt": "^0.62.0",
99
- "oxlint": "^1.77.0",
98
+ "oxfmt": "^0.64.0",
99
+ "oxlint": "^1.79.0",
100
100
  "oxlint-tsgolint": "^7.0.2001",
101
101
  "storybook": "^10.5.5",
102
102
  "vitest": "^4.1.10"
103
103
  },
104
104
  "peerDependencies": {
105
105
  "eslint": ">= 10.8.0",
106
- "oxfmt": ">= 0.62.0",
107
- "oxlint": ">= 1.77.0",
106
+ "oxfmt": ">= 0.64.0",
107
+ "oxlint": ">= 1.79.0",
108
108
  "oxlint-tsgolint": ">= 7.0.2001"
109
109
  },
110
110
  "peerDependenciesMeta": {
@@ -116,4 +116,4 @@
116
116
  "node": "^20.19.0 || ^22.13.0 || >=24 || >=26"
117
117
  },
118
118
  "packageManager": "yarn@4.18.0"
119
- }
119
+ }
package/rules/base.mjs CHANGED
@@ -582,6 +582,10 @@ export const baseRules = {
582
582
  // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-with.html
583
583
  'eslint/no-with': 'error',
584
584
 
585
+ // Enforce variables to be declared separately
586
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/one-var.html
587
+ 'eslint/one-var': ['error', 'never'],
588
+
585
589
  // Require or disallow assignment operator shorthand where possible
586
590
  // https://oxc.rs/docs/guide/usage/linter/rules/eslint/operator-assignment.html
587
591
  'eslint/operator-assignment': ['error', 'always'],
package/rules/react.mjs CHANGED
@@ -279,9 +279,104 @@ export const reactRules = {
279
279
  // Decision: too opinionated for general use
280
280
  'react/state-in-constructor': 'off',
281
281
 
282
- // Surface code that violates the Rules of React the compiler relies on
283
- // https://oxc.rs/docs/guide/usage/linter/rules/react/react-compiler.html
284
- 'react/react-compiler': 'error',
282
+ // --- React Compiler rules ---
283
+
284
+ // Validate usage of Error Boundaries instead of try/catch for child errors
285
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/error-boundaries.html
286
+ 'react/error-boundaries': 'error',
287
+
288
+ // Restrict reading or writing mutable globals during render
289
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/globals.html
290
+ 'react/globals': 'error',
291
+
292
+ // Disallow mutating props, state, and other immutable values
293
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/immutability.html
294
+ 'react/immutability': 'error',
295
+
296
+ // Flag library APIs known to be incompatible with memoization
297
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/incompatible-library.html
298
+ 'react/incompatible-library': 'error',
299
+
300
+ // Ensure the compiler's inferred dependencies preserve existing manual memoization
301
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/preserve-manual-memoization.html
302
+ 'react/preserve-manual-memoization': 'error',
303
+
304
+ // Validate that components and hooks are pure
305
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/purity.html
306
+ 'react/purity': 'error',
307
+
308
+ // Validate that refs are not read or written during render
309
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/refs.html
310
+ 'react/refs': 'error',
311
+
312
+ // Disallow calling setState synchronously in an effect
313
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/set-state-in-effect.html
314
+ 'react/set-state-in-effect': 'error',
315
+
316
+ // Disallow setting state during render
317
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/set-state-in-render.html
318
+ 'react/set-state-in-render': 'error',
319
+
320
+ // Enforce static component definitions
321
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/static-components.html
322
+ 'react/static-components': 'error',
323
+
324
+ // Disallow syntax that React does not support
325
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/unsupported-syntax.html
326
+ 'react/unsupported-syntax': 'error',
327
+
328
+ // Validate that useMemo callbacks return a value
329
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/use-memo.html
330
+ 'react/use-memo': 'error',
331
+
332
+ // Validate that useMemo results are actually used
333
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/void-use-memo.html
334
+ 'react/void-use-memo': 'error',
335
+
336
+ // Compiler-powered Rules of Hooks validation
337
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/hooks.html
338
+ // Decision: handled by native react/rules-of-hooks
339
+ 'react/hooks': 'off',
340
+
341
+ // Validate effect dependency arrays are exhaustive without extraneous values
342
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/exhaustive-effect-dependencies.html
343
+ // Decision: handled by native react/exhaustive-deps
344
+ 'react/exhaustive-effect-dependencies': 'off',
345
+
346
+ // Validate useMemo/useCallback dependency lists
347
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/memo-dependencies.html
348
+ // Decision: handled by native react/exhaustive-deps
349
+ 'react/memo-dependencies': 'off',
350
+
351
+ // Report internal React Compiler invariant violations
352
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/invariant.html
353
+ // Decision: reports bugs in the compiler itself, not code defects
354
+ 'react/invariant': 'off',
355
+
356
+ // Report code the React Compiler cannot analyze yet
357
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/todo.html
358
+ // Decision: reports compiler bail-outs, not code defects
359
+ 'react/todo': 'off',
360
+
361
+ // Report invalid JavaScript the compiler encountered (e.g. const reassignment)
362
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/syntax.html
363
+ // Decision: invalid JS is already reported by base eslint rules like no-const-assign
364
+ 'react/syntax': 'off',
365
+
366
+ // Disallow deriving values from state inside an effect and storing them back into state
367
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/no-deriving-state-in-effects.html
368
+ // Decision: upstream preset keeps this off; enable if we adopt the React Compiler
369
+ 'react/no-deriving-state-in-effects': 'off',
370
+
371
+ // Report suppressions of React rules inside components (compiler skips those functions)
372
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/rule-suppression.html
373
+ // Decision: upstream preset keeps this off; enable if we adopt the React Compiler
374
+ 'react/rule-suppression': 'off',
375
+
376
+ // Disallow calling capitalized functions directly during render
377
+ // https://oxc.rs/docs/guide/usage/linter/rules/react/capitalized-calls.html
378
+ // Decision: upstream preset keeps this off; enable if we adopt the React Compiler
379
+ 'react/capitalized-calls': 'off',
285
380
 
286
381
  // Disallow string literals in JSX
287
382
  // https://oxc.rs/docs/guide/usage/linter/rules/react/jsx-no-literals.html
@@ -292,11 +387,13 @@ export const reactRules = {
292
387
 
293
388
  // Validates usage of Error Boundaries instead of try/catch for child errors
294
389
  // https://eslint-react.xyz/docs/rules/error-boundaries
295
- '@eslint-react/error-boundaries': 'error',
390
+ // Decision: handled by native react/error-boundaries
391
+ '@eslint-react/error-boundaries': 'off',
296
392
 
297
393
  // Restricts usage of global variables in React components
298
394
  // https://eslint-react.xyz/docs/rules/globals
299
- '@eslint-react/globals': 'error',
395
+ // Decision: handled by native react/globals
396
+ '@eslint-react/globals': 'off',
300
397
 
301
398
  // Verify the list of the dependencies for Hooks like useEffect and similar
302
399
  // https://eslint-react.xyz/docs/rules/exhaustive-deps
@@ -305,7 +402,8 @@ export const reactRules = {
305
402
 
306
403
  // Validates against mutating props, state, and other immutable values
307
404
  // https://eslint-react.xyz/docs/rules/immutability
308
- '@eslint-react/immutability': 'error',
405
+ // Decision: handled by native react/immutability
406
+ '@eslint-react/immutability': 'off',
309
407
 
310
408
  // Prevent accidental JS comments from being injected into JSX as text
311
409
  // https://eslint-react.xyz/docs/rules/jsx-no-comment-textnodes
@@ -520,11 +618,13 @@ export const reactRules = {
520
618
 
521
619
  // Validates that components/hooks are pure
522
620
  // https://eslint-react.xyz/docs/rules/purity
523
- '@eslint-react/purity': 'error',
621
+ // Decision: handled by native react/purity
622
+ '@eslint-react/purity': 'off',
524
623
 
525
624
  // Validates correct usage of refs, not reading/writing during render
526
625
  // https://eslint-react.xyz/docs/rules/refs
527
- '@eslint-react/refs': 'error',
626
+ // Decision: handled by native react/refs
627
+ '@eslint-react/refs': 'off',
528
628
 
529
629
  // Enforce Rules of Hooks
530
630
  // https://eslint-react.xyz/docs/rules/rules-of-hooks
@@ -533,23 +633,28 @@ export const reactRules = {
533
633
 
534
634
  // Validates against calling setState synchronously in an effect
535
635
  // https://eslint-react.xyz/docs/rules/set-state-in-effect
536
- '@eslint-react/set-state-in-effect': 'error',
636
+ // Decision: handled by native react/set-state-in-effect
637
+ '@eslint-react/set-state-in-effect': 'off',
537
638
 
538
639
  // Validates against setting state during render
539
640
  // https://eslint-react.xyz/docs/rules/set-state-in-render
540
- '@eslint-react/set-state-in-render': 'error',
641
+ // Decision: handled by native react/set-state-in-render
642
+ '@eslint-react/set-state-in-render': 'off',
541
643
 
542
644
  // Enforces static component definitions
543
645
  // https://eslint-react.xyz/docs/rules/static-components
544
- '@eslint-react/static-components': 'error',
646
+ // Decision: handled by native react/static-components
647
+ '@eslint-react/static-components': 'off',
545
648
 
546
649
  // Validates against syntax that React does not support
547
650
  // https://eslint-react.xyz/docs/rules/unsupported-syntax
548
- '@eslint-react/unsupported-syntax': 'error',
651
+ // Decision: handled by native react/unsupported-syntax
652
+ '@eslint-react/unsupported-syntax': 'off',
549
653
 
550
654
  // Validates usage of useMemo with a return value
551
655
  // https://eslint-react.xyz/docs/rules/use-memo
552
- '@eslint-react/use-memo': 'error',
656
+ // Decision: handled by native react/use-memo
657
+ '@eslint-react/use-memo': 'off',
553
658
 
554
659
  // Ensure destructuring and symmetric naming of useState hook value and setter
555
660
  // https://eslint-react.xyz/docs/rules/use-state