@react-router/dev 0.0.0-experimental-a26b992a1 → 0.0.0-experimental-3278f3ca6

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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
package/dist/cli/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
package/dist/cli/run.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
package/dist/colors.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
package/dist/invariant.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
package/dist/routes.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -69,7 +69,7 @@ const cloudflareDevProxyVitePlugin = (options = {}) => {
69
69
  try {
70
70
  let build = await viteDevServer.ssrLoadModule(serverBuildId);
71
71
  let handler = reactRouter.createRequestHandler(build, "development");
72
- let req = nodeAdapter.fromNodeRequest(nodeReq);
72
+ let req = nodeAdapter.fromNodeRequest(nodeReq, nodeRes);
73
73
  let loadContext = getLoadContext ? await getLoadContext({
74
74
  request: req,
75
75
  context
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
package/dist/vite/dev.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -2,5 +2,5 @@
2
2
  import type { ServerResponse } from "node:http";
3
3
  import type * as Vite from "vite";
4
4
  export type NodeRequestHandler = (req: Vite.Connect.IncomingMessage, res: ServerResponse) => Promise<void>;
5
- export declare function fromNodeRequest(nodeReq: Vite.Connect.IncomingMessage): Request;
5
+ export declare function fromNodeRequest(nodeReq: Vite.Connect.IncomingMessage, nodeRes: ServerResponse<Vite.Connect.IncomingMessage>): Request;
6
6
  export declare function toNodeRequest(res: Response, nodeRes: ServerResponse): Promise<void>;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -34,14 +34,18 @@ function fromNodeHeaders(nodeHeaders) {
34
34
  return headers;
35
35
  }
36
36
  // Based on `createRemixRequest` in packages/react-router-express/server.ts
37
- function fromNodeRequest(nodeReq) {
37
+ function fromNodeRequest(nodeReq, nodeRes) {
38
38
  let origin = nodeReq.headers.origin && "null" !== nodeReq.headers.origin ? nodeReq.headers.origin : `http://${nodeReq.headers.host}`;
39
39
  // Use `req.originalUrl` so React Router is aware of the full path
40
40
  invariant["default"](nodeReq.originalUrl, "Expected `nodeReq.originalUrl` to be defined");
41
41
  let url = new URL(nodeReq.originalUrl, origin);
42
+ // Abort action/loaders once we can no longer write a response
43
+ let controller = new AbortController();
44
+ nodeRes.on("close", () => controller.abort());
42
45
  let init = {
43
46
  method: nodeReq.method,
44
- headers: fromNodeHeaders(nodeReq.headers)
47
+ headers: fromNodeHeaders(nodeReq.headers),
48
+ signal: controller.signal
45
49
  };
46
50
  if (nodeReq.method !== "GET" && nodeReq.method !== "HEAD") {
47
51
  init.body = node.createReadableStreamFromReadable(nodeReq);
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -754,7 +754,7 @@ const reactRouterVitePlugin = _config => {
754
754
  let build = await viteDevServer.ssrLoadModule(serverBuildId);
755
755
  let handler = reactRouter.createRequestHandler(build, "development");
756
756
  let nodeHandler = async (nodeReq, nodeRes) => {
757
- let req = nodeAdapter.fromNodeRequest(nodeReq);
757
+ let req = nodeAdapter.fromNodeRequest(nodeReq, nodeRes);
758
758
  let res = await handler(req, await reactRouterDevLoadContext(req));
759
759
  await nodeAdapter.toNodeRequest(res, nodeRes);
760
760
  };
@@ -1184,19 +1184,20 @@ async function handlePrerender(viteConfig, reactRouterConfig, serverBuildDirecto
1184
1184
  }
1185
1185
  await prerenderRoute(handler, path, clientBuildDirectory, reactRouterConfig, viteConfig, requestInit);
1186
1186
  }
1187
- async function prerenderData(handler, prerenderPath, clientBuildDirectory, reactRouterConfig, viteConfig, requestInit) {
1188
- let normalizedPath = `${reactRouterConfig.basename}${prerenderPath === "/" ? "/_root.data" : `${prerenderPath.replace(/\/$/, "")}.data`}`.replace(/\/\/+/g, "/");
1189
- let request = new Request(`http://localhost${normalizedPath}`, requestInit);
1190
- let response = await handler(request);
1191
- let data = await response.text();
1192
- validatePrerenderedResponse(response, data, "Prerender", normalizedPath);
1193
- // Write out the .data file
1194
- let outdir = path__namespace.relative(process.cwd(), clientBuildDirectory);
1195
- let outfile = path__namespace.join(outdir, normalizedPath.split("/").join(path__namespace.sep));
1196
- await fse__namespace.ensureDir(path__namespace.dirname(outfile));
1197
- await fse__namespace.outputFile(outfile, data);
1198
- viteConfig.logger.info(`Prerender: Generated ${colors__default["default"].bold(outfile)}`);
1199
- }
1187
+ await prerenderManifest(build, clientBuildDirectory, reactRouterConfig, viteConfig);
1188
+ }
1189
+ async function prerenderData(handler, prerenderPath, clientBuildDirectory, reactRouterConfig, viteConfig, requestInit) {
1190
+ let normalizedPath = `${reactRouterConfig.basename}${prerenderPath === "/" ? "/_root.data" : `${prerenderPath.replace(/\/$/, "")}.data`}`.replace(/\/\/+/g, "/");
1191
+ let request = new Request(`http://localhost${normalizedPath}`, requestInit);
1192
+ let response = await handler(request);
1193
+ let data = await response.text();
1194
+ validatePrerenderedResponse(response, data, "Prerender", normalizedPath);
1195
+ // Write out the .data file
1196
+ let outdir = path__namespace.relative(process.cwd(), clientBuildDirectory);
1197
+ let outfile = path__namespace.join(outdir, ...normalizedPath.split("/"));
1198
+ await fse__namespace.ensureDir(path__namespace.dirname(outfile));
1199
+ await fse__namespace.outputFile(outfile, data);
1200
+ viteConfig.logger.info(`Prerender: Generated ${colors__default["default"].bold(outfile)}`);
1200
1201
  }
1201
1202
  async function prerenderRoute(handler, prerenderPath, clientBuildDirectory, reactRouterConfig, viteConfig, requestInit) {
1202
1203
  let normalizedPath = `${reactRouterConfig.basename}${prerenderPath}/`.replace(/\/\/+/g, "/");
@@ -1214,6 +1215,18 @@ async function prerenderRoute(handler, prerenderPath, clientBuildDirectory, reac
1214
1215
  await fse__namespace.outputFile(outfile, html);
1215
1216
  viteConfig.logger.info(`Prerender: Generated ${colors__default["default"].bold(outfile)}`);
1216
1217
  }
1218
+ async function prerenderManifest(build, clientBuildDirectory, reactRouterConfig, viteConfig) {
1219
+ let normalizedPath = `${reactRouterConfig.basename}/__manifest`.replace(/\/\/+/g, "/");
1220
+ let outdir = path__namespace.relative(process.cwd(), clientBuildDirectory);
1221
+ let outfile = path__namespace.join(outdir, ...normalizedPath.split("/"));
1222
+ await fse__namespace.ensureDir(path__namespace.dirname(outfile));
1223
+ let manifestData = JSON.stringify({
1224
+ notFoundPaths: [],
1225
+ patches: build.assets.routes
1226
+ });
1227
+ await fse__namespace.outputFile(outfile, manifestData);
1228
+ viteConfig.logger.info(`Prerender: Generated ${colors__default["default"].bold(outfile)}`);
1229
+ }
1217
1230
  function validatePrerenderedResponse(response, html, prefix, path) {
1218
1231
  if (response.status !== 200) {
1219
1232
  throw new Error(`${prefix}: Received a ${response.status} status code from ` + `\`entry.server.tsx\` while prerendering the \`${path}\` ` + `path.\n${html}`);
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
package/dist/vite/vmod.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
package/dist/vite.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-a26b992a1
2
+ * @react-router/dev v0.0.0-experimental-3278f3ca6
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-router/dev",
3
- "version": "0.0.0-experimental-a26b992a1",
3
+ "version": "0.0.0-experimental-3278f3ca6",
4
4
  "description": "Dev tools and CLI for React Router",
5
5
  "homepage": "https://reactrouter.com",
6
6
  "bugs": {
@@ -58,7 +58,7 @@
58
58
  "set-cookie-parser": "^2.6.0",
59
59
  "vite-node": "^1.6.0",
60
60
  "valibot": "^0.41.0",
61
- "@react-router/node": "0.0.0-experimental-a26b992a1"
61
+ "@react-router/node": "0.0.0-experimental-3278f3ca6"
62
62
  },
63
63
  "devDependencies": {
64
64
  "@types/babel__core": "^7.20.5",
@@ -84,15 +84,15 @@
84
84
  "tiny-invariant": "^1.2.0",
85
85
  "vite": "^5.1.0",
86
86
  "wrangler": "^3.28.2",
87
- "react-router": "^0.0.0-experimental-a26b992a1",
88
- "@react-router/serve": "0.0.0-experimental-a26b992a1"
87
+ "@react-router/serve": "0.0.0-experimental-3278f3ca6",
88
+ "react-router": "^0.0.0-experimental-3278f3ca6"
89
89
  },
90
90
  "peerDependencies": {
91
91
  "typescript": "^5.1.0",
92
92
  "vite": "^5.1.0",
93
93
  "wrangler": "^3.28.2",
94
- "@react-router/serve": "^0.0.0-experimental-a26b992a1",
95
- "react-router": "^0.0.0-experimental-a26b992a1"
94
+ "@react-router/serve": "^0.0.0-experimental-3278f3ca6",
95
+ "react-router": "^0.0.0-experimental-3278f3ca6"
96
96
  },
97
97
  "peerDependenciesMeta": {
98
98
  "@react-router/serve": {