1
+ import "@marko/run/router" ;
2
+
1
3
import type { IncomingMessage } from "http" ;
2
4
import type { Connect , ViteDevServer } from "vite" ;
3
5
@@ -12,41 +14,35 @@ declare global {
12
14
| undefined ;
13
15
}
14
16
15
- // Prevent importing the router and subsequent runtime in dev mode without going through Vite's ssrLoadModule
16
- if ( process . env . NODE_ENV && process . env . NODE_ENV !== "development" ) {
17
- import ( "@marko/run/router" ) ;
18
- }
19
-
20
17
export default globalThis . __marko_run_middleware__ ??=
21
18
process . env . NODE_ENV && process . env . NODE_ENV !== "development"
22
19
? ( factory ) => factory
23
20
: ( ( ) => {
24
- let devServer : ViteDevServer | undefined ;
21
+ let devServer : ViteDevServer ;
25
22
let errorMiddleware : Connect . ErrorHandleFunction | undefined ;
23
+ let devMiddleware : NodeMiddleware = async ( req , res , next ) => {
24
+ await initPromise ;
25
+ devMiddleware ( req , res , next ) ;
26
+ } ;
26
27
27
28
const seenReqs = new WeakSet < IncomingMessage > ( ) ;
28
- const devServerPromise = import ( "@marko/run/adapter" ) . then (
29
- async ( mod ) => {
30
- devServer = await mod . createViteDevServer (
31
- globalThis . __marko_run_vite_config__ ,
32
- ) ;
33
- errorMiddleware = mod . createErrorMiddleware ( devServer ) ;
29
+ const initPromise = ( async ( ) => {
30
+ const adapter = await import ( "@marko/run/adapter" ) ;
31
+ devServer = await adapter . createViteDevServer (
32
+ globalThis . __marko_run_vite_config__ ,
33
+ ) ;
34
34
35
- void devServer ! . ssrLoadModule ( "@marko/run/router" ) . catch ( ( ) => { } ) ;
36
- devMiddleware = ( req , res , next ) => {
37
- if ( seenReqs . has ( req ) ) {
38
- return next ?.( ) ;
39
- }
40
- seenReqs . add ( req ) ;
41
- devServer ! . middlewares ( req , res , next ) ;
42
- } ;
43
- } ,
44
- ) ;
35
+ await devServer . ssrLoadModule ( "@marko/run/router" ) ;
45
36
46
- let devMiddleware : NodeMiddleware = async ( req , res , next ) => {
47
- await devServerPromise ;
48
- devMiddleware ( req , res , next ) ;
49
- } ;
37
+ errorMiddleware = adapter . createErrorMiddleware ( devServer ) ;
38
+ devMiddleware = ( req , res , next ) => {
39
+ if ( seenReqs . has ( req ) ) {
40
+ return next ?.( ) ;
41
+ }
42
+ seenReqs . add ( req ) ;
43
+ devServer . middlewares ( req , res , next ) ;
44
+ } ;
45
+ } ) ( ) ;
50
46
51
47
return ( factory ) =>
52
48
( ...args ) => {
@@ -69,7 +65,7 @@ export default globalThis.__marko_run_middleware__ ??=
69
65
}
70
66
71
67
try {
72
- await devServer ! . ssrLoadModule ( "@marko/run/router" ) ;
68
+ await devServer . ssrLoadModule ( "@marko/run/router" ) ;
73
69
} catch ( err ) {
74
70
handleError ( err as Error ) ;
75
71
return ;
0 commit comments