Skip to content

Commit 1ed97e2

Browse files
committed
Add createRequestHandler to @react-router/node
1 parent 200cfed commit 1ed97e2

File tree

6 files changed

+53
-212
lines changed

6 files changed

+53
-212
lines changed

.changeset/rotten-items-cry.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"@react-router/node": patch
3+
---
4+
5+
Add createRequestListener to @react-router/node
6+
7+
Also, removed streaming utilities from @react-router/node since they are redundant.
Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,2 @@
1+
export { CreateRequestListenerOptions, createRequestListener } from "./server";
12
export { createFileSessionStorage } from "./sessions/fileStorage";
2-
3-
export {
4-
createReadableStreamFromReadable,
5-
readableStreamToString,
6-
writeAsyncIterableToWritable,
7-
writeReadableStreamToWritable,
8-
} from "./stream";

packages/react-router-node/package.json

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,9 @@
6868
}
6969
},
7070
"dependencies": {
71-
"source-map-support": "^0.5.21",
72-
"stream-slice": "^0.1.2",
73-
"undici": "^6.19.2"
71+
"@mjackson/node-fetch-server": "^0.1.0"
7472
},
7573
"devDependencies": {
76-
"@types/source-map-support": "^0.5.4",
7774
"react-router": "workspace:*",
7875
"tsup": "^8.3.0",
7976
"typescript": "^5.1.6",
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import type { RequestListener } from "node:http";
2+
3+
import type {
4+
AppLoadContext,
5+
ServerBuild,
6+
UNSAFE_ServerMode,
7+
} from "react-router";
8+
import { createRequestHandler } from "react-router";
9+
import type { ClientAddress } from "@mjackson/node-fetch-server";
10+
import { createRequestListener as createRequestListener_ } from "@mjackson/node-fetch-server";
11+
12+
export interface CreateRequestListenerOptions {
13+
build: ServerBuild | (() => ServerBuild | Promise<ServerBuild>);
14+
getLoadContext?: (
15+
request: Request,
16+
client: ClientAddress
17+
) => AppLoadContext | Promise<AppLoadContext>;
18+
mode?: UNSAFE_ServerMode;
19+
}
20+
21+
/**
22+
* Creates a request listener that handles requests using Node's built-in HTTP server.
23+
*
24+
* @param options Options for creating a request listener.
25+
* @returns A request listener that can be used with `http.createServer`.
26+
*/
27+
export function createRequestListener(
28+
options: CreateRequestListenerOptions
29+
): RequestListener {
30+
let handleRequest = createRequestHandler(options.build, options.mode);
31+
32+
return createRequestListener_(async (request, client) => {
33+
let loadContext = await options.getLoadContext?.(request, client);
34+
return handleRequest(request, loadContext);
35+
});
36+
}

packages/react-router-node/stream.ts

Lines changed: 0 additions & 178 deletions
This file was deleted.

pnpm-lock.yaml

Lines changed: 8 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)