@react-router/dev 0.0.0-experimental-4ed3f5da9 → 0.0.0-experimental-fbbd4fd81

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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
package/dist/cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * @react-router/dev v0.0.0-experimental-4ed3f5da9
3
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
4
4
  *
5
5
  * Copyright (c) Remix Software Inc.
6
6
  *
package/dist/colors.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
package/dist/config.d.ts CHANGED
@@ -93,11 +93,6 @@ export type VitePluginConfig = {
93
93
  * Defaults to `false`.
94
94
  */
95
95
  manifest?: boolean;
96
- /**
97
- * An array of URLs to prerender to HTML files at build time. Can also be a
98
- * function returning an array to dynamically generate URLs.
99
- */
100
- prerender?: Array<string> | (() => Array<string> | Promise<Array<string>>);
101
96
  /**
102
97
  * An array of React Router plugin config presets to ease integration with
103
98
  * other platforms and tools.
@@ -149,10 +144,6 @@ export type ResolvedVitePluginConfig = Readonly<{
149
144
  * Defaults to `false`.
150
145
  */
151
146
  manifest: boolean;
152
- /**
153
- * An array of URLs to prerender to HTML files at build time.
154
- */
155
- prerender: Array<string> | null;
156
147
  /**
157
148
  * Derived from Vite's `base` config
158
149
  * */
@@ -216,10 +207,6 @@ export declare function resolveReactRouterConfig({ rootDirectory, reactRouterUse
216
207
  * Defaults to `false`.
217
208
  */
218
209
  manifest: boolean;
219
- /**
220
- * An array of URLs to prerender to HTML files at build time.
221
- */
222
- prerender: string[] | null;
223
210
  /**
224
211
  * Derived from Vite's `base` config
225
212
  * */
package/dist/config.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -124,7 +124,6 @@ async function resolveReactRouterConfig({
124
124
  ignoredRouteFiles,
125
125
  manifest,
126
126
  routes: userRoutesFunction,
127
- prerender: prerenderConfig,
128
127
  serverBuildFile,
129
128
  serverBundles,
130
129
  serverModuleFormat,
@@ -134,21 +133,12 @@ async function resolveReactRouterConfig({
134
133
  // Default values should be completely overridden by user/preset config, not merged
135
134
  ...mergeReactRouterConfig(...presets, reactRouterUserConfig)
136
135
  };
136
+ let isSpaMode = !ssr;
137
137
  // Log warning for incompatible vite config flags
138
- if (!ssr && serverBundles) {
138
+ if (isSpaMode && serverBundles) {
139
139
  console.warn(colors__default["default"].yellow(colors__default["default"].bold("⚠️ SPA Mode: ") + "the `serverBundles` config is invalid with " + "`ssr:false` and will be ignored`"));
140
140
  serverBundles = undefined;
141
141
  }
142
- let prerender = null;
143
- if (prerenderConfig) {
144
- if (Array.isArray(prerenderConfig)) {
145
- prerender = prerenderConfig;
146
- } else if (typeof prerenderConfig === "function") {
147
- prerender = await prerenderConfig();
148
- } else {
149
- throw new Error("The `prerender` config must be an array of string paths, or a function " + "returning an array of string paths");
150
- }
151
- }
152
142
  let appDirectory = path__default["default"].resolve(rootDirectory, userAppDirectory || "app");
153
143
  let buildDirectory = path__default["default"].resolve(rootDirectory, userBuildDirectory);
154
144
  let publicPath = viteUserConfig.base ?? "/";
@@ -197,7 +187,6 @@ async function resolveReactRouterConfig({
197
187
  buildEnd,
198
188
  future,
199
189
  manifest,
200
- prerender,
201
190
  publicPath,
202
191
  routes: routes$1,
203
192
  serverBuildFile,
@@ -221,6 +210,7 @@ async function resolveEntryFiles({
221
210
  appDirectory,
222
211
  future
223
212
  } = reactRouterConfig;
213
+ let isSpaMode = !reactRouterConfig.ssr;
224
214
  let defaultsDirectory = path__default["default"].resolve(__dirname, "config", "defaults");
225
215
  let userEntryClientFile = findEntry(appDirectory, "entry.client");
226
216
  let userEntryServerFile = findEntry(appDirectory, "entry.server");
@@ -228,7 +218,7 @@ async function resolveEntryFiles({
228
218
  let entryClientFile = userEntryClientFile || "entry.client.tsx";
229
219
  let pkgJson = await PackageJson__default["default"].load(rootDirectory);
230
220
  let deps = pkgJson.content.dependencies ?? {};
231
- if (!reactRouterConfig.ssr && (future === null || future === void 0 ? void 0 : future.unstable_singleFetch) !== true) {
221
+ if (isSpaMode && (future === null || future === void 0 ? void 0 : future.unstable_singleFetch) != true) {
232
222
  // This is a super-simple default since we don't need streaming in SPA Mode.
233
223
  // We can include this in a remix-spa template, but right now `npx remix reveal`
234
224
  // will still expose the streaming template since that command doesn't have
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -18,7 +18,6 @@ var url = require('node:url');
18
18
  var fse = require('fs-extra');
19
19
  var babel = require('@babel/core');
20
20
  var serverRuntime = require('@react-router/server-runtime');
21
- var reactRouter = require('react-router');
22
21
  var esModuleLexer = require('es-module-lexer');
23
22
  var jsesc = require('jsesc');
24
23
  var colors = require('picocolors');
@@ -325,7 +324,7 @@ const reactRouterVitePlugin = _config => {
325
324
  export const assetsBuildDirectory = ${JSON.stringify(path__namespace.relative(ctx.rootDirectory, getClientBuildDirectory(ctx.reactRouterConfig)))};
326
325
  export const basename = ${JSON.stringify(ctx.reactRouterConfig.basename)};
327
326
  export const future = ${JSON.stringify(ctx.reactRouterConfig.future)};
328
- export const isSpaMode = ${!ctx.reactRouterConfig.ssr && ctx.reactRouterConfig.prerender == null};
327
+ export const isSpaMode = ${!ctx.reactRouterConfig.ssr};
329
328
  export const publicPath = ${JSON.stringify(ctx.reactRouterConfig.publicPath)};
330
329
  export const entry = { module: entryServer };
331
330
  export const routes = {
@@ -749,19 +748,8 @@ const reactRouterVitePlugin = _config => {
749
748
  if (movedAssetPaths.length) {
750
749
  viteConfig.logger.info(["", `${colors__default["default"].green("✓")} ${movedAssetPaths.length} asset${movedAssetPaths.length > 1 ? "s" : ""} moved from React Router server build to client assets.`, ...movedAssetPaths.map(movedAssetPath => colors__default["default"].dim(path__namespace.relative(ctx.rootDirectory, movedAssetPath))), ""].join("\n"));
751
750
  }
752
- if (ctx.reactRouterConfig.prerender != null) {
753
- // If we have prerender routes, that takes precedence over SPA mode
754
- // which is ssr:false and only the rot route being rendered
755
- await handlePrerender(viteConfig, ctx.reactRouterConfig, serverBuildDirectory, clientBuildDirectory);
756
- } else if (!ctx.reactRouterConfig.ssr) {
757
- await handleSpaMode(viteConfig, ctx.reactRouterConfig, serverBuildDirectory, clientBuildDirectory);
758
- }
759
- // For both SPA mode and prerendering, we can remove the server builds
760
- // if ssr:false is set
761
751
  if (!ctx.reactRouterConfig.ssr) {
762
- // Cleanup - we no longer need the server build assets
763
- viteConfig.logger.info(["Removing the server build in", colors__default["default"].green(serverBuildDirectory), "due to ssr:false"].join(" "));
764
- fse__namespace.removeSync(serverBuildDirectory);
752
+ await handleSpaMode(serverBuildDirectory, ctx.reactRouterConfig.serverBuildFile, clientBuildDirectory, viteConfig, ctx.reactRouterConfig.basename);
765
753
  }
766
754
  }
767
755
  },
@@ -1051,23 +1039,17 @@ async function getRouteMetadata(ctx, viteChildCompiler, route, readRouteFile) {
1051
1039
  };
1052
1040
  return info;
1053
1041
  }
1054
- async function getPrerenderBuildAndHandler(viteConfig, reactRouterConfig, serverBuildDirectory) {
1055
- let serverBuildPath = path__namespace.join(serverBuildDirectory, reactRouterConfig.serverBuildFile);
1042
+ async function handleSpaMode(serverBuildDirectoryPath, serverBuildFile, clientBuildDirectory, viteConfig, basename) {
1043
+ // Create a handler and call it for the `/` path - rendering down to the
1044
+ // proper HydrateFallback ... or not! Maybe they have a static landing page
1045
+ // generated from routes/_index.tsx.
1046
+ let serverBuildPath = path__namespace.join(serverBuildDirectoryPath, serverBuildFile);
1056
1047
  let build = await import(url__namespace.pathToFileURL(serverBuildPath).toString());
1057
1048
  let {
1058
1049
  createRequestHandler: createHandler
1059
1050
  } = await import('@react-router/node');
1060
- return {
1061
- build,
1062
- handler: createHandler(build, viteConfig.mode)
1063
- };
1064
- }
1065
- async function handleSpaMode(viteConfig, reactRouterConfig, serverBuildDirectory, clientBuildDirectory) {
1066
- let {
1067
- handler
1068
- } = await getPrerenderBuildAndHandler(viteConfig, reactRouterConfig, serverBuildDirectory);
1069
- let request = new Request(`http://localhost${reactRouterConfig.basename}`);
1070
- let response = await handler(request);
1051
+ let handler = createHandler(build, viteConfig.mode);
1052
+ let response = await handler(new Request(`http://localhost${basename}`));
1071
1053
  let html = await response.text();
1072
1054
  if (response.status !== 200) {
1073
1055
  throw new Error(`SPA Mode: Received a ${response.status} status code from ` + `\`entry.server.tsx\` while generating the \`index.html\` file.\n${html}`);
@@ -1078,96 +1060,8 @@ async function handleSpaMode(viteConfig, reactRouterConfig, serverBuildDirectory
1078
1060
  // Write out the index.html file for the SPA
1079
1061
  await fse__namespace.writeFile(path__namespace.join(clientBuildDirectory, "index.html"), html);
1080
1062
  viteConfig.logger.info("SPA Mode: index.html has been written to your " + colors__default["default"].bold(path__namespace.relative(process.cwd(), clientBuildDirectory)) + " directory");
1081
- }
1082
- async function handlePrerender(viteConfig, reactRouterConfig, serverBuildDirectory, clientBuildDirectory) {
1083
- let {
1084
- build,
1085
- handler
1086
- } = await getPrerenderBuildAndHandler(viteConfig, reactRouterConfig, serverBuildDirectory);
1087
- let routes = createPrerenderRoutes(build.routes);
1088
- let routesToPrerender = reactRouterConfig.prerender || ["/"];
1089
- let requestInit = {
1090
- headers: {
1091
- // Header that can be used in the loader to know if you're running at
1092
- // build time or runtime
1093
- "X-React-Router-Prerender": "yes"
1094
- }
1095
- };
1096
- for (let path of routesToPrerender) {
1097
- var _matchRoutes;
1098
- let hasLoaders = (_matchRoutes = reactRouter.matchRoutes(routes, path)) === null || _matchRoutes === void 0 ? void 0 : _matchRoutes.some(m => m.route.loader);
1099
- if (hasLoaders) {
1100
- await prerenderData(handler, reactRouterConfig.basename, path, clientBuildDirectory, viteConfig, requestInit);
1101
- }
1102
- await prerenderRoute(handler, reactRouterConfig.basename, path, clientBuildDirectory, viteConfig, requestInit);
1103
- }
1104
- async function prerenderData(handler, basename, prerenderPath, clientBuildDirectory, viteConfig, requestInit) {
1105
- let normalizedPath = `${basename}${prerenderPath === "/" ? "/_root.data" : `${prerenderPath.replace(/\/$/, "")}.data`}`.replace(/\/\/+/g, "/");
1106
- let request = new Request(`http://localhost${normalizedPath}`, requestInit);
1107
- let response = await handler(request);
1108
- let data = await response.text();
1109
- if (response.status !== 200) {
1110
- throw new Error(`Prerender: Received a ${response.status} status code from ` + `\`entry.server.tsx\` while prerendering the \`${normalizedPath}\` ` + `path.\n${data}`);
1111
- }
1112
- // Write out the .data file
1113
- let outdir = path__namespace.relative(process.cwd(), clientBuildDirectory);
1114
- let outfile = path__namespace.join(outdir, normalizedPath.split("/").join(path__namespace.sep));
1115
- await fse__namespace.ensureDir(path__namespace.dirname(outfile));
1116
- await fse__namespace.outputFile(outfile, data);
1117
- viteConfig.logger.info(`Prerender: Generated ${colors__default["default"].bold(outfile)}`);
1118
- }
1119
- }
1120
- async function prerenderRoute(handler, basename, prerenderPath, clientBuildDirectory, viteConfig, requestInit) {
1121
- let normalizedPath = `${basename}${prerenderPath}/`.replace(/\/\/+/g, "/");
1122
- let request = new Request(`http://localhost${normalizedPath}`, requestInit);
1123
- let response = await handler(request);
1124
- let html = await response.text();
1125
- if (response.status !== 200) {
1126
- throw new Error(`Prerender: Received a ${response.status} status code from ` + `\`entry.server.tsx\` while prerendering the \`${normalizedPath}\` ` + `path.\n${html}`);
1127
- }
1128
- if (!html.includes("window.__remixContext =") || !html.includes("window.__remixRouteModules =")) {
1129
- throw new Error("Prerender: Did you forget to include <Scripts/> in your `root.tsx` " + "`HydrateFallback` component? Your prerendered HTML files cannot " + "hydrate into a SPA without `<Scripts />`.");
1130
- }
1131
- // Write out the HTML file
1132
- let outdir = path__namespace.relative(process.cwd(), clientBuildDirectory);
1133
- let outfile = path__namespace.join(outdir, ...normalizedPath.split("/"), "index.html");
1134
- await fse__namespace.ensureDir(path__namespace.dirname(outfile));
1135
- await fse__namespace.outputFile(outfile, html);
1136
- viteConfig.logger.info(`Prerender: Generated ${colors__default["default"].bold(outfile)}`);
1137
- }
1138
- // Note: Duplicated from remix-server-runtime
1139
- function groupRoutesByParentId(manifest) {
1140
- let routes = {};
1141
- Object.values(manifest).forEach(route => {
1142
- let parentId = route.parentId || "";
1143
- if (!routes[parentId]) {
1144
- routes[parentId] = [];
1145
- }
1146
- routes[parentId].push(route);
1147
- });
1148
- return routes;
1149
- }
1150
- // Note: Duplicated from remix-server-runtime
1151
- function createPrerenderRoutes(manifest, parentId = "", routesByParentId = groupRoutesByParentId(manifest)) {
1152
- return (routesByParentId[parentId] || []).map(route => {
1153
- let commonRoute = {
1154
- // Always include root due to default boundaries
1155
- hasErrorBoundary: route.id === "root" || route.module.ErrorBoundary != null,
1156
- id: route.id,
1157
- path: route.path,
1158
- loader: route.module.loader ? () => null : undefined,
1159
- action: undefined,
1160
- handle: route.module.handle
1161
- };
1162
- return route.index ? {
1163
- index: true,
1164
- ...commonRoute
1165
- } : {
1166
- caseSensitive: route.caseSensitive,
1167
- children: createPrerenderRoutes(manifest, route.id, routesByParentId),
1168
- ...commonRoute
1169
- };
1170
- });
1063
+ // Cleanup - we no longer need the server build assets
1064
+ fse__namespace.removeSync(serverBuildDirectoryPath);
1171
1065
  }
1172
1066
 
1173
1067
  exports.extractPluginContext = extractPluginContext;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9
2
+ * @react-router/dev v0.0.0-experimental-fbbd4fd81
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-4ed3f5da9",
3
+ "version": "0.0.0-experimental-fbbd4fd81",
4
4
  "description": "Dev tools and CLI for React Router",
5
5
  "homepage": "https://reactrouter.com",
6
6
  "bugs": {
@@ -42,9 +42,9 @@
42
42
  "react-refresh": "^0.14.0",
43
43
  "semver": "^7.3.7",
44
44
  "set-cookie-parser": "^2.6.0",
45
- "@react-router/node": "0.0.0-experimental-4ed3f5da9",
46
- "@react-router/server-runtime": "0.0.0-experimental-4ed3f5da9",
47
- "react-router": "0.0.0-experimental-4ed3f5da9"
45
+ "@react-router/node": "0.0.0-experimental-fbbd4fd81",
46
+ "@react-router/server-runtime": "0.0.0-experimental-fbbd4fd81",
47
+ "react-router": "0.0.0-experimental-fbbd4fd81"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@types/babel__core": "^7.20.5",
@@ -69,14 +69,14 @@
69
69
  "tiny-invariant": "^1.2.0",
70
70
  "vite": "^5.1.0",
71
71
  "wrangler": "^3.28.2",
72
- "@react-router/serve": "0.0.0-experimental-4ed3f5da9"
72
+ "@react-router/serve": "0.0.0-experimental-fbbd4fd81"
73
73
  },
74
74
  "peerDependencies": {
75
75
  "typescript": "^5.1.0",
76
76
  "vite": "^5.1.0",
77
77
  "wrangler": "^3.28.2",
78
- "@react-router/serve": "^0.0.0-experimental-4ed3f5da9",
79
- "react-router": "^0.0.0-experimental-4ed3f5da9"
78
+ "react-router": "^0.0.0-experimental-fbbd4fd81",
79
+ "@react-router/serve": "^0.0.0-experimental-fbbd4fd81"
80
80
  },
81
81
  "peerDependenciesMeta": {
82
82
  "@react-router/serve": {