@@ -6,50 +6,21 @@ import {
66 type ViteDevServer ,
77} from "vite" ;
88import { VITE_ENVIRONMENTS } from "./constants.ts" ;
9- import { join , resolve } from "node:path" ;
10- import { H3 , serveStatic } from "h3" ;
11- import { stat , readFile } from "node:fs/promises" ;
12-
13- type Server = {
14- default : { fetch : ( req : Request ) => Promise < Response > } ;
15- } ;
169
1710export function devServer ( ) : Array < PluginOption > {
1811 return [
1912 {
2013 name : "solid-start-dev-server" ,
21- async configurePreviewServer ( vitePreviewServer ) {
22- const { default : h3App } : Server = await import (
23- resolve ( process . cwd ( ) , "dist/server/entry-server.js" )
24- ) ;
25- const app = new H3 ( ) ;
26- app . use ( "/_build/**" , event => {
27- return serveStatic ( event , {
28- indexNames : [ "/index.html" ] ,
29- headers : { "cache-control" : "public, max-age=3156000, immutable" } ,
30- getContents : id => readFile ( join ( process . cwd ( ) , "dist/client" , id ) ) ,
31- getMeta : async id => {
32- const stats = await stat ( join ( "dist/client" , id ) ) . catch ( ( ) => { } ) ;
33- if ( stats ?. isFile ( ) ) {
34- return {
35- size : stats . size ,
36- mtime : stats . mtimeMs ,
37- } ;
38- }
39- } ,
40- } ) ;
41- } ) ;
42- app . mount ( "/" , h3App ) ;
43-
44- return async ( ) => {
45- vitePreviewServer . middlewares . use ( async ( req , res ) => {
46- // fix streaming because vite uses gzip by default
47- res . setHeader ( "Content-Encoding" , "identity" ) ;
48-
14+ configurePreviewServer ( server ) {
15+ return ( ) => {
16+ globalThis . canSendFastNodeStreams = true ;
17+ server . middlewares . use ( async ( req , res ) => {
18+ res . setHeader ( "content-encoding" , "identity" ) ;
4919 const webReq = new NodeRequest ( { req, res } ) ;
50-
51- const webRes = await app . fetch ( webReq ) ;
52- sendNodeResponse ( res , webRes ) ;
20+ const def : {
21+ default : { fetch : ( req : Request ) => Promise < Response > } ;
22+ } = await import ( process . cwd ( ) + "/dist/server/entry-server.js" ) ;
23+ sendNodeResponse ( res , await def . default . fetch ( webReq ) ) ;
5324 } ) ;
5425 } ;
5526 } ,
@@ -82,7 +53,9 @@ export function devServer(): Array<PluginOption> {
8253 const webReq = new NodeRequest ( { req, res } ) ;
8354
8455 try {
85- const serverEntry : Server = await serverEnv . runner . import ( "./src/entry-server.tsx" ) ;
56+ const serverEntry : {
57+ default : { fetch : ( req : Request ) => Promise < Response > } ;
58+ } = await serverEnv . runner . import ( "./src/entry-server.tsx" ) ;
8659
8760 const webRes = await serverEntry . default . fetch ( webReq ) ;
8861
0 commit comments