@react-router/dev 0.0.0-experimental-112589a91 → 0.0.0-experimental-bfc808d6c

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,43 @@
1
1
  # `@react-router/dev`
2
2
 
3
+ ## 7.10.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Stabilize `future.v8_splitRouteModules`, replacing `future.unstable_splitRouteModules` ([#14595](https://github.com/remix-run/react-router/pull/14595))
8
+ - ⚠️ This is a breaking change if you have begun using `future.unstable_splitRouteModules`. Please update your `react-router.config.ts`.
9
+
10
+ - Stabilize `future.v8_viteEnvironmentApi`, replacing `future.unstable_viteEnvironmentApi` ([#14595](https://github.com/remix-run/react-router/pull/14595))
11
+ - ⚠️ This is a breaking change if you have begun using `future.unstable_viteEnvironmentApi`. Please update your `react-router.config.ts`.
12
+
13
+ ### Patch Changes
14
+
15
+ - Load environment variables before evaluating `routes.ts` ([#14446](https://github.com/remix-run/react-router/pull/14446))
16
+
17
+ For example, you can now compute your routes based on [`VITE_`-prefixed environment variables](https://vite.dev/guide/env-and-mode#env-variables):
18
+
19
+ ```txt
20
+ # .env
21
+ VITE_ENV_ROUTE=my-route
22
+ ```
23
+
24
+ ```ts
25
+ // app/routes.ts
26
+ import { type RouteConfig, route } from "@react-router/dev/routes";
27
+
28
+ const routes: RouteConfig = [];
29
+ if (import.meta.env.VITE_ENV_ROUTE === "my-route") {
30
+ routes.push(route("my-route", "routes/my-route.tsx"));
31
+ }
32
+
33
+ export default routes;
34
+ ```
35
+
36
+ - Updated dependencies:
37
+ - `react-router@7.10.0`
38
+ - `@react-router/node@7.10.0`
39
+ - `@react-router/serve@7.10.0`
40
+
3
41
  ## 7.9.6
4
42
 
5
43
  ### Patch Changes
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-112589a91
3
+ * @react-router/dev v0.0.0-experimental-bfc808d6c
4
4
  *
5
5
  * Copyright (c) Remix Software Inc.
6
6
  *
@@ -729,7 +729,7 @@ function isEntryFileDependency(moduleGraph, entryFilepath, filepath, visited = /
729
729
  }
730
730
  return false;
731
731
  }
732
- var import_node_fs, import_node_child_process, import_pathe3, import_chokidar, import_picocolors, import_pkg_types, import_pick2, import_omit, import_cloneDeep, import_isEqual, excludedConfigPresetKeys, mergeReactRouterConfig, deepFreeze, entryExts;
732
+ var import_node_fs, import_node_child_process, import_pathe3, import_chokidar, import_picocolors, import_pick2, import_omit, import_cloneDeep, import_isEqual, excludedConfigPresetKeys, mergeReactRouterConfig, deepFreeze, entryExts;
733
733
  var init_config = __esm({
734
734
  "config/config.ts"() {
735
735
  "use strict";
@@ -739,7 +739,6 @@ var init_config = __esm({
739
739
  import_pathe3 = __toESM(require("pathe"));
740
740
  import_chokidar = __toESM(require("chokidar"));
741
741
  import_picocolors = __toESM(require("picocolors"));
742
- import_pkg_types = require("pkg-types");
743
742
  import_pick2 = __toESM(require("lodash/pick"));
744
743
  import_omit = __toESM(require("lodash/omit"));
745
744
  import_cloneDeep = __toESM(require("lodash/cloneDeep"));
@@ -2155,7 +2154,6 @@ var import_promises3 = require("fs/promises");
2155
2154
  var path8 = __toESM(require("path"));
2156
2155
  var import_exit_hook = __toESM(require("exit-hook"));
2157
2156
  var import_picocolors8 = __toESM(require("picocolors"));
2158
- var import_pkg_types2 = require("pkg-types");
2159
2157
  var import_react_router3 = require("react-router");
2160
2158
  init_config();
2161
2159
 
@@ -2319,7 +2317,8 @@ async function generateEntry(entry, rootDirectory, flags = {}) {
2319
2317
  );
2320
2318
  return;
2321
2319
  }
2322
- let pkgJson = await (0, import_pkg_types2.readPackageJSON)(rootDirectory);
2320
+ let { readPackageJSON } = await import("pkg-types");
2321
+ let pkgJson = await readPackageJSON(rootDirectory);
2323
2322
  let deps = pkgJson.dependencies ?? {};
2324
2323
  if (!deps["@react-router/node"]) {
2325
2324
  console.error(import_picocolors8.default.red(`No default server entry detected.`));
@@ -37,7 +37,7 @@ export default async function handler(request: Request) {
37
37
  const ssr = await import.meta.viteRsc.loadModule<
38
38
  typeof import("./entry.ssr")
39
39
  >("ssr", "index");
40
- return ssr.default(request, fetchServer);
40
+ return ssr.default(request, await fetchServer(request));
41
41
  }
42
42
 
43
43
  if (import.meta.hot) {
@@ -8,14 +8,14 @@ import {
8
8
 
9
9
  export default async function handler(
10
10
  request: Request,
11
- fetchServer: (request: Request) => Promise<Response>,
11
+ serverResponse: Response,
12
12
  ) {
13
13
  const bootstrapScriptContent =
14
14
  await import.meta.viteRsc.loadBootstrapScriptContent("index");
15
15
 
16
16
  return routeRSCServerRequest({
17
17
  request,
18
- fetchServer,
18
+ serverResponse,
19
19
  createFromReadableStream,
20
20
  async renderHTML(getPayload) {
21
21
  const payload = getPayload();
package/dist/config.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-112589a91
2
+ * @react-router/dev v0.0.0-experimental-bfc808d6c
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-112589a91
2
+ * @react-router/dev v0.0.0-experimental-bfc808d6c
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-112589a91
2
+ * @react-router/dev v0.0.0-experimental-bfc808d6c
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -187,7 +187,6 @@ async function createContext({
187
187
  var import_pathe3 = __toESM(require("pathe"));
188
188
  var import_chokidar = __toESM(require("chokidar"));
189
189
  var import_picocolors = __toESM(require("picocolors"));
190
- var import_pkg_types = require("pkg-types");
191
190
  var import_pick2 = __toESM(require("lodash/pick"));
192
191
  var import_omit = __toESM(require("lodash/omit"));
193
192
  var import_cloneDeep = __toESM(require("lodash/cloneDeep"));
package/dist/vite.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-112589a91
2
+ * @react-router/dev v0.0.0-experimental-bfc808d6c
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -191,7 +191,6 @@ async function createContext({
191
191
  var import_pathe3 = __toESM(require("pathe"));
192
192
  var import_chokidar = __toESM(require("chokidar"));
193
193
  var import_picocolors = __toESM(require("picocolors"));
194
- var import_pkg_types = require("pkg-types");
195
194
  var import_pick2 = __toESM(require("lodash/pick"));
196
195
  var import_omit = __toESM(require("lodash/omit"));
197
196
  var import_cloneDeep = __toESM(require("lodash/cloneDeep"));
@@ -746,8 +745,9 @@ async function resolveEntryFiles({
746
745
  `Could not find package.json in ${rootDirectory} or any of its parent directories. Please add a package.json, or provide a custom entry.server.tsx/jsx file in your app directory.`
747
746
  );
748
747
  }
748
+ let { readPackageJSON, sortPackage, updatePackage } = await import("pkg-types");
749
749
  let packageJsonDirectory = import_pathe3.default.dirname(packageJsonPath);
750
- let pkgJson = await (0, import_pkg_types.readPackageJSON)(packageJsonDirectory);
750
+ let pkgJson = await readPackageJSON(packageJsonDirectory);
751
751
  let deps = pkgJson.dependencies ?? {};
752
752
  if (!deps["@react-router/node"]) {
753
753
  throw new Error(
@@ -758,10 +758,10 @@ async function resolveEntryFiles({
758
758
  console.log(
759
759
  "adding `isbot@5` to your package.json, you should commit this change"
760
760
  );
761
- await (0, import_pkg_types.updatePackage)(packageJsonPath, (pkg) => {
761
+ await updatePackage(packageJsonPath, (pkg) => {
762
762
  pkg.dependencies ??= {};
763
763
  pkg.dependencies.isbot = "^5";
764
- (0, import_pkg_types.sortPackage)(pkg);
764
+ sortPackage(pkg);
765
765
  });
766
766
  let packageManager = detectPackageManager() ?? "npm";
767
767
  (0, import_node_child_process.execSync)(`${packageManager} install`, {
@@ -3510,6 +3510,34 @@ var reactRouterVitePlugin = () => {
3510
3510
  }
3511
3511
  };
3512
3512
  },
3513
+ configurePreviewServer(previewServer) {
3514
+ return () => {
3515
+ previewServer.middlewares.use(async (req, res, next) => {
3516
+ try {
3517
+ let serverBuildDirectory = getServerBuildDirectory(
3518
+ ctx.reactRouterConfig
3519
+ );
3520
+ let serverBuildFile = path6.resolve(
3521
+ serverBuildDirectory,
3522
+ "index.js"
3523
+ );
3524
+ let build = await import(url.pathToFileURL(serverBuildFile).href);
3525
+ let handler = (0, import_react_router2.createRequestHandler)(build, "production");
3526
+ let nodeHandler = async (nodeReq, nodeRes) => {
3527
+ let req2 = fromNodeRequest(nodeReq, nodeRes);
3528
+ let res2 = await handler(
3529
+ req2,
3530
+ await reactRouterDevLoadContext(req2)
3531
+ );
3532
+ await (0, import_node_fetch_server2.sendResponse)(nodeRes, res2);
3533
+ };
3534
+ await nodeHandler(req, res);
3535
+ } catch (error) {
3536
+ next(error);
3537
+ }
3538
+ });
3539
+ };
3540
+ },
3513
3541
  writeBundle: {
3514
3542
  // After the SSR build is finished, we inspect the Vite manifest for
3515
3543
  // the SSR build and move server-only assets to client assets directory
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-router/dev",
3
- "version": "0.0.0-experimental-112589a91",
3
+ "version": "0.0.0-experimental-bfc808d6c",
4
4
  "description": "Dev tools and CLI for React Router",
5
5
  "homepage": "https://reactrouter.com",
6
6
  "bugs": {
@@ -87,7 +87,7 @@
87
87
  "tinyglobby": "^0.2.14",
88
88
  "valibot": "^1.2.0",
89
89
  "vite-node": "^3.2.2",
90
- "@react-router/node": "0.0.0-experimental-112589a91"
90
+ "@react-router/node": "0.0.0-experimental-bfc808d6c"
91
91
  },
92
92
  "devDependencies": {
93
93
  "@types/babel__core": "^7.20.5",
@@ -110,16 +110,16 @@
110
110
  "vite": "^6.3.0",
111
111
  "wireit": "0.14.9",
112
112
  "wrangler": "^4.23.0",
113
- "@react-router/serve": "0.0.0-experimental-112589a91",
114
- "react-router": "^0.0.0-experimental-112589a91"
113
+ "@react-router/serve": "0.0.0-experimental-bfc808d6c",
114
+ "react-router": "^0.0.0-experimental-bfc808d6c"
115
115
  },
116
116
  "peerDependencies": {
117
117
  "@vitejs/plugin-rsc": "*",
118
118
  "typescript": "^5.1.0",
119
119
  "vite": "^5.1.0 || ^6.0.0 || ^7.0.0",
120
120
  "wrangler": "^3.28.2 || ^4.0.0",
121
- "@react-router/serve": "^0.0.0-experimental-112589a91",
122
- "react-router": "^0.0.0-experimental-112589a91"
121
+ "@react-router/serve": "^0.0.0-experimental-bfc808d6c",
122
+ "react-router": "^0.0.0-experimental-bfc808d6c"
123
123
  },
124
124
  "peerDependenciesMeta": {
125
125
  "@vitejs/plugin-rsc": {