Commit Graph

11 Commits

Author SHA1 Message Date
Armano 7b045cd417 feat(minfier): drop last break from last switch case (#24673)
After many trial and errors, this seem to be the best way to remove
break stmts in switch cases,

This change targets only last break in last case of switch smts if its
unlabelled

this change differs from #23914 as its no longer targets all branches as
that should not be no longer necessary if all cases are correctly
rewritten

https://github.com/oxc-project/oxc/issues/24672

-----

cases like `switch (a) { case 3: if (b) break; }` are not changed

-----

ref: #17544
2026-07-20 13:21:03 +08:00
overlookmotel 09a4057f14 refactor(linter/plugins, napi/parser): remove pattern of destructuring globals at top level (#18455)
Pure refactor.

Remove a few remaining instances of the pattern where we destructure global objects at top level e.g. `const { isArray } = Array;`.

In Oxlint, TSDown plugin already performs this optimization. In `napi/parser`, we intend to build the package with TSDown, and we'll apply the same optimization in build process then too.
2026-01-23 14:28:18 +00:00
overlookmotel 4027039019 fix(linter/plugins): reset ancestors if error during AST walk (#17207)
While walking the AST, `ancestors` array is pushed to when entering a node, and popped again when exiting. `ancestors` is empty at start of AST traversal and, because each push is followed by a pop, `ancestors` is empty again at the end of AST traversal.

`ancestors` is a singleton, reused for every AST traversal.

`ancestors` is used by `esquery` when determining if a node matches a selector. Note that it's not the same as what's returned from `sourceCode.getAncestors()`. `ancestors` is used only internally by `esquery`, so only way to see what it contains is by observing the behavior of selectors.

This PR fixes a bug where `ancestors` was not reset (emptied) if an error is thrown during AST traversal. In that case `ancestors` was left in the state it was in at time that the error was thrown, and this affects behavior of selectors when visiting the *next* AST.

Fix it by resetting `ancestors` of there's an error. Also add a bunch of debug assertions to ensure `ancestors` remains in sync with AST traversal at all times.
2025-12-21 14:33:13 +00:00
overlookmotel 5aefb84daa perf(linter/plugins): reduce size of walker code (#17176)
By hoisting `let enter;` up out of the the `if` block, minifier is able to convert the `if` statement into a `&&` expression, resulting in tighter minified output.

This optimization is only visible in the bundled output, as that's where we do more aggressive minification.
2025-12-20 13:59:13 +00:00
renovate 211afcff5f chore(deps): update npm packages (#15994)
> **Note:** This PR body was truncated due to platform limits.

This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Adoption](https://docs.renovatebot.com/merge-confidence/) | [Passing](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|---|---|
| [@napi-rs/wasm-runtime](https://redirect.github.com/napi-rs/napi-rs) ([source](https://redirect.github.com/napi-rs/napi-rs/tree/HEAD/wasi-runtime)) | [`1.0.7` -> `1.1.0`](https://renovatebot.com/diffs/npm/@napi-rs%2fwasm-runtime/1.0.7/1.1.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@napi-rs%2fwasm-runtime/1.1.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@napi-rs%2fwasm-runtime/1.1.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@napi-rs%2fwasm-runtime/1.0.7/1.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@napi-rs%2fwasm-runtime/1.0.7/1.1.0?slim=true) |
| [@nestjs/common](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/common)) | [`11.1.6` -> `11.1.9`](https://renovatebot.com/diffs/npm/@nestjs%2fcommon/11.1.6/11.1.9) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcommon/11.1.9?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcommon/11.1.9?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcommon/11.1.6/11.1.9?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcommon/11.1.6/11.1.9?slim=true) |
| [@nestjs/core](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/core)) | [`11.1.6` -> `11.1.9`](https://renovatebot.com/diffs/npm/@nestjs%2fcore/11.1.6/11.1.9) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcore/11.1.9?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcore/11.1.9?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcore/11.1.6/11.1.9?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcore/11.1.6/11.1.9?slim=true) |
| [@nestjs/platform-express](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-express)) | [`11.1.6` -> `11.1.9`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-express/11.1.6/11.1.9) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fplatform-express/11.1.9?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fplatform-express/11.1.9?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fplatform-express/11.1.6/11.1.9?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fplatform-express/11.1.6/11.1.9?slim=true) |
| [@nestjs/testing](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/testing)) | [`11.1.6` -> `11.1.9`](https://renovatebot.com/diffs/npm/@nestjs%2ftesting/11.1.6/11.1.9) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2ftesting/11.1.9?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2ftesting/11.1.9?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2ftesting/11.1.6/11.1.9?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2ftesting/11.1.6/11.1.9?slim=true) |
| [@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`24.9.1` -> `24.10.1`](https://renovatebot.com/diffs/npm/@types%2fnode/24.9.1/24.10.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/24.10.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/24.10.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/24.9.1/24.10.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/24.9.1/24.10.1?slim=true) |
| [@typescript-eslint/scope-manager](https://typescript-eslint.io/packages/scope-manager) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/scope-manager)) | [`8.46.2` -> `8.48.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fscope-manager/8.46.2/8.48.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fscope-manager/8.48.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fscope-manager/8.48.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fscope-manager/8.46.2/8.48.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fscope-manager/8.46.2/8.48.1?slim=true) |
| [@typescript-eslint/typescript-estree](https://typescript-eslint.io/packages/typescript-estree) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-estree)) | [`8.47.0` -> `8.48.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2ftypescript-estree/8.47.0/8.48.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2ftypescript-estree/8.48.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2ftypescript-estree/8.48.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2ftypescript-estree/8.47.0/8.48.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2ftypescript-estree/8.47.0/8.48.1?slim=true) |
| [@typescript-eslint/visitor-keys](https://typescript-eslint.io) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/visitor-keys)) | [`8.47.0` -> `8.48.1`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fvisitor-keys/8.47.0/8.48.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fvisitor-keys/8.48.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fvisitor-keys/8.48.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fvisitor-keys/8.47.0/8.48.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fvisitor-keys/8.47.0/8.48.1?slim=true) |
| [@vitest/browser](https://redirect.github.com/vitest-dev/vitest/tree/main/packages/browser#readme) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/browser)) | [`4.0.6` -> `4.0.15`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser/4.0.6/4.0.15) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fbrowser/4.0.15?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitest%2fbrowser/4.0.15?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitest%2fbrowser/4.0.6/4.0.15?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fbrowser/4.0.6/4.0.15?slim=true) |
| [@vitest/browser-playwright](https://vitest.dev/config/browser/playwright) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/browser-playwright)) | [`4.0.6` -> `4.0.15`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser-playwright/4.0.6/4.0.15) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fbrowser-playwright/4.0.15?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitest%2fbrowser-playwright/4.0.15?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitest%2fbrowser-playwright/4.0.6/4.0.15?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fbrowser-playwright/4.0.6/4.0.15?slim=true) |
| [@vscode/vsce](https://code.visualstudio.com) ([source](https://redirect.github.com/Microsoft/vsce)) | [`3.6.2` -> `3.7.1`](https://renovatebot.com/diffs/npm/@vscode%2fvsce/3.6.2/3.7.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@vscode%2fvsce/3.7.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vscode%2fvsce/3.7.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vscode%2fvsce/3.6.2/3.7.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vscode%2fvsce/3.6.2/3.7.1?slim=true) |
| [alpinejs](https://alpinejs.dev) ([source](https://redirect.github.com/alpinejs/alpine/tree/HEAD/packages/alpinejs)) | [`3.15.0` -> `3.15.2`](https://renovatebot.com/diffs/npm/alpinejs/3.15.0/3.15.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/alpinejs/3.15.2?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/alpinejs/3.15.2?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/alpinejs/3.15.0/3.15.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/alpinejs/3.15.0/3.15.2?slim=true) |
| [antd](https://ant.design) ([source](https://redirect.github.com/ant-design/ant-design)) | [`6.0.0` -> `6.0.1`](https://renovatebot.com/diffs/npm/antd/6.0.0/6.0.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/antd/6.0.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/antd/6.0.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/antd/6.0.0/6.0.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/antd/6.0.0/6.0.1?slim=true) |
| [axios](https://axios-http.com) ([source](https://redirect.github.com/axios/axios)) | [`1.12.2` -> `1.13.2`](https://renovatebot.com/diffs/npm/axios/1.12.2/1.13.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/axios/1.13.2?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/axios/1.13.2?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/axios/1.12.2/1.13.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/axios/1.12.2/1.13.2?slim=true) |
| [dayjs](https://day.js.org) ([source](https://redirect.github.com/iamkun/dayjs)) | [`1.11.18` -> `1.11.19`](https://renovatebot.com/diffs/npm/dayjs/1.11.18/1.11.19) | ![age](https://developer.mend.io/api/mc/badges/age/npm/dayjs/1.11.19?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/dayjs/1.11.19?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/dayjs/1.11.18/1.11.19?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/dayjs/1.11.18/1.11.19?slim=true) |
| [emnapi](https://redirect.github.com/toyobayashi/emnapi) | [`1.6.0` -> `1.7.1`](https://renovatebot.com/diffs/npm/emnapi/1.6.0/1.7.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/emnapi/1.7.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/emnapi/1.7.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/emnapi/1.6.0/1.7.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/emnapi/1.6.0/1.7.1?slim=true) |
| [es-toolkit](https://es-toolkit.dev) ([source](https://redirect.github.com/toss/es-toolkit)) | [`1.40.0` -> `1.42.0`](https://renovatebot.com/diffs/npm/es-toolkit/1.40.0/1.42.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/es-toolkit/1.42.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/es-toolkit/1.42.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/es-toolkit/1.40.0/1.42.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/es-toolkit/1.40.0/1.42.0?slim=true) |
| [esbuild](https://redirect.github.com/evanw/esbuild) | [`^0.25.0` -> `^0.27.0`](https://renovatebot.com/diffs/npm/esbuild/0.25.12/0.27.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/esbuild/0.27.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/esbuild/0.27.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/esbuild/0.25.12/0.27.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/esbuild/0.25.12/0.27.1?slim=true) |
| [execa](https://redirect.github.com/sindresorhus/execa) | [`9.6.0` -> `9.6.1`](https://renovatebot.com/diffs/npm/execa/9.6.0/9.6.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/execa/9.6.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/execa/9.6.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/execa/9.6.0/9.6.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/execa/9.6.0/9.6.1?slim=true) |
| [happy-dom](https://redirect.github.com/capricorn86/happy-dom) | [`20.0.7` -> `20.0.11`](https://renovatebot.com/diffs/npm/happy-dom/20.0.7/20.0.11) | ![age](https://developer.mend.io/api/mc/badges/age/npm/happy-dom/20.0.11?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/happy-dom/20.0.11?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/happy-dom/20.0.7/20.0.11?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/happy-dom/20.0.7/20.0.11?slim=true) |
| [memfs](https://redirect.github.com/streamich/memfs) | [`4.49.0` -> `4.51.1`](https://renovatebot.com/diffs/npm/memfs/4.49.0/4.51.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/memfs/4.51.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/memfs/4.51.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/memfs/4.49.0/4.51.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/memfs/4.49.0/4.51.1?slim=true) |
| [motion](https://redirect.github.com/motiondivision/motion) | [`12.23.24` -> `12.23.25`](https://renovatebot.com/diffs/npm/motion/12.23.24/12.23.25) | ![age](https://developer.mend.io/api/mc/badges/age/npm/motion/12.23.25?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/motion/12.23.25?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/motion/12.23.24/12.23.25?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/motion/12.23.24/12.23.25?slim=true) |
| [ovsx](https://open-vsx.org) ([source](https://redirect.github.com/eclipse/openvsx/tree/HEAD/cli)) | [`0.10.6` -> `0.10.7`](https://renovatebot.com/diffs/npm/ovsx/0.10.6/0.10.7) | ![age](https://developer.mend.io/api/mc/badges/age/npm/ovsx/0.10.7?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/ovsx/0.10.7?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/ovsx/0.10.6/0.10.7?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/ovsx/0.10.6/0.10.7?slim=true) |
| [playwright](https://playwright.dev) ([source](https://redirect.github.com/microsoft/playwright)) | [`1.56.1` -> `1.57.0`](https://renovatebot.com/diffs/npm/playwright/1.56.1/1.57.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/playwright/1.57.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright/1.57.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright/1.56.1/1.57.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright/1.56.1/1.57.0?slim=true) |
| [pnpm](https://pnpm.io) ([source](https://redirect.github.com/pnpm/pnpm/tree/HEAD/pnpm)) | [`10.20.0` -> `10.24.0`](https://renovatebot.com/diffs/npm/pnpm/10.20.0/10.24.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/pnpm/10.24.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/pnpm/10.24.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/pnpm/10.20.0/10.24.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/pnpm/10.20.0/10.24.0?slim=true) |
| [preact](https://preactjs.com) ([source](https://redirect.github.com/preactjs/preact)) | [`10.27.2` -> `10.28.0`](https://renovatebot.com/diffs/npm/preact/10.27.2/10.28.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/preact/10.28.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/preact/10.28.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/preact/10.27.2/10.28.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/preact/10.27.2/10.28.0?slim=true) |
| [react](https://react.dev/) ([source](https://redirect.github.com/facebook/react/tree/HEAD/packages/react)) | [`19.2.0` -> `19.2.1`](https://renovatebot.com/diffs/npm/react/19.2.0/19.2.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/react/19.2.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react/19.2.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react/19.2.0/19.2.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react/19.2.0/19.2.1?slim=true) |
| [react-dom](https://react.dev/) ([source](https://redirect.github.com/facebook/react/tree/HEAD/packages/react-dom)) | [`19.2.0` -> `19.2.1`](https://renovatebot.com/diffs/npm/react-dom/19.2.0/19.2.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/react-dom/19.2.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-dom/19.2.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-dom/19.2.0/19.2.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-dom/19.2.0/19.2.1?slim=true) |
| [solid-js](https://solidjs.com) ([source](https://redirect.github.com/solidjs/solid)) | [`1.9.9` -> `1.9.10`](https://renovatebot.com/diffs/npm/solid-js/1.9.9/1.9.10) | ![age](https://developer.mend.io/api/mc/badges/age/npm/solid-js/1.9.10?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/solid-js/1.9.10?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/solid-js/1.9.9/1.9.10?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/solid-js/1.9.9/1.9.10?slim=true) |
| [terser](https://terser.org) ([source](https://redirect.github.com/terser/terser)) | [`5.44.0` -> `5.44.1`](https://renovatebot.com/diffs/npm/terser/5.44.0/5.44.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/terser/5.44.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/terser/5.44.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/terser/5.44.0/5.44.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/terser/5.44.0/5.44.1?slim=true) |
| [type-fest](https://redirect.github.com/sindresorhus/type-fest) | [`5.2.0` -> `5.3.0`](https://renovatebot.com/diffs/npm/type-fest/5.2.0/5.3.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/type-fest/5.3.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/type-fest/5.3.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/type-fest/5.2.0/5.3.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/type-fest/5.2.0/5.3.0?slim=true) |
| [vitest](https://vitest.dev) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest)) | [`4.0.1` -> `4.0.15`](https://renovatebot.com/diffs/npm/vitest/4.0.1/4.0.15) | ![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/4.0.15?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/4.0.15?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/4.0.1/4.0.15?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/4.0.1/4.0.15?slim=true) |
| [vitest](https://vitest.dev) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest)) | [`4.0.10` -> `4.0.15`](https://renovatebot.com/diffs/npm/vitest/4.0.10/4.0.15) | ![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/4.0.15?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/4.0.15?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/4.0.10/4.0.15?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/4.0.10/4.0.15?slim=true) |
| [vue](https://redirect.github.com/vuejs/core/tree/main/packages/vue#readme) ([source](https://redirect.github.com/vuejs/core)) | [`3.5.22` -> `3.5.25`](https://renovatebot.com/diffs/npm/vue/3.5.22/3.5.25) | ![age](https://developer.mend.io/api/mc/badges/age/npm/vue/3.5.25?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vue/3.5.25?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vue/3.5.22/3.5.25?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vue/3.5.22/3.5.25?slim=true) |

---

### Release Notes

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

### [`v1.1.0`](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.0.7...@napi-rs/wasm-runtime@1.1.0)

[Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.0.7...@napi-rs/wasm-runtime@1.1.0)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/common)</summary>

### [`v11.1.9`](https://redirect.github.com/nestjs/nest/releases/tag/v11.1.9)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v11.1.8...v11.1.9)

##### v11.1.9 (2025-11-14)

##### Bug fixes

- `core`
  - [#&#8203;15865](https://redirect.github.com/nestjs/nest/pull/15865) fix(core): make get() throw for implicitly request-scoped trees ([@&#8203;JoeNutt](https://redirect.github.com/JoeNutt))

##### Enhancements

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

##### Dependencies

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

##### Committers: 4

- Rami ([@&#8203;JoeNutt](https://redirect.github.com/JoeNutt))
- Rhynel Algopera ([@&#8203;dev-rhynel](https://redirect.github.com/dev-rhynel))
- Tomer Steinberg ([@&#8203;TomerSteinberg](https://redirect.github.com/TomerSteinberg))
- WuMingDao ([@&#8203;WuMingDao](https://redirect.github.com/WuMingDao))

### [`v11.1.8`](https://redirect.github.com/nestjs/nest/compare/v11.1.7...68cd54594972011663e19123c3f620e20baea53a)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v11.1.7...v11.1.8)

### [`v11.1.7`](https://redirect.github.com/nestjs/nest/compare/v11.1.6...ee1b3475551e9173b51381211f058298be504a6a)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v11.1.6...v11.1.7)

</details>

<details>
<summary>typescript-eslint/typescript-eslint (@&#8203;typescript-eslint/scope-manager)</summary>

### [`v8.48.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8481-2025-12-02)

[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.48.0...v8.48.1)

This was a version bump only for scope-manager to align it with other projects, there were no code changes.

You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.

### [`v8.48.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8480-2025-11-24)

[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.47.0...v8.48.0)

##### 🚀 Features

- **eslint-plugin:** \[no-redundant-type-constituents] use assignability checking for redundancy checks ([#&#8203;10744](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10744))

##### 🩹 Fixes

- **scope-manager:** change unhelpful `aaa` error message and change `analyze` to expects `Program` ([#&#8203;11747](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11747))

##### ❤️ Thank You

- Josh Goldberg
- mdm317 [@&#8203;gen-ip-1](https://redirect.github.com/gen-ip-1)
- Younsang Na [@&#8203;nayounsang](https://redirect.github.com/nayounsang)

You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.

### [`v8.47.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8470-2025-11-17)

[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.46.4...v8.47.0)

This was a version bump only for scope-manager to align it with other projects, there were no code changes.

You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.

### [`v8.46.4`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8464-2025-11-10)

[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.46.3...v8.46.4)

This was a version bump only for scope-manager to align it with other projects, there were no code changes.

You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.

### [`v8.46.3`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/scope-manager/CHANGELOG.md#8463-2025-11-03)

[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.46.2...v8.46.3)

This was a version bump only for scope-manager to align it with other projects, there were no code changes.

You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.

</details>

<details>
<summary>typescript-eslint/typescript-eslint (@&#8203;typescript-eslint/typescript-estree)</summary>

### [`v8.48.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-estree/CHANGELOG.md#8481-2025-12-02)

[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.48.0...v8.48.1)

This was a version bump only for typescript-estree to align it with other projects, there were no code changes.

You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.

### [`v8.48.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/typescript-estree/CHANGELOG.md#8480-2025-11-24)

[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.47.0...v8.48.0)

##### 🚀 Features

- **typescript-estree:** replace fast-glob with tinyglobby ([#&#8203;11740](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11740))
- **eslint-plugin:** \[no-redundant-type-constituents] use assignability checking for redundancy checks ([#&#8203;10744](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/10744))
- **typescript-estree:** gate all errors behind allowInvalidAST ([#&#8203;11693](https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11693))

##### 🩹 Fixes

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

##### ❤️ Thank You

- Ben McCann [@&#8203;benmccann](https://redirect.github.com/benmccann)
- Dima Barabash [@&#8203;dbarabashh](https://redirect.github.com/dbarabashh)
- fisker Cheung [@&#8203;fisker](https://redirect.github.com/fisker)
- James Henry [@&#8203;JamesHenry](https://redirect.github.com/JamesHenry)
- JamesHenry [@&#8203;JamesHenry](https://redirect.github.com/JamesHenry)
- Josh Goldberg
- Josh Goldberg ✨
- mdm317 [@&#8203;gen-ip-1](https://redirect.github.com/gen-ip-1)
- Younsang Na [@&#8203;nayounsang](https://redirect.github.com/nayounsang)

You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.

</details>

<details>
<summary>typescript-eslint/typescript-eslint (@&#8203;typescript-eslint/visitor-keys)</summary>

### [`v8.48.1`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/visitor-keys/CHANGELOG.md#8481-2025-12-02)

[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.48.0...v8.48.1)

This was a version bump only for visitor-keys to align it with other projects, there were no code changes.

You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.

### [`v8.48.0`](https://redirect.github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/visitor-keys/CHANGELOG.md#8480-2025-11-24)

[Compare Source](https://redirect.github.com/typescript-eslint/typescript-eslint/compare/v8.47.0...v8.48.0)

This was a version bump only for visitor-keys to align it with other projects, there were no code changes.

You can read about our [versioning strategy](https://typescript-eslint.io/users/versioning) and [releases](https://typescript-eslint.io/users/releases) on our website.

</details>

<details>
<summary>vitest-dev/vitest (@&#8203;vitest/browser)</summary>

### [`v4.0.15`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.15)

[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.14...v4.0.15)

#####    🚀 Experimental Features

- **cache**: Add opt-out on a plugin level, fix internal root cache  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9154](https://redirect.github.com/vitest-dev/vitest/issues/9154) [<samp>(a68f7)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a68f74e5e)
- **reporters**: Print import duration breakdown  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9105](https://redirect.github.com/vitest-dev/vitest/issues/9105) [<samp>(122ff)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/122ff321c)

#####    🐞 Bug Fixes

- Keep built-in id as is in bun and deno  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9117](https://redirect.github.com/vitest-dev/vitest/issues/9117) [<samp>(075ab)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/075ab3520)
- Use `optimizeDeps.rolldownOptions` to fix depreated warning + fix `ssr.external: true`  -  by [@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in [#&#8203;9121](https://redirect.github.com/vitest-dev/vitest/issues/9121) [<samp>(fd8bd)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/fd8bd6dee)
- Fix external behavior with `deps.optimizer`  -  by [@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in [#&#8203;9125](https://redirect.github.com/vitest-dev/vitest/issues/9125) [<samp>(4c754)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/4c75492cc)
- Very minor typo in "Chrome DevTools Protocol"  -  by [@&#8203;HowToTestFrontend](https://redirect.github.com/HowToTestFrontend) in [#&#8203;9146](https://redirect.github.com/vitest-dev/vitest/issues/9146) [<samp>(20997)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/209976419)
- **browser**: Run `toMatchScreenshot` only once when used with `expect.element`  -  by [@&#8203;macarie](https://redirect.github.com/macarie) in [#&#8203;9132](https://redirect.github.com/vitest-dev/vitest/issues/9132) [<samp>(0d2e7)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/0d2e7e3e2)
- **coverage**: Istanbul provider to not break source maps  -  by [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;9040](https://redirect.github.com/vitest-dev/vitest/issues/9040) [<samp>(e4ca9)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e4ca917f1)
- **deps**: Update dependency tinyexec to v1  -  in [#&#8203;9122](https://redirect.github.com/vitest-dev/vitest/issues/9122) [<samp>(fd786)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/fd7860222)
- **docs**: Remove `--browser.provider` from docs  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9115](https://redirect.github.com/vitest-dev/vitest/issues/9115) [<samp>(120b3)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/120b3dac1)
- **expect**: Preserve `currentTestName` in extended matchers  -  by [@&#8203;macarie](https://redirect.github.com/macarie) in [#&#8203;9106](https://redirect.github.com/vitest-dev/vitest/issues/9106) [<samp>(e4345)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e43458e02)
- **pool**: Terminate workers on `CTRL+c` forceful exits  -  by [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;9140](https://redirect.github.com/vitest-dev/vitest/issues/9140) [<samp>(d57d8)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d57d8bf0a)
- **reporters**: Show project in github reporter  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9138](https://redirect.github.com/vitest-dev/vitest/issues/9138) [<samp>(bb65e)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/bb65e15c7)
- **spy**: Do not mock overriden method, if parent was automocked  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9116](https://redirect.github.com/vitest-dev/vitest/issues/9116) [<samp>(1a246)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1a24607b4)
- **web-worker**: MessagePort objects passed to Worker.postMessage work when clone === "native"  -  by [@&#8203;whitphx](https://redirect.github.com/whitphx) in [#&#8203;9118](https://redirect.github.com/vitest-dev/vitest/issues/9118) [<samp>(deee8)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/deee83e54)

#####     [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.14...v4.0.15)

### [`v4.0.14`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.14)

[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.13...v4.0.14)

#####    🚀 Experimental Features

- **browser**: Expose `utils.configurePrettyDOM`  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9103](https://redirect.github.com/vitest-dev/vitest/issues/9103) [<samp>(2cc34)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/2cc34e0d4)
- **runner**: Add full names to tasks  -  by [@&#8203;macarie](https://redirect.github.com/macarie) in [#&#8203;9087](https://redirect.github.com/vitest-dev/vitest/issues/9087) [<samp>(821aa)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/821aa2002)
- **ui**: Add tabbed failure view for `toMatchScreenshot` with comparison slider  -  by [@&#8203;macarie](https://redirect.github.com/macarie) in [#&#8203;8813](https://redirect.github.com/vitest-dev/vitest/issues/8813) [<samp>(c37c2)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c37c2eb0b)

#####    🐞 Bug Fixes

- Externalize before caching  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9077](https://redirect.github.com/vitest-dev/vitest/issues/9077) [<samp>(e1b2e)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e1b2e086a)
- Collect the duration of external imports  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9097](https://redirect.github.com/vitest-dev/vitest/issues/9097) [<samp>(3326c)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/3326cc9f4)
- Rename `collect` to `import`, remove `prepare`  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9091](https://redirect.github.com/vitest-dev/vitest/issues/9091) [<samp>(1256b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1256b5ca3)
- **browser**:
  - Unsubscribe `onCancel` on rpc destroy  -  by [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;9088](https://redirect.github.com/vitest-dev/vitest/issues/9088) [<samp>(f5b72)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/f5b72374b)
  - Revert the viewport scaling in non-ui mode [#&#8203;9018](https://redirect.github.com/vitest-dev/vitest/issues/9018)  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9072](https://redirect.github.com/vitest-dev/vitest/issues/9072) and [#&#8203;9018](https://redirect.github.com/vitest-dev/vitest/issues/9018) [<samp>(64502)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/64502a2c4)
- **coverage**:
  - Invalidate circular modules correctly on rerun with coverage  -  by [@&#8203;aicest](https://redirect.github.com/aicest) in [#&#8203;9096](https://redirect.github.com/vitest-dev/vitest/issues/9096) [<samp>(6f22c)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6f22c675f)
- **expect**:
  - Allow function as standard schema  -  by [@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in [#&#8203;9099](https://redirect.github.com/vitest-dev/vitest/issues/9099) [<samp>(ed8a2)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ed8a2ebbd)
- **jsdom**:
  - Reuse abort signals if possible  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9090](https://redirect.github.com/vitest-dev/vitest/issues/9090) [<samp>(2c468)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/2c468ee95)
- **pool**:
  - Init `VITEST_POOL_ID` + `VITEST_WORKER_ID` before environment setup  -  by [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;9085](https://redirect.github.com/vitest-dev/vitest/issues/9085) [<samp>(37918)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/379185b40)
- **web-worker**:
  - `postMessage` to send ports to workers  -  by [@&#8203;whitphx](https://redirect.github.com/whitphx) and [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;9078](https://redirect.github.com/vitest-dev/vitest/issues/9078) [<samp>(9d176)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/9d1763d11)

#####    🏎 Performance

- Replace `debug` with `obug`  -  by [@&#8203;sxzz](https://redirect.github.com/sxzz) and [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;9057](https://redirect.github.com/vitest-dev/vitest/issues/9057) [<samp>(acc51)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/acc5152b9)

#####     [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.13...v4.0.14)

### [`v4.0.13`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.13)

[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.12...v4.0.13)

#####    🐞 Bug Fixes

- **types**:
  - Don't use type from Vite 7.1  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9071](https://redirect.github.com/vitest-dev/vitest/issues/9071) [<samp>(6356b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6356b1d38)
  - Don't import node.js dependent types in vitest/browser  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9068](https://redirect.github.com/vitest-dev/vitest/issues/9068) [<samp>(332af)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/332afa0de)

#####    🏎 Performance

- Avoid fetchModule roundtrip if the module is cached  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9075](https://redirect.github.com/vitest-dev/vitest/issues/9075) [<samp>(b27e0)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b27e002e5)
- **experimental**: If `fsCacheModule` is enabled, read from the memory when possible  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9076](https://redirect.github.com/vitest-dev/vitest/issues/9076) [<samp>(6b9a1)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6b9a1b5b1)

#####     [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.12...v4.0.13)

### [`v4.0.12`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.12)

[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.11...v4.0.12)

#####    🐞 Bug Fixes

- Inherit `fsModuleCachePath` by default  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9063](https://redirect.github.com/vitest-dev/vitest/issues/9063) [<samp>(9a8bc)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/9a8bc78c5)
- Don't import from `@opentelemetry/api` in public types  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9066](https://redirect.github.com/vitest-dev/vitest/issues/9066) [<samp>(e944a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e944a37b7)

#####     [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.11...v4.0.12)

### [`v4.0.11`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.11)

[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.10...v4.0.11)

#####    🚀 Experimental Features

- **api**: Add extensible test artifact API  -  by [@&#8203;macarie](https://redirect.github.com/macarie) in [#&#8203;8987](https://redirect.github.com/vitest-dev/vitest/issues/8987) [<samp>(77292)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/772923645)
  - See more at <https://vitest.dev/api/advanced/artifacts>
- **expect**: Provide `task` in `MatchState`  -  by [@&#8203;macarie](https://redirect.github.com/macarie) in [#&#8203;9022](https://redirect.github.com/vitest-dev/vitest/issues/9022) [<samp>(afd1f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/afd1f3e52)
- **experimental**: Support OpenTelemetry traces  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;8994](https://redirect.github.com/vitest-dev/vitest/issues/8994) [<samp>(d6d33)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d6d3359dd)
  - See more at <https://vitest.dev/guide/open-telemetry>

#####    🏎 Performance

- **experimental**: Add file system cache  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9026](https://redirect.github.com/vitest-dev/vitest/issues/9026) [<samp>(1b147)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1b1473712)
  - See more at <https://vitest.dev/config/experimental#experimental-fsmodulecache>

#####     [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.10...v4.0.11)

### [`v4.0.10`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.10)

[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.9...v4.0.10)

#####    🐞 Bug Fixes

- Remove `onCancel` when worker is terminated  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9033](https://redirect.github.com/vitest-dev/vitest/issues/9033) [<samp>(6d7f0)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6d7f0a99e)
- **browser**:
  - Don't scale the iframe if UI is disabled  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9018](https://redirect.github.com/vitest-dev/vitest/issues/9018) [<samp>(5406e)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5406e8ea4)
  - Handle dependency stack traces with external source maps. Resolves: [#&#8203;9003](https://redirect.github.com/vitest-dev/vitest/issues/9003)  -  by [@&#8203;iclectic](https://redirect.github.com/iclectic) in [#&#8203;9016](https://redirect.github.com/vitest-dev/vitest/issues/9016) and [#&#8203;9003](https://redirect.github.com/vitest-dev/vitest/issues/9003) [<samp>(57ae5)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/57ae547de)
- **bun**:
  - Parsing of stack trace for bun runtime  -  by [@&#8203;nazarhussain](https://redirect.github.com/nazarhussain) in [#&#8203;9032](https://redirect.github.com/vitest-dev/vitest/issues/9032) [<samp>(f3ec6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/f3ec6fcb0)
- **core**:
  - Prevent starting new run when cancelling  -  by [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;8991](https://redirect.github.com/vitest-dev/vitest/issues/8991) [<samp>(eb98d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/eb98dd8fd)
- **pool**:
  - Prevent writing to closed worker  -  by [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) and [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;9023](https://redirect.github.com/vitest-dev/vitest/issues/9023) [<samp>(042c6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/042c60c80)
- **reporters**:
  - Report correct test run duration at the end  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;8969](https://redirect.github.com/vitest-dev/vitest/issues/8969) [<samp>(bc3a6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/bc3a6921e)
- **ui**:
  - Use execution time from ws reporter (`onFinished`)  -  by [@&#8203;userquin](https://redirect.github.com/userquin) in [#&#8203;8975](https://redirect.github.com/vitest-dev/vitest/issues/8975) [<samp>(f56dc)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/f56dc0cc4)

#####     [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.9...v4.0.10)

### [`v4.0.9`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.9)

[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.8...v4.0.9)

#####    🚀 Experimental Features

- **expect**: Add Set support to toBeOneOf  -  by [@&#8203;tim-we](https://redirect.github.com/tim-we) and [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;8906](https://redirect.github.com/vitest-dev/vitest/issues/8906) [<samp>(a415d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a415d0375)

#####    🐞 Bug Fixes

- **browser**: Add favicon icons to the browser mode ui  -  by [@&#8203;userquin](https://redirect.github.com/userquin) in [#&#8203;8972](https://redirect.github.com/vitest-dev/vitest/issues/8972) [<samp>(353ee)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/353ee5bbc)
- **forks**: Increase worker start timeout  -  by [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;9027](https://redirect.github.com/vitest-dev/vitest/issues/9027) [<samp>(5e750)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5e750f4ba)
- **jsdom**: Cloned request is an instance of `Request`  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;8985](https://redirect.github.com/vitest-dev/vitest/issues/8985) [<samp>(506a9)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/506a9fd0f)
- **ui**: Collect file/suite/test duration correctly  -  by [@&#8203;userquin](https://redirect.github.com/userquin) in [#&#8203;8976](https://redirect.github.com/vitest-dev/vitest/issues/8976) [<samp>(8016d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/8016da886)

#####     [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.8...v4.0.9)

### [`v4.0.8`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.8)

[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.7...v4.0.8)

#####    🐞 Bug Fixes

- Workaround `noExternal` merging bug on Vite 6  -  by [@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in [#&#8203;8950](https://redirect.github.com/vitest-dev/vitest/issues/8950) [<samp>(bcb13)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/bcb132fd4)
- Missed context.d.ts file  -  by [@&#8203;termorey](https://redirect.github.com/termorey) in [#&#8203;8965](https://redirect.github.com/vitest-dev/vitest/issues/8965) [<samp>(9044d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/9044d9356)
- Incorrect error message for non-awaited `expect.element()`  -  by [@&#8203;StyleShit](https://redirect.github.com/StyleShit) in [#&#8203;8954](https://redirect.github.com/vitest-dev/vitest/issues/8954) [<samp>(9638d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/9638db0f3)
- **browser**: Cleanup frame-ancestors from CSP header at coverage middleware  -  by [@&#8203;userquin](https://redirect.github.com/userquin) in [#&#8203;8941](https://redirect.github.com/vitest-dev/vitest/issues/8941) [<samp>(1f730)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1f7303738)
- **deps**: Update all non-major dependencies  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;8636](https://redirect.github.com/vitest-dev/vitest/issues/8636) [<samp>(da8b9)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/da8b93aa5)
- **forks**: Do not fail with Windows Defender enabled  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;8967](https://redirect.github.com/vitest-dev/vitest/issues/8967) [<samp>(c79f4)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c79f47c65)
- **runner**: Properly encode Uint8Array body in annotations  -  by [@&#8203;Livan-pro](https://redirect.github.com/Livan-pro) in [#&#8203;8951](https://redirect.github.com/vitest-dev/vitest/issues/8951) [<samp>(997ca)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/997ca5a82)
- **spy**: Copy static properties if spy is initialised with `vi.fn()`, fix types for `vi.spyOn(obj, class)`  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;8956](https://redirect.github.com/vitest-dev/vitest/issues/8956) [<samp>(75e7f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/75e7fcc51)
- **webdriverio**: When no argument is passed to the .click interaction command, the webdriver command should also have no argument  -  by [@&#8203;julienw](https://redirect.github.com/julienw) in [#&#8203;8937](https://redirect.github.com/vitest-dev/vitest/issues/8937) [<samp>(069e6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/069e6db9b)

#####     [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.7...v4.0.8)

### [`v4.0.7`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.0.7)

[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.6...v4.0.7)

#####    🐞 Bug Fixes

- Bind `process` in case global is overwritten  -  by [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;8916](https://redirect.github.com/vitest-dev/vitest/issues/8916) [<samp>(6240d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6240d51a6)
- Create environment once per worker with `isolate: false`  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;8915](https://redirect.github.com/vitest-dev/vitest/issues/8915) [<samp>(c9078)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c9078a26e)
- Add Locator as a possible element type in `toContainElement()` matcher  -  by [@&#8203;vitalybaev](https://redirect.github.com/vitalybaev) in [#&#8203;8910](https://redirect.github.com/vitest-dev/vitest/issues/8910) and [#&#8203;8927](https://redirect.github.com/vitest-dev/vitest/issues/8927) [<samp>(35a27)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/35a27d4b3)
- **browser**: Inherit `isolate` option, deprecate `browser.isolate`/`browser.fileParallelism`  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;8890](https://redirect.github.com/vitest-dev/vitest/issues/8890) [<samp>(9d2b4)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/9d2b4d501)
- **cli**: Parse `--execArgv` as array  -  by [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;8924](https://redirect.github.com/vitest-dev/vitest/issues/8924) [<samp>(751c3)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/751c3926f)
- **jsdom**: Support `URL.createObjectURL`, `FormData.set(prop, blob)`  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in [#&#8203;8935](https://redirect.github.com/vitest-dev/vitest/issues/8935) [<samp>(a1b73)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a1b7361ab)
- **pool**: Avoid `--require` argument when running in deno  -  by [@&#8203;pi0](https://redirect.github.com/pi0) in [#&#8203;8897](https://redirect.github.com/vitest-dev/vitest/issues/8897) [<samp>(d41fa)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d41fa742f)
- **typecheck**: Handle re-runs outside `tsc`  -  by [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;8920](https://redirect.github.com/vitest-dev/vitest/issues/8920) [<samp>(fdb2e)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/fdb2e7982)

#####    🏎 Performance

- **pool**:
  - Sort test files by project by default  -  by [@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in [#&#8203;8914](https://redirect.github.com/vitest-dev/vitest/issues/8914) [<samp>(680a6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/680a612ea)
- **reporters**:
  - Optimize getting the tests stats  -  by [@&#8203;Connormiha](https://redirect.github.com/Connormiha) in [#&#8203;8908](https://redirect.github.com/vitest-dev/vitest/issues/8908) [<samp>(06d62)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/06d6207fb)
  - Remove unnecessary `Array.from` call  -  by [@&#8203;Connormiha](https://redirect.github.com/Connormiha) in [#&#8203;8907](https://redirect.github.com/vitest-dev/vitest/issues/8907) [<samp>(b6014)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b60149b27)

#####     [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v4.0.6...v4.0.7)

</details>

<details>
<summary>Microsoft/vsce (@&#8203;vscode/vsce)</summary>

### [`v3.7.1`](https://redirect.github.com/microsoft/vscode-vsce/releases/tag/v3.7.1)

[Compare Source](https://redirect.github.com/Microsoft/vsce/compare/v3.7.0...v3.7.1)

#### Changes:

- [#&#8203;1223](https://redirect.github.com/Microsoft/vsce/issues/1223): Bump js-yaml
- [#&#8203;1222](https://redirect.github.com/Microsoft/vsce/issues/1222): Bump glob

This list of changes was [auto generated](https://dev.azure.com/monacotools/Monaco/_build/results?buildId=378097\&view=logs).

### [`v3.7.0`](https://redirect.github.com/microsoft/vscode-vsce/releases/tag/v3.7.0)

[Compare Source](https://redirect.github.com/Microsoft/vsce/compare/v3.6.2...v3.7.0)

#### Changes:

- [#&#8203;1219](https://redirect.github.com/Microsoft/vsce/issues/1219): Remove invalid validation for extension dependencies
- [#&#8203;1212](https://redirect.github.com/Microsoft/vsce/issues/1212): Validate extension dependencies use lowercase letters and warn about deprecated github.copilot
- [#&#8203;1209](https://redirect.github.com/Microsoft/vsce/issues/1209): Bump validator from 13.9.0 to 13.15.20
- [#&#8203;1200](https://redirect.github.com/Microsoft/vsce/issues/1200): Bump tar-fs from 2.1.3 to 2.1.4

This list of changes was [auto generated](https://dev.azure.com/monacotools/Monaco/_build/results?buildId=372155\&view=logs).

</details>

<details>
<summary>alpinejs/alpine (alpinejs)</summary>

### [`v3.15.2`](https://redirect.github.com/alpinejs/alpine/releases/tag/v3.15.2)

[Compare Source](https://redirect.github.com/alpinejs/alpine/compare/v3.15.1...v3.15.2)

#### Changes

- Imrove CSP bundle [#&#8203;4704](https://redirect.github.com/alpinejs/alpine/pull/4704)
- Add `setErrorHandler` [#&#8203;4673](https://redirect.github.com/alpinejs/alpine/pull/4673)

### [`v3.15.1`](https://redirect.github.com/alpinejs/alpine/releases/tag

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 10am on monday" in timezone Asia/Shanghai, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/oxc-project/oxc).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi4xNi4xIiwidXBkYXRlZEluVmVyIjoiNDIuMzIuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
2025-12-09 14:39:49 +00:00
camc314 a18c065f21 chore(ast): run just ast to re-format code (#16096) 2025-11-25 09:31:11 +00: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
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 af3a75ec80 refactor(linter/plugins): track ancestors while walking AST (#14432)
In the `oxlint` version of AST walker, track ancestors as traverse the AST.

This is a pre-requisite for supporting selectors DSL.

Ancestors are stored in an `ancestors` array which is exported by the module. Following what [esquery](https://www.npmjs.com/package/esquery) needs, the ancestors are stored in reverse order (i.e. `Program` is always the *last* in the array).
2025-10-07 23:35:31 +00: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 fb1a067637 refactor(linter/plugins): bundle walker and AST types map (#14373)
Refactor. Include generated files `types.js` and `walk.js` in bundle, instead of externalizing them. It's only the deserializer code that we want to keep unbundled to make it easier to debug without source maps. `types.js` and `walk.js` aren't too complicated.
2025-10-06 12:08:06 +00:00