@react-router/serve 7.9.1 → 7.9.2-pre.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # `@react-router/serve`
2
2
 
3
+ ## 7.9.2-pre.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies:
8
+ - `react-router@7.9.2-pre.0`
9
+ - `@react-router/node@7.9.2-pre.0`
10
+ - `@react-router/express@7.9.2-pre.0`
11
+
3
12
  ## 7.9.1
4
13
 
5
14
  ### Patch Changes
@@ -626,12 +635,10 @@
626
635
  - Introduces the `defer()` API from `@remix-run/router` with support for server-rendering and HTTP streaming. This utility allows you to defer values returned from `loader` functions by returning promises instead of resolved values. This has been refered to as _"sending a promise over the wire"_. ([#4920](https://github.com/remix-run/remix/pull/4920))
627
636
 
628
637
  Informational Resources:
629
-
630
638
  - <https://gist.github.com/jacob-ebey/9bde9546c1aafaa6bc8c242054b1be26>
631
639
  - <https://github.com/remix-run/remix/blob/main/decisions/0004-streaming-apis.md>
632
640
 
633
641
  Documentation Resources (better docs specific to Remix are in the works):
634
-
635
642
  - <https://reactrouter.com/en/main/utils/defer>
636
643
  - <https://reactrouter.com/en/main/components/await>
637
644
  - <https://reactrouter.com/en/main/hooks/use-async-value>
package/dist/cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * @react-router/serve v7.9.1
3
+ * @react-router/serve v7.9.2-pre.0
4
4
  *
5
5
  * Copyright (c) Remix Software Inc.
6
6
  *
@@ -39,6 +39,7 @@ var import_node_os = __toESM(require("os"));
39
39
  var import_node_path = __toESM(require("path"));
40
40
  var import_node_url = __toESM(require("url"));
41
41
  var import_express = require("@react-router/express");
42
+ var import_node_fetch_server = require("@mjackson/node-fetch-server");
42
43
  var import_compression = __toESM(require("compression"));
43
44
  var import_express2 = __toESM(require("express"));
44
45
  var import_morgan = __toESM(require("morgan"));
@@ -62,6 +63,9 @@ import_source_map_support.default.install({
62
63
  }
63
64
  });
64
65
  run();
66
+ function isRSCServerBuild(build) {
67
+ return "fetch" in build && typeof build.fetch === "function";
68
+ }
65
69
  function parseNumber(raw) {
66
70
  if (raw === void 0) return void 0;
67
71
  let maybe = Number(raw);
@@ -77,7 +81,25 @@ async function run() {
77
81
  process.exit(1);
78
82
  }
79
83
  let buildPath = import_node_path.default.resolve(buildPathArg);
80
- let build = await import(import_node_url.default.pathToFileURL(buildPath).href);
84
+ let buildModule = await import(import_node_url.default.pathToFileURL(buildPath).href);
85
+ let build;
86
+ if (buildModule.default && typeof buildModule.default === "function") {
87
+ const config = {
88
+ publicPath: "/",
89
+ assetsBuildDirectory: "../client",
90
+ ...buildModule.unstable_reactRouterServeConfig || {}
91
+ };
92
+ build = {
93
+ fetch: buildModule.default,
94
+ publicPath: config.publicPath,
95
+ assetsBuildDirectory: import_node_path.default.resolve(
96
+ import_node_path.default.dirname(buildPath),
97
+ config.assetsBuildDirectory
98
+ )
99
+ };
100
+ } else {
101
+ build = buildModule;
102
+ }
81
103
  let onListen = () => {
82
104
  let address = process.env.HOST || Object.values(import_node_os.default.networkInterfaces()).flat().find((ip) => String(ip?.family).includes("4") && !ip?.internal)?.address;
83
105
  if (!address) {
@@ -101,13 +123,17 @@ async function run() {
101
123
  app.use(build.publicPath, import_express2.default.static(build.assetsBuildDirectory));
102
124
  app.use(import_express2.default.static("public", { maxAge: "1h" }));
103
125
  app.use((0, import_morgan.default)("tiny"));
104
- app.all(
105
- "*",
106
- (0, import_express.createRequestHandler)({
107
- build,
108
- mode: process.env.NODE_ENV
109
- })
110
- );
126
+ if (isRSCServerBuild(build)) {
127
+ app.all("*", (0, import_node_fetch_server.createRequestListener)(build.fetch));
128
+ } else {
129
+ app.all(
130
+ "*",
131
+ (0, import_express.createRequestHandler)({
132
+ build,
133
+ mode: process.env.NODE_ENV
134
+ })
135
+ );
136
+ }
111
137
  let server = process.env.HOST ? app.listen(port, process.env.HOST, onListen) : app.listen(port, onListen);
112
138
  ["SIGTERM", "SIGINT"].forEach((signal) => {
113
139
  process.once(signal, () => server?.close(console.error));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-router/serve",
3
- "version": "7.9.1",
3
+ "version": "7.9.2-pre.0",
4
4
  "description": "Production application server for React Router",
5
5
  "bugs": {
6
6
  "url": "https://github.com/remix-run/react-router/issues"
@@ -32,16 +32,17 @@
32
32
  }
33
33
  },
34
34
  "dependencies": {
35
+ "@mjackson/node-fetch-server": "^0.2.0",
35
36
  "compression": "^1.7.4",
36
37
  "express": "^4.19.2",
37
38
  "get-port": "5.1.1",
38
39
  "morgan": "^1.10.0",
39
40
  "source-map-support": "^0.5.21",
40
- "@react-router/express": "7.9.1",
41
- "@react-router/node": "7.9.1"
41
+ "@react-router/express": "7.9.2-pre.0",
42
+ "@react-router/node": "7.9.2-pre.0"
42
43
  },
43
44
  "peerDependencies": {
44
- "react-router": "7.9.1"
45
+ "react-router": "7.9.2-pre.0"
45
46
  },
46
47
  "devDependencies": {
47
48
  "@types/compression": "^1.7.0",