Boshen
1193c9dbaf
chore(oxfmt): dogfood operator position at line start ( #25937 )
...
dogfood
2026-08-20 14:36:47 +00:00
connorshea
7958b56cdb
fix(linter): Fix syntax error reporting in some output formatters. ( #19590 )
...
Add snapshot tests for all the formatters with this case to make sure we don't regress on this for any of them in the future.
Basically, we were being overly aggressive in the stripping of the rule ID from the message, which caused messages with colons in them (e.g. parser errors like `Expected `;` but found `:``) to be truncated to just the character after the first colon.
We don't actually need to do this anymore, as the `diagnostic.to_string()` method doesn't include the rule ID (if it ever did), so we can just use the full string as the message without any additional parsing.
Generated with Claude Code.
Fixes https://github.com/oxc-project/oxc/issues/19588 .
2026-02-21 12:14:18 +00:00
overlookmotel
d96d26d7a8
fix(linter/plugins): provide parser.version ( #19364 )
...
Add correct version for `context.languageOptions.parser.version`.
Blocker previously was that version should match `oxc-parser` package, which is not entirely trivial, as we release NAPI packages and Oxlint separately.
Work around this by giving `"oxlint"` as name of the parser, so we can use Oxlint version.
TSDown extracts the `version` field from `package.json` without including the whole contents of `package.json` in the bundled code.
2026-02-13 11:20:26 +00:00
overlookmotel
9de9385fd1
refactor(linter/plugins): rename oxlint/plugin to oxlint/plugins ( #18792 )
...
Part of #18610 .
Our intent is to move `definePlugin`, `defineRule`, and `eslintCompatPlugin` to a separate package `@oxlint/plugins` (plural to avoid confusion with naming convention for plugins `oxlint-plugin-xxx`).
So rename the current entry point which exports these functions from `oxlint/plugin` to `oxlint/plugins` (plural).
2026-02-01 13:23:14 +00:00
overlookmotel
6ad44809e6
refactor(linter/plugins): remove experimental warning ( #18771 )
...
As we prepare for alpha release of JS plugins, it feels like we can remove the warning logged to stderr.
```
WARNING: JS plugins are experimental and not subject to semver.
Breaking changes are possible while JS plugins support is under development.
```
They do still remain experimental, but I don't think we need to shout that quite as loudly now.
2026-01-31 17:28:11 +00:00
camc314
81eb6fa9db
refactor(linter): split entry points for custom plugins/config/types ( #18601 )
...
This is technically breaking (only for types), but custom plugins are experimental.
The ruletester/defineRule/definePlugin are re-exported but with a `@deprecated` tag which I think is a good enough trade off
I want to avoid users bringing in a ton of custom plugin code when doing `import { defineConfig } from 'oxlint'`
2026-01-27 00:58:08 +00:00
overlookmotel
332d2efb56
fix(linter/plugins): add jsx property to parserOptions.ecmaFeatures ( #18549 )
...
Add `jsx` getter to `context.languageOptions.parserOptions.ecmaFeatures`. `eslint-plugin-stylistic` requires it, probably other plugins do too.
2026-01-25 21:31:27 +00:00
overlookmotel
2cc6ad25db
feat(linter/plugins): add ecmaFeatures to parserOptions ( #18313 )
...
Add `ecmaFeatures` property to `context.languageOptions.parserOptions`, with `globalReturn` and `impliedStrict` properties.
In normal operation, these are set according to the source type. In conformance build, they can be overridden by config.
2026-01-21 00:14:27 +00:00
Boshen
66b8c022ab
feat(parser): implement unambiguous module parsing for JS/TS files ( #18124 )
...
## Summary
- Implements speculative/unambiguous parsing for `.js`, `.jsx`, `.ts`, and `.tsx` files
- Instead of assuming module or script upfront, parses with `ModuleKind::Unambiguous` and upgrades to module mode when ESM syntax is detected
- ESM indicators: `import`, `export`, `import.meta` (NOT top-level await alone)
- Defers top-level await errors until module type is resolved
- Vue loader upgrades unambiguous scripts to module mode
- Updates linter tests to use explicit ESM extensions (`.mjs`/`.mts`) where needed
## Test plan
- [x] All parser tests pass
- [x] All linter tests pass
- [x] All semantic tests pass
- [x] Coverage conformance tests updated
🤖 Generated with [Claude Code](https://claude.com/claude-code )
2026-01-17 13:40:28 +00:00
Boshen
ba9c750f68
feat(span)!: use ModuleKind::CommonJS for .cjs and .cts file extensions ( #18117 )
...
## Summary
- Updates `SourceType::from_path()` to return `ModuleKind::CommonJS` for `.cjs`/`.cts` files (previously returned `ModuleKind::Script`)
- Fixes `eslint/no-eval` to check `!is_module()` instead of `is_script()` to handle both scripts and CommonJS (matching ESLint's `sourceType: "commonjs"` behavior)
- Fixes `eslint/no-redeclare` to run for both scripts and CommonJS files
- Updates tests to use proper CommonJS assertions
This follows up on #18089 which added `ModuleKind::CommonJS` support but didn't update the file extension mapping.
## Test plan
- [x] `cargo test -p oxc_span`
- [x] `cargo test -p oxc_linter`
🤖 Generated with [Claude Code](https://claude.com/claude-code )
2026-01-17 09:10:49 +00:00
connorshea
529901cfc9
fix(linter): include JS plugin rules when calculating total rule count ( #17520 )
...
This ensures that we print the expected number of rules for users that are using JS Plugins.
Fix #17519 .
Based on #17517 , because otherwise we'd end up with weird snapshot differences when trying to merge these anyway.
AI Disclosure: The fix here was generated with Copilot + GitHub's Raptor mini model.
2025-12-31 23:14:52 +00:00
connorshea
96ef2cced3
fix(linter): print total rule # when using a single nested config ( #17517 )
...
For a while, we've been skipping the printing of rule runs unless `--disable-nested-config` was passed. This was a result of the nested_configs value including the base config (see #16356 ). When we were checking whether that value was empty, it would always have at least 1 item (unless nested configs were entirely disabled).
As part of this, I've updated some configs in the fixtures to disable correctness rules, otherwise we will end up with a bunch of fixture snapshots needing updates every time a new default rule is added.
It's probably easiest to review this one commit at a time.
2025-12-31 22:56:47 +00:00
overlookmotel
5cc7c907d6
feat(linter/plugins): pass env from Rust to JS ( #17291 )
...
Pass `env` to JS plugins. JS plugins don't do anything with it yet, except allow the user to see it. But they will in a following PR.
2025-12-23 10:53:25 +00:00
overlookmotel
42603ba23b
fix(linter/plugins): always define languageOptions.globals ( #17008 )
...
Previously `context.languageOptions.globals` was `null` if no globals defined in config. This was a slight incompatibility with ESLint, which doesn't define `globals` property at all on `languageOptions` in this case.
Instead make `languageOptions.globals` an empty object. This should make no practical difference from what ESLint does, but avoids errors in rules if they do something like this:
```js
if (languageOptions.globals !== undefined) {
// This would throw if `globals` was `null` (as it used to be)
const hasWindow = languageOptions.globals.window !== "off";
}
```
2025-12-17 14:26:58 +00:00
renovate
211afcff5f
chore(deps): update npm packages ( #15994 )
...
> **Note:** This PR body was truncated due to platform limits.
This PR contains the following updates:
| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/ ) | [Adoption](https://docs.renovatebot.com/merge-confidence/ ) | [Passing](https://docs.renovatebot.com/merge-confidence/ ) | [Confidence](https://docs.renovatebot.com/merge-confidence/ ) |
|---|---|---|---|---|---|
| [@napi-rs/wasm-runtime](https://redirect.github.com/napi-rs/napi-rs ) ([source](https://redirect.github.com/napi-rs/napi-rs/tree/HEAD/wasi-runtime )) | [`1.0.7` -> `1.1.0`](https://renovatebot.com/diffs/npm/@napi-rs%2fwasm-runtime/1.0.7/1.1.0 ) |  |  |  |  |
| [@nestjs/common](https://nestjs.com ) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/common )) | [`11.1.6` -> `11.1.9`](https://renovatebot.com/diffs/npm/@nestjs%2fcommon/11.1.6/11.1.9 ) |  |  |  |  |
| [@nestjs/core](https://nestjs.com ) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/core )) | [`11.1.6` -> `11.1.9`](https://renovatebot.com/diffs/npm/@nestjs%2fcore/11.1.6/11.1.9 ) |  |  |  |  |
| [@nestjs/platform-express](https://nestjs.com ) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-express )) | [`11.1.6` -> `11.1.9`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-express/11.1.6/11.1.9 ) |  |  |  |  |
| [@nestjs/testing](https://nestjs.com ) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/testing )) | [`11.1.6` -> `11.1.9`](https://renovatebot.com/diffs/npm/@nestjs%2ftesting/11.1.6/11.1.9 ) |  |  |  |  |
| [@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node ) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node )) | [`24.9.1` -> `24.10.1`](https://renovatebot.com/diffs/npm/@types%2fnode/24.9.1/24.10.1 ) |  |  |  |  |
| [@typescript-eslint/scope-manager](https://typescript-eslint.io/packages/scope-manager ) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/scope-manager )) | [`8.46.2` -> `8.48.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fscope-manager/8.46.2/8.48.1 ) |  |  |  |  |
| [@typescript-eslint/typescript-estree](https://typescript-eslint.io/packages/typescript-estree ) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-estree )) | [`8.47.0` -> `8.48.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2ftypescript-estree/8.47.0/8.48.1 ) |  |  |  |  |
| [@typescript-eslint/visitor-keys](https://typescript-eslint.io ) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/visitor-keys )) | [`8.47.0` -> `8.48.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fvisitor-keys/8.47.0/8.48.1 ) |  |  |  |  |
| [@vitest/browser](https://redirect.github.com/vitest-dev/vitest/tree/main/packages/browser#readme ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/browser )) | [`4.0.6` -> `4.0.15`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser/4.0.6/4.0.15 ) |  |  |  |  |
| [@vitest/browser-playwright](https://vitest.dev/config/browser/playwright ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/browser-playwright )) | [`4.0.6` -> `4.0.15`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser-playwright/4.0.6/4.0.15 ) |  |  |  |  |
| [@vscode/vsce](https://code.visualstudio.com ) ([source](https://redirect.github.com/Microsoft/vsce )) | [`3.6.2` -> `3.7.1`](https://renovatebot.com/diffs/npm/@vscode%2fvsce/3.6.2/3.7.1 ) |  |  |  |  |
| [alpinejs](https://alpinejs.dev ) ([source](https://redirect.github.com/alpinejs/alpine/tree/HEAD/packages/alpinejs )) | [`3.15.0` -> `3.15.2`](https://renovatebot.com/diffs/npm/alpinejs/3.15.0/3.15.2 ) |  |  |  |  |
| [antd](https://ant.design ) ([source](https://redirect.github.com/ant-design/ant-design )) | [`6.0.0` -> `6.0.1`](https://renovatebot.com/diffs/npm/antd/6.0.0/6.0.1 ) |  |  |  |  |
| [axios](https://axios-http.com ) ([source](https://redirect.github.com/axios/axios )) | [`1.12.2` -> `1.13.2`](https://renovatebot.com/diffs/npm/axios/1.12.2/1.13.2 ) |  |  |  |  |
| [dayjs](https://day.js.org ) ([source](https://redirect.github.com/iamkun/dayjs )) | [`1.11.18` -> `1.11.19`](https://renovatebot.com/diffs/npm/dayjs/1.11.18/1.11.19 ) |  |  |  |  |
| [emnapi](https://redirect.github.com/toyobayashi/emnapi ) | [`1.6.0` -> `1.7.1`](https://renovatebot.com/diffs/npm/emnapi/1.6.0/1.7.1 ) |  |  |  |  |
| [es-toolkit](https://es-toolkit.dev ) ([source](https://redirect.github.com/toss/es-toolkit )) | [`1.40.0` -> `1.42.0`](https://renovatebot.com/diffs/npm/es-toolkit/1.40.0/1.42.0 ) |  |  |  |  |
| [esbuild](https://redirect.github.com/evanw/esbuild ) | [`^0.25.0` -> `^0.27.0`](https://renovatebot.com/diffs/npm/esbuild/0.25.12/0.27.1 ) |  |  |  |  |
| [execa](https://redirect.github.com/sindresorhus/execa ) | [`9.6.0` -> `9.6.1`](https://renovatebot.com/diffs/npm/execa/9.6.0/9.6.1 ) |  |  |  |  |
| [happy-dom](https://redirect.github.com/capricorn86/happy-dom ) | [`20.0.7` -> `20.0.11`](https://renovatebot.com/diffs/npm/happy-dom/20.0.7/20.0.11 ) |  |  |  |  |
| [memfs](https://redirect.github.com/streamich/memfs ) | [`4.49.0` -> `4.51.1`](https://renovatebot.com/diffs/npm/memfs/4.49.0/4.51.1 ) |  |  |  |  |
| [motion](https://redirect.github.com/motiondivision/motion ) | [`12.23.24` -> `12.23.25`](https://renovatebot.com/diffs/npm/motion/12.23.24/12.23.25 ) |  |  |  |  |
| [ovsx](https://open-vsx.org ) ([source](https://redirect.github.com/eclipse/openvsx/tree/HEAD/cli )) | [`0.10.6` -> `0.10.7`](https://renovatebot.com/diffs/npm/ovsx/0.10.6/0.10.7 ) |  |  |  |  |
| [playwright](https://playwright.dev ) ([source](https://redirect.github.com/microsoft/playwright )) | [`1.56.1` -> `1.57.0`](https://renovatebot.com/diffs/npm/playwright/1.56.1/1.57.0 ) |  |  |  |  |
| [pnpm](https://pnpm.io ) ([source](https://redirect.github.com/pnpm/pnpm/tree/HEAD/pnpm )) | [`10.20.0` -> `10.24.0`](https://renovatebot.com/diffs/npm/pnpm/10.20.0/10.24.0 ) |  |  |  |  |
| [preact](https://preactjs.com ) ([source](https://redirect.github.com/preactjs/preact )) | [`10.27.2` -> `10.28.0`](https://renovatebot.com/diffs/npm/preact/10.27.2/10.28.0 ) |  |  |  |  |
| [react](https://react.dev/ ) ([source](https://redirect.github.com/facebook/react/tree/HEAD/packages/react )) | [`19.2.0` -> `19.2.1`](https://renovatebot.com/diffs/npm/react/19.2.0/19.2.1 ) |  |  |  |  |
| [react-dom](https://react.dev/ ) ([source](https://redirect.github.com/facebook/react/tree/HEAD/packages/react-dom )) | [`19.2.0` -> `19.2.1`](https://renovatebot.com/diffs/npm/react-dom/19.2.0/19.2.1 ) |  |  |  |  |
| [solid-js](https://solidjs.com ) ([source](https://redirect.github.com/solidjs/solid )) | [`1.9.9` -> `1.9.10`](https://renovatebot.com/diffs/npm/solid-js/1.9.9/1.9.10 ) |  |  |  |  |
| [terser](https://terser.org ) ([source](https://redirect.github.com/terser/terser )) | [`5.44.0` -> `5.44.1`](https://renovatebot.com/diffs/npm/terser/5.44.0/5.44.1 ) |  |  |  |  |
| [type-fest](https://redirect.github.com/sindresorhus/type-fest ) | [`5.2.0` -> `5.3.0`](https://renovatebot.com/diffs/npm/type-fest/5.2.0/5.3.0 ) |  |  |  |  |
| [vitest](https://vitest.dev ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest )) | [`4.0.1` -> `4.0.15`](https://renovatebot.com/diffs/npm/vitest/4.0.1/4.0.15 ) |  |  |  |  |
| [vitest](https://vitest.dev ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest )) | [`4.0.10` -> `4.0.15`](https://renovatebot.com/diffs/npm/vitest/4.0.10/4.0.15 ) |  |  |  |  |
| [vue](https://redirect.github.com/vuejs/core/tree/main/packages/vue#readme ) ([source](https://redirect.github.com/vuejs/core )) | [`3.5.22` -> `3.5.25`](https://renovatebot.com/diffs/npm/vue/3.5.22/3.5.25 ) |  |  |  |  |
---
### Release Notes
<details>
<summary>napi-rs/napi-rs (@​napi-rs/wasm-runtime)</summary>
### [`v1.1.0`](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.0.7...@napi-rs/wasm-runtime@1.1.0 )
[Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.0.7...@napi-rs/wasm-runtime@1.1.0 )
</details>
<details>
<summary>nestjs/nest (@​nestjs/common)</summary>
### [`v11.1.9`](https://redirect.github.com/nestjs/nest/releases/tag/v11.1.9 )
[Compare Source](https://redirect.github.com/nestjs/nest/compare/v11.1.8...v11.1.9 )
##### v11.1.9 (2025-11-14)
##### Bug fixes
- `core`
- [#​15865](https://redirect.github.com/nestjs/nest/pull/15865 ) fix(core): make get() throw for implicitly request-scoped trees ([@​JoeNutt](https://redirect.github.com/JoeNutt ))
##### Enhancements
- `common`
- [#​15863](https://redirect.github.com/nestjs/nest/pull/15863 ) feat(common): add method options to [@​sse](https://redirect.github.com/sse ) decorator ([@​TomerSteinberg](https://redirect.github.com/TomerSteinberg ))
##### Dependencies
- `platform-fastify`
- [#​15899](https://redirect.github.com/nestjs/nest/pull/15899 ) chore(deps): bump fastify from 5.6.1 to 5.6.2 ([@​dependabot\[bot\]](https://redirect.github.com/apps/dependabot ))
##### Committers: 4
- Rami ([@​JoeNutt](https://redirect.github.com/JoeNutt ))
- Rhynel Algopera ([@​dev-rhynel](https://redirect.github.com/dev-rhynel ))
- Tomer Steinberg ([@​TomerSteinberg](https://redirect.github.com/TomerSteinberg ))
- WuMingDao ([@​WuMingDao](https://redirect.github.com/WuMingDao ))
### [`v11.1.8`](https://redirect.github.com/nestjs/nest/compare/v11.1.7...68cd54594972011663e19123c3f620e20baea53a )
[Compare Source](https://redirect.github.com/nestjs/nest/compare/v11.1.7...v11.1.8 )
### [`v11.1.7`](https://redirect.github.com/nestjs/nest/compare/v11.1.6...ee1b3475551e9173b51381211f058298be504a6a )
[Compare Source](https://redirect.github.com/nestjs/nest/compare/v11.1.6...v11.1.7 )
</details>
<details>
<summary>typescript-eslint/typescript-eslint (@​typescript-eslint/scope-manager)</summary>
### [`v8.48.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8481-2025-12-02 )
[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.48.0...v8.48.1 )
This was a version bump only for scope-manager to align it with other projects, there were no code changes.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning ) and [releases](https://typescript-eslint.io/users/releases ) on our website.
### [`v8.48.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8480-2025-11-24 )
[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.47.0...v8.48.0 )
##### 🚀 Features
- **eslint-plugin:** \[no-redundant-type-constituents] use assignability checking for redundancy checks ([#​10744](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10744 ))
##### 🩹 Fixes
- **scope-manager:** change unhelpful `aaa` error message and change `analyze` to expects `Program` ([#​11747](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11747 ))
##### ❤️ Thank You
- Josh Goldberg
- mdm317 [@​gen-ip-1](https://redirect.github.com/gen-ip-1 )
- Younsang Na [@​nayounsang](https://redirect.github.com/nayounsang )
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning ) and [releases](https://typescript-eslint.io/users/releases ) on our website.
### [`v8.47.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8470-2025-11-17 )
[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.46.4...v8.47.0 )
This was a version bump only for scope-manager to align it with other projects, there were no code changes.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning ) and [releases](https://typescript-eslint.io/users/releases ) on our website.
### [`v8.46.4`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8464-2025-11-10 )
[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.46.3...v8.46.4 )
This was a version bump only for scope-manager to align it with other projects, there were no code changes.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning ) and [releases](https://typescript-eslint.io/users/releases ) on our website.
### [`v8.46.3`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8463-2025-11-03 )
[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.46.2...v8.46.3 )
This was a version bump only for scope-manager to align it with other projects, there were no code changes.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning ) and [releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint (@​typescript-eslint/typescript-estree)</summary>
### [`v8.48.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-estree/CHANGELOG.md#8481-2025-12-02 )
[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.48.0...v8.48.1 )
This was a version bump only for typescript-estree to align it with other projects, there were no code changes.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning ) and [releases](https://typescript-eslint.io/users/releases ) on our website.
### [`v8.48.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-estree/CHANGELOG.md#8480-2025-11-24 )
[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.47.0...v8.48.0 )
##### 🚀 Features
- **typescript-estree:** replace fast-glob with tinyglobby ([#​11740](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11740 ))
- **eslint-plugin:** \[no-redundant-type-constituents] use assignability checking for redundancy checks ([#​10744](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10744 ))
- **typescript-estree:** gate all errors behind allowInvalidAST ([#​11693](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11693 ))
##### 🩹 Fixes
- **typescript-estree:** disallow binding patterns in parameter properties ([#​11760](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11760 ))
- **typescript-estree:** infers singleRun as true for project service ([#​11327](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11327 ))
##### ❤️ Thank You
- Ben McCann [@​benmccann](https://redirect.github.com/benmccann )
- Dima Barabash [@​dbarabashh](https://redirect.github.com/dbarabashh )
- fisker Cheung [@​fisker](https://redirect.github.com/fisker )
- James Henry [@​JamesHenry](https://redirect.github.com/JamesHenry )
- JamesHenry [@​JamesHenry](https://redirect.github.com/JamesHenry )
- Josh Goldberg
- Josh Goldberg ✨
- mdm317 [@​gen-ip-1](https://redirect.github.com/gen-ip-1 )
- Younsang Na [@​nayounsang](https://redirect.github.com/nayounsang )
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning ) and [releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>typescript-eslint/typescript-eslint (@​typescript-eslint/visitor-keys)</summary>
### [`v8.48.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/visitor-keys/CHANGELOG.md#8481-2025-12-02 )
[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.48.0...v8.48.1 )
This was a version bump only for visitor-keys to align it with other projects, there were no code changes.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning ) and [releases](https://typescript-eslint.io/users/releases ) on our website.
### [`v8.48.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/visitor-keys/CHANGELOG.md#8480-2025-11-24 )
[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.47.0...v8.48.0 )
This was a version bump only for visitor-keys to align it with other projects, there were no code changes.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning ) and [releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>vitest-dev/vitest (@​vitest/browser)</summary>
### [`v4.0.15`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.15 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.14...v4.0.15 )
##### 🚀 Experimental Features
- **cache**: Add opt-out on a plugin level, fix internal root cache - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9154](https://redirect.github.com/vitest-dev/vitest/issues/9154 ) [<samp>(a68f7)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a68f74e5e )
- **reporters**: Print import duration breakdown - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9105](https://redirect.github.com/vitest-dev/vitest/issues/9105 ) [<samp>(122ff)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/122ff321c )
##### 🐞 Bug Fixes
- Keep built-in id as is in bun and deno - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9117](https://redirect.github.com/vitest-dev/vitest/issues/9117 ) [<samp>(075ab)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/075ab3520 )
- Use `optimizeDeps.rolldownOptions` to fix depreated warning + fix `ssr.external: true` - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​9121](https://redirect.github.com/vitest-dev/vitest/issues/9121 ) [<samp>(fd8bd)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/fd8bd6dee )
- Fix external behavior with `deps.optimizer` - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​9125](https://redirect.github.com/vitest-dev/vitest/issues/9125 ) [<samp>(4c754)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/4c75492cc )
- Very minor typo in "Chrome DevTools Protocol" - by [@​HowToTestFrontend](https://redirect.github.com/HowToTestFrontend ) in [#​9146](https://redirect.github.com/vitest-dev/vitest/issues/9146 ) [<samp>(20997)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/209976419 )
- **browser**: Run `toMatchScreenshot` only once when used with `expect.element` - by [@​macarie](https://redirect.github.com/macarie ) in [#​9132](https://redirect.github.com/vitest-dev/vitest/issues/9132 ) [<samp>(0d2e7)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/0d2e7e3e2 )
- **coverage**: Istanbul provider to not break source maps - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [#​9040](https://redirect.github.com/vitest-dev/vitest/issues/9040 ) [<samp>(e4ca9)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e4ca917f1 )
- **deps**: Update dependency tinyexec to v1 - in [#​9122](https://redirect.github.com/vitest-dev/vitest/issues/9122 ) [<samp>(fd786)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/fd7860222 )
- **docs**: Remove `--browser.provider` from docs - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9115](https://redirect.github.com/vitest-dev/vitest/issues/9115 ) [<samp>(120b3)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/120b3dac1 )
- **expect**: Preserve `currentTestName` in extended matchers - by [@​macarie](https://redirect.github.com/macarie ) in [#​9106](https://redirect.github.com/vitest-dev/vitest/issues/9106 ) [<samp>(e4345)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e43458e02 )
- **pool**: Terminate workers on `CTRL+c` forceful exits - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [#​9140](https://redirect.github.com/vitest-dev/vitest/issues/9140 ) [<samp>(d57d8)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d57d8bf0a )
- **reporters**: Show project in github reporter - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9138](https://redirect.github.com/vitest-dev/vitest/issues/9138 ) [<samp>(bb65e)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/bb65e15c7 )
- **spy**: Do not mock overriden method, if parent was automocked - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9116](https://redirect.github.com/vitest-dev/vitest/issues/9116 ) [<samp>(1a246)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1a24607b4 )
- **web-worker**: MessagePort objects passed to Worker.postMessage work when clone === "native" - by [@​whitphx](https://redirect.github.com/whitphx ) in [#​9118](https://redirect.github.com/vitest-dev/vitest/issues/9118 ) [<samp>(deee8)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/deee83e54 )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.14...v4.0.15 )
### [`v4.0.14`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.14 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.13...v4.0.14 )
##### 🚀 Experimental Features
- **browser**: Expose `utils.configurePrettyDOM` - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9103](https://redirect.github.com/vitest-dev/vitest/issues/9103 ) [<samp>(2cc34)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/2cc34e0d4 )
- **runner**: Add full names to tasks - by [@​macarie](https://redirect.github.com/macarie ) in [#​9087](https://redirect.github.com/vitest-dev/vitest/issues/9087 ) [<samp>(821aa)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/821aa2002 )
- **ui**: Add tabbed failure view for `toMatchScreenshot` with comparison slider - by [@​macarie](https://redirect.github.com/macarie ) in [#​8813](https://redirect.github.com/vitest-dev/vitest/issues/8813 ) [<samp>(c37c2)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c37c2eb0b )
##### 🐞 Bug Fixes
- Externalize before caching - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9077](https://redirect.github.com/vitest-dev/vitest/issues/9077 ) [<samp>(e1b2e)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e1b2e086a )
- Collect the duration of external imports - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9097](https://redirect.github.com/vitest-dev/vitest/issues/9097 ) [<samp>(3326c)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/3326cc9f4 )
- Rename `collect` to `import`, remove `prepare` - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9091](https://redirect.github.com/vitest-dev/vitest/issues/9091 ) [<samp>(1256b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1256b5ca3 )
- **browser**:
- Unsubscribe `onCancel` on rpc destroy - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [#​9088](https://redirect.github.com/vitest-dev/vitest/issues/9088 ) [<samp>(f5b72)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/f5b72374b )
- Revert the viewport scaling in non-ui mode [#​9018](https://redirect.github.com/vitest-dev/vitest/issues/9018 ) - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9072](https://redirect.github.com/vitest-dev/vitest/issues/9072 ) and [#​9018](https://redirect.github.com/vitest-dev/vitest/issues/9018 ) [<samp>(64502)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/64502a2c4 )
- **coverage**:
- Invalidate circular modules correctly on rerun with coverage - by [@​aicest](https://redirect.github.com/aicest ) in [#​9096](https://redirect.github.com/vitest-dev/vitest/issues/9096 ) [<samp>(6f22c)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6f22c675f )
- **expect**:
- Allow function as standard schema - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​9099](https://redirect.github.com/vitest-dev/vitest/issues/9099 ) [<samp>(ed8a2)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ed8a2ebbd )
- **jsdom**:
- Reuse abort signals if possible - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9090](https://redirect.github.com/vitest-dev/vitest/issues/9090 ) [<samp>(2c468)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/2c468ee95 )
- **pool**:
- Init `VITEST_POOL_ID` + `VITEST_WORKER_ID` before environment setup - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [#​9085](https://redirect.github.com/vitest-dev/vitest/issues/9085 ) [<samp>(37918)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/379185b40 )
- **web-worker**:
- `postMessage` to send ports to workers - by [@​whitphx](https://redirect.github.com/whitphx ) and [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [#​9078](https://redirect.github.com/vitest-dev/vitest/issues/9078 ) [<samp>(9d176)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/9d1763d11 )
##### 🏎 Performance
- Replace `debug` with `obug` - by [@​sxzz](https://redirect.github.com/sxzz ) and [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [#​9057](https://redirect.github.com/vitest-dev/vitest/issues/9057 ) [<samp>(acc51)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/acc5152b9 )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.13...v4.0.14 )
### [`v4.0.13`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.13 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.12...v4.0.13 )
##### 🐞 Bug Fixes
- **types**:
- Don't use type from Vite 7.1 - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9071](https://redirect.github.com/vitest-dev/vitest/issues/9071 ) [<samp>(6356b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6356b1d38 )
- Don't import node.js dependent types in vitest/browser - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9068](https://redirect.github.com/vitest-dev/vitest/issues/9068 ) [<samp>(332af)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/332afa0de )
##### 🏎 Performance
- Avoid fetchModule roundtrip if the module is cached - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9075](https://redirect.github.com/vitest-dev/vitest/issues/9075 ) [<samp>(b27e0)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b27e002e5 )
- **experimental**: If `fsCacheModule` is enabled, read from the memory when possible - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9076](https://redirect.github.com/vitest-dev/vitest/issues/9076 ) [<samp>(6b9a1)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6b9a1b5b1 )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.12...v4.0.13 )
### [`v4.0.12`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.12 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.11...v4.0.12 )
##### 🐞 Bug Fixes
- Inherit `fsModuleCachePath` by default - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9063](https://redirect.github.com/vitest-dev/vitest/issues/9063 ) [<samp>(9a8bc)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/9a8bc78c5 )
- Don't import from `@opentelemetry/api` in public types - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9066](https://redirect.github.com/vitest-dev/vitest/issues/9066 ) [<samp>(e944a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e944a37b7 )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.11...v4.0.12 )
### [`v4.0.11`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.11 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.10...v4.0.11 )
##### 🚀 Experimental Features
- **api**: Add extensible test artifact API - by [@​macarie](https://redirect.github.com/macarie ) in [#​8987](https://redirect.github.com/vitest-dev/vitest/issues/8987 ) [<samp>(77292)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/772923645 )
- See more at <https://vitest.dev/api/advanced/artifacts >
- **expect**: Provide `task` in `MatchState` - by [@​macarie](https://redirect.github.com/macarie ) in [#​9022](https://redirect.github.com/vitest-dev/vitest/issues/9022 ) [<samp>(afd1f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/afd1f3e52 )
- **experimental**: Support OpenTelemetry traces - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​8994](https://redirect.github.com/vitest-dev/vitest/issues/8994 ) [<samp>(d6d33)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d6d3359dd )
- See more at <https://vitest.dev/guide/open-telemetry >
##### 🏎 Performance
- **experimental**: Add file system cache - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9026](https://redirect.github.com/vitest-dev/vitest/issues/9026 ) [<samp>(1b147)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1b1473712 )
- See more at <https://vitest.dev/config/experimental#experimental-fsmodulecache >
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.10...v4.0.11 )
### [`v4.0.10`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.10 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.9...v4.0.10 )
##### 🐞 Bug Fixes
- Remove `onCancel` when worker is terminated - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9033](https://redirect.github.com/vitest-dev/vitest/issues/9033 ) [<samp>(6d7f0)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6d7f0a99e )
- **browser**:
- Don't scale the iframe if UI is disabled - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9018](https://redirect.github.com/vitest-dev/vitest/issues/9018 ) [<samp>(5406e)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5406e8ea4 )
- Handle dependency stack traces with external source maps. Resolves: [#​9003](https://redirect.github.com/vitest-dev/vitest/issues/9003 ) - by [@​iclectic](https://redirect.github.com/iclectic ) in [#​9016](https://redirect.github.com/vitest-dev/vitest/issues/9016 ) and [#​9003](https://redirect.github.com/vitest-dev/vitest/issues/9003 ) [<samp>(57ae5)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/57ae547de )
- **bun**:
- Parsing of stack trace for bun runtime - by [@​nazarhussain](https://redirect.github.com/nazarhussain ) in [#​9032](https://redirect.github.com/vitest-dev/vitest/issues/9032 ) [<samp>(f3ec6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/f3ec6fcb0 )
- **core**:
- Prevent starting new run when cancelling - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [#​8991](https://redirect.github.com/vitest-dev/vitest/issues/8991 ) [<samp>(eb98d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/eb98dd8fd )
- **pool**:
- Prevent writing to closed worker - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) and [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9023](https://redirect.github.com/vitest-dev/vitest/issues/9023 ) [<samp>(042c6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/042c60c80 )
- **reporters**:
- Report correct test run duration at the end - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​8969](https://redirect.github.com/vitest-dev/vitest/issues/8969 ) [<samp>(bc3a6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/bc3a6921e )
- **ui**:
- Use execution time from ws reporter (`onFinished`) - by [@​userquin](https://redirect.github.com/userquin ) in [#​8975](https://redirect.github.com/vitest-dev/vitest/issues/8975 ) [<samp>(f56dc)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/f56dc0cc4 )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.9...v4.0.10 )
### [`v4.0.9`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.9 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.8...v4.0.9 )
##### 🚀 Experimental Features
- **expect**: Add Set support to toBeOneOf - by [@​tim-we](https://redirect.github.com/tim-we ) and [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​8906](https://redirect.github.com/vitest-dev/vitest/issues/8906 ) [<samp>(a415d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a415d0375 )
##### 🐞 Bug Fixes
- **browser**: Add favicon icons to the browser mode ui - by [@​userquin](https://redirect.github.com/userquin ) in [#​8972](https://redirect.github.com/vitest-dev/vitest/issues/8972 ) [<samp>(353ee)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/353ee5bbc )
- **forks**: Increase worker start timeout - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [#​9027](https://redirect.github.com/vitest-dev/vitest/issues/9027 ) [<samp>(5e750)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5e750f4ba )
- **jsdom**: Cloned request is an instance of `Request` - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​8985](https://redirect.github.com/vitest-dev/vitest/issues/8985 ) [<samp>(506a9)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/506a9fd0f )
- **ui**: Collect file/suite/test duration correctly - by [@​userquin](https://redirect.github.com/userquin ) in [#​8976](https://redirect.github.com/vitest-dev/vitest/issues/8976 ) [<samp>(8016d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/8016da886 )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.8...v4.0.9 )
### [`v4.0.8`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.8 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.7...v4.0.8 )
##### 🐞 Bug Fixes
- Workaround `noExternal` merging bug on Vite 6 - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​8950](https://redirect.github.com/vitest-dev/vitest/issues/8950 ) [<samp>(bcb13)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/bcb132fd4 )
- Missed context.d.ts file - by [@​termorey](https://redirect.github.com/termorey ) in [#​8965](https://redirect.github.com/vitest-dev/vitest/issues/8965 ) [<samp>(9044d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/9044d9356 )
- Incorrect error message for non-awaited `expect.element()` - by [@​StyleShit](https://redirect.github.com/StyleShit ) in [#​8954](https://redirect.github.com/vitest-dev/vitest/issues/8954 ) [<samp>(9638d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/9638db0f3 )
- **browser**: Cleanup frame-ancestors from CSP header at coverage middleware - by [@​userquin](https://redirect.github.com/userquin ) in [#​8941](https://redirect.github.com/vitest-dev/vitest/issues/8941 ) [<samp>(1f730)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1f7303738 )
- **deps**: Update all non-major dependencies - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​8636](https://redirect.github.com/vitest-dev/vitest/issues/8636 ) [<samp>(da8b9)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/da8b93aa5 )
- **forks**: Do not fail with Windows Defender enabled - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​8967](https://redirect.github.com/vitest-dev/vitest/issues/8967 ) [<samp>(c79f4)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c79f47c65 )
- **runner**: Properly encode Uint8Array body in annotations - by [@​Livan-pro](https://redirect.github.com/Livan-pro ) in [#​8951](https://redirect.github.com/vitest-dev/vitest/issues/8951 ) [<samp>(997ca)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/997ca5a82 )
- **spy**: Copy static properties if spy is initialised with `vi.fn()`, fix types for `vi.spyOn(obj, class)` - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​8956](https://redirect.github.com/vitest-dev/vitest/issues/8956 ) [<samp>(75e7f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/75e7fcc51 )
- **webdriverio**: When no argument is passed to the .click interaction command, the webdriver command should also have no argument - by [@​julienw](https://redirect.github.com/julienw ) in [#​8937](https://redirect.github.com/vitest-dev/vitest/issues/8937 ) [<samp>(069e6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/069e6db9b )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.7...v4.0.8 )
### [`v4.0.7`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.7 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.6...v4.0.7 )
##### 🐞 Bug Fixes
- Bind `process` in case global is overwritten - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [#​8916](https://redirect.github.com/vitest-dev/vitest/issues/8916 ) [<samp>(6240d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6240d51a6 )
- Create environment once per worker with `isolate: false` - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​8915](https://redirect.github.com/vitest-dev/vitest/issues/8915 ) [<samp>(c9078)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c9078a26e )
- Add Locator as a possible element type in `toContainElement()` matcher - by [@​vitalybaev](https://redirect.github.com/vitalybaev ) in [#​8910](https://redirect.github.com/vitest-dev/vitest/issues/8910 ) and [#​8927](https://redirect.github.com/vitest-dev/vitest/issues/8927 ) [<samp>(35a27)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/35a27d4b3 )
- **browser**: Inherit `isolate` option, deprecate `browser.isolate`/`browser.fileParallelism` - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​8890](https://redirect.github.com/vitest-dev/vitest/issues/8890 ) [<samp>(9d2b4)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/9d2b4d501 )
- **cli**: Parse `--execArgv` as array - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [#​8924](https://redirect.github.com/vitest-dev/vitest/issues/8924 ) [<samp>(751c3)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/751c3926f )
- **jsdom**: Support `URL.createObjectURL`, `FormData.set(prop, blob)` - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​8935](https://redirect.github.com/vitest-dev/vitest/issues/8935 ) [<samp>(a1b73)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a1b7361ab )
- **pool**: Avoid `--require` argument when running in deno - by [@​pi0](https://redirect.github.com/pi0 ) in [#​8897](https://redirect.github.com/vitest-dev/vitest/issues/8897 ) [<samp>(d41fa)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d41fa742f )
- **typecheck**: Handle re-runs outside `tsc` - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [#​8920](https://redirect.github.com/vitest-dev/vitest/issues/8920 ) [<samp>(fdb2e)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/fdb2e7982 )
##### 🏎 Performance
- **pool**:
- Sort test files by project by default - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [#​8914](https://redirect.github.com/vitest-dev/vitest/issues/8914 ) [<samp>(680a6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/680a612ea )
- **reporters**:
- Optimize getting the tests stats - by [@​Connormiha](https://redirect.github.com/Connormiha ) in [#​8908](https://redirect.github.com/vitest-dev/vitest/issues/8908 ) [<samp>(06d62)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/06d6207fb )
- Remove unnecessary `Array.from` call - by [@​Connormiha](https://redirect.github.com/Connormiha ) in [#​8907](https://redirect.github.com/vitest-dev/vitest/issues/8907 ) [<samp>(b6014)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b60149b27 )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.6...v4.0.7 )
</details>
<details>
<summary>Microsoft/vsce (@​vscode/vsce)</summary>
### [`v3.7.1`](https://redirect.github.com/microsoft/vscode-vsce/releases/tag/v3.7.1 )
[Compare Source](https://redirect.github.com/Microsoft/vsce/compare/v3.7.0...v3.7.1 )
#### Changes:
- [#​1223](https://redirect.github.com/Microsoft/vsce/issues/1223 ): Bump js-yaml
- [#​1222](https://redirect.github.com/Microsoft/vsce/issues/1222 ): Bump glob
This list of changes was [auto generated](https://dev.azure.com/monacotools/Monaco/_build/results?buildId=378097\&view=logs ).
### [`v3.7.0`](https://redirect.github.com/microsoft/vscode-vsce/releases/tag/v3.7.0 )
[Compare Source](https://redirect.github.com/Microsoft/vsce/compare/v3.6.2...v3.7.0 )
#### Changes:
- [#​1219](https://redirect.github.com/Microsoft/vsce/issues/1219 ): Remove invalid validation for extension dependencies
- [#​1212](https://redirect.github.com/Microsoft/vsce/issues/1212 ): Validate extension dependencies use lowercase letters and warn about deprecated github.copilot
- [#​1209](https://redirect.github.com/Microsoft/vsce/issues/1209 ): Bump validator from 13.9.0 to 13.15.20
- [#​1200](https://redirect.github.com/Microsoft/vsce/issues/1200 ): Bump tar-fs from 2.1.3 to 2.1.4
This list of changes was [auto generated](https://dev.azure.com/monacotools/Monaco/_build/results?buildId=372155\&view=logs ).
</details>
<details>
<summary>alpinejs/alpine (alpinejs)</summary>
### [`v3.15.2`](https://redirect.github.com/alpinejs/alpine/releases/tag/v3.15.2 )
[Compare Source](https://redirect.github.com/alpinejs/alpine/compare/v3.15.1...v3.15.2 )
#### Changes
- Imrove CSP bundle [#​4704](https://redirect.github.com/alpinejs/alpine/pull/4704 )
- Add `setErrorHandler` [#​4673](https://redirect.github.com/alpinejs/alpine/pull/4673 )
### [`v3.15.1`](https://redirect.github.com/alpinejs/alpine/releases/tag
</details>
---
### Configuration
📅 **Schedule**: Branch creation - "before 10am on monday" in timezone Asia/Shanghai, Automerge - At any time (no schedule defined).
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions ) if that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ). View the [repository job log](https://developer.mend.io/github/oxc-project/oxc ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi4xNi4xIiwidXBkYXRlZEluVmVyIjoiNDIuMzIuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
2025-12-09 14:39:49 +00:00
overlookmotel
41129ab1dd
feat(linter/plugins): implement languageOptions.parser ( #16292 )
...
Implement `context.languageOptions.parser`. The `parse` function currently throws an "unimplemented" error, but it's still useful to have the other properties available to plugins.
2025-11-30 12:57:39 +00:00
Boshen
523a30a016
style(all): apply oxfmt default options ( #16091 )
...
Embrace the defaults!
---------
Co-authored-by: Yuji Sugiura <y.sugiura.0316@gmail.com >
2025-11-25 15:56:24 +09:00
overlookmotel
690abec235
test(linter/plugins): use subpath imports ( #15920 )
...
Shorten imports in test fixtures using [subpath imports](https://nodejs.org/docs/latest-v24.x/api/packages.html#subpath-imports ).
Before:
```ts
import type { Plugin } from '../../../dist/index.js';
```
After:
```ts
import type { Plugin } from '#oxlint';
```
2025-11-21 11:44:25 +00:00
overlookmotel
4e844c1927
test(linter/plugins): add tests for new Context methods ( #15656 )
...
Add test coverage for methods and getters on `Context` added in #15606 and #15632 . I neglected to add tests in those PRs. Disgraceful.
2025-11-12 23:56:03 +00:00
overlookmotel
2f9735dcd8
feat(linter/plugins): implement context.languageOptions ( #15486 )
...
Implement `Context#languageOptions`.
2025-11-08 14:18:54 +00:00