@react-router/serve 0.0.0-experimental-61f2749d7 → 0.0.0-experimental-6336d71a9

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
@@ -626,12 +626,10 @@
626
626
  - 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
627
 
628
628
  Informational Resources:
629
-
630
629
  - <https://gist.github.com/jacob-ebey/9bde9546c1aafaa6bc8c242054b1be26>
631
630
  - <https://github.com/remix-run/remix/blob/main/decisions/0004-streaming-apis.md>
632
631
 
633
632
  Documentation Resources (better docs specific to Remix are in the works):
634
-
635
633
  - <https://reactrouter.com/en/main/utils/defer>
636
634
  - <https://reactrouter.com/en/main/components/await>
637
635
  - <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 v0.0.0-experimental-61f2749d7
3
+ * @react-router/serve v0.0.0-experimental-6336d71a9
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": "0.0.0-experimental-61f2749d7",
3
+ "version": "0.0.0-experimental-6336d71a9",
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/node": "0.0.0-experimental-61f2749d7",
41
- "@react-router/express": "0.0.0-experimental-61f2749d7"
41
+ "@react-router/express": "0.0.0-experimental-6336d71a9",
42
+ "@react-router/node": "0.0.0-experimental-6336d71a9"
42
43
  },
43
44
  "peerDependencies": {
44
- "react-router": "0.0.0-experimental-61f2749d7"
45
+ "react-router": "0.0.0-experimental-6336d71a9"
45
46
  },
46
47
  "devDependencies": {
47
48
  "@types/compression": "^1.7.0",