1- import { fileURLToPath } from "node:url" ;
21import {
32 createFilter ,
43 type EnvironmentModuleGraph ,
54 type FilterPattern ,
6- normalizePath ,
75 type Plugin ,
86 type ViteDevServer ,
97} from "vite" ;
@@ -16,51 +14,17 @@ export interface ServerFunctionsFilter {
1614
1715export interface ServerFunctionsOptions {
1816 manifest : string ;
17+ runtime : {
18+ server : string ;
19+ client : string ;
20+ } ;
1921 filter ?: ServerFunctionsFilter ;
2022}
2123
22- const CLIENT_PATH = normalizePath (
23- fileURLToPath ( new URL ( "../server/server-runtime.ts" , import . meta. url ) ) ,
24- ) ;
25- const SERVER_PATH = normalizePath (
26- fileURLToPath ( new URL ( "../server/server-fns-runtime.ts" , import . meta. url ) ) ,
27- ) ;
28-
2924const DEFAULT_INCLUDE = "src/**/*.{jsx,tsx,ts,js,mjs,cjs}" ;
3025const DEFAULT_EXCLUDE = "node_modules/**/*.{jsx,tsx,ts,js,mjs,cjs}" ;
3126const DIRECTIVE = "use server" ;
3227
33- const CLIENT_OPTIONS : Pick < CompileOptions , "directive" | "definitions" > = {
34- directive : DIRECTIVE ,
35- definitions : {
36- register : {
37- kind : "named" ,
38- name : "createServerReference" ,
39- source : CLIENT_PATH ,
40- } ,
41- clone : {
42- kind : "named" ,
43- name : "cloneServerReference" ,
44- source : CLIENT_PATH ,
45- } ,
46- } ,
47- } ;
48- const SERVER_OPTIONS : Pick < CompileOptions , "directive" | "definitions" > = {
49- directive : DIRECTIVE ,
50- definitions : {
51- register : {
52- kind : "named" ,
53- name : "createServerReference" ,
54- source : SERVER_PATH ,
55- } ,
56- clone : {
57- kind : "named" ,
58- name : "cloneServerReference" ,
59- source : SERVER_PATH ,
60- } ,
61- } ,
62- } ;
63-
6428type Manifest = Record < CompileOptions [ "mode" ] , Set < string > > ;
6529
6630function createManifest ( ) : Manifest {
@@ -165,6 +129,37 @@ export function serverFunctionsPlugin(options: ServerFunctionsOptions): Plugin[]
165129 } ;
166130 let currentServer : ViteDevServer ;
167131
132+ const clientOptions : Pick < CompileOptions , "directive" | "definitions" > = {
133+ directive : DIRECTIVE ,
134+ definitions : {
135+ register : {
136+ kind : "named" ,
137+ name : "createServerReference" ,
138+ source : options . runtime . client ,
139+ } ,
140+ clone : {
141+ kind : "named" ,
142+ name : "cloneServerReference" ,
143+ source : options . runtime . client ,
144+ } ,
145+ } ,
146+ } ;
147+ const serverOptions : Pick < CompileOptions , "directive" | "definitions" > = {
148+ directive : DIRECTIVE ,
149+ definitions : {
150+ register : {
151+ kind : "named" ,
152+ name : "createServerReference" ,
153+ source : options . runtime . server ,
154+ } ,
155+ clone : {
156+ kind : "named" ,
157+ name : "cloneServerReference" ,
158+ source : options . runtime . server ,
159+ } ,
160+ } ,
161+ } ;
162+
168163 return [
169164 {
170165 name : "solid-start:server-functions/setup" ,
@@ -208,7 +203,7 @@ export function serverFunctionsPlugin(options: ServerFunctionsOptions): Plugin[]
208203 }
209204
210205 const result = await compile ( id ! , code , {
211- ...( mode === "server" ? SERVER_OPTIONS : CLIENT_OPTIONS ) ,
206+ ...( mode === "server" ? serverOptions : clientOptions ) ,
212207 mode,
213208 env,
214209 } ) ;
0 commit comments