copilot-swe-agent
1c31cb1a08
feat(napi/minify): expose treeshake options ( #15109 )
...
feat(napi/minify): expose `treeshake` options
## Completed:
- [x] Understand the problem: Need to expose TreeShakeOptions to JavaScript users
- [x] Explore existing code structure and TreeShakeOptions in oxc_minifier
- [x] Build the project to ensure clean state
- [x] Add TreeShakeOptions struct with all fields
- [x] Update CompressOptions to accept optional treeshake field
- [x] Implement conversion from NAPI TreeShakeOptions to oxc_minifier::TreeShakeOptions
- [x] Build and verify TypeScript definitions are generated correctly
- [x] Add tests for treeshake options
- [x] Run all tests successfully
- [x] Format code with just fmt
- [x] Address all review feedback:
- Renamed TreeShakeOptionsNapi to TreeShakeOptions
- Changed property_read_side_effects to accept boolean | 'always'
- Changed @default from true to 'always' for property_read_side_effects
- Reverted From implementation back to use reference (From<&TreeShakeOptions>)
- Changed to TryFrom to properly handle validation errors
- Added validation for propertyReadSideEffects string values
- Fixed clippy lint for inline format args
## Changes Made:
1. Added `TreeShakeOptions` struct with fields:
- `annotations`: Whether to respect pure annotations (@__PURE__, #__NO_SIDE_EFFECTS__)
- `manual_pure_functions`: List of function names to treat as pure
- `property_read_side_effects`: Whether property reads have side effects (boolean | 'always', default: 'always')
- `unknown_global_side_effects`: Whether accessing global variables has side effects
2. Updated `CompressOptions` to include optional `treeshake` field
3. Implemented `TryFrom<&TreeShakeOptions>` trait with proper error handling for invalid values
4. Added validation that rejects invalid string values for propertyReadSideEffects
5. Added tests covering treeshake functionality including error cases
6. Fixed all lint issues
All tests pass successfully!
<!-- START COPILOT CODING AGENT SUFFIX -->
<details>
<summary>Original prompt</summary>
> Add bindings for treeshake option here:
> https://github.com/oxc-project/oxc/blob/3fbb307367a31817a297dee299fec580912675db/napi/minify/src/options.rs#L90
</details>
<!-- 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-10-30 08:46:30 +00:00
Boshen
14fe64a935
release(crates): v0.96.0 ( #15115 )
2025-10-30 15:43:06 +08:00
camc314
597340e4c1
fix(ast-tools): use oxfmt to format generated code ( #15064 )
...
https://github.com/oxc-project/oxc/commit/a8e5181ab73e3cee5904af3acc6c5927def9d500#diff-dc1a48ba0d3878494d547c7c5fb975720dddac4966c510f9babec50161110538 broke ast tools generation.
This PR uses oxfmt to format the generated ast files
2025-10-29 11:51:43 +00:00
leaysgur
5de99c2765
refactor(formatter): Export unified way to get_parse_options ( #15027 )
...
Export `oxc_formatter::get_parse_options` to get this options everywhere.
```rs
ParseOpitons {
parse_regular_expression: false,
// Enable all syntax features
allow_v8_intrinsics: true,
allow_return_outside_function: true,
// `oxc_formatter` expects this to be false
preserve_parens: false,
}
```
2025-10-28 09:26:23 +00:00
leaysgur
a8e5181ab7
chore(infra): dogfooding oxfmt ( #14979 )
...
Fixes #14803
- Added `oxfmt` and `oxfmtrc.jsonc`
- Remove `dprint` plugin and useless ignore paths
- Apply `dprint` again
- Apply `oxfmt`
2025-10-28 01:16:46 +00:00
renovate
2314a2714f
chore(deps): lock file maintenance npm packages ( #14957 )
...
This PR contains the following updates:
| Package | Type | Update | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|---|---|
| | | lockFileMaintenance | All locks refreshed | | | | |
| [@babel/core](https://babel.dev/docs/en/next/babel-core ) ([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-core )) | devDependencies | patch | [`7.28.4` -> `7.28.5`](https://renovatebot.com/diffs/npm/@babel%2fcore/7.28.4/7.28.5 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [@babel/plugin-transform-exponentiation-operator](https://babel.dev/docs/en/next/babel-plugin-transform-exponentiation-operator ) ([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-exponentiation-operator )) | devDependencies | minor | [`7.27.1` -> `7.28.5`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-exponentiation-operator/7.27.1/7.28.5 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [@babel/plugin-transform-logical-assignment-operators](https://babel.dev/docs/en/next/babel-plugin-transform-logical-assignment-operators ) ([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-logical-assignment-operators )) | devDependencies | minor | [`7.27.1` -> `7.28.5`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-logical-assignment-operators/7.27.1/7.28.5 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [@babel/plugin-transform-optional-chaining](https://babel.dev/docs/en/next/babel-plugin-transform-optional-chaining ) ([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-optional-chaining )) | devDependencies | minor | [`7.27.1` -> `7.28.5`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-optional-chaining/7.27.1/7.28.5 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [@babel/plugin-transform-typescript](https://babel.dev/docs/en/next/babel-plugin-transform-typescript ) ([source](https://redirect.github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-typescript )) | dependencies | patch | [`7.28.0` -> `7.28.5`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-typescript/7.28.0/7.28.5 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [@nestjs/common](https://nestjs.com ) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/common )) | dependencies | patch | [`11.1.6` -> `11.1.7`](https://renovatebot.com/diffs/npm/@nestjs%2fcommon/11.1.6/11.1.7 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [@nestjs/core](https://nestjs.com ) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/core )) | dependencies | patch | [`11.1.6` -> `11.1.7`](https://renovatebot.com/diffs/npm/@nestjs%2fcore/11.1.6/11.1.7 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [@nestjs/platform-express](https://nestjs.com ) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-express )) | dependencies | patch | [`11.1.6` -> `11.1.7`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-express/11.1.6/11.1.7 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [@nestjs/testing](https://nestjs.com ) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/testing )) | dependencies | patch | [`11.1.6` -> `11.1.7`](https://renovatebot.com/diffs/npm/@nestjs%2ftesting/11.1.6/11.1.7 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [@napi-rs/cli](https://redirect.github.com/napi-rs/napi-rs ) | pnpm.catalog.default | patch | [`3.4.0` -> `3.4.1`](https://renovatebot.com/diffs/npm/@napi-rs%2fcli/3.4.0/3.4.1 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [@typescript-eslint/visitor-keys](https://typescript-eslint.io ) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/visitor-keys )) | devDependencies | patch | [`8.46.1` -> `8.46.2`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fvisitor-keys/8.46.1/8.46.2 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [@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 )) | devDependencies | patch | [`4.0.1` -> `4.0.3`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser/4.0.1/4.0.3 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [@vitest/browser-playwright](https://vitest.dev/guide/browser/playwright ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/browser-playwright )) | devDependencies | patch | [`4.0.1` -> `4.0.3`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser-playwright/4.0.1/4.0.3 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [alpinejs](https://alpinejs.dev ) ([source](https://redirect.github.com/alpinejs/alpine/tree/HEAD/packages/alpinejs )) | devDependencies | patch | [`3.15.0` -> `3.15.1`](https://renovatebot.com/diffs/npm/alpinejs/3.15.0/3.15.1 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [antd](https://ant.design ) ([source](https://redirect.github.com/ant-design/ant-design )) | devDependencies | patch | [`5.27.5` -> `5.27.6`](https://renovatebot.com/diffs/npm/antd/5.27.5/5.27.6 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [emnapi](https://redirect.github.com/toyobayashi/emnapi ) | devDependencies | minor | [`1.5.0` -> `1.6.0`](https://renovatebot.com/diffs/npm/emnapi/1.5.0/1.6.0 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [es-toolkit](https://es-toolkit.dev ) ([source](https://redirect.github.com/toss/es-toolkit )) | devDependencies | minor | [`1.40.0` -> `1.41.0`](https://renovatebot.com/diffs/npm/es-toolkit/1.40.0/1.41.0 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [happy-dom](https://redirect.github.com/capricorn86/happy-dom ) | devDependencies | patch | [`20.0.7` -> `20.0.8`](https://renovatebot.com/diffs/npm/happy-dom/20.0.7/20.0.8 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [immer](https://redirect.github.com/immerjs/immer ) | devDependencies | minor | [`10.1.3` -> `10.2.0`](https://renovatebot.com/diffs/npm/immer/10.1.3/10.2.0 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [pnpm](https://pnpm.io ) ([source](https://redirect.github.com/pnpm/pnpm/tree/HEAD/pnpm )) | packageManager | minor | [`10.18.3` -> `10.19.0`](https://renovatebot.com/diffs/npm/pnpm/10.18.3/10.19.0 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [tsdown](https://redirect.github.com/rolldown/tsdown ) | devDependencies | patch | [`0.15.8` -> `0.15.10`](https://renovatebot.com/diffs/npm/tsdown/0.15.8/0.15.10 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [vitest](https://vitest.dev ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest )) | devDependencies | patch | [`4.0.1` -> `4.0.3`](https://renovatebot.com/diffs/npm/vitest/4.0.1/4.0.3 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [publint](https://publint.dev ) ([source](https://redirect.github.com/publint/publint/tree/HEAD/packages/publint )) | pnpm.catalog.default | patch | [`0.3.14` -> `0.3.15`](https://renovatebot.com/diffs/npm/publint/0.3.14/0.3.15 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [vitest](https://vitest.dev ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest )) | pnpm.catalog.default | patch | [`4.0.1` -> `4.0.3`](https://renovatebot.com/diffs/npm/vitest/4.0.1/4.0.3 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [rolldown](https://rolldown.rs/ ) ([source](https://redirect.github.com/rolldown/rolldown/tree/HEAD/packages/rolldown )) | devDependencies | patch | [`1.0.0-beta.43` -> `1.0.0-beta.44`](https://renovatebot.com/diffs/npm/rolldown/1.0.0-beta.43/1.0.0-beta.44 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
🔧 This Pull Request updates lock files to use the latest dependency versions.
---
### Release Notes
<details>
<summary>babel/babel (@​babel/core)</summary>
### [`v7.28.5`](https://redirect.github.com/babel/babel/blob/HEAD/CHANGELOG.md#v7285-2025-10-23 )
[Compare Source](https://redirect.github.com/babel/babel/compare/v7.28.4...v7.28.5 )
##### 👓 Spec Compliance
- `babel-parser`
- [#​17446](https://redirect.github.com/babel/babel/pull/17446 ) Allow `Runtime Errors for Function Call Assignment Targets` ([@​liuxingbaoyu](https://redirect.github.com/liuxingbaoyu ))
- `babel-helper-validator-identifier`
- [#​17501](https://redirect.github.com/babel/babel/pull/17501 ) fix: update identifier to unicode 17 ([@​fisker](https://redirect.github.com/fisker ))
##### 🐛 Bug Fix
- `babel-plugin-proposal-destructuring-private`
- [#​17534](https://redirect.github.com/babel/babel/pull/17534 ) Allow mixing private destructuring and rest ([@​CO0Ki3](https://redirect.github.com/CO0Ki3 ))
- `babel-parser`
- [#​17521](https://redirect.github.com/babel/babel/pull/17521 ) Improve `@babel/parser` error typing ([@​JLHwung](https://redirect.github.com/JLHwung ))
- [#​17491](https://redirect.github.com/babel/babel/pull/17491 ) fix: improve ts-only declaration parsing ([@​JLHwung](https://redirect.github.com/JLHwung ))
- `babel-plugin-proposal-discard-binding`, `babel-plugin-transform-destructuring`
- [#​17519](https://redirect.github.com/babel/babel/pull/17519 ) fix: `rest` correctly returns plain array ([@​liuxingbaoyu](https://redirect.github.com/liuxingbaoyu ))
- `babel-helper-create-class-features-plugin`, `babel-helper-member-expression-to-functions`, `babel-plugin-transform-block-scoping`, `babel-plugin-transform-optional-chaining`, `babel-traverse`, `babel-types`
- [#​17503](https://redirect.github.com/babel/babel/pull/17503 ) Fix `JSXIdentifier` handling in `isReferencedIdentifier` ([@​JLHwung](https://redirect.github.com/JLHwung ))
- `babel-traverse`
- [#​17504](https://redirect.github.com/babel/babel/pull/17504 ) fix: ensure scope.push register in anonymous fn ([@​JLHwung](https://redirect.github.com/JLHwung ))
##### 🏠 Internal
- `babel-types`
- [#​17494](https://redirect.github.com/babel/babel/pull/17494 ) Type checking babel-types scripts ([@​JLHwung](https://redirect.github.com/JLHwung ))
##### :running\_woman: Performance
- `babel-core`
- [#​17490](https://redirect.github.com/babel/babel/pull/17490 ) Faster finding of locations in `buildCodeFrameError` ([@​liuxingbaoyu](https://redirect.github.com/liuxingbaoyu ))
</details>
<details>
<summary>nestjs/nest (@​nestjs/common)</summary>
### [`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>nestjs/nest (@​nestjs/core)</summary>
### [`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>nestjs/nest (@​nestjs/platform-express)</summary>
### [`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>nestjs/nest (@​nestjs/testing)</summary>
### [`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>napi-rs/napi-rs (@​napi-rs/cli)</summary>
### [`v3.4.1`](https://redirect.github.com/napi-rs/napi-rs/releases/tag/%40napi-rs/cli%403.4.1 )
[Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.4.0...@napi-rs/cli@3.4.1 )
##### Bug Fixes
- **cli:** remove createRequire in cjs binding ([#​2976](https://redirect.github.com/napi-rs/napi-rs/issues/2976 )) ([c388c12](https://redirect.github.com/napi-rs/napi-rs/commit/c388c120cfefbe40b16176615840203e3e1c6e75 ))
</details>
<details>
<summary>typescript-eslint/typescript-eslint (@​typescript-eslint/visitor-keys)</summary>
### [`v8.46.2`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/visitor-keys/CHANGELOG.md#8462-2025-10-20 )
[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.46.1...v8.46.2 )
This was a version bump only for visitor-keys to align it with other projects, there were no code changes.
You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning ) and [releases](https://typescript-eslint.io/users/releases ) on our website.
</details>
<details>
<summary>vitest-dev/vitest (@​vitest/browser)</summary>
### [`v4.0.3`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.3 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.2...v4.0.3 )
##### 🐞 Bug Fixes
- Preserve reporter options from config when CLI reporters override them - by [@​Copilot](https://redirect.github.com/Copilot ) and **sheremet-va** in [#​8794](https://redirect.github.com/vitest-dev/vitest/issues/8794 ) [<samp>(15552)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/155521a85 )
- **browser**: More stable in-source testing validation - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​8793](https://redirect.github.com/vitest-dev/vitest/issues/8793 ) [<samp>(62297)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/622977e61 )
- **happy-dom**: Support fetch globals - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​8791](https://redirect.github.com/vitest-dev/vitest/issues/8791 ) [<samp>(0fb74)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/0fb74bd3b )
- **init**: Use correct jsx/tsx extension - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​8792](https://redirect.github.com/vitest-dev/vitest/issues/8792 ) [<samp>(abc04)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/abc046f95 )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.2...v4.0.3 )
### [`v4.0.2`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.2 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.1...v4.0.2 )
##### 🐞 Bug Fixes
- **browser**:
- Don't print the deprecation notice in node\_modules - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​8779](https://redirect.github.com/vitest-dev/vitest/issues/8779 ) [<samp>(588f7)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/588f76858 )
- **pool**:
- Assign envs before running tests to keep in sync with process.env - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​8769](https://redirect.github.com/vitest-dev/vitest/issues/8769 ) [<samp>(26ce8)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/26ce88db6 )
- **spy**:
- Properly inherit implementation's `length` - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​8778](https://redirect.github.com/vitest-dev/vitest/issues/8778 ) [<samp>(d4c2b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d4c2b280b )
- Reset spies if both `restoreMocks` and `mockReset` are set in the config - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [#​8781](https://redirect.github.com/vitest-dev/vitest/issues/8781 ) [<samp>(2eedb)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/2eedbce76 )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.1...v4.0.2 )
</details>
<details>
<summary>alpinejs/alpine (alpinejs)</summary>
### [`v3.15.1`](https://redirect.github.com/alpinejs/alpine/releases/tag/v3.15.1 )
[Compare Source](https://redirect.github.com/alpinejs/alpine/compare/v3.15.0...v3.15.1 )
#### Changed
- `x-sort` improvements
- CSP build `allowGlobals` now defaults to `false` instead of `true`
</details>
<details>
<summary>ant-design/ant-design (antd)</summary>
### [`v5.27.6`](https://redirect.github.com/ant-design/ant-design/releases/tag/5.27.6 )
[Compare Source](https://redirect.github.com/ant-design/ant-design/compare/5.27.5...5.27.6 )
- Table
- 🐞 Fix Table `pagination.align` is not working. [#​55316](https://redirect.github.com/ant-design/ant-design/pull/55316 )
- 🛠 Add Table missing useMemo capability to spinProps. [#​55344](https://redirect.github.com/ant-design/ant-design/pull/55344 )
- 🛠 Refactor Modal useMemo of ConfirmDialog to resolve useMemo invalid where Object.values generates a new array. [#​55376](https://redirect.github.com/ant-design/ant-design/pull/55376 )
- TypeScript
- 🤖 Add ConfigProvider the `Window` type definition in `getTargetContainer` of . [#​55313](https://redirect.github.com/ant-design/ant-design/pull/55313 )
- 🤖 Add ConfigProvider the `ShadowRoot` type definition in `getTargetContainer` and `getPopupContainer`. [#​55278](https://redirect.github.com/ant-design/ant-design/pull/55278 ) [@​leshalv](https://redirect.github.com/leshalv )
- 🤖 Improve Modal type definition. [#​55371](https://redirect.github.com/ant-design/ant-design/pull/55371 )
***
- Table
- 🐞 修复 Table `pagination.align` 属性失效的问题。[#​55316](https://redirect.github.com/ant-design/ant-design/pull/55316 )
- 🛠 补充 Table 中 spinProps 的 useMemo 缺失能力。[#​55344](https://redirect.github.com/ant-design/ant-design/pull/55344 )
- 🛠 重构 Modal 中 ConfirmDialog 的 useMemo,以解决 Object.values 生成新数组导致 useMemo 失效的问题。[#​55376](https://redirect.github.com/ant-design/ant-design/pull/55376 )
- TypeScript
- 🤖 补充 ConfigProvider `getTargetContainer` 中 `Window` 类型定义。[#​55313](https://redirect.github.com/ant-design/ant-design/pull/55313 )
- 🤖 补充 ConfigProvider 的 `getTargetContainer` 和 `getPopupContainer` 中 `ShadowRoot` 类型定义。[#​55278](https://redirect.github.com/ant-design/ant-design/pull/55278 ) [@​leshalv](https://redirect.github.com/leshalv )
- 🤖 优化 Modal 中类型定义。[#​55371](https://redirect.github.com/ant-design/ant-design/pull/55371 )
</details>
<details>
<summary>toyobayashi/emnapi (emnapi)</summary>
### [`v1.6.0`](https://redirect.github.com/toyobayashi/emnapi/releases/tag/v1.6.0 )
[Compare Source](https://redirect.github.com/toyobayashi/emnapi/compare/v1.5.0...v1.6.0 )
#### What's Changed
- feat: added SharedArrayBuffer api by [@​toyobayashi](https://redirect.github.com/toyobayashi ) in [#​171](https://redirect.github.com/toyobayashi/emnapi/pull/171 )
- feat: make napi\_delete\_reference use node\_api\_basic\_env by [@​toyobayashi](https://redirect.github.com/toyobayashi ) in [#​170](https://redirect.github.com/toyobayashi/emnapi/pull/170 )
- ci: migrate to npm trusted publishing by [@​toyobayashi](https://redirect.github.com/toyobayashi ) in [#​168](https://redirect.github.com/toyobayashi/emnapi/pull/168 )
**Full Changelog**: <https://github.com/toyobayashi/emnapi/compare/v1.5.0...v1.6.0 >
</details>
<details>
<summary>toss/es-toolkit (es-toolkit)</summary>
### [`v1.41.0`](https://redirect.github.com/toss/es-toolkit/blob/HEAD/CHANGELOG.md#Version-v1410 )
[Compare Source](https://redirect.github.com/toss/es-toolkit/compare/v1.40.0...v1.41.0 )
Released on October 24th, 2025.
- Enhanced `throttle` to preserve `this` context when called as a method.
- Added type guard support for `partition` function.
- Fixed `omit` to support runtime-determined key arrays with proper overloads.
- Fixed `defaults` in compatibility layer to properly handle undefined and null sources.
- Fixed `toSnakeCaseKeys` and `toCamelCaseKeys` to correctly return types for non-plain objects.
- Fixed `toMerged` and `mergeWith` to properly handle shared objects in merge logic.
- Fixed `compat/union` to support array-like objects.
- Fixed `compat/updateWith` to use `get` for value retrieval in updater function.
- Fixed circular import between `isMatch` and `isMatchWith`.
- Fixed `find` and `findLast` by simplifying logic and removing unnecessary checks.
- Fixed `takeRight` by improving test coverage and removing redundant checks.
- Fixed `curry` and `curryRight` by removing unnecessary type assertions.
- Fixed `isEqualWith` and `mapKeys` by removing unnecessary type assertions.
- Improved performance for `meanBy` by removing intermediate array creation.
- Updated build system to use UMD format instead of IIFE for browser builds.
- Fixed numerous documentation examples across compat modules.
- Improved test coverage with additional test cases for edge cases and compatibility.
We sincerely thank [@​the5thbeatle](https://redirect.github.com/the5thbeatle ), [@​wo-o29](https://redirect.github.com/wo-o29 ), [@​hwibaski](https://redirect.github.com/hwibaski ), [@​manudeli](https://redirect.github.com/manudeli ), [@​raon0211](https://redirect.github.com/raon0211 ), [@​dayongkr](https://redirect.github.com/dayongkr ), [@​D-Sketon](https://redirect.github.com/D-Sketon ), [@​yoouungyoung](https://redirect.github.com/yoouungyoung ), [@​Dohun-choi](https://redirect.github.com/Dohun-choi ), [@​sukvvon](https://redirect.github.com/sukvvon ), [@​zoulou00](https://redirect.github.com/zoulou00 ), and [@​sen2y](https://redirect.github.com/sen2y ) for their contributions. We appreciate your great efforts!
</details>
<details>
<summary>capricorn86/happy-dom (happy-dom)</summary>
### [`v20.0.8`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v20.0.8 )
[Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v20.0.7...v20.0.8 )
##### :construction\_worker\_man: Patch fixes
- Fixes issue where `previousSibling()` and `nextSibling()` didn't work in `HTMLSelectElement` and `HTMLFormElement` - By **[@​capricorn86](https://redirect.github.com/capricorn86 )** in task [#​1939](https://redirect.github.com/capricorn86/happy-dom/issues/1939 )
- Fixes issue where parsing an item without a permitted parent (e.g. `<tr>`) should be valid inside a `<template>` element - By **[@​capricorn86](https://redirect.github.com/capricorn86 )** in task [#​1939](https://redirect.github.com/capricorn86/happy-dom/issues/1939 )
</details>
<details>
<summary>immerjs/immer (immer)</summary>
### [`v10.2.0`](https://redirect.github.com/immerjs/immer/releases/tag/v10.2.0 )
[Compare Source](https://redirect.github.com/immerjs/immer/compare/v10.1.3...v10.2.0 )
##### Features
- Optimize Immer performance where possible, introduce `setUseStrictIteration` ([#​1164](https://redirect.github.com/immerjs/immer/issues/1164 )) ([e1996ce](https://redirect.github.com/immerjs/immer/commit/e1996ceb8a3a180c565b7304a4f3c4ce3b1a08ff ))
</details>
<details>
<summary>pnpm/pnpm (pnpm)</summary>
### [`v10.19.0`](https://redirect.github.com/pnpm/pnpm/blob/HEAD/pnpm/CHANGELOG.md#10190 )
[Compare Source](https://redirect.github.com/pnpm/pnpm/compare/v10.18.3...v10.19.0 )
##### Minor Changes
- You can now allow specific versions of dependencies to run postinstall scripts. `onlyBuiltDependencies` now accepts package names with lists of trusted versions. For example:
```yaml
onlyBuiltDependencies:
- nx@21.6.4 || 21.6.5
- esbuild@0.25 .1
```
Related PR: [#​10104](https://redirect.github.com/pnpm/pnpm/pull/10104 ).
- Added support for exact versions in `minimumReleaseAgeExclude` [#​9985](https://redirect.github.com/pnpm/pnpm/issues/9985 ).
You can now list one or more specific versions that pnpm should allow to install, even if those versions don’t satisfy the maturity requirement set by `minimumReleaseAge`. For example:
```yaml
minimumReleaseAge: 1440
minimumReleaseAgeExclude:
- nx@21.6.5
- webpack@4.47 .0 || 5.102.1
```
</details>
<details>
<summary>rolldown/tsdown (tsdown)</summary>
### [`v0.15.10`](https://redirect.github.com/rolldown/tsdown/releases/tag/v0.15.10 )
[Compare Source](https://redirect.github.com/rolldown/tsdown/compare/v0.15.9...v0.15.10 )
##### 🚀 Features
- Upgrade rolldown-plugin-dts - by [@​sxzz](https://redirect.github.com/sxzz ) [<samp>(e3951)</samp>](https://redirect.github.com/rolldown/tsdown/commit/e395162 )
- Add `unrun` as a config loader - by [@​Gugustinette](https://redirect.github.com/Gugustinette ) and [@​sxzz](https://redirect.github.com/sxzz ) in [#​563](https://redirect.github.com/rolldown/tsdown/issues/563 ) [<samp>(57132)</samp>](https://redirect.github.com/rolldown/tsdown/commit/57132ea )
##### 🐞 Bug Fixes
- **exports**: Correctly generate export paths for nested index files - by [@​userquin](https://redirect.github.com/userquin ) in [#​559](https://redirect.github.com/rolldown/tsdown/issues/559 ) [<samp>(ff946)</samp>](https://redirect.github.com/rolldown/tsdown/commit/ff946bc )
##### [View changes on GitHub](https://redirect.github.com/rolldown/tsdown/compare/v0.15.9...v0.15.10 )
### [`v0.15.9`](https://redirect.github.com/rolldown/tsdown/releases/tag/v0.15.9 )
[Compare Source](https://redirect.github.com/rolldown/tsdown/compare/v0.15.8...v0.15.9 )
##### 🐞 Bug Fixes
- Update rolldown and migrate from the deprecated API - by [@​ocavue](https://redirect.github.com/ocavue ) in [#​552](https://redirect.github.com/rolldown/tsdown/issues/552 ) [<samp>(0aedb)</samp>](https://redirect.github.com/rolldown/tsdown/commit/0aedb13 )
- Pin rolldown version - by [@​ocavue](https://redirect.github.com/ocavue ) in [#​553](https://redirect.github.com/rolldown/tsdown/issues/553 ) [<samp>(7752e)</samp>](https://redirect.github.com/rolldown/tsdown/commit/7752efc )
##### [View changes on GitHub](https://redirect.github.com/rolldown/tsdown/compare/v0.15.8...v0.15.9 )
</details>
<details>
<summary>publint/publint (publint)</summary>
### [`v0.3.15`](https://redirect.github.com/publint/publint/blob/HEAD/packages/publint/CHANGELOG.md#0315 )
[Compare Source](https://redirect.github.com/publint/publint/compare/publint@0.3.14...publint@0.3.15 )
##### Patch Changes
- Skip file existence checks when crawling subpath imports as they may be dev-only and not used after bundling or publish. This check may be improved in the future when publint can scan for files to see if the subpath imports are used. ([`0d72997`](https://redirect.github.com/publint/publint/commit/0d729974120060eece8a93873e7e5a24f909338e ))
- Handle `exports["default"]` and `exports['default']` for `CJS_WITH_ESMODULE_DEFAULT_EXPORT` rule ([`8285f77`](https://redirect.github.com/publint/publint/commit/8285f77c939e30698bf44659aee1c76d4e2918c5 ))
</details>
<details>
<summary>rolldown/rolldown (rolldown)</summary>
### [`v1.0.0-beta.44`](https://redirect.github.com/rolldown/rolldown/blob/HEAD/CHANGELOG.md#100-beta44---2025-10-20 )
[Compare Source](https://redirect.github.com/rolldown/rolldown/compare/v1.0.0-beta.43...v1.0.0-beta.44 )
##### 💥 BREAKING CHANGES
- enable `output.minifyInternalExports` for `format: 'es'` or `minify: true` ([#​6594](https://redirect.github.com/rolldown/rolldown/issues/6594 )) by [@​sapphi-red](https://redirect.github.com/sapphi-red )
- node/options: remove `InputOptions.jsx`, prefer `transform.jsx` always ([#​6548](https://redirect.github.com/rolldown/rolldown/issues/6548 )) by [@​hyf0](https://redirect.github.com/hyf0 )
##### 🚀 Features
- support jsx preset for `transform.jsx` ([#​6630](https://redirect.github.com/rolldown/rolldown/issues/6630 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- rolldown\_plugin\_vite\_html: align `inject_to_body` function ([#​6622](https://redirect.github.com/rolldown/rolldown/issues/6622 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- rolldown\_vite\_css\_post\_plugin: tweak `is_legacy` field ([#​6620](https://redirect.github.com/rolldown/rolldown/issues/6620 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- native-plugin: expose `viteHtmlPlugin` ([#​6609](https://redirect.github.com/rolldown/rolldown/issues/6609 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- native-plugin: expose `viteCSSPostPlugin` ([#​6606](https://redirect.github.com/rolldown/rolldown/issues/6606 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- builtin-plugin: expose `viteCSSPlugin` ([#​6605](https://redirect.github.com/rolldown/rolldown/issues/6605 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- rolldown\_plugin\_vite\_html: complete plugin binding ([#​6604](https://redirect.github.com/rolldown/rolldown/issues/6604 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- rolldown\_plugin\_vite\_css: support plugin binding ([#​6598](https://redirect.github.com/rolldown/rolldown/issues/6598 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- add TypedArray constructors to side-effect free globals ([#​6592](https://redirect.github.com/rolldown/rolldown/issues/6592 )) by [@​IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY )
- rolldown\_plugin\_vite\_html: align process src attr logic ([#​6572](https://redirect.github.com/rolldown/rolldown/issues/6572 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- rolldown: support `output.clearDir` to clean up `dir` before build ([#​6486](https://redirect.github.com/rolldown/rolldown/issues/6486 )) by [@​aprosail](https://redirect.github.com/aprosail )
- dev: return `RolldownOutput` instead of `BindingOutputs` from `onOutput` ([#​6563](https://redirect.github.com/rolldown/rolldown/issues/6563 )) by [@​sapphi-red](https://redirect.github.com/sapphi-red )
- rolldown\_plugin\_vite\_html: align process srcset logic ([#​6560](https://redirect.github.com/rolldown/rolldown/issues/6560 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- rolldown\_plugin\_vite\_html: align process src function ([#​6559](https://redirect.github.com/rolldown/rolldown/issues/6559 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- rolldown\_plugin\_vite\_html: align parse secset function ([#​6558](https://redirect.github.com/rolldown/rolldown/issues/6558 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- node/options: deprecate `dropLabels` and add `transform.dropLabels` ([#​6557](https://redirect.github.com/rolldown/rolldown/issues/6557 )) by [@​hyf0](https://redirect.github.com/hyf0 )
- node/options: deprecate `keepNames` and add `output.keepNames` ([#​6556](https://redirect.github.com/rolldown/rolldown/issues/6556 )) by [@​hyf0](https://redirect.github.com/hyf0 )
- node/options: deprecate `profilerNames` and add `output.generatedCode.profilerNames` ([#​6555](https://redirect.github.com/rolldown/rolldown/issues/6555 )) by [@​hyf0](https://redirect.github.com/hyf0 )
- node/options: deprecate top level `inject` and `define` and add `transform.define`, `transform.inject` ([#​6544](https://redirect.github.com/rolldown/rolldown/issues/6544 )) by [@​hyf0](https://redirect.github.com/hyf0 )
- rolldown\_plugin\_vite\_html: initialize attributes handle logic ([#​6543](https://redirect.github.com/rolldown/rolldown/issues/6543 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- rolldown: oxc v0.95.0 ([#​6541](https://redirect.github.com/rolldown/rolldown/issues/6541 )) by [@​Boshen](https://redirect.github.com/Boshen )
- rolldown\_plugin\_vite\_html: align inject css logic ([#​6528](https://redirect.github.com/rolldown/rolldown/issues/6528 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- rolldown\_plugin\_vite\_html: align modulepreload inject logic ([#​6526](https://redirect.github.com/rolldown/rolldown/issues/6526 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- rolldown\_plugin\_vite\_html: align css bundle output inject logic ([#​6524](https://redirect.github.com/rolldown/rolldown/issues/6524 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- rolldown\_plugin\_vite\_html: support inject\_to\_head function ([#​6522](https://redirect.github.com/rolldown/rolldown/issues/6522 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- rolldown\_plugin\_vite\_html: align emit and delete logic ([#​6521](https://redirect.github.com/rolldown/rolldown/issues/6521 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- rolldown\_vite\_html: align handle html asset url logic ([#​6518](https://redirect.github.com/rolldown/rolldown/issues/6518 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- add an example how to transform code and generate sourcemap with `experimental.nativeMagicString` ([#​6514](https://redirect.github.com/rolldown/rolldown/issues/6514 )) by [@​IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY )
- rolldown\_plugin\_vite\_html: align handle inline css logic ([#​6517](https://redirect.github.com/rolldown/rolldown/issues/6517 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
##### 🐛 Bug Fixes
- native-plugin: use correct config for assetPlugin ([#​6638](https://redirect.github.com/rolldown/rolldown/issues/6638 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- no\_color not being respected on reporter ([#​6615](https://redirect.github.com/rolldown/rolldown/issues/6615 )) by [@​H4ad](https://redirect.github.com/H4ad )
- improve tree shaking for JSON default imports ([#​6626](https://redirect.github.com/rolldown/rolldown/issues/6626 )) by [@​IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY )
- cjs treeshaking removes used code ([#​6597](https://redirect.github.com/rolldown/rolldown/issues/6597 )) by [@​IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY )
- plugin/vite-resolve: return `package_json_path` from resolveId hook ([#​6434](https://redirect.github.com/rolldown/rolldown/issues/6434 )) by [@​sapphi-red](https://redirect.github.com/sapphi-red )
- dev: `should have idx` error happens with `deferSyncScanData` + incremental rebuild ([#​6568](https://redirect.github.com/rolldown/rolldown/issues/6568 )) by [@​sapphi-red](https://redirect.github.com/sapphi-red )
- rolldown: sync scoping properly in pre\_process\_ecma\_ast ([#​6537](https://redirect.github.com/rolldown/rolldown/issues/6537 )) by [@​Boshen](https://redirect.github.com/Boshen )
- process CJS tree shaking bailout modules before eliminating unused dynamic entries ([#​6549](https://redirect.github.com/rolldown/rolldown/issues/6549 )) by [@​IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY )
- rust/dev: error of `bundler.scan`doesn't get handled ([#​6547](https://redirect.github.com/rolldown/rolldown/issues/6547 )) by [@​Copilot](https://redirect.github.com/Copilot )
- inline only self referenced json module properties ([#​6519](https://redirect.github.com/rolldown/rolldown/issues/6519 )) by [@​IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY )
- avoid processing native MagicString sourcemap when `sourcemap` is disabled ([#​6510](https://redirect.github.com/rolldown/rolldown/issues/6510 )) by [@​IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY )
##### 🚜 Refactor
- rolldown\_binding: unify `BindingAssetInlineLimit` ([#​6625](https://redirect.github.com/rolldown/rolldown/issues/6625 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- rolldown\_binding: tweak `BindingAssetPluginConfig` ([#​6624](https://redirect.github.com/rolldown/rolldown/issues/6624 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- tweak `viteCSSPlugin` config ([#​6610](https://redirect.github.com/rolldown/rolldown/issues/6610 )) by [@​shulaoda](https://redirect.github.com/shulaoda )
- rust/dev: remove unnecessary bundler cache management of dev engine ([#​6576](https://redirect.github.com/rolldown/rolldown/issues/6576 )) by [@​hyf0](https://redirect.github.com/hyf0 )
- rust/dev: refactor `TaskInput` into enum to reduce invalid states ([#​6575](https://redirect.github.com/rolldown/rolldown/issues/6575 )) by [@​hyf0](https://redirect.github.com/hyf0 )
- improve the error message of `ScanStageCache#merge` ([#​6564](https://redirect.github.com/rolldown/rolldown/issues/6564 )) by [@​IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY )
- rust/dev: use `client_id` to check if module is executed for test environment ([#​6566](https://redirect.github.com/rolldown/rolldown/issues/6566 )) by [@​hyf0](https://redirect.github.com/hyf0 )
- rust/binding: mark napi object that won't be received from js side ([#​6531](https://redirect.github.com/rolldown/rolldown/issues/6531 )) by [@​hyf0](https://redirect.github.com/hyf0 )
- rust/binding: mark napi object struct that won't be passed to js explicitly ([#​6525](https://redirect.github.com/rolldown/rolldown/issues/6525 )) by [@​hyf0](https://redirect.github.com/hyf0 )
- rust/binding: use `&str` or `JsString` to avoid unnecessary clone ([#​6523](https://redirect.github.com/rolldown/rolldown/issues/6523 )) by [@​hyf0](https://redirect.github.com/hyf0 )
- rust/binding: use `&str` to avoid unnecessary clone ([#​6520](https://redirect.github.com/rolldown/rolldown/issues/6520 )) by [@​hyf0](https://redirect.github.com/hyf0 )
- rust: replace unwrap with expect for better error handling in message sending ([#​6509](https://redirect.github.com/rolldown/rolldown/issues/6509 )) by [@​hyf0](https://redirect.github.com/hyf0 )
##### 📚 Documentation
- add redirect from `/guide/in-depth/` to `/in-depth/` ([#​6554](https://redirect.github.com/rolldown/rolldown/issues/6554 )) by [@​Copilot](https://redirect.github.com/Copilot )
- guide: polish notable features page ([#​6535](https://redirect.github.com/rolldown/rolldown/issues/6535 )) by [@​sapphi-red](https://redirect.github.com/sapphi-red )
- builtin-plugins: add replace plugin docs ([#​6534](https://redirect.github.com/rolldown/rolldown/issues/6534 )) by [@​sapphi-red](https://redirect.github.com/sapphi-red )
- add `Additional Thanks` in `acknowledgements` page ([#​6507](https://redirect.github.com/rolldown/rolldown/issues/6507 )) by [@​hyf0](https://redirect.github.com/hyf0 )
- polish doc for `experimental.nativeMagicString` ([#​6504](https://redirect.github.com/rolldown/rolldown/issues/6504 )) by [@​IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY )
##### ⚡ Performance
- cli: advance `createTokioRuntime` ([#​6618](https://redirect.github.com/rolldown/rolldown/issues/6618 )) by [@​hyf0](https://redirect.github.com/hyf0 )
- rolldown: reduce unnecessary Vec allocate ([#​6601](https://redirect.github.com/rolldown/rolldown/issues/6601 )) by [@​Brooooooklyn](https://redirect.github.com/Brooooooklyn )
- rolldown: make derived assets generation more parallel ([#​6600](https://redirect.github.com/rolldown/rolldown/issues/6600 )) by [@​Brooooooklyn](https://redirect.github.com/Brooooooklyn )
- rolldown: make chunks generation more parallel ([#​6599](https://redirect.github.com/rolldown/rolldown/issues/6599 )) by [@​Brooooooklyn](https://redirect.github.com/Brooooooklyn )
- rolldown\_utils: only allocate HASH\_PLACEHOLDER\_LEFT once ([#​6595](https://redirect.github.com/rolldown/rolldown/issues/6595 )) by [@​Brooooooklyn](https://redirect.github.com/Brooooooklyn )
- rolldown: use oxc-resolver with simd-json ([#​6591](https://redirect.github.com/rolldown/rolldown/issues/6591 )) by [@​Boshen](https://redirect.github.com/Boshen )
- rolldown: avoid allocate the sourcemap sources on non Windows os ([#​6590](https://redirect.github.com/rolldown/rolldown/issues/6590 )) by [@​Brooooooklyn](https://redirect.github.com/Brooooooklyn )
- resolver: use optimized fs.read\_to\_string impl ([#​6589](https://redirect.github.com/rolldown/rolldown/issues/6589 )) by [@​Brooooooklyn](https://redirect.github.com/Brooooooklyn )
- deps: upgrade json-escape-simd and add simdutf8 dependency ([#​6579](https://redirect.github.com/rolldown/rolldown/issues/6579 )) by [@​Brooooooklyn](https://redirect.github.com/Brooooooklyn )
- rust/dev: remove unncessary clone for `ClientInput` ([#​6565](https://redirect.github.com/rolldown/rolldown/issues/6565 )) by [@​hyf0](https://redirect.github.com/hyf0 )
- visit ast in `cross_module_optimization` stage parallel ([#​6552](https://redirect.github.com/rolldown/rolldown/issues/6552 )) by [@​IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY )
##### 🧪 Testing
- json module prop conflict with normal module declaration binding ([#​6540](https://redirect.github.com/rolldown/rolldown/issues/6540 )) by [@​IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY )
- vite-tests: fix rolldown overrides ([#​6532](https://redirect.github.com/rolldown/rolldown/issues/6532 )) by [@​sapphi-red](https://redirect.github.com/sapphi-red )
##### ⚙️ Miscellaneous Tasks
- remove string conversion warning in `replacePlugin` to compatible with rollup ([#​6639](https://redirect.github.com/rolldown/rolldown/issues/6639 )) by [@​IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY )
- deps: update dependency dprint-json to v0.21.0 ([#​6637](https://redirect.github.com/rolldown/rolldown/issues/6637 )) by [@​renovate](https://redirect.github.com/renovate )\[bot]
- deps: lock file maintenance ([#​6635](https://redirect.github.com/rolldown/rolldown/issues/6635 )) by [@​renovate](https://redirect.github.com/renovate )\[bot]
- deps: lock file maintenance npm packages ([#​6632](https://redirect.github.com/rolldown/rolldown/issues/6632 )) by [@​renovate](https://redirect.github.com/renovate )\[bot]
- node: use built-in styleText ([#​6340](https://redirect.github.com/rolldown/rolldown/issues/6340 )) by [@​dumbmatter](https://redirect.github.com/dumbmatter )
- deps: update actions/setup-node action to v6 ([#​6629](https://redirect.github.com/rolldown/rolldown/issues/6629 )) by [@​renovate](https://redirect.github.com/renovate )\[bot]
- deps: update github-actions ([#​6628](https://redirect.github.com/rolldown/rolldown/issues/6628 )) by
</details>
---
### Configuration
📅 **Schedule**: Branch creation - "before 9am on monday" in timezone Asia/Shanghai, Automerge - At any time (no schedule defined).
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, 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:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNTYuMSIsInVwZGF0ZWRJblZlciI6IjQxLjE1Ni4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
2025-10-27 04:59:00 +00:00
camc314
ada9989c17
chore(deps): update vitest to v4 ( #14919 )
2025-10-24 14:09:11 +00:00
Brooooooklyn
f472631b73
chore(napi): update cli and js bindings ( #14917 )
...
Ref: https://github.com/oxc-project/oxc/issues/14732#issuecomment-3431289160
2025-10-23 09:47:23 +00:00
Dunqing
ab168177bb
feat(playground): support load formatter options and output formatter IR ( #14856 )
2025-10-23 00:42:30 +00:00
overlookmotel
14de671856
refactor(linter/plugins): simplify comments getter ( #14728 )
...
Follow-on after #14727 .
Since we now have to call into deserializer module to update `astId` at end of linting a file, we may as well reset the buffers at that point too. This allows simplifying the `comments` getter.
2025-10-17 16:09:44 +00:00
camc314
bec7a7da62
feat(semantic): add scope to TSConstructorType ( #14676 )
2025-10-17 01:59:44 +00:00
overlookmotel
85a2743fbb
refactor(linter/plugins, napi/parser): remove extraneous code from raw transfer deserializers ( #14683 )
...
Use the feature flag comments introduced in #14681 to remove a bunch of unused code from the raw transfer deserializer used in Oxlint JS plugins. Also remove a little unused code from the parser's deserializers.
2025-10-16 20:51:34 +00:00
sapphi-red
9e36186e4c
feat(napi/minify): expose drop_labels option ( #14635 )
...
Exposed the `drop_labels` option from JS API.
2025-10-16 06:07:18 +00:00
sapphi-red
d09c7ee8c3
feat(minifier): add drop_labels feature ( #14634 )
...
Implemented `drop_labels` feature, which is implemented in [esbuild](https://esbuild.github.io/api/#drop-labels ) and [rolldown](https://rolldown.rs/apis/config-options#droplabels ).
The plan is to use this in Rolldown.
2025-10-16 06:07:18 +00:00
overlookmotel
84b2605640
fix(linter/plugins): remove parent property from comments ( #14624 )
...
Part of #14564 .
#14589 added first part of support for comments-related APIs in Oxlint JS plugins, but `Comment` objects had an extraneous `parent` field. This PR removes that field, using the `#[estree(no_parent)]` attribute (added in #14622 ).
2025-10-15 12:21:49 +00:00
overlookmotel
2b14abc80c
refactor(napi/parser): shorten raw transfer deserializer for Comment ( #14623 )
...
Pure refactor. Shorten the raw transfer code for `Comment`, removing an unnecessary temp var. This also prepares the way for #14624 , working around a bug in the codegen where preamble can get inserted after code that uses vars defined in that preamble.
2025-10-15 12:21:48 +00:00
Boshen
454ee94ff3
release(crates): v0.95.0 ( #14619 )
2025-10-15 15:06:05 +08:00
Boshen
32a41cfab5
fix(napi/minify): s/passes/max_iterations to avoid confusion ( #14608 )
...
`max_iterations` does not behave like `passes`, and may change in the future.
It should only be used for debugging purposes, as said on the
comment.
2025-10-15 02:31:18 +00:00
Kentaro Suzuki
14686a43d1
fix(napi/minify): handle boolean values for compress.unused option ( #14513 )
...
fixes https://github.com/oxc-project/oxc/issues/14512
Fixes the `compress.unused` option implemented in PR #11796 to properly
accept boolean values from the napi binding.
2025-10-15 09:25:22 +08:00
camc314
9e540025a3
chore(napi/transform): enable oxlint ( #14572 )
2025-10-14 13:47:21 +00:00
camc314
1cc7ee92b0
chore(parser): enable oxlint ( #14571 )
2025-10-14 13:25:29 +00:00
IWANABETHATGUY
c19c9ec4af
feat(napi/minify): expose join_vars, sequences, and max_iterations options ( #14545 )
...
related to https://github.com/rolldown/rolldown/issues/6477
I use `passes` instead of `max_iterations` since `passes` is commonly used in the Javascript community,
see
- terser: https://github.com/terser/terser#:~:text=passes%20(default%3A%201)%20%2D%2D%20The%20maximum%20number%20of%20times%20to%20run%20compress.%20In%20some%20cases%20more%20than%20one%20pass%20leads%20to%20further%20compressed%20code.%20Keep%20in%20mind%20more%20passes%20will%20take%20more%20time .
- swc:
<img width="626" height="828" alt="image" src="https://github.com/user-attachments/assets/aabc2e10-59a1-43ab-b9e0-52ab35522f85 " />
2025-10-14 08:09:57 +00:00
overlookmotel
4f301de9ff
refactor(napi/parser, linter/plugins): improve formatting of generated code ( #14554 )
...
Tiny improvement to generated code. Break up the code with line breaks in more places, to make it a little easier to read.
2025-10-13 12:24:24 +00:00
overlookmotel
68c0252ff0
refactor(napi/parser, linter/plugins): shorten generated raw transfer deserializer code ( #14553 )
...
Tiny improvement to generated code for raw transfer serializers. Make it shorter by grouping `let` statements together.
2025-10-13 12:24:24 +00:00
overlookmotel
f6d890af12
refactor(napi/parser): re-run ast_tools codegen ( #14547 )
...
It look like the minifier has improved since we last ran `oxc_ast_tools` codegen, and it's now capable of generating tighter code for the raw transfer deserializers.
Re-run codegen and commit the result.
2025-10-13 08:46:20 +00:00
overlookmotel
f293e3e320
test(napi/parser): disable raw transfer tests on antd.js fixture ( #14446 )
...
The raw transfer test on `antd.js` fixture is timing out sometimes on CI. We already disabled the "range & parent" test on this fixture. Disable the other test on it too. But only skip these tests in CI.
(alternative to #14438 )
2025-10-08 17:43:27 +00:00
overlookmotel
994c099182
test(napi/parser): skip slow test ( #14424 )
...
The raw transfer range + parent test on `antd.js` fixture is still hitting 5 second timeout on CI. For some reason the `timeout` option isn't increasing the timeout. Just skip this test.
2025-10-07 18:55:02 +00:00
overlookmotel
0b076b413a
test(napi/parser): fix and clarify exclude tests logic ( #14409 )
...
Fix a bug in Vitest config for `napi/parser` package. When providing `exclude` property, should extend the default to prevent Vitest searching `node_modules` for test files ([docs](https://vitest.dev/config/ )).
Also refactor to clarify the logic of which tests are skipped depending on different `env` vars.
2025-10-07 15:54:08 +00:00
camc314
0ec084708d
feat(ci): run napi tests on windows ( #14383 )
2025-10-07 13:56:24 +00:00
copilot-swe-agent
bce31b5eea
feat(napi/playground): call with_private_member_mappings() for private class member mangling ( #14380 )
...
Add `with_private_member_mappings()` support in napi playground like PR #14027 did
## Summary
Successfully added support for private member mappings in the napi playground, enabling proper mangling of private class members (e.g., `#field` → `#a`).
## Changes Made:
- [x] Update `MinifierReturn` struct to include `class_private_mappings` field
- [x] Update `Minifier::build()` method to capture and return `class_private_mappings` from Mangler
- [x] Update `apply_minification()` to return `Option<MinifierReturn>` instead of tuple
- [x] Update `codegen()` to accept `Option<MinifierReturn>` directly
- [x] Refactor `collect_private_members_from_semantic` to be called inside `build_with_semantic`
- [x] Fix clippy lint warning
- [x] Test the changes to ensure mangling works correctly
## Technical Details:
1. Extended `MinifierReturn` to include `class_private_mappings` field
2. Updated `Minifier::build()` to capture private member mappings
3. **Refactored to return `Option<MinifierReturn>` directly** instead of destructuring into tuple
4. Updated `codegen()` to accept the entire `MinifierReturn` struct
5. **Made `collect_private_members_from_semantic` private and called it inside `build_with_semantic`**
6. Updated `build_with_semantic` to return the collected mappings
7. **Fixed clippy lint** - replaced `.map().unwrap_or()` with `.map_or()`
8. Removed unnecessary imports (`oxc_index`, `oxc_span`, `oxc_syntax`) from playground
## Testing:
✅ All existing tests pass
✅ Mangler tests pass (including `private_member_mangling`)
✅ Minifier tests pass
✅ Manual testing confirms private members are correctly mangled
✅ `just minsize` runs successfully
✅ Clippy warnings fixed
The implementation now matches the pattern used in `crates/oxc/src/compiler.rs` from PR #14027 .
<!-- START COPILOT CODING AGENT SUFFIX -->
<details>
<summary>Original prompt</summary>
> Add `with_private_member_mappings()` in @oxc-project/oxc/files/napi/playground/src/lib.rs like @oxc-project/oxc/pull/14027 did
</details>
<!-- START COPILOT CODING AGENT TIPS -->
---
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click [here](https://survey3.medallia.com/?EAHeSx-AP01bZqG0Ld9QLQ ) to start the survey.
2025-10-07 07:52:49 +00:00
camc314
b3c5132692
feat(parser): use typescript for raw transfer tests ( #14390 )
2025-10-06 23:27:45 +00:00
overlookmotel
56274a54f1
test(napi/parser): increase timeout on slow test ( #14391 )
...
1 raw transfer test sometimes takes longer than 5 secs on CI. Increase the timeout.
2025-10-06 22:32:32 +00:00
overlookmotel
52f35c6dcd
refactor(napi/parser, linter/plugins): rename types.js to type_ids.js ( #14384 )
...
Pure refactor. Just rename generated `types.js` files to `type_ids.js`. This name better describes what the files contain, and it avoids naming clash with `types.d.ts` in `apps/oxlint/src-js/generated`.
2025-10-06 18:55:15 +00:00
renovate[bot]
502a2f8df2
chore(deps): lock file maintenance npm packages ( #14363 )
2025-10-06 21:45:39 +08:00
Boshen
f88f5f4593
release(crates): v0.94.0 ( #14377 )
2025-10-06 20:48:05 +08:00
overlookmotel
1489376743
refactor(napi/parser, linter/plugins): minify walker code ( #14376 )
...
Run minifier on generated AST walker code. Mainly the purpose is to prepare the way for generating a different variant of the walker for linter which tracks ancestors while walking (pre-requisite for supporting selectors DSL).
2025-10-06 12:08:07 +00:00
overlookmotel
c8eeeb5d78
refactor(linter/plugins): remove build-time dependency on napi/parser ( #14374 )
...
Refactor. Previously build script for `oxlint` package copied files from `napi/parser`. Remove this dependency, by instead making `oxc_ast_tools` generate the files in `apps/oxlint/src-js/generated`, and then copy the files from there to `dist/generated` in the build script.
This ends up with the same result, but divorces `oxlint` package from `oxc-parser`, which is cleaner.
2025-10-06 12:08:07 +00:00
overlookmotel
a2914fe8d8
feat(linter/plugins): add loc field getter to all AST nodes ( #14355 )
...
Add `loc` to all AST nodes.
`loc` is computed lazily, as it's quite an expensive operation - because it requires searching the source text for line breaks and building a translation table.
We can consider making `loc` a "real" property once we have a faster translation table built on Rust side.
2025-10-05 14:02:12 +00:00
Boshen
588acd55b4
feat(transformer): add ES2026 target for explicit resource management ( #14330 )
...
## Summary
fixes #12796
* Added target `ES2026`
* Moves the explicit resource management feature from proposals to ES2026, as it is now a finalized ECMAScript 2026 feature.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
2025-10-05 07:12:53 +00:00
overlookmotel
c8de6fe9cf
feat(linter/plugins): add parent field to AST nodes ( #14345 )
...
Use the new raw transfer deserializer added in #14344 to add `parent` field to all AST node in Oxlint JS plugins.
2025-10-05 00:32:09 +00:00
overlookmotel
7e4d04fadf
feat(napi/parser): add option to add parent prop to AST nodes with raw transfer ( #14344 )
...
Add an option to `oxc-parser` to add `parent` to all AST nodes. This option is only available with raw transfer (not really feasible with JSON transfer, as JSON doesn't support circular references).
This is really for the purposes of JS plugins in Oxlint, so have not included the new deserializers which add `parent` in the `oxc-parser` NPM package, to avoid bloating download size. But it's ideal home is in `napi/parser` so can add it to the conformance tests.
`parent` is correct for all nodes in all Test262 and TypeScript test cases.
2025-10-05 00:32:09 +00:00
overlookmotel
a11bc9fbe0
fix(napi/parser, linter/plugins): add range field to TemplateElement ( #14339 )
...
Fix missing `range` field in `TemplateElement` in raw transfer deserializers.
2025-10-04 17:03:34 +00:00
overlookmotel
e75d42d509
perf(napi/parser, linter/plugins): remove runtime preserveParens option from raw transfer deserializers ( #14338 )
...
We had a runtime `preserveParens` option in deserializers to cater for linter, but it was not used in parser. Convert it to a compile-time option instead.
2025-10-04 17:03:33 +00:00
overlookmotel
6374065095
feat(napi/parser): raw transfer support range field ( #14319 )
...
Raw transfer support `range` option, adding `range` field to every AST node.
2025-10-04 15:47:47 +00:00
overlookmotel
c65e782092
fix(napi/parser): fix JSDoc comments ( #14318 )
...
Small fix to JSDoc comments for raw transfer deserialization.
`options` must be an object at this point because raw transfer code can only be entered if `options` contains `experimentalRawTransfer: true`.
2025-10-04 15:47:47 +00:00
overlookmotel
073167adb1
refactor(napi/parser): simplify raw transfer deserializer codegen ( #14313 )
...
Pure refactor. Follow-on after #14312 .
Simplify the raw transfer codegen. This change does not alter content of the generated functions, only the order in which they're output in generated code.
2025-10-04 15:47:47 +00:00
overlookmotel
34e1c0bca0
refactor(napi/parser): use minifier to generate JS/TS raw transfer deserializers from single source ( #14312 )
...
Pure refactor. Makes only minor cosmetic changes to the generated raw transfer deserializer code, mainly just alters *how* that code is generated.
Previously we generated the source for the 2 different deserializers (JS and TS) separately, with the JS deserializer leaving out some fields e.g. `typeAnnotation`.
Instead, generate only 1 base implementation, with TS-only fields gated by `IS_TS`. `IS_TS` is defined as a `const` at top of the file.
```js
const IS_TS = true;
function deserializeFunction(pos) {
const params = deserializeBoxFormalParameters(pos + 56);
if (IS_TS) {
const thisParam = deserializeOptionBoxTSThisParameter(pos + 48);
if (thisParam !== null) params.unshift(thisParam);
}
return {
type: deserializeFunctionType(pos + 84),
params,
...(IS_TS && {
declare: deserializeBool(pos + 87),
typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 40),
}),
// ... etc ...
};
}
```
Then we generate both the JS and TS deserializers from this same file, by setting the `IS_TS` const to `true` or `false`, and using minifier to shake out the dead code.
This:
1. Simplifies custom deserializers.
2. Opens the door to add more `const` flags, e.g. `RANGES` to switch on/off including `range` field in AST nodes.
2025-10-04 14:11:38 +00:00
overlookmotel
a98757a1df
refactor(napi/parser): minify syntax in raw transfer deserializers ( #14308 )
...
Pure refactor. Minify syntax of raw transfer deserializers. Purpose is not to compress the size of the files per se, but to remove dead code.
This is first step towards adding support for `range` and `parent` to raw transfer.
`tasks/ast_tools` gains dependencies on `oxc_minify` etc. These have to be dependencies on copies of the published crates from crates.io, NOT local copies (not `workspace = true`).
This is because if changes are made to the AST, the local versions of many crates may not compile until after the codegen has run to update code to account for those changes - catch 22. Depending on published versions of the crates avoids this circularity.
2025-10-04 14:11:38 +00:00
Boshen
3656908d0e
feat(rust): oxc-index-vec v4.0 ( #14254 )
...
Closes https://github.com/oxc-project/backlog/issues/109
Also did a bunch of macro stuff to reduce the boilerplates.
2025-10-04 04:58:42 +00:00
Boshen
013e0530c5
fix(napi/transform): fix define plugin not applying DCE correctly ( #14264 )
...
DCE options was using "smallest", hence `debugger` was removed.
fixes 14260
2025-09-30 15:58:31 +00:00