@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,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":[]}