Skip to content

Commit 12f3a3d

Browse files
authored
fix: Handle multiple exports from the same file in fs-router (#1936)
1 parent 3b02718 commit 12f3a3d

14 files changed

+67
-27
lines changed

.changeset/sharp-rooms-think.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@solidjs/start": patch
3+
---
4+
5+
Handle multiple exports from the same file in fs-router

.changeset/ten-areas-burn.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@solidjs/start": patch
3+
---
4+
5+
Add a test route for multiple exports handling and correct variable typos

packages/start/config/fs-router.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { analyzeModule, BaseFileSystemRouter, cleanPath } from "vinxi/fs-router";
1+
import {analyzeModule, BaseFileSystemRouter, cleanPath} from "vinxi/fs-router";
22

33
export class SolidStartClientFileRouter extends BaseFileSystemRouter {
44
toPath(src) {
@@ -43,13 +43,13 @@ export class SolidStartClientFileRouter extends BaseFileSystemRouter {
4343
page: true,
4444
$component: {
4545
src: src,
46-
pick: ["default", "$css"]
46+
pick: [...exports.filter(e => e.n === e.ln && e.n !== "route").map(e => e.n), "default", "$css"]
4747
},
4848
$$route: hasRouteConfig
4949
? {
50-
src: src,
51-
pick: ["route"]
52-
}
50+
src: src,
51+
pick: ["route"]
52+
}
5353
: undefined,
5454
path,
5555
filePath: src
@@ -123,15 +123,15 @@ export class SolidStartServerFileRouter extends BaseFileSystemRouter {
123123
$component:
124124
!this.config.dataOnly && hasDefault
125125
? {
126-
src: src,
127-
pick: ["default", "$css"]
128-
}
126+
src: src,
127+
pick: [...exports.filter(e => e.n === e.ln && e.n !== "route" && !HTTP_METHODS.includes(e.n)).map(e => e.n), "default", "$css"]
128+
}
129129
: undefined,
130130
$$route: hasRouteConfig
131131
? {
132-
src: src,
133-
pick: ["route"]
134-
}
132+
src: src,
133+
pick: ["route"]
134+
}
135135
: undefined,
136136
...createHTTPHandlers(src, exports),
137137
path,

packages/tests/src/app.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ export default function App() {
5050
<li>
5151
<a href="/generator-server-function">generator server function</a>
5252
</li>
53+
<li>
54+
<a href="/referencing-multiple-export-named-functions-in-the-same-file">referencing multiple export named functions in the same file</a>
55+
</li>
5356
</ul>
5457
<Suspense>{props.children}</Suspense>
5558
</MetaProvider>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export function TextRenderTestComponent() {
2+
const text = "(´。> ᵕ <。`) ♡";
3+
return <>{text}</>;
4+
}

packages/tests/src/routes/is-server-const.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ export default function App() {
66

77

88
createEffect(async () => {
9-
const restult = await serverFnWithIsServer();
10-
setOutput(prev => ({ ...prev, serverFnWithIsServer: restult }));
9+
const result = await serverFnWithIsServer();
10+
setOutput(prev => ({ ...prev, serverFnWithIsServer: result }));
1111
});
1212

1313

packages/tests/src/routes/is-server-nested.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ export default function App() {
1212

1313

1414
createEffect(async () => {
15-
const restult = await serverFnWithIsServer();
16-
setOutput(prev => ({ ...prev, serverFnWithIsServer: restult }));
15+
const result = await serverFnWithIsServer();
16+
setOutput(prev => ({ ...prev, serverFnWithIsServer: result }));
1717
});
1818

1919

packages/tests/src/routes/is-server-toplevel.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ export default function App() {
66

77

88
createEffect(async () => {
9-
const restult = await serverFnWithIsServer();
10-
setOutput(prev => ({ ...prev, serverFnWithIsServer: restult }));
9+
const result = await serverFnWithIsServer();
10+
setOutput(prev => ({ ...prev, serverFnWithIsServer: result }));
1111
});
1212

1313

packages/tests/src/routes/is-server-with-anon-default-export.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ export default function App() {
66

77

88
createEffect(async () => {
9-
const restult = await serverFnWithIsServer();
10-
setOutput(prev => ({ ...prev, serverFnWithIsServer: restult }));
9+
const result = await serverFnWithIsServer();
10+
setOutput(prev => ({ ...prev, serverFnWithIsServer: result }));
1111
});
1212

1313

packages/tests/src/routes/node-builtin-nested.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ export default function App() {
1313

1414

1515
createEffect(async () => {
16-
const restult = await serverFnWithNodeBuiltin();
17-
setOutput(prev => ({ ...prev, serverFnWithNodeBuiltin: restult }));
16+
const result = await serverFnWithNodeBuiltin();
17+
setOutput(prev => ({ ...prev, serverFnWithNodeBuiltin: result }));
1818
});
1919

2020
return (

0 commit comments

Comments
 (0)