Commit Graph

811 Commits

Author SHA1 Message Date
overlookmotel 24a8d9e17e refactor(linter/plugins, parser/napi): generate type IDs maps as variants (#17174)
Pure refactor. Generate the JS files containing `NODE_TYPE_IDS_MAP` as variants of a single source code file, instead of constructing to two different versions for parser and linter manually.

This makes changes in further PRs to come easier to implement.
2025-12-20 13:59:13 +00:00
renovate[bot] 86298e8234 chore(deps): update dependency oxfmt to ^0.19.0 (#16602) 2025-12-19 12:32:14 +08:00
Boshen c90ab786d0 release(crates): oxc v0.104.0 (#17096)
### 🚀 Features

- d209c21 allocator: Add cap to FixedSizeAllocatorPool and block when
exhausted (#17023) (Cameron)
- fb2af91 allocator: Add bitset utils (#17042) (zhaoting zhou)
- c16082c tasks/compat_data: Integrate `node-compat-table` (#16831)
(Boshen)
- 5586823 span: Extract TS declaration file check to its own function
(#17037) (camchenry)
- 3d2b492 minifier: Fold iife arrow functions in call expressions
(#16477) (Armano)
- 67e9f9e codegen: Keep comments on the export specifiers (#16943)
(夕舞八弦)
- cb515fa parser: Improve error message for `yield` as identifier usage
(#16950) (sapphi-red)
- dcc856b parser: Add help for `new_dynamic_import` error (#16949)
(sapphi-red)
- c3c79f8 parser: Improve import attribute value error message (#16948)
(sapphi-red)
- 291b57b ast_tools: Generate TS declaration files for deserializer and
walk files (#16912) (camc314)
- 74eae13 minifier: Remove unused import specifiers (#16797) (camc314)

### 🐛 Bug Fixes

- fb9e193 linter: OOM problems with custom plugins (#17082)
(overlookmotel)
- e59132b parser/napi: Fix lazy deser (#17069) (overlookmotel)
- a92faf0 ast_tools: Support `u128` in `assert_layouts` generator
(#17050) (overlookmotel)
- 47b4c2f minifier/docs: Correct hyperlink path in OPTIMIZATIONS.md
(#16986) (GRK)
- 3002649 transformer/typescript: Remove unused import equals
declaration (#16776) (Dunqing)
- 5a2af88 regular_expression: Correct named capture group reference
error (#16952) (sapphi-red)

### ⚡ Performance

- b657bb6 allocator: Reduce time `Mutex` lock is held in
`FixedSizeAllocatorPool::get` (#17079) (overlookmotel)
- 1f3b19b ast: `#[ast]` macro use `#[repr(transparent)]` for
single-field structs (#17052) (overlookmotel)
- 225f229 parser: Use SmallVec for duplicate default export detection
(#16801) (camc314)

### 📚 Documentation

- a9c419f traverse: Update safety comments (#16944) (overlookmotel)

Co-authored-by: overlookmotel <557937+overlookmotel@users.noreply.github.com>
2025-12-19 02:14:06 +00:00
overlookmotel d1ce274d39 test(estree): update estree-conformance submodule (#17066)
Bump `estree-conformance` and `test262` submodules.

`estree-conformance` submodule now contains snapshots for tokens conformance testing: https://github.com/oxc-project/estree-conformance/pull/131 & https://github.com/oxc-project/estree-conformance/pull/134
2025-12-18 16:03:24 +00:00
overlookmotel e59132b6c0 fix(parser/napi): fix lazy deser (#17069)
Lazy deserialization in `oxc-parser` was broken by #16957. Fix it.
2025-12-18 15:48:00 +00:00
overlookmotel a92faf08e8 fix(ast_tools): support u128 in assert_layouts generator (#17050)
Previously `u128` was not supported in `assert_layouts` generator, because Rust changed the alignment of `u128` from 8 to 16 - and therefore the alignment depended on Rust version.

That change happened some time ago now, and all Rust versions above our MSRV have `u128` with alignment of 16. So we can now support `u128` (and also `i128`, `NonZeroU128`, `NonZeroI128`).

Also support `u128` in `raw_transfer` and `raw_transfer_lazy` generators.

This will help with making lexer tokens serializable (#17025), since `Token` contains a `u128`.
2025-12-18 11:58:03 +00:00
camc314 5d211a8c69 refactor(napi/parser): move generated JS into src-js (#16957)
moves the generated code into src-js to keep the same pattern as oxlint
2025-12-17 11:43:42 +00:00
Boshen aa9f46f6fa chore(js): remove tsc from package scripts as we use oxlint --type-check (#16985) 2025-12-17 16:18:14 +08: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
Boshen 1d680de87e chore(pnpm): remove tasks/e2e workspace (#16881)
I thought making it a separate would be easier to manage,
but it's actually not.

Previous setup was also downloading packages from npm on every CI run.
2025-12-16 14:03:25 +00:00
camc314 291b57bfb2 feat(ast_tools): generate TS declaration files for deserializer and walk files (#16912)
this fixes some ts-expect-errors in oxlint by generating declaration files.

We could also consider using oxc_isolated_declarations to generate these
2025-12-15 20:50:16 +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
Boshen e6ad960231 release(crates): oxc v0.103.0 (#16887) 2025-12-15 18:17:19 +08:00
Boshen 3f5d6b7529 chore(rust): cargo-shear v1.9.0 (#16800)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-12-14 00:46:46 +08:00
camc314 af0f2af93f chore(lint): enable ban-ts-comment rule and fix ts-ignore usages (#16799)
follow on from https://github.com/oxc-project/oxc/pull/16796
2025-12-13 16:19:48 +00:00
camc314 2acd66ed42 style(all): enable eslint/curly lint rule (#16753)
built on https://github.com/oxc-project/oxc/pull/16749, we can use the linter to be consistent here
2025-12-11 14:49:48 +00:00
renovate 211afcff5f chore(deps): update npm packages (#15994)
> **Note:** This PR body was truncated due to platform limits.

This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Adoption](https://docs.renovatebot.com/merge-confidence/) | [Passing](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|---|---|
| [@napi-rs/wasm-runtime](https://redirect.github.com/napi-rs/napi-rs) ([source](https://redirect.github.com/napi-rs/napi-rs/tree/HEAD/wasi-runtime)) | [`1.0.7` -> `1.1.0`](https://renovatebot.com/diffs/npm/@napi-rs%2fwasm-runtime/1.0.7/1.1.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@napi-rs%2fwasm-runtime/1.1.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@napi-rs%2fwasm-runtime/1.1.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@napi-rs%2fwasm-runtime/1.0.7/1.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@napi-rs%2fwasm-runtime/1.0.7/1.1.0?slim=true) |
| [@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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcommon/11.1.9?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcommon/11.1.9?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcommon/11.1.6/11.1.9?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcommon/11.1.6/11.1.9?slim=true) |
| [@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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcore/11.1.9?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcore/11.1.9?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcore/11.1.6/11.1.9?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcore/11.1.6/11.1.9?slim=true) |
| [@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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fplatform-express/11.1.9?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fplatform-express/11.1.9?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fplatform-express/11.1.6/11.1.9?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fplatform-express/11.1.6/11.1.9?slim=true) |
| [@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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2ftesting/11.1.9?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2ftesting/11.1.9?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2ftesting/11.1.6/11.1.9?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2ftesting/11.1.6/11.1.9?slim=true) |
| [@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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/24.10.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/24.10.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/24.9.1/24.10.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/24.9.1/24.10.1?slim=true) |
| [@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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fscope-manager/8.48.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fscope-manager/8.48.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fscope-manager/8.46.2/8.48.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fscope-manager/8.46.2/8.48.1?slim=true) |
| [@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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2ftypescript-estree/8.48.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2ftypescript-estree/8.48.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2ftypescript-estree/8.47.0/8.48.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2ftypescript-estree/8.47.0/8.48.1?slim=true) |
| [@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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fvisitor-keys/8.48.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fvisitor-keys/8.48.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fvisitor-keys/8.47.0/8.48.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fvisitor-keys/8.47.0/8.48.1?slim=true) |
| [@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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fbrowser/4.0.15?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitest%2fbrowser/4.0.15?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitest%2fbrowser/4.0.6/4.0.15?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fbrowser/4.0.6/4.0.15?slim=true) |
| [@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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fbrowser-playwright/4.0.15?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitest%2fbrowser-playwright/4.0.15?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitest%2fbrowser-playwright/4.0.6/4.0.15?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fbrowser-playwright/4.0.6/4.0.15?slim=true) |
| [@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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@vscode%2fvsce/3.7.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vscode%2fvsce/3.7.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vscode%2fvsce/3.6.2/3.7.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vscode%2fvsce/3.6.2/3.7.1?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/alpinejs/3.15.2?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/alpinejs/3.15.2?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/alpinejs/3.15.0/3.15.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/alpinejs/3.15.0/3.15.2?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/antd/6.0.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/antd/6.0.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/antd/6.0.0/6.0.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/antd/6.0.0/6.0.1?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/axios/1.13.2?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/axios/1.13.2?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/axios/1.12.2/1.13.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/axios/1.12.2/1.13.2?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/dayjs/1.11.19?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/dayjs/1.11.19?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/dayjs/1.11.18/1.11.19?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/dayjs/1.11.18/1.11.19?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/emnapi/1.7.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/emnapi/1.7.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/emnapi/1.6.0/1.7.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/emnapi/1.6.0/1.7.1?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/es-toolkit/1.42.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/es-toolkit/1.42.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/es-toolkit/1.40.0/1.42.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/es-toolkit/1.40.0/1.42.0?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/esbuild/0.27.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/esbuild/0.27.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/esbuild/0.25.12/0.27.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/esbuild/0.25.12/0.27.1?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/execa/9.6.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/execa/9.6.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/execa/9.6.0/9.6.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/execa/9.6.0/9.6.1?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/happy-dom/20.0.11?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/happy-dom/20.0.11?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/happy-dom/20.0.7/20.0.11?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/happy-dom/20.0.7/20.0.11?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/memfs/4.51.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/memfs/4.51.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/memfs/4.49.0/4.51.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/memfs/4.49.0/4.51.1?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/motion/12.23.25?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/motion/12.23.25?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/motion/12.23.24/12.23.25?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/motion/12.23.24/12.23.25?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/ovsx/0.10.7?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/ovsx/0.10.7?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/ovsx/0.10.6/0.10.7?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/ovsx/0.10.6/0.10.7?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/playwright/1.57.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright/1.57.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright/1.56.1/1.57.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright/1.56.1/1.57.0?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/pnpm/10.24.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/pnpm/10.24.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/pnpm/10.20.0/10.24.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/pnpm/10.20.0/10.24.0?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/preact/10.28.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/preact/10.28.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/preact/10.27.2/10.28.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/preact/10.27.2/10.28.0?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/react/19.2.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react/19.2.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react/19.2.0/19.2.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react/19.2.0/19.2.1?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/react-dom/19.2.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-dom/19.2.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-dom/19.2.0/19.2.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-dom/19.2.0/19.2.1?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/solid-js/1.9.10?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/solid-js/1.9.10?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/solid-js/1.9.9/1.9.10?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/solid-js/1.9.9/1.9.10?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/terser/5.44.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/terser/5.44.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/terser/5.44.0/5.44.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/terser/5.44.0/5.44.1?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/type-fest/5.3.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/type-fest/5.3.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/type-fest/5.2.0/5.3.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/type-fest/5.2.0/5.3.0?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/4.0.15?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/4.0.15?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/4.0.1/4.0.15?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/4.0.1/4.0.15?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/4.0.15?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/4.0.15?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/4.0.10/4.0.15?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/4.0.10/4.0.15?slim=true) |
| [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) | ![age](https://developer.mend.io/api/mc/badges/age/npm/vue/3.5.25?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vue/3.5.25?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vue/3.5.22/3.5.25?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vue/3.5.22/3.5.25?slim=true) |

---

### Release Notes

<details>
<summary>napi-rs/napi-rs (@&#8203;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 (@&#8203;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`
  - [#&#8203;15865](https://redirect.github.com/nestjs/nest/pull/15865) fix(core): make get() throw for implicitly request-scoped trees ([@&#8203;JoeNutt](https://redirect.github.com/JoeNutt))

##### Enhancements

- `common`
  - [#&#8203;15863](https://redirect.github.com/nestjs/nest/pull/15863) feat(common): add method options to [@&#8203;sse](https://redirect.github.com/sse) decorator ([@&#8203;TomerSteinberg](https://redirect.github.com/TomerSteinberg))

##### Dependencies

- `platform-fastify`
  - [#&#8203;15899](https://redirect.github.com/nestjs/nest/pull/15899) chore(deps): bump fastify from 5.6.1 to 5.6.2 ([@&#8203;dependabot\[bot\]](https://redirect.github.com/apps/dependabot))

##### Committers: 4

- Rami ([@&#8203;JoeNutt](https://redirect.github.com/JoeNutt))
- Rhynel Algopera ([@&#8203;dev-rhynel](https://redirect.github.com/dev-rhynel))
- Tomer Steinberg ([@&#8203;TomerSteinberg](https://redirect.github.com/TomerSteinberg))
- WuMingDao ([@&#8203;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 (@&#8203;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 ([#&#8203;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` ([#&#8203;11747](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11747))

##### ❤️ Thank You

- Josh Goldberg
- mdm317 [@&#8203;gen-ip-1](https://redirect.github.com/gen-ip-1)
- Younsang Na [@&#8203;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 (@&#8203;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 ([#&#8203;11740](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11740))
- **eslint-plugin:** \[no-redundant-type-constituents] use assignability checking for redundancy checks ([#&#8203;10744](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10744))
- **typescript-estree:** gate all errors behind allowInvalidAST ([#&#8203;11693](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11693))

##### 🩹 Fixes

- **typescript-estree:** disallow binding patterns in parameter properties ([#&#8203;11760](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11760))
- **typescript-estree:** infers singleRun as true for project service ([#&#8203;11327](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11327))

##### ❤️ Thank You

- Ben McCann [@&#8203;benmccann](https://redirect.github.com/benmccann)
- Dima Barabash [@&#8203;dbarabashh](https://redirect.github.com/dbarabashh)
- fisker Cheung [@&#8203;fisker](https://redirect.github.com/fisker)
- James Henry [@&#8203;JamesHenry](https://redirect.github.com/JamesHenry)
- JamesHenry [@&#8203;JamesHenry](https://redirect.github.com/JamesHenry)
- Josh Goldberg
- Josh Goldberg ✨
- mdm317 [@&#8203;gen-ip-1](https://redirect.github.com/gen-ip-1)
- Younsang Na [@&#8203;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 (@&#8203;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 (@&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in [#&#8203;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 [@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in [#&#8203;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 [@&#8203;HowToTestFrontend](https://redirect.github.com/HowToTestFrontend) in [#&#8203;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 [@&#8203;macarie](https://redirect.github.com/macarie) in [#&#8203;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 [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;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 [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;macarie](https://redirect.github.com/macarie) in [#&#8203;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 [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;whitphx](https://redirect.github.com/whitphx) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;macarie](https://redirect.github.com/macarie) in [#&#8203;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 [@&#8203;macarie](https://redirect.github.com/macarie) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;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 [#&#8203;9018](https://redirect.github.com/vitest-dev/vitest/issues/9018)  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9072](https://redirect.github.com/vitest-dev/vitest/issues/9072) and [#&#8203;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 [@&#8203;aicest](https://redirect.github.com/aicest) in [#&#8203;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 [@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;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 [@&#8203;whitphx](https://redirect.github.com/whitphx) and [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;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 [@&#8203;sxzz](https://redirect.github.com/sxzz) and [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;macarie](https://redirect.github.com/macarie) in [#&#8203;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 [@&#8203;macarie](https://redirect.github.com/macarie) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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: [#&#8203;9003](https://redirect.github.com/vitest-dev/vitest/issues/9003)  -  by [@&#8203;iclectic](https://redirect.github.com/iclectic) in [#&#8203;9016](https://redirect.github.com/vitest-dev/vitest/issues/9016) and [#&#8203;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 [@&#8203;nazarhussain](https://redirect.github.com/nazarhussain) in [#&#8203;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 [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;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 [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) and [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;userquin](https://redirect.github.com/userquin) in [#&#8203;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 [@&#8203;tim-we](https://redirect.github.com/tim-we) and [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;userquin](https://redirect.github.com/userquin) in [#&#8203;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 [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;userquin](https://redirect.github.com/userquin) in [#&#8203;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 [@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in [#&#8203;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 [@&#8203;termorey](https://redirect.github.com/termorey) in [#&#8203;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 [@&#8203;StyleShit](https://redirect.github.com/StyleShit) in [#&#8203;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 [@&#8203;userquin](https://redirect.github.com/userquin) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;Livan-pro](https://redirect.github.com/Livan-pro) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;julienw](https://redirect.github.com/julienw) in [#&#8203;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 [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;vitalybaev](https://redirect.github.com/vitalybaev) in [#&#8203;8910](https://redirect.github.com/vitest-dev/vitest/issues/8910) and [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;pi0](https://redirect.github.com/pi0) in [#&#8203;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 [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;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 [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;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 [@&#8203;Connormiha](https://redirect.github.com/Connormiha) in [#&#8203;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 [@&#8203;Connormiha](https://redirect.github.com/Connormiha) in [#&#8203;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 (@&#8203;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:

- [#&#8203;1223](https://redirect.github.com/Microsoft/vsce/issues/1223): Bump js-yaml
- [#&#8203;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:

- [#&#8203;1219](https://redirect.github.com/Microsoft/vsce/issues/1219): Remove invalid validation for extension dependencies
- [#&#8203;1212](https://redirect.github.com/Microsoft/vsce/issues/1212): Validate extension dependencies use lowercase letters and warn about deprecated github.copilot
- [#&#8203;1209](https://redirect.github.com/Microsoft/vsce/issues/1209): Bump validator from 13.9.0 to 13.15.20
- [#&#8203;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 [#&#8203;4704](https://redirect.github.com/alpinejs/alpine/pull/4704)
- Add `setErrorHandler` [#&#8203;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 30a90762ec feat(ast, parser, codegen): add CommentKind::MultilineBlock (#16479)
Add `CommentKind::MultilineBlock` to indicate a block comment that has at least one linebreak, which would be useful in the Codegen and Formatter

Examples:

CommentKind::Block:
```js
/* single line block comment */
```

CommentKind::MultilineBlock

```js
/* multiline
block
 comment */
```

Maybe it would be better to rename `CommentKind::Block` to `CommentKind::SinglelineBlock.` as well
2025-12-09 02:02:10 +00:00
Boshen 745873e4cd release(crates): oxc v0.102.0 (#16595)
### 💥 BREAKING CHANGES

- 083fea9 napi/parser: [**BREAKING**] Represent empty optional fields on
JS side as `null` (#16411) (overlookmotel)

### 🚀 Features

- 7a2afee parser: Add TS1174 error for classes extending multiple base
classes (#15993) (sapphi-red)
- da87812 semantic: Add TS2309 error for export assignment with other
exports (#15992) (sapphi-red)
- d6d2bcd minifier: Remove unused function calls that are marked by
`manual_pure_functions` (#16534) (sapphi-red)
- c90f053 minifier: Support `.` separated values for
`compress.treeshake.manualPureFunctions` (#16529) (sapphi-red)
- a607cc4 codegen: Preserve comments between CatchClause's param and
body (#16167) (copilot-swe-agent)
- 8c10694 semantic: Expose get_comment_at method (#16439) (camc314)
- 3981e7a ast: Add get_comment_at to lookup a comment by span (#16438)
(camc314)

### 🐛 Bug Fixes

- 699406a napi/parser: Move `ExportEntry::module_request` field to first
(#16412) (overlookmotel)
- 12bd794 napi/parser: Move `ExportEntry::module_request` field to last
(#16403) (overlookmotel)

### ⚡ Performance

- 790beeb napi/parser: Do not remove extraneous options on JS side
(#16447) (overlookmotel)

Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2025-12-08 11:47:22 +00:00
overlookmotel 3459f8a548 ci(lint): enable prefer-destructuring lint rule (#16449)
Enable `prefer-destructuring` rule in our linting setup.

Not related to JS plugins, I just like this rule, and it's useful not to make nitty comments on PRs, when linter can do it for me...
2025-12-03 22:10:54 +00:00
overlookmotel 790beebd17 perf(napi/parser): do not remove extraneous options on JS side (#16447)
Similar to #16442.

There's no need to remove the `experimental*` properties from `options` object on JS side. They'll be ignored by NAPI-RS on Rust side anyway, so creating a new object on JS side is pointless overhead.
2025-12-03 14:47:24 +00:00
Boshen 3f6387dd3b ci(workflows): add workflow_call support to update_submodules.yml (#16431)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
2025-12-03 19:47:57 +08:00
overlookmotel 699406af5e fix(napi/parser): move ExportEntry::module_request field to first (#16412)
Revert the change made in #16403. It's no longer necessary after #16411, because NAPI-RS no longer re-orders the fields.
2025-12-02 23:30:56 +00:00
overlookmotel 083fea9fa6 feat(napi/parser)!: represent empty optional fields on JS side as null (#16411)
Follow-on after #16383 and #16403.

While working on those I discovered an option NAPI-RS has to represent `Option::None` as `null`, instead of omitting the field entirely.

Use that option on the structs used for transferring errors and module record over to JS.

I think this is likely more performant because:

1. NAPI-RS can create all properties of the objects using only the faster `node_api_create_object_with_properties` API.
2. It produces consistent object shapes, so JS engine can better optimize code using these objects.

It also brings the shape of the data perfectly into line between standard transfer and raw transfer, and is consistent with how empty fields in the AST are represented as `null`.

I would have used this option before if I'd known it existed.

### Breaking change

I've marked this as a breaking change because code consuming these objects would now need to check for empty fields with `value === null` instead of `value === undefined`.

However in practice, most people probably use `!value` or `value ?? ...`, so it's unlikely to affect many users. This only affects module record and errors anyway, not the AST itself, as we transfer that as JSON, not via NAPI.
2025-12-02 23:30:56 +00:00
renovate[bot] 7731160241 chore(deps): update napi (#16383)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type |
Update |
|---|---|---|---|---|---|---|---|
| [@napi-rs/cli](https://redirect.github.com/napi-rs/napi-rs) | [`3.4.1`
->
`3.5.0`](https://renovatebot.com/diffs/npm/@napi-rs%2fcli/3.4.1/3.5.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/@napi-rs%2fcli/3.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@napi-rs%2fcli/3.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@napi-rs%2fcli/3.4.1/3.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@napi-rs%2fcli/3.4.1/3.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| pnpm.catalog.default | minor |
| [napi](https://redirect.github.com/napi-rs/napi-rs) | `3.5.2` ->
`3.6.1` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/napi/3.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/napi/3.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/napi/3.5.2/3.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/napi/3.5.2/3.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| workspace.dependencies | minor |
| [napi-derive](https://redirect.github.com/napi-rs/napi-rs) | `3.3.3`
-> `3.4.0` |
[![age](https://developer.mend.io/api/mc/badges/age/crate/napi-derive/3.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/napi-derive/3.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/napi-derive/3.3.3/3.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/napi-derive/3.3.3/3.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| workspace.dependencies | minor |

---

### Release Notes

<details>
<summary>napi-rs/napi-rs (@&#8203;napi-rs/cli)</summary>

###
[`v3.5.0`](https://redirect.github.com/napi-rs/napi-rs/releases/tag/napi-v3.5.0)

[Compare
Source](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.4.1...@napi-rs/cli@3.5.0)

##### Added

- *(sys)* use libloading to load napi symbols at runtime on all platform
([#&#8203;2996](https://redirect.github.com/napi-rs/napi-rs/pull/2996))

##### Fixed

- *(napi)* memory leak in PromiseRaw cleanup callback
([#&#8203;2995](https://redirect.github.com/napi-rs/napi-rs/pull/2995))

##### Other

- *(napi)* mark tsfn data as pub and split SendableResolver to indent
file
([#&#8203;2992](https://redirect.github.com/napi-rs/napi-rs/pull/2992))
- *(napi)* mark SendableResolver and PromiseRaw as pub
([#&#8203;2981](https://redirect.github.com/napi-rs/napi-rs/pull/2981))
- add sponsors

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
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:eyJjcmVhdGVkSW5WZXIiOiI0Mi4xOS45IiwidXBkYXRlZEluVmVyIjoiNDIuMTkuOSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: overlookmotel <theoverlookmotel@gmail.com>
2025-12-02 18:27:23 +00:00
overlookmotel 12bd7940bf fix(napi/parser): move ExportEntry::module_request field to last (#16403)
NAPI-RS 3.6.0 makes a change to the ordering of objects. It now puts optional fields last.

This made tests in `napi/parser` for module record fail when we tried to update (#16383) because the `module_request` field of `ExportEntry` moves to last which breaks the snapshots.

The change in NAPI-RS is unlikely to be reverted, because it's a sizeable perf optimization: https://github.com/napi-rs/napi-rs/pull/2990

To work around this problem:

1. Move the field in the `ExportEntry` intermediate struct in `napi/parser` to last, so NAPI's output matches what you'd expect from the struct definition.
2. Alter the `#[estree]` attr on `ExportEntry` struct in `oxc_syntax` crate to match.

Note: The `ExportEntry` struct in `napi/parser` is just an intermediate structure used for serialization. So I think it's fine to fiddle with its field order. The actual `ExportEntry` struct used in the module record is in `oxc_syntax` crate, and it remains unaltered.
2025-12-02 17:42:53 +00:00
overlookmotel e7e6d2507c test(napi/parser): patch types for hidden parser options (#16387)
`napi/parser` tests utilize hidden `experimentalRawTransfer` and `experimentalParent` options. Patch the types of `parse` and `parseSync` in the tests so using these options is not a type error. This replaces a bunch of `// @ts-ignore` and `// @ts-expect-error` comments.
2025-12-02 12:37:16 +00:00
overlookmotel 3068658c30 style(napi/parser): prefer const to let (#16386)
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 10:27:27 +00:00
Boshen 701ab87e3e release(crates): oxc v0.101.0 (#16381) 2025-12-02 17:19:30 +08:00
Boshen 08727586bc release(crates): oxc v0.100.0 (#16331)
### 💥 BREAKING CHANGES

- 74cf572 ast: [**BREAKING**] Make `source` field of `TSImportType` a
`StringLiteral` (#16114) (copilot-swe-agent)
- 43156ae ast: [**BREAKING**] Rename `TSImportType` `argument` field to
`source` (#16110) (overlookmotel)
- 934d873 napi: [**BREAKING**] Drop `armv7-unknown-linux-musleabihf`
support (#16105) (Boshen)

### 🚀 Features

- 669afe0 ast: Add `Expression::is_jsx` method (#16154) (Dunqing)
- 17a8caa parser: Add diagnostic for JSX identifiers with hyphens
(#16133) (camchenry)
- 0549ae5 parser: Add diagnostic for expected ident after optional chain
(#16132) (camchenry)
- db839ae parser: Improve diagnostic for unexpected optional
declarations (#16131) (camchenry)
- bab4bc8 napi/parser: Add type annotations to parse-raw-worker test
(#15998) (camc314)

### 🐛 Bug Fixes

- 35ed36c traverse: Fix panic when truncating non-ASCII variable names
(#16265) (peter)
- 9149a26 linter/plugins, napi/parser: Deep freeze visitor keys (#16293)
(overlookmotel)
- 6b54dab minifier: Incorrect non-null object condition simplification
with `&&` and `||` (#16161) (sapphi-red)
- 9cc20a1 minifier: Avoid merging side effectful expressions to next
assignment statement if the side effect may change the left hand side
reference (#16165) (sapphi-red)
- 91eb3f2 ast/estree: Convert `TSImportType` `argument` field to
`Literal` (#16109) (overlookmotel)
- 1199cee parser: Reject invalid modifiers on parameter properties with
binding patterns (#16083) (camc314)
- f376325 traverse: Remove `console.log` from build script (#16049)
(overlookmotel)

### ⚡ Performance

- 82d784f lexer: Reduce bounds checks in `Lexer::get_string` (#16317)
(overlookmotel)
- cc2f352 span: Add `#[inline]` to `Atom` methods (#16311)
(overlookmotel)
- ffca070 span: Add `#[repr(transparent)]` to `Atom` (#16310)
(overlookmotel)
- 02bdf90 linter/plugins, napi/parser: Reuse arrays in visitor keys
(#16294) (overlookmotel)

### 📚 Documentation

- 891e0b4 parser: Add note about falling back to parse TSType in
TSImportType (#16119) (camc314)

Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2025-12-01 15:01:33 +00:00
overlookmotel 02bdf906af perf(linter/plugins, napi/parser): reuse arrays in visitor keys (#16294)
Many AST nodes have the same set of visitor keys. Re-use arrays for those sharing the same keys. This reduces object creation and `Object.freeze` calls.
2025-11-30 14:04:52 +00:00
overlookmotel 9149a26f4f fix(linter/plugins, napi/parser): deep freeze visitor keys (#16293)
Visitor keys object used by `oxlint` and `napi/parser` is frozen, but the individual arrays of keys were not. Deep freeze the whole structure to prevent user modifying it.
2025-11-30 14:04:52 +00:00
overlookmotel bb6e3574db refactor(napi/parser): simplify raw_transfer_supported (#16238)
Pure refactor. Instead of having 2 feature-gated implementations of `raw_transfer_supported`, just have one. This makes it clearer on what platforms raw transfer is supported.
2025-11-28 10:30:08 +00:00
overlookmotel d4c5337b1a refactor(napi/parser): move global allocator declaration (#16237)
Pure refactor. Move `#[global_allocator]` declaration to after imports.
2025-11-28 10:30:08 +00:00
overlookmotel e3fbf148cc refactor(napi/parser): move clippy attrs onto NAPI functions (#16236)
Pure refactor. Remove blanket disable of `clippy::needless_pass_by_value` lint rule, and disable it on individual NAPI functions instead. This reveals one other function which was taking a `String` when it could take a `&str`.
2025-11-28 10:30:08 +00:00
renovate e44b288902 chore(deps): update dependency oxlint-tsgolint to v0.8.3 (#16187)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [oxlint-tsgolint](https://redirect.github.com/oxc-project/tsgolint) | [`0.8.2` -> `0.8.3`](https://renovatebot.com/diffs/npm/oxlint-tsgolint/0.8.2/0.8.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/oxlint-tsgolint/0.8.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/oxlint-tsgolint/0.8.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/oxlint-tsgolint/0.8.2/0.8.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/oxlint-tsgolint/0.8.2/0.8.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>oxc-project/tsgolint (oxlint-tsgolint)</summary>

### [`v0.8.3`](https://redirect.github.com/oxc-project/tsgolint/releases/tag/v0.8.3)

[Compare Source](https://redirect.github.com/oxc-project/tsgolint/compare/v0.8.2...v0.8.3)

##### What's Changed

- chore(deps): update typescript-go digest to [`e34615c`](https://redirect.github.com/oxc-project/tsgolint/commit/e34615c) by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in [#&#8203;465](https://redirect.github.com/oxc-project/tsgolint/pull/465)
- chore(deps): update typescript-go digest to [`bd7c18d`](https://redirect.github.com/oxc-project/tsgolint/commit/bd7c18d) by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in [#&#8203;466](https://redirect.github.com/oxc-project/tsgolint/pull/466)
- chore(deps): update typescript-go digest to [`417387a`](https://redirect.github.com/oxc-project/tsgolint/commit/417387a) by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in [#&#8203;467](https://redirect.github.com/oxc-project/tsgolint/pull/467)
- chore(deps): update dependency vitest>vite to v7.2.8 by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in [#&#8203;469](https://redirect.github.com/oxc-project/tsgolint/pull/469)
- chore(deps): update typescript-go digest to [`d1be94b`](https://redirect.github.com/oxc-project/tsgolint/commit/d1be94b) by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in [#&#8203;470](https://redirect.github.com/oxc-project/tsgolint/pull/470)
- chore(deps): update crate-ci/typos action to v1.40.0 by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in [#&#8203;471](https://redirect.github.com/oxc-project/tsgolint/pull/471)

**Full Changelog**: <https://github.com/oxc-project/tsgolint/compare/v0.8.2...v0.8.3>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi4xOS45IiwidXBkYXRlZEluVmVyIjoiNDIuMTkuOSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
2025-11-27 08:31:05 +00:00
sapphi-red 9cc20a1de7 fix(minifier): avoid merging side effectful expressions to next assignment statement if the side effect may change the left hand side reference (#16165)
fixes https://github.com/rolldown/rolldown/issues/7093

```js
function wrapper() { let foo; const bar = (() => { foo = {} })(); foo.bar = bar; return foo }
```
cannot be compressed to
```js
function wrapper() { let foo; return foo.bar = (() => { foo = {} })(), foo }
```
because `foo` is read on left hand side.
2025-11-27 07:35:43 +00:00
copilot-swe-agent 74cf5720bc feat(ast)!: Make source field of TSImportType a StringLiteral (#16114)
- [x] Change `source` field type in `TSImportType` from `TSType<'a>` to `StringLiteral<'a>` in `crates/oxc_ast/src/ast/ts.rs`
- [x] Remove `#[estree(via = TSImportTypeSource)]` attribute from the field
- [x] Run `just ast` to regenerate all derived code
- [x] Update the parser in `crates/oxc_parser/src/ts/types.rs` to parse a `StringLiteral` directly and emit errors for non-string literals
- [x] Delete the dead code `TSImportTypeSource` serializer from `crates/oxc_ast/src/serialize/ts.rs`
- [x] Add `ts_string_literal_expected` diagnostic (TS1141)
- [x] Update semantic snapshot for `import-type-with-type-params.snap`
- [x] Add test case for invalid import type source
- [x] Verify all tests pass
- [x] Simplify error recovery - just report error and create dummy string literal (per review feedback)
- [x] Fix spurious "Expected ')'" error by skipping invalid tokens in error recovery

<!-- START COPILOT CODING AGENT SUFFIX -->

<details>

<summary>Original prompt</summary>

>
> ----
>
> *This section details on the original issue you should resolve*
>
> <issue_title>AST: Make `source` field of `TSImportType` a `StringLiteral`</issue_title>
> <issue_description>Continuation of oxc-project/oxc#16074.
>
> The expression inside `import(...)` in TS context (`TSImportType`) cannot legally be anything other than a string literal.
>
> Our parser is too liberal. We currently accept all kind of crazy stuff like:
>
> ```ts
> type A = typeof import(`react`);
> type B = typeof import(A);
> type C = typeof import(`${A} ${B}`);
> type D = typeof import(typeof import('react'));
> ```
>
> [Playground](https://playground.oxc.rs/#eNptU9tOGzEQ/ZXIQqJIqUSRKqFUfQjQSJVooaUqL31g1jsbDF7bHc/molX+nfEmdkDhyfaZ+5njXmk1UbwOOJqOvo7SxTcj0wZP/OGBEDQ/nHz55waPiwOPabFdHkYf9dPN6Ki/2OwzXB14vX0dDxWPT1KAGiuvJr2izqXDGsdq0oCNOFaNpxaYkQrCBC4muCAmeguM9RVqCwRsvIvFuHw0jDGAxgK14OZ2/9S+DYRxHxK1D2Jm6tJj3Vbe5pdu5ju3zVgFoJga6xWuGF2UuoniKPOAtX75G7kjd9NxNDXOOqdTZzlTKom0wFsgCc3oEPf3/LtjMpJQF0NE6ZqN/kbkaYdKC4mroQW5v6KqV13EP1DtZ2Ko7k3Nj2pyNlbo6pvm2jgZUtlG2g1SjXf281OpZhJDvzrPe5qe4uruHfh/et2SD1JLQfzoEGusJafsyUh780vftpBs1goqc5gyrMyyzPOLfQnrxF1FoJ+R72RnEp6dMwotbjvf1ffVE2q+JwiSI5OaCg29TlmIrDrpEOlNGK4CkmnRMdgbuQJ7uvXRbFeUGFJCadHallQGmqNoU2E8O/30WaoIzVfYSOKZp0sLMc4M2rps7XUVUacfyuytreGC/kCGGliY2q32fVX3KspEQQSC5EB0mcWofY1zHD6QS0Iokn2KtZevv6PcOc9DroxYnGffIUv+C0lR+aPI5D5c4wJL0mfE8FNWkQU2hIpovZ2JgFPEAqnyMROe5nFpUclUbhuB64G+BJfbJuGJZoisNi/WFa5W)
>
> TypeScript says these are all errors: [TS Playground](https://www.typescriptlang.org/play/?#code/C4TwDgpgBAglC8VSQPYDMoEsC2YUCdgAKAA3wgEMBjYEgSgG4AoZaAIQSXAnS1wOIxGLblADCnVrxx5CpACQBvGAF8oStivrNWUACKTu0-nKkYZAogHJy1YFbrCgA)
>
> ### AST change
>
> We should alter the type of the `source` field from `TSType<'a>` to `StringLiteral<'a>`:
>
> https://github.com/oxc-project/oxc/blob/35d0ee491cbcd271ebceaac7e25cff0490ded5c4/crates/oxc_ast/src/ast/ts.rs#L1382-L1389
>
> ```diff
> pub struct TSImportType<'a> {
>     pub span: Span,
> -   #[estree(via = TSImportTypeSource)]
> -   pub source: TSType<'a>,
> +   pub source: StringLiteral<'a>,
>     pub options: Option<Box<'a, ObjectExpression<'a>>>,
>     pub qualifier: Option<TSImportTypeQualifier<'a>>,
>     pub type_arguments: Option<Box<'a, TSTypeParameterInstantiation<'a>>>,
> }
> ```
>
> ### Parser changes
>
> If we change the AST first and run `just ast` to regenerate traits code, then all the places which rely on the type of `source` field will become apparent. We'll then need to alter the parser to throw an error if it encounters something that isn't a string literal.
>
> ### `ESTree` serialization
>
> Currently there's a custom deserializer to alter the AST on JS side from `TSType` to `StringLiteral`:
>
> https://github.com/oxc-project/oxc/blob/91eb3f2be509cef11cffeff51fac61a3a4fbd12c/crates/oxc_ast/src/serialize/ts.rs#L506-L538
>
> Once we've changed the field type in AST, this code can be deleted - it's dead code once `#[estree(via = TSImportTypeSource)]` attribute is removed from the `source` field in AST struct.</issue_description>
>
> ## Comments on the Issue (you are @copilot in this section)
>
> <comments>
> </comments>
>

</details>

- Fixes oxc-project/oxc#16111

<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in our [2 minute survey](https://gh.io/copilot-coding-agent-survey).
2025-11-25 18:51:16 +00:00
overlookmotel 91eb3f2be5 fix(ast/estree): convert TSImportType argument field to Literal (#16109)
Fixes #16074.

Convert `argument` field of `TSImportType` to `Literal` in TS-ESTree AST, and rename it to `source`. This follows the change made recently in TS-ESLint (https://github.com/typescript-eslint/typescript-eslint/pull/11591).
2025-11-25 14:11:12 +00:00
Boshen 934d873eb0 feat(napi)!: drop armv7-unknown-linux-musleabihf support (#16105)
Also add `aarch64-unknown-linux-ohos` support.

`armv7-unknown-linux-musleabihf` target is broken for a while (https://github.com/nodejs/node/issues/53489) and is a legacy target.

part of #16094
2025-11-25 13:03:14 +00:00
camc314 a18c065f21 chore(ast): run just ast to re-format code (#16096) 2025-11-25 09:31:11 +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
camc314 bab4bc8f61 feat(napi/parser): add type annotations to parse-raw-worker test (#15998) 2025-11-24 22:18:13 +00:00
overlookmotel b42610cf16 refactor(napi/parser): remove unused oxlint-disable comment (#16058)
This comment was previously needed, due to a bug in Oxlint, but that bug is now fixed.
2025-11-24 13:32:10 +00:00
overlookmotel d2c97404c1 refactor(napi): prefer oxlint-disable over eslint-disable (#16054)
Nit. Use `// oxlint-disable` comments in our own code, instead of `// eslint-disable`.
2025-11-24 12:12:12 +00: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
Boshen 7252123e5e release(crates): oxc v0.99.0 (#16037)
### 💥 BREAKING CHANGES

- cbb27fd ast: [**BREAKING**] Add `TSGlobalDeclaration` type (#15712)
(overlookmotel)

### 🚀 Features

- 0c1f82b linter/plugins: Add `tokens` property to `Program` (#16020)
(overlookmotel)
- 6cff132 span: Add `Span::merge_within` method (#15869) (sapphi-red)
- 102365d allocator/vec: Add `Vec::into_bump_slice` method (#15770)
(Dunqing)

### 🐛 Bug Fixes

- e2ca770 codegen: Add support for printing type arguments in new
expressions (#15963) (Ives van Hoorne)
- 2bd3cb6 apps, editors, napi: Fix `oxlint-disable` comments (#16014)
(overlookmotel)
- 622cb5e parser: Preserve legal comments with @preserve/@license when
preceded by other annotations (#15929) (copilot-swe-agent)
- 7c46a9e transformer/tagged-template-transform: Handle `\n` escape
sequences (#15830) (Dunqing)
- f386efc minifier: Avoid generating invalid spans (#15778) (sapphi-red)
- d4ff004 parser: Forbid invalid modifiers on `module` and `global`
(#15723) (overlookmotel)
- 2191ae9 semantic: Allow reserved keywords in typescript ambient
contexts (#15495) (sapphi-red)
- 7d1ebad isolated-declarations: Incorrect nested namespace output in
isolated declarations (#15800) (copilot-swe-agent)

### ⚡ Performance

- b4b0ed8 transformer/typescript: Reverse order of checks (#15722)
(overlookmotel)

### 📚 Documentation

- c81a331 data_structures: Doc comments on fields of `Stack` (#15793)
(overlookmotel)
- cfae31d allocator: Use `allocator` as var name in examples (#15781)
(overlookmotel)

Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2025-11-24 10:06:24 +00:00
overlookmotel 2bd3cb66f7 fix(apps, editors, napi): fix oxlint-disable comments (#16014)
Fix a few `oxlint-disable` comments. 2 were unnecessary, the other was malformed.
2025-11-23 23:19:34 +00:00
overlookmotel cbb27fd51b fix(ast)!: add TSGlobalDeclaration type (#15712)
Fix #14860.

### The problem

`TSModuleDeclaration` type was used to represent 4 different syntaxes:

* `namespace X {}`
* `module X {}`
* `module "x" {}`
* `global {}`

(and all the above prefixed with `declare`)

`global {}` is quite different from the others in a few ways:

* It has no identifier (`global` is a keyword, not an identifier).
* It has no symbol.
* The `body` block is not optional.
* Directives are not allowed in the `body` block.
* It is always ambient context (regardless of whether it has `declare` modifier).

In particular, it was causing panics because `symbol_id` field for `TSModuleDeclaration`s representing `global {}` was `None`.

### Solution

Rather than trying to make `TSModuleDeclaration` type encode all these differences, and make Oxc's code reason about them, split `global {}` into a new type `TSGlobalDeclaration`.

The rest of the diff is just adjusting code to also handle `TSGlobalDeclaration` where it was dealing with `TSModuleDeclaration`s.

This change simplifies the parser quite a bit.

`oxc_semantic`'s `SymbolDeclarationTest` tester now tests that all `TSModuleDeclaration`s with `id: BindingIdentifier` do have a symbol:

https://github.com/oxc-project/oxc/pull/15712/files#diff-ce544d71b839faa898887ac920237e563e59a708e7fca86b53023498ab67a611L101-R110

### Formatter bug

There is one regression in the formatter for `typescript/module/global.ts` case.

https://github.com/oxc-project/oxc/pull/15712/files#diff-f248b1d49b8c482864810055632d7322cdebc895dd4dfe05fbefcf5e23ba12c9R51

Input:

```ts
declare /* module */ global {}
declare /* namespace */ global {}
```

Output:

```diff
- declare /* module */ global {}
- declare /* namespace */ global {}
+ declare global /* module */ {}
+ declare global /* namespace */ {}
```

I assume this is happening because there's no longer a `BindingIdentifier` for the `global` keyword for the comment to get attached to.

I am not sure how to fix this. Maybe the `global_span` field can help?

@Dunqing This PR touches a *lot* of files. Can I propose that we merge it before it gets conflicts, and if you can give me some guidance, I'll do a follow-up PR to fix it?
2025-11-17 19:25:24 +00:00
renovate a4615e596c chore(deps): update dependency oxlint to v1.29.0 (#15780)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [oxlint](https://oxc.rs) ([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/npm/oxlint)) | [`1.28.0` -> `1.29.0`](https://renovatebot.com/diffs/npm/oxlint/1.28.0/1.29.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/oxlint/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/oxlint/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/oxlint/1.28.0/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/oxlint/1.28.0/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>oxc-project/oxc (oxlint)</summary>

### [`v1.29.0`](https://redirect.github.com/oxc-project/oxc/blob/HEAD/npm/oxlint/CHANGELOG.md#1290---2025-11-17)

[Compare Source](https://redirect.github.com/oxc-project/oxc/compare/oxlint_v1.28.0...oxlint_v1.29.0)

##### 🚀 Features

- [`84de1ca`](https://redirect.github.com/oxc-project/oxc/commit/84de1ca) oxlint,oxfmt: Allow comments and also commas for vscode-json-ls ([#&#8203;15612](https://redirect.github.com/oxc-project/oxc/issues/15612)) (leaysgur)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNzMuMSIsInVwZGF0ZWRJblZlciI6IjQxLjE3My4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
2025-11-17 14:13:52 +00:00