Dunqing
7215d9e559
feat(transformer): support lowering accessor with legacy decorators ( #20348 )
...
## Summary
Closes #20133
- Lower decorated `accessor` properties to private backing field + getter/setter pair when `experimentalDecorators` is enabled, matching TypeScript's `classFields.ts` `transformAutoAccessor`
- Only accessors with decorators are lowered — undecorated accessors are left as-is
- Support computed accessor keys (e.g. `@dec accessor [expr]`) via temp var to ensure the key expression is evaluated only once
- Accessor lowering runs in `enter_class` (Decorator plugin) so es2022 class-properties can further transform the generated private fields
- Decorators are transferred from the accessor to the generated getter, so the legacy decorator transform emits `_decorate()` calls
### Transform example
```ts
// Input
class C {
@dec accessor prop: string = "hello";
@dec accessor [expr]: any;
}
```
```js
// Output (without class-properties)
var _a = expr;
class C {
#_prop_accessor_storage = "hello";
get prop() { return this.#_prop_accessor_storage; }
set prop(value) { this.#_prop_accessor_storage = value; }
#_a;
get [_a]() { return this.#_a; }
set [_a](value) { this.#_a = value; }
}
babelHelpers.decorate([dec], C.prototype, "prop", null);
babelHelpers.decorate([dec], C.prototype, _a, null);
```
## Test plan
- [x] New test `oxc/accessor` — decorated accessors without class-properties plugin (instance, static, initialized, computed key)
- [x] New test `oxc/accessor-with-class-properties` — full pipeline with class-properties plugin (private fields transformed to WeakMap/brand patterns)
- [x] New test `decoratorOnClassAccessorProperty1` — instance, static, and initialized accessor properties with decorators
- [x] Existing `decoratorOnClassProperty13` output updated for accessor lowering
- [x] Undecorated accessors are not lowered (`oxc-13284.js` coverage test passes)
- [x] `cargo clippy`, `just fmt` clean
🤖 Generated with [Claude Code](https://claude.com/claude-code )
2026-03-18 07:44:58 +00:00
bab
11f96959b0
fix(transformer): legacy decorator on computed property key leaves variable unassigned ( #20430 )
...
This PR has two fixes. The second fix exposed a pre-existing bug that
needed to be fixed first.
- 24a72d7bc: `create_read_write_target` was used for a simple `=`
assignment when creating a temp var for decorated computed property
keys. Should be `create_write_target`.
- f0affc6f4: `transform_class_on_exit` was removing all no-initializer
properties unconditionally. But the legacy decorator embeds an
assignment in the computed key (`[FIELD_NAME]` → `[_a =
FIELD_NAME]`), so removing the property also removes the assignment,
leaving `_a` undefined in `_decorate()`. Keep properties whose computed
keys have side effects, matching TypeScript's
behavior.
Fixes #20418
---------
Co-authored-by: Dunqing <dengqing0821@gmail.com >
2026-03-17 23:31:26 +08:00
bab
1f65c3f181
fix(transformer): emit design:paramtypes when class has static anonymous class expression ( #20382 )
...
related https://github.com/rolldown/rolldown/discussions/8684
Fix `design:paramtypes` being silently dropped in release builds when a
decorated class has static properties with anonymous class expression
initializers (`static Foo = class extends Error
{}`).
`pop_constructor_metadata()` was inside `debug_assert!`, which is a
no-op in release builds, causing stack imbalance and missing metadata.
---------
Co-authored-by: Dunqing <dengqing0821@gmail.com >
2026-03-15 22:10:43 +08:00
bab
fa70d5c283
fix(transformer): use implementation signature for design:paramtypes when constructor is overloaded ( #20394 )
...
fixes https://github.com/oxc-project/oxc/issues/20369
2026-03-15 21:25:05 +08:00
Boshen
5474d0a091
perf(semantic): V8-style walk-up reference resolution ( #20292 )
...
## Summary
- Replace bubble-up reference resolution with V8-style walk-up algorithm
- References are collected in a flat `Vec<(Ident, ReferenceId)>` during traversal instead of per-scope hashmaps
- After full AST visit, all references are resolved in a single pass by walking up the scope chain from each reference's scope
- `leave_scope()` no longer does any reference resolution work — only `direct_eval` flag propagation remains
- Early resolution via checkpoint mechanism preserved for function parameters and catch parameters (prevents binding to body variables that share the same scope)
- Deduplicated walk-up logic into a single `#[inline(always)]` helper shared by both normal and early resolution paths
- Uses `to_vec+truncate` instead of `split_off` to preserve `Vec` capacity and avoid reallocation
- Removes `smallvec` and `oxc_data_structures` dependencies from `oxc_semantic`
### Why this is faster
| Operation | Bubble-up (old) | Walk-up (new) |
|-----------|-----------------|---------------|
| Per reference creation | Hashmap insert | Vec push (O(1) amortized) |
| Per scope exit | Drain + merge hashmap | Nothing |
| Per reference resolution | Implicit via merging | Walk scope chain, O(depth) lookups |
| Total hashmap mutations | O(refs × depth) inserts+drains | 0 during traversal |
Hashmap lookups (read-only) are cheaper than hashmap drain+insert (mutating, allocating). The flat Vec also eliminates creating/recycling per-depth hashmaps entirely.
### Snapshot changes
3 jest linter rule snapshots have diagnostic reordering (same diagnostics, different emission order) due to references being processed in insertion order rather than scope-by-scope.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
2026-03-13 06:20:40 +00:00
Sverre Johansen
1ff5c1dfe9
fix(transformer/typescript): rewrite extensions in dynamic import() expressions ( #20121 )
...
Closes #20120
`rewriteImportExtensions` was not handling dynamic `import()`
expressions, only static `import`/`export` declarations. TypeScript's
`rewriteRelativeImportExtensions` handles both (via
`visitImportOrRequireCall` in the ESNext module transformer).
The fix adds `enter_import_expression` visitors at three levels of the
transformer dispatch chain. When the `import()` source is a string
literal, it is rewritten the same way as static imports. Non-literal
sources (e.g., `import(variable)`) are left unchanged.
Test fixtures added for both `"rewrite"` and `"remove"` modes covering
dynamic imports.
> Disclosure: AI-assisted (Claude). All changes reviewed and tested by
the contributor.
---------
Co-authored-by: Sverre Johansen <sverre.johansen@microsoft.com >
2026-03-13 07:54:50 +08:00
Boshen
7e83da9f2f
chore(submodules): update submodule SHAs to latest commits ( #20268 )
2026-03-12 19:07:19 +08:00
Boshen
abe21615db
chore(node): bump .node-version to 24.14.0 ( #20261 )
...
Update the pinned Node.js version to 24.14.0 by changing only
.node-version.
2026-03-12 17:00:33 +08:00
Boshen
f467298373
chore(submodules): update submodule SHAs to latest commits ( #19951 )
2026-03-06 14:45:41 +08:00
Boshen
529fbac105
chore(submodules): update submodule SHAs to latest commits ( #19662 )
2026-02-24 15:34:23 +08:00
camc314
08b0218dd6
chore(submodules): update submodule SHAs to latest commits ( #19518 )
2026-02-18 14:56:36 +00:00
Boshen
deed3d851b
fix(transformer): remove unnecessary trailing expression in object rest spread assignment ( #19259 )
...
## Summary
- Skip the trailing reference (e.g. `_c`) in the generated sequence expression when the destructuring assignment is directly inside an `ExpressionStatement`, since the expression result is not consumed
- Before: `_c = c2, {a2} = _c, b2 = objectWithoutProperties(_c, ["a2"]), _c;`
- After: `_c = c2, {a2} = _c, b2 = objectWithoutProperties(_c, ["a2"]);`
- The trailing reference is still kept when the result is consumed, e.g. `console.log((..., _c))`
Closes #7389 (issue 1)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
2026-02-11 11:43:24 +00:00
Boshen
25379248d1
perf(semantic): optimize scope resolution with fast paths and inlining ( #19029 )
...
## Summary
- Add early return when current scope has no unresolved references
- Skip resolution entirely for scopes with no bindings (if-blocks, try-blocks, loop bodies without `let`) — merge unresolved refs to parent using O(1) swap when possible
- Use union-by-size merge (drain smaller map into larger) for non-empty parents
- Add `#[inline]` to hot per-reference functions: `declare_reference`, `reference_identifier`, `create_reference`
### Benchmark results (semantic)
```
group main pr
----- ---- --
semantic/RadixUIAdoptionSection.jsx 1.05 4.1±0.05µs ? ?/sec 1.00 3.9±0.03µs ? ?/sec
semantic/binder.ts 1.03 469.3±26.69µs ? ?/sec 1.00 456.3±17.59µs ? ?/sec
semantic/cal.com.tsx 1.00 3.6±0.03ms ? ?/sec 1.01 3.6±0.04ms ? ?/sec
semantic/react.development.js 1.01 171.9±3.86µs ? ?/sec 1.00 170.0±9.19µs ? ?/sec
```
### Benchmark results (pipeline)
```
group main pr
----- ---- --
pipeline/RadixUIAdoptionSection.jsx 1.03 29.8±0.35µs ? ?/sec 1.00 29.0±0.25µs ? ?/sec
pipeline/binder.ts 1.00 2.9±0.07ms ? ?/sec 1.00 2.9±0.09ms ? ?/sec
pipeline/cal.com.tsx 1.00 25.0±0.32ms ? ?/sec 1.01 25.2±0.36ms ? ?/sec
pipeline/react.development.js 1.03 1317.1±96.08µs ? ?/sec 1.00 1273.5±18.26µs ? ?/sec
```
### Analysis
Scope resolution (`resolve_references_for_current_scope`) is called on every scope exit. Many scopes (if-blocks, try-blocks, loop bodies) have zero bindings, yet the current code still drains all unresolved references one-by-one through hash maps. The swap optimization makes this O(1) for the common case where the parent has no accumulated refs yet (first/only child scope).
The `#[inline]` additions target functions called per-identifier-reference (~hundreds to thousands of times per file) that were not previously inlined.
Note: 3 linter snapshot ordering changes expected (diagnostics emitted in different order due to hash map iteration order change from swap).
🤖 Generated with [Claude Code](https://claude.com/claude-code )
2026-02-06 12:09:11 +00:00
Boshen
0eff6be0a0
feat(parser): error JSX-like type assertions and generics in .mts/.cts ( #18910 )
...
## Summary
Implements TS7059 and TS7060 errors for JSX-like syntax in `.mts`/`.cts` files:
- **TS7059**: JSX-like type assertions (`<T>value`) - "Use an `as` expression instead"
- **TS7060**: JSX-like type parameters in arrow functions (`<T>() => {}`) - "Add a trailing comma or explicit constraint"
### Valid workarounds for TS7060:
- `<T,>() => {}` (trailing comma)
- `<T extends unknown>() => {}` (explicit constraint)
- `<T, U>() => {}` (multiple type parameters)
Closes #15184
🤖 Generated with [Claude Code](https://claude.com/claude-code )
2026-02-04 05:21:42 +00:00
Boshen
e7e72e27df
fix(transform_conformance): skip tests that expect parser errors ( #18914 )
...
## Summary
- Skip tests in transform conformance that expect parser errors
- Parser errors are already tested by parser conformance tests
- Transform conformance should only test transformation logic
When a test has a `throws` option, we now try parsing the input first. If parsing fails, the test is skipped since it's a parser error test (not a transformer error test).
🤖 Generated with [Claude Code](https://claude.com/claude-code )
2026-02-04 03:41:29 +00:00
Boshen
333d4fb167
chore(submodules): update submodule SHAs to latest commits ( #18841 )
...
Updates submodule dependencies to their latest commits.
## Changes
- test262: `fff41f0` → `dd6138f`
- babel: `6ef16ca` → `92c052d`
- TypeScript: `7f6a846` → `95e3aaa`
- estree-conformance: `389cb2a` → `6611520`
This PR is automatically generated by the [update_submodules workflow](https://github.com/oxc-project/oxc/blob/main/.github/workflows/update_submodules.yml ).
2026-02-03 04:30:00 +00:00
sapphi-red
3d01fa1219
docs(transformer): update links to use Oxc docs ( #18722 )
...
Updated the links to Oxc docs instead of babel and esbuild.
2026-02-01 15:21:18 +00:00
renovate
942663d9f7
chore(deps): update npm packages ( #18582 )
...
> ℹ️ **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/ ) |
|---|---|---|---|---|---|
| [@babel/core](https://babel.dev/docs/en/next/babel-core ) ([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-core )) | [`7.28.5` → `7.28.6`](https://renovatebot.com/diffs/npm/@babel%2fcore/7.28.5/7.28.6 ) |  |  |  |  |
| [@babel/plugin-proposal-decorators](https://babel.dev/docs/en/next/babel-plugin-proposal-decorators ) ([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-decorators )) | [`7.28.0` → `7.28.6`](https://renovatebot.com/diffs/npm/@babel%2fplugin-proposal-decorators/7.28.0/7.28.6 ) |  |  |  |  |
| [@babel/plugin-transform-async-to-generator](https://babel.dev/docs/en/next/babel-plugin-transform-async-to-generator ) ([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-async-to-generator )) | [`7.27.1` → `7.28.6`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-async-to-generator/7.27.1/7.28.6 ) |  |  |  |  |
| [@babel/plugin-transform-class-properties](https://babel.dev/docs/en/next/babel-plugin-transform-class-properties ) ([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-class-properties )) | [`7.27.1` → `7.28.6`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-class-properties/7.27.1/7.28.6 ) |  |  |  |  |
| [@babel/plugin-transform-class-static-block](https://babel.dev/docs/en/next/babel-plugin-transform-class-static-block ) ([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-class-static-block )) | [`7.28.3` → `7.28.6`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-class-static-block/7.28.3/7.28.6 ) |  |  |  |  |
| [@babel/plugin-transform-explicit-resource-management](https://babel.dev/docs/en/next/babel-plugin-transform-explicit-resource-management ) ([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-explicit-resource-management )) | [`7.28.0` → `7.28.6`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-explicit-resource-management/7.28.0/7.28.6 ) |  |  |  |  |
| [@babel/plugin-transform-exponentiation-operator](https://babel.dev/docs/en/next/babel-plugin-transform-exponentiation-operator ) ([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-exponentiation-operator )) | [`7.28.5` → `7.28.6`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-exponentiation-operator/7.28.5/7.28.6 ) |  |  |  |  |
| [@babel/plugin-transform-logical-assignment-operators](https://babel.dev/docs/en/next/babel-plugin-transform-logical-assignment-operators ) ([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-logical-assignment-operators )) | [`7.28.5` → `7.28.6`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-logical-assignment-operators/7.28.5/7.28.6 ) |  |  |  |  |
| [@babel/plugin-transform-optional-chaining](https://babel.dev/docs/en/next/babel-plugin-transform-optional-chaining ) ([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-optional-chaining )) | [`7.28.5` → `7.28.6`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-optional-chaining/7.28.5/7.28.6 ) |  |  |  |  |
| [@babel/plugin-transform-private-methods](https://babel.dev/docs/en/next/babel-plugin-transform-private-methods ) ([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-private-methods )) | [`7.27.1` → `7.28.6`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-private-methods/7.27.1/7.28.6 ) |  |  |  |  |
| [@babel/plugin-transform-private-property-in-object](https://babel.dev/docs/en/next/babel-plugin-transform-private-property-in-object ) ([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-private-property-in-object )) | [`7.27.1` → `7.28.6`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-private-property-in-object/7.27.1/7.28.6 ) |  |  |  |  |
| [@babel/plugin-transform-typescript](https://babel.dev/docs/en/next/babel-plugin-transform-typescript ) ([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-typescript )) | [`7.28.5` → `7.28.6`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-typescript/7.28.5/7.28.6 ) |  |  |  |  |
| [@napi-rs/wasm-runtime](https://napi.rs/ ) ([source](https://redirect.github.com/napi-rs/napi-rs/tree/HEAD/wasi-runtime )) | [`1.1.0` → `1.1.1`](https://renovatebot.com/diffs/npm/@napi-rs%2fwasm-runtime/1.1.0/1.1.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.15` → `4.0.18`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser/4.0.15/4.0.18 ) |  |  |  |  |
| [@vitest/browser-playwright](https://vitest.dev/config/browser/playwright ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/browser-playwright )) | [`4.0.15` → `4.0.18`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser-playwright/4.0.15/4.0.18 ) |  |  |  |  |
| [esbuild](https://redirect.github.com/evanw/esbuild ) | [`0.27.1` → `0.27.2`](https://renovatebot.com/diffs/npm/esbuild/0.27.1/0.27.2 ) |  |  |  |  |
| [eslint](https://eslint.org ) ([source](https://redirect.github.com/eslint/eslint )) | [`9.36.0` → `9.39.2`](https://renovatebot.com/diffs/npm/eslint/9.36.0/9.39.2 ) |  |  |  |  |
| [esquery](https://redirect.github.com/estools/esquery ) | [`1.6.0` → `1.7.0`](https://renovatebot.com/diffs/npm/esquery/1.6.0/1.7.0 ) |  |  |  |  |
| [ovsx](https://open-vsx.org ) ([source](https://redirect.github.com/eclipse/openvsx/tree/HEAD/cli )) | [`0.10.7` → `0.10.8`](https://renovatebot.com/diffs/npm/ovsx/0.10.7/0.10.8 ) |  |  |  |  |
| [playwright](https://playwright.dev ) ([source](https://redirect.github.com/microsoft/playwright )) | [`1.57.0` → `1.58.0`](https://renovatebot.com/diffs/npm/playwright/1.57.0/1.58.0 ) |  |  |  |  |
| [pnpm](https://pnpm.io ) ([source](https://redirect.github.com/pnpm/pnpm/tree/HEAD/pnpm )) | [`10.24.0` → `10.28.1`](https://renovatebot.com/diffs/npm/pnpm/10.24.0/10.28.1 ) |  |  |  |  |
| [prettier](https://prettier.io ) ([source](https://redirect.github.com/prettier/prettier )) | [`3.8.0` → `3.8.1`](https://renovatebot.com/diffs/npm/prettier/3.8.0/3.8.1 ) |  |  |  |  |
| [publint](https://publint.dev ) ([source](https://redirect.github.com/publint/publint/tree/HEAD/packages/publint )) | [`0.3.15` → `0.3.17`](https://renovatebot.com/diffs/npm/publint/0.3.15/0.3.17 ) |  |  |  |  |
| [tinypool](https://redirect.github.com/tinylibs/tinypool ) | [`2.0.0` → `2.1.0`](https://renovatebot.com/diffs/npm/tinypool/2.0.0/2.1.0 ) |  |  |  |  |
| [type-fest](https://redirect.github.com/sindresorhus/type-fest ) | [`5.3.0` → `5.4.1`](https://renovatebot.com/diffs/npm/type-fest/5.3.0/5.4.1 ) |  |  |  |  |
| [vitest](https://vitest.dev ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest )) | [`4.0.15` → `4.0.18`](https://renovatebot.com/diffs/npm/vitest/4.0.15/4.0.18 ) |  |  |  |  |
---
### Release Notes
<details>
<summary>babel/babel (@​babel/core)</summary>
### [`v7.28.6`](https://redirect.github.com/babel/babel/compare/v7.28.5...v7.28.6 )
[Compare Source](https://redirect.github.com/babel/babel/compare/v7.28.5...v7.28.6 )
</details>
<details>
<summary>babel/babel (@​babel/plugin-proposal-decorators)</summary>
### [`v7.28.6`](https://redirect.github.com/babel/babel/releases/tag/v7.28.6 )
[Compare Source](https://redirect.github.com/babel/babel/compare/v7.28.0...v7.28.6 )
##### v7.28.6 (2026-01-12)
Thanks [@​kadhirash](https://redirect.github.com/kadhirash ) and [@​kolvian](https://redirect.github.com/kolvian ) for your first PRs!
##### 🐛 Bug Fix
- `babel-cli`, `babel-code-frame`, `babel-core`, `babel-helper-check-duplicate-nodes`, `babel-helper-fixtures`, `babel-helper-plugin-utils`, `babel-node`, `babel-plugin-transform-flow-comments`, `babel-plugin-transform-modules-commonjs`, `babel-plugin-transform-property-mutators`, `babel-preset-env`, `babel-traverse`, `babel-types`
- [#​17589](https://redirect.github.com/babel/babel/pull/17589 ) Improve Unicode handling in code-frame tokenizer ([@​JLHwung](https://redirect.github.com/JLHwung ))
- `babel-plugin-transform-regenerator`
- [#​17556](https://redirect.github.com/babel/babel/pull/17556 ) fix: `transform-regenerator` correctly handles scope ([@​liuxingbaoyu](https://redirect.github.com/liuxingbaoyu ))
- `babel-plugin-transform-react-jsx`
- [#​17538](https://redirect.github.com/babel/babel/pull/17538 ) fix: Keep jsx comments ([@​liuxingbaoyu](https://redirect.github.com/liuxingbaoyu ))
##### :nail\_care: Polish
- `babel-core`, `babel-standalone`
- [#​17606](https://redirect.github.com/babel/babel/pull/17606 ) Polish(standalone): improve message on invalid preset/plugin ([@​JLHwung](https://redirect.github.com/JLHwung ))
##### 🏠 Internal
- `babel-plugin-bugfix-v8-static-class-fields-redefine-readonly`, `babel-plugin-proposal-decorators`, `babel-plugin-proposal-import-attributes-to-assertions`, `babel-plugin-proposal-import-wasm-source`, `babel-plugin-syntax-async-do-expressions`, `babel-plugin-syntax-decorators`, `babel-plugin-syntax-destructuring-private`, `babel-plugin-syntax-do-expressions`, `babel-plugin-syntax-explicit-resource-management`, `babel-plugin-syntax-export-default-from`, `babel-plugin-syntax-flow`, `babel-plugin-syntax-function-bind`, `babel-plugin-syntax-function-sent`, `babel-plugin-syntax-import-assertions`, `babel-plugin-syntax-import-attributes`, `babel-plugin-syntax-import-defer`, `babel-plugin-syntax-import-source`, `babel-plugin-syntax-jsx`, `babel-plugin-syntax-module-blocks`, `babel-plugin-syntax-optional-chaining-assign`, `babel-plugin-syntax-partial-application`, `babel-plugin-syntax-pipeline-operator`, `babel-plugin-syntax-throw-expressions`, `babel-plugin-syntax-typescript`, `babel-plugin-transform-async-generator-functions`, `babel-plugin-transform-async-to-generator`, `babel-plugin-transform-class-properties`, `babel-plugin-transform-class-static-block`, `babel-plugin-transform-dotall-regex`, `babel-plugin-transform-duplicate-named-capturing-groups-regex`, `babel-plugin-transform-explicit-resource-management`, `babel-plugin-transform-exponentiation-operator`, `babel-plugin-transform-json-strings`, `babel-plugin-transform-logical-assignment-operators`, `babel-plugin-transform-nullish-coalescing-operator`, `babel-plugin-transform-numeric-separator`, `babel-plugin-transform-object-rest-spread`, `babel-plugin-transform-optional-catch-binding`, `babel-plugin-transform-optional-chaining`, `babel-plugin-transform-private-methods`, `babel-plugin-transform-private-property-in-object`, `babel-plugin-transform-regexp-modifiers`, `babel-plugin-transform-unicode-property-regex`, `babel-plugin-transform-unicode-sets-regex`
- [#​17580](https://redirect.github.com/babel/babel/pull/17580 ) Allow Babel 8 in compatible Babel 7 plugins ([@​nicolo-ribaudo](https://redirect.github.com/nicolo-ribaudo ))
##### :running\_woman: Performance
- `babel-plugin-transform-react-jsx`
- [#​17555](https://redirect.github.com/babel/babel/pull/17555 ) perf: Use lighter traversal for jsx `__source,__self` ([@​liuxingbaoyu](https://redirect.github.com/liuxingbaoyu ))
##### Committers: 7
- Babel Bot ([@​babel-bot](https://redirect.github.com/babel-bot ))
- Eliot Pontarelli ([@​kolvian](https://redirect.github.com/kolvian ))
- Huáng Jùnliàng ([@​JLHwung](https://redirect.github.com/JLHwung ))
- Kadhirash Sivakumar ([@​kadhirash](https://redirect.github.com/kadhirash ))
- Nicolò Ribaudo ([@​nicolo-ribaudo](https://redirect.github.com/nicolo-ribaudo ))
- [@​liuxingbaoyu](https://redirect.github.com/liuxingbaoyu )
- coderaiser ([@​coderaiser](https://redirect.github.com/coderaiser ))
</details>
<details>
<summary>napi-rs/napi-rs (@​napi-rs/wasm-runtime)</summary>
### [`v1.1.1`](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.1.0...@napi-rs/wasm-runtime@1.1.1 )
[Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.1.0...@napi-rs/wasm-runtime@1.1.1 )
</details>
<details>
<summary>vitest-dev/vitest (@​vitest/browser)</summary>
### [`v4.0.18`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.18 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.17...v4.0.18 )
##### 🚀 Experimental Features
- **experimental**: Add `onModuleRunner` hook to `worker.init` - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9286](https://redirect.github.com/vitest-dev/vitest/issues/9286 ) [<samp>(ea837)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ea837de7d )
##### 🐞 Bug Fixes
- Use `meta.url` in `createRequire` - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9441](https://redirect.github.com/vitest-dev/vitest/issues/9441 ) [<samp>(e0572)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e057281ca )
- **browser**: Hide injected data-testid attributes - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9503](https://redirect.github.com/vitest-dev/vitest/issues/9503 ) [<samp>(f8989)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/f89899cd8 )
- **ui**: Process artifact attachments when generating HTML reporter - by [@​macarie](https://redirect.github.com/macarie ) in [#​9472](https://redirect.github.com/vitest-dev/vitest/issues/9472 ) [<samp>(22543)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/225435647 )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.17...v4.0.18 )
### [`v4.0.17`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.17 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.16...v4.0.17 )
##### 🚀 Experimental Features
- Support openTelemetry for browser mode - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​9180](https://redirect.github.com/vitest-dev/vitest/issues/9180 ) [<samp>(1ec3a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1ec3a8b68 )
- Support TRACEPARENT and TRACESTATE environment variables for OpenTelemetry context propagation - by [@​Copilot](https://redirect.github.com/Copilot ), **hi-ogawa** and [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​9295](https://redirect.github.com/vitest-dev/vitest/issues/9295 ) [<samp>(876cb)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/876cb84c2 )
##### 🐞 Bug Fixes
- Improve asymmetric matcher diff readability by unwrapping container matchers - by [@​Copilot](https://redirect.github.com/Copilot ), **sheremet-va**, **hi-ogawa** and [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​9330](https://redirect.github.com/vitest-dev/vitest/issues/9330 ) [<samp>(b2ec7)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b2ec724a8 )
- Improve runner error when importing outside of test context - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9335](https://redirect.github.com/vitest-dev/vitest/issues/9335 ) [<samp>(2dd3d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/2dd3dd839 )
- Replace crypto.randomUUID to allow insecure environments (fix [#​9](https://redirect.github.com/vitest-dev/vitest/issues/9 )… - by [@​plusgut](https://redirect.github.com/plusgut ) in [#​9339](https://redirect.github.com/vitest-dev/vitest/issues/9339 ) and [#​9](https://redirect.github.com/vitest-dev/vitest/issues/9 ) [<samp>(e6a3f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e6a3f8cc7 )
- Handle null options in `addEventHandler` [#​9371](https://redirect.github.com/vitest-dev/vitest/issues/9371 ) - by [@​ThibautMarechal](https://redirect.github.com/ThibautMarechal ) in [#​9372](https://redirect.github.com/vitest-dev/vitest/issues/9372 ) and [#​9371](https://redirect.github.com/vitest-dev/vitest/issues/9371 ) [<samp>(40841)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/40841ff00 )
- Typo in browser.provider error - by [@​deammer](https://redirect.github.com/deammer ) in [#​9394](https://redirect.github.com/vitest-dev/vitest/issues/9394 ) [<samp>(4b67f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/4b67fc25a )
- **browser**:
- Fix `process.env` and `import.meta.env` defines in inline project - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​9239](https://redirect.github.com/vitest-dev/vitest/issues/9239 ) [<samp>(b70c9)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b70c96121 )
- Fix upload File instance - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​9294](https://redirect.github.com/vitest-dev/vitest/issues/9294 ) [<samp>(b6778)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b67788c69 )
- Fix invalid project token for artifacts assets - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​9321](https://redirect.github.com/vitest-dev/vitest/issues/9321 ) [<samp>(caa7d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/caa7d73d4 )
- Log `ErrorEvent.message` when unhandled `ErrorEvent.error` is null - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​9322](https://redirect.github.com/vitest-dev/vitest/issues/9322 ) [<samp>(5d84e)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5d84eeb91 )
- Support `fileParallelism` on an instance - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9328](https://redirect.github.com/vitest-dev/vitest/issues/9328 ) [<samp>(15006)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/150065459 )
- **coverage**:
- Remove unnecessary `istanbul-lib-source-maps` usage - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [#​9344](https://redirect.github.com/vitest-dev/vitest/issues/9344 ) [<samp>(b0940)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b09405375 )
- Apply patch from [istanbuljs/istanbuljs#837 ](https://redirect.github.com/istanbuljs/istanbuljs/issues/837 ) - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) and **sapphi-red** in [#​9413](https://redirect.github.com/vitest-dev/vitest/issues/9413 ) and [#​837](https://redirect.github.com/vitest-dev/vitest/issues/837 ) [<samp>(e05ce)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e05cedbf4 )
- **fsModuleCache**:
- Don't store importers in cache - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9422](https://redirect.github.com/vitest-dev/vitest/issues/9422 ) [<samp>(75136)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/751364eec )
- Add importers alongside importedModules - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9423](https://redirect.github.com/vitest-dev/vitest/issues/9423 ) [<samp>(59f92)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/59f92d403 )
- **mocker**:
- Fix mock transform with class - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​9421](https://redirect.github.com/vitest-dev/vitest/issues/9421 ) [<samp>(d390e)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d390eb527 )
- **pool**:
- Validate environment options when reusing the worker - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9349](https://redirect.github.com/vitest-dev/vitest/issues/9349 ) [<samp>(a8a88)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a8a8836e3 )
- Handle worker start failures gracefully - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [#​9337](https://redirect.github.com/vitest-dev/vitest/issues/9337 ) [<samp>(200da)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/200dadb32 )
- **reporter**:
- Report test module if it failed to run - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9272](https://redirect.github.com/vitest-dev/vitest/issues/9272 ) [<samp>(c7888)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c78882985 )
- **runner**:
- Respect nested test.only within describe.only - by [@​Ujjwaljain16](https://redirect.github.com/Ujjwaljain16 ) in [#​9021](https://redirect.github.com/vitest-dev/vitest/issues/9021 ) and [#​9213](https://redirect.github.com/vitest-dev/vitest/issues/9213 ) [<samp>(55d5d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/55d5dad69 )
- **typecheck**:
- Improve error message when tsc outputs help text - by [@​Ujjwaljain16](https://redirect.github.com/Ujjwaljain16 ) in [#​9214](https://redirect.github.com/vitest-dev/vitest/issues/9214 ) [<samp>(7b10a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/7b10ab4cd )
- **ui**:
- Detect gzip by magic numbers instead of Content-Type header in html reporter - by [@​Copilot](https://redirect.github.com/Copilot ), **hi-ogawa** and [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​9278](https://redirect.github.com/vitest-dev/vitest/issues/9278 ) [<samp>(dd033)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/dd0331632 )
- **webdriverio**:
- Fall back to WebDriver Classic [#​9244](https://redirect.github.com/vitest-dev/vitest/issues/9244 ) - by [@​JustasMonkev](https://redirect.github.com/JustasMonkev ) in [#​9373](https://redirect.github.com/vitest-dev/vitest/issues/9373 ) and [#​9244](https://redirect.github.com/vitest-dev/vitest/issues/9244 ) [<samp>(c23dd)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c23dd11bd )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.16...v4.0.17 )
### [`v4.0.16`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.16 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.15...v4.0.16 )
##### 🐞 Bug Fixes
- Fix browser mode default testTimeout back to 15 seconds - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​9167](https://redirect.github.com/vitest-dev/vitest/issues/9167 ) [<samp>(da0ad)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/da0ade249 )
- Avoid crashing on `process.versions` stub - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [#​9174](https://redirect.github.com/vitest-dev/vitest/issues/9174 ) [<samp>(78cfb)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/78cfbf99a )
- Reject calling suite function inside test - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​9198](https://redirect.github.com/vitest-dev/vitest/issues/9198 ) [<samp>(1a259)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1a259c340 )
- Allow inlining fully dynamic import - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​9137](https://redirect.github.com/vitest-dev/vitest/issues/9137 ) [<samp>(56851)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/568513ca6 )
- Fix module graph UI on html reporter with headless browser mode - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​9219](https://redirect.github.com/vitest-dev/vitest/issues/9219 ) [<samp>(60642)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/60642b304 )
- Log deprecated `test.poolOptions` if it's set - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​9226](https://redirect.github.com/vitest-dev/vitest/issues/9226 ) [<samp>(f7f6a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/f7f6aa8ba )
- **browser**:
- Import `recordArtifact` from the vitest package - by [@​macarie](https://redirect.github.com/macarie ) in [#​9186](https://redirect.github.com/vitest-dev/vitest/issues/9186 ) [<samp>(01c56)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/01c56454d )
- Fix `import.meta.env` define - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​9205](https://redirect.github.com/vitest-dev/vitest/issues/9205 ) [<samp>(01a9a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/01a9a58d9 )
- String formatting bug when including placeholders in console.log - by [@​michael-debs](https://redirect.github.com/michael-debs ) and [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [#​9030](https://redirect.github.com/vitest-dev/vitest/issues/9030 ) and [#​9131](https://redirect.github.com/vitest-dev/vitest/issues/9131 ) [<samp>(84a30)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/84a306210 )
- **coverage**:
- Istanbul untested files source maps are off - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [#​9208](https://redirect.github.com/vitest-dev/vitest/issues/9208 ) [<samp>(372e8)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/372e86fde )
- **experimental**:
- Export `setupEnvironment` for custom pools - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [#​9187](https://redirect.github.com/vitest-dev/vitest/issues/9187 ) [<samp>(5d26b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5d26b87b0 )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.15...v4.0.16 )
</details>
<details>
<summary>evanw/esbuild (esbuild)</summary>
### [`v0.27.2`](https://redirect.github.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0272 )
[Compare Source](https://redirect.github.com/evanw/esbuild/compare/v0.27.1...v0.27.2 )
- Allow import path specifiers starting with `#/` ([#​4361](https://redirect.github.com/evanw/esbuild/pull/4361 ))
Previously the specification for `package.json` disallowed import path specifiers starting with `#/`, but this restriction [has recently been relaxed](https://redirect.github.com/nodejs/node/pull/60864 ) and support for it is being added across the JavaScript ecosystem. One use case is using it for a wildcard pattern such as mapping `#/*` to `./src/*` (previously you had to use another character such as `#_*` instead, which was more confusing). There is some more context in [nodejs/node#49182 ](https://redirect.github.com/nodejs/node/issues/49182 ).
This change was contributed by [@​hybrist](https://redirect.github.com/hybrist ).
- Automatically add the `-webkit-mask` prefix ([#​4357](https://redirect.github.com/evanw/esbuild/issues/4357 ), [#​4358](https://redirect.github.com/evanw/esbuild/issues/4358 ))
This release automatically adds the `-webkit-` vendor prefix for the [`mask`](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/mask ) CSS shorthand property:
```css
/* Original code */
main {
mask: url(x.png) center/5rem no-repeat
}
/* Old output (with --target=chrome110) */
main {
mask: url(x.png) center/5rem no-repeat;
}
/* New output (with --target=chrome110) */
main {
-webkit-mask: url(x.png) center/5rem no-repeat;
mask: url(x.png) center/5rem no-repeat;
}
```
This change was contributed by [@​BPJEnnova](https://redirect.github.com/BPJEnnova ).
- Additional minification of `switch` statements ([#​4176](https://redirect.github.com/evanw/esbuild/issues/4176 ), [#​4359](https://redirect.github.com/evanw/esbuild/issues/4359 ))
This release contains additional minification patterns for reducing `switch` statements. Here is an example:
```js
// Original code
switch (x) {
case 0:
foo()
break
case 1:
default:
bar()
}
// Old output (with --minify)
switch(x){case 0:foo();break;case 1:default:bar()}
// New output (with --minify)
x===0?foo():bar();
```
- Forbid `using` declarations inside `switch` clauses ([#​4323](https://redirect.github.com/evanw/esbuild/issues/4323 ))
This is a rare change to remove something that was previously possible. The [Explicit Resource Management](https://redirect.github.com/tc39/proposal-explicit-resource-management ) proposal introduced `using` declarations. These were previously allowed inside `case` and `default` clauses in `switch` statements. This had well-defined semantics and was already widely implemented (by V8, SpiderMonkey, TypeScript, esbuild, and others). However, it was considered to be too confusing because of how scope works in switch statements, so it has been removed from the specification. This edge case will now be a syntax error. See [tc39/proposal-explicit-resource-management#215 ](https://redirect.github.com/tc39/proposal-explicit-resource-management/issues/215 ) and [rbuckton/ecma262#14 ](https://redirect.github.com/rbuckton/ecma262/pull/14 ) for details.
Here is an example of code that is no longer allowed:
```js
switch (mode) {
case 'read':
using readLock = db.read()
return readAll(readLock)
case 'write':
using writeLock = db.write()
return writeAll(writeLock)
}
```
That code will now have to be modified to look like this instead (note the additional `{` and `}` block statements around each case body):
```js
switch (mode) {
case 'read': {
using readLock = db.read()
return readAll(readLock)
}
case 'write': {
using writeLock = db.write()
return writeAll(writeLock)
}
}
```
This is not being released in one of esbuild's breaking change releases since this feature hasn't been finalized yet, and esbuild always tracks the current state of the specification (so esbuild's previous behavior was arguably incorrect).
</details>
<details>
<summary>eslint/eslint (eslint)</summary>
### [`v9.39.2`](https://redirect.github.com/eslint/eslint/compare/v9.39.1...9278324aa0023d223874825b0d4b6ac75783096a )
[Compare Source](https://redirect.github.com/eslint/eslint/compare/v9.39.1...v9.39.2 )
### [`v9.39.1`](https://redirect.github.com/eslint/eslint/compare/v9.39.0...e2772811a8595d161870835ff04822b25a2cdf45 )
[Compare Source](https://redirect.github.com/eslint/eslint/compare/v9.39.0...v9.39.1 )
### [`v9.39.0`](https://redirect.github.com/eslint/eslint/compare/v9.38.0...ac3a60dffc29d8d4d5031621bc062e77f891532a )
[Compare Source](https://redirect.github.com/eslint/eslint/compare/v9.38.0...v9.39.0 )
### [`v9.38.0`](https://redirect.github.com/eslint/eslint/releases/tag/v9.38.0 )
[Compare Source](https://redirect.github.com/eslint/eslint/compare/v9.37.0...v9.38.0 )
#### Features
- [`ce40f74`](https://redirect.github.com/eslint/eslint/commit/ce40f74efd45f66d9fbfc6f78ce622ee72008485 ) feat: update `complexity` rule to only highlight function header ([#​20048](https://redirect.github.com/eslint/eslint/issues/20048 )) (Atul Nair)
- [`e37e590`](https://redirect.github.com/eslint/eslint/commit/e37e590aae2a7fcca4d3a9adc1379ad466e5c5d1 ) feat: correct `no-loss-of-precision` false positives with `e` notation ([#​20187](https://redirect.github.com/eslint/eslint/issues/20187 )) (Francesco Trotta)
#### Bug Fixes
- [`50c3dfd`](https://redirect.github.com/eslint/eslint/commit/50c3dfd98065622765a51a8ddb1e70c44fc5a4cb ) fix: improve type support for isolated dependencies in pnpm ([#​20201](https://redirect.github.com/eslint/eslint/issues/20201 )) (Francesco Trotta)
- [`a1f06a3`](https://redirect.github.com/eslint/eslint/commit/a1f06a350c4155c4dbf39bf932a38d71d70f1b65 ) fix: correct SourceCode typings ([#​20114](https://redirect.github.com/eslint/eslint/issues/20114 )) (Pixel998)
#### Documentation
- [`462675a`](https://redirect.github.com/eslint/eslint/commit/462675af8a811f9ca984efaedbdc5b46b13ced7a ) docs: improve web accessibility by hiding non-semantic character ([#​20205](https://redirect.github.com/eslint/eslint/issues/20205 )) (루밀LuMir)
- [`c070e65`](https://redirect.github.com/eslint/eslint/commit/c070e65f6bb9e38d06a89ba2b3261781bec3d397 ) docs: correct formatting in `no-irregular-whitespace` rule documentation ([#​20203](https://redirect.github.com/eslint/eslint/issues/20203 )) (루밀LuMir)
- [`b39e71a`](https://redirect.github.com/eslint/eslint/commit/b39e71a2130ae1ea3fbc19b19f5b951eb625722a ) docs: Update README (GitHub Actions Bot)
- [`cd39983`](https://redirect.github.com/eslint/eslint/commit/cd3998314876a4fad6463d9011bc73778ccc1fd9 ) docs: move `custom-formatters` type descriptions to `nodejs-api` ([#​20190](https://redirect.github.com/eslint/eslint/issues/20190 )) (Percy Ma)
#### Chores
- [`d17c795`](https://redirect.github.com/eslint/eslint/commit/d17c795bf1624e0604998482b98e6bb6bff39045 ) chore: upgrade [@​eslint/js](https://redirect.github.com/eslint/js )@​9.38.0 ([#​20221](https://redirect.github.com/eslint/eslint/issues/20221 )) (Milos Djermanovic)
- [`25d0e33`](https://redirect.github.com/eslint/eslint/commit/25d0e33270e08baed09dbee2cdd56a8e5cd9da0f ) chore: package.json update for [@​eslint/js](https://redirect.github.com/eslint/js ) release (Jenkins)
- [`c82b5ef`](https://redirect.github.com/eslint/eslint/commit/c82b5efa1fc91900e029efa23e688fad67fc17fa ) refactor: Use types from [@​eslint/core](https://redirect.github.com/eslint/core ) ([#​20168](https://redirect.github.com/eslint/eslint/issues/20168 )) (Nicholas C. Zakas)
- [`ff31609`](https://redirect.github.com/eslint/eslint/commit/ff31609f195654d448954210ba4d31e921d463e8 ) ci: add Node.js 25 to `ci.yml` ([#​20220](https://redirect.github.com/eslint/eslint/issues/20220 )) (루밀LuMir)
- [`004577e`](https://redirect.github.com/eslint/eslint/commit/004577eda2f2f4b2829e0364f8b41893cebfc859 ) ci: bump github/codeql-action from 3 to 4 ([#​20211](https://redirect.github.com/eslint/eslint/issues/20211 )) (dependabot\[bot])
- [`eac71fb`](https://redirect.github.com/eslint/eslint/commit/eac71fb77113de7bf199ff20c6ee44cefcb59848 ) test: remove use of `nodejsScope` option of eslint-scope from tests ([#​20206](https://redirect.github.com/eslint/eslint/issues/20206 )) (Milos Djermanovic)
- [`4168a18`](https://redirect.github.com/eslint/eslint/commit/4168a18b7efd8facbbd71cd44a62942a9f656a30 ) chore: fix typo in legacy-eslint.js ([#​20202](https://redirect.github.com/eslint/eslint/issues/20202 )) (Sweta Tanwar)
- [`205dbd2`](https://redirect.github.com/eslint/eslint/commit/205dbd2d9272e761574c478e3b0181f7b89ed0f6 ) chore: fix typos ([#​20200](https://redirect.github.com/eslint/eslint/issues/20200 )) (ntnyq)
- [`dbb200e`](https://redirect.github.com/eslint/eslint/commit/dbb200e3604e63bba23a18d40089ca44604835ed ) chore: use team member's username when name is not available in data ([#​20194](https://redirect.github.com/eslint/eslint/issues/20194 )) (Milos Djermanovic)
- [`8962089`](https://redirect.github.com/eslint/eslint/commit/8962089edbd978b43513576387a134036b8e2d36 ) chore: mark deprecated rules as available until v11.0.0 ([#​20184](https://redirect.github.com/eslint/eslint/issues/20184 )) (Pixel998)
### [`v9.37.0`](https://redirect.github.com/eslint/eslint/releases/tag/v9.37.0 )
[Compare Source](https://redirect.github.com/eslint/eslint/compare/v9.36.0...v9.37.0 )
#### Features
- [`39f7fb4`](https://redirect.github.com/eslint/eslint/commit/39f7fb493a6924ff7dc638fd4d6e7b3d8eb95383 ) feat: `preserve-caught-error` should recognize all static "cause" keys ([#​20163](https://redirect.github.com/eslint/eslint/issues/20163 )) (Pixel998)
- [`f81eabc`](https://redirect.github.com/eslint/eslint/commit/f81eabc5849ece98b8ca054f96b29f038a69bcf8 ) feat: support TS syntax in `no-restricted-imports` ([#​19562](https://redirect.github.com/eslint/eslint/issues/19562 )) (Nitin Kumar)
#### Bug Fixes
- [`a129cce`](https://redirect.github.com/eslint/eslint/commit/a129cced7a86ea2518eb9be6990fa18af39694ca ) fix: correct `no-loss-of-precision` false positives for leading zeros ([#​20164](https://redirect.github.com/eslint/eslint/issues/20164 )) (Francesco Trotta)
- [`09e04fc`](https://redirect.github.com/eslint/eslint/commit/09e04fcc3f4cc963eea7c9c579391de5e231595b ) fix: add missing AST token types ([#​20172](https://redirect.github.com/eslint/eslint/issues/20172 )) (Pixel998)
- [`861c6da`](https://redirect.github.com/eslint/eslint/commit/861c6da2bd2796414e6eed782155ec34e2ed6344 ) fix: correct `ESLint` typings ([#​20122](https://redirect.github.com/eslint/eslint/issues/20122 )) (Pixel998)
#### Documentation
- [`b950359`](https://redirect.github.com/eslint/eslint/commit/b950359c5f39085483c3137a6a160e582ef32007 ) docs: fix typos across the docs ([#​20182](https://redirect.github.com/eslint/eslint/issues/20182 )) (루밀LuMir)
- [`42498a2`](https://redirect.github.com/eslint/eslint/commit/42498a27981d50750dd15ae8660dbe85c4f4587c ) docs: improve ToC accessibility by hiding non-semantic character ([#​20181](https://redirect.github.com/eslint/eslint/issues/20181 )) (Percy Ma)
- [`29ea092`](https://redirect.github.com/eslint/eslint/commit/29ea092b93608756350b1e9c5a4f29c8a49264ab ) docs: Update README (GitHub Actions Bot)
- [`5c97a04`](https://redirect.github.com/eslint/eslint/commit/5c97a04578e6280c2395f642c2d8d6bdf30eec18 ) docs: show `availableUntil` in deprecated rule banner ([#​20170](https://redirect.github.com/eslint/eslint/issues/20170 )) (Pixel998)
- [`90a71bf`](https://redirect.github.com/eslint/eslint/commit/90a71bf5024a86fc232cd2e05f96811e2a18fd0f ) docs: update `README` files to add badge and instructions ([#​20115](https://redirect.github.com/eslint/eslint/issues/20115 )) (루밀LuMir)
- [`1603ae1`](https://redirect.github.com/eslint/eslint/commit/1603ae1526d9b6f557c7d5534a4f40f46842edd6 ) docs: update references from `master` to `main` ([#​20153](https://redirect.github.com/eslint/eslint/issues/20153 )) (루밀LuMir)
#### Chores
- [`afe8a13`](https://redirect.github.com/eslint/eslint/commit/afe8a1346958242031fea66fdfbb239e8bf408b7 ) chore: update `@eslint/js` dependency to version 9.37.0 ([#​20183](https://redirect.github.com/eslint/eslint/issues/20183 )) (Francesco Trotta)
- [`abee4ca`](https://redirect.github.com/eslint/eslint/commit/abee4ca1fa10da733b1cc4a7d5e765b912a9de82 ) chore: package.json update for [@​eslint/js](https://redirect.github.com/eslint/js ) release (Jenkins)
- [`fc9381f`](https://redirect.github.com/eslint/eslint/commit/fc9381f6ca57b824e82d118c14631c17bea79d7e ) chore: fix typos in comments ([#​20175](https://redirect.github.com/eslint/eslint/issues/20175 )) (overlookmotel)
- [`e1574a2`](https://redirect.github.com/eslint/eslint/commit/e1574a22d38fd7e1891f86f8db0b09053f8963cb ) chore: unpin jiti ([#​20173](https://redirect.github.com/eslint/eslint/issues/20173 )) (renovate\[bot])
- [`e1ac05e`](https://redirect.github.com/eslint/eslint/commit/e1ac05e2fae779e738f85bd47dda1cc2b7099346 ) refactor: mark `ESLint.findConfigFile()` as `async`, add missing docs ([#​20157](https://redirect.github.com/eslint/eslint/issues/20157 )) (Pixel998)
- [`347906d`](https://redirect.github.com/eslint/eslint/commit/347906d627c53bf45d63ba831d2fd2b83fb0a749 ) chore: update eslint ([#​20149](https://redirect.github.com/eslint/eslint/issues/20149 )) (renovate\[bot])
- [`0cb5897`](https://redirect.github.com/eslint/eslint/commit/0cb5897e24059bacadb8d2e6458184904759fda1 ) test: remove tmp dir created for circular fixes in multithread mode test ([#​20146](https://redirect.github.com/eslint/eslint/issues/20146 )) (Milos Djermanovic)
- [`bb99566`](https://redirect.github.com/eslint/eslint/commit/bb995665e32b3a958e78006c9fd75744c5604f1b ) ci: pin `jiti` to version 2.5.1 ([#​20151](https://redirect.github.com/eslint/eslint/issues/20151 )) (Pixel998)
- [`177f669`](https://redirect.github.com/eslint/eslint/commit/177f669adc0f96d14ae1a71cde7786f327515863 ) perf: improve worker count calculation for `"auto"` concurrency ([#​20067](https://redirect.github.com/eslint/eslint/issues/20067 )) (Francesco Trotta)
- [`448b57b`](https://redirect.github.com/eslint/eslint/commit/448b57bca3406ee12c4e44e9298fc0c99d3ee10c ) chore: Mark deprecated formatting rules as available until v11.0.0 ([#​20144](https://redirect.github.com/eslint/eslint/issues/20144 )) (Milos Djermanovic)
</details>
<details>
<summary>estools/esquery (esquery)</summary>
### [`v1.7.0`](https://redirect.github.com/estools/esquery/compare/v1.6.0...444da2c9b1f973555102b0e3a2c62f5d607dc6fe )
[Compare Source](https://redirect.github.com/estools/esquery/compare/v1.6.0...444da2c9b1f973555102b0e3a2c62f5d607dc6fe )
</details>
<details>
<summary>eclipse/openvsx (ovsx)</summary>
### [`v0.10.8`](https://redirect.github.com/eclipse/openvsx/blob/HEAD/cli/CHANGELOG.md#v0108-Jan-2026 )
[Compare Source](https://redirect.github.com/eclipse/openvsx/compare/2000f6441959b4a2bcdfa81b5daa35ae0591ed78...f3382bc2d7a7b9c4ed1e9ed1392bf0656436aee8 )
##### Dependencies
- Upgrade `jws` from `3.2.2` to `4.0.1` ([#​1482](https://redirect.github.com/eclipse/openvsx/pull/1482 ))
- Upgrade `@vscode/vsce` from `3.2.1` to `3.7.1` ([#​1482](https://redirect.github.com/eclipse/openvsx/pull/1482 ))
</details>
<details>
<summary>microsoft/playwright (playwright)</summary>
### [`v1.58.0`](https://redirect.github.com/microsoft/playwright/compare/v1.57.0...961381ec73a9fa2661d92504eab1a6bd6eaffc75 )
[Compare Source](https://redirect.github.com/microsoft/playwright/compare/v1.57.0...v1.58.0 )
</details>
<details>
<summary>pnpm/pnpm (pnpm)</summary>
### [`v10.28.1`](https://redirect.github.com/pnpm/pnpm/compare/v10.28.0...v10.28.1 )
[Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.28.0...v10.28.1 )
### [`v10.28.0`](https://redirect.github.com/pnpm/pnpm/compare/v10.27.0...v10.28.0 )
[Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.27.0...v10.28.0 )
### [`v10.27.0`](https://redirect.github.com/pnpm/pnpm/compare/v10.26.2...v10.27.0 )
[Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.26.2...v10.27.0 )
### [`v10.26.2`](https://redirect.github.com/pnpm/pnpm/releases/tag/v10.26.2 ): pnpm 10.26.2
[Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.26.1...v10.26.2 )
#### Patch Changes
- Improve error message when a package version exists but does not meet the `minimumReleaseAge` constraint. The error now clearly states that the version exists and shows a human-readable time since release (e.g., "released 6 hours ago") [#​10307](https://redirect.github.com/pnpm/pnpm/issues/10307 ).
- Fix installation of Git dependencies using annotated tags [#​10335](https://redirect.github.com/pnpm/pnpm/issues/10335 ).
Previously, pnpm would store the annotated tag object's SHA in the lockfile instead of the actual commit SHA. This caused `ERR_PNPM_GIT_CHECKOUT_FAILED` errors because the checked-out commit hash didn't match the stored tag object hash.
- Binaries of runtime engines (Node.js, Deno, Bun) are written to `node_modules/.bin` before lifecycle scripts (install, postinstall, prepare) are executed [#​10244](https://redirect.github.com/pnpm/pnpm/issues/10244 ).
- Try to avoid making network calls with preferOffline [#​10334](https://redirect.github.com/pnpm/pnpm/pull/10334 ).
#### Platinum Sponsors
<table>
<tbody>
<tr>
<td align="center" valign="middle">
<a href="https://bit.dev/?utm_source=pnpm&utm_medium=release_notes " target="_blank"><img src="https://pnpm.io/img/users/bit.svg " width="80" alt="Bit"></a>
</td>
</tr>
</tbody>
</table>
#### Gold Sponsors
<table>
<tbody>
<tr>
<td align="center" valign="middle">
<a href="https://discord.com/?utm_source=pnpm&utm_medium=release_notes " target="_blank">
<picture>
<source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/discord.svg " />
<source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/discord_light.svg " />
<img src="https://pnpm.io/img/users/discord.svg " width="220" alt="Discord" />
</picture>
</a>
</td>
<td align="center" valign="middle">
<a href="https://coderabbit.ai/?utm_source=pnpm&utm_medium=release_notes " target="_blank">
<picture>
<source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/coderabbit.svg " />
<source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/coderabbit_light.svg " />
<img src="https://pnpm.io/img/users/coderabbit.svg " width="220" alt="CodeRabbit" />
</picture>
</a>
</td>
<td align="center" valign="middle">
<a href="https://workleap.com/?utm_source=pnpm&utm_medium=release_notes " target="_blank">
<picture>
<source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/workleap.svg " />
<source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/workleap_light.svg " />
<img src="https:/
</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:eyJjcmVhdGVkSW5WZXIiOiI0Mi45Mi4xIiwidXBkYXRlZEluVmVyIjoiNDIuOTIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
2026-01-27 04:55:04 +00:00
Dunqing
4d97ba3952
chore(tasks): unify printing differences for mismatch code ( #18441 )
...
Instead of implementing printing diffs everywhere, use a unified method to make the code cleaner and maintain consistency.
2026-01-26 05:16:44 +00:00
Dunqing
7ba9fa19f8
refactor(tasks): improve terminal diff output with context lines ( #18437 )
...
## Summary
Improves the `print_diff_in_terminal` function with better readability and a simpler API:
**API Changes:**
- `print_diff_in_terminal(expected, result)` - Simple API that takes two strings
- `print_text_diff(diff)` - For when you already have a `TextDiff` (e.g., to use `diff.ratio()`)
**Features:**
- Show 3 lines of context above and below each change
- Add line numbers with gutter separator (`│`)
- Add blank line between adjacent hunks for visual separation
- Add `...` separator when lines are skipped between hunks
- Use single-pass streaming algorithm with small fixed-size buffer
- Colors: red (`-`) for deletions, green (`+`) for insertions, dim for context
**Formatter Example:**
- Added `--diff` flag to show diff between original and formatted code
Example output:
```
1 │class A {
2 │ #x;
3 │}
- 4 │var _x = /* @__PURE__ */ new WeakMap();
- 5 │var _B_brand = /* @__PURE__ */ new WeakSet();
4 │class B {
- 7 │ constructor() {
- 8 │ babelHelpers.classPrivateMethodInitSpec(this, _B_brand);
- 9 │ babelHelpers.classPrivateFieldInitSpec(this, _x, void 0);
+ 5 │ #x;
+ 6 │ #y() {
+ 7 │ this.#x;
8 │ }
- 11 │}
- 12 │function _y() {
- 13 │ babelHelpers.classPrivateFieldGet2(_x, this);
9 │}
```
## Test plan
- [x] `cargo check -p oxc_tasks_common` passes
- [x] Clippy passes
- [x] Verified output with `just test-transform --filter "plugins-integration/class-features-node-12/input.js"`
🤖 Generated with [Claude Code](https://claude.ai/code )
2026-01-23 08:53:25 +00:00
Boshen
b225b29cc1
chore(submodules): update submodule SHAs to latest commits ( #18334 )
...
Updates submodule dependencies to their latest commits.
## Changes
- test262: `6f55d0c` → `fff41f0`
- babel: `fc58af4` → `6ef16ca`
- TypeScript: `f5ccf43` → `7f6a846`
- estree-conformance: `4980d9b` → `389cb2a`
This PR is automatically generated by the [update_submodules workflow](https://github.com/oxc-project/oxc/blob/main/.github/workflows/update_submodules.yml ).
2026-01-22 16:13:31 +00:00
Dunqing
30a4899dd8
feat(oxc)!: remove CompilerInterface::semantic_child_scope_ids ( #18361 )
...
No usage in the Oxc and Rolldown (see https://github.com/rolldown/rolldown/pull/7995 ), and it will be removed in #18362 , so remove this first.
2026-01-22 07:46:26 +00:00
Boshen
40ef7eef0b
test(transformer): add test for async arrow with super in static property ( #18075 )
...
## Summary
- Adds a test case covering the interaction between `transform-class-properties` and `transform-async-to-generator` when `super` is accessed in an async arrow function within a static class property
- Verifies that `super` references are correctly hoisted before async transformation
## Test plan
- [x] Test passes with `cargo run -p oxc_transform_conformance -- --filter static-async-super`
- [x] Conformance tests pass with `just conformance`
Closes #8326
🤖 Generated with [Claude Code](https://claude.com/claude-code )
2026-01-16 11:52:13 +00:00
Boshen
8687b0959f
chore(submodules): update submodule SHAs to latest commits ( #17978 )
...
Updates submodule dependencies to their latest commits.
## Changes
- test262: `9079aee` → `6f55d0c`
- babel: `761c250` → `fc58af4`
- TypeScript: `f3770c9` → `f5ccf43`
- estree-conformance: `87a8e99` → `4980d9b`
This PR is automatically generated by the [update_submodules
workflow](https://github.com/oxc-project/oxc/blob/main/.github/workflows/update_submodules.yml ).
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2026-01-14 15:13:29 +08:00
Boshen
423c27e260
test(rust): reenable lib tests that only run for code coverage
2026-01-01 11:12:14 +08:00
Boshen
0c4e9cf50d
chore(submodules): update submodule SHAs to latest commits ( #17456 )
...
Updates submodule dependencies to their latest commits.
## Changes
- babel: `cbdc42f` → `761c250`
- TypeScript: `2dfdbba` → `f3770c9`
- estree-conformance: `2e7394c` → `87a8e99`
This PR is automatically generated by the [update_submodules
workflow](https://github.com/oxc-project/oxc/blob/main/.github/workflows/update_submodules.yml ).
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2025-12-29 19:57:32 +08:00
Boshen
8f98fa0d4e
test(rust): disable empty test and doctest targets ( #17409 )
...
## Summary
- Disable `test = false` and `doctest = false` for crates that have no tests
- Reduces CI noise from "0 passed; 0 failed" output
- Saves compilation time for empty test targets
**Affected crates:**
- `oxc_ast_macros` - lib test
- `oxc_language_server` - bin test, lib doctest
- `oxc_napi` - lib test
- `oxc_syntax` - lib doctest
- `oxc_compat_data` - bin test
- `oxc_coverage` - lib test
- `oxc_linter_codegen` - bin test
- `oxc_prettier_conformance` - lib test
- `oxc_transform_conformance` - lib test
- `vscode_docs` - bin test
- `website_common` - lib test, lib doctest
## Test plan
- [x] `cargo test` passes with no empty test suites
🤖 Generated with [Claude Code](https://claude.com/claude-code )
2025-12-28 11:44:19 +00:00
Boshen
b4f8b8a030
chore(js): node v24.12.0 ( #17310 )
2025-12-24 02:21:04 +00:00
Boshen
58323b0b93
chore(submodules): update submodule SHAs to latest commits ( #17287 )
...
Updates submodule dependencies to their latest commits.
## Changes
- babel: `a6b5863` → `cbdc42f`
- estree-conformance: `18b46dd` → `2e7394c`
This PR is automatically generated by the [update_submodules
workflow](https://github.com/oxc-project/oxc/blob/main/.github/workflows/update_submodules.yml ).
Co-authored-by: graphite-app <96075541+graphite-app@users.noreply.github.com >
2025-12-23 11:18:31 +08:00
Boshen
66b47b1a5b
chore(submodules): update submodule SHAs to latest commits ( #17274 )
...
Updates submodule dependencies to their latest commits.
## Changes
- test262: `84082e2` → `9079aee`
- babel: `84d21e4` → `a6b5863`
- TypeScript: `b78f089` → `2dfdbba`
- estree-conformance: `4f260c1` → `18b46dd`
This PR is automatically generated by the [update_submodules
workflow](https://github.com/oxc-project/oxc/blob/main/.github/workflows/update_submodules.yml ).
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2025-12-22 21:38:11 +08:00
camc314
3984750c69
refactor(all)!: remove binding pattern wierdness ( #15925 )
...
fixes #11489
Note, in quite a few places i changed the span we report on to look something like this, the only reason for this is to reduce the diff in some of the snapshots
```
decl.type_annotation.as_ref().map_or_else(
|| decl.id.span(),
|type_annotation| decl.id.span().merge(type_annotation.span()),
),
```
2025-12-22 10:04:20 +00:00
Boshen
c8281dd0bb
chore(pnpm): move workspace devDependencies to used packages ( #16982 )
...
To ensure monorepo dependencies are only visible to where they are used.
2025-12-17 15:09:08 +08:00
Dunqing
30026499d2
fix(transformer/typescript): remove unused import equals declaration ( #16776 )
...
close : #16628
2025-12-17 01:44:05 +00:00
Boshen
3bd05545af
chore(submodules): update submodule SHAs to latest commits ( #16909 )
...
Updates submodule dependencies to their latest commits.
## Changes
- test262: `c0cf527` → `947fee3`
- babel: `3591b24` → `84d21e4`
- TypeScript: `c21f73f` → `0a07132`
- estree-conformance: `1f2816b` → `e0aa1b4`
This PR is automatically generated by the [update_submodules workflow](https://github.com/oxc-project/oxc/blob/main/.github/workflows/update_submodules.yml ).
2025-12-15 15:45:25 +00:00
Boshen
6fca2f7f60
chore(infra): use oxfmt for all files, remove dprint ( #16599 )
...
Toml formatting is missing but there's only a few toml files, can wait
for oxfmt plugins.
- [x] Something is slow, can't figure out why, need #16607
2025-12-15 12:06:24 +00:00
Copilot
99c022eb58
fix(transformer): revert "fix(transformer): validate JSX pragma values and reject invalid identifiers" ( #16793 )
...
Reverts commit 853c20d45 which added JSX pragma validation. The
validation rejected invalid pragma values (backticks, numbers, keywords)
and emitted warnings while falling back to defaults.
## Changes
- **`crates/oxc_transformer/src/jsx/comments.rs`**: Removed
`is_valid_pragma_value()` function and validation checks for `@jsx` and
`@jsxFrag` pragmas. Invalid pragma values are now accepted without
validation.
- **`crates/oxc_transformer/src/jsx/diagnostics.rs`**: Removed
`invalid_pragma_value()` diagnostic.
- **Test fixtures**: Removed `invalid-jsx` and `invalid-jsx-frag` test
cases.
## Behavior
Invalid pragma values are now used as-is in transformation:
```jsx
// @jsxRuntime classic
console.log(<></>) // @jsxFrag `
```
Transforms to invalid code:
```js
console.log(React.createElement(`, null));
```
<!-- START COPILOT CODING AGENT SUFFIX -->
<!-- START COPILOT ORIGINAL PROMPT -->
<details>
<summary>Original prompt</summary>
> Revert #16675
</details>
<!-- START COPILOT CODING AGENT TIPS -->
---
✨ Let Copilot coding agent [set things up for
you](https://github.com/oxc-project/oxc/issues/new?title=✨ +Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot )
— coding agent works faster and does higher quality work when set up for
your repo.
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: Dunqing <29533304+Dunqing@users.noreply.github.com >
2025-12-15 11:38:14 +08:00
Copilot
853c20d452
fix(transformer): validate JSX pragma values and reject invalid identifiers ( #16675 )
...
Invalid JSX pragma values in comments (e.g., backticks) were being used
as-is, generating broken JavaScript code. The transformer now validates
pragma values and emits warnings when they're invalid.
## Changes
- **Validation**: Added `is_valid_pragma_value()` to validate `@jsx` and
`@jsxFrag` pragma values against JavaScript identifier rules
- Accepts single identifiers: `h`, `Fragment`
- Accepts dotted identifiers: `React.Fragment`, `Preact.h`
- Accepts special forms: `this.foo`, `import.meta.bar`
- Rejects invalid syntax: backticks, numbers, empty strings
- **Diagnostics**: Added `invalid_pragma_value()` warning diagnostic
that guides users to fix malformed pragmas
- **Fallback behavior**: Invalid pragmas are ignored and defaults
(`React.createElement`, `React.Fragment`) are used
## Example
**Before:**
```js
// @jsxRuntime classic
console.log(<></>) // @jsxFrag `
// Transforms to invalid code:
console.log(React.createElement(`, null));
```
**After:**
```js
// Emits warning: Invalid @jsxFrag value "`". It will be ignored.
// Transforms to valid code:
console.log(React.createElement(React.Fragment, null));
```
This aligns with esbuild's behavior of warning users about invalid
pragmas while continuing transformation with defaults.
<!-- START COPILOT ORIGINAL PROMPT -->
<details>
<summary>Original prompt</summary>
>
> ----
>
> *This section details on the original issue you should resolve*
>
> <issue_title>transformer: ``// @jsxFrag ` `` generates invalid
code</issue_title>
> <issue_description>```js
> // @jsxRuntime classic
> console.log(<></>) // @jsxFrag `
> ```
> is transformed to
> ```js
> // @jsxRuntime classic
> console.log(/* @__PURE__ */ React.createElement(`, null));
> ```
> . But this should be
> ```js
> // @jsxRuntime classic
> console.log(/* @__PURE__ */ React.createElement(React.Fragment,
null));
> ```
> (the pragma comment should be ignored).
>
[playground](https://playground.oxc.rs/#eNptU8Fu2zAM/ZVApw3I1mGnIiiKDe0CDOjWrh3WSw+TZdpVKkseRScpgvz7nhxLyaEnW48i+fj4tFNGLdTZ2ezLKm7vBy+2o5lxOkZrnrwJPgZHH11o311cXpxdvp9NV5es29nfJ6/mKqjFTvHg08dZL2rRaBdprprAnRYhLoiw9jHBaiE8ALAor4Xqa0JP1mLRsNzePFuh2GtDBeq0b93xaELXM8VjSjShR/hQPL52VXD5ZJp2urafq15zTLx2irZCPqIvZMBcmEc7Fzb3JAP720GirWk5eJOo5VKpJ/Ga7jQjN6Nj3p/z717YoqIpgUigLdZ8Yw48oeCQtBo54P9Eqp0aIv3W1XEo0dWjreVZLT7PFfn6trmxHlMq14Buj24yxc8/oZtNEv0aghx1wmAPb8D/0umOQ49eSscPnqimGjWxJwt67VXoOp1izgHFHLYMi1k2eX7EN/o14krF2ryQPGBpSM+XM6o7OjCf+odqRUYeWfeokUVNjUauXwVCVgMYEp+kQa1io4Neorkl2E5R9FgnCkDBa2qQswx8lcy8tOTqshDa9sQwuhft4LwA45XFINpZKegPEl1rgQjT1t527E5FkO2xe2Kv4blM1YSaWhrfhk87LnZcxTrg6U1qeh9krJURR22+O1bJPk9myY8Ak4f+htZUir4Q9T+hcvbOmAo/BreEN1PGmrgK8URL69MOUqj87QHXo3wJLn/7hCeZ80z7/ygugu8= )
>
> Probably a warning should be output like esbuild does ([esbuild
try](https://esbuild.github.io/try/#dAAwLjI3LjEALS1sb2FkZXI9anN4AC8vIEBqc3hSdW50aW1lIGNsYXNzaWMKY29uc29sZS5sb2coPD48Lz4pIC8vIEBqc3hGcmFnIGA )).
>
> related:
https://github.com/evanw/esbuild/commit/2102e068368dea39713b8b071a08b5222020de5f </issue_description>
>
> ## Comments on the Issue (you are @copilot in this section)
>
> <comments>
> </comments>
>
</details>
<!-- START COPILOT CODING AGENT SUFFIX -->
- Fixes oxc-project/oxc#16653
<!-- START COPILOT CODING AGENT TIPS -->
---
✨ Let Copilot coding agent [set things up for
you](https://github.com/oxc-project/oxc/issues/new?title=✨ +Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot )
— coding agent works faster and does higher quality work when set up for
your repo.
---------
Signed-off-by: Dunqing <dengqing0821@gmail.com >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: Dunqing <29533304+Dunqing@users.noreply.github.com >
Co-authored-by: Dunqing <dengqing0821@gmail.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-12-11 16:30:11 +08:00
Boshen
0a3bb7bede
chore(submodules): update submodule SHAs to latest commits ( #16617 )
...
Updates submodule dependencies to their latest commits.
## Changes
- test262: `d0994d6` → `c0cf527`
- babel: `7958603` → `3591b24`
- TypeScript: `669c25c` → `c21f73f`
- estree-conformance: `3e67aec` → `1f2816b`
This PR is automatically generated by the [update_submodules
workflow](https://github.com/oxc-project/oxc/blob/main/.github/workflows/update_submodules.yml ).
Co-authored-by: graphite-app <96075541+graphite-app@users.noreply.github.com >
2025-12-10 15:28:16 +08: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
Dunqing
2c275bfbd5
fix(transformer/styled-components): named styled import doesn't work ( #16573 )
...
close: https://github.com/rolldown/rolldown/issues/7292
2025-12-08 11:19:58 +00:00
Boshen
3827464d2e
chore(submodules): update submodule SHAs to latest commits ( #16454 )
...
Updates submodule dependencies to their latest commits.
## Changes
- test262: `26058a0` → `d0994d6`
- babel: `99dcba5` → `7958603`
- estree-conformance: `21042b0` → `3e67aec`
This PR is automatically generated by the [update_submodules workflow](https://github.com/oxc-project/oxc/blob/main/.github/workflows/update_submodules.yml ).
2025-12-03 15:59:20 +00:00
overlookmotel
b0fd9b139c
style(traverse, tasks): prefer const to let ( #16396 )
...
Use `const` where variables are not reassigned instead of `let`. Preparation for enabling ESLint's `prefer-const` rule (running as an Oxlint JS plugin) in our linting setup.
2025-12-02 14:30:40 +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
Boshen
f25f031fbf
chore(submodules): update submodule SHAs to latest commits ( #16084 )
...
Updates submodule dependencies to their latest commits.
## Changes
- test262: `c125a8d` → `26058a0`
- babel: `c92c491` → `99dcba5`
- TypeScript: `cc2610f` → `669c25c`
- prettier: `d7fe2da` → `864bb7c`
- acorn-test262: `fd0b12c` → `0435714`
This PR is automatically generated by the [update_submodules
workflow](https://github.com/oxc-project/oxc/blob/main/.github/workflows/update_submodules.yml ).
Co-authored-by: graphite-app <96075541+graphite-app@users.noreply.github.com >
2025-11-25 13:19:40 +08:00
overlookmotel
5877752586
ci(lint): enable no-console rule ( #16053 )
...
Enable `no-console` rule in our linting setup. Add `oxlint-disable` comments where we do want to log (in scripts).
2025-11-24 12:06:00 +00:00
Dunqing
7c46a9e9bb
fix(transformer/tagged-template-transform): handle \n escape sequences ( #15830 )
...
Fixes the issue identified in #15664 where the tagged template transform plugin incorrectly handled template literals containing escape sequences.
### Examples
```js
// Input
foo`</script>\n`
// Before (incorrect):
foo(_t || (_t = taggedTemplateLiteral(["</script>\\n"])));
// After (correct):
foo(_t || (_t = taggedTemplateLiteral(["</script>\n"], ["</script>\\n"])));
// Input with invalid escape
foo`</script>\u`
// Before (syntax error):
foo(_t || (_t = taggedTemplateLiteral(["</script>\\u"])));
// After (correct):
foo(_t || (_t = taggedTemplateLiteral([void 0], ["</script>\\u"])));
2025-11-19 23:36:21 +00:00
Boshen
82471c8d5a
chore(submodules): update submodule SHAs to latest commits ( #15825 )
...
Updates submodule dependencies to their latest commits.
## Changes
- test262: `fd594a0` → `c125a8d`
- babel: `777ded7` → `c92c491`
- TypeScript: `48244d8` → `cc2610f`
- prettier: `9e9f65e` → `d7fe2da`
- acorn-test262: `9cce4c9` → `fd0b12c`
- node-compat-table: `6822522` → `499beb6`
This PR is automatically generated by the [update_submodules workflow](https://github.com/oxc-project/oxc/blob/main/.github/workflows/update_submodules.yml ).
2025-11-18 03:31:03 +00:00
Dunqing
7f74c8a93c
test(transformer): update snapshots ( #15826 )
...
https://github.com/oxc-project/oxc/pull/15522 updated npm packages but it doesn't run tests to update snapshots!
2025-11-18 03:18:52 +00:00
Dunqing
1b18457e05
feat(transformer): support tagged template expression with </script transformation ( #15664 )
...
Implement a transformation plugin for tagged template expressions containing </script> tags to prevent script tag issues in browser environments.
This plugin transforms tagged template literals containing `</script` (case-insensitive) to use a helper function call with template caching, matching esbuild's behavior.
### Example
Transforms tagged templates to use cached template objects with a helper function:
Input:
```js
foo`</script>`
bar`<script>${content}</script>`
```
Output:
```js
var _templateObject, _templateObject2;
foo(_templateObject || (_templateObject = babelHelpers.taggedTemplateLiteral(["<\/script>"])));
bar(_templateObject2 || (_templateObject2 = babelHelpers.taggedTemplateLiteral(["<script>", "<\/script>"])), content);
```
Closes #15306
2025-11-17 11:55:13 +00:00
Boshen
9b8f41459e
chore(submodules): update submodule SHAs to latest commits ( #15586 )
...
Updates submodule dependencies to their latest commits.
## Changes
- test262: `d2940bd` → `fd594a0`
- babel: `4cc3d88` → `777ded7`
- TypeScript: `8ea03f8` → `48244d8`
- prettier: `011791f` → `9e9f65e`
- acorn-test262: `994d763` → `9cce4c9`
- node-compat-table: `17ac85c` → `6822522`
This PR is automatically generated by the [update_submodules
workflow](https://github.com/oxc-project/oxc/blob/main/.github/workflows/update_submodules.yml ).
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com >
2025-11-11 17:43:08 +08:00