state-in-url 3.0.1 → 3.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.CN.md +3 -4
- package/README.KO.md +3 -4
- package/README.md +14 -7
- package/dist/constants/index.d.ts +1 -1
- package/dist/encodeState/encodeState.d.ts +3 -3
- package/dist/encodeState/index.d.ts +1 -1
- package/dist/encoder/encoder.d.ts +3 -3
- package/dist/encoder/index.d.ts +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/next/index.d.ts +1 -1
- package/dist/next/useUrlState/index.d.ts +1 -1
- package/dist/next/useUrlState/useUrlState.d.ts +6 -6
- package/dist/parseSPObj.d.ts +2 -2
- package/dist/react-router/index.d.ts +1 -1
- package/dist/react-router/useUrlState/index.d.ts +1 -1
- package/dist/react-router/useUrlState/useUrlState.d.ts +5 -5
- package/dist/subscribers.d.ts +1 -1
- package/dist/useInsertionEffect.d.ts +1 -1
- package/dist/useSharedState/index.d.ts +1 -1
- package/dist/useSharedState/useSharedState.d.ts +2 -2
- package/dist/useUrlEncode/index.d.ts +1 -1
- package/dist/useUrlEncode/useUrlEncode.d.ts +4 -4
- package/dist/useUrlStateBase/index.d.ts +1 -1
- package/dist/useUrlStateBase/useUrlStateBase.d.ts +3 -3
- package/dist/utils.d.ts +1 -1
- package/package.json +12 -4
package/README.CN.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<hr />
|
|
11
11
|
|
|
12
12
|
[](https://www.npmjs.com/package/state-in-url)
|
|
13
|
-

|
|
14
14
|
[](https://app.codacy.com/gh/asmyshlyaev177/state-in-url/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
|
|
15
15
|
[](https://github.com/asmyshlyaev177/state-in-url/)
|
|
16
16
|

|
|
@@ -24,7 +24,6 @@
|
|
|
24
24
|
|
|
25
25
|
<a href="https://state-in-url-asmyshlyaev177.vercel.app/" target="_blank">演示</a> |
|
|
26
26
|
<a href="https://state-in-url.netlify.app/" target="_blank">DEMO2</a> |
|
|
27
|
-
<a href ="https://codesandbox.io/p/github/asmyshlyaev177/state-in-url/main?layout=%257B%2522sidebarPanel%2522%253A%2522EXPLORER%2522%252C%2522rootPanelGroup%2522%253A%257B%2522direction%2522%253A%2522horizontal%2522%252C%2522contentType%2522%253A%2522UNKNOWN%2522%252C%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522id%2522%253A%2522ROOT_LAYOUT%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522UNKNOWN%2522%252C%2522direction%2522%253A%2522vertical%2522%252C%2522id%2522%253A%2522clyk5bd9y00062v6jspcfrkx7%2522%252C%2522sizes%2522%253A%255B100%252C0%255D%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522EDITOR%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522EDITOR%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522EDITOR%2522%252C%2522id%2522%253A%2522clyk5bd9x00022v6jyg71cr9e%2522%257D%255D%257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522SHELLS%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522SHELLS%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522SHELLS%2522%252C%2522id%2522%253A%2522clyk5bd9x00042v6jsos2y043%2522%257D%255D%257D%255D%257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522direction%2522%253A%2522vertical%2522%252C%2522id%2522%253A%2522DEVTOOLS%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522id%2522%253A%2522clyk5bd9x00052v6j5r632b12%2522%257D%255D%257D%255D%252C%2522sizes%2522%253A%255B50%252C50%255D%257D%252C%2522tabbedPanels%2522%253A%257B%2522clyk5bd9x00022v6jyg71cr9e%2522%253A%257B%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522clyk5bd9w00012v6j83rq3bvo%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522FILE%2522%252C%2522filepath%2522%253A%2522%252FREADME.md%2522%252C%2522state%2522%253A%2522IDLE%2522%257D%255D%252C%2522id%2522%253A%2522clyk5bd9x00022v6jyg71cr9e%2522%252C%2522activeTabId%2522%253A%2522clyk5bd9w00012v6j83rq3bvo%2522%257D%252C%2522clyk5bd9x00052v6j5r632b12%2522%253A%257B%2522id%2522%253A%2522clyk5bd9x00052v6j5r632b12%2522%252C%2522activeTabId%2522%253A%2522clyk5bdjx000b2v6jfc8ae464%2522%252C%2522tabs%2522%253A%255B%257B%2522type%2522%253A%2522SETUP_TASKS%2522%252C%2522id%2522%253A%2522clyk5bdjx000b2v6jfc8ae464%2522%252C%2522mode%2522%253A%2522permanent%2522%257D%252C%257B%2522type%2522%253A%2522UNASSIGNED_PORT%2522%252C%2522port%2522%253A2222%252C%2522id%2522%253A%2522clyk5cjbo004d2v6j3u55k74g%2522%252C%2522mode%2522%253A%2522permanent%2522%257D%252C%257B%2522type%2522%253A%2522ENV_SETUP%2522%252C%2522id%2522%253A%2522clyk5h8dp000r2v6j0r7kc7qq%2522%252C%2522mode%2522%253A%2522permanent%2522%257D%255D%257D%252C%2522clyk5bd9x00042v6jsos2y043%2522%253A%257B%2522id%2522%253A%2522clyk5bd9x00042v6jsos2y043%2522%252C%2522activeTabId%2522%253A%2522clyk5cbuv001q2v6joegrxxv6%2522%252C%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522clyk5bd9x00032v6jtfhj316o%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522NEW_TERMINAL%2522%257D%252C%257B%2522type%2522%253A%2522TASK_LOG%2522%252C%2522taskId%2522%253A%2522dev%2522%252C%2522id%2522%253A%2522clyk5cbuv001q2v6joegrxxv6%2522%252C%2522mode%2522%253A%2522permanent%2522%257D%252C%257B%2522type%2522%253A%2522TASK_LOG%2522%252C%2522taskId%2522%253A%2522cleanupDist%2522%252C%2522id%2522%253A%2522clyk5dgvo005i2v6jj950sxft%2522%252C%2522mode%2522%253A%2522permanent%2522%257D%255D%257D%257D%252C%2522showDevtools%2522%253Atrue%252C%2522showShells%2522%253Atrue%252C%2522showSidebar%2522%253Atrue%252C%2522sidebarPanelSize%2522%253A15%257D" target="_blank">Demo on Codesandbox</a>
|
|
28
27
|
|
|
29
28
|
<hr />
|
|
30
29
|
|
|
@@ -373,11 +372,11 @@ npm run dev
|
|
|
373
372
|
|
|
374
373
|
- 创建[GitHub issue](https://github.com/asmyshlyaev177/state-in-url/issues)报告bug、提出功能请求或提问
|
|
375
374
|
|
|
376
|
-
## [更新日志](https://github.com/asmyshlyaev177/state-in-url/blob/
|
|
375
|
+
## [更新日志](https://github.com/asmyshlyaev177/state-in-url/blob/master/CHANGELOG.md)
|
|
377
376
|
|
|
378
377
|
## 许可证
|
|
379
378
|
|
|
380
|
-
本项目采用[MIT许可证](https://github.com/asmyshlyaev177/state-in-url/blob/
|
|
379
|
+
本项目采用[MIT许可证](https://github.com/asmyshlyaev177/state-in-url/blob/master/LICENSE)。
|
|
381
380
|
|
|
382
381
|
## 灵感来源
|
|
383
382
|
|
package/README.KO.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
[](https://www.npmjs.com/package/state-in-url)
|
|
16
|
-

|
|
17
17
|
[](https://app.codacy.com/gh/asmyshlyaev177/state-in-url/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
|
|
18
18
|
[](https://github.com/asmyshlyaev177/state-in-url/)
|
|
19
19
|

|
|
@@ -28,7 +28,6 @@
|
|
|
28
28
|
|
|
29
29
|
<a href="https://state-in-url-asmyshlyaev177.vercel.app/" target="_blank">데모</a> |
|
|
30
30
|
<a href="https://state-in-url.netlify.app/" target="_blank">DEMO2</a> |
|
|
31
|
-
<a href ="https://codesandbox.io/p/github/asmyshlyaev177/state-in-url/main?layout=%257B%2522sidebarPanel%2522%253A%2522EXPLORER%2522%252C%2522rootPanelGroup%2522%253A%257B%2522direction%2522%253A%2522horizontal%2522%252C%2522contentType%2522%253A%2522UNKNOWN%2522%252C%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522id%2522%253A%2522ROOT_LAYOUT%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522UNKNOWN%2522%252C%2522direction%2522%253A%2522vertical%2522%252C%2522id%2522%253A%2522clyk5bd9y00062v6jspcfrkx7%2522%252C%2522sizes%2522%253A%255B100%252C0%255D%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522EDITOR%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522EDITOR%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522EDITOR%2522%252C%2522id%2522%253A%2522clyk5bd9x00022v6jyg71cr9e%2522%257D%255D%257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522SHELLS%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522SHELLS%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522SHELLS%2522%252C%2522id%2522%253A%2522clyk5bd9x00042v6jsos2y043%2522%257D%255D%257D%255D%257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522direction%2522%253A%2522vertical%2522%252C%2522id%2522%253A%2522DEVTOOLS%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522id%2522%253A%2522clyk5bd9x00052v6j5r632b12%2522%257D%255D%257D%255D%252C%2522sizes%2522%253A%255B50%252C50%255D%257D%252C%2522tabbedPanels%2522%253A%257B%2522clyk5bd9x00022v6jyg71cr9e%2522%253A%257B%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522clyk5bd9w00012v6j83rq3bvo%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522FILE%2522%252C%2522filepath%2522%253A%2522%252FREADME.md%2522%252C%2522state%2522%253A%2522IDLE%2522%257D%255D%252C%2522id%2522%253A%2522clyk5bd9x00022v6jyg71cr9e%2522%252C%2522activeTabId%2522%253A%2522clyk5bd9w00012v6j83rq3bvo%2522%257D%252C%2522clyk5bd9x00052v6j5r632b12%2522%253A%257B%2522id%2522%253A%2522clyk5bd9x00052v6j5r632b12%2522%252C%2522activeTabId%2522%253A%2522clyk5bdjx000b2v6jfc8ae464%2522%252C%2522tabs%2522%253A%255B%257B%2522type%2522%253A%2522SETUP_TASKS%2522%252C%2522id%2522%253A%2522clyk5bdjx000b2v6jfc8ae464%2522%252C%2522mode%2522%253A%2522permanent%2522%257D%252C%257B%2522type%2522%253A%2522UNASSIGNED_PORT%2522%252C%2522port%2522%253A2222%252C%2522id%2522%253A%2522clyk5cjbo004d2v6j3u55k74g%2522%252C%2522mode%2522%253A%2522permanent%2522%257D%252C%257B%2522type%2522%253A%2522ENV_SETUP%2522%252C%2522id%2522%253A%2522clyk5h8dp000r2v6j0r7kc7qq%2522%252C%2522mode%2522%253A%2522permanent%2522%257D%255D%257D%252C%2522clyk5bd9x00042v6jsos2y043%2522%253A%257B%2522id%2522%253A%2522clyk5bd9x00042v6jsos2y043%2522%252C%2522activeTabId%2522%253A%2522clyk5cbuv001q2v6joegrxxv6%2522%252C%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522clyk5bd9x00032v6jtfhj316o%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522NEW_TERMINAL%2522%257D%252C%257B%2522type%2522%253A%2522TASK_LOG%2522%252C%2522taskId%2522%253A%2522dev%2522%252C%2522id%2522%253A%2522clyk5cbuv001q2v6joegrxxv6%2522%252C%2522mode%2522%253A%2522permanent%2522%257D%252C%257B%2522type%2522%253A%2522TASK_LOG%2522%252C%2522taskId%2522%253A%2522cleanupDist%2522%252C%2522id%2522%253A%2522clyk5dgvo005i2v6jj950sxft%2522%252C%2522mode%2522%253A%2522permanent%2522%257D%255D%257D%257D%252C%2522showDevtools%2522%253Atrue%252C%2522showShells%2522%253Atrue%252C%2522showSidebar%2522%253Atrue%252C%2522sidebarPanelSize%2522%253A15%257D" target="_blank">Demo on Codesandbox</a>
|
|
32
31
|
|
|
33
32
|
|
|
34
33
|
<hr />
|
|
@@ -381,11 +380,11 @@ npm run dev
|
|
|
381
380
|
|
|
382
381
|
- 버그 리포트, 기능 요청 또는 질문을 위해 [GitHub 이슈](https://github.com/asmyshlyaev177/state-in-url/issues)를 생성하세요
|
|
383
382
|
|
|
384
|
-
## [변경 로그](https://github.com/asmyshlyaev177/state-in-url/blob/
|
|
383
|
+
## [변경 로그](https://github.com/asmyshlyaev177/state-in-url/blob/master/CHANGELOG.md)
|
|
385
384
|
|
|
386
385
|
## 라이선스
|
|
387
386
|
|
|
388
|
-
이 프로젝트는 [MIT 라이선스](https://github.com/asmyshlyaev177/state-in-url/blob/
|
|
387
|
+
이 프로젝트는 [MIT 라이선스](https://github.com/asmyshlyaev177/state-in-url/blob/master/LICENSE)에 따라 라이선스가 부여됩니다.
|
|
389
388
|
|
|
390
389
|
## 영감
|
|
391
390
|
|
package/README.md
CHANGED
|
@@ -10,41 +10,48 @@ English | [한국어](./README.KO.md) | [简体中文](./README.CN.md)
|
|
|
10
10
|
<hr />
|
|
11
11
|
|
|
12
12
|
[](https://www.npmjs.com/package/state-in-url)
|
|
13
|
-

|
|
14
14
|
[](https://app.codacy.com/gh/asmyshlyaev177/state-in-url/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
|
|
15
15
|
[](https://github.com/asmyshlyaev177/state-in-url/)
|
|
16
16
|
[]([https://github.com/semantic-release/semantic-release](https://github.com/asmyshlyaev177/state-in-url))
|
|
17
17
|

|
|
18
|
+
|
|
19
|
+
[](https://stand-with-ukraine.pp.ua/)
|
|
18
20
|
</div>
|
|
19
21
|
|
|
20
22
|
<div align="center">
|
|
21
23
|
|
|
22
24
|
<h4 align="center">Don't hesitate to open an issue if you found a bug, or for requesting features</h4>
|
|
23
25
|
|
|
24
|
-

|
|
25
27
|
|
|
26
28
|
<a href="https://state-in-url-asmyshlyaev177.vercel.app/" target="_blank">DEMO</a> |
|
|
27
29
|
<a href="https://state-in-url.netlify.app/" target="_blank">DEMO2</a> |
|
|
28
|
-
<a href ="https://codesandbox.io/p/github/asmyshlyaev177/state-in-url/main?layout=%257B%2522sidebarPanel%2522%253A%2522EXPLORER%2522%252C%2522rootPanelGroup%2522%253A%257B%2522direction%2522%253A%2522horizontal%2522%252C%2522contentType%2522%253A%2522UNKNOWN%2522%252C%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522id%2522%253A%2522ROOT_LAYOUT%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522UNKNOWN%2522%252C%2522direction%2522%253A%2522vertical%2522%252C%2522id%2522%253A%2522clyk5bd9y00062v6jspcfrkx7%2522%252C%2522sizes%2522%253A%255B100%252C0%255D%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522EDITOR%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522EDITOR%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522EDITOR%2522%252C%2522id%2522%253A%2522clyk5bd9x00022v6jyg71cr9e%2522%257D%255D%257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522SHELLS%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522SHELLS%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522SHELLS%2522%252C%2522id%2522%253A%2522clyk5bd9x00042v6jsos2y043%2522%257D%255D%257D%255D%257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522direction%2522%253A%2522vertical%2522%252C%2522id%2522%253A%2522DEVTOOLS%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522id%2522%253A%2522clyk5bd9x00052v6j5r632b12%2522%257D%255D%257D%255D%252C%2522sizes%2522%253A%255B50%252C50%255D%257D%252C%2522tabbedPanels%2522%253A%257B%2522clyk5bd9x00022v6jyg71cr9e%2522%253A%257B%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522clyk5bd9w00012v6j83rq3bvo%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522FILE%2522%252C%2522filepath%2522%253A%2522%252FREADME.md%2522%252C%2522state%2522%253A%2522IDLE%2522%257D%255D%252C%2522id%2522%253A%2522clyk5bd9x00022v6jyg71cr9e%2522%252C%2522activeTabId%2522%253A%2522clyk5bd9w00012v6j83rq3bvo%2522%257D%252C%2522clyk5bd9x00052v6j5r632b12%2522%253A%257B%2522id%2522%253A%2522clyk5bd9x00052v6j5r632b12%2522%252C%2522activeTabId%2522%253A%2522clyk5bdjx000b2v6jfc8ae464%2522%252C%2522tabs%2522%253A%255B%257B%2522type%2522%253A%2522SETUP_TASKS%2522%252C%2522id%2522%253A%2522clyk5bdjx000b2v6jfc8ae464%2522%252C%2522mode%2522%253A%2522permanent%2522%257D%252C%257B%2522type%2522%253A%2522UNASSIGNED_PORT%2522%252C%2522port%2522%253A2222%252C%2522id%2522%253A%2522clyk5cjbo004d2v6j3u55k74g%2522%252C%2522mode%2522%253A%2522permanent%2522%257D%252C%257B%2522type%2522%253A%2522ENV_SETUP%2522%252C%2522id%2522%253A%2522clyk5h8dp000r2v6j0r7kc7qq%2522%252C%2522mode%2522%253A%2522permanent%2522%257D%255D%257D%252C%2522clyk5bd9x00042v6jsos2y043%2522%253A%257B%2522id%2522%253A%2522clyk5bd9x00042v6jsos2y043%2522%252C%2522activeTabId%2522%253A%2522clyk5cbuv001q2v6joegrxxv6%2522%252C%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522clyk5bd9x00032v6jtfhj316o%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522NEW_TERMINAL%2522%257D%252C%257B%2522type%2522%253A%2522TASK_LOG%2522%252C%2522taskId%2522%253A%2522dev%2522%252C%2522id%2522%253A%2522clyk5cbuv001q2v6joegrxxv6%2522%252C%2522mode%2522%253A%2522permanent%2522%257D%252C%257B%2522type%2522%253A%2522TASK_LOG%2522%252C%2522taskId%2522%253A%2522cleanupDist%2522%252C%2522id%2522%253A%2522clyk5dgvo005i2v6jj950sxft%2522%252C%2522mode%2522%253A%2522permanent%2522%257D%255D%257D%257D%252C%2522showDevtools%2522%253Atrue%252C%2522showShells%2522%253Atrue%252C%2522showSidebar%2522%253Atrue%252C%2522sidebarPanelSize%2522%253A15%257D" target="_blank">Demo on Codesandbox</a>
|
|
29
30
|
|
|
30
31
|
<hr />
|
|
31
32
|
|
|
32
33
|
Add a ⭐️ and <a href="https://github.com/asmyshlyaev177" target="_blank">follow me</a> to support the project!
|
|
33
34
|
|
|
35
|
+
Share if it useful for you.
|
|
36
|
+
[FB](https://www.facebook.com/sharer.php?u=https://github.com/asmyshlyaev177/state-in-url)
|
|
37
|
+
[LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https://github.com/asmyshlyaev177/state-in-url)
|
|
38
|
+
[X.com](https://twitter.com/intent/tweet?&url=https://github.com/asmyshlyaev177/state-in-url)
|
|
39
|
+
[VK](http://vk.com/share.php?url=https://github.com/asmyshlyaev177/state-in-url)
|
|
40
|
+
|
|
34
41
|
<hr />
|
|
35
42
|
|
|
36
43
|
</div>
|
|
37
44
|
|
|
38
45
|
## Why use state-in-url?
|
|
39
46
|
|
|
40
|
-
`state-in-url` Simple state management with optional URL sync. Share complex states between unrelated React components, TS-friendly, NextJS compatible. Most of users don't care about URL, so, can use it to store your app state.
|
|
47
|
+
`state-in-url` Simple state management with optional URL sync. Good for implementing deep links. Share complex states between unrelated React components, TS-friendly, NextJS compatible. Most of users don't care about URL, so, can use it to store your app state.
|
|
41
48
|
|
|
42
49
|
# Use cases
|
|
43
50
|
|
|
44
51
|
- 🧮 Store unsaved user forms in URL
|
|
45
52
|
- 🙃 Share the state between different components without changing url, good as alternative to signals and other state management tools
|
|
46
53
|
- 🧠 Sync data between unrelated client components
|
|
47
|
-
- 🔗 Shareable URLs with application state
|
|
54
|
+
- 🔗 Shareable URLs with application state (Deep linking, URL state synchronization)
|
|
48
55
|
- 🔄 Easy state persistence across page reloads
|
|
49
56
|
|
|
50
57
|
# Features
|
|
@@ -53,7 +60,7 @@ Add a ⭐️ and <a href="https://github.com/asmyshlyaev177" target="_blank">fol
|
|
|
53
60
|
- 📘 **Typescript support and type Safety**: Preserves data types and structure, good developer experience with IDE suggestions, strong typing and JSDoc comments
|
|
54
61
|
- ⚛️ **Framework Flexibility**: Separate hooks for Next.js and React.js applications, and functions for pure JS
|
|
55
62
|
- ⚙ **Well tested**: Unit tests and Playwright tests, high quality and support
|
|
56
|
-
- ⚡ **Fast**: Minimal rerenders
|
|
63
|
+
- ⚡ **Fast**: Minimal rerenders, less than [1ms](https://github.com/asmyshlyaev177/state-in-url/blob/87c8c7c995c5cd7d9e7aa039c30bfe64b24abe4b/packages/urlstate/encoder/encoder.test.ts#L185) to encode and decode an object
|
|
57
64
|
- 🪶 **Lightweight**: Zero dependencies for a smaller footprint
|
|
58
65
|
|
|
59
66
|
## Table of content
|
|
@@ -235,7 +242,7 @@ const tags = [
|
|
|
235
242
|
];
|
|
236
243
|
```
|
|
237
244
|
|
|
238
|
-
[Demo page example code](https://github.com/asmyshlyaev177/state-in-url/blob/
|
|
245
|
+
[Demo page example code](https://github.com/asmyshlyaev177/state-in-url/blob/master/packages/example-nextjs14/src/app/Form.tsx)
|
|
239
246
|
|
|
240
247
|
#### Auto sync state
|
|
241
248
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from "./constants";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type JSONCompatible, type UnknownObj } from
|
|
1
|
+
import { type JSONCompatible, type UnknownObj } from "../utils";
|
|
2
2
|
/**
|
|
3
3
|
* Encodes the state object into a URL query string.
|
|
4
4
|
*
|
|
@@ -12,7 +12,7 @@ import { type JSONCompatible, type UnknownObj } from '../utils';
|
|
|
12
12
|
* encodeState({ name: 'test' }, form, 'someExistingParam=123');
|
|
13
13
|
* ```
|
|
14
14
|
*
|
|
15
|
-
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/
|
|
15
|
+
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/master/packages/urlstate/encodeState#encodestate}
|
|
16
16
|
*/
|
|
17
17
|
export declare function encodeState<T extends JSONCompatible>(state: T, defaults?: T, paramsToKeep?: string | URLSearchParams): string;
|
|
18
18
|
/**
|
|
@@ -27,6 +27,6 @@ export declare function encodeState<T extends JSONCompatible>(state: T, defaults
|
|
|
27
27
|
* decodeState('key=value&name=Alex', form);
|
|
28
28
|
* ```
|
|
29
29
|
*
|
|
30
|
-
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/
|
|
30
|
+
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/master/packages/urlstate/encodeState#decodestate}
|
|
31
31
|
*/
|
|
32
32
|
export declare function decodeState<T extends JSONCompatible>(uriString: string | URLSearchParams, defaults?: T): undefined extends T ? UnknownObj : T;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { decodeState, encodeState } from
|
|
1
|
+
export { decodeState, encodeState } from "./encodeState";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { type JSONCompatible } from
|
|
1
|
+
import { type JSONCompatible } from "../utils";
|
|
2
2
|
/**
|
|
3
3
|
* Encode any JSON serializable value to URL friendly string
|
|
4
4
|
*
|
|
5
5
|
* @param {unknown} payload any value to serialize
|
|
6
6
|
* @returns {string} URLSearchParams compatible value string
|
|
7
7
|
*
|
|
8
|
-
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/
|
|
8
|
+
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/master/packages/urlstate/encoder#encode}
|
|
9
9
|
*/
|
|
10
10
|
export declare function encode(payload: unknown): string;
|
|
11
11
|
export type Primitive = Exclude<ReturnType<typeof decodePrimitive>, typeof errorSym>;
|
|
@@ -16,7 +16,7 @@ export type Primitive = Exclude<ReturnType<typeof decodePrimitive>, typeof error
|
|
|
16
16
|
* @param {any} fallback optional fallback value
|
|
17
17
|
* @returns {unknown} decoded object
|
|
18
18
|
*
|
|
19
|
-
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/
|
|
19
|
+
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/master/packages/urlstate/encoder#decode}
|
|
20
20
|
*/
|
|
21
21
|
export declare function decode<T>(payload: string, fallback?: T): JSONCompatible | Primitive;
|
|
22
22
|
export declare const decodePrimitive: (str: string) => Date | typeof errorSym | undefined;
|
package/dist/encoder/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { decode, encode } from
|
|
1
|
+
export { decode, encode } from "./encoder";
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { decode, encode } from
|
|
2
|
-
import { decodeState, encodeState } from
|
|
3
|
-
import { useUrlState } from
|
|
4
|
-
import { useSharedState } from
|
|
5
|
-
import { useUrlEncode } from
|
|
6
|
-
import { useUrlStateBase } from
|
|
7
|
-
import { isSSR, type JSONCompatible, type Type, typeOf } from
|
|
1
|
+
import { decode, encode } from "./encoder";
|
|
2
|
+
import { decodeState, encodeState } from "./encodeState";
|
|
3
|
+
import { useUrlState } from "./next";
|
|
4
|
+
import { useSharedState } from "./useSharedState";
|
|
5
|
+
import { useUrlEncode } from "./useUrlEncode";
|
|
6
|
+
import { useUrlStateBase } from "./useUrlStateBase";
|
|
7
|
+
import { isSSR, type JSONCompatible, type Type, typeOf } from "./utils";
|
|
8
8
|
export { decode, decodeState, encode, encodeState, isSSR, typeOf, useSharedState, useUrlEncode, useUrlState, useUrlStateBase, };
|
|
9
9
|
export type { JSONCompatible, Type };
|
package/dist/next/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { useUrlState } from
|
|
1
|
+
export { useUrlState } from "./useUrlState";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from "./useUrlState";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useRouter } from
|
|
2
|
-
import { type DeepReadonly, type JSONCompatible } from
|
|
1
|
+
import { useRouter } from "next/navigation";
|
|
2
|
+
import { type DeepReadonly, type JSONCompatible } from "../../utils";
|
|
3
3
|
/**
|
|
4
4
|
* NextJS hook. Returns `state`, `updateState`, and `updateUrl` functions
|
|
5
5
|
*
|
|
@@ -20,7 +20,7 @@ import { type DeepReadonly, type JSONCompatible } from '../../utils';
|
|
|
20
20
|
* updateUrl(curr => ({ ...curr, name: 'test' }), { replace: true, scroll: true });
|
|
21
21
|
* ```
|
|
22
22
|
*
|
|
23
|
-
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/
|
|
23
|
+
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/master/packages/urlstate/next/useUrlState#api}
|
|
24
24
|
*/
|
|
25
25
|
export declare function useUrlState<T extends JSONCompatible>({ defaultState, searchParams, ...opts }: {
|
|
26
26
|
defaultState: T;
|
|
@@ -36,7 +36,7 @@ export declare function useUrlState<T extends JSONCompatible>({ defaultState, se
|
|
|
36
36
|
* updateState(curr => ({ ...curr, name: 'test' }) );
|
|
37
37
|
* ```
|
|
38
38
|
*
|
|
39
|
-
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/
|
|
39
|
+
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/master/packages/urlstate/next/useUrlState#updatestate}
|
|
40
40
|
*/
|
|
41
41
|
updateState: (value: Partial<T> | Partial<DeepReadonly<T>> | ((currState: T) => T)) => void;
|
|
42
42
|
/**
|
|
@@ -47,14 +47,14 @@ export declare function useUrlState<T extends JSONCompatible>({ defaultState, se
|
|
|
47
47
|
* updateUrl(curr => ({ ...curr, name: 'test' }), { replace: true, scroll: false } );
|
|
48
48
|
* ```
|
|
49
49
|
*
|
|
50
|
-
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/
|
|
50
|
+
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/master/packages/urlstate/next/useUrlState#updateurl}
|
|
51
51
|
*/
|
|
52
52
|
updateUrl: (value?: Parameters<(value?: Partial<T> | Partial<DeepReadonly<T>> | ((currState: T) => T) | undefined, options?: import("../../useUrlStateBase/useUrlStateBase").Options) => void>[0], options?: Options) => void;
|
|
53
53
|
state: DeepReadonly<DeepReadonly<T>>;
|
|
54
54
|
getState: () => T;
|
|
55
55
|
};
|
|
56
56
|
type Router = ReturnType<typeof useRouter>;
|
|
57
|
-
type RouterOptions = NonNullable<Parameters<Router[
|
|
57
|
+
type RouterOptions = NonNullable<Parameters<Router["push"]>[1] | Parameters<Router["replace"]>[1]>;
|
|
58
58
|
interface Options extends RouterOptions {
|
|
59
59
|
replace?: boolean;
|
|
60
60
|
}
|
package/dist/parseSPObj.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { type JSONCompatible } from
|
|
1
|
+
import { type JSONCompatible } from "./utils";
|
|
2
2
|
/**
|
|
3
3
|
* Parses the Next.js server-side `searchParams` into an object.
|
|
4
4
|
*
|
|
5
5
|
* Or with react-router
|
|
6
|
-
* {@link https://github.com/asmyshlyaev177/state-in-url/tree/
|
|
6
|
+
* {@link https://github.com/asmyshlyaev177/state-in-url/tree/master/packages/urlstate/react-router/useUrlState/useUrlState.ts}
|
|
7
7
|
*
|
|
8
8
|
*
|
|
9
9
|
* @param {object | undefined} sp - The server-side searchParams object to parse.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { useUrlState } from
|
|
1
|
+
export { useUrlState } from "./useUrlState";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { useUrlState } from
|
|
1
|
+
export { useUrlState } from "./useUrlState";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type NavigateOptions } from
|
|
2
|
-
import { type DeepReadonly, type JSONCompatible } from
|
|
1
|
+
import { type NavigateOptions } from "react-router-dom";
|
|
2
|
+
import { type DeepReadonly, type JSONCompatible } from "../../utils";
|
|
3
3
|
/**
|
|
4
4
|
* React-router hook. Returns `state`, `updateState`, and `updateUrl` functions
|
|
5
5
|
*
|
|
@@ -16,7 +16,7 @@ import { type DeepReadonly, type JSONCompatible } from '../../utils';
|
|
|
16
16
|
* updateUrl(curr => ({ ...curr, name: 'test' }), { replace: true });
|
|
17
17
|
* ```
|
|
18
18
|
*
|
|
19
|
-
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/
|
|
19
|
+
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/master/packages/urlstate/react-router/useUrlState#api}
|
|
20
20
|
*/
|
|
21
21
|
export declare function useUrlState<T extends JSONCompatible>({ defaultState, ...initOpts }: {
|
|
22
22
|
defaultState: T;
|
|
@@ -31,7 +31,7 @@ export declare function useUrlState<T extends JSONCompatible>({ defaultState, ..
|
|
|
31
31
|
* updateState(curr => ({ ...curr, name: 'test', preventScrollReset: false }) );
|
|
32
32
|
* ```
|
|
33
33
|
*
|
|
34
|
-
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/
|
|
34
|
+
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/master/packages/urlstate/react-router/useUrlState#updatestate}
|
|
35
35
|
*/
|
|
36
36
|
updateState: (value: Partial<T> | Partial<DeepReadonly<T>> | ((currState: T) => T)) => void;
|
|
37
37
|
/**
|
|
@@ -44,7 +44,7 @@ export declare function useUrlState<T extends JSONCompatible>({ defaultState, ..
|
|
|
44
44
|
* updateState(curr => ({ ...curr, name: 'test', preventScrollReset: false }) );
|
|
45
45
|
* ```
|
|
46
46
|
*
|
|
47
|
-
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/
|
|
47
|
+
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/master/packages/urlstate/react-router/useUrlState#updateurl}
|
|
48
48
|
*/
|
|
49
49
|
updateUrl: (value?: Parameters<(value?: Partial<T> | Partial<DeepReadonly<T>> | ((currState: T) => T) | undefined, options?: import("../../useUrlStateBase/useUrlStateBase").Options) => void>[0], options?: NavigateOptions) => void;
|
|
50
50
|
state: DeepReadonly<DeepReadonly<T>>;
|
package/dist/subscribers.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import React from
|
|
1
|
+
import React from "react";
|
|
2
2
|
export declare const useInsertionEffect: typeof React.useInsertionEffect;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { useSharedState } from
|
|
1
|
+
export { useSharedState } from "./useSharedState";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type DeepReadonly, type JSONCompatible } from
|
|
1
|
+
import { type DeepReadonly, type JSONCompatible } from "../utils";
|
|
2
2
|
/**
|
|
3
3
|
* Custom React hook for sharing state between unrelated components.
|
|
4
4
|
*
|
|
@@ -15,7 +15,7 @@ import { type DeepReadonly, type JSONCompatible } from '../utils';
|
|
|
15
15
|
* // OR
|
|
16
16
|
* setState(curr => ({ ...curr, name: 'test' }))
|
|
17
17
|
* ```
|
|
18
|
-
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/
|
|
18
|
+
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/master/packages/urlstate/useSharedState}
|
|
19
19
|
*/
|
|
20
20
|
export declare function useSharedState<T extends JSONCompatible>(defaultState: T, _getInitial?: () => T): {
|
|
21
21
|
state: T;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { useUrlEncode } from
|
|
1
|
+
export { useUrlEncode } from "./useUrlEncode";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type JSONCompatible } from
|
|
1
|
+
import { type JSONCompatible } from "../utils";
|
|
2
2
|
/**
|
|
3
3
|
* A hook that returns stringify and parse functions for encoding and decoding state
|
|
4
4
|
* to and from URL search parameters.
|
|
@@ -17,7 +17,7 @@ import { type JSONCompatible } from '../utils';
|
|
|
17
17
|
* parse('name=Tom');
|
|
18
18
|
* ```
|
|
19
19
|
*
|
|
20
|
-
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/
|
|
20
|
+
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/master/packages/urlstate/useUrlEncode#api}
|
|
21
21
|
*/
|
|
22
22
|
export declare function useUrlEncode<T extends JSONCompatible>(stateShape: T): {
|
|
23
23
|
/**
|
|
@@ -28,7 +28,7 @@ const state = parse("name='Tom'");
|
|
|
28
28
|
console.log(state); // Output: { name: 'Tom' }
|
|
29
29
|
* ```
|
|
30
30
|
*
|
|
31
|
-
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/
|
|
31
|
+
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/master/packages/urlstate/useUrlEncode#parse}
|
|
32
32
|
*/
|
|
33
33
|
parse: (strOrSearchParams: string | URLSearchParams) => typeof stateShape;
|
|
34
34
|
/**
|
|
@@ -39,7 +39,7 @@ const queryString = stringify({ name: 'John' }, 'someExistingParamToKeep=123');
|
|
|
39
39
|
console.log(queryString); // Output: name='John'&someExistingParamToKeep=123
|
|
40
40
|
* ```
|
|
41
41
|
*
|
|
42
|
-
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/
|
|
42
|
+
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/master/packages/urlstate/useUrlEncode#stringify}
|
|
43
43
|
*/
|
|
44
44
|
stringify: (state: typeof stateShape, paramsToKeep?: string | URLSearchParams) => string;
|
|
45
45
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { useUrlStateBase } from
|
|
1
|
+
export { useUrlStateBase } from "./useUrlStateBase";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useUrlEncode } from
|
|
2
|
-
import { type DeepReadonly, type JSONCompatible } from
|
|
1
|
+
import { useUrlEncode } from "../useUrlEncode";
|
|
2
|
+
import { type DeepReadonly, type JSONCompatible } from "../utils";
|
|
3
3
|
/**
|
|
4
4
|
* A custom React hook to create custom hooks.
|
|
5
5
|
*
|
|
@@ -22,7 +22,7 @@ import { type DeepReadonly, type JSONCompatible } from '../utils';
|
|
|
22
22
|
* * Docs {@link https://github.com/asmyshlyaev177/state-in-url/tree/integrations/packages/urlstate/useUrlStateBase#api}
|
|
23
23
|
*/
|
|
24
24
|
export declare function useUrlStateBase<T extends JSONCompatible>(defaultState: T, router: Router, getInitialState?: ({ parse, }: {
|
|
25
|
-
parse: ReturnType<typeof useUrlEncode<T>>[
|
|
25
|
+
parse: ReturnType<typeof useUrlEncode<T>>["parse"];
|
|
26
26
|
}) => T): {
|
|
27
27
|
updateState: (value: Partial<T> | Partial<DeepReadonly<T>> | ((currState: T) => T)) => void;
|
|
28
28
|
updateUrl: (value?: Parameters<(value: Partial<T> | Partial<DeepReadonly<T>> | ((currState: T) => T)) => void>[0], options?: Options) => void;
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type Type =
|
|
1
|
+
export type Type = "string" | "date" | "boolean" | "number" | "bigint" | "undefined" | "object" | "null" | "function" | "symbol" | "array";
|
|
2
2
|
/**
|
|
3
3
|
* A better replacement for `typeof`
|
|
4
4
|
*
|
package/package.json
CHANGED
|
@@ -1,26 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "state-in-url",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.4",
|
|
4
4
|
"description": "Library to store complex state in browser URL, includes hook for NextJS, hook for pure React, and low level helpers.",
|
|
5
5
|
"homepage": "https://state-in-url-asmyshlyaev177.vercel.app",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"front-end",
|
|
8
8
|
"state-management",
|
|
9
9
|
"state management",
|
|
10
|
-
"
|
|
10
|
+
"deep links",
|
|
11
|
+
"deep linking",
|
|
12
|
+
"url synchronization",
|
|
11
13
|
"useUrlState",
|
|
14
|
+
"state in url",
|
|
12
15
|
"client components communication",
|
|
13
16
|
"signals alternative",
|
|
14
17
|
"query string",
|
|
15
18
|
"search params",
|
|
19
|
+
"query params",
|
|
16
20
|
"typescript",
|
|
17
|
-
"react.js",
|
|
18
21
|
"workflow",
|
|
19
22
|
"javascript",
|
|
20
23
|
"hooks",
|
|
24
|
+
"react.js",
|
|
21
25
|
"reactjs",
|
|
22
26
|
"react",
|
|
23
|
-
"NextJS"
|
|
27
|
+
"NextJS",
|
|
28
|
+
"Next.js"
|
|
24
29
|
],
|
|
25
30
|
"repository": {
|
|
26
31
|
"type": "git",
|
|
@@ -373,7 +378,9 @@
|
|
|
373
378
|
"cz": "^1.8.2",
|
|
374
379
|
"cz-conventional-changelog": "^3.3.0",
|
|
375
380
|
"eslint": "^8.57.0",
|
|
381
|
+
"eslint-config-prettier": "^9.1.0",
|
|
376
382
|
"eslint-plugin-maintainable": "^0.4.4",
|
|
383
|
+
"eslint-plugin-prettier": "^5.2.1",
|
|
377
384
|
"eslint-plugin-react-hooks": "^4.6.2",
|
|
378
385
|
"husky": "^9.0.11",
|
|
379
386
|
"jest": "^29.7.0",
|
|
@@ -381,6 +388,7 @@
|
|
|
381
388
|
"lint-staged": "^15.2.9",
|
|
382
389
|
"playwright": "^1.45.3",
|
|
383
390
|
"prettier": "^3.2.5",
|
|
391
|
+
"prettier-plugin-tailwindcss": "^0.6.8",
|
|
384
392
|
"release-it": "^17.6.0",
|
|
385
393
|
"rollup": "^4.23.0",
|
|
386
394
|
"rollup-plugin-filesize": "^10.0.0",
|