Skip to content

Commit 405baee

Browse files
committed
use TanStackServerFnPluginEnv
1 parent eda4a1b commit 405baee

2 files changed

Lines changed: 32 additions & 48 deletions

File tree

packages/start/src/config/index.ts

Lines changed: 22 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import { existsSync } from "node:fs";
22
import path, { isAbsolute, join, normalize } from "node:path";
33
import { fileURLToPath } from "node:url";
4-
import { createTanStackServerFnPlugin } from "@tanstack/server-functions-plugin";
4+
import { TanStackServerFnPluginEnv } from "@tanstack/server-functions-plugin";
55
import { defu } from "defu";
66
import { normalizePath, type PluginOption, type Rollup, type ViteDevServer } from "vite";
77
import solid, { type Options as SolidOptions } from "vite-plugin-solid";
88

9+
import { CLIENT_BASE_PATH, DEFAULT_EXTENSIONS, VIRTUAL_MODULES } from "../constants.js";
910
import { isCssModulesFile } from "../server/collect-styles.js";
1011
import { getSsrDevManifest } from "../server/manifest/dev-ssr-manifest.js";
1112
import { SolidStartClientFileRouter, SolidStartServerFileRouter } from "./fs-router.js";
@@ -18,9 +19,6 @@ import {
1819
ssrEntryFile,
1920
type UserNitroConfig
2021
} from "./nitroPlugin.js";
21-
import { CLIENT_BASE_PATH } from "../constants.js";
22-
23-
const DEFAULT_EXTENSIONS = ["js", "jsx", "ts", "tsx"];
2422

2523
export type { UserNitroConfig } from "./nitroPlugin.js";
2624

@@ -33,49 +31,12 @@ export interface SolidStartOptions {
3331
middleware?: string;
3432
}
3533

36-
const SolidStartServerFnsPlugin = createTanStackServerFnPlugin({
37-
// This is the ID that will be available to look up and import
38-
// our server function manifest and resolve its module
39-
manifestVirtualImportId: "solidstart:server-fn-manifest",
40-
client: {
41-
getRuntimeCode: () =>
42-
`import { createServerReference } from "${normalize(
43-
fileURLToPath(new URL("../server/server-runtime.js", import.meta.url))
44-
)}"`,
45-
replacer: opts =>
46-
`createServerReference(${() => { }}, '${opts.functionId}', '${opts.extractedFilename}')`
47-
},
48-
ssr: {
49-
getRuntimeCode: () =>
50-
`import { createServerReference } from '${normalize(
51-
fileURLToPath(new URL("../server/server-fns-runtime.js", import.meta.url))
52-
)}'`,
53-
replacer: opts =>
54-
`createServerReference(${opts.fn}, '${opts.functionId}', '${opts.extractedFilename}')`
55-
},
56-
server: {
57-
getRuntimeCode: () =>
58-
`import { createServerReference } from '${normalize(
59-
fileURLToPath(new URL("../server/server-fns-runtime.js", import.meta.url))
60-
)}'`,
61-
replacer: opts =>
62-
`createServerReference(${opts.fn}, '${opts.functionId}', '${opts.extractedFilename}')`
63-
}
64-
});
65-
6634
const absolute = (path: string, root: string) =>
6735
path ? (isAbsolute(path) ? path : join(root, path)) : path;
6836

6937
// this needs to live outside of the TanStackStartVitePlugin since it will be invoked multiple times by vite
7038
let ssrBundle: Rollup.OutputBundle;
7139

72-
const VIRTUAL_MODULES = {
73-
clientViteManifest: "solid-start:client-vite-manifest",
74-
getClientManifest: "solid-start:get-client-manifest",
75-
getManifest: "solid-start:get-manifest",
76-
middleware: "solid-start:middleware"
77-
} as const;
78-
7940
function solidStartVitePlugin(options?: SolidStartOptions): Array<PluginOption> {
8041
const start = defu(options ?? {}, {
8142
appRoot: "./src",
@@ -227,14 +188,27 @@ function solidStartVitePlugin(options?: SolidStartOptions): Array<PluginOption>
227188
}),
228189
// Must be placed after fsRoutes, as treeShake will remove the
229190
// server fn exports added in by this plugin
230-
{
231-
name: "solid-start:server-fns",
232-
enforce: "pre",
233-
applyToEnvironment(env) {
234-
if (env.name === "server") return SolidStartServerFnsPlugin.server;
235-
return SolidStartServerFnsPlugin.client;
191+
TanStackServerFnPluginEnv({
192+
// This is the ID that will be available to look up and import
193+
// our server function manifest and resolve its module
194+
manifestVirtualImportId: VIRTUAL_MODULES.serverFnManifest,
195+
client: {
196+
getRuntimeCode: () =>
197+
`import { createServerReference } from "${normalize(
198+
fileURLToPath(new URL("../server/server-runtime.js", import.meta.url))
199+
)}"`,
200+
replacer: opts =>
201+
`createServerReference(${() => { }}, '${opts.functionId}', '${opts.extractedFilename}')`
202+
},
203+
server: {
204+
getRuntimeCode: () =>
205+
`import { createServerReference } from '${normalize(
206+
fileURLToPath(new URL("../server/server-fns-runtime.js", import.meta.url))
207+
)}'`,
208+
replacer: opts =>
209+
`createServerReference(${opts.fn}, '${opts.functionId}', '${opts.extractedFilename}')`
236210
}
237-
},
211+
}),
238212
{
239213
name: "solid-start:manifest-plugin",
240214
enforce: "pre",

packages/start/src/constants.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,11 @@
1+
export const DEFAULT_EXTENSIONS = ["js", "jsx", "ts", "tsx"];
2+
13
export const CLIENT_BASE_PATH = "_build";
4+
5+
export const VIRTUAL_MODULES = {
6+
clientViteManifest: "solid-start:client-vite-manifest",
7+
getClientManifest: "solid-start:get-client-manifest",
8+
getManifest: "solid-start:get-manifest",
9+
middleware: "solid-start:middleware",
10+
serverFnManifest: "solidstart:server-fn-manifest"
11+
} as const;

0 commit comments

Comments
 (0)