one 1.2.75 → 1.2.76
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/dist/cjs/cli/build.cjs +22 -6
- package/dist/cjs/cli/build.js +20 -3
- package/dist/cjs/cli/build.js.map +1 -1
- package/dist/cjs/cli/build.native.js +144 -93
- package/dist/cjs/cli/build.native.js.map +1 -1
- package/dist/cjs/cli/buildPage.cjs +43 -11
- package/dist/cjs/cli/buildPage.js +37 -5
- package/dist/cjs/cli/buildPage.js.map +1 -1
- package/dist/cjs/cli/buildPage.native.js +64 -14
- package/dist/cjs/cli/buildPage.native.js.map +1 -1
- package/dist/cjs/createApp.cjs +8 -4
- package/dist/cjs/createApp.js +8 -4
- package/dist/cjs/createApp.js.map +1 -1
- package/dist/cjs/index.cjs +6 -0
- package/dist/cjs/index.js +6 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.native.js +6 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/router/Route.js.map +1 -1
- package/dist/cjs/router/Route.native.js.map +1 -1
- package/dist/cjs/router/router.cjs +29 -4
- package/dist/cjs/router/router.js +19 -2
- package/dist/cjs/router/router.js.map +1 -1
- package/dist/cjs/router/router.native.js +8 -1
- package/dist/cjs/router/router.native.js.map +1 -1
- package/dist/cjs/server/oneServe.cjs +47 -8
- package/dist/cjs/server/oneServe.js +46 -9
- package/dist/cjs/server/oneServe.js.map +1 -1
- package/dist/cjs/server/oneServe.native.js +57 -10
- package/dist/cjs/server/oneServe.native.js.map +1 -1
- package/dist/cjs/useMatches.cjs +55 -0
- package/dist/cjs/useMatches.js +53 -0
- package/dist/cjs/useMatches.js.map +6 -0
- package/dist/cjs/useMatches.native.js +87 -0
- package/dist/cjs/useMatches.native.js.map +1 -0
- package/dist/cjs/useMatches.test.cjs +287 -0
- package/dist/cjs/useMatches.test.js +208 -0
- package/dist/cjs/useMatches.test.js.map +6 -0
- package/dist/cjs/useMatches.test.native.js +313 -0
- package/dist/cjs/useMatches.test.native.js.map +1 -0
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.cjs +51 -10
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js +39 -12
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +95 -52
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
- package/dist/esm/cli/build.js +20 -3
- package/dist/esm/cli/build.js.map +1 -1
- package/dist/esm/cli/build.mjs +22 -6
- package/dist/esm/cli/build.mjs.map +1 -1
- package/dist/esm/cli/build.native.js +144 -93
- package/dist/esm/cli/build.native.js.map +1 -1
- package/dist/esm/cli/buildPage.js +37 -5
- package/dist/esm/cli/buildPage.js.map +1 -1
- package/dist/esm/cli/buildPage.mjs +43 -11
- package/dist/esm/cli/buildPage.mjs.map +1 -1
- package/dist/esm/cli/buildPage.native.js +64 -14
- package/dist/esm/cli/buildPage.native.js.map +1 -1
- package/dist/esm/createApp.js +8 -3
- package/dist/esm/createApp.js.map +1 -1
- package/dist/esm/createApp.mjs +8 -4
- package/dist/esm/createApp.mjs.map +1 -1
- package/dist/esm/index.js +12 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +3 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +3 -2
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/router/Route.js.map +1 -1
- package/dist/esm/router/Route.mjs.map +1 -1
- package/dist/esm/router/Route.native.js.map +1 -1
- package/dist/esm/router/router.js +19 -1
- package/dist/esm/router/router.js.map +1 -1
- package/dist/esm/router/router.mjs +28 -4
- package/dist/esm/router/router.mjs.map +1 -1
- package/dist/esm/router/router.native.js +7 -1
- package/dist/esm/router/router.native.js.map +1 -1
- package/dist/esm/server/oneServe.js +46 -9
- package/dist/esm/server/oneServe.js.map +1 -1
- package/dist/esm/server/oneServe.mjs +47 -8
- package/dist/esm/server/oneServe.mjs.map +1 -1
- package/dist/esm/server/oneServe.native.js +57 -10
- package/dist/esm/server/oneServe.native.js.map +1 -1
- package/dist/esm/useMatches.js +38 -0
- package/dist/esm/useMatches.js.map +6 -0
- package/dist/esm/useMatches.mjs +29 -0
- package/dist/esm/useMatches.mjs.map +1 -0
- package/dist/esm/useMatches.native.js +58 -0
- package/dist/esm/useMatches.native.js.map +1 -0
- package/dist/esm/useMatches.test.js +209 -0
- package/dist/esm/useMatches.test.js.map +6 -0
- package/dist/esm/useMatches.test.mjs +288 -0
- package/dist/esm/useMatches.test.mjs.map +1 -0
- package/dist/esm/useMatches.test.native.js +311 -0
- package/dist/esm/useMatches.test.native.js.map +1 -0
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.js +39 -12
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +51 -10
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +95 -52
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
- package/package.json +9 -9
- package/src/cli/build.ts +36 -2
- package/src/cli/buildPage.ts +52 -2
- package/src/createApp.tsx +8 -0
- package/src/index.ts +8 -1
- package/src/router/Route.tsx +2 -0
- package/src/router/router.ts +57 -0
- package/src/server/oneServe.ts +89 -9
- package/src/types.ts +5 -0
- package/src/useMatches.test.ts +317 -0
- package/src/useMatches.ts +125 -0
- package/src/vite/plugins/fileSystemRouterPlugin.tsx +75 -19
- package/src/vite/types.ts +20 -0
- package/types/cli/build.d.ts.map +1 -1
- package/types/cli/buildPage.d.ts.map +1 -1
- package/types/createApp.d.ts.map +1 -1
- package/types/index.d.ts +2 -1
- package/types/index.d.ts.map +1 -1
- package/types/router/Route.d.ts +2 -0
- package/types/router/Route.d.ts.map +1 -1
- package/types/router/router.d.ts +6 -0
- package/types/router/router.d.ts.map +1 -1
- package/types/server/oneServe.d.ts.map +1 -1
- package/types/types.d.ts +5 -0
- package/types/types.d.ts.map +1 -1
- package/types/useMatches.d.ts +75 -0
- package/types/useMatches.d.ts.map +1 -0
- package/types/useMatches.test.d.ts +2 -0
- package/types/useMatches.test.d.ts.map +1 -0
- package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
- package/types/vite/types.d.ts +19 -0
- package/types/vite/types.d.ts.map +1 -1
- package/dist/cjs/createRouteConfig.cjs +0 -28
- package/dist/cjs/createRouteConfig.js +0 -23
- package/dist/cjs/createRouteConfig.js.map +0 -6
- package/dist/cjs/createRouteConfig.native.js +0 -31
- package/dist/cjs/createRouteConfig.native.js.map +0 -1
- package/dist/esm/createRouteConfig.js +0 -7
- package/dist/esm/createRouteConfig.js.map +0 -6
- package/dist/esm/createRouteConfig.mjs +0 -5
- package/dist/esm/createRouteConfig.mjs.map +0 -1
- package/dist/esm/createRouteConfig.native.js +0 -5
- package/dist/esm/createRouteConfig.native.js.map +0 -1
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { setClientMatches } from "./useMatches";
|
|
3
|
+
describe("useMatches", () => {
|
|
4
|
+
describe("setClientMatches", () => {
|
|
5
|
+
it("should update client matches without errors", () => {
|
|
6
|
+
const matches = [
|
|
7
|
+
{
|
|
8
|
+
routeId: "/_layout",
|
|
9
|
+
pathname: "/",
|
|
10
|
+
params: {},
|
|
11
|
+
loaderData: { title: "Root" }
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
routeId: "/page",
|
|
15
|
+
pathname: "/page",
|
|
16
|
+
params: {},
|
|
17
|
+
loaderData: { content: "Page content" }
|
|
18
|
+
}
|
|
19
|
+
];
|
|
20
|
+
expect(() => setClientMatches(matches)).not.toThrow();
|
|
21
|
+
}), it("should accept empty matches array", () => {
|
|
22
|
+
expect(() => setClientMatches([])).not.toThrow();
|
|
23
|
+
});
|
|
24
|
+
}), describe("type safety", () => {
|
|
25
|
+
it("should have correct RouteMatch type", () => {
|
|
26
|
+
const match = {
|
|
27
|
+
routeId: "test",
|
|
28
|
+
pathname: "/test",
|
|
29
|
+
params: { id: "123" },
|
|
30
|
+
loaderData: { foo: "bar" }
|
|
31
|
+
};
|
|
32
|
+
expect(match.routeId).toBe("test"), expect(match.pathname).toBe("/test"), expect(match.params.id).toBe("123"), expect(match.loaderData).toEqual({ foo: "bar" });
|
|
33
|
+
}), it("should allow string[] params", () => {
|
|
34
|
+
expect({
|
|
35
|
+
routeId: "test",
|
|
36
|
+
pathname: "/test",
|
|
37
|
+
params: { slugs: ["a", "b", "c"] },
|
|
38
|
+
loaderData: null
|
|
39
|
+
}.params.slugs).toEqual(["a", "b", "c"]);
|
|
40
|
+
}), it("should allow undefined loaderData", () => {
|
|
41
|
+
expect({
|
|
42
|
+
routeId: "test",
|
|
43
|
+
pathname: "/test",
|
|
44
|
+
params: {},
|
|
45
|
+
loaderData: void 0
|
|
46
|
+
}.loaderData).toBeUndefined();
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
describe("RouteMatch ordering", () => {
|
|
51
|
+
it("matches should be ordered parent to child (root layout first)", () => {
|
|
52
|
+
const matches = [
|
|
53
|
+
{ routeId: "/_layout", pathname: "/", params: {}, loaderData: { level: "root" } },
|
|
54
|
+
{
|
|
55
|
+
routeId: "/docs/_layout",
|
|
56
|
+
pathname: "/docs",
|
|
57
|
+
params: {},
|
|
58
|
+
loaderData: { level: "docs" }
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
routeId: "/docs/intro",
|
|
62
|
+
pathname: "/docs/intro",
|
|
63
|
+
params: {},
|
|
64
|
+
loaderData: { level: "page" }
|
|
65
|
+
}
|
|
66
|
+
];
|
|
67
|
+
expect(matches[0].routeId).toBe("/_layout"), expect(matches[0].loaderData.level).toBe("root"), expect(matches[1].routeId).toBe("/docs/_layout"), expect(matches[1].loaderData.level).toBe("docs"), expect(matches[2].routeId).toBe("/docs/intro"), expect(matches[2].loaderData.level).toBe("page");
|
|
68
|
+
}), it("last match should be the current page", () => {
|
|
69
|
+
const matches = [
|
|
70
|
+
{ routeId: "/_layout", pathname: "/", params: {}, loaderData: {} },
|
|
71
|
+
{
|
|
72
|
+
routeId: "/page",
|
|
73
|
+
pathname: "/page",
|
|
74
|
+
params: { id: "123" },
|
|
75
|
+
loaderData: { title: "Page" }
|
|
76
|
+
}
|
|
77
|
+
], pageMatch = matches[matches.length - 1];
|
|
78
|
+
expect(pageMatch.routeId).toBe("/page"), expect(pageMatch.loaderData.title).toBe("Page");
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
describe("setClientMatches reactivity", () => {
|
|
82
|
+
it("should notify listeners when matches change", () => {
|
|
83
|
+
let notifyCount = 0;
|
|
84
|
+
const listener = () => {
|
|
85
|
+
notifyCount++;
|
|
86
|
+
}, matches1 = [
|
|
87
|
+
{ routeId: "/page1", pathname: "/page1", params: {}, loaderData: {} }
|
|
88
|
+
], matches2 = [
|
|
89
|
+
{ routeId: "/page2", pathname: "/page2", params: {}, loaderData: {} }
|
|
90
|
+
];
|
|
91
|
+
setClientMatches(matches1), setClientMatches(matches2), expect(notifyCount).toBe(0);
|
|
92
|
+
}), it("should handle multiple sequential updates", () => {
|
|
93
|
+
const matches1 = [
|
|
94
|
+
{ routeId: "/a", pathname: "/a", params: {}, loaderData: { n: 1 } }
|
|
95
|
+
], matches2 = [
|
|
96
|
+
{ routeId: "/b", pathname: "/b", params: {}, loaderData: { n: 2 } }
|
|
97
|
+
], matches3 = [
|
|
98
|
+
{ routeId: "/c", pathname: "/c", params: {}, loaderData: { n: 3 } }
|
|
99
|
+
];
|
|
100
|
+
expect(() => {
|
|
101
|
+
setClientMatches(matches1), setClientMatches(matches2), setClientMatches(matches3);
|
|
102
|
+
}).not.toThrow();
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
describe("RouteMatch with dynamic params", () => {
|
|
106
|
+
it("should handle single dynamic param", () => {
|
|
107
|
+
expect({
|
|
108
|
+
routeId: "/users/[id]",
|
|
109
|
+
pathname: "/users/123",
|
|
110
|
+
params: { id: "123" },
|
|
111
|
+
loaderData: { user: { name: "John" } }
|
|
112
|
+
}.params.id).toBe("123");
|
|
113
|
+
}), it("should handle multiple dynamic params", () => {
|
|
114
|
+
const match = {
|
|
115
|
+
routeId: "/users/[userId]/posts/[postId]",
|
|
116
|
+
pathname: "/users/123/posts/456",
|
|
117
|
+
params: { userId: "123", postId: "456" },
|
|
118
|
+
loaderData: { post: { title: "Hello" } }
|
|
119
|
+
};
|
|
120
|
+
expect(match.params.userId).toBe("123"), expect(match.params.postId).toBe("456");
|
|
121
|
+
}), it("should handle catch-all params", () => {
|
|
122
|
+
expect({
|
|
123
|
+
routeId: "/docs/[...slug]",
|
|
124
|
+
pathname: "/docs/getting-started/intro",
|
|
125
|
+
params: { slug: ["getting-started", "intro"] },
|
|
126
|
+
loaderData: { doc: { content: "Hello" } }
|
|
127
|
+
}.params.slug).toEqual(["getting-started", "intro"]);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
describe("RouteMatch loaderData scenarios", () => {
|
|
131
|
+
it("should handle complex nested loaderData", () => {
|
|
132
|
+
const data = {
|
|
133
|
+
routeId: "/dashboard",
|
|
134
|
+
pathname: "/dashboard",
|
|
135
|
+
params: {},
|
|
136
|
+
loaderData: {
|
|
137
|
+
user: {
|
|
138
|
+
id: 1,
|
|
139
|
+
profile: {
|
|
140
|
+
name: "John",
|
|
141
|
+
settings: {
|
|
142
|
+
theme: "dark",
|
|
143
|
+
notifications: !0
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
posts: [
|
|
148
|
+
{ id: 1, title: "Post 1" },
|
|
149
|
+
{ id: 2, title: "Post 2" }
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
}.loaderData;
|
|
153
|
+
expect(data.user.profile.settings.theme).toBe("dark"), expect(data.posts).toHaveLength(2);
|
|
154
|
+
}), it("should handle null loaderData", () => {
|
|
155
|
+
expect({
|
|
156
|
+
routeId: "/empty",
|
|
157
|
+
pathname: "/empty",
|
|
158
|
+
params: {},
|
|
159
|
+
loaderData: null
|
|
160
|
+
}.loaderData).toBeNull();
|
|
161
|
+
}), it("should handle array loaderData", () => {
|
|
162
|
+
expect({
|
|
163
|
+
routeId: "/list",
|
|
164
|
+
pathname: "/list",
|
|
165
|
+
params: {},
|
|
166
|
+
loaderData: [1, 2, 3, 4, 5]
|
|
167
|
+
}.loaderData).toEqual([1, 2, 3, 4, 5]);
|
|
168
|
+
}), it("should handle primitive loaderData", () => {
|
|
169
|
+
expect({
|
|
170
|
+
routeId: "/count",
|
|
171
|
+
pathname: "/count",
|
|
172
|
+
params: {},
|
|
173
|
+
loaderData: 42
|
|
174
|
+
}.loaderData).toBe(42);
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
describe("finding matches", () => {
|
|
178
|
+
const createMatches = () => [
|
|
179
|
+
{ routeId: "/_layout", pathname: "/", params: {}, loaderData: { root: !0 } },
|
|
180
|
+
{
|
|
181
|
+
routeId: "/docs/_layout",
|
|
182
|
+
pathname: "/docs",
|
|
183
|
+
params: {},
|
|
184
|
+
loaderData: { navItems: ["intro", "guide"] }
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
routeId: "/docs/[slug]",
|
|
188
|
+
pathname: "/docs/intro",
|
|
189
|
+
params: { slug: "intro" },
|
|
190
|
+
loaderData: { title: "Introduction", headings: ["h1", "h2"] }
|
|
191
|
+
}
|
|
192
|
+
];
|
|
193
|
+
it("should find match by exact routeId", () => {
|
|
194
|
+
const found = createMatches().find((m) => m.routeId === "/docs/_layout");
|
|
195
|
+
expect(found).toBeDefined(), expect(found.loaderData.navItems).toEqual(["intro", "guide"]);
|
|
196
|
+
}), it("should find match by routeId pattern", () => {
|
|
197
|
+
const found = createMatches().find((m) => m.routeId.includes("_layout"));
|
|
198
|
+
expect(found).toBeDefined(), expect(found.routeId).toBe("/_layout");
|
|
199
|
+
}), it("should get page match (last in array)", () => {
|
|
200
|
+
const matches = createMatches(), pageMatch = matches[matches.length - 1];
|
|
201
|
+
expect(pageMatch.routeId).toBe("/docs/[slug]"), expect(pageMatch.loaderData.title).toBe("Introduction");
|
|
202
|
+
}), it("should get layout match for a page", () => {
|
|
203
|
+
const layoutMatch = createMatches().find(
|
|
204
|
+
(m) => m.routeId.includes("/docs/") && m.routeId.includes("_layout")
|
|
205
|
+
);
|
|
206
|
+
expect(layoutMatch).toBeDefined(), expect(layoutMatch.loaderData.navItems).toBeDefined();
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
//# sourceMappingURL=useMatches.test.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/useMatches.test.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { setClientMatches } from "./useMatches.mjs";
|
|
3
|
+
describe("useMatches", () => {
|
|
4
|
+
describe("setClientMatches", () => {
|
|
5
|
+
it("should update client matches without errors", () => {
|
|
6
|
+
const matches = [{
|
|
7
|
+
routeId: "/_layout",
|
|
8
|
+
pathname: "/",
|
|
9
|
+
params: {},
|
|
10
|
+
loaderData: {
|
|
11
|
+
title: "Root"
|
|
12
|
+
}
|
|
13
|
+
}, {
|
|
14
|
+
routeId: "/page",
|
|
15
|
+
pathname: "/page",
|
|
16
|
+
params: {},
|
|
17
|
+
loaderData: {
|
|
18
|
+
content: "Page content"
|
|
19
|
+
}
|
|
20
|
+
}];
|
|
21
|
+
expect(() => setClientMatches(matches)).not.toThrow();
|
|
22
|
+
}), it("should accept empty matches array", () => {
|
|
23
|
+
expect(() => setClientMatches([])).not.toThrow();
|
|
24
|
+
});
|
|
25
|
+
}), describe("type safety", () => {
|
|
26
|
+
it("should have correct RouteMatch type", () => {
|
|
27
|
+
const match = {
|
|
28
|
+
routeId: "test",
|
|
29
|
+
pathname: "/test",
|
|
30
|
+
params: {
|
|
31
|
+
id: "123"
|
|
32
|
+
},
|
|
33
|
+
loaderData: {
|
|
34
|
+
foo: "bar"
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
expect(match.routeId).toBe("test"), expect(match.pathname).toBe("/test"), expect(match.params.id).toBe("123"), expect(match.loaderData).toEqual({
|
|
38
|
+
foo: "bar"
|
|
39
|
+
});
|
|
40
|
+
}), it("should allow string[] params", () => {
|
|
41
|
+
expect({
|
|
42
|
+
routeId: "test",
|
|
43
|
+
pathname: "/test",
|
|
44
|
+
params: {
|
|
45
|
+
slugs: ["a", "b", "c"]
|
|
46
|
+
},
|
|
47
|
+
loaderData: null
|
|
48
|
+
}.params.slugs).toEqual(["a", "b", "c"]);
|
|
49
|
+
}), it("should allow undefined loaderData", () => {
|
|
50
|
+
expect({
|
|
51
|
+
routeId: "test",
|
|
52
|
+
pathname: "/test",
|
|
53
|
+
params: {},
|
|
54
|
+
loaderData: void 0
|
|
55
|
+
}.loaderData).toBeUndefined();
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
describe("RouteMatch ordering", () => {
|
|
60
|
+
it("matches should be ordered parent to child (root layout first)", () => {
|
|
61
|
+
const matches = [{
|
|
62
|
+
routeId: "/_layout",
|
|
63
|
+
pathname: "/",
|
|
64
|
+
params: {},
|
|
65
|
+
loaderData: {
|
|
66
|
+
level: "root"
|
|
67
|
+
}
|
|
68
|
+
}, {
|
|
69
|
+
routeId: "/docs/_layout",
|
|
70
|
+
pathname: "/docs",
|
|
71
|
+
params: {},
|
|
72
|
+
loaderData: {
|
|
73
|
+
level: "docs"
|
|
74
|
+
}
|
|
75
|
+
}, {
|
|
76
|
+
routeId: "/docs/intro",
|
|
77
|
+
pathname: "/docs/intro",
|
|
78
|
+
params: {},
|
|
79
|
+
loaderData: {
|
|
80
|
+
level: "page"
|
|
81
|
+
}
|
|
82
|
+
}];
|
|
83
|
+
expect(matches[0].routeId).toBe("/_layout"), expect(matches[0].loaderData.level).toBe("root"), expect(matches[1].routeId).toBe("/docs/_layout"), expect(matches[1].loaderData.level).toBe("docs"), expect(matches[2].routeId).toBe("/docs/intro"), expect(matches[2].loaderData.level).toBe("page");
|
|
84
|
+
}), it("last match should be the current page", () => {
|
|
85
|
+
const matches = [{
|
|
86
|
+
routeId: "/_layout",
|
|
87
|
+
pathname: "/",
|
|
88
|
+
params: {},
|
|
89
|
+
loaderData: {}
|
|
90
|
+
}, {
|
|
91
|
+
routeId: "/page",
|
|
92
|
+
pathname: "/page",
|
|
93
|
+
params: {
|
|
94
|
+
id: "123"
|
|
95
|
+
},
|
|
96
|
+
loaderData: {
|
|
97
|
+
title: "Page"
|
|
98
|
+
}
|
|
99
|
+
}],
|
|
100
|
+
pageMatch = matches[matches.length - 1];
|
|
101
|
+
expect(pageMatch.routeId).toBe("/page"), expect(pageMatch.loaderData.title).toBe("Page");
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
describe("setClientMatches reactivity", () => {
|
|
105
|
+
it("should notify listeners when matches change", () => {
|
|
106
|
+
let notifyCount = 0;
|
|
107
|
+
const listener = () => {
|
|
108
|
+
notifyCount++;
|
|
109
|
+
},
|
|
110
|
+
matches1 = [{
|
|
111
|
+
routeId: "/page1",
|
|
112
|
+
pathname: "/page1",
|
|
113
|
+
params: {},
|
|
114
|
+
loaderData: {}
|
|
115
|
+
}],
|
|
116
|
+
matches2 = [{
|
|
117
|
+
routeId: "/page2",
|
|
118
|
+
pathname: "/page2",
|
|
119
|
+
params: {},
|
|
120
|
+
loaderData: {}
|
|
121
|
+
}];
|
|
122
|
+
setClientMatches(matches1), setClientMatches(matches2), expect(notifyCount).toBe(0);
|
|
123
|
+
}), it("should handle multiple sequential updates", () => {
|
|
124
|
+
const matches1 = [{
|
|
125
|
+
routeId: "/a",
|
|
126
|
+
pathname: "/a",
|
|
127
|
+
params: {},
|
|
128
|
+
loaderData: {
|
|
129
|
+
n: 1
|
|
130
|
+
}
|
|
131
|
+
}],
|
|
132
|
+
matches2 = [{
|
|
133
|
+
routeId: "/b",
|
|
134
|
+
pathname: "/b",
|
|
135
|
+
params: {},
|
|
136
|
+
loaderData: {
|
|
137
|
+
n: 2
|
|
138
|
+
}
|
|
139
|
+
}],
|
|
140
|
+
matches3 = [{
|
|
141
|
+
routeId: "/c",
|
|
142
|
+
pathname: "/c",
|
|
143
|
+
params: {},
|
|
144
|
+
loaderData: {
|
|
145
|
+
n: 3
|
|
146
|
+
}
|
|
147
|
+
}];
|
|
148
|
+
expect(() => {
|
|
149
|
+
setClientMatches(matches1), setClientMatches(matches2), setClientMatches(matches3);
|
|
150
|
+
}).not.toThrow();
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
describe("RouteMatch with dynamic params", () => {
|
|
154
|
+
it("should handle single dynamic param", () => {
|
|
155
|
+
expect({
|
|
156
|
+
routeId: "/users/[id]",
|
|
157
|
+
pathname: "/users/123",
|
|
158
|
+
params: {
|
|
159
|
+
id: "123"
|
|
160
|
+
},
|
|
161
|
+
loaderData: {
|
|
162
|
+
user: {
|
|
163
|
+
name: "John"
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}.params.id).toBe("123");
|
|
167
|
+
}), it("should handle multiple dynamic params", () => {
|
|
168
|
+
const match = {
|
|
169
|
+
routeId: "/users/[userId]/posts/[postId]",
|
|
170
|
+
pathname: "/users/123/posts/456",
|
|
171
|
+
params: {
|
|
172
|
+
userId: "123",
|
|
173
|
+
postId: "456"
|
|
174
|
+
},
|
|
175
|
+
loaderData: {
|
|
176
|
+
post: {
|
|
177
|
+
title: "Hello"
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
expect(match.params.userId).toBe("123"), expect(match.params.postId).toBe("456");
|
|
182
|
+
}), it("should handle catch-all params", () => {
|
|
183
|
+
expect({
|
|
184
|
+
routeId: "/docs/[...slug]",
|
|
185
|
+
pathname: "/docs/getting-started/intro",
|
|
186
|
+
params: {
|
|
187
|
+
slug: ["getting-started", "intro"]
|
|
188
|
+
},
|
|
189
|
+
loaderData: {
|
|
190
|
+
doc: {
|
|
191
|
+
content: "Hello"
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}.params.slug).toEqual(["getting-started", "intro"]);
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
describe("RouteMatch loaderData scenarios", () => {
|
|
198
|
+
it("should handle complex nested loaderData", () => {
|
|
199
|
+
const data = {
|
|
200
|
+
routeId: "/dashboard",
|
|
201
|
+
pathname: "/dashboard",
|
|
202
|
+
params: {},
|
|
203
|
+
loaderData: {
|
|
204
|
+
user: {
|
|
205
|
+
id: 1,
|
|
206
|
+
profile: {
|
|
207
|
+
name: "John",
|
|
208
|
+
settings: {
|
|
209
|
+
theme: "dark",
|
|
210
|
+
notifications: !0
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
posts: [{
|
|
215
|
+
id: 1,
|
|
216
|
+
title: "Post 1"
|
|
217
|
+
}, {
|
|
218
|
+
id: 2,
|
|
219
|
+
title: "Post 2"
|
|
220
|
+
}]
|
|
221
|
+
}
|
|
222
|
+
}.loaderData;
|
|
223
|
+
expect(data.user.profile.settings.theme).toBe("dark"), expect(data.posts).toHaveLength(2);
|
|
224
|
+
}), it("should handle null loaderData", () => {
|
|
225
|
+
expect({
|
|
226
|
+
routeId: "/empty",
|
|
227
|
+
pathname: "/empty",
|
|
228
|
+
params: {},
|
|
229
|
+
loaderData: null
|
|
230
|
+
}.loaderData).toBeNull();
|
|
231
|
+
}), it("should handle array loaderData", () => {
|
|
232
|
+
expect({
|
|
233
|
+
routeId: "/list",
|
|
234
|
+
pathname: "/list",
|
|
235
|
+
params: {},
|
|
236
|
+
loaderData: [1, 2, 3, 4, 5]
|
|
237
|
+
}.loaderData).toEqual([1, 2, 3, 4, 5]);
|
|
238
|
+
}), it("should handle primitive loaderData", () => {
|
|
239
|
+
expect({
|
|
240
|
+
routeId: "/count",
|
|
241
|
+
pathname: "/count",
|
|
242
|
+
params: {},
|
|
243
|
+
loaderData: 42
|
|
244
|
+
}.loaderData).toBe(42);
|
|
245
|
+
});
|
|
246
|
+
});
|
|
247
|
+
describe("finding matches", () => {
|
|
248
|
+
const createMatches = () => [{
|
|
249
|
+
routeId: "/_layout",
|
|
250
|
+
pathname: "/",
|
|
251
|
+
params: {},
|
|
252
|
+
loaderData: {
|
|
253
|
+
root: !0
|
|
254
|
+
}
|
|
255
|
+
}, {
|
|
256
|
+
routeId: "/docs/_layout",
|
|
257
|
+
pathname: "/docs",
|
|
258
|
+
params: {},
|
|
259
|
+
loaderData: {
|
|
260
|
+
navItems: ["intro", "guide"]
|
|
261
|
+
}
|
|
262
|
+
}, {
|
|
263
|
+
routeId: "/docs/[slug]",
|
|
264
|
+
pathname: "/docs/intro",
|
|
265
|
+
params: {
|
|
266
|
+
slug: "intro"
|
|
267
|
+
},
|
|
268
|
+
loaderData: {
|
|
269
|
+
title: "Introduction",
|
|
270
|
+
headings: ["h1", "h2"]
|
|
271
|
+
}
|
|
272
|
+
}];
|
|
273
|
+
it("should find match by exact routeId", () => {
|
|
274
|
+
const found = createMatches().find(m => m.routeId === "/docs/_layout");
|
|
275
|
+
expect(found).toBeDefined(), expect(found.loaderData.navItems).toEqual(["intro", "guide"]);
|
|
276
|
+
}), it("should find match by routeId pattern", () => {
|
|
277
|
+
const found = createMatches().find(m => m.routeId.includes("_layout"));
|
|
278
|
+
expect(found).toBeDefined(), expect(found.routeId).toBe("/_layout");
|
|
279
|
+
}), it("should get page match (last in array)", () => {
|
|
280
|
+
const matches = createMatches(),
|
|
281
|
+
pageMatch = matches[matches.length - 1];
|
|
282
|
+
expect(pageMatch.routeId).toBe("/docs/[slug]"), expect(pageMatch.loaderData.title).toBe("Introduction");
|
|
283
|
+
}), it("should get layout match for a page", () => {
|
|
284
|
+
const layoutMatch = createMatches().find(m => m.routeId.includes("/docs/") && m.routeId.includes("_layout"));
|
|
285
|
+
expect(layoutMatch).toBeDefined(), expect(layoutMatch.loaderData.navItems).toBeDefined();
|
|
286
|
+
});
|
|
287
|
+
});
|
|
288
|
+
//# sourceMappingURL=useMatches.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","it","setClientMatches","matches","routeId","pathname","params","loaderData","title","content","not","toThrow","match","id","foo","toBe","toEqual","slugs","toBeUndefined","level","pageMatch","length","notifyCount","listener","matches1","matches2","n","matches3","user","name","userId","postId","post","slug","doc","data","profile","settings","theme","notifications","posts","toHaveLength","toBeNull","createMatches","root","navItems","headings","found","find","m","toBeDefined","includes","layoutMatch"],"sources":["../../src/useMatches.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|