@multiplatform.one/router 6.1.0 → 6.3.0
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.md +51 -0
- package/dist/cjs/hooks/useUrlState.cjs +30 -9
- package/dist/cjs/hooks/useUrlState.native.js +32 -9
- package/dist/cjs/hooks/useUrlState.native.js.map +1 -1
- package/dist/cjs/seam/DomNavigationHost.cjs +122 -0
- package/dist/cjs/seam/DomNavigationHost.native.js +186 -0
- package/dist/cjs/seam/DomNavigationHost.native.js.map +1 -0
- package/dist/cjs/seam/index.cjs +47 -0
- package/dist/cjs/seam/index.native.js +50 -0
- package/dist/cjs/seam/index.native.js.map +1 -0
- package/dist/cjs/seam/navigator.cjs +309 -0
- package/dist/cjs/seam/navigator.native.js +479 -0
- package/dist/cjs/seam/navigator.native.js.map +1 -0
- package/dist/cjs/seam/oneAdapter.cjs +128 -0
- package/dist/cjs/seam/oneAdapter.native.js +141 -0
- package/dist/cjs/seam/oneAdapter.native.js.map +1 -0
- package/dist/esm/hooks/useUrlState.mjs +31 -10
- package/dist/esm/hooks/useUrlState.mjs.map +1 -1
- package/dist/esm/hooks/useUrlState.native.js +33 -10
- package/dist/esm/hooks/useUrlState.native.js.map +1 -1
- package/dist/esm/seam/DomNavigationHost.mjs +96 -0
- package/dist/esm/seam/DomNavigationHost.mjs.map +1 -0
- package/dist/esm/seam/DomNavigationHost.native.js +157 -0
- package/dist/esm/seam/DomNavigationHost.native.js.map +1 -0
- package/dist/esm/seam/index.mjs +5 -0
- package/dist/esm/seam/index.mjs.map +1 -0
- package/dist/esm/seam/index.native.js +5 -0
- package/dist/esm/seam/index.native.js.map +1 -0
- package/dist/esm/seam/navigator.mjs +279 -0
- package/dist/esm/seam/navigator.mjs.map +1 -0
- package/dist/esm/seam/navigator.native.js +446 -0
- package/dist/esm/seam/navigator.native.js.map +1 -0
- package/dist/esm/seam/oneAdapter.mjs +90 -0
- package/dist/esm/seam/oneAdapter.mjs.map +1 -0
- package/dist/esm/seam/oneAdapter.native.js +100 -0
- package/dist/esm/seam/oneAdapter.native.js.map +1 -0
- package/dist/jsx/hooks/useUrlState.mjs +31 -10
- package/dist/jsx/hooks/useUrlState.mjs.map +1 -1
- package/dist/jsx/hooks/useUrlState.native.js +32 -9
- package/dist/jsx/hooks/useUrlState.native.js.map +1 -1
- package/dist/jsx/seam/DomNavigationHost.mjs +96 -0
- package/dist/jsx/seam/DomNavigationHost.mjs.map +1 -0
- package/dist/jsx/seam/DomNavigationHost.native.js +186 -0
- package/dist/jsx/seam/DomNavigationHost.native.js.map +1 -0
- package/dist/jsx/seam/index.mjs +5 -0
- package/dist/jsx/seam/index.mjs.map +1 -0
- package/dist/jsx/seam/index.native.js +50 -0
- package/dist/jsx/seam/index.native.js.map +1 -0
- package/dist/jsx/seam/navigator.mjs +279 -0
- package/dist/jsx/seam/navigator.mjs.map +1 -0
- package/dist/jsx/seam/navigator.native.js +479 -0
- package/dist/jsx/seam/navigator.native.js.map +1 -0
- package/dist/jsx/seam/oneAdapter.mjs +90 -0
- package/dist/jsx/seam/oneAdapter.mjs.map +1 -0
- package/dist/jsx/seam/oneAdapter.native.js +141 -0
- package/dist/jsx/seam/oneAdapter.native.js.map +1 -0
- package/package.json +26 -9
- package/src/hooks/urlStateEdges.spec.ts +98 -0
- package/src/hooks/useUrlState.ts +34 -8
- package/src/seam/DomNavigationHost.spec.tsx +78 -0
- package/src/seam/DomNavigationHost.tsx +150 -0
- package/src/seam/index.ts +41 -0
- package/src/seam/navigator.spec.ts +189 -0
- package/src/seam/navigator.ts +405 -0
- package/src/seam/oneAdapter.tsx +166 -0
- package/types/hooks/index.d.ts +2 -0
- package/types/hooks/index.d.ts.map +1 -0
- package/types/hooks/useUrlState.d.ts +36 -0
- package/types/hooks/useUrlState.d.ts.map +1 -0
- package/types/index.d.ts +4 -0
- package/types/index.d.ts.map +1 -0
- package/types/index.storybook.d.ts +4 -0
- package/types/index.storybook.d.ts.map +1 -0
- package/types/router/EmptyRouter.d.ts +7 -0
- package/types/router/EmptyRouter.d.ts.map +1 -0
- package/types/router/ReactRouter.d.ts +6 -0
- package/types/router/ReactRouter.d.ts.map +1 -0
- package/types/router/index.d.ts +2 -0
- package/types/router/index.d.ts.map +1 -0
- package/types/router/index.storybook-expo.d.ts +2 -0
- package/types/router/index.storybook-expo.d.ts.map +1 -0
- package/types/router/index.storybook.d.ts +2 -0
- package/types/router/index.storybook.d.ts.map +1 -0
- package/types/router/index.webext.d.ts +2 -0
- package/types/router/index.webext.d.ts.map +1 -0
- package/types/seam/DomNavigationHost.d.ts +33 -0
- package/types/seam/DomNavigationHost.d.ts.map +1 -0
- package/types/seam/index.d.ts +7 -0
- package/types/seam/index.d.ts.map +1 -0
- package/types/seam/navigator.d.ts +133 -0
- package/types/seam/navigator.d.ts.map +1 -0
- package/types/seam/oneAdapter.d.ts +57 -0
- package/types/seam/oneAdapter.d.ts.map +1 -0
- package/types/types.d.ts +40 -0
- package/types/types.d.ts.map +1 -0
- package/dist/cjs/hooks/useUrlState.spec.cjs +0 -280
- package/dist/cjs/hooks/useUrlState.spec.native.js +0 -315
- package/dist/cjs/hooks/useUrlState.spec.native.js.map +0 -1
- package/dist/esm/hooks/useUrlState.spec.mjs +0 -257
- package/dist/esm/hooks/useUrlState.spec.mjs.map +0 -1
- package/dist/esm/hooks/useUrlState.spec.native.js +0 -289
- package/dist/esm/hooks/useUrlState.spec.native.js.map +0 -1
- package/dist/jsx/hooks/useUrlState.spec.mjs +0 -257
- package/dist/jsx/hooks/useUrlState.spec.mjs.map +0 -1
- package/dist/jsx/hooks/useUrlState.spec.native.js +0 -315
- package/dist/jsx/hooks/useUrlState.spec.native.js.map +0 -1
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
import { act, renderHook, waitFor } from "@testing-library/react";
|
|
2
|
-
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
3
|
-
import * as router from "../router/index.mjs";
|
|
4
|
-
import { useSearchParams, useTypedSearchParams, useUrlState } from "./useUrlState.mjs";
|
|
5
|
-
vi.mock("../router", () => {
|
|
6
|
-
const mockSetParams = vi.fn();
|
|
7
|
-
return {
|
|
8
|
-
useParams: vi.fn(() => ({})),
|
|
9
|
-
useRouter: vi.fn(() => ({
|
|
10
|
-
setParams: mockSetParams
|
|
11
|
-
}))
|
|
12
|
-
};
|
|
13
|
-
});
|
|
14
|
-
const mockUseParams = router.useParams;
|
|
15
|
-
const mockUseRouter = router.useRouter;
|
|
16
|
-
describe("useUrlState", () => {
|
|
17
|
-
beforeEach(() => {
|
|
18
|
-
vi.clearAllMocks();
|
|
19
|
-
});
|
|
20
|
-
describe("useSearchParams", () => {
|
|
21
|
-
it("should return current search params", () => {
|
|
22
|
-
mockUseParams.mockReturnValue({
|
|
23
|
-
foo: "bar",
|
|
24
|
-
baz: "qux"
|
|
25
|
-
});
|
|
26
|
-
const {
|
|
27
|
-
result
|
|
28
|
-
} = renderHook(() => useSearchParams());
|
|
29
|
-
const [params] = result.current;
|
|
30
|
-
expect(params).toEqual({
|
|
31
|
-
foo: "bar",
|
|
32
|
-
baz: "qux"
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
it("should update search params", () => {
|
|
36
|
-
const setParamsMock = vi.fn();
|
|
37
|
-
mockUseRouter.mockReturnValue({
|
|
38
|
-
setParams: setParamsMock
|
|
39
|
-
});
|
|
40
|
-
const {
|
|
41
|
-
result
|
|
42
|
-
} = renderHook(() => useSearchParams());
|
|
43
|
-
const [, setParams] = result.current;
|
|
44
|
-
act(() => {
|
|
45
|
-
setParams({
|
|
46
|
-
foo: "bar"
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
expect(setParamsMock).toHaveBeenCalledWith({
|
|
50
|
-
foo: "bar"
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
it("should support function updates", () => {
|
|
54
|
-
const setParamsMock = vi.fn();
|
|
55
|
-
mockUseParams.mockReturnValue({
|
|
56
|
-
existing: "value"
|
|
57
|
-
});
|
|
58
|
-
mockUseRouter.mockReturnValue({
|
|
59
|
-
setParams: setParamsMock
|
|
60
|
-
});
|
|
61
|
-
const {
|
|
62
|
-
result
|
|
63
|
-
} = renderHook(() => useSearchParams());
|
|
64
|
-
const [, setParams] = result.current;
|
|
65
|
-
act(() => {
|
|
66
|
-
setParams(prev => ({
|
|
67
|
-
...prev,
|
|
68
|
-
new: "param"
|
|
69
|
-
}));
|
|
70
|
-
});
|
|
71
|
-
expect(setParamsMock).toHaveBeenCalledWith({
|
|
72
|
-
existing: "value",
|
|
73
|
-
new: "param"
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
it("should debounce updates when specified", async () => {
|
|
77
|
-
const setParamsMock = vi.fn();
|
|
78
|
-
mockUseRouter.mockReturnValue({
|
|
79
|
-
setParams: setParamsMock
|
|
80
|
-
});
|
|
81
|
-
const {
|
|
82
|
-
result
|
|
83
|
-
} = renderHook(() => useSearchParams());
|
|
84
|
-
const [, setParams] = result.current;
|
|
85
|
-
act(() => {
|
|
86
|
-
setParams({
|
|
87
|
-
foo: "bar"
|
|
88
|
-
}, {
|
|
89
|
-
debounceMs: 100
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
expect(setParamsMock).not.toHaveBeenCalled();
|
|
93
|
-
await waitFor(() => {
|
|
94
|
-
expect(setParamsMock).toHaveBeenCalledWith({
|
|
95
|
-
foo: "bar"
|
|
96
|
-
});
|
|
97
|
-
}, {
|
|
98
|
-
timeout: 200
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
describe("useUrlState", () => {
|
|
103
|
-
it("should initialize with default values", () => {
|
|
104
|
-
mockUseParams.mockReturnValue({});
|
|
105
|
-
const defaultValues = {
|
|
106
|
-
name: "",
|
|
107
|
-
age: 0,
|
|
108
|
-
active: false
|
|
109
|
-
};
|
|
110
|
-
const {
|
|
111
|
-
result
|
|
112
|
-
} = renderHook(() => useUrlState(defaultValues));
|
|
113
|
-
const [state] = result.current;
|
|
114
|
-
expect(state).toEqual(defaultValues);
|
|
115
|
-
});
|
|
116
|
-
it("should deserialize URL params", () => {
|
|
117
|
-
mockUseParams.mockReturnValue({
|
|
118
|
-
name: "John",
|
|
119
|
-
age: "25",
|
|
120
|
-
active: "true"
|
|
121
|
-
});
|
|
122
|
-
const defaultValues = {
|
|
123
|
-
name: "",
|
|
124
|
-
age: 0,
|
|
125
|
-
active: false
|
|
126
|
-
};
|
|
127
|
-
const {
|
|
128
|
-
result
|
|
129
|
-
} = renderHook(() => useUrlState(defaultValues));
|
|
130
|
-
const [state] = result.current;
|
|
131
|
-
expect(state).toEqual({
|
|
132
|
-
name: "John",
|
|
133
|
-
age: 25,
|
|
134
|
-
active: true
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
it("should serialize state to URL params", () => {
|
|
138
|
-
const setParamsMock = vi.fn();
|
|
139
|
-
mockUseParams.mockReturnValue({});
|
|
140
|
-
mockUseRouter.mockReturnValue({
|
|
141
|
-
setParams: setParamsMock
|
|
142
|
-
});
|
|
143
|
-
const defaultValues = {
|
|
144
|
-
name: "",
|
|
145
|
-
age: 0,
|
|
146
|
-
active: false
|
|
147
|
-
};
|
|
148
|
-
const {
|
|
149
|
-
result
|
|
150
|
-
} = renderHook(() => useUrlState(defaultValues, {
|
|
151
|
-
debounceMs: 0
|
|
152
|
-
}));
|
|
153
|
-
const [, setState] = result.current;
|
|
154
|
-
act(() => {
|
|
155
|
-
setState({
|
|
156
|
-
name: "John",
|
|
157
|
-
age: 25,
|
|
158
|
-
active: true
|
|
159
|
-
});
|
|
160
|
-
});
|
|
161
|
-
expect(setParamsMock).toHaveBeenCalledWith({
|
|
162
|
-
name: "John",
|
|
163
|
-
age: "25",
|
|
164
|
-
active: "true"
|
|
165
|
-
});
|
|
166
|
-
});
|
|
167
|
-
it("should handle arrays", () => {
|
|
168
|
-
mockUseParams.mockReturnValue({
|
|
169
|
-
tags: ["react", "typescript"]
|
|
170
|
-
});
|
|
171
|
-
const defaultValues = {
|
|
172
|
-
tags: []
|
|
173
|
-
};
|
|
174
|
-
const {
|
|
175
|
-
result
|
|
176
|
-
} = renderHook(() => useUrlState(defaultValues));
|
|
177
|
-
const [state] = result.current;
|
|
178
|
-
expect(state).toEqual({
|
|
179
|
-
tags: ["react", "typescript"]
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
it("should handle objects with JSON serialization", () => {
|
|
183
|
-
mockUseParams.mockReturnValue({
|
|
184
|
-
config: '{"theme":"dark","lang":"en"}'
|
|
185
|
-
});
|
|
186
|
-
const defaultValues = {
|
|
187
|
-
config: {
|
|
188
|
-
theme: "light",
|
|
189
|
-
lang: "en"
|
|
190
|
-
}
|
|
191
|
-
};
|
|
192
|
-
const {
|
|
193
|
-
result
|
|
194
|
-
} = renderHook(() => useUrlState(defaultValues));
|
|
195
|
-
const [state] = result.current;
|
|
196
|
-
expect(state).toEqual({
|
|
197
|
-
config: {
|
|
198
|
-
theme: "dark",
|
|
199
|
-
lang: "en"
|
|
200
|
-
}
|
|
201
|
-
});
|
|
202
|
-
});
|
|
203
|
-
});
|
|
204
|
-
describe("useTypedSearchParams", () => {
|
|
205
|
-
it("should parse params with schema", () => {
|
|
206
|
-
mockUseParams.mockReturnValue({
|
|
207
|
-
page: "2",
|
|
208
|
-
limit: "50",
|
|
209
|
-
search: "test"
|
|
210
|
-
});
|
|
211
|
-
const schema = {
|
|
212
|
-
page: {
|
|
213
|
-
default: 1,
|
|
214
|
-
parse: value => value ? Number.parseInt(String(value), 10) : 1
|
|
215
|
-
},
|
|
216
|
-
limit: {
|
|
217
|
-
default: 20,
|
|
218
|
-
parse: value => value ? Number.parseInt(String(value), 10) : 20
|
|
219
|
-
},
|
|
220
|
-
search: {
|
|
221
|
-
default: ""
|
|
222
|
-
}
|
|
223
|
-
};
|
|
224
|
-
const {
|
|
225
|
-
result
|
|
226
|
-
} = renderHook(() => useTypedSearchParams(schema));
|
|
227
|
-
expect(result.current).toEqual({
|
|
228
|
-
page: 2,
|
|
229
|
-
limit: 50,
|
|
230
|
-
search: "test"
|
|
231
|
-
});
|
|
232
|
-
});
|
|
233
|
-
it("should use defaults for missing params", () => {
|
|
234
|
-
mockUseParams.mockReturnValue({});
|
|
235
|
-
const schema = {
|
|
236
|
-
page: {
|
|
237
|
-
default: 1
|
|
238
|
-
},
|
|
239
|
-
limit: {
|
|
240
|
-
default: 20
|
|
241
|
-
},
|
|
242
|
-
search: {
|
|
243
|
-
default: ""
|
|
244
|
-
}
|
|
245
|
-
};
|
|
246
|
-
const {
|
|
247
|
-
result
|
|
248
|
-
} = renderHook(() => useTypedSearchParams(schema));
|
|
249
|
-
expect(result.current).toEqual({
|
|
250
|
-
page: 1,
|
|
251
|
-
limit: 20,
|
|
252
|
-
search: ""
|
|
253
|
-
});
|
|
254
|
-
});
|
|
255
|
-
});
|
|
256
|
-
});
|
|
257
|
-
//# sourceMappingURL=useUrlState.spec.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["act","renderHook","waitFor","beforeEach","describe","expect","it","vi","router","useSearchParams","useTypedSearchParams","useUrlState","mock","mockSetParams","fn","useParams","useRouter","setParams","mockUseParams","mockUseRouter","clearAllMocks","mockReturnValue","foo","baz","result","params","current","toEqual","setParamsMock","toHaveBeenCalledWith","existing","prev","new","debounceMs","not","toHaveBeenCalled","timeout","defaultValues","name","age","active","state","setState","tags","config","theme","lang","page","limit","search","schema","default","parse","value","Number","parseInt","String"],"sources":["../../../src/hooks/useUrlState.spec.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var __create = Object.create;
|
|
4
|
-
var __defProp = Object.defineProperty;
|
|
5
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
12
|
-
get: () => from[key],
|
|
13
|
-
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
19
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
20
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
21
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
22
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
23
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
24
|
-
value: mod,
|
|
25
|
-
enumerable: true
|
|
26
|
-
}) : target, mod));
|
|
27
|
-
var import_react = require("@testing-library/react");
|
|
28
|
-
var import_vitest = require("vitest");
|
|
29
|
-
var router = __toESM(require("../router/index.native.js"));
|
|
30
|
-
var import_useUrlState = require("./useUrlState.native.js");
|
|
31
|
-
import_vitest.vi.mock("../router", function () {
|
|
32
|
-
var mockSetParams = import_vitest.vi.fn();
|
|
33
|
-
return {
|
|
34
|
-
useParams: import_vitest.vi.fn(function () {
|
|
35
|
-
return {};
|
|
36
|
-
}),
|
|
37
|
-
useRouter: import_vitest.vi.fn(function () {
|
|
38
|
-
return {
|
|
39
|
-
setParams: mockSetParams
|
|
40
|
-
};
|
|
41
|
-
})
|
|
42
|
-
};
|
|
43
|
-
});
|
|
44
|
-
var mockUseParams = router.useParams;
|
|
45
|
-
var mockUseRouter = router.useRouter;
|
|
46
|
-
(0, import_vitest.describe)("useUrlState", function () {
|
|
47
|
-
(0, import_vitest.beforeEach)(function () {
|
|
48
|
-
import_vitest.vi.clearAllMocks();
|
|
49
|
-
});
|
|
50
|
-
(0, import_vitest.describe)("useSearchParams", function () {
|
|
51
|
-
(0, import_vitest.it)("should return current search params", function () {
|
|
52
|
-
mockUseParams.mockReturnValue({
|
|
53
|
-
foo: "bar",
|
|
54
|
-
baz: "qux"
|
|
55
|
-
});
|
|
56
|
-
var {
|
|
57
|
-
result
|
|
58
|
-
} = (0, import_react.renderHook)(function () {
|
|
59
|
-
return (0, import_useUrlState.useSearchParams)();
|
|
60
|
-
});
|
|
61
|
-
var [params] = result.current;
|
|
62
|
-
(0, import_vitest.expect)(params).toEqual({
|
|
63
|
-
foo: "bar",
|
|
64
|
-
baz: "qux"
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
(0, import_vitest.it)("should update search params", function () {
|
|
68
|
-
var setParamsMock = import_vitest.vi.fn();
|
|
69
|
-
mockUseRouter.mockReturnValue({
|
|
70
|
-
setParams: setParamsMock
|
|
71
|
-
});
|
|
72
|
-
var {
|
|
73
|
-
result
|
|
74
|
-
} = (0, import_react.renderHook)(function () {
|
|
75
|
-
return (0, import_useUrlState.useSearchParams)();
|
|
76
|
-
});
|
|
77
|
-
var [, setParams] = result.current;
|
|
78
|
-
(0, import_react.act)(function () {
|
|
79
|
-
setParams({
|
|
80
|
-
foo: "bar"
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
(0, import_vitest.expect)(setParamsMock).toHaveBeenCalledWith({
|
|
84
|
-
foo: "bar"
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
(0, import_vitest.it)("should support function updates", function () {
|
|
88
|
-
var setParamsMock = import_vitest.vi.fn();
|
|
89
|
-
mockUseParams.mockReturnValue({
|
|
90
|
-
existing: "value"
|
|
91
|
-
});
|
|
92
|
-
mockUseRouter.mockReturnValue({
|
|
93
|
-
setParams: setParamsMock
|
|
94
|
-
});
|
|
95
|
-
var {
|
|
96
|
-
result
|
|
97
|
-
} = (0, import_react.renderHook)(function () {
|
|
98
|
-
return (0, import_useUrlState.useSearchParams)();
|
|
99
|
-
});
|
|
100
|
-
var [, setParams] = result.current;
|
|
101
|
-
(0, import_react.act)(function () {
|
|
102
|
-
setParams(function (prev) {
|
|
103
|
-
return {
|
|
104
|
-
...prev,
|
|
105
|
-
new: "param"
|
|
106
|
-
};
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
(0, import_vitest.expect)(setParamsMock).toHaveBeenCalledWith({
|
|
110
|
-
existing: "value",
|
|
111
|
-
new: "param"
|
|
112
|
-
});
|
|
113
|
-
});
|
|
114
|
-
(0, import_vitest.it)("should debounce updates when specified", async function () {
|
|
115
|
-
var setParamsMock = import_vitest.vi.fn();
|
|
116
|
-
mockUseRouter.mockReturnValue({
|
|
117
|
-
setParams: setParamsMock
|
|
118
|
-
});
|
|
119
|
-
var {
|
|
120
|
-
result
|
|
121
|
-
} = (0, import_react.renderHook)(function () {
|
|
122
|
-
return (0, import_useUrlState.useSearchParams)();
|
|
123
|
-
});
|
|
124
|
-
var [, setParams] = result.current;
|
|
125
|
-
(0, import_react.act)(function () {
|
|
126
|
-
setParams({
|
|
127
|
-
foo: "bar"
|
|
128
|
-
}, {
|
|
129
|
-
debounceMs: 100
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
(0, import_vitest.expect)(setParamsMock).not.toHaveBeenCalled();
|
|
133
|
-
await (0, import_react.waitFor)(function () {
|
|
134
|
-
(0, import_vitest.expect)(setParamsMock).toHaveBeenCalledWith({
|
|
135
|
-
foo: "bar"
|
|
136
|
-
});
|
|
137
|
-
}, {
|
|
138
|
-
timeout: 200
|
|
139
|
-
});
|
|
140
|
-
});
|
|
141
|
-
});
|
|
142
|
-
(0, import_vitest.describe)("useUrlState", function () {
|
|
143
|
-
(0, import_vitest.it)("should initialize with default values", function () {
|
|
144
|
-
mockUseParams.mockReturnValue({});
|
|
145
|
-
var defaultValues = {
|
|
146
|
-
name: "",
|
|
147
|
-
age: 0,
|
|
148
|
-
active: false
|
|
149
|
-
};
|
|
150
|
-
var {
|
|
151
|
-
result
|
|
152
|
-
} = (0, import_react.renderHook)(function () {
|
|
153
|
-
return (0, import_useUrlState.useUrlState)(defaultValues);
|
|
154
|
-
});
|
|
155
|
-
var [state] = result.current;
|
|
156
|
-
(0, import_vitest.expect)(state).toEqual(defaultValues);
|
|
157
|
-
});
|
|
158
|
-
(0, import_vitest.it)("should deserialize URL params", function () {
|
|
159
|
-
mockUseParams.mockReturnValue({
|
|
160
|
-
name: "John",
|
|
161
|
-
age: "25",
|
|
162
|
-
active: "true"
|
|
163
|
-
});
|
|
164
|
-
var defaultValues = {
|
|
165
|
-
name: "",
|
|
166
|
-
age: 0,
|
|
167
|
-
active: false
|
|
168
|
-
};
|
|
169
|
-
var {
|
|
170
|
-
result
|
|
171
|
-
} = (0, import_react.renderHook)(function () {
|
|
172
|
-
return (0, import_useUrlState.useUrlState)(defaultValues);
|
|
173
|
-
});
|
|
174
|
-
var [state] = result.current;
|
|
175
|
-
(0, import_vitest.expect)(state).toEqual({
|
|
176
|
-
name: "John",
|
|
177
|
-
age: 25,
|
|
178
|
-
active: true
|
|
179
|
-
});
|
|
180
|
-
});
|
|
181
|
-
(0, import_vitest.it)("should serialize state to URL params", function () {
|
|
182
|
-
var setParamsMock = import_vitest.vi.fn();
|
|
183
|
-
mockUseParams.mockReturnValue({});
|
|
184
|
-
mockUseRouter.mockReturnValue({
|
|
185
|
-
setParams: setParamsMock
|
|
186
|
-
});
|
|
187
|
-
var defaultValues = {
|
|
188
|
-
name: "",
|
|
189
|
-
age: 0,
|
|
190
|
-
active: false
|
|
191
|
-
};
|
|
192
|
-
var {
|
|
193
|
-
result
|
|
194
|
-
} = (0, import_react.renderHook)(function () {
|
|
195
|
-
return (0, import_useUrlState.useUrlState)(defaultValues, {
|
|
196
|
-
debounceMs: 0
|
|
197
|
-
});
|
|
198
|
-
});
|
|
199
|
-
var [, setState] = result.current;
|
|
200
|
-
(0, import_react.act)(function () {
|
|
201
|
-
setState({
|
|
202
|
-
name: "John",
|
|
203
|
-
age: 25,
|
|
204
|
-
active: true
|
|
205
|
-
});
|
|
206
|
-
});
|
|
207
|
-
(0, import_vitest.expect)(setParamsMock).toHaveBeenCalledWith({
|
|
208
|
-
name: "John",
|
|
209
|
-
age: "25",
|
|
210
|
-
active: "true"
|
|
211
|
-
});
|
|
212
|
-
});
|
|
213
|
-
(0, import_vitest.it)("should handle arrays", function () {
|
|
214
|
-
mockUseParams.mockReturnValue({
|
|
215
|
-
tags: ["react", "typescript"]
|
|
216
|
-
});
|
|
217
|
-
var defaultValues = {
|
|
218
|
-
tags: []
|
|
219
|
-
};
|
|
220
|
-
var {
|
|
221
|
-
result
|
|
222
|
-
} = (0, import_react.renderHook)(function () {
|
|
223
|
-
return (0, import_useUrlState.useUrlState)(defaultValues);
|
|
224
|
-
});
|
|
225
|
-
var [state] = result.current;
|
|
226
|
-
(0, import_vitest.expect)(state).toEqual({
|
|
227
|
-
tags: ["react", "typescript"]
|
|
228
|
-
});
|
|
229
|
-
});
|
|
230
|
-
(0, import_vitest.it)("should handle objects with JSON serialization", function () {
|
|
231
|
-
mockUseParams.mockReturnValue({
|
|
232
|
-
config: '{"theme":"dark","lang":"en"}'
|
|
233
|
-
});
|
|
234
|
-
var defaultValues = {
|
|
235
|
-
config: {
|
|
236
|
-
theme: "light",
|
|
237
|
-
lang: "en"
|
|
238
|
-
}
|
|
239
|
-
};
|
|
240
|
-
var {
|
|
241
|
-
result
|
|
242
|
-
} = (0, import_react.renderHook)(function () {
|
|
243
|
-
return (0, import_useUrlState.useUrlState)(defaultValues);
|
|
244
|
-
});
|
|
245
|
-
var [state] = result.current;
|
|
246
|
-
(0, import_vitest.expect)(state).toEqual({
|
|
247
|
-
config: {
|
|
248
|
-
theme: "dark",
|
|
249
|
-
lang: "en"
|
|
250
|
-
}
|
|
251
|
-
});
|
|
252
|
-
});
|
|
253
|
-
});
|
|
254
|
-
(0, import_vitest.describe)("useTypedSearchParams", function () {
|
|
255
|
-
(0, import_vitest.it)("should parse params with schema", function () {
|
|
256
|
-
mockUseParams.mockReturnValue({
|
|
257
|
-
page: "2",
|
|
258
|
-
limit: "50",
|
|
259
|
-
search: "test"
|
|
260
|
-
});
|
|
261
|
-
var schema = {
|
|
262
|
-
page: {
|
|
263
|
-
default: 1,
|
|
264
|
-
parse: function parse(value) {
|
|
265
|
-
return value ? Number.parseInt(String(value), 10) : 1;
|
|
266
|
-
}
|
|
267
|
-
},
|
|
268
|
-
limit: {
|
|
269
|
-
default: 20,
|
|
270
|
-
parse: function parse(value) {
|
|
271
|
-
return value ? Number.parseInt(String(value), 10) : 20;
|
|
272
|
-
}
|
|
273
|
-
},
|
|
274
|
-
search: {
|
|
275
|
-
default: ""
|
|
276
|
-
}
|
|
277
|
-
};
|
|
278
|
-
var {
|
|
279
|
-
result
|
|
280
|
-
} = (0, import_react.renderHook)(function () {
|
|
281
|
-
return (0, import_useUrlState.useTypedSearchParams)(schema);
|
|
282
|
-
});
|
|
283
|
-
(0, import_vitest.expect)(result.current).toEqual({
|
|
284
|
-
page: 2,
|
|
285
|
-
limit: 50,
|
|
286
|
-
search: "test"
|
|
287
|
-
});
|
|
288
|
-
});
|
|
289
|
-
(0, import_vitest.it)("should use defaults for missing params", function () {
|
|
290
|
-
mockUseParams.mockReturnValue({});
|
|
291
|
-
var schema = {
|
|
292
|
-
page: {
|
|
293
|
-
default: 1
|
|
294
|
-
},
|
|
295
|
-
limit: {
|
|
296
|
-
default: 20
|
|
297
|
-
},
|
|
298
|
-
search: {
|
|
299
|
-
default: ""
|
|
300
|
-
}
|
|
301
|
-
};
|
|
302
|
-
var {
|
|
303
|
-
result
|
|
304
|
-
} = (0, import_react.renderHook)(function () {
|
|
305
|
-
return (0, import_useUrlState.useTypedSearchParams)(schema);
|
|
306
|
-
});
|
|
307
|
-
(0, import_vitest.expect)(result.current).toEqual({
|
|
308
|
-
page: 1,
|
|
309
|
-
limit: 20,
|
|
310
|
-
search: ""
|
|
311
|
-
});
|
|
312
|
-
});
|
|
313
|
-
});
|
|
314
|
-
});
|
|
315
|
-
//# sourceMappingURL=useUrlState.spec.native.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__copyProps","to","from","except","desc","key","call","get","enumerable","__toESM","mod","isNodeMode","target","__esModule","value","import_react","require","import_vitest","router","import_useUrlState","vi","mock","mockSetParams","fn","useParams","useRouter","setParams","mockUseParams","mockUseRouter","describe","beforeEach","clearAllMocks","it","mockReturnValue","foo","baz","result","renderHook","useSearchParams","params","current","expect","toEqual","setParamsMock","act","toHaveBeenCalledWith","existing","prev","new","debounceMs","not","toHaveBeenCalled","waitFor","timeout","defaultValues","name","age","active","useUrlState","state"],"sources":["../../../src/hooks/useUrlState.spec.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|