@@ -444,4 +444,47 @@ test.describe("typegen", () => {
444444 expect ( proc . stderr . toString ( ) ) . toBe ( "" ) ;
445445 expect ( proc . status ) . toBe ( 0 ) ;
446446 } ) ;
447+
448+ test . describe ( "virtual:react-router/server-build" , async ( ) => {
449+ test ( "static import matches 'createRequestHandler' argument type" , async ( ) => {
450+ const cwd = await createProject ( {
451+ "vite.config.ts" : viteConfig ,
452+ "app/routes.ts" : tsx `
453+ import { type RouteConfig } from "@react-router/dev/routes";
454+ export default [] satisfies RouteConfig;
455+ ` ,
456+ "app/handler.ts" : tsx `
457+ import { createRequestHandler } from "react-router";
458+ import * as serverBuild from "virtual:react-router/server-build";
459+ export default createRequestHandler(serverBuild);
460+ ` ,
461+ } ) ;
462+
463+ const proc = typecheck ( cwd ) ;
464+ expect ( proc . stdout . toString ( ) ) . toBe ( "" ) ;
465+ expect ( proc . stderr . toString ( ) ) . toBe ( "" ) ;
466+ expect ( proc . status ) . toBe ( 0 ) ;
467+ } ) ;
468+
469+ test ( "dynamic import matches 'createRequestHandler' function argument type" , async ( ) => {
470+ const cwd = await createProject ( {
471+ "vite.config.ts" : viteConfig ,
472+ "app/routes.ts" : tsx `
473+ import { type RouteConfig } from "@react-router/dev/routes";
474+ export default [] satisfies RouteConfig;
475+ ` ,
476+ "app/handler.ts" : tsx `
477+ import { createRequestHandler } from "react-router";
478+ export default createRequestHandler(
479+ () => import("virtual:react-router/server-build")
480+ );
481+ ` ,
482+ } ) ;
483+
484+ const proc = typecheck ( cwd ) ;
485+ expect ( proc . stdout . toString ( ) ) . toBe ( "" ) ;
486+ expect ( proc . stderr . toString ( ) ) . toBe ( "" ) ;
487+ expect ( proc . status ) . toBe ( 0 ) ;
488+ } ) ;
489+ } ) ;
447490} ) ;
0 commit comments