@react-router/dev 0.0.0-experimental-1ab091485 → 0.0.0-experimental-c10e297a4

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/dist/cli/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * @react-router/dev v0.0.0-experimental-1ab091485
3
+ * @react-router/dev v0.0.0-experimental-c10e297a4
4
4
  *
5
5
  * Copyright (c) Remix Software Inc.
6
6
  *
package/dist/config.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-1ab091485
2
+ * @react-router/dev v0.0.0-experimental-c10e297a4
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-1ab091485
2
+ * @react-router/dev v0.0.0-experimental-c10e297a4
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-1ab091485
2
+ * @react-router/dev v0.0.0-experimental-c10e297a4
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -64,18 +64,7 @@ function invariant(value, message) {
64
64
  }
65
65
 
66
66
  // vite/node-adapter.ts
67
- function fromNodeHeaders(nodeReq) {
68
- let nodeHeaders = nodeReq.headers;
69
- if (nodeReq.httpVersionMajor >= 2) {
70
- nodeHeaders = { ...nodeHeaders };
71
- if (nodeHeaders[":authority"]) {
72
- nodeHeaders.host = nodeHeaders[":authority"];
73
- }
74
- delete nodeHeaders[":authority"];
75
- delete nodeHeaders[":method"];
76
- delete nodeHeaders[":path"];
77
- delete nodeHeaders[":scheme"];
78
- }
67
+ function fromNodeHeaders(nodeHeaders) {
79
68
  let headers = new Headers();
80
69
  for (let [key, values] of Object.entries(nodeHeaders)) {
81
70
  if (values) {
@@ -100,7 +89,7 @@ function fromNodeRequest(nodeReq, nodeRes) {
100
89
  let controller = new AbortController();
101
90
  let init = {
102
91
  method: nodeReq.method,
103
- headers: fromNodeHeaders(nodeReq),
92
+ headers: fromNodeHeaders(nodeReq.headers),
104
93
  signal: controller.signal
105
94
  };
106
95
  nodeRes.on("finish", () => controller = null);
package/dist/vite.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-1ab091485
2
+ * @react-router/dev v0.0.0-experimental-c10e297a4
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -867,18 +867,7 @@ var import_node_events = require("events");
867
867
  var import_node_stream = require("stream");
868
868
  var import_set_cookie_parser = require("set-cookie-parser");
869
869
  var import_node = require("@react-router/node");
870
- function fromNodeHeaders(nodeReq) {
871
- let nodeHeaders = nodeReq.headers;
872
- if (nodeReq.httpVersionMajor >= 2) {
873
- nodeHeaders = { ...nodeHeaders };
874
- if (nodeHeaders[":authority"]) {
875
- nodeHeaders.host = nodeHeaders[":authority"];
876
- }
877
- delete nodeHeaders[":authority"];
878
- delete nodeHeaders[":method"];
879
- delete nodeHeaders[":path"];
880
- delete nodeHeaders[":scheme"];
881
- }
870
+ function fromNodeHeaders(nodeHeaders) {
882
871
  let headers = new Headers();
883
872
  for (let [key, values] of Object.entries(nodeHeaders)) {
884
873
  if (values) {
@@ -903,7 +892,7 @@ function fromNodeRequest(nodeReq, nodeRes) {
903
892
  let controller = new AbortController();
904
893
  let init = {
905
894
  method: nodeReq.method,
906
- headers: fromNodeHeaders(nodeReq),
895
+ headers: fromNodeHeaders(nodeReq.headers),
907
896
  signal: controller.signal
908
897
  };
909
898
  nodeRes.on("finish", () => controller = null);
@@ -1058,27 +1047,35 @@ var groupRoutesByParentId = (manifest) => {
1058
1047
  });
1059
1048
  return routes;
1060
1049
  };
1061
- var createRoutes = (manifest, parentId = "", routesByParentId = groupRoutesByParentId(manifest)) => {
1050
+ var createRoutesWithChildren = (manifest, parentId = "", routesByParentId = groupRoutesByParentId(manifest)) => {
1062
1051
  return (routesByParentId[parentId] || []).map((route) => ({
1063
1052
  ...route,
1064
- children: createRoutes(manifest, route.id, routesByParentId)
1053
+ ...route.index ? {
1054
+ index: true
1055
+ } : {
1056
+ index: false,
1057
+ children: createRoutesWithChildren(
1058
+ manifest,
1059
+ route.id,
1060
+ routesByParentId
1061
+ )
1062
+ }
1065
1063
  }));
1066
1064
  };
1067
- var getStylesForUrl = async ({
1065
+ var getStylesForPathname = async ({
1068
1066
  viteDevServer,
1069
1067
  rootDirectory,
1070
1068
  reactRouterConfig,
1071
1069
  entryClientFilePath,
1072
1070
  loadCssContents,
1073
- build,
1074
- url: url2
1071
+ pathname
1075
1072
  }) => {
1076
- if (url2 === void 0 || url2.includes("?_data=")) {
1073
+ if (pathname === void 0 || pathname.includes("?_data=")) {
1077
1074
  return void 0;
1078
1075
  }
1079
- let routes = createRoutes(build.routes);
1076
+ let routesWithChildren = createRoutesWithChildren(reactRouterConfig.routes);
1080
1077
  let appPath = path5.relative(process.cwd(), reactRouterConfig.appDirectory);
1081
- let documentRouteFiles = (0, import_react_router.matchRoutes)(routes, url2, build.basename)?.map(
1078
+ let documentRouteFiles = (0, import_react_router.matchRoutes)(routesWithChildren, pathname, reactRouterConfig.basename)?.map(
1082
1079
  (match) => path5.resolve(appPath, reactRouterConfig.routes[match.route.id].file)
1083
1080
  ) ?? [];
1084
1081
  let styles = await getStylesForFiles({
@@ -2238,10 +2235,10 @@ var reactRouterVitePlugin = () => {
2238
2235
  routes
2239
2236
  );
2240
2237
  return `
2241
- import * as entryServer from ${JSON.stringify(
2238
+ import * as entryServer from ${JSON.stringify(
2242
2239
  resolveFileUrl(ctx, ctx.entryServerFilePath)
2243
2240
  )};
2244
- ${Object.keys(routes).map((key, index) => {
2241
+ ${Object.keys(routes).map((key, index) => {
2245
2242
  let route = routes[key];
2246
2243
  return `import * as route${index} from ${JSON.stringify(
2247
2244
  resolveFileUrl(
@@ -2278,7 +2275,15 @@ var reactRouterVitePlugin = () => {
2278
2275
  module: route${index}
2279
2276
  }`;
2280
2277
  }).join(",\n ")}
2281
- };`;
2278
+ };
2279
+ ${ctx.reactRouterConfig.future.unstable_viteEnvironmentApi && viteCommand === "serve" ? `
2280
+ export const getCriticalCss = ({ pathname }) => {
2281
+ return {
2282
+ rel: "stylesheet",
2283
+ href: "${viteUserConfig.base ?? "/"}@react-router/critical.css?pathname=" + pathname,
2284
+ };
2285
+ }
2286
+ ` : ""}`;
2282
2287
  };
2283
2288
  let loadViteManifest = async (directory) => {
2284
2289
  let manifestContents = await fse.readFile(
@@ -2758,15 +2763,14 @@ var reactRouterVitePlugin = () => {
2758
2763
  (0, import_react_router2.unstable_setDevServerHooks)({
2759
2764
  // Give the request handler access to the critical CSS in dev to avoid a
2760
2765
  // flash of unstyled content since Vite injects CSS file contents via JS
2761
- getCriticalCss: async (build, url2) => {
2762
- return getStylesForUrl({
2766
+ getCriticalCss: async (pathname) => {
2767
+ return getStylesForPathname({
2763
2768
  rootDirectory: ctx.rootDirectory,
2764
2769
  entryClientFilePath: ctx.entryClientFilePath,
2765
2770
  reactRouterConfig: ctx.reactRouterConfig,
2766
2771
  viteDevServer,
2767
2772
  loadCssContents,
2768
- build,
2769
- url: url2
2773
+ pathname
2770
2774
  });
2771
2775
  },
2772
2776
  // If an error is caught within the request handler, let Vite fix the
@@ -2810,24 +2814,33 @@ var reactRouterVitePlugin = () => {
2810
2814
  }
2811
2815
  );
2812
2816
  return () => {
2817
+ viteDevServer.middlewares.use(async (req, res, next) => {
2818
+ let [reqPathname, reqSearch] = (req.url ?? "").split("?");
2819
+ if (reqPathname === "/@react-router/critical.css") {
2820
+ let pathname = new URLSearchParams(reqSearch).get("pathname");
2821
+ if (!pathname) {
2822
+ return next("No pathname provided");
2823
+ }
2824
+ let css = await getStylesForPathname({
2825
+ rootDirectory: ctx.rootDirectory,
2826
+ entryClientFilePath: ctx.entryClientFilePath,
2827
+ reactRouterConfig: ctx.reactRouterConfig,
2828
+ viteDevServer,
2829
+ loadCssContents,
2830
+ pathname
2831
+ });
2832
+ res.setHeader("Content-Type", "text/css");
2833
+ res.end(css);
2834
+ } else {
2835
+ next();
2836
+ }
2837
+ });
2813
2838
  if (!viteDevServer.config.server.middlewareMode) {
2814
2839
  viteDevServer.middlewares.use(async (req, res, next) => {
2815
2840
  try {
2816
- let build;
2817
- if (ctx.reactRouterConfig.future.unstable_viteEnvironmentApi) {
2818
- let vite2 = getVite();
2819
- let ssrEnvironment = viteDevServer.environments.ssr;
2820
- if (!vite2.isRunnableDevEnvironment(ssrEnvironment)) {
2821
- return;
2822
- }
2823
- build = await ssrEnvironment.runner.import(
2824
- virtual.serverBuild.id
2825
- );
2826
- } else {
2827
- build = await viteDevServer.ssrLoadModule(
2828
- virtual.serverBuild.id
2829
- );
2830
- }
2841
+ let build = await viteDevServer.ssrLoadModule(
2842
+ virtual.serverBuild.id
2843
+ );
2831
2844
  let handler = (0, import_react_router2.createRequestHandler)(build, "development");
2832
2845
  let nodeHandler = async (nodeReq, nodeRes) => {
2833
2846
  let req2 = fromNodeRequest(nodeReq, nodeRes);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-router/dev",
3
- "version": "0.0.0-experimental-1ab091485",
3
+ "version": "0.0.0-experimental-c10e297a4",
4
4
  "description": "Dev tools and CLI for React Router",
5
5
  "homepage": "https://reactrouter.com",
6
6
  "bugs": {
@@ -88,7 +88,7 @@
88
88
  "set-cookie-parser": "^2.6.0",
89
89
  "valibot": "^0.41.0",
90
90
  "vite-node": "3.0.0-beta.2",
91
- "@react-router/node": "0.0.0-experimental-1ab091485"
91
+ "@react-router/node": "0.0.0-experimental-c10e297a4"
92
92
  },
93
93
  "devDependencies": {
94
94
  "@types/babel__core": "^7.20.5",
@@ -117,15 +117,15 @@
117
117
  "vite": "^6.0.0",
118
118
  "wireit": "0.14.9",
119
119
  "wrangler": "^3.28.2",
120
- "@react-router/serve": "0.0.0-experimental-1ab091485",
121
- "react-router": "^0.0.0-experimental-1ab091485"
120
+ "@react-router/serve": "0.0.0-experimental-c10e297a4",
121
+ "react-router": "^0.0.0-experimental-c10e297a4"
122
122
  },
123
123
  "peerDependencies": {
124
124
  "typescript": "^5.1.0",
125
125
  "vite": "^5.1.0 || ^6.0.0",
126
126
  "wrangler": "^3.28.2",
127
- "@react-router/serve": "^0.0.0-experimental-1ab091485",
128
- "react-router": "^0.0.0-experimental-1ab091485"
127
+ "@react-router/serve": "^0.0.0-experimental-c10e297a4",
128
+ "react-router": "^0.0.0-experimental-c10e297a4"
129
129
  },
130
130
  "peerDependenciesMeta": {
131
131
  "@react-router/serve": {