Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: performance issue with o(n^2) complexity of directoryExists() #66

Merged
merged 1 commit into from Oct 6, 2023

Conversation

Akryum
Copy link
Contributor

@Akryum Akryum commented Oct 4, 2023

Related to vuejs/language-tools#2740

Profiling .vue file saves on a very big project:

Before (notice the 15s-long file save):
screenshot

Profile:
CPU-20231004T112107.zip

After:
screenshot

Profile:
CPU-20231004T115709.zip

@Akryum Akryum changed the title fix: performance issue with o2 complexity of directoryExists() fix: performance issue with o(n^2) complexity of directoryExists() Oct 4, 2023
@rchl
Copy link

rchl commented Oct 4, 2023

With caching comes the obvious potential negative side effect of cache getting stale and resulting in incorrect behavior. Would that be a concern here? (I'm asking because I'm not that familiar with the code)

@johnsoncodehk
Copy link
Member

johnsoncodehk commented Oct 6, 2023

LGTM, thanks for investigating!

@rchl It's fine because sync() is always called every time the virtual files change.

@johnsoncodehk johnsoncodehk merged commit 368446f into volarjs:master Oct 6, 2023
3 checks passed
@Akryum Akryum deleted the path-directory-exists branch October 6, 2023 22:39
renovate bot added a commit to slipmatio/logger that referenced this pull request Oct 9, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[@types/node](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node)
([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped)) |
[`20.7.2` ->
`20.8.3`](https://renovatebot.com/diffs/npm/@types%2fnode/20.7.2/20.8.3)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/20.8.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/20.8.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/20.7.2/20.8.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/20.7.2/20.8.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@vitejs/plugin-vue](https://togithub.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#readme)
([source](https://togithub.com/vitejs/vite-plugin-vue)) | [`4.3.4` ->
`4.4.0`](https://renovatebot.com/diffs/npm/@vitejs%2fplugin-vue/4.3.4/4.4.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@vitejs%2fplugin-vue/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitejs%2fplugin-vue/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitejs%2fplugin-vue/4.3.4/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitejs%2fplugin-vue/4.3.4/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [happy-dom](https://togithub.com/capricorn86/happy-dom) | [`12.2.1` ->
`12.9.0`](https://renovatebot.com/diffs/npm/happy-dom/12.2.1/12.9.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/happy-dom/12.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/happy-dom/12.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/happy-dom/12.2.1/12.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/happy-dom/12.2.1/12.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [vite](https://togithub.com/vitejs/vite/tree/main/#readme)
([source](https://togithub.com/vitejs/vite)) | [`4.4.9` ->
`4.4.11`](https://renovatebot.com/diffs/npm/vite/4.4.9/4.4.11) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vite/4.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vite/4.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vite/4.4.9/4.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite/4.4.9/4.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [vue-tsc](https://togithub.com/vuejs/language-tools) | [`1.8.15` ->
`1.8.16`](https://renovatebot.com/diffs/npm/vue-tsc/1.8.15/1.8.16) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vue-tsc/1.8.16?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vue-tsc/1.8.16?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vue-tsc/1.8.15/1.8.16?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vue-tsc/1.8.15/1.8.16?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>vitejs/vite-plugin-vue (@&#8203;vitejs/plugin-vue)</summary>

###
[`v4.4.0`](https://togithub.com/vitejs/vite-plugin-vue/blob/HEAD/packages/plugin-vue/CHANGELOG.md#440-2023-10-02)

- fix(plugin-vue): re-create filters after updating options
([#&#8203;246](https://togithub.com/vitejs/vite-plugin-vue/issues/246))
([c383503](https://togithub.com/vitejs/vite-plugin-vue/commit/c383503)),
closes
[#&#8203;246](https://togithub.com/vitejs/vite-plugin-vue/issues/246)
- feat: support generated JS imports for external scoped style
([#&#8203;196](https://togithub.com/vitejs/vite-plugin-vue/issues/196))
([bd5055d](https://togithub.com/vitejs/vite-plugin-vue/commit/bd5055d)),
closes
[#&#8203;196](https://togithub.com/vitejs/vite-plugin-vue/issues/196)
- chore: add `@ts-ignore` when accessing
`legacy?.buildSsrCjsExternalHeuristics`
([#&#8203;255](https://togithub.com/vitejs/vite-plugin-vue/issues/255))
([04c3b0b](https://togithub.com/vitejs/vite-plugin-vue/commit/04c3b0b)),
closes
[#&#8203;255](https://togithub.com/vitejs/vite-plugin-vue/issues/255)
- refactor(plugin-vue): deprecate reactivity transform
([38f8ea5](https://togithub.com/vitejs/vite-plugin-vue/commit/38f8ea5))
- refactor(plugin-vue): use source-map-js
([#&#8203;247](https://togithub.com/vitejs/vite-plugin-vue/issues/247))
([b43690d](https://togithub.com/vitejs/vite-plugin-vue/commit/b43690d)),
closes
[#&#8203;247](https://togithub.com/vitejs/vite-plugin-vue/issues/247)

</details>

<details>
<summary>capricorn86/happy-dom (happy-dom)</summary>

###
[`v12.9.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.9.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.8.1...v12.9.0)

##### 🎨 Features

- Improves performance of the async task manager. This will improve
performance of timers in general as they have less logic executed
related to the async task manager.
([#&#8203;1114](https://togithub.com/capricorn86/happy-dom/issues/1114))

###
[`v12.8.1`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.8.1)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.8.0...v12.8.1)

##### 👷‍♂️ Patch fixes

- Adds missing second parameter in callbacks from `MutationObserver`.
([#&#8203;1113](https://togithub.com/capricorn86/happy-dom/issues/1113))

***

Thank you [@&#8203;wojtekmaj](https://togithub.com/wojtekmaj) for your
contribution!

###
[`v12.8.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.8.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.7.0...v12.8.0)

##### 🎨 Features

- Adds support for `Clipboard`, `ClipboardItem`, `Permissions` and
`PermissionStatus`, which are used by the `Window.navigator.clipboard`
and `Window.navigator.permissions` properties.
([#&#8203;833](https://togithub.com/capricorn86/happy-dom/issues/833))
- Adds support for `ClipboardEvent`.
([#&#8203;833](https://togithub.com/capricorn86/happy-dom/issues/833))
- Improves support for `DataTransfer`, `DataTransferItemList` and
`DataTransferItem`.
([#&#8203;833](https://togithub.com/capricorn86/happy-dom/issues/833))
- Adds `MutationRecord` class to `Window` as a property.
([#&#8203;1112](https://togithub.com/capricorn86/happy-dom/issues/1112))

##### 👷‍♂️ Patch fixes

- Restores `HTMLInputElement.checked` state when
`Event.preventDefault()` is called on a dispatched "click" event.

###
[`v12.7.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.7.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.6.0...v12.7.0)

##### 🎨 Features

- Adds support for `Element.scrollWidth`.
([#&#8203;1109](https://togithub.com/capricorn86/happy-dom/issues/1109))

###
[`v12.6.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.6.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.5.1...v12.6.0)

##### 🎨 Features

- Adds support for dispatching a click event on the control element when
clicking on a label.
([#&#8203;1023](https://togithub.com/capricorn86/happy-dom/issues/1023))

###
[`v12.5.1`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.5.1)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.5.0...v12.5.1)

##### 🎨 Features

- Adds support for `DocumentFragment` as a constructor (e.g. `new
DocumentFragment()`).
([#&#8203;940](https://togithub.com/capricorn86/happy-dom/issues/940))

##### 👷‍♂️ Patch fixes

- Fixes issue related to `ownerDocument` being null when executing
`ownerDocument.createElement()` in React 18. The error occurred when
rendering a Radix UI component. The root cause was that React 18 uses
`DocumentFragment` as a constructor which was not supported.
([#&#8203;940](https://togithub.com/capricorn86/happy-dom/issues/940))

###
[`v12.5.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.5.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.4.0...v12.5.0)

##### 🎨 Features

- Add `FocusEvent.relatedTarget` to blur and focus events.
([#&#8203;1094](https://togithub.com/capricorn86/happy-dom/issues/1094))

***

Thank you [@&#8203;artursvonda](https://togithub.com/artursvonda) for
your contribution!

###
[`v12.4.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.4.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.3.0...v12.4.0)

##### 🎨 Features

- Add support for `Document.currentScript`.
([#&#8203;1099](https://togithub.com/capricorn86/happy-dom/issues/1099))

***

Thank you [@&#8203;ckhampus](https://togithub.com/ckhampus) for your
contribution!

###
[`v12.3.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.3.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.2.2...v12.3.0)

##### 🎨 Features

- Uses `vm.Script` for setting globals instead of a string to improve
performance.
([#&#8203;1102](https://togithub.com/capricorn86/happy-dom/issues/1102))

##### 👷‍♂️ Patch fixes

- Improves logic in `Window.happyDOM.whenAsyncComplete()`.
([#&#8203;1102](https://togithub.com/capricorn86/happy-dom/issues/1102))

###
[`v12.2.2`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.2.2)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.2.1...v12.2.2)

##### 👷‍♂️ Patch fixes

- Makes `PointerEvent` implementation more specification compliant.
([#&#8203;1092](https://togithub.com/capricorn86/happy-dom/issues/1092))

***

Thank you [@&#8203;tkrotoff](https://togithub.com/tkrotoff) for your
contribution!

</details>

<details>
<summary>vitejs/vite (vite)</summary>

### [`v4.4.11`](https://togithub.com/vitejs/vite/releases/tag/v4.4.11)

[Compare
Source](https://togithub.com/vitejs/vite/compare/v4.4.10...v4.4.11)

Please refer to
[CHANGELOG.md](https://togithub.com/vitejs/vite/blob/v4.4.11/packages/vite/CHANGELOG.md)
for details.

### [`v4.4.10`](https://togithub.com/vitejs/vite/releases/tag/v4.4.10)

[Compare
Source](https://togithub.com/vitejs/vite/compare/v4.4.9...v4.4.10)

Please refer to
[CHANGELOG.md](https://togithub.com/vitejs/vite/blob/v4.4.10/packages/vite/CHANGELOG.md)
for details.

</details>

<details>
<summary>vuejs/language-tools (vue-tsc)</summary>

###
[`v1.8.16`](https://togithub.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#1816-2023107)

[Compare
Source](https://togithub.com/vuejs/language-tools/compare/v1.8.15...f9e281db3f47f9a3f94c79dbbf81102cba01eb5d)

- fix: merge default export's properties properly
([#&#8203;3600](https://togithub.com/vuejs/language-tools/issues/3600))
- thanks [@&#8203;so1ve](https://togithub.com/so1ve)
- fix: accurate exposed type with refs in generic component
([#&#8203;3604](https://togithub.com/vuejs/language-tools/issues/3604))
- thanks [@&#8203;so1ve](https://togithub.com/so1ve)
- fix: make emits type correct when user assigns emit function a custom
name
([#&#8203;3624](https://togithub.com/vuejs/language-tools/issues/3624))
- thanks [@&#8203;so1ve](https://togithub.com/so1ve)

##### Volar.js 1.10.3 updates:

- fix: performance issue with o(n^2) complexity of `directoryExists()`
([volarjs/volar.js#66)
- thanks [@&#8203;Akryum](https://togithub.com/Akryum)
- fix: directory named "constructor" could crash
([volarjs/volar.js#65)
- thanks [@&#8203;Dmitrigar](https://togithub.com/Dmitrigar),
[@&#8203;franz-bendezu](https://togithub.com/franz-bendezu)

##### Full-time Support by

<table>
<tbody>
  <tr>
    <td>
<a href="https://stackblitz.com/"><img
src="https://raw.githubusercontent.com/vuejs/language-tools/HEAD/.github/sponsors/StackBlitz.png"
height="80" /></a>
	</td>
<td><h4><a
href="https://blog.stackblitz.com/posts/webcontainer-api-is-here/">WebContainer
API is here.</a></h4></td>
  </tr>
</tbody>
</table>

##### Our Platinum Sponsors

<table>
<tbody>
  <tr>
    <td>
<a href="https://nuxt.com/"><img
src="https://raw.githubusercontent.com/vuejs/language-tools/HEAD/.github/sponsors/nuxt.svg"
height="60" /></a>
	</td>
    <td>The Intuitive Web Framework</td>
  </tr>
  <tr>
    <td>
<a href="https://vuejs.org/"><img
src="https://raw.githubusercontent.com/vuejs/language-tools/HEAD/.github/sponsors/vue.png"
height="80" /></a>
	</td>
    <td>The Progressive JavaScript Framework</td>
  </tr>
</tbody>
</table>

##### Our Silver Sponsors

<table>
<tbody>
  <tr>
    <td>
		<p align="center">
<a href="https://www.prefect.io/"><img
src="https://raw.githubusercontent.com/vuejs/language-tools/HEAD/.github/sponsors/prefect.svg"
height="40" /></a>
</p>
	</td>
  </tr>
</tbody>
</table>

<h5>
	Add you via
<a href="https://togithub.com/sponsors/johnsoncodehk">GitHub
Sponsors</a>
	or
	<a href="https://opencollective.com/volarjs">Open Collective</a>
</h5>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" in timezone
Europe/Helsinki, 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://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

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

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/slipmatio/logger).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4wLjMiLCJ1cGRhdGVkSW5WZXIiOiIzNy4wLjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIn0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate bot added a commit to slipmatio/toolbelt that referenced this pull request Oct 9, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[@types/node](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node)
([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped)) |
[`20.7.2` ->
`20.8.3`](https://renovatebot.com/diffs/npm/@types%2fnode/20.7.2/20.8.3)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/20.8.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/20.8.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/20.7.2/20.8.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/20.7.2/20.8.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@vitejs/plugin-vue](https://togithub.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#readme)
([source](https://togithub.com/vitejs/vite-plugin-vue)) | [`4.3.4` ->
`4.4.0`](https://renovatebot.com/diffs/npm/@vitejs%2fplugin-vue/4.3.4/4.4.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@vitejs%2fplugin-vue/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitejs%2fplugin-vue/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitejs%2fplugin-vue/4.3.4/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitejs%2fplugin-vue/4.3.4/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [happy-dom](https://togithub.com/capricorn86/happy-dom) | [`12.2.1` ->
`12.9.0`](https://renovatebot.com/diffs/npm/happy-dom/12.2.1/12.9.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/happy-dom/12.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/happy-dom/12.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/happy-dom/12.2.1/12.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/happy-dom/12.2.1/12.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [vite](https://togithub.com/vitejs/vite/tree/main/#readme)
([source](https://togithub.com/vitejs/vite)) | [`4.4.9` ->
`4.4.11`](https://renovatebot.com/diffs/npm/vite/4.4.9/4.4.11) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vite/4.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vite/4.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vite/4.4.9/4.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite/4.4.9/4.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [vue-tsc](https://togithub.com/vuejs/language-tools) | [`1.8.15` ->
`1.8.16`](https://renovatebot.com/diffs/npm/vue-tsc/1.8.15/1.8.16) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vue-tsc/1.8.16?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vue-tsc/1.8.16?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vue-tsc/1.8.15/1.8.16?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vue-tsc/1.8.15/1.8.16?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>vitejs/vite-plugin-vue (@&#8203;vitejs/plugin-vue)</summary>

###
[`v4.4.0`](https://togithub.com/vitejs/vite-plugin-vue/blob/HEAD/packages/plugin-vue/CHANGELOG.md#440-2023-10-02)

- fix(plugin-vue): re-create filters after updating options
([#&#8203;246](https://togithub.com/vitejs/vite-plugin-vue/issues/246))
([c383503](https://togithub.com/vitejs/vite-plugin-vue/commit/c383503)),
closes
[#&#8203;246](https://togithub.com/vitejs/vite-plugin-vue/issues/246)
- feat: support generated JS imports for external scoped style
([#&#8203;196](https://togithub.com/vitejs/vite-plugin-vue/issues/196))
([bd5055d](https://togithub.com/vitejs/vite-plugin-vue/commit/bd5055d)),
closes
[#&#8203;196](https://togithub.com/vitejs/vite-plugin-vue/issues/196)
- chore: add `@ts-ignore` when accessing
`legacy?.buildSsrCjsExternalHeuristics`
([#&#8203;255](https://togithub.com/vitejs/vite-plugin-vue/issues/255))
([04c3b0b](https://togithub.com/vitejs/vite-plugin-vue/commit/04c3b0b)),
closes
[#&#8203;255](https://togithub.com/vitejs/vite-plugin-vue/issues/255)
- refactor(plugin-vue): deprecate reactivity transform
([38f8ea5](https://togithub.com/vitejs/vite-plugin-vue/commit/38f8ea5))
- refactor(plugin-vue): use source-map-js
([#&#8203;247](https://togithub.com/vitejs/vite-plugin-vue/issues/247))
([b43690d](https://togithub.com/vitejs/vite-plugin-vue/commit/b43690d)),
closes
[#&#8203;247](https://togithub.com/vitejs/vite-plugin-vue/issues/247)

</details>

<details>
<summary>capricorn86/happy-dom (happy-dom)</summary>

###
[`v12.9.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.9.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.8.1...v12.9.0)

##### 🎨 Features

- Improves performance of the async task manager. This will improve
performance of timers in general as they have less logic executed
related to the async task manager.
([#&#8203;1114](https://togithub.com/capricorn86/happy-dom/issues/1114))

###
[`v12.8.1`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.8.1)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.8.0...v12.8.1)

##### 👷‍♂️ Patch fixes

- Adds missing second parameter in callbacks from `MutationObserver`.
([#&#8203;1113](https://togithub.com/capricorn86/happy-dom/issues/1113))

***

Thank you [@&#8203;wojtekmaj](https://togithub.com/wojtekmaj) for your
contribution!

###
[`v12.8.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.8.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.7.0...v12.8.0)

##### 🎨 Features

- Adds support for `Clipboard`, `ClipboardItem`, `Permissions` and
`PermissionStatus`, which are used by the `Window.navigator.clipboard`
and `Window.navigator.permissions` properties.
([#&#8203;833](https://togithub.com/capricorn86/happy-dom/issues/833))
- Adds support for `ClipboardEvent`.
([#&#8203;833](https://togithub.com/capricorn86/happy-dom/issues/833))
- Improves support for `DataTransfer`, `DataTransferItemList` and
`DataTransferItem`.
([#&#8203;833](https://togithub.com/capricorn86/happy-dom/issues/833))
- Adds `MutationRecord` class to `Window` as a property.
([#&#8203;1112](https://togithub.com/capricorn86/happy-dom/issues/1112))

##### 👷‍♂️ Patch fixes

- Restores `HTMLInputElement.checked` state when
`Event.preventDefault()` is called on a dispatched "click" event.

###
[`v12.7.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.7.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.6.0...v12.7.0)

##### 🎨 Features

- Adds support for `Element.scrollWidth`.
([#&#8203;1109](https://togithub.com/capricorn86/happy-dom/issues/1109))

###
[`v12.6.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.6.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.5.1...v12.6.0)

##### 🎨 Features

- Adds support for dispatching a click event on the control element when
clicking on a label.
([#&#8203;1023](https://togithub.com/capricorn86/happy-dom/issues/1023))

###
[`v12.5.1`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.5.1)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.5.0...v12.5.1)

##### 🎨 Features

- Adds support for `DocumentFragment` as a constructor (e.g. `new
DocumentFragment()`).
([#&#8203;940](https://togithub.com/capricorn86/happy-dom/issues/940))

##### 👷‍♂️ Patch fixes

- Fixes issue related to `ownerDocument` being null when executing
`ownerDocument.createElement()` in React 18. The error occurred when
rendering a Radix UI component. The root cause was that React 18 uses
`DocumentFragment` as a constructor which was not supported.
([#&#8203;940](https://togithub.com/capricorn86/happy-dom/issues/940))

###
[`v12.5.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.5.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.4.0...v12.5.0)

##### 🎨 Features

- Add `FocusEvent.relatedTarget` to blur and focus events.
([#&#8203;1094](https://togithub.com/capricorn86/happy-dom/issues/1094))

***

Thank you [@&#8203;artursvonda](https://togithub.com/artursvonda) for
your contribution!

###
[`v12.4.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.4.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.3.0...v12.4.0)

##### 🎨 Features

- Add support for `Document.currentScript`.
([#&#8203;1099](https://togithub.com/capricorn86/happy-dom/issues/1099))

***

Thank you [@&#8203;ckhampus](https://togithub.com/ckhampus) for your
contribution!

###
[`v12.3.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.3.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.2.2...v12.3.0)

##### 🎨 Features

- Uses `vm.Script` for setting globals instead of a string to improve
performance.
([#&#8203;1102](https://togithub.com/capricorn86/happy-dom/issues/1102))

##### 👷‍♂️ Patch fixes

- Improves logic in `Window.happyDOM.whenAsyncComplete()`.
([#&#8203;1102](https://togithub.com/capricorn86/happy-dom/issues/1102))

###
[`v12.2.2`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.2.2)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.2.1...v12.2.2)

##### 👷‍♂️ Patch fixes

- Makes `PointerEvent` implementation more specification compliant.
([#&#8203;1092](https://togithub.com/capricorn86/happy-dom/issues/1092))

***

Thank you [@&#8203;tkrotoff](https://togithub.com/tkrotoff) for your
contribution!

</details>

<details>
<summary>vitejs/vite (vite)</summary>

### [`v4.4.11`](https://togithub.com/vitejs/vite/releases/tag/v4.4.11)

[Compare
Source](https://togithub.com/vitejs/vite/compare/v4.4.10...v4.4.11)

Please refer to
[CHANGELOG.md](https://togithub.com/vitejs/vite/blob/v4.4.11/packages/vite/CHANGELOG.md)
for details.

### [`v4.4.10`](https://togithub.com/vitejs/vite/releases/tag/v4.4.10)

[Compare
Source](https://togithub.com/vitejs/vite/compare/v4.4.9...v4.4.10)

Please refer to
[CHANGELOG.md](https://togithub.com/vitejs/vite/blob/v4.4.10/packages/vite/CHANGELOG.md)
for details.

</details>

<details>
<summary>vuejs/language-tools (vue-tsc)</summary>

###
[`v1.8.16`](https://togithub.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#1816-2023107)

[Compare
Source](https://togithub.com/vuejs/language-tools/compare/v1.8.15...f9e281db3f47f9a3f94c79dbbf81102cba01eb5d)

- fix: merge default export's properties properly
([#&#8203;3600](https://togithub.com/vuejs/language-tools/issues/3600))
- thanks [@&#8203;so1ve](https://togithub.com/so1ve)
- fix: accurate exposed type with refs in generic component
([#&#8203;3604](https://togithub.com/vuejs/language-tools/issues/3604))
- thanks [@&#8203;so1ve](https://togithub.com/so1ve)
- fix: make emits type correct when user assigns emit function a custom
name
([#&#8203;3624](https://togithub.com/vuejs/language-tools/issues/3624))
- thanks [@&#8203;so1ve](https://togithub.com/so1ve)

##### Volar.js 1.10.3 updates:

- fix: performance issue with o(n^2) complexity of `directoryExists()`
([volarjs/volar.js#66)
- thanks [@&#8203;Akryum](https://togithub.com/Akryum)
- fix: directory named "constructor" could crash
([volarjs/volar.js#65)
- thanks [@&#8203;Dmitrigar](https://togithub.com/Dmitrigar),
[@&#8203;franz-bendezu](https://togithub.com/franz-bendezu)

##### Full-time Support by

<table>
<tbody>
  <tr>
    <td>
<a href="https://stackblitz.com/"><img
src="https://raw.githubusercontent.com/vuejs/language-tools/HEAD/.github/sponsors/StackBlitz.png"
height="80" /></a>
	</td>
<td><h4><a
href="https://blog.stackblitz.com/posts/webcontainer-api-is-here/">WebContainer
API is here.</a></h4></td>
  </tr>
</tbody>
</table>

##### Our Platinum Sponsors

<table>
<tbody>
  <tr>
    <td>
<a href="https://nuxt.com/"><img
src="https://raw.githubusercontent.com/vuejs/language-tools/HEAD/.github/sponsors/nuxt.svg"
height="60" /></a>
	</td>
    <td>The Intuitive Web Framework</td>
  </tr>
  <tr>
    <td>
<a href="https://vuejs.org/"><img
src="https://raw.githubusercontent.com/vuejs/language-tools/HEAD/.github/sponsors/vue.png"
height="80" /></a>
	</td>
    <td>The Progressive JavaScript Framework</td>
  </tr>
</tbody>
</table>

##### Our Silver Sponsors

<table>
<tbody>
  <tr>
    <td>
		<p align="center">
<a href="https://www.prefect.io/"><img
src="https://raw.githubusercontent.com/vuejs/language-tools/HEAD/.github/sponsors/prefect.svg"
height="40" /></a>
</p>
	</td>
  </tr>
</tbody>
</table>

<h5>
	Add you via
<a href="https://togithub.com/sponsors/johnsoncodehk">GitHub
Sponsors</a>
	or
	<a href="https://opencollective.com/volarjs">Open Collective</a>
</h5>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" in timezone
Europe/Helsinki, 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://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

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

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/slipmatio/toolbelt).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4wLjMiLCJ1cGRhdGVkSW5WZXIiOiIzNy4wLjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIn0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate bot added a commit to slipmatio/ui that referenced this pull request Oct 16, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@playwright/test](https://playwright.dev)
([source](https://togithub.com/microsoft/playwright)) | [`1.38.1` ->
`1.39.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.38.1/1.39.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.38.1/1.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.38.1/1.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@types/node](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node)
([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped)) |
[`20.7.2` ->
`20.8.6`](https://renovatebot.com/diffs/npm/@types%2fnode/20.7.2/20.8.6)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/20.8.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/20.8.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/20.7.2/20.8.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/20.7.2/20.8.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@vitejs/plugin-vue](https://togithub.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#readme)
([source](https://togithub.com/vitejs/vite-plugin-vue)) | [`4.3.4` ->
`4.4.0`](https://renovatebot.com/diffs/npm/@vitejs%2fplugin-vue/4.3.4/4.4.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@vitejs%2fplugin-vue/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitejs%2fplugin-vue/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitejs%2fplugin-vue/4.3.4/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitejs%2fplugin-vue/4.3.4/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [happy-dom](https://togithub.com/capricorn86/happy-dom) | [`12.2.1` ->
`12.9.1`](https://renovatebot.com/diffs/npm/happy-dom/12.2.1/12.9.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/happy-dom/12.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/happy-dom/12.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/happy-dom/12.2.1/12.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/happy-dom/12.2.1/12.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [vite](https://togithub.com/vitejs/vite/tree/main/#readme)
([source](https://togithub.com/vitejs/vite)) | [`4.4.9` ->
`4.4.11`](https://renovatebot.com/diffs/npm/vite/4.4.9/4.4.11) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vite/4.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vite/4.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vite/4.4.9/4.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite/4.4.9/4.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [vue-tsc](https://togithub.com/vuejs/language-tools) | [`1.8.15` ->
`1.8.19`](https://renovatebot.com/diffs/npm/vue-tsc/1.8.15/1.8.19) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vue-tsc/1.8.19?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vue-tsc/1.8.19?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vue-tsc/1.8.15/1.8.19?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vue-tsc/1.8.15/1.8.19?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>microsoft/playwright (@&#8203;playwright/test)</summary>

###
[`v1.39.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.39.0)

[Compare
Source](https://togithub.com/microsoft/playwright/compare/v1.38.1...v1.39.0)

#### Add custom matchers to your expect

You can extend Playwright assertions by providing custom matchers. These
matchers will be available on the expect object.

```js
import { expect as baseExpect } from '@&#8203;playwright/test';
export const expect = baseExpect.extend({
  async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) {
    // ... see documentation for how to write matchers.
  },
});

test('pass', async ({ page }) => {
  await expect(page.getByTestId('cart')).toHaveAmount(5);
});
```

See the documentation [for a full
example](https://playwright.dev/docs/test-configuration#add-custom-matchers-using-expectextend).

#### Merge test fixtures

You can now merge test fixtures from multiple files or modules:

```js
import { mergeTests } from '@&#8203;playwright/test';
import { test as dbTest } from 'database-test-utils';
import { test as a11yTest } from 'a11y-test-utils';

export const test = mergeTests(dbTest, a11yTest);
```

```js
import { test } from './fixtures';

test('passes', async ({ database, page, a11y }) => {
  // use database and a11y fixtures.
});
```

#### Merge custom expect matchers

You can now merge custom expect matchers from multiple files or modules:

```js
import { mergeTests, mergeExpects } from '@&#8203;playwright/test';
import { test as dbTest, expect as dbExpect } from 'database-test-utils';
import { test as a11yTest, expect as a11yExpect } from 'a11y-test-utils';

export const test = mergeTests(dbTest, a11yTest);
export const expect = mergeExpects(dbExpect, a11yExpect);
```

```js
import { test, expect } from './fixtures';

test('passes', async ({ page, database }) => {
  await expect(database).toHaveDatabaseUser('admin');
  await expect(page).toPassA11yAudit();
});
```

#### Hide implementation details: box test steps

You can mark a
[`test.step()`](https://playwright.dev/docs/api/class-test#test-step) as
"boxed" so that errors inside it point to the step call site.

```js
async function login(page) {
  await test.step('login', async () => {
    // ...
  }, { box: true });  // Note the "box" option here.
}
```

```txt
Error: Timed out 5000ms waiting for expect(locator).toBeVisible()
  ... error details omitted ...

  14 |   await page.goto('https://github.com/login');
> 15 |   await login(page);
     |         ^
  16 | });
```

See
[`test.step()`](https://playwright.dev/docs/api/class-test#test-step)
documentation for a full example.

#### New APIs

-
[`expect(locator).toHaveAttribute(name)`](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-attribute-2)

#### Browser Versions

-   Chromium 119.0.6045.9
-   Mozilla Firefox 118.0.1
-   WebKit 17.4

This version was also tested against the following stable channels:

-   Google Chrome 118
-   Microsoft Edge 118

</details>

<details>
<summary>vitejs/vite-plugin-vue (@&#8203;vitejs/plugin-vue)</summary>

###
[`v4.4.0`](https://togithub.com/vitejs/vite-plugin-vue/blob/HEAD/packages/plugin-vue/CHANGELOG.md#440-2023-10-02)

- fix(plugin-vue): re-create filters after updating options
([#&#8203;246](https://togithub.com/vitejs/vite-plugin-vue/issues/246))
([c383503](https://togithub.com/vitejs/vite-plugin-vue/commit/c383503)),
closes
[#&#8203;246](https://togithub.com/vitejs/vite-plugin-vue/issues/246)
- feat: support generated JS imports for external scoped style
([#&#8203;196](https://togithub.com/vitejs/vite-plugin-vue/issues/196))
([bd5055d](https://togithub.com/vitejs/vite-plugin-vue/commit/bd5055d)),
closes
[#&#8203;196](https://togithub.com/vitejs/vite-plugin-vue/issues/196)
- chore: add `@ts-ignore` when accessing
`legacy?.buildSsrCjsExternalHeuristics`
([#&#8203;255](https://togithub.com/vitejs/vite-plugin-vue/issues/255))
([04c3b0b](https://togithub.com/vitejs/vite-plugin-vue/commit/04c3b0b)),
closes
[#&#8203;255](https://togithub.com/vitejs/vite-plugin-vue/issues/255)
- refactor(plugin-vue): deprecate reactivity transform
([38f8ea5](https://togithub.com/vitejs/vite-plugin-vue/commit/38f8ea5))
- refactor(plugin-vue): use source-map-js
([#&#8203;247](https://togithub.com/vitejs/vite-plugin-vue/issues/247))
([b43690d](https://togithub.com/vitejs/vite-plugin-vue/commit/b43690d)),
closes
[#&#8203;247](https://togithub.com/vitejs/vite-plugin-vue/issues/247)

</details>

<details>
<summary>capricorn86/happy-dom (happy-dom)</summary>

###
[`v12.9.1`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.9.1)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.9.0...v12.9.1)

##### 👷‍♂️ Patch fixes

- Fixes typo in documentation.
([#&#8203;1123](https://togithub.com/capricorn86/happy-dom/issues/1123))

***

Thank you [@&#8203;goring](https://togithub.com/goring) for your
contribution!

###
[`v12.9.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.9.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.8.1...v12.9.0)

##### 🎨 Features

- Improves performance of the async task manager. This will improve
performance of timers in general as they have less logic executed
related to the async task manager.
([#&#8203;1114](https://togithub.com/capricorn86/happy-dom/issues/1114))

###
[`v12.8.1`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.8.1)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.8.0...v12.8.1)

##### 👷‍♂️ Patch fixes

- Adds missing second parameter in callbacks from `MutationObserver`.
([#&#8203;1113](https://togithub.com/capricorn86/happy-dom/issues/1113))

***

Thank you [@&#8203;wojtekmaj](https://togithub.com/wojtekmaj) for your
contribution!

###
[`v12.8.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.8.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.7.0...v12.8.0)

##### 🎨 Features

- Adds support for `Clipboard`, `ClipboardItem`, `Permissions` and
`PermissionStatus`, which are used by the `Window.navigator.clipboard`
and `Window.navigator.permissions` properties.
([#&#8203;833](https://togithub.com/capricorn86/happy-dom/issues/833))
- Adds support for `ClipboardEvent`.
([#&#8203;833](https://togithub.com/capricorn86/happy-dom/issues/833))
- Improves support for `DataTransfer`, `DataTransferItemList` and
`DataTransferItem`.
([#&#8203;833](https://togithub.com/capricorn86/happy-dom/issues/833))
- Adds `MutationRecord` class to `Window` as a property.
([#&#8203;1112](https://togithub.com/capricorn86/happy-dom/issues/1112))

##### 👷‍♂️ Patch fixes

- Restores `HTMLInputElement.checked` state when
`Event.preventDefault()` is called on a dispatched "click" event.

###
[`v12.7.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.7.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.6.0...v12.7.0)

##### 🎨 Features

- Adds support for `Element.scrollWidth`.
([#&#8203;1109](https://togithub.com/capricorn86/happy-dom/issues/1109))

###
[`v12.6.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.6.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.5.1...v12.6.0)

##### 🎨 Features

- Adds support for dispatching a click event on the control element when
clicking on a label.
([#&#8203;1023](https://togithub.com/capricorn86/happy-dom/issues/1023))

###
[`v12.5.1`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.5.1)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.5.0...v12.5.1)

##### 🎨 Features

- Adds support for `DocumentFragment` as a constructor (e.g. `new
DocumentFragment()`).
([#&#8203;940](https://togithub.com/capricorn86/happy-dom/issues/940))

##### 👷‍♂️ Patch fixes

- Fixes issue related to `ownerDocument` being null when executing
`ownerDocument.createElement()` in React 18. The error occurred when
rendering a Radix UI component. The root cause was that React 18 uses
`DocumentFragment` as a constructor which was not supported.
([#&#8203;940](https://togithub.com/capricorn86/happy-dom/issues/940))

###
[`v12.5.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.5.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.4.0...v12.5.0)

##### 🎨 Features

- Add `FocusEvent.relatedTarget` to blur and focus events.
([#&#8203;1094](https://togithub.com/capricorn86/happy-dom/issues/1094))

***

Thank you [@&#8203;artursvonda](https://togithub.com/artursvonda) for
your contribution!

###
[`v12.4.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.4.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.3.0...v12.4.0)

##### 🎨 Features

- Add support for `Document.currentScript`.
([#&#8203;1099](https://togithub.com/capricorn86/happy-dom/issues/1099))

***

Thank you [@&#8203;ckhampus](https://togithub.com/ckhampus) for your
contribution!

###
[`v12.3.0`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.3.0)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.2.2...v12.3.0)

##### 🎨 Features

- Uses `vm.Script` for setting globals instead of a string to improve
performance.
([#&#8203;1102](https://togithub.com/capricorn86/happy-dom/issues/1102))

##### 👷‍♂️ Patch fixes

- Improves logic in `Window.happyDOM.whenAsyncComplete()`.
([#&#8203;1102](https://togithub.com/capricorn86/happy-dom/issues/1102))

###
[`v12.2.2`](https://togithub.com/capricorn86/happy-dom/releases/tag/v12.2.2)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v12.2.1...v12.2.2)

##### 👷‍♂️ Patch fixes

- Makes `PointerEvent` implementation more specification compliant.
([#&#8203;1092](https://togithub.com/capricorn86/happy-dom/issues/1092))

***

Thank you [@&#8203;tkrotoff](https://togithub.com/tkrotoff) for your
contribution!

</details>

<details>
<summary>vitejs/vite (vite)</summary>

### [`v4.4.11`](https://togithub.com/vitejs/vite/releases/tag/v4.4.11)

[Compare
Source](https://togithub.com/vitejs/vite/compare/v4.4.10...v4.4.11)

Please refer to
[CHANGELOG.md](https://togithub.com/vitejs/vite/blob/v4.4.11/packages/vite/CHANGELOG.md)
for details.

### [`v4.4.10`](https://togithub.com/vitejs/vite/releases/tag/v4.4.10)

[Compare
Source](https://togithub.com/vitejs/vite/compare/v4.4.9...v4.4.10)

Please refer to
[CHANGELOG.md](https://togithub.com/vitejs/vite/blob/v4.4.10/packages/vite/CHANGELOG.md)
for details.

</details>

<details>
<summary>vuejs/language-tools (vue-tsc)</summary>

###
[`v1.8.19`](https://togithub.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#1819-20231011)

[Compare
Source](https://togithub.com/vuejs/language-tools/compare/46ef0d608f43569a8e370d1105bfcf334fcaec13...2e17f3c9cfa827c71e1ed07331730b3ee2596b76)

- feat: no longer checking save time
([#&#8203;3650](https://togithub.com/vuejs/language-tools/issues/3650))
- fix(ts-plugin): tsserver doesnt have updated list of external files
when new vue files are added (required TS 5.3)
([#&#8203;3555](https://togithub.com/vuejs/language-tools/issues/3555))
([#&#8203;3649](https://togithub.com/vuejs/language-tools/issues/3649))
- fix: false positive error when accessing local variables in
defineProps parameter
([#&#8203;3643](https://togithub.com/vuejs/language-tools/issues/3643))
([#&#8203;3644](https://togithub.com/vuejs/language-tools/issues/3644))
- thanks [@&#8203;so1ve](https://togithub.com/so1ve)

##### Full-time Support by

<table>
<tbody>
  <tr>
    <td>
<a href="https://stackblitz.com/"><img
src="https://raw.githubusercontent.com/vuejs/language-tools/HEAD/.github/sponsors/StackBlitz.png"
height="80" /></a>
	</td>
<td><h4><a
href="https://blog.stackblitz.com/posts/webcontainer-api-is-here/">WebContainer
API is here.</a></h4></td>
  </tr>
</tbody>
</table>

##### Our Platinum Sponsors

<table>
<tbody>
  <tr>
    <td>
<a href="https://nuxt.com/"><img
src="https://raw.githubusercontent.com/vuejs/language-tools/HEAD/.github/sponsors/nuxt.svg"
height="60" /></a>
	</td>
    <td>The Intuitive Web Framework</td>
  </tr>
  <tr>
    <td>
<a href="https://vuejs.org/"><img
src="https://raw.githubusercontent.com/vuejs/language-tools/HEAD/.github/sponsors/vue.png"
height="80" /></a>
	</td>
    <td>The Progressive JavaScript Framework</td>
  </tr>
</tbody>
</table>

##### Our Silver Sponsors

<table>
<tbody>
  <tr>
    <td>
		<p align="center">
<a href="https://www.prefect.io/"><img
src="https://raw.githubusercontent.com/vuejs/language-tools/HEAD/.github/sponsors/prefect.svg"
height="40" /></a>
</p>
	</td>
  </tr>
</tbody>
</table>

<h5>
	Add you via
<a href="https://togithub.com/sponsors/johnsoncodehk">GitHub
Sponsors</a>
	or
	<a href="https://opencollective.com/volarjs">Open Collective</a>
</h5>

###
[`v1.8.18`](https://togithub.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#1818-2023109)

[Compare
Source](https://togithub.com/vuejs/language-tools/compare/v1.8.17...46ef0d608f43569a8e370d1105bfcf334fcaec13)

##### Upgrade required VSCode version to 1.82.0
([#&#8203;3642](https://togithub.com/vuejs/language-tools/issues/3642))

###
[`v1.8.17`](https://togithub.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#1817-2023109)

[Compare
Source](https://togithub.com/vuejs/language-tools/compare/f9e281db3f47f9a3f94c79dbbf81102cba01eb5d...v1.8.17)

- fix: extension cannot run on vscode versions lower than 1.82.0
([#&#8203;3631](https://togithub.com/vuejs/language-tools/issues/3631))
([#&#8203;3635](https://togithub.com/vuejs/language-tools/issues/3635))
- fix: make `defineProps` work when reading a property from
`defineProps()`
([#&#8203;3633](https://togithub.com/vuejs/language-tools/issues/3633))
- thanks [@&#8203;so1ve](https://togithub.com/so1ve)
- fix: avoid reading `props` from `__VLS_ctx`
([#&#8203;3636](https://togithub.com/vuejs/language-tools/issues/3636))
- thanks [@&#8203;so1ve](https://togithub.com/so1ve)
- fix: regression with `defineExpose`
([#&#8203;3639](https://togithub.com/vuejs/language-tools/issues/3639))
- thanks [@&#8203;so1ve](https://togithub.com/so1ve)

###
[`v1.8.16`](https://togithub.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#1816-2023107)

[Compare
Source](https://togithub.com/vuejs/language-tools/compare/v1.8.15...f9e281db3f47f9a3f94c79dbbf81102cba01eb5d)

- fix: merge default export's properties properly
([#&#8203;3600](https://togithub.com/vuejs/language-tools/issues/3600))
- thanks [@&#8203;so1ve](https://togithub.com/so1ve)
- fix: accurate exposed type with refs in generic component
([#&#8203;3604](https://togithub.com/vuejs/language-tools/issues/3604))
- thanks [@&#8203;so1ve](https://togithub.com/so1ve)
- fix: make emits type correct when user assigns emit function a custom
name
([#&#8203;3624](https://togithub.com/vuejs/language-tools/issues/3624))
- thanks [@&#8203;so1ve](https://togithub.com/so1ve)

##### Volar.js 1.10.3 updates:

- fix: performance issue with o(n^2) complexity of `directoryExists()`
([volarjs/volar.js#66)
- thanks [@&#8203;Akryum](https://togithub.com/Akryum)
- fix: directory named "constructor" could crash
([volarjs/volar.js#65)
- thanks [@&#8203;Dmitrigar](https://togithub.com/Dmitrigar),
[@&#8203;franz-bendezu](https://togithub.com/franz-bendezu)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" in timezone
Europe/Helsinki, 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://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

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

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/slipmatio/ui).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xOS4yIiwidXBkYXRlZEluVmVyIjoiMzcuMTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants