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

docs: update documentation of persist #2147

Merged
merged 4 commits into from
Nov 1, 2023

Conversation

cheatkey
Copy link
Contributor

Related Issues or Discussions

Summary

Added example of using third-party libraries to the "How do I use it with Map and Set" section of the persist documentation

There's no need to write code to serialise or deserialise data that is not supported by JSON.stringify

Check List

  • yarn run prettier for formatting code and docs

Add superjson serialization/deserialization example to Zustand persist documentation
@vercel
Copy link

vercel bot commented Oct 25, 2023

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
zustand-demo ✅ Ready (Inspect) Visit Preview 💬 Add feedback Oct 30, 2023 5:23pm

@codesandbox-ci
Copy link

codesandbox-ci bot commented Oct 25, 2023

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

Latest deployment of this branch, based on commit eb37b28:

Sandbox Source
React Configuration
React TypeScript Configuration
React Browserify Configuration
React Snowpack Configuration
React Parcel Configuration
Next.js Configuration
@pavlobu/zustand demo Configuration

Copy link
Collaborator

@sewera sewera left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dai-shi — please comment if you're okay with encouraging the usage of superjson external library.


If writing serialisation and deserialisation code is tedious, you can use third-party libraries to serialise and deserialise different types of data.

SuperJSON serialises data along with its type, allowing the data to be parsed back to its original type upon deserialisation
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It depends whether @dai-shi and other contributors want to encourage using another library for this use case in the official Zustand docs.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we change it to how to use persist with a custom serialization library? Like "How can I use a custom storage engine"?
스크린샷 2023-10-26 01-13-24

If you use a lot of variables like Map, Set, Date, etc. that JSON.stringify() doesn't support, it would be nice to have a way in the documentation to avoid writing your own serialization/deserialization code

No problem using other libraries (ex) serialize-javascript, devalue , ...etc)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@cheatkey I'm down with the idea of having this under "How can I use a custom storage engine?".

@@ -731,3 +731,32 @@ interface BearState {
removeItem: (name) => localStorage.removeItem(name),
},
```

If writing serialisation and deserialisation code is tedious, you can use third-party libraries to serialise and deserialise different types of data.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use the American English spelling — serialization for this and other occurrences.

SuperJSON serialises data along with its type, allowing the data to be parsed back to its original type upon deserialisation

```ts
import superjson from "superjson";
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please run prettier.

@dai-shi
Copy link
Member

dai-shi commented Oct 26, 2023

@dai-shi — please comment if you're okay with encouraging the usage of superjson external library.

I'm not familiar with superjson, and we shouldn't endorse a specific library, but a usage example may help people.


If writing serialization and deserialization code is tedious, you can use third-party libraries to serialize and deserialize different types of data

SuperJSON serialize data along with its type, allowing the data to be parsed back to its original type upon deserialization
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So, how about adding this?

Suggested change
SuperJSON serialize data along with its type, allowing the data to be parsed back to its original type upon deserialization
For example, [Superjson](https://github.com/blitz-js/superjson) can serialize data along with its type, allowing the data to be parsed back to its original type upon deserialization

@dai-shi
Copy link
Member

dai-shi commented Oct 26, 2023

@cheatkey I'm down with the idea of having this under "How can I use a custom storage engine?".

That sounds good too.

@cheatkey
Copy link
Contributor Author

I have committed the following changes

  • Moved content below "How can I use a custom storage engine?"
  • Specified that the code is an example
  • Added the following types to the example code: Map, Set, Date, and RegExp

import { StorageValue } from "zustand/middleware";

interface BearState {
...: Map<string, string>;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of an ellipsis, use some example names, like "bears", "fish", "time", "query", or something like that.

}
//...

storage: {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wrap it with const storage: StateStorage = {} and add necessary imports.

const str = localStorage.getItem(name);
if (!str) return null;
return {
state: superjson.parse<StorageValue<BearState>>(str).state,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering if you need to return { state: superjson.parse().state }, or if you could just return superjson.parse().state, without wrapping it in an object?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You don't need to wrap it in an object. The result of superjson.parse returns the original json, so you can return the result of the superjson.parse function directly.
I have updated the example code accordingly

@dai-shi dai-shi merged commit 492637a into pmndrs:main Nov 1, 2023
35 checks passed
renovate bot added a commit to ettorepuccetti/terrarossa that referenced this pull request Nov 3, 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 |
|---|---|---|---|---|---|
| [zustand](https://togithub.com/pmndrs/zustand) | [`4.4.5` ->
`4.4.6`](https://renovatebot.com/diffs/npm/zustand/4.4.5/4.4.6) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/zustand/4.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/zustand/4.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/zustand/4.4.5/4.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/zustand/4.4.5/4.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>pmndrs/zustand (zustand)</summary>

### [`v4.4.6`](https://togithub.com/pmndrs/zustand/releases/tag/v4.4.6)

[Compare
Source](https://togithub.com/pmndrs/zustand/compare/v4.4.5...v4.4.6)

v4.4.5 has an issue with some TypeScript configs about module
resolution. It should be fixed now. Thanks for the patience.

#### What's Changed

- Update export types by
[@&#8203;dbritto-dev](https://togithub.com/dbritto-dev) in
[pmndrs/zustand#2170

#### New Contributors

- [@&#8203;cheatkey](https://togithub.com/cheatkey) made their first
contribution in
[pmndrs/zustand#2147
- [@&#8203;frixaco](https://togithub.com/frixaco) made their first
contribution in
[pmndrs/zustand#2166

**Full Changelog**:
pmndrs/zustand@v4.4.5...v4.4.6

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 3am,before 9am" (UTC),
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://developer.mend.io/github/ettorepuccetti/terrarossa).

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

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
SHABIN-K added a commit to SHABIN-K/Brainwave that referenced this pull request Nov 5, 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 |
|---|---|---|---|---|---|
| [zustand](https://togithub.com/pmndrs/zustand) | [`4.4.5` ->
`4.4.6`](https://renovatebot.com/diffs/npm/zustand/4.4.5/4.4.6) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/zustand/4.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/zustand/4.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/zustand/4.4.5/4.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/zustand/4.4.5/4.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>pmndrs/zustand (zustand)</summary>

### [`v4.4.6`](https://togithub.com/pmndrs/zustand/releases/tag/v4.4.6)

[Compare
Source](https://togithub.com/pmndrs/zustand/compare/v4.4.5...v4.4.6)

v4.4.5 has an issue with some TypeScript configs about module
resolution. It should be fixed now. Thanks for the patience.

#### What's Changed

- Update export types by
[@&#8203;dbritto-dev](https://togithub.com/dbritto-dev) in
[pmndrs/zustand#2170

#### New Contributors

- [@&#8203;cheatkey](https://togithub.com/cheatkey) made their first
contribution in
[pmndrs/zustand#2147
- [@&#8203;frixaco](https://togithub.com/frixaco) made their first
contribution in
[pmndrs/zustand#2166

**Full Changelog**:
pmndrs/zustand@v4.4.5...v4.4.6

</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.

🔕 **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://developer.mend.io/github/SHABIN-K/toss).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMS41IiwidXBkYXRlZEluVmVyIjoiMzcuMzEuNSIsInRhcmdldEJyYW5jaCI6Im1hc3RlciJ9-->
bodinsamuel pushed a commit to specfy/specfy that referenced this pull request Nov 8, 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 |
|---|---|---|---|---|---|
| [zustand](https://togithub.com/pmndrs/zustand) | [`4.4.1` ->
`4.4.6`](https://renovatebot.com/diffs/npm/zustand/4.4.1/4.4.6) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/zustand/4.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/zustand/4.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/zustand/4.4.1/4.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/zustand/4.4.1/4.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>pmndrs/zustand (zustand)</summary>

### [`v4.4.6`](https://togithub.com/pmndrs/zustand/releases/tag/v4.4.6)

[Compare
Source](https://togithub.com/pmndrs/zustand/compare/v4.4.5...v4.4.6)

v4.4.5 has an issue with some TypeScript configs about module
resolution. It should be fixed now. Thanks for the patience.

#### What's Changed

- Update export types by
[@&#8203;dbritto-dev](https://togithub.com/dbritto-dev) in
[pmndrs/zustand#2170

#### New Contributors

- [@&#8203;cheatkey](https://togithub.com/cheatkey) made their first
contribution in
[pmndrs/zustand#2147
- [@&#8203;frixaco](https://togithub.com/frixaco) made their first
contribution in
[pmndrs/zustand#2166

**Full Changelog**:
pmndrs/zustand@v4.4.5...v4.4.6

### [`v4.4.5`](https://togithub.com/pmndrs/zustand/releases/tag/v4.4.5)

[Compare
Source](https://togithub.com/pmndrs/zustand/compare/v4.4.4...v4.4.5)

Hopefully, it should fix some issues with Node.js environment including
Next.js.

#### What's Changed

- fix: importing CJS React in ESM by
[@&#8203;dai-shi](https://togithub.com/dai-shi) in
[pmndrs/zustand#2154
- Apply publint recommendations by
[@&#8203;dbritto-dev](https://togithub.com/dbritto-dev) in
[pmndrs/zustand#2157

#### New Contributors

- [@&#8203;plrs9816](https://togithub.com/plrs9816) made their first
contribution in
[pmndrs/zustand#2137
- [@&#8203;Brammm](https://togithub.com/Brammm) made their first
contribution in
[pmndrs/zustand#2139
- [@&#8203;sobies93](https://togithub.com/sobies93) made their first
contribution in
[pmndrs/zustand#2142

**Full Changelog**:
pmndrs/zustand@v4.4.4...v4.4.5

### [`v4.4.4`](https://togithub.com/pmndrs/zustand/releases/tag/v4.4.4)

[Compare
Source](https://togithub.com/pmndrs/zustand/compare/v4.4.3...v4.4.4)

There was a tiny issue in v4.4.3, which broke with some bundlers, which
this version fixes.

#### What's Changed

- fix(build): patch entry points zustand/shallow for CJS by
[@&#8203;dai-shi](https://togithub.com/dai-shi) in
[pmndrs/zustand#2128

**Full Changelog**:
pmndrs/zustand@v4.4.3...v4.4.4

### [`v4.4.3`](https://togithub.com/pmndrs/zustand/releases/tag/v4.4.3)

[Compare
Source](https://togithub.com/pmndrs/zustand/compare/v4.4.2...v4.4.3)

The changes in v4.4.2 were troublesome for some users. This version
should fix/mitigate such cases.

#### What's Changed

- fix(shallow): Extract shallow vanilla and react by
[@&#8203;dbritto-dev](https://togithub.com/dbritto-dev) in
[pmndrs/zustand#2097
- fix(types): mitigate devtools typing by
[@&#8203;dai-shi](https://togithub.com/dai-shi) in
[pmndrs/zustand#2099

**Full Changelog**:
pmndrs/zustand@v4.4.2...v4.4.3

### [`v4.4.2`](https://togithub.com/pmndrs/zustand/releases/tag/v4.4.2)

[Compare
Source](https://togithub.com/pmndrs/zustand/compare/v4.4.1...v4.4.2)

This adds `useShallow` hook to cover some use cases that are deprecated
with v4.4.0 change. Check out [the
guide](https://togithub.com/pmndrs/zustand/blob/ec538e9d4c0b9b5759e6dfd0fd3c9a21f8236949/docs/guides/prevent-rerenders-with-use-shallow.md).

##### Migration Guide

[#&#8203;1991](https://togithub.com/pmndrs/zustand/issues/1991) requires
something like below if you are using the `devtools` middleware *and*
TypeScript.

```diff
  import { devtools } from 'zustand/middleware'
+ import type {} from '@&#8203;redux-devtools/extension'
```

##### What's Changed

- fix(types)(middleware/devtools): avoid copying types by
[@&#8203;dai-shi](https://togithub.com/dai-shi) in
[pmndrs/zustand#1991
- fix(traditional): make defaultEqualityFn optional in TS Types by
[@&#8203;charkour](https://togithub.com/charkour) in
[pmndrs/zustand#2060
- feat: add useShallow by
[@&#8203;FaberVitale](https://togithub.com/FaberVitale) in
[pmndrs/zustand#2090

##### New Contributors

- [@&#8203;aykutkardas](https://togithub.com/aykutkardas) made their
first contribution in
[pmndrs/zustand#1993
- [@&#8203;michelts](https://togithub.com/michelts) made their first
contribution in
[pmndrs/zustand#1997
- [@&#8203;elusive](https://togithub.com/elusive) made their first
contribution in
[pmndrs/zustand#2001
- [@&#8203;mayank1513](https://togithub.com/mayank1513) made their first
contribution in
[pmndrs/zustand#2015
- [@&#8203;fdb](https://togithub.com/fdb) made their first contribution
in
[pmndrs/zustand#2029
- [@&#8203;tmkx](https://togithub.com/tmkx) made their first
contribution in
[pmndrs/zustand#2032
- [@&#8203;OshriAsulin](https://togithub.com/OshriAsulin) made their
first contribution in
[pmndrs/zustand#2028
- [@&#8203;ivanquirino](https://togithub.com/ivanquirino) made their
first contribution in
[pmndrs/zustand#2047
- [@&#8203;stavkamil](https://togithub.com/stavkamil) made their first
contribution in
[pmndrs/zustand#2071
- [@&#8203;NaamuKim](https://togithub.com/NaamuKim) made their first
contribution in
[pmndrs/zustand#2088
- [@&#8203;FaberVitale](https://togithub.com/FaberVitale) made their
first contribution in
[pmndrs/zustand#2090

**Full Changelog**:
pmndrs/zustand@v4.4.1...v4.4.2

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 4pm every weekday" in timezone
Europe/Paris, 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://developer.mend.io/github/specfy/specfy).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40Ni4wIiwidXBkYXRlZEluVmVyIjoiMzcuNDYuMCIsInRhcmdldEJyYW5jaCI6ImNob3JlL3Jlbm92YXRlQmFzZUJyYW5jaCJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
kodiakhq bot pushed a commit to mheob/ef-calc that referenced this pull request Dec 3, 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 |
|---|---|---|---|---|---|
| [@mheob/eslint-config](https://togithub.com/mheob/config/tree/main/packages/eslint-config) ([source](https://togithub.com/mheob/config)) | [`^5.1.0` -> `^5.2.0`](https://renovatebot.com/diffs/npm/@mheob%2feslint-config/5.1.0/5.2.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@mheob%2feslint-config/5.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@mheob%2feslint-config/5.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@mheob%2feslint-config/5.1.0/5.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@mheob%2feslint-config/5.1.0/5.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@mheob/prettier-config](https://togithub.com/mheob/config/tree/main/packages/prettier-config) ([source](https://togithub.com/mheob/config)) | [`^3.1.0` -> `^3.2.0`](https://renovatebot.com/diffs/npm/@mheob%2fprettier-config/3.1.0/3.2.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@mheob%2fprettier-config/3.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@mheob%2fprettier-config/3.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@mheob%2fprettier-config/3.1.0/3.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@mheob%2fprettier-config/3.1.0/3.2.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/tree/HEAD/types/node)) | [`^20.8.8` -> `^20.10.1`](https://renovatebot.com/diffs/npm/@types%2fnode/20.8.9/20.10.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/20.10.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/20.10.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/20.8.9/20.10.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/20.8.9/20.10.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@types/react](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react)) | [`^18.2.31` -> `^18.2.39`](https://renovatebot.com/diffs/npm/@types%2freact/18.2.33/18.2.39) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2freact/18.2.39?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2freact/18.2.39?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2freact/18.2.33/18.2.39?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2freact/18.2.33/18.2.39?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@types/react-dom](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react-dom) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom)) | [`^18.2.14` -> `^18.2.17`](https://renovatebot.com/diffs/npm/@types%2freact-dom/18.2.14/18.2.17) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2freact-dom/18.2.17?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2freact-dom/18.2.17?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2freact-dom/18.2.14/18.2.17?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2freact-dom/18.2.14/18.2.17?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@vitejs/plugin-react](https://togithub.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react#readme) ([source](https://togithub.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react)) | [`^4.1.0` -> `^4.2.0`](https://renovatebot.com/diffs/npm/@vitejs%2fplugin-react/4.1.0/4.2.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@vitejs%2fplugin-react/4.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitejs%2fplugin-react/4.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitejs%2fplugin-react/4.1.0/4.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitejs%2fplugin-react/4.1.0/4.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [eslint](https://eslint.org) ([source](https://togithub.com/eslint/eslint)) | [`^8.52.0` -> `^8.54.0`](https://renovatebot.com/diffs/npm/eslint/8.52.0/8.54.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/eslint/8.54.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint/8.54.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint/8.52.0/8.54.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint/8.52.0/8.54.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [prettier](https://prettier.io) ([source](https://togithub.com/prettier/prettier)) | [`^3.0.3` -> `^3.1.0`](https://renovatebot.com/diffs/npm/prettier/3.0.3/3.1.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/prettier/3.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/prettier/3.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/prettier/3.0.3/3.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/prettier/3.0.3/3.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [typescript](https://www.typescriptlang.org/) ([source](https://togithub.com/Microsoft/TypeScript)) | [`^5.2.2` -> `^5.3.2`](https://renovatebot.com/diffs/npm/typescript/5.2.2/5.3.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/typescript/5.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/typescript/5.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/typescript/5.2.2/5.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typescript/5.2.2/5.3.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [zustand](https://togithub.com/pmndrs/zustand) | [`^4.4.4` -> `^4.4.7`](https://renovatebot.com/diffs/npm/zustand/4.4.4/4.4.7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/zustand/4.4.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/zustand/4.4.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/zustand/4.4.4/4.4.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/zustand/4.4.4/4.4.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>mheob/config (@&#8203;mheob/eslint-config)</summary>

### [`v5.2.0`](https://togithub.com/mheob/config/releases/tag/%40mheob/eslint-config%405.2.0)

[Compare Source](https://togithub.com/mheob/config/compare/@mheob/eslint-config@5.1.1...@mheob/eslint-config@5.2.0)

##### Minor Changes

-   [#&#8203;147](https://togithub.com/mheob/config/pull/147) ([@&#8203;mheob](https://togithub.com/mheob)): set `unicorn/no-null` rule to `off`

### [`v5.1.1`](https://togithub.com/mheob/config/releases/tag/%40mheob/eslint-config%405.1.1)

[Compare Source](https://togithub.com/mheob/config/compare/@mheob/eslint-config@5.1.0...@mheob/eslint-config@5.1.1)

##### Patch Changes

-   [#&#8203;145](https://togithub.com/mheob/config/pull/145) ([@&#8203;mheob](https://togithub.com/mheob)): update
    dependencies

-   [#&#8203;135](https://togithub.com/mheob/config/pull/135) ([@&#8203;mheob](https://togithub.com/mheob)): update
    dependencies

</details>

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

### [`v4.2.0`](https://togithub.com/vitejs/vite-plugin-react/blob/HEAD/packages/plugin-react/CHANGELOG.md#420-2023-11-16)

[Compare Source](https://togithub.com/vitejs/vite-plugin-react/compare/v4.1.1...v4.2.0)

##### Update peer dependency range to target Vite 5

There were no breaking change that impacted this plugin, so any combination of React plugins and Vite core version will work.

##### Align jsx runtime for optimized dependencies

This will only affect people using internal libraries that contains untranspiled JSX. This change aligns the optimizer with the source code and avoid issues when the published source don't have `React` in the scope.

Reminder: While being partially supported in Vite, publishing TS & JSX outside of internal libraries is highly discouraged.

### [`v4.1.1`](https://togithub.com/vitejs/vite-plugin-react/blob/HEAD/packages/plugin-react/CHANGELOG.md#411-2023-11-02)

[Compare Source](https://togithub.com/vitejs/vite-plugin-react/compare/v4.1.0...v4.1.1)

-   Enable retainLines to get correct line numbers for jsxDev (fix [#&#8203;235](https://togithub.com/vitejs/vite-plugin-react/issues/235))

</details>

<details>
<summary>eslint/eslint (eslint)</summary>

### [`v8.54.0`](https://togithub.com/eslint/eslint/releases/tag/v8.54.0)

[Compare Source](https://togithub.com/eslint/eslint/compare/v8.53.0...v8.54.0)

#### Features

-   [`a7a883b`](https://togithub.com/eslint/eslint/commit/a7a883bd6ba4f140b60cbbb2be5b53d750f6c8db) feat: for-direction rule add check for condition in reverse order ([#&#8203;17755](https://togithub.com/eslint/eslint/issues/17755)) (Angelo Annunziata)
-   [`1452dc9`](https://togithub.com/eslint/eslint/commit/1452dc9f12c45c05d7c569f737221f0d988ecef1) feat: Add suggestions to no-console ([#&#8203;17680](https://togithub.com/eslint/eslint/issues/17680)) (Joel Mathew Koshy)
-   [`21ebf8a`](https://togithub.com/eslint/eslint/commit/21ebf8a811be9f4b009cf70a10be5062d4fdc736) feat: update `no-array-constructor` rule ([#&#8203;17711](https://togithub.com/eslint/eslint/issues/17711)) (Francesco Trotta)

#### Bug Fixes

-   [`98926e6`](https://togithub.com/eslint/eslint/commit/98926e6e7323e5dd12a9f016cb558144296665af) fix: Ensure that extra data is not accidentally stored in the cache file ([#&#8203;17760](https://togithub.com/eslint/eslint/issues/17760)) (Milos Djermanovic)
-   [`e8cf9f6`](https://togithub.com/eslint/eslint/commit/e8cf9f6a524332293f8b2c90a2db4a532e47d919) fix: Make dark scroll bar in dark theme ([#&#8203;17753](https://togithub.com/eslint/eslint/issues/17753)) (Pavel)
-   [`3cbeaad`](https://togithub.com/eslint/eslint/commit/3cbeaad7b943c153937ce34365cec2c406f2b98b) fix: Use `cwd` constructor option as config `basePath` in Linter ([#&#8203;17705](https://togithub.com/eslint/eslint/issues/17705)) (Milos Djermanovic)

#### Documentation

-   [`becfdd3`](https://togithub.com/eslint/eslint/commit/becfdd39b25d795e56c9a13eb3e77af6b9c86e8a) docs: Make clear when rules are removed ([#&#8203;17728](https://togithub.com/eslint/eslint/issues/17728)) (Nicholas C. Zakas)
-   [`05d6e99`](https://togithub.com/eslint/eslint/commit/05d6e99153ed6d94eb30f46c57609371918a41f3) docs: update "Submit a Pull Request" page ([#&#8203;17712](https://togithub.com/eslint/eslint/issues/17712)) (Francesco Trotta)
-   [`eb2279e`](https://togithub.com/eslint/eslint/commit/eb2279e5148cee8fdea7dae614f4f8af7a2d06c3) docs: display info about deprecated rules ([#&#8203;17749](https://togithub.com/eslint/eslint/issues/17749)) (Percy Ma)
-   [`d245326`](https://togithub.com/eslint/eslint/commit/d24532601e64714ac5d08507e05aa5c14ecd1d5a) docs: Correct working in migrating plugin docs ([#&#8203;17722](https://togithub.com/eslint/eslint/issues/17722)) (Filip Tammergård)

#### Chores

-   [`d644de9`](https://togithub.com/eslint/eslint/commit/d644de9a4b593b565617303a095bc9aa69e7b768) chore: upgrade [@&#8203;eslint/js](https://togithub.com/eslint/js)[@&#8203;8](https://togithub.com/8).54.0 ([#&#8203;17773](https://togithub.com/eslint/eslint/issues/17773)) (Milos Djermanovic)
-   [`1e6e314`](https://togithub.com/eslint/eslint/commit/1e6e31415cc429a3a9fc64b2ec03df0e0ec0c91b) chore: package.json update for [@&#8203;eslint/js](https://togithub.com/eslint/js) release (Jenkins)
-   [`6fb8805`](https://togithub.com/eslint/eslint/commit/6fb8805310afe7476d6c404f172177a6d15fcf11) chore: Fixed grammar in issue_templates/rule_change ([#&#8203;17770](https://togithub.com/eslint/eslint/issues/17770)) (Joel Mathew Koshy)
-   [`85db724`](https://togithub.com/eslint/eslint/commit/85db7243ddb8706ed60ab64a7ddf604d0d7de493) chore: upgrade `markdownlint` to 0.31.1 ([#&#8203;17754](https://togithub.com/eslint/eslint/issues/17754)) (Nitin Kumar)
-   [`6d470d2`](https://togithub.com/eslint/eslint/commit/6d470d2e74535761bd56dcb1c021b463ef9e8a9c) chore: update dependency recast to ^0.23.0 ([#&#8203;17736](https://togithub.com/eslint/eslint/issues/17736)) (renovate\[bot])
-   [`b7121b5`](https://togithub.com/eslint/eslint/commit/b7121b590d578c9c9b38ee481313317f30e54817) chore: update dependency markdownlint-cli to ^0.37.0 ([#&#8203;17735](https://togithub.com/eslint/eslint/issues/17735)) (renovate\[bot])
-   [`633b9a1`](https://togithub.com/eslint/eslint/commit/633b9a19752b6a22ab4d6c824f27a75ac0e4151b) chore: update dependency regenerator-runtime to ^0.14.0 ([#&#8203;17739](https://togithub.com/eslint/eslint/issues/17739)) (renovate\[bot])
-   [`acac16f`](https://togithub.com/eslint/eslint/commit/acac16fdf8540f7ba86cf637e3c1b253bd35a268) chore: update dependency vite-plugin-commonjs to ^0.10.0 ([#&#8203;17740](https://togithub.com/eslint/eslint/issues/17740)) (renovate\[bot])
-   [`ba8ca7e`](https://togithub.com/eslint/eslint/commit/ba8ca7e3debcba68ee7015b9221cf5acd7870206) chore: add .github/renovate.json5 ([#&#8203;17567](https://togithub.com/eslint/eslint/issues/17567)) (Josh Goldberg ✨)

### [`v8.53.0`](https://togithub.com/eslint/eslint/releases/tag/v8.53.0)

[Compare Source](https://togithub.com/eslint/eslint/compare/v8.52.0...v8.53.0)

#### Features

-   [`528e1c0`](https://togithub.com/eslint/eslint/commit/528e1c00dc2aa8636e5b706c4270dc655cfa17e3) feat: Deprecate formatting rules ([#&#8203;17696](https://togithub.com/eslint/eslint/issues/17696)) (Nicholas C. Zakas)
-   [`c0b11dd`](https://togithub.com/eslint/eslint/commit/c0b11ddb9f8aacc64c3933b9f278939aa7bea481) feat: Add suggestions for no-prototype-builtins ([#&#8203;17677](https://togithub.com/eslint/eslint/issues/17677)) (Yonathan Randolph)

#### Bug Fixes

-   [`1ad6257`](https://togithub.com/eslint/eslint/commit/1ad6257744d63281235fcc33288394b1d69b34ce) fix: ensure that exit code for fatal errors is not overwritten ([#&#8203;17683](https://togithub.com/eslint/eslint/issues/17683)) (Milos Djermanovic)
-   [`b329ea7`](https://togithub.com/eslint/eslint/commit/b329ea748dff45f11c7e218208244dc24fcb5c8f) fix: add `;` after JSX nodes in  `no-object-constructor` autofix ([#&#8203;17672](https://togithub.com/eslint/eslint/issues/17672)) (Francesco Trotta)

#### Documentation

-   [`ab8c60d`](https://togithub.com/eslint/eslint/commit/ab8c60d4f859cec787b5a12f7271b40e666235f5) docs: change position of return to top button ([#&#8203;17688](https://togithub.com/eslint/eslint/issues/17688)) (Tanuj Kanti)
-   [`4fc44c0`](https://togithub.com/eslint/eslint/commit/4fc44c0b8c5dca466bffdfe01dfd80794d7762b7) docs: update twitter icon to new X icon ([#&#8203;17687](https://togithub.com/eslint/eslint/issues/17687)) (Tanuj Kanti)
-   [`4164b2c`](https://togithub.com/eslint/eslint/commit/4164b2ceec89726b18ea0b0e34fab05735d55a09) docs: Update README (GitHub Actions Bot)
-   [`8651895`](https://togithub.com/eslint/eslint/commit/8651895ca7ae15e13d74c8be67d9eebd63a7ce1f) docs: Fix tabs in rule examples ([#&#8203;17653](https://togithub.com/eslint/eslint/issues/17653)) (Francesco Trotta)
-   [`3aec1c5`](https://togithub.com/eslint/eslint/commit/3aec1c55ba2c6d2833e1c0afe0a58f0cc6bbc0a4) docs: explained rule fixers and suggestions ([#&#8203;17657](https://togithub.com/eslint/eslint/issues/17657)) (Josh Goldberg ✨)

#### Chores

-   [`ba4d4d5`](https://togithub.com/eslint/eslint/commit/ba4d4d567a82554250dd8c7933322824e6a73944) chore: remove metascraper ([#&#8203;17707](https://togithub.com/eslint/eslint/issues/17707)) (Milos Djermanovic)
-   [`0d07338`](https://togithub.com/eslint/eslint/commit/0d0733882944b4849d71a40723c251213698cef9) chore: Update dependencies ([#&#8203;17706](https://togithub.com/eslint/eslint/issues/17706)) (Milos Djermanovic)
-   [`93256a3`](https://togithub.com/eslint/eslint/commit/93256a32e312f3f4e5c532762df71bdc06bded20) chore: package.json update for [@&#8203;eslint/js](https://togithub.com/eslint/js) release (ESLint Jenkins)
-   [`485ec7d`](https://togithub.com/eslint/eslint/commit/485ec7d08ed2040c292f52bf9b9152f6c8ef4809) test: fix ESLint tests for caching ([#&#8203;17699](https://togithub.com/eslint/eslint/issues/17699)) (Milos Djermanovic)
-   [`db06a7f`](https://togithub.com/eslint/eslint/commit/db06a7ff7992a74368f03d1f21beb00df0407021) ci: bump actions/setup-node from 3 to 4 ([#&#8203;17676](https://togithub.com/eslint/eslint/issues/17676)) (dependabot\[bot])
-   [`994596b`](https://togithub.com/eslint/eslint/commit/994596b07f5ff20a615a4be1ea03e5fd59cdb84b) ci: run tests in Node.js 21 ([#&#8203;17673](https://togithub.com/eslint/eslint/issues/17673)) (Francesco Trotta)

</details>

<details>
<summary>prettier/prettier (prettier)</summary>

### [`v3.1.0`](https://togithub.com/prettier/prettier/blob/HEAD/CHANGELOG.md#310)

[Compare Source](https://togithub.com/prettier/prettier/compare/3.0.3...3.1.0)

[diff](https://togithub.com/prettier/prettier/compare/3.0.3...3.1.0)

🔗 [Release Notes](https://prettier.io/blog/2023/11/13/3.1.0.html)

</details>

<details>
<summary>Microsoft/TypeScript (typescript)</summary>

### [`v5.3.2`](https://togithub.com/microsoft/TypeScript/releases/tag/v5.3.2): TypeScript 5.3

[Compare Source](https://togithub.com/Microsoft/TypeScript/compare/v5.2.2...v5.3.2)

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

For the complete list of fixed issues, check out the

-   [fixed issues query for Typescript 5.3.0 (Beta)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.0%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.3.1 (RC)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.1%22+is%3Aclosed+).
-   [fixed issues query for Typescript 5.3.2 (Stable)](https://togithub.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.3.2%22+is%3Aclosed+).

Downloads are available on:

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

</details>

<details>
<summary>pmndrs/zustand (zustand)</summary>

### [`v4.4.7`](https://togithub.com/pmndrs/zustand/releases/tag/v4.4.7)

[Compare Source](https://togithub.com/pmndrs/zustand/compare/v4.4.6...v4.4.7)

There's a small fix for a use case with an non-object value in store.

#### What's Changed

-   fix(vanilla): unexpected null state update behavior by [@&#8203;wulimao49](https://togithub.com/wulimao49) in [pmndrs/zustand#2213

#### New Contributors

-   [@&#8203;isiagi](https://togithub.com/isiagi) made their first contribution in [pmndrs/zustand#2208
-   [@&#8203;ADTC](https://togithub.com/ADTC) made their first contribution in [pmndrs/zustand#2202
-   [@&#8203;wulimao49](https://togithub.com/wulimao49) made their first contribution in [pmndrs/zustand#2213

**Full Changelog**: pmndrs/zustand@v4.4.6...v4.4.7

### [`v4.4.6`](https://togithub.com/pmndrs/zustand/releases/tag/v4.4.6)

[Compare Source](https://togithub.com/pmndrs/zustand/compare/v4.4.5...v4.4.6)

v4.4.5 has an issue with some TypeScript configs about module resolution. It should be fixed now. Thanks for the patience.

#### What's Changed

-   Update export types by [@&#8203;dbritto-dev](https://togithub.com/dbritto-dev) in [pmndrs/zustand#2170

#### New Contributors

-   [@&#8203;cheatkey](https://togithub.com/cheatkey) made their first contribution in [pmndrs/zustand#2147
-   [@&#8203;frixaco](https://togithub.com/frixaco) made their first contribution in [pmndrs/zustand#2166

**Full Changelog**: pmndrs/zustand@v4.4.5...v4.4.6

### [`v4.4.5`](https://togithub.com/pmndrs/zustand/releases/tag/v4.4.5)

[Compare Source](https://togithub.com/pmndrs/zustand/compare/v4.4.4...v4.4.5)

Hopefully, it should fix some issues with Node.js environment including Next.js.

#### What's Changed

-   fix: importing CJS React in ESM by [@&#8203;dai-shi](https://togithub.com/dai-shi) in [pmndrs/zustand#2154
-   Apply publint recommendations by [@&#8203;dbritto-dev](https://togithub.com/dbritto-dev) in [pmndrs/zustand#2157

#### New Contributors

-   [@&#8203;plrs9816](https://togithub.com/plrs9816) made their first contribution in [pmndrs/zustand#2137
-   [@&#8203;Brammm](https://togithub.com/Brammm) made their first contribution in [pmndrs/zustand#2139
-   [@&#8203;sobies93](https://togithub.com/sobies93) made their first contribution in [pmndrs/zustand#2142

**Full Changelog**: pmndrs/zustand@v4.4.4...v4.4.5

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" in timezone Europe/Berlin, 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.

---

 - [ ] 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/mheob/ef-calc).
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

4 participants