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