diff --git a/.changeset/sharp-rooms-think.md b/.changeset/sharp-rooms-think.md new file mode 100644 index 000000000..289e2709b --- /dev/null +++ b/.changeset/sharp-rooms-think.md @@ -0,0 +1,5 @@ +--- +"@solidjs/start": patch +--- + +Handle multiple exports from the same file in fs-router diff --git a/.changeset/ten-areas-burn.md b/.changeset/ten-areas-burn.md new file mode 100644 index 000000000..af1bfc200 --- /dev/null +++ b/.changeset/ten-areas-burn.md @@ -0,0 +1,5 @@ +--- +"@solidjs/start": patch +--- + +Add a test route for multiple exports handling and correct variable typos diff --git a/packages/start/config/fs-router.js b/packages/start/config/fs-router.js index b4eb0e682..6d92c763c 100644 --- a/packages/start/config/fs-router.js +++ b/packages/start/config/fs-router.js @@ -1,4 +1,4 @@ -import { analyzeModule, BaseFileSystemRouter, cleanPath } from "vinxi/fs-router"; +import {analyzeModule, BaseFileSystemRouter, cleanPath} from "vinxi/fs-router"; export class SolidStartClientFileRouter extends BaseFileSystemRouter { toPath(src) { @@ -43,13 +43,13 @@ export class SolidStartClientFileRouter extends BaseFileSystemRouter { page: true, $component: { src: src, - pick: ["default", "$css"] + pick: [...exports.filter(e => e.n === e.ln && e.n !== "route").map(e => e.n), "default", "$css"] }, $$route: hasRouteConfig ? { - src: src, - pick: ["route"] - } + src: src, + pick: ["route"] + } : undefined, path, filePath: src @@ -123,15 +123,15 @@ export class SolidStartServerFileRouter extends BaseFileSystemRouter { $component: !this.config.dataOnly && hasDefault ? { - src: src, - pick: ["default", "$css"] - } + src: src, + pick: [...exports.filter(e => e.n === e.ln && e.n !== "route" && !HTTP_METHODS.includes(e.n)).map(e => e.n), "default", "$css"] + } : undefined, $$route: hasRouteConfig ? { - src: src, - pick: ["route"] - } + src: src, + pick: ["route"] + } : undefined, ...createHTTPHandlers(src, exports), path, diff --git a/packages/tests/src/app.tsx b/packages/tests/src/app.tsx index a84fd3f03..3be335393 100644 --- a/packages/tests/src/app.tsx +++ b/packages/tests/src/app.tsx @@ -50,6 +50,9 @@ export default function App() {
  • generator server function
  • +
  • + referencing multiple export named functions in the same file +
  • {props.children} diff --git a/packages/tests/src/functions/text-render-test-component.tsx b/packages/tests/src/functions/text-render-test-component.tsx new file mode 100644 index 000000000..705cd44e6 --- /dev/null +++ b/packages/tests/src/functions/text-render-test-component.tsx @@ -0,0 +1,4 @@ +export function TextRenderTestComponent() { + const text = "(´。> ᵕ <。`) ♡"; + return <>{text}; +} diff --git a/packages/tests/src/routes/is-server-const.tsx b/packages/tests/src/routes/is-server-const.tsx index cfd05ef94..6c8821e17 100644 --- a/packages/tests/src/routes/is-server-const.tsx +++ b/packages/tests/src/routes/is-server-const.tsx @@ -6,8 +6,8 @@ export default function App() { createEffect(async () => { - const restult = await serverFnWithIsServer(); - setOutput(prev => ({ ...prev, serverFnWithIsServer: restult })); + const result = await serverFnWithIsServer(); + setOutput(prev => ({ ...prev, serverFnWithIsServer: result })); }); diff --git a/packages/tests/src/routes/is-server-nested.tsx b/packages/tests/src/routes/is-server-nested.tsx index 5806c207a..3e6086453 100644 --- a/packages/tests/src/routes/is-server-nested.tsx +++ b/packages/tests/src/routes/is-server-nested.tsx @@ -12,8 +12,8 @@ export default function App() { createEffect(async () => { - const restult = await serverFnWithIsServer(); - setOutput(prev => ({ ...prev, serverFnWithIsServer: restult })); + const result = await serverFnWithIsServer(); + setOutput(prev => ({ ...prev, serverFnWithIsServer: result })); }); diff --git a/packages/tests/src/routes/is-server-toplevel.tsx b/packages/tests/src/routes/is-server-toplevel.tsx index 43add2dc2..b829cef9d 100644 --- a/packages/tests/src/routes/is-server-toplevel.tsx +++ b/packages/tests/src/routes/is-server-toplevel.tsx @@ -6,8 +6,8 @@ export default function App() { createEffect(async () => { - const restult = await serverFnWithIsServer(); - setOutput(prev => ({ ...prev, serverFnWithIsServer: restult })); + const result = await serverFnWithIsServer(); + setOutput(prev => ({ ...prev, serverFnWithIsServer: result })); }); diff --git a/packages/tests/src/routes/is-server-with-anon-default-export.tsx b/packages/tests/src/routes/is-server-with-anon-default-export.tsx index d9cc25ae7..47922b2c8 100644 --- a/packages/tests/src/routes/is-server-with-anon-default-export.tsx +++ b/packages/tests/src/routes/is-server-with-anon-default-export.tsx @@ -6,8 +6,8 @@ export default function App() { createEffect(async () => { - const restult = await serverFnWithIsServer(); - setOutput(prev => ({ ...prev, serverFnWithIsServer: restult })); + const result = await serverFnWithIsServer(); + setOutput(prev => ({ ...prev, serverFnWithIsServer: result })); }); diff --git a/packages/tests/src/routes/node-builtin-nested.tsx b/packages/tests/src/routes/node-builtin-nested.tsx index deb038851..e1f27c2df 100644 --- a/packages/tests/src/routes/node-builtin-nested.tsx +++ b/packages/tests/src/routes/node-builtin-nested.tsx @@ -13,8 +13,8 @@ export default function App() { createEffect(async () => { - const restult = await serverFnWithNodeBuiltin(); - setOutput(prev => ({ ...prev, serverFnWithNodeBuiltin: restult })); + const result = await serverFnWithNodeBuiltin(); + setOutput(prev => ({ ...prev, serverFnWithNodeBuiltin: result })); }); return ( diff --git a/packages/tests/src/routes/node-builtin-toplevel.tsx b/packages/tests/src/routes/node-builtin-toplevel.tsx index 960b6bf0d..b9ca3db82 100644 --- a/packages/tests/src/routes/node-builtin-toplevel.tsx +++ b/packages/tests/src/routes/node-builtin-toplevel.tsx @@ -6,8 +6,8 @@ export default function App() { const [output, setOutput] = createSignal<{ serverFnWithNodeBuiltin?: string }>({}); createEffect(async () => { - const restult = await serverFnWithNodeBuiltin(); - setOutput(prev => ({ ...prev, serverFnWithNodeBuiltin: restult })); + const result = await serverFnWithNodeBuiltin(); + setOutput(prev => ({ ...prev, serverFnWithNodeBuiltin: result })); }); return ( diff --git a/packages/tests/src/routes/npm-module-nested.tsx b/packages/tests/src/routes/npm-module-nested.tsx index 4116796db..19af38e17 100644 --- a/packages/tests/src/routes/npm-module-nested.tsx +++ b/packages/tests/src/routes/npm-module-nested.tsx @@ -11,8 +11,8 @@ export default function App() { const [output, setOutput] = createSignal<{ serverFnWithNpmModule?: number[] }>({}); createEffect(async () => { - const restult = await serverFnWithNpmModule(); - setOutput(prev => ({ ...prev, serverFnWithNpmModule: restult })); + const result = await serverFnWithNpmModule(); + setOutput(prev => ({ ...prev, serverFnWithNpmModule: result })); }); return ( diff --git a/packages/tests/src/routes/npm-module-toplevel.tsx b/packages/tests/src/routes/npm-module-toplevel.tsx index e275f7a95..f9d6cfbf9 100644 --- a/packages/tests/src/routes/npm-module-toplevel.tsx +++ b/packages/tests/src/routes/npm-module-toplevel.tsx @@ -5,8 +5,8 @@ export default function App() { const [output, setOutput] = createSignal<{ serverFnWithNpmModule?: number[] }>({}); createEffect(async () => { - const restult = await serverFnWithNpmModule(); - setOutput(prev => ({ ...prev, serverFnWithNpmModule: restult })); + const result = await serverFnWithNpmModule(); + setOutput(prev => ({ ...prev, serverFnWithNpmModule: result })); }); return ( diff --git a/packages/tests/src/routes/referencing-multiple-export-named-functions-in-the-same-file.tsx b/packages/tests/src/routes/referencing-multiple-export-named-functions-in-the-same-file.tsx new file mode 100644 index 000000000..6d477bd43 --- /dev/null +++ b/packages/tests/src/routes/referencing-multiple-export-named-functions-in-the-same-file.tsx @@ -0,0 +1,23 @@ +import { TextRenderTestComponent as ExternalCuteFaceDisplay} from "../functions/text-render-test-component"; + +export function TextRenderTestComponent() { + return <>(´。• ᵕ •。`) ♡; +} + +export function VariableImportTestComponent() { + return <>{testObjectExport.stringValue}; +} + +export const testStringExport = "♡(˃͈ દ ˂͈ ༶ )"; + +export const testObjectExport = { + stringValue: testStringExport, +}; + +export default function () { + return <> + + + + ; +}