state-in-url 6.1.1 → 6.1.3
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 +2 -1
- package/README.KO.md +2 -1
- package/README.md +1 -1
- package/dist/package.json +577 -0
- package/dist/utils.d.ts +2 -2
- package/dist/utils.js +1 -1
- package/dist/utils.mjs +1 -1
- package/package.json +9 -9
package/README.CN.md
CHANGED
|
@@ -100,6 +100,7 @@
|
|
|
100
100
|
## 目录
|
|
101
101
|
|
|
102
102
|
- [State in url](#state-in-url)
|
|
103
|
+
- [State in url](#state-in-url-1)
|
|
103
104
|
- [演示](#演示)
|
|
104
105
|
- [为什么使用 `state-in-url`?](#为什么使用-state-in-url)
|
|
105
106
|
- [使用场景](#使用场景)
|
|
@@ -621,7 +622,7 @@ const tags = [
|
|
|
621
622
|
];
|
|
622
623
|
```
|
|
623
624
|
|
|
624
|
-
[演示页面示例代码](https://github.com/asmyshlyaev177/state-in-url/blob/master/packages/example-
|
|
625
|
+
[演示页面示例代码](https://github.com/asmyshlyaev177/state-in-url/blob/master/packages/example-nextjs15/src/app/Form.tsx)
|
|
625
626
|
</details>
|
|
626
627
|
|
|
627
628
|
##### 仅更新状态并手动同步到 URL
|
package/README.KO.md
CHANGED
|
@@ -136,6 +136,7 @@ Next.js와 react-router용 `useUrlState` 훅과 그 외 JS 환경을 위한 헬
|
|
|
136
136
|
- [변경 로그](#변경-로그)
|
|
137
137
|
- [언급](#언급)
|
|
138
138
|
- [라이선스](#라이선스)
|
|
139
|
+
- [개인 웹사이트](#개인-웹사이트)
|
|
139
140
|
- [영감](#영감)
|
|
140
141
|
|
|
141
142
|
## 설치
|
|
@@ -614,7 +615,7 @@ const tags = [
|
|
|
614
615
|
];
|
|
615
616
|
```
|
|
616
617
|
|
|
617
|
-
[데모 페이지 예제 코드](https://github.com/asmyshlyaev177/state-in-url/blob/master/packages/example-
|
|
618
|
+
[데모 페이지 예제 코드](https://github.com/asmyshlyaev177/state-in-url/blob/master/packages/example-nextjs15/src/app/Form.tsx)
|
|
618
619
|
</details>
|
|
619
620
|
|
|
620
621
|
##### 상태만 업데이트하고 URL에 수동으로 동기화
|
package/README.md
CHANGED
|
@@ -621,7 +621,7 @@ const tags = [
|
|
|
621
621
|
];
|
|
622
622
|
```
|
|
623
623
|
|
|
624
|
-
[Demo page example code](https://github.com/asmyshlyaev177/state-in-url/blob/master/packages/example-
|
|
624
|
+
[Demo page example code](https://github.com/asmyshlyaev177/state-in-url/blob/master/packages/example-nextjs15/src/app/Form.tsx)
|
|
625
625
|
</details>
|
|
626
626
|
|
|
627
627
|
##### Update state only and sync to URL manually
|
|
@@ -0,0 +1,577 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "state-in-url",
|
|
3
|
+
"version": "6.1.3",
|
|
4
|
+
"description": "Store state in URL as in object, types and structure are preserved, with TS validation. Same API as React.useState, wthout any hasssle or boilerplate. Next.js@14-15, react-router@6-7, and remix@2.",
|
|
5
|
+
"homepage": "https://state-in-url.dev",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/asmyshlyaev177/state-in-url.git"
|
|
9
|
+
},
|
|
10
|
+
"author": {
|
|
11
|
+
"name": "asmyshlyaev177",
|
|
12
|
+
"email": "asmyshlyaev177@gmail.com",
|
|
13
|
+
"url": "https://www.linkedin.com/in/asmyshlyaev177/"
|
|
14
|
+
},
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"registry": "https://registry.npmjs.org/",
|
|
17
|
+
"tag": "latest",
|
|
18
|
+
"provenance": true
|
|
19
|
+
},
|
|
20
|
+
"license": "MIT",
|
|
21
|
+
"funding": {
|
|
22
|
+
"type": "patreon",
|
|
23
|
+
"url": "https://patreon.com/asmyshlyaev177"
|
|
24
|
+
},
|
|
25
|
+
"bugs": {
|
|
26
|
+
"url": "https://github.com/asmyshlyaev177/state-in-url/issues"
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"dist"
|
|
30
|
+
],
|
|
31
|
+
"main": "./dist/index.js",
|
|
32
|
+
"module": "dist/index.mjs",
|
|
33
|
+
"exports": {
|
|
34
|
+
".": {
|
|
35
|
+
"require": "./dist/index.js",
|
|
36
|
+
"types": "./dist/index.d.ts",
|
|
37
|
+
"default": "./dist/index.mjs"
|
|
38
|
+
},
|
|
39
|
+
"./next": {
|
|
40
|
+
"require": "./dist/next/index.js",
|
|
41
|
+
"types": "./dist/next/index.d.ts",
|
|
42
|
+
"default": "./dist/next/index.mjs"
|
|
43
|
+
},
|
|
44
|
+
"./react-router6": {
|
|
45
|
+
"require": "./dist/react-router6/index.js",
|
|
46
|
+
"types": "./dist/react-router6/index.d.ts",
|
|
47
|
+
"default": "./dist/react-router6/index.mjs"
|
|
48
|
+
},
|
|
49
|
+
"./react-router": {
|
|
50
|
+
"require": "./dist/react-router/index.js",
|
|
51
|
+
"types": "./dist/react-router/index.d.ts",
|
|
52
|
+
"default": "./dist/react-router/index.mjs"
|
|
53
|
+
},
|
|
54
|
+
"./remix": {
|
|
55
|
+
"require": "./dist/remix/index.js",
|
|
56
|
+
"types": "./dist/remix/index.d.ts",
|
|
57
|
+
"default": "./dist/remix/index.mjs"
|
|
58
|
+
},
|
|
59
|
+
"./encodeState": {
|
|
60
|
+
"require": "./dist/encodeState/index.js",
|
|
61
|
+
"types": "./dist/encodeState/index.d.ts",
|
|
62
|
+
"default": "./dist/encodeState/index.mjs"
|
|
63
|
+
},
|
|
64
|
+
"./encoder": {
|
|
65
|
+
"require": "./dist/encoder/index.js",
|
|
66
|
+
"types": "./dist/encoder/index.d.ts",
|
|
67
|
+
"default": "./dist/encoder/index.mjs"
|
|
68
|
+
},
|
|
69
|
+
"./useSharedState": {
|
|
70
|
+
"require": "./dist/useSharedState/index.js",
|
|
71
|
+
"types": "./dist/useSharedState/index.d.ts",
|
|
72
|
+
"default": "./dist/useSharedState/index.mjs"
|
|
73
|
+
},
|
|
74
|
+
"./useUrlEncode": {
|
|
75
|
+
"require": "./dist/useUrlEncode/index.js",
|
|
76
|
+
"types": "./dist/useUrlEncode/index.d.ts",
|
|
77
|
+
"default": "./dist/useUrlEncode/index.mjs"
|
|
78
|
+
},
|
|
79
|
+
"./useUrlStateBase": {
|
|
80
|
+
"require": "./dist/useUrlStateBase/index.js",
|
|
81
|
+
"types": "./dist/useUrlStateBase/index.d.ts",
|
|
82
|
+
"default": "./dist/useUrlStateBase/index.mjs"
|
|
83
|
+
},
|
|
84
|
+
"./utils": {
|
|
85
|
+
"require": "./dist/utils.js",
|
|
86
|
+
"types": "./dist/utils.d.ts",
|
|
87
|
+
"default": "./dist/utils.mjs"
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"types": "./dist/index.d.ts",
|
|
91
|
+
"scripts": {
|
|
92
|
+
"test:unit": "wireit",
|
|
93
|
+
"test:int": "wireit",
|
|
94
|
+
"test:int:ci": "wireit",
|
|
95
|
+
"test:exports": "pnpm run build && npx babel-node --extensions .js,.mjs,.ts,.mts --config-file ./babel.config.json -- ./packages/urlstate/exportsTest.ts",
|
|
96
|
+
"install:all": "pnpm install",
|
|
97
|
+
"install:ci": "pnpm install --frozen-lockfile",
|
|
98
|
+
"test": "wireit",
|
|
99
|
+
"tsc": "wireit",
|
|
100
|
+
"dev": "wireit",
|
|
101
|
+
"dev:lib": "wireit",
|
|
102
|
+
"dev:nextjs14": "wireit",
|
|
103
|
+
"dev:nextjs15": "wireit",
|
|
104
|
+
"dev:nextjs16": "wireit",
|
|
105
|
+
"dev:remix2": "wireit",
|
|
106
|
+
"bump": "npx standard-version --no-verify",
|
|
107
|
+
"build": "wireit",
|
|
108
|
+
"build:demo": "wireit",
|
|
109
|
+
"start:demo": "wireit",
|
|
110
|
+
"build:packages": "wireit",
|
|
111
|
+
"start:demo15": "wireit",
|
|
112
|
+
"start:demo15:ci": "wireit",
|
|
113
|
+
"start:react": "wireit",
|
|
114
|
+
"start": "wireit",
|
|
115
|
+
"start:ci": "wireit",
|
|
116
|
+
"kill-next": "wireit",
|
|
117
|
+
"kill-vite": "wireit",
|
|
118
|
+
"kill": "wireit",
|
|
119
|
+
"rmdist": "rm -rf dist",
|
|
120
|
+
"cleanup": "rm -rf dist .wireit node_modules test-results playwright-report coverage-reports nyc_coverage packages/example-nextjs14/node_modules packages/example-nextjs14/.next packages/example-nextjs15/node_modules packages/example-nextjs15/.next packages/example-nextjs16/node_modules packages/example-nextjs16/.next packages/example-react/node_modules packages/example-react-router6/node_modules packages/example-react-router7/node_modules packages/example-remix2/node_modules",
|
|
121
|
+
"reinstall": "pnpm run cleanup && pnpm install",
|
|
122
|
+
"setup": "playwright install --with-deps",
|
|
123
|
+
"prepack": "pnpm run build && cp package.json dist/package.json",
|
|
124
|
+
"pin-gh-deps": "pin-github-action -i .github/workflows/tests.yml",
|
|
125
|
+
"prepare": "pnpm exec husky"
|
|
126
|
+
},
|
|
127
|
+
"wireit": {
|
|
128
|
+
"dev": {
|
|
129
|
+
"dependencies": [
|
|
130
|
+
"dev:lib",
|
|
131
|
+
"dev:react",
|
|
132
|
+
"dev:remix2",
|
|
133
|
+
"dev:router6",
|
|
134
|
+
"dev:router7",
|
|
135
|
+
"dev:nextjs16",
|
|
136
|
+
"start:demo14"
|
|
137
|
+
],
|
|
138
|
+
"service": {
|
|
139
|
+
"readyWhen": {
|
|
140
|
+
"lineMatches": "http://localhost:3000"
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
"command": "pnpm run dev:nextjs15"
|
|
144
|
+
},
|
|
145
|
+
"test": {
|
|
146
|
+
"dependencies": [
|
|
147
|
+
"tsc",
|
|
148
|
+
"test:unit",
|
|
149
|
+
"build:packages"
|
|
150
|
+
],
|
|
151
|
+
"command": "pnpm run test:exports && pnpm run test:int"
|
|
152
|
+
},
|
|
153
|
+
"kill-next": {
|
|
154
|
+
"command": "ps aux | grep .next | grep -v grep | awk '{print $2}' | xargs kill -9 2>&1; exit 0"
|
|
155
|
+
},
|
|
156
|
+
"kill-vite": {
|
|
157
|
+
"command": "ps aux | grep '.bin/vite' | grep -v grep | awk '{print $2}' | xargs kill -9 2>&1; exit 0"
|
|
158
|
+
},
|
|
159
|
+
"kill-wireit": {
|
|
160
|
+
"command": "ps axu | grep wireit | awk '{print $2}' | xargs kill -9"
|
|
161
|
+
},
|
|
162
|
+
"kill": {
|
|
163
|
+
"command": "killed",
|
|
164
|
+
"dependencies": [
|
|
165
|
+
"kill-next",
|
|
166
|
+
"kill-vite",
|
|
167
|
+
"kill-wireit"
|
|
168
|
+
]
|
|
169
|
+
},
|
|
170
|
+
"test:int:ci": {
|
|
171
|
+
"command": "npx cross-env HOME=/root PLAYWRIGHT_BROWSERS_PATH=0 playwright test"
|
|
172
|
+
},
|
|
173
|
+
"test:int": {
|
|
174
|
+
"command": "playwright test --project=chromium --retries=2"
|
|
175
|
+
},
|
|
176
|
+
"tsc": {
|
|
177
|
+
"command": "npx tsc --noEmit"
|
|
178
|
+
},
|
|
179
|
+
"test:unit": {
|
|
180
|
+
"dependencies": [
|
|
181
|
+
"tsc"
|
|
182
|
+
],
|
|
183
|
+
"command": "npx vitest"
|
|
184
|
+
},
|
|
185
|
+
"dev:lib": {
|
|
186
|
+
"command": "cross-env IS_DEVELOPMENT=true rollup -c rollup.config.mjs -w",
|
|
187
|
+
"service": {
|
|
188
|
+
"readyWhen": {
|
|
189
|
+
"lineMatches": "created "
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
"dependencies": [
|
|
193
|
+
"rmdist"
|
|
194
|
+
]
|
|
195
|
+
},
|
|
196
|
+
"dev:router6": {
|
|
197
|
+
"command": "cd packages/example-react-router6 && pnpm run dev",
|
|
198
|
+
"service": true
|
|
199
|
+
},
|
|
200
|
+
"dev:router7": {
|
|
201
|
+
"command": "cd packages/example-react-router7 && pnpm run dev",
|
|
202
|
+
"service": true
|
|
203
|
+
},
|
|
204
|
+
"dev:remix2": {
|
|
205
|
+
"command": "cd packages/example-remix2 && PORT=3003 pnpm run dev",
|
|
206
|
+
"service": true
|
|
207
|
+
},
|
|
208
|
+
"dev:nextjs14": {
|
|
209
|
+
"command": "cd packages/example-nextjs14 && pnpm run dev --turbo",
|
|
210
|
+
"service": true
|
|
211
|
+
},
|
|
212
|
+
"dev:nextjs15": {
|
|
213
|
+
"command": "cd packages/example-nextjs15 && pnpm run dev --turbo",
|
|
214
|
+
"service": true
|
|
215
|
+
},
|
|
216
|
+
"dev:nextjs16": {
|
|
217
|
+
"command": "cd packages/example-nextjs16 && pnpm run dev --turbo",
|
|
218
|
+
"service": true
|
|
219
|
+
},
|
|
220
|
+
"build:next14": {
|
|
221
|
+
"command": "cd packages/example-nextjs14 && pnpm run build",
|
|
222
|
+
"dependencies": [
|
|
223
|
+
"build"
|
|
224
|
+
]
|
|
225
|
+
},
|
|
226
|
+
"build:next15": {
|
|
227
|
+
"command": "cd packages/example-nextjs15 && pnpm run build",
|
|
228
|
+
"dependencies": [
|
|
229
|
+
"build"
|
|
230
|
+
]
|
|
231
|
+
},
|
|
232
|
+
"build:next16": {
|
|
233
|
+
"command": "cd packages/example-nextjs16 && pnpm run build",
|
|
234
|
+
"dependencies": [
|
|
235
|
+
"build"
|
|
236
|
+
]
|
|
237
|
+
},
|
|
238
|
+
"build:router6": {
|
|
239
|
+
"command": "cd packages/example-react-router6 && pnpm run build",
|
|
240
|
+
"dependencies": [
|
|
241
|
+
"build"
|
|
242
|
+
]
|
|
243
|
+
},
|
|
244
|
+
"build:router7": {
|
|
245
|
+
"command": "cd packages/example-react-router7 && pnpm run build",
|
|
246
|
+
"dependencies": [
|
|
247
|
+
"build"
|
|
248
|
+
]
|
|
249
|
+
},
|
|
250
|
+
"build:remix2": {
|
|
251
|
+
"command": "cd packages/example-remix2 && pnpm run build",
|
|
252
|
+
"dependencies": [
|
|
253
|
+
"build"
|
|
254
|
+
]
|
|
255
|
+
},
|
|
256
|
+
"build:demo": {
|
|
257
|
+
"dependencies": [
|
|
258
|
+
"build"
|
|
259
|
+
],
|
|
260
|
+
"command": "cd packages/example-nextjs15 && pnpm run build"
|
|
261
|
+
},
|
|
262
|
+
"build:demo:tests": {
|
|
263
|
+
"dependencies": [
|
|
264
|
+
"build"
|
|
265
|
+
],
|
|
266
|
+
"command": "cd packages/example-nextjs15 && npx cross-env TEST=true pnpm run build"
|
|
267
|
+
},
|
|
268
|
+
"start:demo": {
|
|
269
|
+
"dependencies": [
|
|
270
|
+
"build:demo"
|
|
271
|
+
],
|
|
272
|
+
"command": "cd packages/example-nextjs15 && pnpm run start",
|
|
273
|
+
"service": true
|
|
274
|
+
},
|
|
275
|
+
"start:demo:ci": {
|
|
276
|
+
"command": "cd packages/example-nextjs15 && pnpm run start",
|
|
277
|
+
"service": true
|
|
278
|
+
},
|
|
279
|
+
"start:react": {
|
|
280
|
+
"command": "npx vite preview --port 5180 packages/example-react",
|
|
281
|
+
"dependencies": [
|
|
282
|
+
"build:react"
|
|
283
|
+
],
|
|
284
|
+
"service": true
|
|
285
|
+
},
|
|
286
|
+
"start:react:ci": {
|
|
287
|
+
"command": "npx vite preview --port 5180 packages/example-react",
|
|
288
|
+
"service": true
|
|
289
|
+
},
|
|
290
|
+
"start:router6": {
|
|
291
|
+
"command": "npx vite preview --port 5181 packages/example-react-router6",
|
|
292
|
+
"dependencies": [
|
|
293
|
+
"build:router6"
|
|
294
|
+
],
|
|
295
|
+
"service": true
|
|
296
|
+
},
|
|
297
|
+
"start:router6:ci": {
|
|
298
|
+
"command": "npx vite preview --port 5181 packages/example-react-router6",
|
|
299
|
+
"service": true
|
|
300
|
+
},
|
|
301
|
+
"start:router7": {
|
|
302
|
+
"command": "npx vite preview --port 5183 packages/example-react-router7",
|
|
303
|
+
"dependencies": [
|
|
304
|
+
"build:router7"
|
|
305
|
+
],
|
|
306
|
+
"service": true
|
|
307
|
+
},
|
|
308
|
+
"start:router7:ci": {
|
|
309
|
+
"command": "npx vite preview --port 5183 packages/example-react-router7",
|
|
310
|
+
"service": true
|
|
311
|
+
},
|
|
312
|
+
"start:remix2": {
|
|
313
|
+
"command": "cd packages/example-remix2 && pnpm run start",
|
|
314
|
+
"dependencies": [
|
|
315
|
+
"build:remix2"
|
|
316
|
+
],
|
|
317
|
+
"service": true
|
|
318
|
+
},
|
|
319
|
+
"start:remix2:ci": {
|
|
320
|
+
"command": "cd packages/example-remix2 && pnpm run start",
|
|
321
|
+
"service": true
|
|
322
|
+
},
|
|
323
|
+
"start:demo14": {
|
|
324
|
+
"dependencies": [
|
|
325
|
+
"build:next14"
|
|
326
|
+
],
|
|
327
|
+
"command": "cd packages/example-nextjs14 && pnpm run start",
|
|
328
|
+
"service": true
|
|
329
|
+
},
|
|
330
|
+
"start:demo15": {
|
|
331
|
+
"dependencies": [
|
|
332
|
+
"build:next15"
|
|
333
|
+
],
|
|
334
|
+
"command": "cd packages/example-nextjs15 && pnpm run start",
|
|
335
|
+
"service": true
|
|
336
|
+
},
|
|
337
|
+
"start:demo14:ci": {
|
|
338
|
+
"command": "cd packages/example-nextjs14 && pnpm run start",
|
|
339
|
+
"service": true
|
|
340
|
+
},
|
|
341
|
+
"start:demo15:ci": {
|
|
342
|
+
"command": "cd packages/example-nextjs15 && pnpm run start",
|
|
343
|
+
"service": true
|
|
344
|
+
},
|
|
345
|
+
"start:demo16": {
|
|
346
|
+
"dependencies": [
|
|
347
|
+
"build:next16"
|
|
348
|
+
],
|
|
349
|
+
"command": "cd packages/example-nextjs16 && pnpm run start",
|
|
350
|
+
"service": true
|
|
351
|
+
},
|
|
352
|
+
"start:demo16:ci": {
|
|
353
|
+
"command": "cd packages/example-nextjs16 && pnpm run start",
|
|
354
|
+
"service": true
|
|
355
|
+
},
|
|
356
|
+
"start": {
|
|
357
|
+
"command": "pnpm run start:demo15",
|
|
358
|
+
"dependencies": [
|
|
359
|
+
"start:demo14",
|
|
360
|
+
"start:demo16",
|
|
361
|
+
"start:react",
|
|
362
|
+
"start:router6",
|
|
363
|
+
"start:router7",
|
|
364
|
+
"start:remix2"
|
|
365
|
+
],
|
|
366
|
+
"service": true
|
|
367
|
+
},
|
|
368
|
+
"start:ci": {
|
|
369
|
+
"command": "pnpm run start:demo15:ci",
|
|
370
|
+
"dependencies": [
|
|
371
|
+
"start:demo14:ci",
|
|
372
|
+
"start:demo16:ci",
|
|
373
|
+
"start:react:ci",
|
|
374
|
+
"start:router6:ci",
|
|
375
|
+
"start:router7:ci",
|
|
376
|
+
"start:remix2:ci"
|
|
377
|
+
],
|
|
378
|
+
"service": true
|
|
379
|
+
},
|
|
380
|
+
"dev:react": {
|
|
381
|
+
"command": "cd packages/example-react && pnpm run dev",
|
|
382
|
+
"service": true
|
|
383
|
+
},
|
|
384
|
+
"build:packages": {
|
|
385
|
+
"dependencies": [
|
|
386
|
+
"build",
|
|
387
|
+
"build:react",
|
|
388
|
+
"build:demo:tests",
|
|
389
|
+
"build:next14",
|
|
390
|
+
"build:next16",
|
|
391
|
+
"build:router6",
|
|
392
|
+
"build:router7",
|
|
393
|
+
"build:remix2"
|
|
394
|
+
]
|
|
395
|
+
},
|
|
396
|
+
"build:react": {
|
|
397
|
+
"command": "cd packages/example-react && pnpm run build"
|
|
398
|
+
},
|
|
399
|
+
"build": {
|
|
400
|
+
"command": "rollup -c rollup.config.mjs",
|
|
401
|
+
"dependencies": [
|
|
402
|
+
"rmdist"
|
|
403
|
+
]
|
|
404
|
+
}
|
|
405
|
+
},
|
|
406
|
+
"browserslist": [
|
|
407
|
+
"last 5 Chrome versions",
|
|
408
|
+
"last 5 ChromeAndroid versions",
|
|
409
|
+
"last 5 Firefox versions",
|
|
410
|
+
"last 5 FirefoxAndroid versions",
|
|
411
|
+
"Firefox ESR",
|
|
412
|
+
"last 2 Safari major versions",
|
|
413
|
+
"last 2 iOS major versions"
|
|
414
|
+
],
|
|
415
|
+
"lint-staged": {
|
|
416
|
+
"*.{js,jsx,ts,tsx}": [
|
|
417
|
+
"eslint --fix"
|
|
418
|
+
],
|
|
419
|
+
"*.{html,css,less,ejs,json}": [
|
|
420
|
+
"prettier --write"
|
|
421
|
+
]
|
|
422
|
+
},
|
|
423
|
+
"config": {
|
|
424
|
+
"commitizen": {
|
|
425
|
+
"path": "cz-conventional-changelog"
|
|
426
|
+
}
|
|
427
|
+
},
|
|
428
|
+
"commitlint": {
|
|
429
|
+
"extends": [
|
|
430
|
+
"@commitlint/config-conventional"
|
|
431
|
+
],
|
|
432
|
+
"rules": {
|
|
433
|
+
"body-max-line-length": [
|
|
434
|
+
0,
|
|
435
|
+
"always",
|
|
436
|
+
"Infinity"
|
|
437
|
+
]
|
|
438
|
+
}
|
|
439
|
+
},
|
|
440
|
+
"devDependencies": {
|
|
441
|
+
"@babel/core": "^7.28.4",
|
|
442
|
+
"@babel/node": "^7.28.0",
|
|
443
|
+
"@babel/preset-env": "^7.28.3",
|
|
444
|
+
"@babel/preset-typescript": "^7.27.1",
|
|
445
|
+
"@commitlint/cli": "^19.8.1",
|
|
446
|
+
"@commitlint/config-conventional": "^19.8.1",
|
|
447
|
+
"@playwright/test": "^1.55.1",
|
|
448
|
+
"@rollup/plugin-node-resolve": "^15.3.1",
|
|
449
|
+
"@rollup/plugin-typescript": "^12.1.4",
|
|
450
|
+
"@semantic-release/changelog": "^6.0.3",
|
|
451
|
+
"@semantic-release/commit-analyzer": "^13.0.1",
|
|
452
|
+
"@semantic-release/git": "^10.0.1",
|
|
453
|
+
"@semantic-release/npm": "^13.1.3",
|
|
454
|
+
"@semantic-release/release-notes-generator": "^14.1.0",
|
|
455
|
+
"@testing-library/dom": "^10.4.1",
|
|
456
|
+
"@testing-library/jest-dom": "^6.9.0",
|
|
457
|
+
"@testing-library/react": "^16.3.0",
|
|
458
|
+
"@testing-library/react-hooks": "^8.0.1",
|
|
459
|
+
"@types/node": "^20.19.18",
|
|
460
|
+
"@types/react": "^18.3.25",
|
|
461
|
+
"@types/react-dom": "^18.3.7",
|
|
462
|
+
"@vitest/coverage-istanbul": "^2.1.9",
|
|
463
|
+
"auto-changelog": "^2.4.0",
|
|
464
|
+
"babel-plugin-module-resolver": "^5.0.2",
|
|
465
|
+
"baseline-browser-mapping": "^2.8.32",
|
|
466
|
+
"chokidar": "^4.0.3",
|
|
467
|
+
"commitizen": "^4.3.0",
|
|
468
|
+
"commitlint": "^19.8.1",
|
|
469
|
+
"conventional-recommended-bump": "^10.0.0",
|
|
470
|
+
"cross-env": "^7.0.3",
|
|
471
|
+
"cz": "^1.8.2",
|
|
472
|
+
"cz-conventional-changelog": "^3.3.0",
|
|
473
|
+
"eslint": "^8.57.0",
|
|
474
|
+
"eslint-config-prettier": "^9.1.0",
|
|
475
|
+
"eslint-plugin-maintainable": "^0.4.4",
|
|
476
|
+
"eslint-plugin-prettier": "^5.2.1",
|
|
477
|
+
"eslint-plugin-react-hooks": "^4.6.2",
|
|
478
|
+
"eslint-plugin-simple-import-sort": "^12.1.1",
|
|
479
|
+
"glob": "^13.0.0",
|
|
480
|
+
"happy-dom": "^20.0.2",
|
|
481
|
+
"husky": "^9.1.7",
|
|
482
|
+
"lint-staged": "^15.5.2",
|
|
483
|
+
"next": "^15.5.18",
|
|
484
|
+
"nyc": "^17.1.0",
|
|
485
|
+
"only-allow": "^1.2.1",
|
|
486
|
+
"pin-github-action": "^1.9.1",
|
|
487
|
+
"playwright": "^1.55.1",
|
|
488
|
+
"prettier": "^3.6.2",
|
|
489
|
+
"prettier-plugin-tailwindcss": "^0.6.14",
|
|
490
|
+
"react": "^19.2.6",
|
|
491
|
+
"react-dom": "^19.2.6",
|
|
492
|
+
"react-router": "^7.15.0",
|
|
493
|
+
"ringfence": "^0.1.0",
|
|
494
|
+
"rollup": "^4.52.3",
|
|
495
|
+
"rollup-plugin-esbuild": "^6.2.1",
|
|
496
|
+
"rollup-plugin-filesize": "^10.0.0",
|
|
497
|
+
"rollup-plugin-sourcemaps": "^0.6.3",
|
|
498
|
+
"semantic-release": "^25.0.2",
|
|
499
|
+
"standard-version": "^9.5.0",
|
|
500
|
+
"ts-node": "^10.9.2",
|
|
501
|
+
"typescript": "^5.9.2",
|
|
502
|
+
"unplugin-auto-import": "^0.18.6",
|
|
503
|
+
"vitest": "^2.1.9",
|
|
504
|
+
"wait-on": "^8.0.5",
|
|
505
|
+
"wireit": "^0.14.12"
|
|
506
|
+
},
|
|
507
|
+
"keywords": [
|
|
508
|
+
"state in url",
|
|
509
|
+
"useSearchParams",
|
|
510
|
+
"useUrlState",
|
|
511
|
+
"url state",
|
|
512
|
+
"search params",
|
|
513
|
+
"nuqs alternative",
|
|
514
|
+
"reactive",
|
|
515
|
+
"json",
|
|
516
|
+
"state sync",
|
|
517
|
+
"state management",
|
|
518
|
+
"encode",
|
|
519
|
+
"decode",
|
|
520
|
+
"Next.js",
|
|
521
|
+
"react-router",
|
|
522
|
+
"remix",
|
|
523
|
+
"remixjs",
|
|
524
|
+
"url",
|
|
525
|
+
"url synchronization",
|
|
526
|
+
"url sync",
|
|
527
|
+
"state synchronization",
|
|
528
|
+
"synchronized state",
|
|
529
|
+
"state-in-url",
|
|
530
|
+
"store",
|
|
531
|
+
"react hook",
|
|
532
|
+
"state hook",
|
|
533
|
+
"url-state",
|
|
534
|
+
"client components communication",
|
|
535
|
+
"query string",
|
|
536
|
+
"query-string",
|
|
537
|
+
"querystring",
|
|
538
|
+
"search-params",
|
|
539
|
+
"searchparams",
|
|
540
|
+
"params",
|
|
541
|
+
"parse",
|
|
542
|
+
"stringify",
|
|
543
|
+
"query params",
|
|
544
|
+
"typescript",
|
|
545
|
+
"hooks",
|
|
546
|
+
"react.js",
|
|
547
|
+
"reactjs",
|
|
548
|
+
"react",
|
|
549
|
+
"NextJS",
|
|
550
|
+
"query params parser",
|
|
551
|
+
"query params parsing",
|
|
552
|
+
"shared state",
|
|
553
|
+
"state sharing",
|
|
554
|
+
"front-end",
|
|
555
|
+
"state-management",
|
|
556
|
+
"state-sync",
|
|
557
|
+
"search",
|
|
558
|
+
"encode url",
|
|
559
|
+
"decode url",
|
|
560
|
+
"fast"
|
|
561
|
+
],
|
|
562
|
+
"packageManager": "pnpm@10.26.0",
|
|
563
|
+
"pnpm": {
|
|
564
|
+
"overrides": {
|
|
565
|
+
"@remix-run/react>react": "18.3.1",
|
|
566
|
+
"@remix-run/react>react-dom": "18.3.1"
|
|
567
|
+
},
|
|
568
|
+
"onlyBuiltDependencies": [
|
|
569
|
+
"@parcel/watcher",
|
|
570
|
+
"core-js",
|
|
571
|
+
"esbuild",
|
|
572
|
+
"less",
|
|
573
|
+
"sharp",
|
|
574
|
+
"unrs-resolver"
|
|
575
|
+
]
|
|
576
|
+
}
|
|
577
|
+
}
|
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
|
*
|
|
@@ -23,7 +23,7 @@ export type UnknownObj = object | {
|
|
|
23
23
|
};
|
|
24
24
|
export declare const isEqual: (val1: unknown, val2: unknown) => boolean;
|
|
25
25
|
export declare function filterUnknownParamsClient<T extends object>(shape: T, params?: string | URLSearchParams | Record<string, string> | object): string;
|
|
26
|
-
export declare function filterUnknownParams<T extends object>(shape: T, searchParams?: object): T;
|
|
26
|
+
export declare function filterUnknownParams<T extends object>(shape: T, searchParams?: object | URLSearchParams): T;
|
|
27
27
|
export declare function filterUnknown<T extends object>(shape: T, entries: [key: string, value: string][]): string[][];
|
|
28
28
|
export declare function assignValue<T extends object>(shape: T, newVal: Partial<T>): T;
|
|
29
29
|
export interface Router {
|
package/dist/utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const i=n=>{if(n===null)return"null";const t=typeof n;if(t!=="object")return t;if(Array.isArray(n))return"array";if(n instanceof Date)return"date";return"object"};const u=n=>{const t=i(n);return t!=="object"&&t!=="array"};const a=typeof window==="undefined";const l=n=>{if(n instanceof URLSearchParams){return n}if(typeof n==="string"){const t=n.indexOf("?");return new URLSearchParams(t===-1?n:n.slice(t+1))}return new URLSearchParams};const y=(n,t)=>{if(n.length!==t.length)return false;return n.every((r,s)=>c(r,t[s]))};const w=(n,t)=>{const r=Object.keys(n);const s=Object.keys(t);if(r.length!==s.length)return false;return r.every(e=>c(n[e],t[e]))};const c=(n,t)=>{if(n===t)return true;if(n==null||t==null)return false;const r=i(n);const s=i(t);if(r!==s)return false;if(u(n))return false;if(r==="array"){return y(n,t)}if(r==="object"){return w(n,t)}return JSON.stringify(n)===JSON.stringify(t)};function p(n,t){const r=new URLSearchParams;const s=f(n,[...new URLSearchParams(t||"").entries()]);for(const[e,o]of s){r.set(e,o)}return r.toString()}function g(n,t){
|
|
1
|
+
"use strict";const i=n=>{if(n===null)return"null";const t=typeof n;if(t!=="object")return t;if(Array.isArray(n))return"array";if(n instanceof Date)return"date";return"object"};const u=n=>{const t=i(n);return t!=="object"&&t!=="array"};const a=typeof window==="undefined";const l=n=>{if(n instanceof URLSearchParams){return n}if(typeof n==="string"){const t=n.indexOf("?");return new URLSearchParams(t===-1?n:n.slice(t+1))}return new URLSearchParams};const y=(n,t)=>{if(n.length!==t.length)return false;return n.every((r,s)=>c(r,t[s]))};const w=(n,t)=>{const r=Object.keys(n);const s=Object.keys(t);if(r.length!==s.length)return false;return r.every(e=>c(n[e],t[e]))};const c=(n,t)=>{if(n===t)return true;if(n==null||t==null)return false;const r=i(n);const s=i(t);if(r!==s)return false;if(u(n))return false;if(r==="array"){return y(n,t)}if(r==="object"){return w(n,t)}return JSON.stringify(n)===JSON.stringify(t)};function p(n,t){const r=new URLSearchParams;const s=f(n,[...new URLSearchParams(t||"").entries()]);for(const[e,o]of s){r.set(e,o)}return r.toString()}function g(n,t){const r=t instanceof URLSearchParams?[...t.entries()]:Object.entries(t||{});return Object.fromEntries(f(n,r))}function f(n,t){const r=Object.keys(n);const s=[];for(let e=0;e<t.length;e++){if(r.includes(t[e]?.[0])){s.push([t[e][0].replace(/\+/g," "),t[e][1]])}}return s}function h(n,t){const r=Object.assign({},n);for(const[s]of Object.entries(n)){const e=s;const o=t[e]!==void 0;r[e]=o?t[e]:n[e]}return r}const S={push:n=>{if(typeof window!=="undefined"){window.history.pushState(null,"",n)}},replace:n=>{if(typeof window!=="undefined"){window.history.replaceState(null,"",n)}}};const d=/apple/i.test(!a&&navigator?.userAgent||"");const m="popstate";function P(){return a?"":window.location.search}exports.assignValue=h;exports.filterUnknown=f;exports.filterUnknownParams=g;exports.filterUnknownParamsClient=p;exports.getParams=l;exports.getSearch=P;exports.isEqual=c;exports.isPrimitive=u;exports.isSSR=a;exports.isSafari=d;exports.popstateEv=m;exports.routerHistory=S;exports.typeOf=i;
|
package/dist/utils.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const o=n=>{if(n===null)return"null";const t=typeof n;if(t!=="object")return t;if(Array.isArray(n))return"array";if(n instanceof Date)return"date";return"object"};const u=n=>{const t=o(n);return t!=="object"&&t!=="array"};const a=typeof window==="undefined";const l=n=>{if(n instanceof URLSearchParams){return n}if(typeof n==="string"){const t=n.indexOf("?");return new URLSearchParams(t===-1?n:n.slice(t+1))}return new URLSearchParams};const y=(n,t)=>{if(n.length!==t.length)return false;return n.every((r,s)=>c(r,t[s]))};const p=(n,t)=>{const r=Object.keys(n);const s=Object.keys(t);if(r.length!==s.length)return false;return r.every(e=>c(n[e],t[e]))};const c=(n,t)=>{if(n===t)return true;if(n==null||t==null)return false;const r=o(n);const s=o(t);if(r!==s)return false;if(u(n))return false;if(r==="array"){return y(n,t)}if(r==="object"){return p(n,t)}return JSON.stringify(n)===JSON.stringify(t)};function w(n,t){const r=new URLSearchParams;const s=f(n,[...new URLSearchParams(t||"").entries()]);for(const[e,i]of s){r.set(e,i)}return r.toString()}function h(n,t){
|
|
1
|
+
const o=n=>{if(n===null)return"null";const t=typeof n;if(t!=="object")return t;if(Array.isArray(n))return"array";if(n instanceof Date)return"date";return"object"};const u=n=>{const t=o(n);return t!=="object"&&t!=="array"};const a=typeof window==="undefined";const l=n=>{if(n instanceof URLSearchParams){return n}if(typeof n==="string"){const t=n.indexOf("?");return new URLSearchParams(t===-1?n:n.slice(t+1))}return new URLSearchParams};const y=(n,t)=>{if(n.length!==t.length)return false;return n.every((r,s)=>c(r,t[s]))};const p=(n,t)=>{const r=Object.keys(n);const s=Object.keys(t);if(r.length!==s.length)return false;return r.every(e=>c(n[e],t[e]))};const c=(n,t)=>{if(n===t)return true;if(n==null||t==null)return false;const r=o(n);const s=o(t);if(r!==s)return false;if(u(n))return false;if(r==="array"){return y(n,t)}if(r==="object"){return p(n,t)}return JSON.stringify(n)===JSON.stringify(t)};function w(n,t){const r=new URLSearchParams;const s=f(n,[...new URLSearchParams(t||"").entries()]);for(const[e,i]of s){r.set(e,i)}return r.toString()}function h(n,t){const r=t instanceof URLSearchParams?[...t.entries()]:Object.entries(t||{});return Object.fromEntries(f(n,r))}function f(n,t){const r=Object.keys(n);const s=[];for(let e=0;e<t.length;e++){if(r.includes(t[e]?.[0])){s.push([t[e][0].replace(/\+/g," "),t[e][1]])}}return s}function d(n,t){const r=Object.assign({},n);for(const[s]of Object.entries(n)){const e=s;const i=t[e]!==void 0;r[e]=i?t[e]:n[e]}return r}const g={push:n=>{if(typeof window!=="undefined"){window.history.pushState(null,"",n)}},replace:n=>{if(typeof window!=="undefined"){window.history.replaceState(null,"",n)}}};const S=/apple/i.test(!a&&navigator?.userAgent||"");const b="popstate";function j(){return a?"":window.location.search}export{d as assignValue,f as filterUnknown,h as filterUnknownParams,w as filterUnknownParamsClient,l as getParams,j as getSearch,c as isEqual,u as isPrimitive,a as isSSR,S as isSafari,b as popstateEv,g as routerHistory,o as typeOf};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "state-in-url",
|
|
3
|
-
"version": "6.1.
|
|
3
|
+
"version": "6.1.3",
|
|
4
4
|
"description": "Store state in URL as in object, types and structure are preserved, with TS validation. Same API as React.useState, wthout any hasssle or boilerplate. Next.js@14-15, react-router@6-7, and remix@2.",
|
|
5
5
|
"homepage": "https://state-in-url.dev",
|
|
6
6
|
"repository": {
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
"cleanup": "rm -rf dist .wireit node_modules test-results playwright-report coverage-reports nyc_coverage packages/example-nextjs14/node_modules packages/example-nextjs14/.next packages/example-nextjs15/node_modules packages/example-nextjs15/.next packages/example-nextjs16/node_modules packages/example-nextjs16/.next packages/example-react/node_modules packages/example-react-router6/node_modules packages/example-react-router7/node_modules packages/example-remix2/node_modules",
|
|
121
121
|
"reinstall": "pnpm run cleanup && pnpm install",
|
|
122
122
|
"setup": "playwright install --with-deps",
|
|
123
|
-
"prepack": "pnpm run build && cp package.json dist/package.json
|
|
123
|
+
"prepack": "pnpm run build && cp package.json dist/package.json",
|
|
124
124
|
"pin-gh-deps": "pin-github-action -i .github/workflows/tests.yml",
|
|
125
125
|
"prepare": "pnpm exec husky"
|
|
126
126
|
},
|
|
@@ -477,17 +477,20 @@
|
|
|
477
477
|
"eslint-plugin-react-hooks": "^4.6.2",
|
|
478
478
|
"eslint-plugin-simple-import-sort": "^12.1.1",
|
|
479
479
|
"glob": "^13.0.0",
|
|
480
|
-
"happy-dom": "^
|
|
480
|
+
"happy-dom": "^20.0.2",
|
|
481
481
|
"husky": "^9.1.7",
|
|
482
482
|
"lint-staged": "^15.5.2",
|
|
483
|
+
"next": "^15.5.18",
|
|
483
484
|
"nyc": "^17.1.0",
|
|
484
485
|
"only-allow": "^1.2.1",
|
|
485
486
|
"pin-github-action": "^1.9.1",
|
|
486
487
|
"playwright": "^1.55.1",
|
|
487
488
|
"prettier": "^3.6.2",
|
|
488
489
|
"prettier-plugin-tailwindcss": "^0.6.14",
|
|
489
|
-
"react
|
|
490
|
-
"
|
|
490
|
+
"react": "^19.2.6",
|
|
491
|
+
"react-dom": "^19.2.6",
|
|
492
|
+
"react-router": "^7.15.0",
|
|
493
|
+
"ringfence": "^0.1.0",
|
|
491
494
|
"rollup": "^4.52.3",
|
|
492
495
|
"rollup-plugin-esbuild": "^6.2.1",
|
|
493
496
|
"rollup-plugin-filesize": "^10.0.0",
|
|
@@ -499,10 +502,7 @@
|
|
|
499
502
|
"unplugin-auto-import": "^0.18.6",
|
|
500
503
|
"vitest": "^2.1.9",
|
|
501
504
|
"wait-on": "^8.0.5",
|
|
502
|
-
"wireit": "^0.14.12"
|
|
503
|
-
"next": "^15.5.9",
|
|
504
|
-
"react": "^19.2.1",
|
|
505
|
-
"react-dom": "^19.2.1"
|
|
505
|
+
"wireit": "^0.14.12"
|
|
506
506
|
},
|
|
507
507
|
"keywords": [
|
|
508
508
|
"state in url",
|