Commit Graph

1234 Commits

Author SHA1 Message Date
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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fcore/7.28.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fcore/7.28.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fcore/7.28.4/7.28.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fcore/7.28.4/7.28.5?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-exponentiation-operator/7.28.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-exponentiation-operator/7.28.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-exponentiation-operator/7.27.1/7.28.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-exponentiation-operator/7.27.1/7.28.5?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-logical-assignment-operators/7.28.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-logical-assignment-operators/7.28.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-logical-assignment-operators/7.27.1/7.28.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-logical-assignment-operators/7.27.1/7.28.5?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-optional-chaining/7.28.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-optional-chaining/7.28.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-optional-chaining/7.27.1/7.28.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-optional-chaining/7.27.1/7.28.5?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-typescript/7.28.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-typescript/7.28.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-typescript/7.28.0/7.28.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-typescript/7.28.0/7.28.5?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcommon/11.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcommon/11.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcommon/11.1.6/11.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcommon/11.1.6/11.1.7?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcore/11.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcore/11.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcore/11.1.6/11.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcore/11.1.6/11.1.7?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fplatform-express/11.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fplatform-express/11.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fplatform-express/11.1.6/11.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fplatform-express/11.1.6/11.1.7?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2ftesting/11.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2ftesting/11.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2ftesting/11.1.6/11.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2ftesting/11.1.6/11.1.7?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@napi-rs%2fcli/3.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@napi-rs%2fcli/3.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@napi-rs%2fcli/3.4.0/3.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@napi-rs%2fcli/3.4.0/3.4.1?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fvisitor-keys/8.46.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fvisitor-keys/8.46.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fvisitor-keys/8.46.1/8.46.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fvisitor-keys/8.46.1/8.46.2?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fbrowser/4.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitest%2fbrowser/4.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitest%2fbrowser/4.0.1/4.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fbrowser/4.0.1/4.0.3?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fbrowser-playwright/4.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitest%2fbrowser-playwright/4.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitest%2fbrowser-playwright/4.0.1/4.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fbrowser-playwright/4.0.1/4.0.3?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/alpinejs/3.15.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/alpinejs/3.15.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/alpinejs/3.15.0/3.15.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/alpinejs/3.15.0/3.15.1?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/antd/5.27.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/antd/5.27.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/antd/5.27.5/5.27.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/antd/5.27.5/5.27.6?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/emnapi/1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/emnapi/1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/emnapi/1.5.0/1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/emnapi/1.5.0/1.6.0?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/es-toolkit/1.41.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/es-toolkit/1.41.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/es-toolkit/1.40.0/1.41.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/es-toolkit/1.40.0/1.41.0?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/happy-dom/20.0.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/happy-dom/20.0.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/happy-dom/20.0.7/20.0.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/happy-dom/20.0.7/20.0.8?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/immer/10.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/immer/10.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/immer/10.1.3/10.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/immer/10.1.3/10.2.0?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/pnpm/10.19.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/pnpm/10.19.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/pnpm/10.18.3/10.19.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/pnpm/10.18.3/10.19.0?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/tsdown/0.15.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/tsdown/0.15.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/tsdown/0.15.8/0.15.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/tsdown/0.15.8/0.15.10?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/4.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/4.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/4.0.1/4.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/4.0.1/4.0.3?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/publint/0.3.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/publint/0.3.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/publint/0.3.14/0.3.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/publint/0.3.14/0.3.15?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/4.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/4.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/4.0.1/4.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/4.0.1/4.0.3?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/rolldown/1.0.0-beta.44?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/rolldown/1.0.0-beta.44?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/rolldown/1.0.0-beta.43/1.0.0-beta.44?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/rolldown/1.0.0-beta.43/1.0.0-beta.44?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

🔧 This Pull Request updates lock files to use the latest dependency versions.

---

### Release Notes

<details>
<summary>babel/babel (@&#8203;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`
  - [#&#8203;17446](https://redirect.github.com/babel/babel/pull/17446) Allow `Runtime Errors for Function Call Assignment Targets` ([@&#8203;liuxingbaoyu](https://redirect.github.com/liuxingbaoyu))
- `babel-helper-validator-identifier`
  - [#&#8203;17501](https://redirect.github.com/babel/babel/pull/17501) fix: update identifier to unicode 17 ([@&#8203;fisker](https://redirect.github.com/fisker))

##### 🐛 Bug Fix

- `babel-plugin-proposal-destructuring-private`
  - [#&#8203;17534](https://redirect.github.com/babel/babel/pull/17534) Allow mixing private destructuring and rest ([@&#8203;CO0Ki3](https://redirect.github.com/CO0Ki3))
- `babel-parser`
  - [#&#8203;17521](https://redirect.github.com/babel/babel/pull/17521) Improve `@babel/parser` error typing ([@&#8203;JLHwung](https://redirect.github.com/JLHwung))
  - [#&#8203;17491](https://redirect.github.com/babel/babel/pull/17491) fix: improve ts-only declaration parsing ([@&#8203;JLHwung](https://redirect.github.com/JLHwung))
- `babel-plugin-proposal-discard-binding`, `babel-plugin-transform-destructuring`
  - [#&#8203;17519](https://redirect.github.com/babel/babel/pull/17519) fix: `rest` correctly returns plain array ([@&#8203;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`
  - [#&#8203;17503](https://redirect.github.com/babel/babel/pull/17503) Fix `JSXIdentifier` handling in `isReferencedIdentifier` ([@&#8203;JLHwung](https://redirect.github.com/JLHwung))
- `babel-traverse`
  - [#&#8203;17504](https://redirect.github.com/babel/babel/pull/17504) fix: ensure scope.push register in anonymous fn ([@&#8203;JLHwung](https://redirect.github.com/JLHwung))

##### 🏠 Internal

- `babel-types`
  - [#&#8203;17494](https://redirect.github.com/babel/babel/pull/17494) Type checking babel-types scripts ([@&#8203;JLHwung](https://redirect.github.com/JLHwung))

##### :running\_woman: Performance

- `babel-core`
  - [#&#8203;17490](https://redirect.github.com/babel/babel/pull/17490) Faster finding of locations in `buildCodeFrameError` ([@&#8203;liuxingbaoyu](https://redirect.github.com/liuxingbaoyu))

</details>

<details>
<summary>nestjs/nest (@&#8203;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 (@&#8203;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 (@&#8203;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 (@&#8203;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 (@&#8203;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 ([#&#8203;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 (@&#8203;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 (@&#8203;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 [@&#8203;Copilot](https://redirect.github.com/Copilot) and **sheremet-va** in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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 [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;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. [#&#8203;55316](https://redirect.github.com/ant-design/ant-design/pull/55316)
  - 🛠 Add Table missing useMemo capability to spinProps.  [#&#8203;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. [#&#8203;55376](https://redirect.github.com/ant-design/ant-design/pull/55376)
- TypeScript
  - 🤖 Add ConfigProvider the `Window` type definition in `getTargetContainer` of . [#&#8203;55313](https://redirect.github.com/ant-design/ant-design/pull/55313)
  - 🤖 Add ConfigProvider the `ShadowRoot` type definition in `getTargetContainer` and `getPopupContainer`. [#&#8203;55278](https://redirect.github.com/ant-design/ant-design/pull/55278) [@&#8203;leshalv](https://redirect.github.com/leshalv)
  - 🤖 Improve Modal type definition. [#&#8203;55371](https://redirect.github.com/ant-design/ant-design/pull/55371)

***

- Table
  - 🐞 修复 Table `pagination.align` 属性失效的问题。[#&#8203;55316](https://redirect.github.com/ant-design/ant-design/pull/55316)
  - 🛠 补充 Table 中 spinProps 的 useMemo 缺失能力。[#&#8203;55344](https://redirect.github.com/ant-design/ant-design/pull/55344)
- 🛠 重构 Modal 中 ConfirmDialog 的 useMemo,以解决 Object.values 生成新数组导致 useMemo 失效的问题。[#&#8203;55376](https://redirect.github.com/ant-design/ant-design/pull/55376)
- TypeScript
  - 🤖 补充 ConfigProvider `getTargetContainer` 中 `Window` 类型定义。[#&#8203;55313](https://redirect.github.com/ant-design/ant-design/pull/55313)
  - 🤖 补充 ConfigProvider 的 `getTargetContainer` 和 `getPopupContainer` 中 `ShadowRoot` 类型定义。[#&#8203;55278](https://redirect.github.com/ant-design/ant-design/pull/55278) [@&#8203;leshalv](https://redirect.github.com/leshalv)
  - 🤖 优化 Modal 中类型定义。[#&#8203;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 [@&#8203;toyobayashi](https://redirect.github.com/toyobayashi) in [#&#8203;171](https://redirect.github.com/toyobayashi/emnapi/pull/171)
- feat: make napi\_delete\_reference use node\_api\_basic\_env by [@&#8203;toyobayashi](https://redirect.github.com/toyobayashi)  in [#&#8203;170](https://redirect.github.com/toyobayashi/emnapi/pull/170)
- ci: migrate to npm trusted publishing by [@&#8203;toyobayashi](https://redirect.github.com/toyobayashi)  in [#&#8203;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 [@&#8203;the5thbeatle](https://redirect.github.com/the5thbeatle), [@&#8203;wo-o29](https://redirect.github.com/wo-o29), [@&#8203;hwibaski](https://redirect.github.com/hwibaski), [@&#8203;manudeli](https://redirect.github.com/manudeli), [@&#8203;raon0211](https://redirect.github.com/raon0211), [@&#8203;dayongkr](https://redirect.github.com/dayongkr), [@&#8203;D-Sketon](https://redirect.github.com/D-Sketon), [@&#8203;yoouungyoung](https://redirect.github.com/yoouungyoung), [@&#8203;Dohun-choi](https://redirect.github.com/Dohun-choi), [@&#8203;sukvvon](https://redirect.github.com/sukvvon), [@&#8203;zoulou00](https://redirect.github.com/zoulou00), and [@&#8203;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 **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in task [#&#8203;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 **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in task [#&#8203;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` ([#&#8203;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: [#&#8203;10104](https://redirect.github.com/pnpm/pnpm/pull/10104).

- Added support for exact versions in `minimumReleaseAgeExclude` [#&#8203;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 [@&#8203;sxzz](https://redirect.github.com/sxzz) [<samp>(e3951)</samp>](https://redirect.github.com/rolldown/tsdown/commit/e395162)
- Add `unrun` as a config loader  -  by [@&#8203;Gugustinette](https://redirect.github.com/Gugustinette) and [@&#8203;sxzz](https://redirect.github.com/sxzz) in [#&#8203;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 [@&#8203;userquin](https://redirect.github.com/userquin) in [#&#8203;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 [@&#8203;ocavue](https://redirect.github.com/ocavue) in [#&#8203;552](https://redirect.github.com/rolldown/tsdown/issues/552) [<samp>(0aedb)</samp>](https://redirect.github.com/rolldown/tsdown/commit/0aedb13)
- Pin rolldown version  -  by [@&#8203;ocavue](https://redirect.github.com/ocavue) in [#&#8203;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` ([#&#8203;6594](https://redirect.github.com/rolldown/rolldown/issues/6594)) by [@&#8203;sapphi-red](https://redirect.github.com/sapphi-red)
- node/options: remove `InputOptions.jsx`, prefer `transform.jsx` always ([#&#8203;6548](https://redirect.github.com/rolldown/rolldown/issues/6548)) by [@&#8203;hyf0](https://redirect.github.com/hyf0)

##### 🚀 Features

- support jsx preset for `transform.jsx` ([#&#8203;6630](https://redirect.github.com/rolldown/rolldown/issues/6630)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- rolldown\_plugin\_vite\_html: align `inject_to_body` function ([#&#8203;6622](https://redirect.github.com/rolldown/rolldown/issues/6622)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- rolldown\_vite\_css\_post\_plugin: tweak `is_legacy` field ([#&#8203;6620](https://redirect.github.com/rolldown/rolldown/issues/6620)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- native-plugin: expose `viteHtmlPlugin` ([#&#8203;6609](https://redirect.github.com/rolldown/rolldown/issues/6609)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- native-plugin: expose `viteCSSPostPlugin` ([#&#8203;6606](https://redirect.github.com/rolldown/rolldown/issues/6606)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- builtin-plugin: expose `viteCSSPlugin` ([#&#8203;6605](https://redirect.github.com/rolldown/rolldown/issues/6605)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- rolldown\_plugin\_vite\_html: complete plugin binding ([#&#8203;6604](https://redirect.github.com/rolldown/rolldown/issues/6604)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- rolldown\_plugin\_vite\_css: support plugin binding ([#&#8203;6598](https://redirect.github.com/rolldown/rolldown/issues/6598)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- add TypedArray constructors to side-effect free globals ([#&#8203;6592](https://redirect.github.com/rolldown/rolldown/issues/6592)) by [@&#8203;IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY)
- rolldown\_plugin\_vite\_html: align process src attr logic ([#&#8203;6572](https://redirect.github.com/rolldown/rolldown/issues/6572)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- rolldown: support `output.clearDir` to clean up `dir` before build ([#&#8203;6486](https://redirect.github.com/rolldown/rolldown/issues/6486)) by [@&#8203;aprosail](https://redirect.github.com/aprosail)
- dev: return `RolldownOutput` instead of `BindingOutputs` from `onOutput` ([#&#8203;6563](https://redirect.github.com/rolldown/rolldown/issues/6563)) by [@&#8203;sapphi-red](https://redirect.github.com/sapphi-red)
- rolldown\_plugin\_vite\_html: align process srcset logic ([#&#8203;6560](https://redirect.github.com/rolldown/rolldown/issues/6560)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- rolldown\_plugin\_vite\_html: align process src function ([#&#8203;6559](https://redirect.github.com/rolldown/rolldown/issues/6559)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- rolldown\_plugin\_vite\_html: align parse secset function ([#&#8203;6558](https://redirect.github.com/rolldown/rolldown/issues/6558)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- node/options: deprecate `dropLabels` and add `transform.dropLabels` ([#&#8203;6557](https://redirect.github.com/rolldown/rolldown/issues/6557)) by [@&#8203;hyf0](https://redirect.github.com/hyf0)
- node/options: deprecate `keepNames` and add `output.keepNames` ([#&#8203;6556](https://redirect.github.com/rolldown/rolldown/issues/6556)) by [@&#8203;hyf0](https://redirect.github.com/hyf0)
- node/options: deprecate `profilerNames` and add `output.generatedCode.profilerNames` ([#&#8203;6555](https://redirect.github.com/rolldown/rolldown/issues/6555)) by [@&#8203;hyf0](https://redirect.github.com/hyf0)
- node/options: deprecate top level `inject` and `define` and add `transform.define`, `transform.inject` ([#&#8203;6544](https://redirect.github.com/rolldown/rolldown/issues/6544)) by [@&#8203;hyf0](https://redirect.github.com/hyf0)
- rolldown\_plugin\_vite\_html: initialize attributes handle logic ([#&#8203;6543](https://redirect.github.com/rolldown/rolldown/issues/6543)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- rolldown: oxc v0.95.0 ([#&#8203;6541](https://redirect.github.com/rolldown/rolldown/issues/6541)) by [@&#8203;Boshen](https://redirect.github.com/Boshen)
- rolldown\_plugin\_vite\_html: align inject css logic ([#&#8203;6528](https://redirect.github.com/rolldown/rolldown/issues/6528)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- rolldown\_plugin\_vite\_html: align modulepreload inject logic ([#&#8203;6526](https://redirect.github.com/rolldown/rolldown/issues/6526)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- rolldown\_plugin\_vite\_html: align css bundle output inject logic ([#&#8203;6524](https://redirect.github.com/rolldown/rolldown/issues/6524)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- rolldown\_plugin\_vite\_html: support inject\_to\_head function ([#&#8203;6522](https://redirect.github.com/rolldown/rolldown/issues/6522)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- rolldown\_plugin\_vite\_html: align emit and delete logic ([#&#8203;6521](https://redirect.github.com/rolldown/rolldown/issues/6521)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- rolldown\_vite\_html: align handle html asset url logic ([#&#8203;6518](https://redirect.github.com/rolldown/rolldown/issues/6518)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- add an example how to transform code and generate sourcemap with `experimental.nativeMagicString` ([#&#8203;6514](https://redirect.github.com/rolldown/rolldown/issues/6514)) by [@&#8203;IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY)
- rolldown\_plugin\_vite\_html: align handle inline css logic ([#&#8203;6517](https://redirect.github.com/rolldown/rolldown/issues/6517)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)

##### 🐛 Bug Fixes

- native-plugin: use correct config for assetPlugin ([#&#8203;6638](https://redirect.github.com/rolldown/rolldown/issues/6638)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- no\_color not being respected on reporter ([#&#8203;6615](https://redirect.github.com/rolldown/rolldown/issues/6615)) by [@&#8203;H4ad](https://redirect.github.com/H4ad)
- improve tree shaking for JSON default imports ([#&#8203;6626](https://redirect.github.com/rolldown/rolldown/issues/6626)) by [@&#8203;IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY)
- cjs treeshaking removes used code ([#&#8203;6597](https://redirect.github.com/rolldown/rolldown/issues/6597)) by [@&#8203;IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY)
- plugin/vite-resolve: return `package_json_path` from resolveId hook ([#&#8203;6434](https://redirect.github.com/rolldown/rolldown/issues/6434)) by [@&#8203;sapphi-red](https://redirect.github.com/sapphi-red)
- dev: `should have idx` error happens with `deferSyncScanData` + incremental rebuild ([#&#8203;6568](https://redirect.github.com/rolldown/rolldown/issues/6568)) by [@&#8203;sapphi-red](https://redirect.github.com/sapphi-red)
- rolldown: sync scoping properly in pre\_process\_ecma\_ast ([#&#8203;6537](https://redirect.github.com/rolldown/rolldown/issues/6537)) by [@&#8203;Boshen](https://redirect.github.com/Boshen)
- process CJS tree shaking bailout modules before eliminating unused dynamic entries ([#&#8203;6549](https://redirect.github.com/rolldown/rolldown/issues/6549)) by [@&#8203;IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY)
- rust/dev: error of `bundler.scan`doesn't get handled ([#&#8203;6547](https://redirect.github.com/rolldown/rolldown/issues/6547)) by [@&#8203;Copilot](https://redirect.github.com/Copilot)
- inline only self referenced json module properties ([#&#8203;6519](https://redirect.github.com/rolldown/rolldown/issues/6519)) by [@&#8203;IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY)
- avoid processing native MagicString sourcemap when `sourcemap` is disabled ([#&#8203;6510](https://redirect.github.com/rolldown/rolldown/issues/6510)) by [@&#8203;IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY)

##### 🚜 Refactor

- rolldown\_binding: unify `BindingAssetInlineLimit` ([#&#8203;6625](https://redirect.github.com/rolldown/rolldown/issues/6625)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- rolldown\_binding: tweak `BindingAssetPluginConfig` ([#&#8203;6624](https://redirect.github.com/rolldown/rolldown/issues/6624)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- tweak `viteCSSPlugin` config ([#&#8203;6610](https://redirect.github.com/rolldown/rolldown/issues/6610)) by [@&#8203;shulaoda](https://redirect.github.com/shulaoda)
- rust/dev: remove unnecessary bundler cache management of dev engine ([#&#8203;6576](https://redirect.github.com/rolldown/rolldown/issues/6576)) by [@&#8203;hyf0](https://redirect.github.com/hyf0)
- rust/dev: refactor `TaskInput` into enum to reduce invalid states ([#&#8203;6575](https://redirect.github.com/rolldown/rolldown/issues/6575)) by [@&#8203;hyf0](https://redirect.github.com/hyf0)
- improve the error message of `ScanStageCache#merge` ([#&#8203;6564](https://redirect.github.com/rolldown/rolldown/issues/6564)) by [@&#8203;IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY)
- rust/dev: use `client_id` to check if module is executed for test environment ([#&#8203;6566](https://redirect.github.com/rolldown/rolldown/issues/6566)) by [@&#8203;hyf0](https://redirect.github.com/hyf0)
- rust/binding: mark napi object that won't be received from js side ([#&#8203;6531](https://redirect.github.com/rolldown/rolldown/issues/6531)) by [@&#8203;hyf0](https://redirect.github.com/hyf0)
- rust/binding: mark napi object struct that won't be passed to js explicitly ([#&#8203;6525](https://redirect.github.com/rolldown/rolldown/issues/6525)) by [@&#8203;hyf0](https://redirect.github.com/hyf0)
- rust/binding: use `&str` or `JsString` to avoid unnecessary clone ([#&#8203;6523](https://redirect.github.com/rolldown/rolldown/issues/6523)) by [@&#8203;hyf0](https://redirect.github.com/hyf0)
- rust/binding: use `&str` to avoid unnecessary clone ([#&#8203;6520](https://redirect.github.com/rolldown/rolldown/issues/6520)) by [@&#8203;hyf0](https://redirect.github.com/hyf0)
- rust: replace unwrap with expect for better error handling in message sending ([#&#8203;6509](https://redirect.github.com/rolldown/rolldown/issues/6509)) by [@&#8203;hyf0](https://redirect.github.com/hyf0)

##### 📚 Documentation

- add redirect from `/guide/in-depth/` to `/in-depth/` ([#&#8203;6554](https://redirect.github.com/rolldown/rolldown/issues/6554)) by [@&#8203;Copilot](https://redirect.github.com/Copilot)
- guide: polish notable features page ([#&#8203;6535](https://redirect.github.com/rolldown/rolldown/issues/6535)) by [@&#8203;sapphi-red](https://redirect.github.com/sapphi-red)
- builtin-plugins: add replace plugin docs ([#&#8203;6534](https://redirect.github.com/rolldown/rolldown/issues/6534)) by [@&#8203;sapphi-red](https://redirect.github.com/sapphi-red)
- add `Additional Thanks` in `acknowledgements` page ([#&#8203;6507](https://redirect.github.com/rolldown/rolldown/issues/6507)) by [@&#8203;hyf0](https://redirect.github.com/hyf0)
- polish doc for `experimental.nativeMagicString` ([#&#8203;6504](https://redirect.github.com/rolldown/rolldown/issues/6504)) by [@&#8203;IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY)

##### ⚡ Performance

- cli: advance `createTokioRuntime` ([#&#8203;6618](https://redirect.github.com/rolldown/rolldown/issues/6618)) by [@&#8203;hyf0](https://redirect.github.com/hyf0)
- rolldown: reduce unnecessary Vec allocate ([#&#8203;6601](https://redirect.github.com/rolldown/rolldown/issues/6601)) by [@&#8203;Brooooooklyn](https://redirect.github.com/Brooooooklyn)
- rolldown: make derived assets generation more parallel ([#&#8203;6600](https://redirect.github.com/rolldown/rolldown/issues/6600)) by [@&#8203;Brooooooklyn](https://redirect.github.com/Brooooooklyn)
- rolldown: make chunks generation more parallel ([#&#8203;6599](https://redirect.github.com/rolldown/rolldown/issues/6599)) by [@&#8203;Brooooooklyn](https://redirect.github.com/Brooooooklyn)
- rolldown\_utils: only allocate HASH\_PLACEHOLDER\_LEFT once ([#&#8203;6595](https://redirect.github.com/rolldown/rolldown/issues/6595)) by [@&#8203;Brooooooklyn](https://redirect.github.com/Brooooooklyn)
- rolldown: use oxc-resolver with simd-json ([#&#8203;6591](https://redirect.github.com/rolldown/rolldown/issues/6591)) by [@&#8203;Boshen](https://redirect.github.com/Boshen)
- rolldown: avoid allocate the sourcemap sources on non Windows os ([#&#8203;6590](https://redirect.github.com/rolldown/rolldown/issues/6590)) by [@&#8203;Brooooooklyn](https://redirect.github.com/Brooooooklyn)
- resolver: use optimized fs.read\_to\_string impl ([#&#8203;6589](https://redirect.github.com/rolldown/rolldown/issues/6589)) by [@&#8203;Brooooooklyn](https://redirect.github.com/Brooooooklyn)
- deps: upgrade json-escape-simd and add simdutf8 dependency ([#&#8203;6579](https://redirect.github.com/rolldown/rolldown/issues/6579)) by [@&#8203;Brooooooklyn](https://redirect.github.com/Brooooooklyn)
- rust/dev: remove unncessary clone for `ClientInput` ([#&#8203;6565](https://redirect.github.com/rolldown/rolldown/issues/6565)) by [@&#8203;hyf0](https://redirect.github.com/hyf0)
- visit ast in `cross_module_optimization` stage parallel ([#&#8203;6552](https://redirect.github.com/rolldown/rolldown/issues/6552)) by [@&#8203;IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY)

##### 🧪 Testing

- json module prop conflict with normal module declaration binding ([#&#8203;6540](https://redirect.github.com/rolldown/rolldown/issues/6540)) by [@&#8203;IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY)
- vite-tests: fix rolldown overrides ([#&#8203;6532](https://redirect.github.com/rolldown/rolldown/issues/6532)) by [@&#8203;sapphi-red](https://redirect.github.com/sapphi-red)

##### ⚙️ Miscellaneous Tasks

- remove string conversion warning in `replacePlugin` to compatible with rollup ([#&#8203;6639](https://redirect.github.com/rolldown/rolldown/issues/6639)) by [@&#8203;IWANABETHATGUY](https://redirect.github.com/IWANABETHATGUY)
- deps: update dependency dprint-json to v0.21.0 ([#&#8203;6637](https://redirect.github.com/rolldown/rolldown/issues/6637)) by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot]
- deps: lock file maintenance ([#&#8203;6635](https://redirect.github.com/rolldown/rolldown/issues/6635)) by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot]
- deps: lock file maintenance npm packages ([#&#8203;6632](https://redirect.github.com/rolldown/rolldown/issues/6632)) by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot]
- node: use built-in styleText ([#&#8203;6340](https://redirect.github.com/rolldown/rolldown/issues/6340)) by [@&#8203;dumbmatter](https://redirect.github.com/dumbmatter)
- deps: update actions/setup-node action to v6 ([#&#8203;6629](https://redirect.github.com/rolldown/rolldown/issues/6629)) by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot]
- deps: update github-actions ([#&#8203;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