@react-router/dev 0.0.0-experimental-12b260646 → 0.0.0-experimental-f042b8c1e
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/commands.d.ts +1 -1
- package/dist/cli/commands.js +5 -4
- package/dist/cli/detectPackageManager.js +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/run.js +1 -1
- package/dist/cli/useJavascript.js +1 -1
- package/dist/colors.js +1 -1
- package/dist/config/format.js +1 -1
- package/dist/config/routes.js +1 -1
- package/dist/invariant.js +1 -1
- package/dist/routes.js +1 -1
- package/dist/typescript/plugin.d.ts +1 -3
- package/dist/typescript/plugin.js +3 -7
- package/dist/typescript/typegen.d.ts +3 -2
- package/dist/typescript/typegen.js +37 -17
- package/dist/vite/babel.js +1 -1
- package/dist/vite/build.js +1 -1
- package/dist/vite/cloudflare-dev-proxy.js +1 -1
- package/dist/vite/cloudflare.js +1 -1
- package/dist/vite/combine-urls.js +1 -1
- package/dist/vite/config.d.ts +1 -0
- package/dist/vite/config.js +2 -1
- package/dist/vite/dev.js +1 -1
- package/dist/vite/import-vite-esm-sync.js +1 -1
- package/dist/vite/node-adapter.js +1 -1
- package/dist/vite/plugin.js +10 -8
- package/dist/vite/profiler.js +1 -1
- package/dist/vite/remove-exports.js +1 -1
- package/dist/vite/resolve-file-url.js +1 -1
- package/dist/vite/static/refresh-utils.cjs +16 -15
- package/dist/vite/styles.js +1 -1
- package/dist/vite/vite-node.js +1 -1
- package/dist/vite/vmod.js +1 -1
- package/dist/vite/with-props.js +1 -1
- package/dist/vite.js +1 -1
- package/package.json +6 -6
package/dist/cli/commands.d.ts
CHANGED
|
@@ -10,4 +10,4 @@ export declare function generateEntry(entry: string, reactRouterRoot: string, fl
|
|
|
10
10
|
typescript?: boolean;
|
|
11
11
|
config?: string;
|
|
12
12
|
}): Promise<void>;
|
|
13
|
-
export declare function typegen(root
|
|
13
|
+
export declare function typegen(root: string): Promise<void>;
|
package/dist/cli/commands.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v0.0.0-experimental-
|
|
2
|
+
* @react-router/dev v0.0.0-experimental-f042b8c1e
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -166,9 +166,10 @@ async function typegen(root) {
|
|
|
166
166
|
root
|
|
167
167
|
});
|
|
168
168
|
await typegen$1.writeAll({
|
|
169
|
-
rootDirectory:
|
|
170
|
-
appDirectory: ctx.reactRouterConfig.appDirectory
|
|
171
|
-
|
|
169
|
+
rootDirectory: root,
|
|
170
|
+
appDirectory: ctx.reactRouterConfig.appDirectory,
|
|
171
|
+
routes: ctx.reactRouterConfig.routes
|
|
172
|
+
});
|
|
172
173
|
}
|
|
173
174
|
|
|
174
175
|
exports.build = build;
|
package/dist/cli/index.js
CHANGED
package/dist/cli/run.js
CHANGED
package/dist/colors.js
CHANGED
package/dist/config/format.js
CHANGED
package/dist/config/routes.js
CHANGED
package/dist/invariant.js
CHANGED
package/dist/routes.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v0.0.0-experimental-
|
|
2
|
+
* @react-router/dev v0.0.0-experimental-f042b8c1e
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -34,18 +34,14 @@ function _interopNamespace(e) {
|
|
|
34
34
|
var Path__namespace = /*#__PURE__*/_interopNamespace(Path);
|
|
35
35
|
|
|
36
36
|
// For compatibility with the TS language service plugin API, this entrypoint:
|
|
37
|
-
function init(
|
|
37
|
+
function init() {
|
|
38
38
|
function create(info) {
|
|
39
39
|
const {
|
|
40
40
|
logger
|
|
41
41
|
} = info.project.projectService;
|
|
42
42
|
logger.info("[react-router] setup");
|
|
43
43
|
const rootDirectory = Path__namespace.normalize(info.project.getCurrentDirectory());
|
|
44
|
-
|
|
45
|
-
rootDirectory,
|
|
46
|
-
appDirectory: Path__namespace.join(rootDirectory, "app")
|
|
47
|
-
};
|
|
48
|
-
typegen.watch(ctx);
|
|
44
|
+
typegen.watch(rootDirectory);
|
|
49
45
|
return info.languageService;
|
|
50
46
|
}
|
|
51
47
|
return {
|
|
@@ -2,8 +2,9 @@ import { type RouteManifest, type RouteManifestEntry } from "../config/routes";
|
|
|
2
2
|
type Context = {
|
|
3
3
|
rootDirectory: string;
|
|
4
4
|
appDirectory: string;
|
|
5
|
+
routes: RouteManifest;
|
|
5
6
|
};
|
|
6
7
|
export declare function getPath(ctx: Context, route: RouteManifestEntry): string;
|
|
7
|
-
export declare function watch(
|
|
8
|
-
export declare function writeAll(ctx: Context
|
|
8
|
+
export declare function watch(rootDirectory: string): Promise<void>;
|
|
9
|
+
export declare function writeAll(ctx: Context): Promise<void>;
|
|
9
10
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v0.0.0-experimental-
|
|
2
|
+
* @react-router/dev v0.0.0-experimental-f042b8c1e
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -19,6 +19,8 @@ var Path = require('pathe');
|
|
|
19
19
|
var Pathe = require('pathe/utils');
|
|
20
20
|
var routes = require('../config/routes.js');
|
|
21
21
|
var viteNode = require('../vite/vite-node.js');
|
|
22
|
+
var config = require('../vite/config.js');
|
|
23
|
+
var plugin = require('../vite/plugin.js');
|
|
22
24
|
|
|
23
25
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
24
26
|
|
|
@@ -50,49 +52,67 @@ function getDirectory(ctx) {
|
|
|
50
52
|
return Path__namespace.join(ctx.rootDirectory, ".react-router/types");
|
|
51
53
|
}
|
|
52
54
|
function getPath(ctx, route) {
|
|
53
|
-
return Path__namespace.join(getDirectory(ctx), "app", Path__namespace.dirname(route.file), "+types." +
|
|
55
|
+
return Path__namespace.join(getDirectory(ctx), "app", Path__namespace.dirname(route.file), "+types." + Pathe__namespace.filename(route.file) + ".d.ts");
|
|
54
56
|
}
|
|
55
|
-
async function watch(
|
|
56
|
-
const
|
|
57
|
-
|
|
57
|
+
async function watch(rootDirectory) {
|
|
58
|
+
const vitePluginCtx = await plugin.loadPluginContext({
|
|
59
|
+
root: rootDirectory
|
|
60
|
+
});
|
|
61
|
+
const routesTsPath = Path__namespace.join(vitePluginCtx.reactRouterConfig.appDirectory, "routes.ts");
|
|
58
62
|
const routesViteNodeContext = await viteNode.createContext({
|
|
59
|
-
root:
|
|
63
|
+
root: rootDirectory
|
|
60
64
|
});
|
|
61
65
|
async function getRoutes() {
|
|
66
|
+
const routes$1 = {};
|
|
67
|
+
const rootRouteFile = config.findEntry(vitePluginCtx.reactRouterConfig.appDirectory, "root");
|
|
68
|
+
if (rootRouteFile) {
|
|
69
|
+
routes$1.root = {
|
|
70
|
+
path: "",
|
|
71
|
+
id: "root",
|
|
72
|
+
file: rootRouteFile
|
|
73
|
+
};
|
|
74
|
+
}
|
|
62
75
|
routesViteNodeContext.devServer.moduleGraph.invalidateAll();
|
|
63
76
|
routesViteNodeContext.runner.moduleCache.clear();
|
|
64
77
|
const result = await routesViteNodeContext.runner.executeFile(routesTsPath);
|
|
65
|
-
return
|
|
78
|
+
return {
|
|
79
|
+
...routes$1,
|
|
80
|
+
...routes.configRoutesToRouteManifest(result.routes)
|
|
81
|
+
};
|
|
66
82
|
}
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
83
|
+
const ctx = {
|
|
84
|
+
rootDirectory,
|
|
85
|
+
appDirectory: vitePluginCtx.reactRouterConfig.appDirectory,
|
|
86
|
+
routes: await getRoutes()
|
|
87
|
+
};
|
|
88
|
+
await writeAll(ctx);
|
|
89
|
+
const watcher = Chokidar__default["default"].watch(ctx.appDirectory, {
|
|
70
90
|
ignoreInitial: true
|
|
71
91
|
});
|
|
72
92
|
watcher.on("all", async (event, path) => {
|
|
73
93
|
path = Path__namespace.normalize(path);
|
|
74
|
-
|
|
94
|
+
ctx.routes = await getRoutes();
|
|
75
95
|
const routeConfigChanged = Boolean(routesViteNodeContext.devServer.moduleGraph.getModuleById(path));
|
|
76
96
|
if (routeConfigChanged) {
|
|
77
|
-
await writeAll(ctx
|
|
97
|
+
await writeAll(ctx);
|
|
78
98
|
return;
|
|
79
99
|
}
|
|
80
|
-
const isRoute = Object.values(routes).find(route => path === Path__namespace.join(ctx.appDirectory, route.file));
|
|
100
|
+
const isRoute = Object.values(ctx.routes).find(route => path === Path__namespace.join(ctx.appDirectory, route.file));
|
|
81
101
|
if (isRoute && (event === "add" || event === "unlink")) {
|
|
82
|
-
await writeAll(ctx
|
|
102
|
+
await writeAll(ctx);
|
|
83
103
|
return;
|
|
84
104
|
}
|
|
85
105
|
});
|
|
86
106
|
}
|
|
87
|
-
async function writeAll(ctx
|
|
107
|
+
async function writeAll(ctx) {
|
|
88
108
|
fs__default["default"].rmSync(getDirectory(ctx), {
|
|
89
109
|
recursive: true,
|
|
90
110
|
force: true
|
|
91
111
|
});
|
|
92
|
-
Object.values(routes).forEach(route => {
|
|
112
|
+
Object.values(ctx.routes).forEach(route => {
|
|
93
113
|
if (!fs__default["default"].existsSync(Path__namespace.join(ctx.appDirectory, route.file))) return;
|
|
94
114
|
const typesPath = getPath(ctx, route);
|
|
95
|
-
const content = getModule(routes, route);
|
|
115
|
+
const content = getModule(ctx.routes, route);
|
|
96
116
|
fs__default["default"].mkdirSync(Path__namespace.dirname(typesPath), {
|
|
97
117
|
recursive: true
|
|
98
118
|
});
|
package/dist/vite/babel.js
CHANGED
package/dist/vite/build.js
CHANGED
package/dist/vite/cloudflare.js
CHANGED
package/dist/vite/config.d.ts
CHANGED
package/dist/vite/config.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v0.0.0-experimental-
|
|
2
|
+
* @react-router/dev v0.0.0-experimental-f042b8c1e
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -276,6 +276,7 @@ function findEntry(dir, basename) {
|
|
|
276
276
|
}
|
|
277
277
|
|
|
278
278
|
exports.configRouteToBranchRoute = configRouteToBranchRoute;
|
|
279
|
+
exports.findEntry = findEntry;
|
|
279
280
|
exports.resolveEntryFiles = resolveEntryFiles;
|
|
280
281
|
exports.resolvePublicPath = resolvePublicPath;
|
|
281
282
|
exports.resolveReactRouterConfig = resolveReactRouterConfig;
|
package/dist/vite/dev.js
CHANGED
package/dist/vite/plugin.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v0.0.0-experimental-
|
|
2
|
+
* @react-router/dev v0.0.0-experimental-f042b8c1e
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -428,7 +428,7 @@ const reactRouterVitePlugin = _config => {
|
|
|
428
428
|
...nonFingerprintedValues
|
|
429
429
|
};
|
|
430
430
|
// Write the browser manifest to disk as part of the build process
|
|
431
|
-
await writeFileSafe(path__namespace.join(getClientBuildDirectory(ctx.reactRouterConfig), manifestPath), `window.
|
|
431
|
+
await writeFileSafe(path__namespace.join(getClientBuildDirectory(ctx.reactRouterConfig), manifestPath), `window.__reactRouterManifest=${JSON.stringify(reactRouterBrowserManifest)};`);
|
|
432
432
|
// The server manifest is the same as the browser manifest, except for
|
|
433
433
|
// server bundle builds which only includes routes for the current bundle,
|
|
434
434
|
// otherwise the server and client have the same routes
|
|
@@ -487,6 +487,7 @@ const reactRouterVitePlugin = _config => {
|
|
|
487
487
|
viteConfigEnv = _viteConfigEnv;
|
|
488
488
|
viteCommand = viteConfigEnv.command;
|
|
489
489
|
routesViteNodeContext = await viteNode.createContext({
|
|
490
|
+
root: viteUserConfig.root,
|
|
490
491
|
mode: viteConfigEnv.mode,
|
|
491
492
|
server: {
|
|
492
493
|
watch: viteCommand === "build" ? null : undefined
|
|
@@ -655,7 +656,7 @@ const reactRouterVitePlugin = _config => {
|
|
|
655
656
|
// disk from the child compiler. This is important in the
|
|
656
657
|
// production build because the child compiler is a Vite dev
|
|
657
658
|
// server and will generate incorrect manifests.
|
|
658
|
-
.filter(plugin => typeof plugin === "object" && plugin !== null && "name" in plugin && plugin.name !== "react-router" && plugin.name !== "react-router-hmr-updates")]
|
|
659
|
+
.filter(plugin => typeof plugin === "object" && plugin !== null && "name" in plugin && plugin.name !== "react-router" && plugin.name !== "react-router-route-exports" && plugin.name !== "react-router-hmr-updates")]
|
|
659
660
|
});
|
|
660
661
|
await viteChildCompiler.pluginContainer.buildStart({});
|
|
661
662
|
},
|
|
@@ -836,7 +837,7 @@ const reactRouterVitePlugin = _config => {
|
|
|
836
837
|
let reactRouterManifestString = jsesc__default["default"](reactRouterManifest, {
|
|
837
838
|
es6: true
|
|
838
839
|
});
|
|
839
|
-
return `window.
|
|
840
|
+
return `window.__reactRouterManifest=${reactRouterManifestString};`;
|
|
840
841
|
}
|
|
841
842
|
}
|
|
842
843
|
}
|
|
@@ -895,10 +896,9 @@ const reactRouterVitePlugin = _config => {
|
|
|
895
896
|
}, withProps.plugin, {
|
|
896
897
|
name: "react-router-route-exports",
|
|
897
898
|
async transform(code, id, options) {
|
|
898
|
-
if (options !== null && options !== void 0 && options.ssr) return;
|
|
899
899
|
let route = getRoute(ctx.reactRouterConfig, id);
|
|
900
900
|
if (!route) return;
|
|
901
|
-
if (!ctx.reactRouterConfig.ssr) {
|
|
901
|
+
if (!(options !== null && options !== void 0 && options.ssr) && !ctx.reactRouterConfig.ssr) {
|
|
902
902
|
let serverOnlyExports = esModuleLexer.parse(code)[1].map(exp => exp.n).filter(exp => SERVER_ONLY_ROUTE_EXPORTS.includes(exp));
|
|
903
903
|
if (serverOnlyExports.length > 0) {
|
|
904
904
|
let str = serverOnlyExports.map(e => `\`${e}\``).join(", ");
|
|
@@ -917,7 +917,9 @@ const reactRouterVitePlugin = _config => {
|
|
|
917
917
|
let ast = parser.parse(code, {
|
|
918
918
|
sourceType: "module"
|
|
919
919
|
});
|
|
920
|
-
|
|
920
|
+
if (!(options !== null && options !== void 0 && options.ssr)) {
|
|
921
|
+
removeExports.removeExports(ast, SERVER_ONLY_ROUTE_EXPORTS);
|
|
922
|
+
}
|
|
921
923
|
withProps.transform(ast);
|
|
922
924
|
return babel.generate(ast, {
|
|
923
925
|
sourceMaps: true,
|
|
@@ -1242,7 +1244,7 @@ function validatePrerenderedResponse(response, html, prefix, path) {
|
|
|
1242
1244
|
}
|
|
1243
1245
|
}
|
|
1244
1246
|
function validatePrerenderedHtml(html, prefix) {
|
|
1245
|
-
if (!html.includes("window.
|
|
1247
|
+
if (!html.includes("window.__reactRouterContext =") || !html.includes("window.__reactRouterRouteModules =")) {
|
|
1246
1248
|
throw new Error(`${prefix}: Did you forget to include <Scripts/> in your root route? ` + "Your pre-rendered HTML files cannot hydrate without `<Scripts />`.");
|
|
1247
1249
|
}
|
|
1248
1250
|
}
|
package/dist/vite/profiler.js
CHANGED
|
@@ -13,7 +13,7 @@ function debounce(fn, delay) {
|
|
|
13
13
|
const enqueueUpdate = debounce(async () => {
|
|
14
14
|
let manifest;
|
|
15
15
|
if (routeUpdates.size > 0) {
|
|
16
|
-
manifest = JSON.parse(JSON.stringify(
|
|
16
|
+
manifest = JSON.parse(JSON.stringify(__reactRouterManifest));
|
|
17
17
|
|
|
18
18
|
for (let route of routeUpdates.values()) {
|
|
19
19
|
manifest.routes[route.id] = route;
|
|
@@ -28,18 +28,19 @@ const enqueueUpdate = debounce(async () => {
|
|
|
28
28
|
// react-refresh takes care of updating these in-place,
|
|
29
29
|
// if we don't preserve existing values we'll loose state.
|
|
30
30
|
default: imported.default
|
|
31
|
-
? window.
|
|
31
|
+
? window.__reactRouterRouteModules[route.id]?.default ??
|
|
32
|
+
imported.default
|
|
32
33
|
: imported.default,
|
|
33
34
|
ErrorBoundary: imported.ErrorBoundary
|
|
34
|
-
? window.
|
|
35
|
+
? window.__reactRouterRouteModules[route.id]?.ErrorBoundary ??
|
|
35
36
|
imported.ErrorBoundary
|
|
36
37
|
: imported.ErrorBoundary,
|
|
37
38
|
HydrateFallback: imported.HydrateFallback
|
|
38
|
-
? window.
|
|
39
|
+
? window.__reactRouterRouteModules[route.id]?.HydrateFallback ??
|
|
39
40
|
imported.HydrateFallback
|
|
40
41
|
: imported.HydrateFallback,
|
|
41
42
|
};
|
|
42
|
-
window.
|
|
43
|
+
window.__reactRouterRouteModules[route.id] = routeModule;
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
let needsRevalidation = new Set(
|
|
@@ -48,27 +49,27 @@ const enqueueUpdate = debounce(async () => {
|
|
|
48
49
|
.map((route) => route.id)
|
|
49
50
|
);
|
|
50
51
|
|
|
51
|
-
let routes =
|
|
52
|
+
let routes = __reactRouterInstance.createRoutesForHMR(
|
|
52
53
|
needsRevalidation,
|
|
53
54
|
manifest.routes,
|
|
54
|
-
window.
|
|
55
|
-
window.
|
|
56
|
-
window.
|
|
55
|
+
window.__reactRouterRouteModules,
|
|
56
|
+
window.__reactRouterContext.future,
|
|
57
|
+
window.__reactRouterContext.isSpaMode
|
|
57
58
|
);
|
|
58
|
-
|
|
59
|
+
__reactRouterInstance._internalSetRoutes(routes);
|
|
59
60
|
routeUpdates.clear();
|
|
60
61
|
window.__reactRouterRouteModuleUpdates.clear();
|
|
61
62
|
}
|
|
62
63
|
|
|
63
64
|
try {
|
|
64
|
-
window.
|
|
65
|
-
await
|
|
65
|
+
window.__reactRouterHdrActive = true;
|
|
66
|
+
await __reactRouterInstance.revalidate();
|
|
66
67
|
} finally {
|
|
67
|
-
window.
|
|
68
|
+
window.__reactRouterHdrActive = false;
|
|
68
69
|
}
|
|
69
70
|
|
|
70
71
|
if (manifest) {
|
|
71
|
-
Object.assign(window.
|
|
72
|
+
Object.assign(window.__reactRouterManifest, manifest);
|
|
72
73
|
}
|
|
73
74
|
exports.performReactRefresh();
|
|
74
75
|
}, 16);
|
|
@@ -152,7 +153,7 @@ const routeUpdates = new Map();
|
|
|
152
153
|
window.__reactRouterRouteModuleUpdates = new Map();
|
|
153
154
|
|
|
154
155
|
import.meta.hot.on("react-router:hmr", async ({ route }) => {
|
|
155
|
-
window.
|
|
156
|
+
window.__reactRouterClearCriticalCss();
|
|
156
157
|
|
|
157
158
|
if (route) {
|
|
158
159
|
routeUpdates.set(route.id, route);
|
package/dist/vite/styles.js
CHANGED
package/dist/vite/vite-node.js
CHANGED
package/dist/vite/vmod.js
CHANGED
package/dist/vite/with-props.js
CHANGED
package/dist/vite.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-router/dev",
|
|
3
|
-
"version": "0.0.0-experimental-
|
|
3
|
+
"version": "0.0.0-experimental-f042b8c1e",
|
|
4
4
|
"description": "Dev tools and CLI for React Router",
|
|
5
5
|
"homepage": "https://reactrouter.com",
|
|
6
6
|
"bugs": {
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"set-cookie-parser": "^2.6.0",
|
|
62
62
|
"valibot": "^0.41.0",
|
|
63
63
|
"vite-node": "^1.6.0",
|
|
64
|
-
"@react-router/node": "0.0.0-experimental-
|
|
64
|
+
"@react-router/node": "0.0.0-experimental-f042b8c1e"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
67
|
"@types/babel__core": "^7.20.5",
|
|
@@ -87,15 +87,15 @@
|
|
|
87
87
|
"tiny-invariant": "^1.2.0",
|
|
88
88
|
"vite": "^5.1.0",
|
|
89
89
|
"wrangler": "^3.28.2",
|
|
90
|
-
"react-router": "
|
|
91
|
-
"
|
|
90
|
+
"@react-router/serve": "0.0.0-experimental-f042b8c1e",
|
|
91
|
+
"react-router": "^0.0.0-experimental-f042b8c1e"
|
|
92
92
|
},
|
|
93
93
|
"peerDependencies": {
|
|
94
94
|
"typescript": "^5.1.0",
|
|
95
95
|
"vite": "^5.1.0",
|
|
96
96
|
"wrangler": "^3.28.2",
|
|
97
|
-
"@react-router/serve": "^0.0.0-experimental-
|
|
98
|
-
"react-router": "^0.0.0-experimental-
|
|
97
|
+
"@react-router/serve": "^0.0.0-experimental-f042b8c1e",
|
|
98
|
+
"react-router": "^0.0.0-experimental-f042b8c1e"
|
|
99
99
|
},
|
|
100
100
|
"peerDependenciesMeta": {
|
|
101
101
|
"@react-router/serve": {
|