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: avoid random ENOTEMPTY errors #2620

Merged
merged 1 commit into from
Jan 6, 2023

Conversation

AriPerkkio
Copy link
Member

  • Helps preventing crashes where C8 provider causes ENOTEMPTY crashes. Mostly seen on Vitest's CI.

I think the root cause is that require("v8").takeCoverage() keeps writing the results to file system, and at the same time Vitest is trying to clean the directory. The directory may contain results from earlier run, or it is just being cleaned (#2144). Running require("v8").stopCoverage() before removing the directory does not help. To be honest I've never seen stopCoverage working correctly.

I can reproduce the CI failures locally by running test/coverage-tests in loop. After ~5-7 pnpm test runs the process crashes exactly as it does on CI.

async function runTests() {
for (const threads of [true, false]) {

 async function runTests() {
+  for (const [index] of Array(1000).fill(null).entries()) {
+    console.log('Round', index)
    for (const threads of [true, false]) {

After these changes I can run the pnpm test ~50 times in row, and then Node crashes with some random OOM error:

Crash log
$ node -v
v19.1.0
<--- Last few GCs --->

[1494:0x118040000]   280602 ms: Mark-sweep 4065.1 (4142.6) -> 4055.8 (4142.2) MB, 82.3 / 0.0 ms  (average mu = 0.271, current mu = 0.112) allocation failure; scavenge might not succeed
[1494:0x118040000]   280705 ms: Mark-sweep 4073.5 (4144.2) -> 4065.2 (4151.7) MB, 98.4 / 0.0 ms  (average mu = 0.156, current mu = 0.047) allocation failure; scavenge might not succeed


<--- JS stacktrace --->

FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
 1: 0x1011a6c88 node::Abort() [/opt/homebrew/Cellar/node/19.1.0/bin/node]
 2: 0x1011a7f54 node::ModifyCodeGenerationFromStrings(v8::Local<v8::Context>, v8::Local<v8::Value>, bool) [/opt/homebrew/Cellar/node/19.1.0/bin/node]
 3: 0x101301648 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [/opt/homebrew/Cellar/node/19.1.0/bin/node]
 4: 0x1013015f4 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [/opt/homebrew/Cellar/node/19.1.0/bin/node]
 5: 0x101499678 v8::internal::Heap::GarbageCollectionReasonToString(v8::internal::GarbageCollectionReason) [/opt/homebrew/Cellar/node/19.1.0/bin/node]
 6: 0x101498ff0 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/opt/homebrew/Cellar/node/19.1.0/bin/node]
 7: 0x10148ea4c v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/opt/homebrew/Cellar/node/19.1.0/bin/node]
 8: 0x10148f1ac v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/opt/homebrew/Cellar/node/19.1.0/bin/node]
 9: 0x1014740bc v8::internal::Factory::NewFillerObject(int, v8::internal::AllocationAlignment, v8::internal::AllocationType, v8::internal::AllocationOrigin) [/opt/homebrew/Cellar/node/19.1.0/bin/node]
10: 0x1017c46b8 v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [/opt/homebrew/Cellar/node/19.1.0/bin/node]
11: 0x10100324c Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit [/opt/homebrew/Cellar/node/19.1.0/bin/node]
12: 0x1302e57a4 
13: 0x130b75ff8 
14: 0x130293fe8 
15: 0x13024c4a4 
16: 0x130d28618 
17: 0x130349f94 
18: 0x100fbb7b4 Builtins_AsyncFunctionAwaitResolveClosure [/opt/homebrew/Cellar/node/19.1.0/bin/node]
19: 0x101055a98 Builtins_PromiseFulfillReactionJob [/opt/homebrew/Cellar/node/19.1.0/bin/node]
20: 0x100facc54 Builtins_RunMicrotasks [/opt/homebrew/Cellar/node/19.1.0/bin/node]
21: 0x100f863c4 Builtins_JSRunMicrotasksEntry [/opt/homebrew/Cellar/node/19.1.0/bin/node]
22: 0x1014207e4 v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) [/opt/homebrew/Cellar/node/19.1.0/bin/node]
23: 0x101420da0 v8::internal::(anonymous namespace)::InvokeWithTryCatch(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) [/opt/homebrew/Cellar/node/19.1.0/bin/node]
24: 0x1014434b0 v8::internal::MicrotaskQueue::RunMicrotasks(v8::internal::Isolate*) [/opt/homebrew/Cellar/node/19.1.0/bin/node]
25: 0x1014432e0 v8::internal::MicrotaskQueue::PerformCheckpointInternal(v8::Isolate*) [/opt/homebrew/Cellar/node/19.1.0/bin/node]
26: 0x1010e0af4 node::InternalCallbackScope::Close() [/opt/homebrew/Cellar/node/19.1.0/bin/node]
27: 0x1011ae01c node::fs::FileHandle::CloseReq::Resolve() [/opt/homebrew/Cellar/node/19.1.0/bin/node]
28: 0x1011aeabc node::fs::FileHandle::ClosePromise()::$_0::__invoke(uv_fs_s*) [/opt/homebrew/Cellar/node/19.1.0/bin/node]
29: 0x1011a0e1c node::MakeLibuvRequestCallback<uv_fs_s, void (*)(uv_fs_s*)>::Wrapper(uv_fs_s*) [/opt/homebrew/Cellar/node/19.1.0/bin/node]
30: 0x10396aff0 uv__work_done [/opt/homebrew/Cellar/libuv/1.44.2/lib/libuv.1.dylib]
31: 0x10396e3c4 uv__async_io [/opt/homebrew/Cellar/libuv/1.44.2/lib/libuv.1.dylib]
32: 0x10397e1e0 uv__io_poll [/opt/homebrew/Cellar/libuv/1.44.2/lib/libuv.1.dylib]
33: 0x10396e7bc uv_run [/opt/homebrew/Cellar/libuv/1.44.2/lib/libuv.1.dylib]
34: 0x1010e18b8 node::SpinEventLoopInternal(node::Environment*) [/opt/homebrew/Cellar/node/19.1.0/bin/node]
35: 0x1011e8348 node::NodeMainInstance::Run(node::ExitCode*, node::Environment*) [/opt/homebrew/Cellar/node/19.1.0/bin/node]
36: 0x1011e7fac node::NodeMainInstance::Run() [/opt/homebrew/Cellar/node/19.1.0/bin/node]
37: 0x10116fcd0 node::LoadSnapshotDataAndRun(node::SnapshotData const**, node::InitializationResultImpl const*) [/opt/homebrew/Cellar/node/19.1.0/bin/node]
38: 0x10116fe30 node::Start(int, char**) [/opt/homebrew/Cellar/node/19.1.0/bin/node]

Improvement can be seen on this CI run which runs coverage tests in loop: https://github.com/AriPerkkio/vitest/actions/runs/3855214382

@sheremet-va sheremet-va merged commit 59766fa into vitest-dev:main Jan 6, 2023
@AriPerkkio AriPerkkio deleted the fix/fs-errors branch January 6, 2023 15:35
renovate bot referenced this pull request in fwouts/previewjs Jan 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 |
|---|---|---|---|---|---|
| [vitest](https://togithub.com/vitest-dev/vitest) | [`^0.26.3` ->
`^0.27.1`](https://renovatebot.com/diffs/npm/vitest/0.26.3/0.27.1) |
[![age](https://badges.renovateapi.com/packages/npm/vitest/0.27.1/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/vitest/0.27.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/vitest/0.27.1/compatibility-slim/0.26.3)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/vitest/0.27.1/confidence-slim/0.26.3)](https://docs.renovatebot.com/merge-confidence/)
|

---

### ⚠ Dependency Lookup Warnings ⚠

Warnings were logged while processing this repo. Please check the
Dependency Dashboard for more information.

---

### Release Notes

<details>
<summary>vitest-dev/vitest</summary>

###
[`v0.27.1`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.27.1)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.27.0...v0.27.1)

#####    🚀 Features

- Show error, when process.exit is called  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2643](https://togithub.com/vitest-dev/vitest/issues/2643)
[<samp>(866f4)</samp>](https://togithub.com/vitest-dev/vitest/commit/866f4494)
- Add more information about unhandler error  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2642](https://togithub.com/vitest-dev/vitest/issues/2642)
[<samp>(1ffb0)</samp>](https://togithub.com/vitest-dev/vitest/commit/1ffb0ef5)
- Display running processes, if vitest closes with timeout  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2633](https://togithub.com/vitest-dev/vitest/issues/2633)
[<samp>(94968)</samp>](https://togithub.com/vitest-dev/vitest/commit/94968a6f)

#####    🐞 Bug Fixes

- Type issue with spyOn method  -  by
[@&#8203;samkevin1](https://togithub.com/samkevin1) in
[https://github.com/vitest-dev/vitest/issues/2365](https://togithub.com/vitest-dev/vitest/issues/2365)
and
[https://github.com/vitest-dev/vitest/issues/2582](https://togithub.com/vitest-dev/vitest/issues/2582)
[<samp>(1aaa7)</samp>](https://togithub.com/vitest-dev/vitest/commit/1aaa79d7)
- Add missing types in TS project when global is true  -  by
[@&#8203;Sneaken](https://togithub.com/Sneaken) in
[https://github.com/vitest-dev/vitest/issues/2631](https://togithub.com/vitest-dev/vitest/issues/2631)
[<samp>(4745e)</samp>](https://togithub.com/vitest-dev/vitest/commit/4745eaa2)
- Always report failed test in junit reporter  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2632](https://togithub.com/vitest-dev/vitest/issues/2632)
[<samp>(83da2)</samp>](https://togithub.com/vitest-dev/vitest/commit/83da2ec4)
- Change Vite root, if test.root is used  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2637](https://togithub.com/vitest-dev/vitest/issues/2637)
[<samp>(efbff)</samp>](https://togithub.com/vitest-dev/vitest/commit/efbff2a2)
- Don't use ownKeys, when interoping a module  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2629](https://togithub.com/vitest-dev/vitest/issues/2629)
[<samp>(a186a)</samp>](https://togithub.com/vitest-dev/vitest/commit/a186a7e1)
- Cut duplicate error in negated toHaveBeenCalled  -  by
[@&#8203;richardboehme](https://togithub.com/richardboehme) in
[https://github.com/vitest-dev/vitest/issues/2638](https://togithub.com/vitest-dev/vitest/issues/2638)
[<samp>(09d62)</samp>](https://togithub.com/vitest-dev/vitest/commit/09d62226)
- Always update last HMR ms on a module  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va)
[<samp>(99676)</samp>](https://togithub.com/vitest-dev/vitest/commit/9967645a)
- Terminate workers, when closing process  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2645](https://togithub.com/vitest-dev/vitest/issues/2645)
[<samp>(ece43)</samp>](https://togithub.com/vitest-dev/vitest/commit/ece434a3)
-   **coverage**:
- Prevent c8 from crashing on invalid sourcemaps  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/2634](https://togithub.com/vitest-dev/vitest/issues/2634)
[<samp>(0163d)</samp>](https://togithub.com/vitest-dev/vitest/commit/0163dc80)
- Istanbul provider to use `coverage.extension`  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/2641](https://togithub.com/vitest-dev/vitest/issues/2641)
[<samp>(7e388)</samp>](https://togithub.com/vitest-dev/vitest/commit/7e388903)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.27.0...v0.27.1)

###
[`v0.27.0`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.27.0)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.26.3...v0.27.0)

#####    🚨 Breaking Changes

- Deprecate "error" on result, store errors in "errors"  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2586](https://togithub.com/vitest-dev/vitest/issues/2586)
[<samp>(e641a)</samp>](https://togithub.com/vitest-dev/vitest/commit/e641a110)
- Split vitest into separate packages, but still bundle them for the
time being  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2575](https://togithub.com/vitest-dev/vitest/issues/2575)
[<samp>(c8e6f)</samp>](https://togithub.com/vitest-dev/vitest/commit/c8e6fb69)

#####    🚀 Features

- **coverage**: report only changed files when using istanbul coverage
with watch mode  -  by [@&#8203;g4rry420](https://togithub.com/g4rry420)
in
[https://github.com/vitest-dev/vitest/issues/2385](https://togithub.com/vitest-dev/vitest/issues/2385)
[<samp>(bf872)</samp>](https://togithub.com/vitest-dev/vitest/commit/bf87282c)

#####    🐞 Bug Fixes

- Return mock path only when mocked  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2619](https://togithub.com/vitest-dev/vitest/issues/2619)
[<samp>(f8ac2)</samp>](https://togithub.com/vitest-dev/vitest/commit/f8ac2094)
- Allow mocking CJS module with interoped default  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2598](https://togithub.com/vitest-dev/vitest/issues/2598)
[<samp>(6b3e3)</samp>](https://togithub.com/vitest-dev/vitest/commit/6b3e36d4)
- Avoid random ENOTEMPTY errors  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/2620](https://togithub.com/vitest-dev/vitest/issues/2620)
[<samp>(59766)</samp>](https://togithub.com/vitest-dev/vitest/commit/59766fa4)
- Always inline assets and modules with special Vite queries  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2617](https://togithub.com/vitest-dev/vitest/issues/2617)
[<samp>(fed1c)</samp>](https://togithub.com/vitest-dev/vitest/commit/fed1cd60)
-   **cli**:
- Allow overrides reporter via cli option  -  by
[@&#8203;mysteryven](https://togithub.com/mysteryven) and
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2573](https://togithub.com/vitest-dev/vitest/issues/2573)
[<samp>(894f1)</samp>](https://togithub.com/vitest-dev/vitest/commit/894f155a)
-   **coverage**:
- Flaky c8 coverage caused by parallel sourcemap constructing  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) and
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2591](https://togithub.com/vitest-dev/vitest/issues/2591)
[<samp>(9a29f)</samp>](https://togithub.com/vitest-dev/vitest/commit/9a29f984)
- Validate extension, when reporting c8 coverage  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2626](https://togithub.com/vitest-dev/vitest/issues/2626)
[<samp>(74463)</samp>](https://togithub.com/vitest-dev/vitest/commit/7446370c)

#####    🏎 Performance

- Improve vi.mock performance  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2594](https://togithub.com/vitest-dev/vitest/issues/2594)
[<samp>(09d19)</samp>](https://togithub.com/vitest-dev/vitest/commit/09d19892)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.26.3...v0.27.0)

</details>

---

### Configuration

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

🚦 **Automerge**: Enabled.

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

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

---

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

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://app.renovatebot.com/dashboard#github/fwouts/previewjs).

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

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate bot referenced this pull request in Unleash/unleash Jan 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 |
|---|---|---|---|---|---|
| [vitest](https://togithub.com/vitest-dev/vitest) | [`0.26.3` ->
`0.27.0`](https://renovatebot.com/diffs/npm/vitest/0.26.3/0.27.0) |
[![age](https://badges.renovateapi.com/packages/npm/vitest/0.27.0/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/vitest/0.27.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/vitest/0.27.0/compatibility-slim/0.26.3)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/vitest/0.27.0/confidence-slim/0.26.3)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>vitest-dev/vitest</summary>

###
[`v0.27.0`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.27.0)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.26.3...v0.27.0)

#####    🚨 Breaking Changes

- Deprecate "error" on result, store errors in "errors"  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2586](https://togithub.com/vitest-dev/vitest/issues/2586)
[<samp>(e641a)</samp>](https://togithub.com/vitest-dev/vitest/commit/e641a110)
- Split vitest into separate packages, but still bundle them for the
time being  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2575](https://togithub.com/vitest-dev/vitest/issues/2575)
[<samp>(c8e6f)</samp>](https://togithub.com/vitest-dev/vitest/commit/c8e6fb69)

#####    🚀 Features

- **coverage**: report only changed files when using istanbul coverage
with watch mode  -  by [@&#8203;g4rry420](https://togithub.com/g4rry420)
in
[https://github.com/vitest-dev/vitest/issues/2385](https://togithub.com/vitest-dev/vitest/issues/2385)
[<samp>(bf872)</samp>](https://togithub.com/vitest-dev/vitest/commit/bf87282c)

#####    🐞 Bug Fixes

- Return mock path only when mocked  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2619](https://togithub.com/vitest-dev/vitest/issues/2619)
[<samp>(f8ac2)</samp>](https://togithub.com/vitest-dev/vitest/commit/f8ac2094)
- Allow mocking CJS module with interoped default  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2598](https://togithub.com/vitest-dev/vitest/issues/2598)
[<samp>(6b3e3)</samp>](https://togithub.com/vitest-dev/vitest/commit/6b3e36d4)
- Avoid random ENOTEMPTY errors  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/2620](https://togithub.com/vitest-dev/vitest/issues/2620)
[<samp>(59766)</samp>](https://togithub.com/vitest-dev/vitest/commit/59766fa4)
- Always inline assets and modules with special Vite queries  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2617](https://togithub.com/vitest-dev/vitest/issues/2617)
[<samp>(fed1c)</samp>](https://togithub.com/vitest-dev/vitest/commit/fed1cd60)
-   **cli**:
- Allow overrides reporter via cli option  -  by
[@&#8203;mysteryven](https://togithub.com/mysteryven) and
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2573](https://togithub.com/vitest-dev/vitest/issues/2573)
[<samp>(894f1)</samp>](https://togithub.com/vitest-dev/vitest/commit/894f155a)
-   **coverage**:
- Flaky c8 coverage caused by parallel sourcemap constructing  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) and
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2591](https://togithub.com/vitest-dev/vitest/issues/2591)
[<samp>(9a29f)</samp>](https://togithub.com/vitest-dev/vitest/commit/9a29f984)
- Validate extension, when reporting c8 coverage  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2626](https://togithub.com/vitest-dev/vitest/issues/2626)
[<samp>(74463)</samp>](https://togithub.com/vitest-dev/vitest/commit/7446370c)

#####    🏎 Performance

- Improve vi.mock performance  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2594](https://togithub.com/vitest-dev/vitest/issues/2594)
[<samp>(09d19)</samp>](https://togithub.com/vitest-dev/vitest/commit/09d19892)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.26.3...v0.27.0)

</details>

---

### Configuration

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

🚦 **Automerge**: Enabled.

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

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

---

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

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://app.renovatebot.com/dashboard#github/Unleash/unleash).

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

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
andipaetzold referenced this pull request in andipaetzold/react-firehooks Feb 10, 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 |
|---|---|---|---|---|---|
| [@tsconfig/recommended](https://togithub.com/tsconfig/bases) |
[`1.0.1` ->
`1.0.2`](https://renovatebot.com/diffs/npm/@tsconfig%2frecommended/1.0.1/1.0.2)
|
[![age](https://badges.renovateapi.com/packages/npm/@tsconfig%2frecommended/1.0.2/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/@tsconfig%2frecommended/1.0.2/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/@tsconfig%2frecommended/1.0.2/compatibility-slim/1.0.1)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/@tsconfig%2frecommended/1.0.2/confidence-slim/1.0.1)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@types/react](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react)
([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped)) |
[`18.0.26` ->
`18.0.27`](https://renovatebot.com/diffs/npm/@types%2freact/18.0.26/18.0.27)
|
[![age](https://badges.renovateapi.com/packages/npm/@types%2freact/18.0.27/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/@types%2freact/18.0.27/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/@types%2freact/18.0.27/compatibility-slim/18.0.26)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/@types%2freact/18.0.27/confidence-slim/18.0.26)](https://docs.renovatebot.com/merge-confidence/)
|
| [@vitest/coverage-c8](https://togithub.com/vitest-dev/vitest) |
[`0.26.3` ->
`0.28.4`](https://renovatebot.com/diffs/npm/@vitest%2fcoverage-c8/0.26.3/0.28.4)
|
[![age](https://badges.renovateapi.com/packages/npm/@vitest%2fcoverage-c8/0.28.4/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/@vitest%2fcoverage-c8/0.28.4/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/@vitest%2fcoverage-c8/0.28.4/compatibility-slim/0.26.3)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/@vitest%2fcoverage-c8/0.28.4/confidence-slim/0.26.3)](https://docs.renovatebot.com/merge-confidence/)
|
| [happy-dom](https://togithub.com/capricorn86/happy-dom) | [`8.1.1` ->
`8.2.6`](https://renovatebot.com/diffs/npm/happy-dom/8.1.1/8.2.6) |
[![age](https://badges.renovateapi.com/packages/npm/happy-dom/8.2.6/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/happy-dom/8.2.6/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/happy-dom/8.2.6/compatibility-slim/8.1.1)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/happy-dom/8.2.6/confidence-slim/8.1.1)](https://docs.renovatebot.com/merge-confidence/)
|
| [lint-staged](https://togithub.com/okonet/lint-staged) | [`13.1.0` ->
`13.1.1`](https://renovatebot.com/diffs/npm/lint-staged/13.1.0/13.1.1) |
[![age](https://badges.renovateapi.com/packages/npm/lint-staged/13.1.1/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/lint-staged/13.1.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/lint-staged/13.1.1/compatibility-slim/13.1.0)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/lint-staged/13.1.1/confidence-slim/13.1.0)](https://docs.renovatebot.com/merge-confidence/)
|
| [prettier](https://prettier.io)
([source](https://togithub.com/prettier/prettier)) | [`2.8.1` ->
`2.8.4`](https://renovatebot.com/diffs/npm/prettier/2.8.1/2.8.4) |
[![age](https://badges.renovateapi.com/packages/npm/prettier/2.8.4/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/prettier/2.8.4/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/prettier/2.8.4/compatibility-slim/2.8.1)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/prettier/2.8.4/confidence-slim/2.8.1)](https://docs.renovatebot.com/merge-confidence/)
|
|
[semantic-release](https://togithub.com/semantic-release/semantic-release)
| [`20.0.0` ->
`20.1.0`](https://renovatebot.com/diffs/npm/semantic-release/20.0.0/20.1.0)
|
[![age](https://badges.renovateapi.com/packages/npm/semantic-release/20.1.0/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/semantic-release/20.1.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/semantic-release/20.1.0/compatibility-slim/20.0.0)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/semantic-release/20.1.0/confidence-slim/20.0.0)](https://docs.renovatebot.com/merge-confidence/)
|
| [typedoc](https://typedoc.org)
([source](https://togithub.com/TypeStrong/TypeDoc)) | [`0.23.23` ->
`0.23.24`](https://renovatebot.com/diffs/npm/typedoc/0.23.23/0.23.24) |
[![age](https://badges.renovateapi.com/packages/npm/typedoc/0.23.24/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/typedoc/0.23.24/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/typedoc/0.23.24/compatibility-slim/0.23.23)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/typedoc/0.23.24/confidence-slim/0.23.23)](https://docs.renovatebot.com/merge-confidence/)
|
| [typescript](https://www.typescriptlang.org/)
([source](https://togithub.com/Microsoft/TypeScript)) | [`4.9.4` ->
`4.9.5`](https://renovatebot.com/diffs/npm/typescript/4.9.4/4.9.5) |
[![age](https://badges.renovateapi.com/packages/npm/typescript/4.9.5/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/typescript/4.9.5/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/typescript/4.9.5/compatibility-slim/4.9.4)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/typescript/4.9.5/confidence-slim/4.9.4)](https://docs.renovatebot.com/merge-confidence/)
|
| [vitest](https://togithub.com/vitest-dev/vitest) | [`0.26.3` ->
`0.28.4`](https://renovatebot.com/diffs/npm/vitest/0.26.3/0.28.4) |
[![age](https://badges.renovateapi.com/packages/npm/vitest/0.28.4/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/vitest/0.28.4/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/vitest/0.28.4/compatibility-slim/0.26.3)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/vitest/0.28.4/confidence-slim/0.26.3)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>vitest-dev/vitest</summary>

###
[`v0.28.4`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.28.4)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.28.3...v0.28.4)

#####    🐞 Bug Fixes

- Setup correct utils inside asymmetric matchers  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2768](https://togithub.com/vitest-dev/vitest/issues/2768)
[<samp>(415c8)</samp>](https://togithub.com/vitest-dev/vitest/commit/415c8a93)
- Cjs exports has Object.prototype instead of null  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2769](https://togithub.com/vitest-dev/vitest/issues/2769)
[<samp>(4fc49)</samp>](https://togithub.com/vitest-dev/vitest/commit/4fc492c6)
- Duplicate callbacks in vite-node HMR  -  by
[@&#8203;jgoux](https://togithub.com/jgoux) in
[https://github.com/vitest-dev/vitest/issues/2792](https://togithub.com/vitest-dev/vitest/issues/2792)
[<samp>(f0333)</samp>](https://togithub.com/vitest-dev/vitest/commit/f03337ae)
- Do not include source files in `onWatcherStart` when
`typecheck.ignoreSourceErrors` is true  -  by
[@&#8203;mascii](https://togithub.com/mascii) and
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2774](https://togithub.com/vitest-dev/vitest/issues/2774)
[<samp>(d612e)</samp>](https://togithub.com/vitest-dev/vitest/commit/d612efdf)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.28.3...v0.28.4)

###
[`v0.28.3`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.28.3)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.28.2...v0.28.3)

#####    🚀 Features

- Allow using atomics to communicate between threads  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2758](https://togithub.com/vitest-dev/vitest/issues/2758)
[<samp>(3679c)</samp>](https://togithub.com/vitest-dev/vitest/commit/3679cf25)
- Show active filename pattern on CLI  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio)
[<samp>(a0455)</samp>](https://togithub.com/vitest-dev/vitest/commit/a0455917)
- Show active test name pattern on CLI  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio)
[<samp>(df7c4)</samp>](https://togithub.com/vitest-dev/vitest/commit/df7c410a)
- Allow `config` option to be false  -  by
[@&#8203;antfu](https://togithub.com/antfu) in
[https://github.com/vitest-dev/vitest/issues/2749](https://togithub.com/vitest-dev/vitest/issues/2749)
[<samp>(c66e3)</samp>](https://togithub.com/vitest-dev/vitest/commit/c66e335b)

#####    🐞 Bug Fixes

- Watch mode's filename pattern to persist on unrelated file changes  - 
by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio)
[<samp>(712ac)</samp>](https://togithub.com/vitest-dev/vitest/commit/712ac15b)
- Watch mode's filename pattern to persist re-run of failed tests,
snapshot updates and testname filter changes  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio)
[<samp>(1c65a)</samp>](https://togithub.com/vitest-dev/vitest/commit/1c65ac48)
- Dont incorrectly mark run failed if filename pattern excludes
previously failed tests  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio)
[<samp>(61cf9)</samp>](https://togithub.com/vitest-dev/vitest/commit/61cf9a7a)
- **coverage**: Istanbul crashes when no tests were run  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/2753](https://togithub.com/vitest-dev/vitest/issues/2753)
[<samp>(ebc95)</samp>](https://togithub.com/vitest-dev/vitest/commit/ebc95add)

#####    🏎 Performance

- Don't import vite in worker  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2759](https://togithub.com/vitest-dev/vitest/issues/2759)
[<samp>(e49c1)</samp>](https://togithub.com/vitest-dev/vitest/commit/e49c13fa)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.28.2...v0.28.3)

###
[`v0.28.2`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.28.2)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.28.1...v0.28.2)

#####    🐞 Bug Fixes

- Send stderr header log to stderr  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2736](https://togithub.com/vitest-dev/vitest/issues/2736)
[<samp>(998ea)</samp>](https://togithub.com/vitest-dev/vitest/commit/998ea804)
- Call afterAll, if beforeAll failed  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2737](https://togithub.com/vitest-dev/vitest/issues/2737)
[<samp>(1904c)</samp>](https://togithub.com/vitest-dev/vitest/commit/1904c9c4)
- **vite-node**: Don't cache modules with `timestamp: 0`  -  by
[@&#8203;danielroe](https://togithub.com/danielroe) in
[https://github.com/vitest-dev/vitest/issues/2747](https://togithub.com/vitest-dev/vitest/issues/2747)
[<samp>(e88c0)</samp>](https://togithub.com/vitest-dev/vitest/commit/e88c04c4)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.28.1...v0.28.2)

###
[`v0.28.1`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.28.1)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.28.0...v0.28.1)

#####    🐞 Bug Fixes

- Remove UI from Vitest dependencies  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va)
[<samp>(b120c)</samp>](https://togithub.com/vitest-dev/vitest/commit/b120ca3f)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.28.0...v0.28.1)

###
[`v0.28.0`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.28.0)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.27.3...v0.28.0)

#####    🚨 Breaking Changes

- Don't rely on environment for interopDefault  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2682](https://togithub.com/vitest-dev/vitest/issues/2682)
[<samp>(3f20c)</samp>](https://togithub.com/vitest-dev/vitest/commit/3f20cf5a)
- Move test runner into a separate package  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2721](https://togithub.com/vitest-dev/vitest/issues/2721)
[<samp>(482b7)</samp>](https://togithub.com/vitest-dev/vitest/commit/482b72fc)
- To extend text context, you need to augment `@vitet/runner` package
instead of `vitest`

#####    🐞 Bug Fixes

- **coverage**: C8 to log warning when run in Stackblitz  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/2735](https://togithub.com/vitest-dev/vitest/issues/2735)
[<samp>(b6c41)</samp>](https://togithub.com/vitest-dev/vitest/commit/b6c41caa)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.27.3...v0.28.0)

###
[`v0.27.3`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.27.3)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.27.2...v0.27.3)

#####    🚀 Features

- Throw unhandled exception, if code throws "error" event  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2691](https://togithub.com/vitest-dev/vitest/issues/2691)
[<samp>(6a30c)</samp>](https://togithub.com/vitest-dev/vitest/commit/6a30cdd3)
- New `environmentMatchGlobs` option to auto infer env based on glob  - 
by [@&#8203;antfu](https://togithub.com/antfu) in
[https://github.com/vitest-dev/vitest/issues/2714](https://togithub.com/vitest-dev/vitest/issues/2714)
[<samp>(3e142)</samp>](https://togithub.com/vitest-dev/vitest/commit/3e1429e5)
- Add basic reporter which allow user to use reporter in ci  -  by
[@&#8203;trim21](https://togithub.com/trim21) and
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2612](https://togithub.com/vitest-dev/vitest/issues/2612)
[<samp>(5df52)</samp>](https://togithub.com/vitest-dev/vitest/commit/5df522f7)
- Improve "isCI" check  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2705](https://togithub.com/vitest-dev/vitest/issues/2705)
[<samp>(e6457)</samp>](https://togithub.com/vitest-dev/vitest/commit/e64570df)

#####    🐞 Bug Fixes

- Show error in the terminal, if "only" flag is used  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2696](https://togithub.com/vitest-dev/vitest/issues/2696)
[<samp>(24d63)</samp>](https://togithub.com/vitest-dev/vitest/commit/24d63809)
- Cpu and heap profiling options for workers  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/2702](https://togithub.com/vitest-dev/vitest/issues/2702)
[<samp>(c31a0)</samp>](https://togithub.com/vitest-dev/vitest/commit/c31a0b20)
- Show correct number of tests in test summary  -  by
[@&#8203;poyoho](https://togithub.com/poyoho) in
[https://github.com/vitest-dev/vitest/issues/2703](https://togithub.com/vitest-dev/vitest/issues/2703)
[<samp>(859e7)</samp>](https://togithub.com/vitest-dev/vitest/commit/859e7f01)
- Don't terminate workers on Node 14 to not trigger fatal error  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2697](https://togithub.com/vitest-dev/vitest/issues/2697)
[<samp>(db9b6)</samp>](https://togithub.com/vitest-dev/vitest/commit/db9b6bb7)
- Allow custom async matchers  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2707](https://togithub.com/vitest-dev/vitest/issues/2707)
[<samp>(b5669)</samp>](https://togithub.com/vitest-dev/vitest/commit/b566912d)
- Remove setup files from coverage  -  by
[@&#8203;g4rry420](https://togithub.com/g4rry420) in
[https://github.com/vitest-dev/vitest/issues/2574](https://togithub.com/vitest-dev/vitest/issues/2574)
[<samp>(488e4)</samp>](https://togithub.com/vitest-dev/vitest/commit/488e4b9f)
- `reportCoverage` context can be optional  -  by
[@&#8203;antfu](https://togithub.com/antfu)
[<samp>(4cd1e)</samp>](https://togithub.com/vitest-dev/vitest/commit/4cd1e5d7)
- ENOENT assets when htmldir exists  -  by
[@&#8203;everett1992](https://togithub.com/everett1992) in
[https://github.com/vitest-dev/vitest/issues/2701](https://togithub.com/vitest-dev/vitest/issues/2701)
[<samp>(5a656)</samp>](https://togithub.com/vitest-dev/vitest/commit/5a656753)
- Correctly resolve paths relative to root, when used outside of root
directory  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va)
in
[https://github.com/vitest-dev/vitest/issues/2687](https://togithub.com/vitest-dev/vitest/issues/2687)
[<samp>(703aa)</samp>](https://togithub.com/vitest-dev/vitest/commit/703aab46)
- **typecheck**: Store tmp tsconfig close to original one  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2660](https://togithub.com/vitest-dev/vitest/issues/2660)
[<samp>(26f91)</samp>](https://togithub.com/vitest-dev/vitest/commit/26f915ad)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.27.2...v0.27.3)

###
[`v0.27.2`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.27.2)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.27.1...v0.27.2)

#####    🚀 Features

- Add runAllTimersAsync from sinonjs  -  by
[@&#8203;guillaumeduboc](https://togithub.com/guillaumeduboc) in
[https://github.com/vitest-dev/vitest/issues/2209](https://togithub.com/vitest-dev/vitest/issues/2209)
[<samp>(40187)</samp>](https://togithub.com/vitest-dev/vitest/commit/40187bdb)

#####    🐞 Bug Fixes

- Document.defaultView references the same window as the global one  - 
by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2649](https://togithub.com/vitest-dev/vitest/issues/2649)
[<samp>(1ac4b)</samp>](https://togithub.com/vitest-dev/vitest/commit/1ac4bb8d)
- Trim input filename and test name  -  by
[@&#8203;btea](https://togithub.com/btea) in
[https://github.com/vitest-dev/vitest/issues/2650](https://togithub.com/vitest-dev/vitest/issues/2650)
[<samp>(d3dcb)</samp>](https://togithub.com/vitest-dev/vitest/commit/d3dcbdc8)
- Increase default teardownTimeout  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va)
[<samp>(13e53)</samp>](https://togithub.com/vitest-dev/vitest/commit/13e53ac7)
- Mock css files imported with "require"  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2679](https://togithub.com/vitest-dev/vitest/issues/2679)
[<samp>(6c1a2)</samp>](https://togithub.com/vitest-dev/vitest/commit/6c1a26a6)
- Don't start watching files in "run" mode  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2680](https://togithub.com/vitest-dev/vitest/issues/2680)
[<samp>(0a31e)</samp>](https://togithub.com/vitest-dev/vitest/commit/0a31e85c)
- Rerun tests, when setup file is edited  -  by
[@&#8203;mysteryven](https://togithub.com/mysteryven) and
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2625](https://togithub.com/vitest-dev/vitest/issues/2625)
[<samp>(019a6)</samp>](https://togithub.com/vitest-dev/vitest/commit/019a6d57)
- Always show filename for unhandled errors  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2689](https://togithub.com/vitest-dev/vitest/issues/2689)
[<samp>(15aa0)</samp>](https://togithub.com/vitest-dev/vitest/commit/15aa0156)
- Define property instead of assigning it in vi.stubGlobal  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2685](https://togithub.com/vitest-dev/vitest/issues/2685)
[<samp>(8a1d7)</samp>](https://togithub.com/vitest-dev/vitest/commit/8a1d7590)
- **coverage**: Watch mode to use `coverage.all` only when all tests are
run  -  by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/2665](https://togithub.com/vitest-dev/vitest/issues/2665)
[<samp>(85096)</samp>](https://togithub.com/vitest-dev/vitest/commit/85096281)
- **typecheck**: Log tests with verbose reporter, correctly show "pass"
tests  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2656](https://togithub.com/vitest-dev/vitest/issues/2656)
[<samp>(61dde)</samp>](https://togithub.com/vitest-dev/vitest/commit/61ddebae)
- **ui**: Don't show "connecting" screen in html reporter  -  by
[@&#8203;poyoho](https://togithub.com/poyoho) in
[https://github.com/vitest-dev/vitest/issues/2693](https://togithub.com/vitest-dev/vitest/issues/2693)
[<samp>(d8548)</samp>](https://togithub.com/vitest-dev/vitest/commit/d8548c69)

#####    🏎 Performance

- Don't resolve import path, if it was already resolved  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2659](https://togithub.com/vitest-dev/vitest/issues/2659)
[<samp>(45cc3)</samp>](https://togithub.com/vitest-dev/vitest/commit/45cc3423)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.27.1...v0.27.2)

###
[`v0.27.1`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.27.1)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.27.0...v0.27.1)

#####    🚀 Features

- Show error, when process.exit is called  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2643](https://togithub.com/vitest-dev/vitest/issues/2643)
[<samp>(866f4)</samp>](https://togithub.com/vitest-dev/vitest/commit/866f4494)
- Add more information about unhandler error  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2642](https://togithub.com/vitest-dev/vitest/issues/2642)
[<samp>(1ffb0)</samp>](https://togithub.com/vitest-dev/vitest/commit/1ffb0ef5)
- Display running processes, if vitest closes with timeout  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2633](https://togithub.com/vitest-dev/vitest/issues/2633)
[<samp>(94968)</samp>](https://togithub.com/vitest-dev/vitest/commit/94968a6f)

#####    🐞 Bug Fixes

- Type issue with spyOn method  -  by
[@&#8203;samkevin1](https://togithub.com/samkevin1) in
[https://github.com/vitest-dev/vitest/issues/2365](https://togithub.com/vitest-dev/vitest/issues/2365)
and
[https://github.com/vitest-dev/vitest/issues/2582](https://togithub.com/vitest-dev/vitest/issues/2582)
[<samp>(1aaa7)</samp>](https://togithub.com/vitest-dev/vitest/commit/1aaa79d7)
- Add missing types in TS project when global is true  -  by
[@&#8203;Sneaken](https://togithub.com/Sneaken) in
[https://github.com/vitest-dev/vitest/issues/2631](https://togithub.com/vitest-dev/vitest/issues/2631)
[<samp>(4745e)</samp>](https://togithub.com/vitest-dev/vitest/commit/4745eaa2)
- Always report failed test in junit reporter  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2632](https://togithub.com/vitest-dev/vitest/issues/2632)
[<samp>(83da2)</samp>](https://togithub.com/vitest-dev/vitest/commit/83da2ec4)
- Change Vite root, if test.root is used  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2637](https://togithub.com/vitest-dev/vitest/issues/2637)
[<samp>(efbff)</samp>](https://togithub.com/vitest-dev/vitest/commit/efbff2a2)
- Don't use ownKeys, when interoping a module  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2629](https://togithub.com/vitest-dev/vitest/issues/2629)
[<samp>(a186a)</samp>](https://togithub.com/vitest-dev/vitest/commit/a186a7e1)
- Cut duplicate error in negated toHaveBeenCalled  -  by
[@&#8203;richardboehme](https://togithub.com/richardboehme) in
[https://github.com/vitest-dev/vitest/issues/2638](https://togithub.com/vitest-dev/vitest/issues/2638)
[<samp>(09d62)</samp>](https://togithub.com/vitest-dev/vitest/commit/09d62226)
- Always update last HMR ms on a module  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va)
[<samp>(99676)</samp>](https://togithub.com/vitest-dev/vitest/commit/9967645a)
- Terminate workers, when closing process  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2645](https://togithub.com/vitest-dev/vitest/issues/2645)
[<samp>(ece43)</samp>](https://togithub.com/vitest-dev/vitest/commit/ece434a3)
-   **coverage**:
- Prevent c8 from crashing on invalid sourcemaps  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/2634](https://togithub.com/vitest-dev/vitest/issues/2634)
[<samp>(0163d)</samp>](https://togithub.com/vitest-dev/vitest/commit/0163dc80)
- Istanbul provider to use `coverage.extension`  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/2641](https://togithub.com/vitest-dev/vitest/issues/2641)
[<samp>(7e388)</samp>](https://togithub.com/vitest-dev/vitest/commit/7e388903)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.27.0...v0.27.1)

###
[`v0.27.0`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.27.0)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.26.3...v0.27.0)

#####    🚨 Breaking Changes

- Deprecate "error" on result, store errors in "errors"  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2586](https://togithub.com/vitest-dev/vitest/issues/2586)
[<samp>(e641a)</samp>](https://togithub.com/vitest-dev/vitest/commit/e641a110)
- Split vitest into separate packages, but still bundle them for the
time being  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2575](https://togithub.com/vitest-dev/vitest/issues/2575)
[<samp>(c8e6f)</samp>](https://togithub.com/vitest-dev/vitest/commit/c8e6fb69)

#####    🚀 Features

- **coverage**: report only changed files when using istanbul coverage
with watch mode  -  by [@&#8203;g4rry420](https://togithub.com/g4rry420)
in
[https://github.com/vitest-dev/vitest/issues/2385](https://togithub.com/vitest-dev/vitest/issues/2385)
[<samp>(bf872)</samp>](https://togithub.com/vitest-dev/vitest/commit/bf87282c)

#####    🐞 Bug Fixes

- Return mock path only when mocked  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2619](https://togithub.com/vitest-dev/vitest/issues/2619)
[<samp>(f8ac2)</samp>](https://togithub.com/vitest-dev/vitest/commit/f8ac2094)
- Allow mocking CJS module with interoped default  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2598](https://togithub.com/vitest-dev/vitest/issues/2598)
[<samp>(6b3e3)</samp>](https://togithub.com/vitest-dev/vitest/commit/6b3e36d4)
- Avoid random ENOTEMPTY errors  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/2620](https://togithub.com/vitest-dev/vitest/issues/2620)
[<samp>(59766)</samp>](https://togithub.com/vitest-dev/vitest/commit/59766fa4)
- Always inline assets and modules with special Vite queries  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2617](https://togithub.com/vitest-dev/vitest/issues/2617)
[<samp>(fed1c)</samp>](https://togithub.com/vitest-dev/vitest/commit/fed1cd60)
-   **cli**:
- Allow overrides reporter via cli option  -  by
[@&#8203;mysteryven](https://togithub.com/mysteryven) and
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2573](https://togithub.com/vitest-dev/vitest/issues/2573)
[<samp>(894f1)</samp>](https://togithub.com/vitest-dev/vitest/commit/894f155a)
-   **coverage**:
- Flaky c8 coverage caused by parallel sourcemap constructing  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) and
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2591](https://togithub.com/vitest-dev/vitest/issues/2591)
[<samp>(9a29f)</samp>](https://togithub.com/vitest-dev/vitest/commit/9a29f984)
- Validate extension, when reporting c8 coverage  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2626](https://togithub.com/vitest-dev/vitest/issues/2626)
[<samp>(74463)</samp>](https://togithub.com/vitest-dev/vitest/commit/7446370c)

#####    🏎 Performance

- Improve vi.mock performance  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/2594](https://togithub.com/vitest-dev/vitest/issues/2594)
[<samp>(09d19)</samp>](https://togithub.com/vitest-dev/vitest/commit/09d19892)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.26.3...v0.27.0)

</details>

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

###
[`v8.2.6`](https://togithub.com/capricorn86/happy-dom/compare/v8.2.5...v8.2.6)

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v8.2.5...v8.2.6)

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

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v8.2.4...v8.2.5)

##### :construction_worker_man: Patch fixes

- Adds support for passing arguments to the callback in
`Window.setTimeout()` and `Window.setInterval()`.
([#&#8203;712](https://togithub.com/capricorn86/happy-dom/issues/712))

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

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v8.2.3...v8.2.4)

##### :construction_worker_man: Patch fixes

- Fixes handling of falsy values in `CustomEvent.detail`.
([#&#8203;701](https://togithub.com/capricorn86/happy-dom/issues/701))

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

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

##### :construction_worker_man: Patch fixes

- Properly detect ShadowRoot boundary when constructing composed path in
`Event.composedPath()`.
([#&#8203;709](https://togithub.com/capricorn86/happy-dom/issues/709))

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

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

##### :construction_worker_man: Patch fixes

- Fixes an issue in `MutationObserver.disconnect()` where it throws an
error if `MutationObserver.observe()` has not been called first.
([#&#8203;659](https://togithub.com/capricorn86/happy-dom/issues/659))

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

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

##### :construction_worker_man: Patch fixes

- Upgrades Jest dependencies to 29.4.0.
([#&#8203;697](https://togithub.com/capricorn86/happy-dom/issues/697))

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

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v8.1.5...v8.2.0)

##### :art: Features

- Renames `NodeUtility.nodeEquals()` to `NodeUtility.isEqualNode()` to
make it easier to find, as `isEqualNode` is how it is named in the spec.
([#&#8203;656](https://togithub.com/capricorn86/happy-dom/issues/656))

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

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v8.1.4...v8.1.5)

##### :construction_worker_man: Patch fixes

- Renames the `conditionalText` property to `conditionText` in
`CSSContainerRule` and `CSSMediaRule` according to spec.
([#&#8203;692](https://togithub.com/capricorn86/happy-dom/issues/692))

##### :art: Features

- Adds support for `CSSSupportsRule` (`@supports`) to the CSS parser.
([#&#8203;693](https://togithub.com/capricorn86/happy-dom/issues/693))

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

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v8.1.3...v8.1.4)

##### :construction_worker_man: Patch fixes

- Returns the correct result when deleting a property in
`HTMLElement.dataset`.
([#&#8203;652](https://togithub.com/capricorn86/happy-dom/issues/652))

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

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v8.1.2...v8.1.3)

##### :construction_worker_man: Patch fixes

- Fixed infinite loop bug when there is no number before "n" in an
":nth-child" query selector.
([#&#8203;686](https://togithub.com/capricorn86/happy-dom/issues/686))

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

[Compare
Source](https://togithub.com/capricorn86/happy-dom/compare/v8.1.1...v8.1.2)

##### :construction_worker_man: Patch fixes

- Adds support for `Window.scrollX`, `Window.scrollY`,
`Window.pageXOffset` and `Window.pageYOffset`.
([#&#8203;681](https://togithub.com/capricorn86/happy-dom/issues/681))

</details>

<details>
<summary>okonet/lint-staged</summary>

###
[`v13.1.1`](https://togithub.com/okonet/lint-staged/releases/tag/v13.1.1)

[Compare
Source](https://togithub.com/okonet/lint-staged/compare/v13.1.0...v13.1.1)

##### Bug Fixes

- allow re-enabling `--stash` when using the `--diff` option
([99390c3](https://togithub.com/okonet/lint-staged/commit/99390c31a856154e380f04d5c3603d2e6428f1e5))

</details>

<details>
<summary>prettier/prettier</summary>

###
[`v2.8.4`](https://togithub.com/prettier/prettier/blob/HEAD/CHANGELOG.md#&#8203;284)

[Compare
Source](https://togithub.com/prettier/prettier/compare/2.8.3...2.8.4)

[diff](https://togithub.com/prettier/prettier/compare/2.8.3...2.8.4)

##### Fix leading comments in mapped types with `readonly`
([#&#8203;13427](https://togithub.com/prettier/prettier/pull/13427) by
[@&#8203;thorn0](https://togithub.com/thorn0),
[@&#8203;sosukesuzuki](https://togithub.com/sosukesuzuki))

<!-- prettier-ignore -->

```tsx
// Input
type Type = {
  // comment
  readonly [key in Foo];
};

// Prettier 2.8.3
type Type = {
  readonly // comment
  [key in Foo];
};

// Prettier 2.8.4
type Type = {
  // comment
  readonly [key in Foo];
};
```

##### Group params in opening block statements
([#&#8203;14067](https://togithub.com/prettier/prettier/pull/14067) by
[@&#8203;jamescdavis](https://togithub.com/jamescdavis))

This is a follow-up to
[#&#8203;13930](https://togithub.com/prettier/prettier/issues/13930) to
establish wrapping consistency between opening block statements and else
blocks by
grouping params in opening blocks. This causes params to break to a new
line together and not be split across lines
unless the length of params exceeds the print width. This also updates
the else block wrapping to behave exactly the
same as opening blocks.

<!-- prettier-ignore -->

```hbs
{{! Input }}
{{#block param param param param param param param param param param as |blockParam|}}
  Hello
{{else block param param param param param param param param param param as |blockParam|}}
  There
{{/block}}

{{! Prettier 2.8.3 }}
{{#block
  param
  param
  param
  param
  param
  param
  param
  param
  param
  param
  as |blockParam|
}}
  Hello
{{else block param
param
param
param
param
param
param
param
param
param}}
  There
{{/block}}

{{! Prettier 2.8.4 }}
{{#block
  param param param param param param param param param param
  as |blockParam|
}}
  Hello
{{else block
  param param param param param param param param param param
  as |blockParam|
}}
  There
{{/block}}
```

##### Ignore files in `.sl/`
([#&#8203;14206](https://togithub.com/prettier/prettier/pull/14206) by
[@&#8203;bolinfest](https://togithub.com/bolinfest))

In [Sapling SCM](https://sapling-scm.com/), `.sl/` is the folder where
it stores its state, analogous to `.git/` in Git. It should be ignored
in Prettier like the other SCM folders.

##### Recognize `@satisfies` in Closure-style type casts
([#&#8203;14262](https://togithub.com/prettier/prettier/pull/14262) by
[@&#8203;fisker](https://togithub.com/fisker))

<!-- prettier-ignore -->

```jsx
// Input
const a = /** @&#8203;satisfies {Record<string, string>} */ ({hello: 1337});
const b = /** @&#8203;type {Record<string, string>} */ ({hello: 1337});

// Prettier 2.8.3
const a = /** @&#8203;satisfies {Record<string, string>} */ { hello: 1337 };
const b = /** @&#8203;type {Record<string, string>} */ ({ hello: 1337 });

// Prettier 2.8.4
const a = /** @&#8203;satisfies {Record<string, string>} */ ({hello: 1337});
const b = /** @&#8203;type {Record<string, string>} */ ({hello: 1337});
```

##### Fix parens in inferred function return types with `extends`
([#&#8203;14279](https://togithub.com/prettier/prettier/pull/14279) by
[@&#8203;fisker](https://togithub.com/fisker))

<!-- prettier-ignore -->

```ts
// Input
type Foo<T> = T extends ((a) => a is infer R extends string) ? R : never;

// Prettier 2.8.3 (First format)
type Foo<T> = T extends (a) => a is infer R extends string ? R : never;

// Prettier 2.8.3 (Second format)
SyntaxError: '?' expected. 

// Prettier 2.8.4
type Foo<T> = T extends ((a) => a is infer R extends string) ? R : never;
```

###
[`v2.8.3`](https://togithub.com/prettier/prettier/blob/HEAD/CHANGELOG.md#&#8203;283)

[Compare
Source](https://togithub.com/prettier/prettier/compare/2.8.2...2.8.3)

[diff](https://togithub.com/prettier/prettier/compare/2.8.2...2.8.3)

##### Allow self-closing tags on custom elements
([#&#8203;14170](https://togithub.com/prettier/prettier/pull/14170) by
[@&#8203;fisker](https://togithub.com/fisker))

See [Angular v15.1.0 release
note](https://togithub.com/angular/angular/releases/tag/15.1.0) for
details.

<!-- prettier-ignore -->

```html
// Input
<app-test/>

// Prettier 2.8.2
SyntaxError: Only void and foreign elements can be self closed "app-test" (1:1)
> 1 | <app-test/>
    | ^^^^^^^^^
  2 |

// Prettier 2.8.3
<app-test />
```

###
[`v2.8.2`](https://togithub.com/prettier/prettier/blob/HEAD/CHANGELOG.md#&#8203;282)

[Compare
Source](https://togithub.com/prettier/prettier/compare/2.8.1...2.8.2)

[diff](https://togithub.com/prettier/prettier/compare/2.8.1...2.8.2)

##### Don't lowercase link references
([#&#8203;13155](https://togithub.com/prettier/prettier/pull/13155) by
[@&#8203;DerekNonGeneric](https://togithub.com/DerekNonGeneric) &
[@&#8203;fisker](https://togithub.com/fisker))

<!-- prettier-ignore -->

```markdown
<!-- Input -->
We now don't strictly follow the release notes format suggested by [Keep a Changelog].

[Keep a Changelog]: https://example.com/

<!-- Prettier 2.8.1 -->
We now don't strictly follow the release notes format suggested by [Keep a Changelog].

[keep a changelog]: https://example.com/
<!--
^^^^^^^^^^^^^^^^^^ lowercased
-->

<!-- Prettier 2.8.2 -->
<Same as input>
```

##### Preserve self-closing tags
([#&#8203;13691](https://togithub.com/prettier/prettier/pull/13691) by
[@&#8203;dcyriller](https://togithub.com/dcyriller))

<!-- prettier-ignore -->

```hbs
{{! Input }}
<div />
<div></div>
<custom-component />
<custom-component></custom-component>
<i />
<i></i>
<Component />
<Component></Component>

{{! Prettier 2.8.1 }}
<div></div>
<div></div>
<custom-component></custom-component>
<custom-component></custom-component>
<i></i>
<i></i>
<Component />
<Component />

{{! Prettier 2.8.2 }}
<div />
<div></div>
<custom-component />
<custom-component></custom-component>
<i />
<i></i>
<Component />
<Component />
```

##### Allow custom "else if"-like blocks with block params
([#&#8203;13930](https://togithub.com/prettier/prettier/pull/13930) by
[@&#8203;jamescdavis](https://togithub.com/jamescdavis))

[#&#8203;13507](https://togithub.com/prettier/prettier/issues/13507)
added support for custom block keywords used with `else`, but failed to
allow block params. This updates printer-glimmer to allow block params
with custom "else if"-like blocks.

<!-- prettier-ignore -->

```hbs
{{! Input }}
{{#when isAtWork as |work|}}
  Ship that
  {{work}}!
{{else when isReading as |book|}}
  You can finish
  {{book}}
  eventually...
{{else}}
  Go to bed!
{{/when}}

{{! Prettier 2.8.1 }}
{{#when isAtWork as |work|}}
  Ship that
  {{work}}!
{{else when isReading}}
  You can finish
  {{book}}
  eventually...
{{else}}
  Go to bed!
{{/when}}

{{! Prettier 2.8.2 }}
{{#when isAtWork as |work|}}
  Ship that
  {{work}}!
{{else when isReading as |book|}}
  You can finish
  {{book}}
  eventually...
{{else}}
  Go to bed!
{{/when}}
```

##### Preserve empty lines between nested SCSS maps
([#&#8203;13931](https://togithub.com/prettier/prettier/pull/13931) by
[@&#8203;jneander](https://togithub.com/jneander))

<!-- prettier-ignore -->

```scss
/* Input */
$map: (
  'one': (
     'key': 'value',
  ),

  'two': (
     'key': 'value',
  ),
)

/* Prettier 2.8.1 */
$map: (
  'one': (
     'key': 'value',
  ),
  'two': (
     'key': 'value',
  ),
)

/* Prettier 2.8.2 */
$map: (
  'one': (
     'key': 'value',
  ),

  'two': (
     'key': 'value',
  ),
)
```

##### Fix missing parentheses when an expression statement starts with
`let[`
([#&#8203;14000](https://togithub.com/prettier/prettier/pull/14000),
[#&#8203;14044](https://togithub.com/prettier/prettier/pull/14044) by
[@&#8203;fisker](https://togithub.com/fisker),
[@&#8203;thorn0](https://togithub.com/thorn0))

<!-- prettier-ignore -->

```jsx
// Input
(let[0] = 2);

// Prettier 2.8.1
let[0] = 2;

// Prettier 2.8.1 (second format)
SyntaxError: Unexpected token (1:5)
> 1 | let[0] = 2;
    |     ^
  2 |

// Prettier 2.8.2
(let)[0] = 2;
```

##### Fix semicolon duplicated at the end of LESS file
([#&#8203;14007](https://togithub.com/prettier/prettier/pull/14007) by
[@&#8203;mvorisek](https://togithub.com/mvorisek))

<!-- prettier-ignore -->

```less
// Input
@&#8203;variable: {
  field: something;
};

// Prettier 2.8.1
@&#8203;variable: {
  field: something;
}; ;

// Prettier 2.8.2
@&#8203;variable: {
  field: something;
};
```

##### Fix no space after unary minus when followed by opening
parenthesis in LESS
([#&#8203;14008](https://togithub.com/prettier/prettier/pull/14008) by
[@&#8203;mvorisek](https://togithub.com/mvorisek))

<!-- prettier-ignore -->

```less
// Input
.unary_minus_single {
  margin: -(@&#8203;a);
}

.unary_minus_multi {
  margin: 0 -(@&#8203;a);
}

.binary_minus {
  margin: 0 - (@&#8203;a);
}

// Prettier 2.8.1
.unary_minus_single {
  margin: - (@&#8203;a);
}

.unary_minus_multi {
  margin: 0 - (@&#8203;a);
}

.binary_minus {
  margin: 0 - (@&#8203;a);
}

// Prettier 2.8.2
.unary_minus_single {
  margin: -(@&#8203;a);
}

.unary_minus_multi {
  margin: 0 -(@&#8203;a);
}

.binary_minus {
  margin: 0 - (@&#8203;a);
}
```

##### Do not change case of property name if inside a variable
declaration in LESS
([#&#8203;14034](https://togithub.com/prettier/prettier/pull/14034) by
[@&#8203;mvorisek](https://togithub.com/mvorisek))

<!-- prettier-ignore -->

```less
// Input
@&#8203;var: {
  preserveCase: 0;
};

// Prettier 2.8.1
@&#8203;var: {
  preservecase: 0;
};

// Prettier 2.8.2
@&#8203;var: {
  preserveCase: 0;
};
```

##### Fix formatting for auto-accessors with comments
([#&#8203;14038](https://togithub.com/prettier/prettier/pull/14038) by
[@&#8203;fisker](https://togithub.com/fisker))

<!-- prettier-ignore -->

```jsx
// Input
class A {
  @&#8203;dec()
  // comment
  accessor b;
}

// Prettier 2.8.1
class A {
  @&#8203;dec()
  accessor // comment
  b;
}

// Prettier 2.8.1 (second format)
class A {
  @&#8203;dec()
  accessor; // comment
  b;
}

// Prettier 2.8.2
class A {
  @&#8203;dec()
  // comment
  accessor b;
}
```

##### Add parentheses for TSTypeQuery to improve readability
([#&#8203;14042](https://togithub.com/prettier/prettier/pull/14042) by
[@&#8203;onishi-kohei](https://togithub.com/onishi-kohei))

<!-- prettier-ignore -->

```tsx
// Input
a as (typeof node.children)[number]
a as (typeof node.children)[]
a as ((typeof node.children)[number])[]

// Prettier 2.8.1
a as typeof node.children[number];
a as typeof node.children[];
a as typeof node.children[number][];

// Prettier 2.8.2
a as (typeof node.children)[number];
a as (typeof node.children)[];
a as (typeof node.children)[number][];
```

##### Fix displacing of comments in default switch case
([#&#8203;14047](https://togithub.com/prettier/prettier/pull/14047) by
[@&#8203;thorn0](https://togithub.com/thorn0))

It was a regression in Prettier 2.6.0.

<!-- prettier-ignore -->

```jsx
// Input
switch (state) {
  default:
    result = state; // no change
    break;
}

// Prettier 2.8.1
switch (state) {
  default: // no change
    result = state;
    break;
}

// Prettier 2.8.2
switch (state) {
  default:
    result = state; // no change
    break;
}
```

##### Support type annotations on auto accessors via `babel-ts`
([#&#8203;14049](https://togithub.com/prettier/prettier/pull/14049) by
[@&#8203;sosukesuzuki](https://togithub.com/sosukesuzuki))

[The bug that `@babel/parser` cannot parse auto accessors with type
annotations](https://togithub.com/babel/babel/issues/15205) has been
fixed. So we now support it via `babel-ts` parser.

<!-- prettier-ignore -->

```tsx
class Foo {
  accessor prop: number;
}
```

##### Fix formatting of empty type parameters
([#&#8203;14073](https://togithub.com/prettier/prettier/pull/14073) by
[@&#8203;fisker](https://togithub.com/fisker))

<!-- prettier-ignore -->

```jsx
// Input
const foo: bar</* comment */> = () => baz;

// Prettier 2.8.1
Error: Comment "comment" was not printed. Please report this error!

// Prettier 2.8.2
const foo: bar</* comment */> = () => baz;
```

##### Add parentheses to head of `ExpressionStatement` instead of the
whole statement
([#&#8203;14077](https://togithub.com/prettier/prettier/pull/14077) by
[@&#8203;fisker](https://togithub.com/fisker))

<!-- prettier-ignore -->

```jsx
// Input
({}).toString.call(foo) === "[object Array]"
  ? foo.forEach(iterateArray)
  : iterateObject(foo);

// Prettier 2.8.1
({}.toString.call(foo) === "[object Array]"
  ? foo.forEach(iterateArray)
  : iterateObject(foo));

// Prettier 2.8.2
({}).toString.call(foo.forEach) === "[object Array]"
  ? foo.forEach(iterateArray)
  : iterateObject(foo);
```

##### Fix comments after directive
([#&#8203;14081](https://togithub.com/prettier/prettier/pull/14081) by
[@&#8203;fisker](https://togithub.com/fisker))

<!-- prettier-ignore -->

```jsx
// Input
"use strict" /* comment */;

// Prettier 2.8.1 (with other js parsers except `babel`)
Error: Comment "comment" was not printed. Please report this error!

// Prettier 2.8.2
<Same as input>
```

##### Fix formatting for comments inside JSX attribute
([#&#8203;14082](https://togithub.com/prettier/prettier/pull/14082) with
by [@&#8203;fisker](https://togithub.com/fisker))

<!-- prettier-ignore -->

```jsx
// Input
function MyFunctionComponent() {
  <button label=/*old*/"new">button</button>
}

// Prettier 2.8.1
Error: Comment "old" was not printed. Please report this error!

// Prettier 2.8.2
function MyFunctionComponent() {
  <button label=/*old*/ "new">button</button>;
}
```

##### Quote numeric keys for json-stringify parser
([#&#8203;14083](https://togithub.com/prettier/prettier/pull/14083) by
[@&#8203;fisker](https://togithub.com/fisker))

<!-- prettier-ignore -->

```jsx
// Input
{0: 'value'}

// Prettier 2.8.1
{
  0: "value"
}

// Prettier 2.8.2
{
  "0": "value"
}
```

##### Fix removing commas from function arguments in maps
([#&#8203;14089](https://togithub.com/prettier/prettier/pull/14089) by
[@&#8203;sosukesuzuki](https://togithub.com/sosukesuzuki))

<!-- prettier-ignore -->

```scss
/* Input */
$foo: map-fn(
  (
    "#{prop}": inner-fn($first, $second),
  )
);

/* Prettier 2.8.1 */
$foo: map-fn(("#{prop}": inner-fn($first $second)));

/* Prettier 2.8.2 */
$foo: map-fn(
  (
    "#{prop}": inner-fn($first, $second),
  )
);

```

##### Do not insert space in LESS property access
([#&#8203;14103](https://togithub.com/prettier/prettier/pull/14103) by
[@&#8203;fisker](https://togithub.com/fisker))

<!-- prettier-ignore -->

```less
// Input
a {
  color: @&#8203;colors[@&#8203;white];
}

// Prettier 2.8.1
a {
  color: @&#8203;colors[ @&#8203;white];
}

// Prettier 2.8.2
<Same as input>
```

</details>

<details>
<summary>semantic-release/semantic-release</summary>

###
[`v20.1.0`](https://togithub.com/semantic-release/semantic-release/releases/tag/v20.1.0)

[Compare
Source](https://togithub.com/semantic-release/semantic-release/compare/v20.0.4...v20.1.0)

##### Features

- **plugins:** add support for loading ESM plugins
([#&#8203;2688](https://togithub.com/semantic-release/semantic-release/issues/2688))
([d170f73](https://togithub.com/semantic-release/semantic-release/commit/d170f73e0b2a8a853a7bc58977a6b4b0887d8f17))

###
[`v20.0.4`](https://togithub.com/semantic-release/semantic-release/releases/tag/v20.0.4)

[Compare
Source](https://togithub.com/semantic-release/semantic-release/compare/v20.0.3...v20.0.4)

##### Bug Fixes

- **windows:** fixed issues preventing execution from windows
([#&#8203;2672](https://togithub.com/semantic-release/semantic-release/issues/2672))
([5df624c](https://togithub.com/semantic-release/semantic-release/commit/5df624c6e50304743ca40e82958cae825452574f))

###
[`v20.0.3`](https://togithub.com/semantic-release/semantic-release/releases/tag/v20.0.3)

[Compare
Source](https://togithub.com/semantic-release/semantic-release/compare/v20.0.2...v20.0.3)

##### Reverts

- Revert "chore(deps): update dependency ava to v5.1.1"
([#&#8203;2682](https://togithub.com/semantic-release/semantic-release/issues/2682))
([914b0a2](https://togithub.com/semantic-release/semantic-release/commit/914b0a26424065e036c792f48c0179fb888ad810)),
closes
[#&#8203;2682](https://togithub.com/semantic-release/semantic-release/issues/2682)

###
[`v20.0.2`](https://togithub.com/semantic-release/semantic-release/releases/tag/v20.0.2)

[Compare
Source](https://togithub.com/semantic-release/semantic-release/compare/v20.0.1...v20.0.2)

##### Bug Fixes

- **deps:** update dependency semver-diff to v4
([#&#8203;1915](https://togithub.com/semantic-release/semantic-release/issues/1915))
([cb45d27](https://togithub.com/semantic-release/semantic-release/commit/cb45d27726418f27b20c9b7f2d50225c7a0028f6))

###
[`v20.0.1`](https://togithub.com/semantic-release/semantic-release/releases/tag/v20.0.1)

[Compare
Source](https://togithub.com/semantic-release/semantic-release/compare/v20.0.0...v20.0.1)

##### Bug Fixes

- **deps:** update dependency cosmiconfig to v8
([f914c1e](https://togithub.com/semantic-release/semantic-release/commit/f914c1ed86d6b1a8b797664d84c1bd095a21ddb4))
- **deps:** update dependency hosted-git-info to v6
([c4da008](https://togithub.com/semantic-release/semantic-release/commit/c4da008e29ccb3976385c446b317f7732218035a))

</details>

<details>
<summary>TypeStrong/TypeDoc</summary>

###
[`v0.23.24`](https://togithub.com/TypeStrong/TypeDoc/blob/HEAD/CHANGELOG.md#v02324-2023-01-07)

[Compare
Source](https://togithub.com/TypeStrong/TypeDoc/compare/v0.23.23...v0.23.24)

##### Bug Fixes

- Fixed an issue where signature comments were preferred over property
comments for indirectly created function-properties,
[#&#8203;2135](https://togithub.com/TypeStrong/TypeDoc/issues/2135).
- Fixed symlink handling when expanding entry points,
[#&#8203;2130](https://togithub.com/TypeStrong/TypeDoc/issues/2130).

##### Thanks!

-   [@&#8203;boneskull](https://togithub.com/boneskull)

</details>

<details>
<summary>Microsoft/TypeScript</summary>

###
[`v4.9.5`](https://togithub.com/microsoft/TypeScript/releases/tag/v4.9.5):
TypeScript 4.9.5

[Compare
Source](https://togithub.com/Microsoft/TypeScript/compare/v4.9.4...v4.9.5)

For release notes, check out the [release
announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-4-9/).

Downloads are available on:

-   [npm](https://www.npmjs.com/package/typescript)
- [NuGet
package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild)

#### Changes:

-
[`69e88ef`](https://togithub.com/Microsoft/TypeScript/commit/69e88ef5513a81acf69ec78f4af1f927da0d0584)
Port ignore deprecations to 4.9
([#&#8203;52419](https://togithub.com/Microsoft/TypeScript/issues/52419))
-
[`daf4e81`](https://togithub.com/Microsoft/TypeScript/commit/daf4e817a18def96b70ac34703b158ff0e6d58df)
Port timestamp fix to 4.9
([#&#8203;52426](https://togithub.com/Microsoft/TypeScript/issues/52426))

</details>

---

### Configuration

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

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **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://app.renovatebot.com/dashboard#github/andipaetzold/react-firehooks).

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

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.

2 participants