@react-router/dev 0.0.0-experimental-6844c5934 → 0.0.0-experimental-e41ede670
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 +0 -30
- package/bin.js +0 -13
- package/dist/cli/index.js +36 -41
- package/dist/config.js +1 -1
- package/dist/routes.js +1 -1
- package/dist/vite/cloudflare.js +1 -1
- package/dist/vite.js +157 -205
- package/package.json +10 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,35 +1,5 @@
|
|
|
1
1
|
# `@react-router/dev`
|
|
2
2
|
|
|
3
|
-
## 7.1.1
|
|
4
|
-
|
|
5
|
-
### Patch Changes
|
|
6
|
-
|
|
7
|
-
- Fix for a crash when optional args are passed to the CLI ([`5b1ca202f`](https://github.com/remix-run/react-router/commit/5b1ca202f77ef342db0109c6b791d33188077cd0))
|
|
8
|
-
- Updated dependencies:
|
|
9
|
-
- `react-router@7.1.1`
|
|
10
|
-
- `@react-router/node@7.1.1`
|
|
11
|
-
- `@react-router/serve@7.1.1`
|
|
12
|
-
|
|
13
|
-
## 7.1.0
|
|
14
|
-
|
|
15
|
-
### Minor Changes
|
|
16
|
-
|
|
17
|
-
- Add support for Vite v6 ([#12469](https://github.com/remix-run/react-router/pull/12469))
|
|
18
|
-
|
|
19
|
-
### Patch Changes
|
|
20
|
-
|
|
21
|
-
- Properly initialize `NODE_ENV` if not already set for compatibility with React 19 ([#12578](https://github.com/remix-run/react-router/pull/12578))
|
|
22
|
-
|
|
23
|
-
- Remove the leftover/unused `abortDelay` prop from `ServerRouter` and update the default `entry.server.tsx` to use the new `streamTimeout` value for Single Fetch ([#12478](https://github.com/remix-run/react-router/pull/12478))
|
|
24
|
-
|
|
25
|
-
- The `abortDelay` functionality was removed in v7 as it was coupled to the `defer` implementation from Remix v2, but this removal of this prop was missed
|
|
26
|
-
- If you were still using this prop in your `entry.server` file, it's likely your app is not aborting streams as you would expect and you will need to adopt the new [`streamTimeout`](https://reactrouter.com/explanation/special-files#streamtimeout) value introduced with Single Fetch
|
|
27
|
-
|
|
28
|
-
- Updated dependencies:
|
|
29
|
-
- `react-router@7.1.0`
|
|
30
|
-
- `@react-router/node@7.1.0`
|
|
31
|
-
- `@react-router/serve@7.1.0`
|
|
32
|
-
|
|
33
3
|
## 7.0.2
|
|
34
4
|
|
|
35
5
|
### Patch Changes
|
package/bin.js
CHANGED
|
@@ -1,15 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
let arg = require("arg");
|
|
3
|
-
|
|
4
|
-
// Minimal replication of our actual parsing in `run.ts`. If not already set,
|
|
5
|
-
// default `NODE_ENV` so React loads the proper version in it's CJS entry script.
|
|
6
|
-
// We have to do this before importing `run.ts` since that is what imports
|
|
7
|
-
// `react` (indirectly via `react-router`)
|
|
8
|
-
let args = arg({}, { argv: process.argv.slice(2), stopAtPositional: true });
|
|
9
|
-
if (args._[0] === "dev") {
|
|
10
|
-
process.env.NODE_ENV = process.env.NODE_ENV ?? "development";
|
|
11
|
-
} else {
|
|
12
|
-
process.env.NODE_ENV = process.env.NODE_ENV ?? "production";
|
|
13
|
-
}
|
|
14
|
-
|
|
15
2
|
require("./dist/cli/index");
|
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-
|
|
3
|
+
* @react-router/dev v0.0.0-experimental-e41ede670
|
|
4
4
|
*
|
|
5
5
|
* Copyright (c) Remix Software Inc.
|
|
6
6
|
*
|
|
@@ -100,11 +100,11 @@ async function createContext(viteConfig = {}) {
|
|
|
100
100
|
const runner = new import_client.ViteNodeRunner({
|
|
101
101
|
root: devServer.config.root,
|
|
102
102
|
base: devServer.config.base,
|
|
103
|
-
fetchModule(
|
|
104
|
-
return server.fetchModule(
|
|
103
|
+
fetchModule(id2) {
|
|
104
|
+
return server.fetchModule(id2);
|
|
105
105
|
},
|
|
106
|
-
resolveId(
|
|
107
|
-
return server.resolveId(
|
|
106
|
+
resolveId(id2, importer) {
|
|
107
|
+
return server.resolveId(id2, importer);
|
|
108
108
|
}
|
|
109
109
|
});
|
|
110
110
|
return { devServer, server, runner };
|
|
@@ -160,24 +160,24 @@ ${message}`
|
|
|
160
160
|
function configRoutesToRouteManifest(appDirectory, routes2, rootId = "root") {
|
|
161
161
|
let routeManifest = {};
|
|
162
162
|
function walk(route, parentId) {
|
|
163
|
-
let
|
|
163
|
+
let id2 = route.id || createRouteId(route.file);
|
|
164
164
|
let manifestItem = {
|
|
165
|
-
id,
|
|
165
|
+
id: id2,
|
|
166
166
|
parentId,
|
|
167
167
|
file: Path.isAbsolute(route.file) ? Path.relative(appDirectory, route.file) : route.file,
|
|
168
168
|
path: route.path,
|
|
169
169
|
index: route.index,
|
|
170
170
|
caseSensitive: route.caseSensitive
|
|
171
171
|
};
|
|
172
|
-
if (routeManifest.hasOwnProperty(
|
|
172
|
+
if (routeManifest.hasOwnProperty(id2)) {
|
|
173
173
|
throw new Error(
|
|
174
|
-
`Unable to define routes with duplicate route id: "${
|
|
174
|
+
`Unable to define routes with duplicate route id: "${id2}"`
|
|
175
175
|
);
|
|
176
176
|
}
|
|
177
|
-
routeManifest[
|
|
177
|
+
routeManifest[id2] = manifestItem;
|
|
178
178
|
if (route.children) {
|
|
179
179
|
for (let child of route.children) {
|
|
180
|
-
walk(child,
|
|
180
|
+
walk(child, id2);
|
|
181
181
|
}
|
|
182
182
|
}
|
|
183
183
|
}
|
|
@@ -636,6 +636,10 @@ function generate(ctx, route) {
|
|
|
636
636
|
export type HeadersArgs = T.HeadersArgs
|
|
637
637
|
export type HeadersFunction = (args: HeadersArgs) => Headers | HeadersInit
|
|
638
638
|
|
|
639
|
+
export type MiddlewareArgs = T.CreateServerMiddlewareArgs<Info>
|
|
640
|
+
export type MiddlewareNextFunction = T.ServerMiddlewareNextFunction
|
|
641
|
+
export type ClientMiddlewareArgs = T.CreateClientMiddlewareArgs<Info>
|
|
642
|
+
export type ClientMiddlewareNextFunction = T.ClientMiddlewareNextFunction
|
|
639
643
|
export type LoaderArgs = T.CreateServerLoaderArgs<Info>
|
|
640
644
|
export type ClientLoaderArgs = T.CreateClientLoaderArgs<Info>
|
|
641
645
|
export type ActionArgs = T.CreateServerActionArgs<Info>
|
|
@@ -808,24 +812,17 @@ var init_styles = __esm({
|
|
|
808
812
|
path3 = __toESM(require("path"));
|
|
809
813
|
import_react_router = require("react-router");
|
|
810
814
|
init_resolve_file_url();
|
|
811
|
-
init_import_vite_esm_sync();
|
|
812
815
|
cssFileRegExp = /\.(css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:$|\?)/;
|
|
813
816
|
cssModulesRegExp = new RegExp(`\\.module${cssFileRegExp.source}`);
|
|
814
817
|
}
|
|
815
818
|
});
|
|
816
819
|
|
|
817
|
-
// vite/
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
id,
|
|
822
|
-
resolvedId: `\0${id}`,
|
|
823
|
-
url: `/@id/__x00__${id}`
|
|
824
|
-
};
|
|
825
|
-
}
|
|
826
|
-
var init_virtual_module = __esm({
|
|
827
|
-
"vite/virtual-module.ts"() {
|
|
820
|
+
// vite/vmod.ts
|
|
821
|
+
var id;
|
|
822
|
+
var init_vmod = __esm({
|
|
823
|
+
"vite/vmod.ts"() {
|
|
828
824
|
"use strict";
|
|
825
|
+
id = (name) => `virtual:react-router/${name}`;
|
|
829
826
|
}
|
|
830
827
|
});
|
|
831
828
|
|
|
@@ -847,14 +844,14 @@ var init_remove_exports = __esm({
|
|
|
847
844
|
});
|
|
848
845
|
|
|
849
846
|
// vite/with-props.ts
|
|
850
|
-
var import_dedent2,
|
|
847
|
+
var import_dedent2, vmodId;
|
|
851
848
|
var init_with_props = __esm({
|
|
852
849
|
"vite/with-props.ts"() {
|
|
853
850
|
"use strict";
|
|
854
851
|
import_dedent2 = __toESM(require("dedent"));
|
|
855
852
|
init_babel();
|
|
856
|
-
|
|
857
|
-
|
|
853
|
+
init_vmod();
|
|
854
|
+
vmodId = id("with-props");
|
|
858
855
|
}
|
|
859
856
|
});
|
|
860
857
|
|
|
@@ -919,7 +916,7 @@ function findConfig(dir, basename2, extensions) {
|
|
|
919
916
|
}
|
|
920
917
|
return void 0;
|
|
921
918
|
}
|
|
922
|
-
var import_node_crypto, path4, url, fse, babel, import_react_router2, import_es_module_lexer, import_jsesc, import_picocolors3,
|
|
919
|
+
var import_node_crypto, path4, url, fse, babel, import_react_router2, import_es_module_lexer, import_jsesc, import_picocolors3, serverBuildId, serverManifestId, browserManifestId, hmrRuntimeId, injectHmrRuntimeId, getServerBuildDirectory, defaultEntriesDir, defaultEntries, REACT_REFRESH_HEADER, REACT_REFRESH_FOOTER;
|
|
923
920
|
var init_plugin = __esm({
|
|
924
921
|
"vite/plugin.ts"() {
|
|
925
922
|
"use strict";
|
|
@@ -937,20 +934,18 @@ var init_plugin = __esm({
|
|
|
937
934
|
init_babel();
|
|
938
935
|
init_node_adapter();
|
|
939
936
|
init_styles();
|
|
940
|
-
|
|
937
|
+
init_vmod();
|
|
941
938
|
init_resolve_file_url();
|
|
942
939
|
init_combine_urls();
|
|
943
940
|
init_remove_exports();
|
|
944
941
|
init_import_vite_esm_sync();
|
|
945
942
|
init_config();
|
|
946
943
|
init_with_props();
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
browserManifest: create("browser-manifest")
|
|
953
|
-
};
|
|
944
|
+
serverBuildId = id("server-build");
|
|
945
|
+
serverManifestId = id("server-manifest");
|
|
946
|
+
browserManifestId = id("browser-manifest");
|
|
947
|
+
hmrRuntimeId = id("hmr-runtime");
|
|
948
|
+
injectHmrRuntimeId = id("inject-hmr-runtime");
|
|
954
949
|
getServerBuildDirectory = (ctx) => path4.join(
|
|
955
950
|
ctx.reactRouterConfig.buildDirectory,
|
|
956
951
|
"server",
|
|
@@ -965,7 +960,7 @@ var init_plugin = __esm({
|
|
|
965
960
|
defaultEntries = fse.readdirSync(defaultEntriesDir).map((filename3) => path4.join(defaultEntriesDir, filename3));
|
|
966
961
|
invariant(defaultEntries.length > 0, "No default entries found");
|
|
967
962
|
REACT_REFRESH_HEADER = `
|
|
968
|
-
import RefreshRuntime from "${
|
|
963
|
+
import RefreshRuntime from "${hmrRuntimeId}";
|
|
969
964
|
|
|
970
965
|
const inWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope;
|
|
971
966
|
let prevRefreshReg;
|
|
@@ -1048,8 +1043,8 @@ __export(build_exports, {
|
|
|
1048
1043
|
});
|
|
1049
1044
|
function getAddressableRoutes(routes2) {
|
|
1050
1045
|
let nonAddressableIds = /* @__PURE__ */ new Set();
|
|
1051
|
-
for (let
|
|
1052
|
-
let route = routes2[
|
|
1046
|
+
for (let id2 in routes2) {
|
|
1047
|
+
let route = routes2[id2];
|
|
1053
1048
|
if (route.index) {
|
|
1054
1049
|
invariant(
|
|
1055
1050
|
route.parentId,
|
|
@@ -1058,7 +1053,7 @@ function getAddressableRoutes(routes2) {
|
|
|
1058
1053
|
nonAddressableIds.add(route.parentId);
|
|
1059
1054
|
}
|
|
1060
1055
|
if (typeof route.path !== "string" && !route.index) {
|
|
1061
|
-
nonAddressableIds.add(
|
|
1056
|
+
nonAddressableIds.add(id2);
|
|
1062
1057
|
}
|
|
1063
1058
|
}
|
|
1064
1059
|
return Object.values(routes2).filter(
|
|
@@ -1089,12 +1084,12 @@ async function getServerBuilds(ctx) {
|
|
|
1089
1084
|
let { normalizePath } = await import("vite");
|
|
1090
1085
|
let resolvedAppDirectory = import_node_path2.default.resolve(rootDirectory, appDirectory);
|
|
1091
1086
|
let rootRelativeRoutes = Object.fromEntries(
|
|
1092
|
-
Object.entries(routes2).map(([
|
|
1087
|
+
Object.entries(routes2).map(([id2, route]) => {
|
|
1093
1088
|
let filePath = import_node_path2.default.join(resolvedAppDirectory, route.file);
|
|
1094
1089
|
let rootRelativeFilePath = normalizePath(
|
|
1095
1090
|
import_node_path2.default.relative(rootDirectory, filePath)
|
|
1096
1091
|
);
|
|
1097
|
-
return [
|
|
1092
|
+
return [id2, { ...route, file: rootRelativeFilePath }];
|
|
1098
1093
|
})
|
|
1099
1094
|
);
|
|
1100
1095
|
let buildManifest = {
|
package/dist/config.js
CHANGED
package/dist/routes.js
CHANGED
package/dist/vite/cloudflare.js
CHANGED
package/dist/vite.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v0.0.0-experimental-
|
|
2
|
+
* @react-router/dev v0.0.0-experimental-e41ede670
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -47,7 +47,7 @@ module.exports = __toCommonJS(vite_exports);
|
|
|
47
47
|
// vite/plugin.ts
|
|
48
48
|
var import_node_crypto = require("crypto");
|
|
49
49
|
var path4 = __toESM(require("path"));
|
|
50
|
-
var
|
|
50
|
+
var url2 = __toESM(require("url"));
|
|
51
51
|
var fse = __toESM(require("fs-extra"));
|
|
52
52
|
var babel = __toESM(require("@babel/core"));
|
|
53
53
|
var import_react_router2 = require("react-router");
|
|
@@ -119,11 +119,11 @@ async function createContext(viteConfig = {}) {
|
|
|
119
119
|
const runner = new import_client.ViteNodeRunner({
|
|
120
120
|
root: devServer.config.root,
|
|
121
121
|
base: devServer.config.base,
|
|
122
|
-
fetchModule(
|
|
123
|
-
return server.fetchModule(
|
|
122
|
+
fetchModule(id2) {
|
|
123
|
+
return server.fetchModule(id2);
|
|
124
124
|
},
|
|
125
|
-
resolveId(
|
|
126
|
-
return server.resolveId(
|
|
125
|
+
resolveId(id2, importer) {
|
|
126
|
+
return server.resolveId(id2, importer);
|
|
127
127
|
}
|
|
128
128
|
});
|
|
129
129
|
return { devServer, server, runner };
|
|
@@ -195,24 +195,24 @@ ${message}`
|
|
|
195
195
|
function configRoutesToRouteManifest(appDirectory, routes, rootId = "root") {
|
|
196
196
|
let routeManifest = {};
|
|
197
197
|
function walk(route, parentId) {
|
|
198
|
-
let
|
|
198
|
+
let id2 = route.id || createRouteId(route.file);
|
|
199
199
|
let manifestItem = {
|
|
200
|
-
id,
|
|
200
|
+
id: id2,
|
|
201
201
|
parentId,
|
|
202
202
|
file: Path.isAbsolute(route.file) ? Path.relative(appDirectory, route.file) : route.file,
|
|
203
203
|
path: route.path,
|
|
204
204
|
index: route.index,
|
|
205
205
|
caseSensitive: route.caseSensitive
|
|
206
206
|
};
|
|
207
|
-
if (routeManifest.hasOwnProperty(
|
|
207
|
+
if (routeManifest.hasOwnProperty(id2)) {
|
|
208
208
|
throw new Error(
|
|
209
|
-
`Unable to define routes with duplicate route id: "${
|
|
209
|
+
`Unable to define routes with duplicate route id: "${id2}"`
|
|
210
210
|
);
|
|
211
211
|
}
|
|
212
|
-
routeManifest[
|
|
212
|
+
routeManifest[id2] = manifestItem;
|
|
213
213
|
if (route.children) {
|
|
214
214
|
for (let child of route.children) {
|
|
215
|
-
walk(child,
|
|
215
|
+
walk(child, id2);
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
218
|
}
|
|
@@ -677,6 +677,10 @@ function generate(ctx, route) {
|
|
|
677
677
|
export type HeadersArgs = T.HeadersArgs
|
|
678
678
|
export type HeadersFunction = (args: HeadersArgs) => Headers | HeadersInit
|
|
679
679
|
|
|
680
|
+
export type MiddlewareArgs = T.CreateServerMiddlewareArgs<Info>
|
|
681
|
+
export type MiddlewareNextFunction = T.ServerMiddlewareNextFunction
|
|
682
|
+
export type ClientMiddlewareArgs = T.CreateClientMiddlewareArgs<Info>
|
|
683
|
+
export type ClientMiddlewareNextFunction = T.ClientMiddlewareNextFunction
|
|
680
684
|
export type LoaderArgs = T.CreateServerLoaderArgs<Info>
|
|
681
685
|
export type ClientLoaderArgs = T.CreateClientLoaderArgs<Info>
|
|
682
686
|
export type ActionArgs = T.CreateServerActionArgs<Info>
|
|
@@ -812,7 +816,7 @@ function fromNodeRequest(nodeReq, nodeRes) {
|
|
|
812
816
|
nodeReq.originalUrl,
|
|
813
817
|
"Expected `nodeReq.originalUrl` to be defined"
|
|
814
818
|
);
|
|
815
|
-
let
|
|
819
|
+
let url3 = new URL(nodeReq.originalUrl, origin);
|
|
816
820
|
let controller = new AbortController();
|
|
817
821
|
let init = {
|
|
818
822
|
method: nodeReq.method,
|
|
@@ -825,7 +829,7 @@ function fromNodeRequest(nodeReq, nodeRes) {
|
|
|
825
829
|
init.body = (0, import_node.createReadableStreamFromReadable)(nodeReq);
|
|
826
830
|
init.duplex = "half";
|
|
827
831
|
}
|
|
828
|
-
return new Request(
|
|
832
|
+
return new Request(url3.href, init);
|
|
829
833
|
}
|
|
830
834
|
async function toNodeRequest(res, nodeRes) {
|
|
831
835
|
nodeRes.statusCode = res.status;
|
|
@@ -871,8 +875,8 @@ var cssModulesRegExp = new RegExp(`\\.module${cssFileRegExp.source}`);
|
|
|
871
875
|
var isCssFile = (file) => cssFileRegExp.test(file);
|
|
872
876
|
var isCssModulesFile = (file) => cssModulesRegExp.test(file);
|
|
873
877
|
var cssUrlParamsWithoutSideEffects = ["url", "inline", "raw", "inline-css"];
|
|
874
|
-
var isCssUrlWithoutSideEffects = (
|
|
875
|
-
let queryString =
|
|
878
|
+
var isCssUrlWithoutSideEffects = (url3) => {
|
|
879
|
+
let queryString = url3.split("?")[1];
|
|
876
880
|
if (!queryString) {
|
|
877
881
|
return false;
|
|
878
882
|
}
|
|
@@ -880,22 +884,19 @@ var isCssUrlWithoutSideEffects = (url2) => {
|
|
|
880
884
|
for (let paramWithoutSideEffects of cssUrlParamsWithoutSideEffects) {
|
|
881
885
|
if (
|
|
882
886
|
// Parameter is blank and not explicitly set, i.e. "?url", not "?url="
|
|
883
|
-
params.get(paramWithoutSideEffects) === "" && !
|
|
887
|
+
params.get(paramWithoutSideEffects) === "" && !url3.includes(`?${paramWithoutSideEffects}=`) && !url3.includes(`&${paramWithoutSideEffects}=`)
|
|
884
888
|
) {
|
|
885
889
|
return true;
|
|
886
890
|
}
|
|
887
891
|
}
|
|
888
892
|
return false;
|
|
889
893
|
};
|
|
890
|
-
var injectQuery = (url2, query) => url2.includes("?") ? url2.replace("?", `?${query}&`) : `${url2}?${query}`;
|
|
891
894
|
var getStylesForFiles = async ({
|
|
892
895
|
viteDevServer,
|
|
893
896
|
rootDirectory,
|
|
894
897
|
cssModulesManifest,
|
|
895
898
|
files
|
|
896
899
|
}) => {
|
|
897
|
-
let vite2 = importViteEsmSync();
|
|
898
|
-
let viteMajor = parseInt(vite2.version.split(".")[0], 10);
|
|
899
900
|
let styles = {};
|
|
900
901
|
let deps = /* @__PURE__ */ new Set();
|
|
901
902
|
try {
|
|
@@ -924,15 +925,7 @@ var getStylesForFiles = async ({
|
|
|
924
925
|
for (let dep of deps) {
|
|
925
926
|
if (dep.file && isCssFile(dep.file) && !isCssUrlWithoutSideEffects(dep.url)) {
|
|
926
927
|
try {
|
|
927
|
-
let css = isCssModulesFile(dep.file) ? cssModulesManifest[dep.file] : (await viteDevServer.ssrLoadModule(
|
|
928
|
-
// We need the ?inline query in Vite v6 when loading CSS in SSR
|
|
929
|
-
// since it does not expose the default export for CSS in a
|
|
930
|
-
// server environment. This is to align with non-SSR
|
|
931
|
-
// environments. For backwards compatibility with v5 we keep
|
|
932
|
-
// using the URL without ?inline query because the HMR code was
|
|
933
|
-
// relying on the implicit SSR-client module graph relationship.
|
|
934
|
-
viteMajor >= 6 ? injectQuery(dep.url, "inline") : dep.url
|
|
935
|
-
)).default;
|
|
928
|
+
let css = isCssModulesFile(dep.file) ? cssModulesManifest[dep.file] : (await viteDevServer.ssrLoadModule(dep.url)).default;
|
|
936
929
|
if (css === void 0) {
|
|
937
930
|
throw new Error();
|
|
938
931
|
}
|
|
@@ -956,8 +949,8 @@ var findDeps = async (vite2, node, deps) => {
|
|
|
956
949
|
await findDeps(vite2, node2, deps);
|
|
957
950
|
}
|
|
958
951
|
}
|
|
959
|
-
async function addFromUrl(
|
|
960
|
-
let node2 = await vite2.moduleGraph.getModuleByUrl(
|
|
952
|
+
async function addFromUrl(url3) {
|
|
953
|
+
let node2 = await vite2.moduleGraph.getModuleByUrl(url3);
|
|
961
954
|
if (node2) {
|
|
962
955
|
await addFromNode(node2);
|
|
963
956
|
}
|
|
@@ -965,7 +958,7 @@ var findDeps = async (vite2, node, deps) => {
|
|
|
965
958
|
if (node.ssrTransformResult) {
|
|
966
959
|
if (node.ssrTransformResult.deps) {
|
|
967
960
|
node.ssrTransformResult.deps.forEach(
|
|
968
|
-
(
|
|
961
|
+
(url3) => branches.push(addFromUrl(url3))
|
|
969
962
|
);
|
|
970
963
|
}
|
|
971
964
|
} else {
|
|
@@ -999,14 +992,14 @@ var getStylesForUrl = async ({
|
|
|
999
992
|
entryClientFilePath,
|
|
1000
993
|
cssModulesManifest,
|
|
1001
994
|
build,
|
|
1002
|
-
url:
|
|
995
|
+
url: url3
|
|
1003
996
|
}) => {
|
|
1004
|
-
if (
|
|
997
|
+
if (url3 === void 0 || url3.includes("?_data=")) {
|
|
1005
998
|
return void 0;
|
|
1006
999
|
}
|
|
1007
1000
|
let routes = createRoutes(build.routes);
|
|
1008
1001
|
let appPath = path3.relative(process.cwd(), reactRouterConfig.appDirectory);
|
|
1009
|
-
let documentRouteFiles = (0, import_react_router.matchRoutes)(routes,
|
|
1002
|
+
let documentRouteFiles = (0, import_react_router.matchRoutes)(routes, url3, build.basename)?.map(
|
|
1010
1003
|
(match) => path3.resolve(appPath, reactRouterConfig.routes[match.route.id].file)
|
|
1011
1004
|
) ?? [];
|
|
1012
1005
|
let styles = await getStylesForFiles({
|
|
@@ -1023,15 +1016,10 @@ var getStylesForUrl = async ({
|
|
|
1023
1016
|
return styles;
|
|
1024
1017
|
};
|
|
1025
1018
|
|
|
1026
|
-
// vite/
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
id,
|
|
1031
|
-
resolvedId: `\0${id}`,
|
|
1032
|
-
url: `/@id/__x00__${id}`
|
|
1033
|
-
};
|
|
1034
|
-
}
|
|
1019
|
+
// vite/vmod.ts
|
|
1020
|
+
var id = (name) => `virtual:react-router/${name}`;
|
|
1021
|
+
var resolve3 = (id2) => `\0${id2}`;
|
|
1022
|
+
var url = (id2) => `/@id/__x00__${id2}`;
|
|
1035
1023
|
|
|
1036
1024
|
// vite/combine-urls.ts
|
|
1037
1025
|
function combineURLs(baseURL, relativeURL) {
|
|
@@ -1080,14 +1068,14 @@ var removeExports = (ast, exportsToRemove) => {
|
|
|
1080
1068
|
}
|
|
1081
1069
|
}
|
|
1082
1070
|
if (path5.node.declaration?.type === "FunctionDeclaration") {
|
|
1083
|
-
let
|
|
1084
|
-
if (
|
|
1071
|
+
let id2 = path5.node.declaration.id;
|
|
1072
|
+
if (id2 && exportsToRemove.includes(id2.name)) {
|
|
1085
1073
|
markedForRemoval.add(path5);
|
|
1086
1074
|
}
|
|
1087
1075
|
}
|
|
1088
1076
|
if (path5.node.declaration?.type === "ClassDeclaration") {
|
|
1089
|
-
let
|
|
1090
|
-
if (
|
|
1077
|
+
let id2 = path5.node.declaration.id;
|
|
1078
|
+
if (id2 && exportsToRemove.includes(id2.name)) {
|
|
1091
1079
|
markedForRemoval.add(path5);
|
|
1092
1080
|
}
|
|
1093
1081
|
}
|
|
@@ -1104,9 +1092,9 @@ var removeExports = (ast, exportsToRemove) => {
|
|
|
1104
1092
|
(0, import_babel_dead_code_elimination.deadCodeElimination)(ast, previouslyReferencedIdentifiers);
|
|
1105
1093
|
}
|
|
1106
1094
|
};
|
|
1107
|
-
function validateDestructuredExports(
|
|
1108
|
-
if (
|
|
1109
|
-
for (let element of
|
|
1095
|
+
function validateDestructuredExports(id2, exportsToRemove) {
|
|
1096
|
+
if (id2.type === "ArrayPattern") {
|
|
1097
|
+
for (let element of id2.elements) {
|
|
1110
1098
|
if (!element) {
|
|
1111
1099
|
continue;
|
|
1112
1100
|
}
|
|
@@ -1121,8 +1109,8 @@ function validateDestructuredExports(id, exportsToRemove) {
|
|
|
1121
1109
|
}
|
|
1122
1110
|
}
|
|
1123
1111
|
}
|
|
1124
|
-
if (
|
|
1125
|
-
for (let property of
|
|
1112
|
+
if (id2.type === "ObjectPattern") {
|
|
1113
|
+
for (let property of id2.properties) {
|
|
1126
1114
|
if (!property) {
|
|
1127
1115
|
continue;
|
|
1128
1116
|
}
|
|
@@ -1146,16 +1134,16 @@ function invalidDestructureError(name) {
|
|
|
1146
1134
|
|
|
1147
1135
|
// vite/with-props.ts
|
|
1148
1136
|
var import_dedent2 = __toESM(require("dedent"));
|
|
1149
|
-
var
|
|
1137
|
+
var vmodId = id("with-props");
|
|
1150
1138
|
var NAMED_COMPONENT_EXPORTS = ["HydrateFallback", "ErrorBoundary"];
|
|
1151
1139
|
var plugin = {
|
|
1152
1140
|
name: "react-router-with-props",
|
|
1153
1141
|
enforce: "pre",
|
|
1154
|
-
resolveId(
|
|
1155
|
-
if (
|
|
1142
|
+
resolveId(id2) {
|
|
1143
|
+
if (id2 === vmodId) return resolve3(vmodId);
|
|
1156
1144
|
},
|
|
1157
|
-
async load(
|
|
1158
|
-
if (
|
|
1145
|
+
async load(id2) {
|
|
1146
|
+
if (id2 !== resolve3(vmodId)) return;
|
|
1159
1147
|
return import_dedent2.default`
|
|
1160
1148
|
import { createElement as h } from "react";
|
|
1161
1149
|
import { useActionData, useLoaderData, useMatches, useParams, useRouteError } from "react-router";
|
|
@@ -1217,12 +1205,12 @@ var transform = (ast) => {
|
|
|
1217
1205
|
const decl = path5.get("declaration");
|
|
1218
1206
|
if (decl.isVariableDeclaration()) {
|
|
1219
1207
|
decl.get("declarations").forEach((varDeclarator) => {
|
|
1220
|
-
const
|
|
1208
|
+
const id2 = varDeclarator.get("id");
|
|
1221
1209
|
const init = varDeclarator.get("init");
|
|
1222
1210
|
const expr = init.node;
|
|
1223
1211
|
if (!expr) return;
|
|
1224
|
-
if (!
|
|
1225
|
-
const { name } =
|
|
1212
|
+
if (!id2.isIdentifier()) return;
|
|
1213
|
+
const { name } = id2.node;
|
|
1226
1214
|
if (!NAMED_COMPONENT_EXPORTS.includes(name)) return;
|
|
1227
1215
|
const uid = getHocUid(path5, `with${name}Props`);
|
|
1228
1216
|
init.replaceWith(t.callExpression(uid, [expr]));
|
|
@@ -1230,9 +1218,9 @@ var transform = (ast) => {
|
|
|
1230
1218
|
return;
|
|
1231
1219
|
}
|
|
1232
1220
|
if (decl.isFunctionDeclaration()) {
|
|
1233
|
-
const { id } = decl.node;
|
|
1234
|
-
if (!
|
|
1235
|
-
const { name } =
|
|
1221
|
+
const { id: id2 } = decl.node;
|
|
1222
|
+
if (!id2) return;
|
|
1223
|
+
const { name } = id2;
|
|
1236
1224
|
if (!NAMED_COMPONENT_EXPORTS.includes(name)) return;
|
|
1237
1225
|
const uid = getHocUid(path5, `with${name}Props`);
|
|
1238
1226
|
decl.replaceWith(
|
|
@@ -1253,7 +1241,7 @@ var transform = (ast) => {
|
|
|
1253
1241
|
hocs.map(
|
|
1254
1242
|
([name, identifier]) => t.importSpecifier(identifier, t.identifier(name))
|
|
1255
1243
|
),
|
|
1256
|
-
t.stringLiteral(
|
|
1244
|
+
t.stringLiteral(vmodId)
|
|
1257
1245
|
)
|
|
1258
1246
|
);
|
|
1259
1247
|
}
|
|
@@ -1269,10 +1257,11 @@ function toFunctionExpression(decl) {
|
|
|
1269
1257
|
}
|
|
1270
1258
|
|
|
1271
1259
|
// vite/plugin.ts
|
|
1272
|
-
var SERVER_ONLY_ROUTE_EXPORTS = ["loader", "action", "headers"];
|
|
1260
|
+
var SERVER_ONLY_ROUTE_EXPORTS = ["loader", "action", "middleware", "headers"];
|
|
1273
1261
|
var CLIENT_ROUTE_EXPORTS = [
|
|
1274
1262
|
"clientAction",
|
|
1275
1263
|
"clientLoader",
|
|
1264
|
+
"clientMiddleware",
|
|
1276
1265
|
"default",
|
|
1277
1266
|
"ErrorBoundary",
|
|
1278
1267
|
"handle",
|
|
@@ -1282,23 +1271,27 @@ var CLIENT_ROUTE_EXPORTS = [
|
|
|
1282
1271
|
"meta",
|
|
1283
1272
|
"shouldRevalidate"
|
|
1284
1273
|
];
|
|
1285
|
-
var
|
|
1286
|
-
var
|
|
1287
|
-
|
|
1274
|
+
var ROUTE_ENTRY_QUERY_STRING = "?route-entry=1";
|
|
1275
|
+
var isRouteEntry = (id2) => {
|
|
1276
|
+
return id2.endsWith(ROUTE_ENTRY_QUERY_STRING);
|
|
1277
|
+
};
|
|
1278
|
+
var serverBuildId = id("server-build");
|
|
1279
|
+
var serverManifestId = id("server-manifest");
|
|
1280
|
+
var browserManifestId = id("browser-manifest");
|
|
1281
|
+
var hmrRuntimeId = id("hmr-runtime");
|
|
1282
|
+
var injectHmrRuntimeId = id("inject-hmr-runtime");
|
|
1288
1283
|
var resolveRelativeRouteFilePath = (route, reactRouterConfig) => {
|
|
1289
1284
|
let vite2 = importViteEsmSync();
|
|
1290
1285
|
let file = route.file;
|
|
1291
1286
|
let fullPath = path4.resolve(reactRouterConfig.appDirectory, file);
|
|
1292
1287
|
return vite2.normalizePath(fullPath);
|
|
1293
1288
|
};
|
|
1294
|
-
var
|
|
1295
|
-
serverBuild: create("server-build"),
|
|
1296
|
-
serverManifest: create("server-manifest"),
|
|
1297
|
-
browserManifest: create("browser-manifest")
|
|
1298
|
-
};
|
|
1289
|
+
var vmods = [serverBuildId, serverManifestId, browserManifestId];
|
|
1299
1290
|
var invalidateVirtualModules = (viteDevServer) => {
|
|
1300
|
-
|
|
1301
|
-
let mod = viteDevServer.moduleGraph.getModuleById(
|
|
1291
|
+
vmods.forEach((vmod) => {
|
|
1292
|
+
let mod = viteDevServer.moduleGraph.getModuleById(
|
|
1293
|
+
resolve3(vmod)
|
|
1294
|
+
);
|
|
1302
1295
|
if (mod) {
|
|
1303
1296
|
viteDevServer.moduleGraph.invalidateModule(mod);
|
|
1304
1297
|
}
|
|
@@ -1313,7 +1306,7 @@ var resolveChunk = (ctx, viteManifest, absoluteFilePath) => {
|
|
|
1313
1306
|
let rootRelativeFilePath = vite2.normalizePath(
|
|
1314
1307
|
path4.relative(ctx.rootDirectory, absoluteFilePath)
|
|
1315
1308
|
);
|
|
1316
|
-
let entryChunk = viteManifest[rootRelativeFilePath +
|
|
1309
|
+
let entryChunk = viteManifest[rootRelativeFilePath + ROUTE_ENTRY_QUERY_STRING] ?? viteManifest[rootRelativeFilePath];
|
|
1317
1310
|
if (!entryChunk) {
|
|
1318
1311
|
let knownManifestKeys = Object.keys(viteManifest).map((key) => '"' + key + '"').join(", ");
|
|
1319
1312
|
throw new Error(
|
|
@@ -1386,19 +1379,19 @@ var getRouteModuleExports = async (viteChildCompiler, ctx, routeFile, readRouteF
|
|
|
1386
1379
|
let ssr = true;
|
|
1387
1380
|
let { pluginContainer, moduleGraph } = viteChildCompiler;
|
|
1388
1381
|
let routePath = path4.resolve(ctx.reactRouterConfig.appDirectory, routeFile);
|
|
1389
|
-
let
|
|
1382
|
+
let url3 = resolveFileUrl(ctx, routePath);
|
|
1390
1383
|
let resolveId = async () => {
|
|
1391
|
-
let result = await pluginContainer.resolveId(
|
|
1392
|
-
if (!result) throw new Error(`Could not resolve module ID for ${
|
|
1384
|
+
let result = await pluginContainer.resolveId(url3, void 0, { ssr });
|
|
1385
|
+
if (!result) throw new Error(`Could not resolve module ID for ${url3}`);
|
|
1393
1386
|
return result.id;
|
|
1394
1387
|
};
|
|
1395
|
-
let [
|
|
1388
|
+
let [id2, code] = await Promise.all([
|
|
1396
1389
|
resolveId(),
|
|
1397
1390
|
readRouteFile?.() ?? fse.readFile(routePath, "utf-8"),
|
|
1398
1391
|
// pluginContainer.transform(...) fails if we don't do this first:
|
|
1399
|
-
moduleGraph.ensureEntryFromUrl(
|
|
1392
|
+
moduleGraph.ensureEntryFromUrl(url3, ssr)
|
|
1400
1393
|
]);
|
|
1401
|
-
let transformed = await pluginContainer.transform(code,
|
|
1394
|
+
let transformed = await pluginContainer.transform(code, id2, { ssr });
|
|
1402
1395
|
let [, exports2] = (0, import_es_module_lexer.parse)(transformed.code);
|
|
1403
1396
|
let exportNames = exports2.map((e) => e.n);
|
|
1404
1397
|
return exportNames;
|
|
@@ -1503,12 +1496,10 @@ var reactRouterVitePlugin = () => {
|
|
|
1503
1496
|
resolveFileUrl(
|
|
1504
1497
|
ctx,
|
|
1505
1498
|
resolveRelativeRouteFilePath(route, ctx.reactRouterConfig)
|
|
1506
|
-
)
|
|
1499
|
+
) + ROUTE_ENTRY_QUERY_STRING
|
|
1507
1500
|
)};`;
|
|
1508
1501
|
}).join("\n")}
|
|
1509
|
-
export { default as assets } from ${JSON.stringify(
|
|
1510
|
-
virtual.serverManifest.id
|
|
1511
|
-
)};
|
|
1502
|
+
export { default as assets } from ${JSON.stringify(serverManifestId)};
|
|
1512
1503
|
export const assetsBuildDirectory = ${JSON.stringify(
|
|
1513
1504
|
path4.relative(
|
|
1514
1505
|
ctx.rootDirectory,
|
|
@@ -1611,8 +1602,8 @@ var reactRouterVitePlugin = () => {
|
|
|
1611
1602
|
viteConfig.build.assetsDir,
|
|
1612
1603
|
`manifest-${version}.js`
|
|
1613
1604
|
);
|
|
1614
|
-
let
|
|
1615
|
-
let nonFingerprintedValues = { url:
|
|
1605
|
+
let url3 = `${ctx.publicPath}${manifestPath}`;
|
|
1606
|
+
let nonFingerprintedValues = { url: url3, version };
|
|
1616
1607
|
let reactRouterBrowserManifest = {
|
|
1617
1608
|
...fingerprintedValues,
|
|
1618
1609
|
...nonFingerprintedValues
|
|
@@ -1648,10 +1639,10 @@ var reactRouterVitePlugin = () => {
|
|
|
1648
1639
|
caseSensitive: route.caseSensitive,
|
|
1649
1640
|
module: combineURLs(
|
|
1650
1641
|
ctx.publicPath,
|
|
1651
|
-
resolveFileUrl(
|
|
1642
|
+
`${resolveFileUrl(
|
|
1652
1643
|
ctx,
|
|
1653
1644
|
resolveRelativeRouteFilePath(route, ctx.reactRouterConfig)
|
|
1654
|
-
)
|
|
1645
|
+
)}${ROUTE_ENTRY_QUERY_STRING}`
|
|
1655
1646
|
),
|
|
1656
1647
|
hasAction: sourceExports.includes("action"),
|
|
1657
1648
|
hasLoader: sourceExports.includes("loader"),
|
|
@@ -1663,9 +1654,12 @@ var reactRouterVitePlugin = () => {
|
|
|
1663
1654
|
}
|
|
1664
1655
|
return {
|
|
1665
1656
|
version: String(Math.random()),
|
|
1666
|
-
url: combineURLs(ctx.publicPath,
|
|
1657
|
+
url: combineURLs(ctx.publicPath, url(browserManifestId)),
|
|
1667
1658
|
hmr: {
|
|
1668
|
-
runtime: combineURLs(
|
|
1659
|
+
runtime: combineURLs(
|
|
1660
|
+
ctx.publicPath,
|
|
1661
|
+
url(injectHmrRuntimeId)
|
|
1662
|
+
)
|
|
1669
1663
|
},
|
|
1670
1664
|
entry: {
|
|
1671
1665
|
module: combineURLs(
|
|
@@ -1802,7 +1796,7 @@ var reactRouterVitePlugin = () => {
|
|
|
1802
1796
|
(route) => `${path4.resolve(
|
|
1803
1797
|
ctx.reactRouterConfig.appDirectory,
|
|
1804
1798
|
route.file
|
|
1805
|
-
)}${
|
|
1799
|
+
)}${ROUTE_ENTRY_QUERY_STRING}`
|
|
1806
1800
|
)
|
|
1807
1801
|
]
|
|
1808
1802
|
}
|
|
@@ -1821,7 +1815,7 @@ var reactRouterVitePlugin = () => {
|
|
|
1821
1815
|
rollupOptions: {
|
|
1822
1816
|
...baseRollupOptions,
|
|
1823
1817
|
preserveEntrySignatures: "exports-only",
|
|
1824
|
-
input: viteUserConfig.build?.rollupOptions?.input ??
|
|
1818
|
+
input: viteUserConfig.build?.rollupOptions?.input ?? serverBuildId,
|
|
1825
1819
|
output: {
|
|
1826
1820
|
entryFileNames: ctx.reactRouterConfig.serverBuildFile,
|
|
1827
1821
|
format: ctx.reactRouterConfig.serverModuleFormat
|
|
@@ -1884,15 +1878,15 @@ var reactRouterVitePlugin = () => {
|
|
|
1884
1878
|
envFile: false,
|
|
1885
1879
|
plugins: [
|
|
1886
1880
|
...(childCompilerConfigFile.config.plugins ?? []).flat().filter(
|
|
1887
|
-
(plugin2) => typeof plugin2 === "object" && plugin2 !== null && "name" in plugin2 && plugin2.name !== "react-router" && plugin2.name !== "react-router
|
|
1881
|
+
(plugin2) => typeof plugin2 === "object" && plugin2 !== null && "name" in plugin2 && plugin2.name !== "react-router" && plugin2.name !== "react-router-route-exports" && plugin2.name !== "react-router-hmr-updates"
|
|
1888
1882
|
)
|
|
1889
1883
|
]
|
|
1890
1884
|
});
|
|
1891
1885
|
await viteChildCompiler.pluginContainer.buildStart({});
|
|
1892
1886
|
},
|
|
1893
|
-
async transform(code,
|
|
1894
|
-
if (isCssModulesFile(
|
|
1895
|
-
cssModulesManifest[
|
|
1887
|
+
async transform(code, id2) {
|
|
1888
|
+
if (isCssModulesFile(id2)) {
|
|
1889
|
+
cssModulesManifest[id2] = code;
|
|
1896
1890
|
}
|
|
1897
1891
|
},
|
|
1898
1892
|
buildStart() {
|
|
@@ -1916,7 +1910,7 @@ var reactRouterVitePlugin = () => {
|
|
|
1916
1910
|
(0, import_react_router2.unstable_setDevServerHooks)({
|
|
1917
1911
|
// Give the request handler access to the critical CSS in dev to avoid a
|
|
1918
1912
|
// flash of unstyled content since Vite injects CSS file contents via JS
|
|
1919
|
-
getCriticalCss: async (build,
|
|
1913
|
+
getCriticalCss: async (build, url3) => {
|
|
1920
1914
|
return getStylesForUrl({
|
|
1921
1915
|
rootDirectory: ctx.rootDirectory,
|
|
1922
1916
|
entryClientFilePath: ctx.entryClientFilePath,
|
|
@@ -1924,7 +1918,7 @@ var reactRouterVitePlugin = () => {
|
|
|
1924
1918
|
viteDevServer,
|
|
1925
1919
|
cssModulesManifest,
|
|
1926
1920
|
build,
|
|
1927
|
-
url:
|
|
1921
|
+
url: url3
|
|
1928
1922
|
});
|
|
1929
1923
|
},
|
|
1930
1924
|
// If an error is caught within the request handler, let Vite fix the
|
|
@@ -1972,7 +1966,7 @@ var reactRouterVitePlugin = () => {
|
|
|
1972
1966
|
viteDevServer.middlewares.use(async (req, res, next) => {
|
|
1973
1967
|
try {
|
|
1974
1968
|
let build = await viteDevServer.ssrLoadModule(
|
|
1975
|
-
|
|
1969
|
+
serverBuildId
|
|
1976
1970
|
);
|
|
1977
1971
|
let handler = (0, import_react_router2.createRequestHandler)(build, "development");
|
|
1978
1972
|
let nodeHandler = async (nodeReq, nodeRes) => {
|
|
@@ -2072,11 +2066,11 @@ var reactRouterVitePlugin = () => {
|
|
|
2072
2066
|
}
|
|
2073
2067
|
},
|
|
2074
2068
|
{
|
|
2075
|
-
name: "react-router
|
|
2069
|
+
name: "react-router-route-entry",
|
|
2076
2070
|
enforce: "pre",
|
|
2077
|
-
async transform(_code,
|
|
2078
|
-
if (!
|
|
2079
|
-
let routeModuleId =
|
|
2071
|
+
async transform(_code, id2, options) {
|
|
2072
|
+
if (!isRouteEntry(id2)) return;
|
|
2073
|
+
let routeModuleId = id2.replace(ROUTE_ENTRY_QUERY_STRING, "");
|
|
2080
2074
|
let routeFileName = path4.basename(routeModuleId);
|
|
2081
2075
|
let sourceExports = await getRouteModuleExports(
|
|
2082
2076
|
viteChildCompiler,
|
|
@@ -2090,24 +2084,23 @@ var reactRouterVitePlugin = () => {
|
|
|
2090
2084
|
}
|
|
2091
2085
|
},
|
|
2092
2086
|
{
|
|
2093
|
-
name: "react-router
|
|
2087
|
+
name: "react-router-virtual-modules",
|
|
2094
2088
|
enforce: "pre",
|
|
2095
|
-
resolveId(
|
|
2096
|
-
|
|
2097
|
-
if (vmod2) return vmod2.resolvedId;
|
|
2089
|
+
resolveId(id2) {
|
|
2090
|
+
if (vmods.includes(id2)) return resolve3(id2);
|
|
2098
2091
|
},
|
|
2099
|
-
async load(
|
|
2100
|
-
switch (
|
|
2101
|
-
case
|
|
2092
|
+
async load(id2) {
|
|
2093
|
+
switch (id2) {
|
|
2094
|
+
case resolve3(serverBuildId): {
|
|
2102
2095
|
return await getServerEntry();
|
|
2103
2096
|
}
|
|
2104
|
-
case
|
|
2097
|
+
case resolve3(serverManifestId): {
|
|
2105
2098
|
let reactRouterManifest = ctx.isSsrBuild ? await ctx.getReactRouterServerManifest() : await getReactRouterManifestForDev();
|
|
2106
2099
|
return `export default ${(0, import_jsesc.default)(reactRouterManifest, {
|
|
2107
2100
|
es6: true
|
|
2108
2101
|
})};`;
|
|
2109
2102
|
}
|
|
2110
|
-
case
|
|
2103
|
+
case resolve3(browserManifestId): {
|
|
2111
2104
|
if (viteCommand === "build") {
|
|
2112
2105
|
throw new Error("This module only exists in development");
|
|
2113
2106
|
}
|
|
@@ -2121,15 +2114,15 @@ var reactRouterVitePlugin = () => {
|
|
|
2121
2114
|
}
|
|
2122
2115
|
},
|
|
2123
2116
|
{
|
|
2124
|
-
name: "react-router
|
|
2117
|
+
name: "react-router-dot-server",
|
|
2125
2118
|
enforce: "pre",
|
|
2126
|
-
async resolveId(
|
|
2119
|
+
async resolveId(id2, importer, options) {
|
|
2127
2120
|
let isOptimizeDeps = viteCommand === "serve" && options?.scan === true;
|
|
2128
2121
|
if (isOptimizeDeps || options?.ssr) return;
|
|
2129
|
-
let isResolving = options?.custom?.["react-router
|
|
2122
|
+
let isResolving = options?.custom?.["react-router-dot-server"] ?? false;
|
|
2130
2123
|
if (isResolving) return;
|
|
2131
|
-
options.custom = { ...options.custom, "react-router
|
|
2132
|
-
let resolved = await this.resolve(
|
|
2124
|
+
options.custom = { ...options.custom, "react-router-dot-server": true };
|
|
2125
|
+
let resolved = await this.resolve(id2, importer, options);
|
|
2133
2126
|
if (!resolved) return;
|
|
2134
2127
|
let serverFileRE = /\.server(\.[cm]?[jt]sx?)?$/;
|
|
2135
2128
|
let serverDirRE = /\/\.server\//;
|
|
@@ -2152,12 +2145,12 @@ var reactRouterVitePlugin = () => {
|
|
|
2152
2145
|
[
|
|
2153
2146
|
import_picocolors3.default.red(`Server-only module referenced by client`),
|
|
2154
2147
|
"",
|
|
2155
|
-
` '${
|
|
2148
|
+
` '${id2}' imported by route '${importerShort}'`,
|
|
2156
2149
|
"",
|
|
2157
2150
|
` React Router automatically removes server-code from these exports:`,
|
|
2158
2151
|
` ${serverOnlyExports}`,
|
|
2159
2152
|
"",
|
|
2160
|
-
` But other route exports in '${importerShort}' depend on '${
|
|
2153
|
+
` But other route exports in '${importerShort}' depend on '${id2}'.`,
|
|
2161
2154
|
"",
|
|
2162
2155
|
" See https://remix.run/docs/en/main/guides/vite#splitting-up-client-and-server-code",
|
|
2163
2156
|
""
|
|
@@ -2168,7 +2161,7 @@ var reactRouterVitePlugin = () => {
|
|
|
2168
2161
|
[
|
|
2169
2162
|
import_picocolors3.default.red(`Server-only module referenced by client`),
|
|
2170
2163
|
"",
|
|
2171
|
-
` '${
|
|
2164
|
+
` '${id2}' imported by '${importerShort}'`,
|
|
2172
2165
|
"",
|
|
2173
2166
|
" See https://remix.run/docs/en/main/guides/vite#splitting-up-client-and-server-code",
|
|
2174
2167
|
""
|
|
@@ -2177,12 +2170,12 @@ var reactRouterVitePlugin = () => {
|
|
|
2177
2170
|
}
|
|
2178
2171
|
},
|
|
2179
2172
|
{
|
|
2180
|
-
name: "react-router
|
|
2181
|
-
async transform(code,
|
|
2173
|
+
name: "react-router-dot-client",
|
|
2174
|
+
async transform(code, id2, options) {
|
|
2182
2175
|
if (!options?.ssr) return;
|
|
2183
2176
|
let clientFileRE = /\.client(\.[cm]?[jt]sx?)?$/;
|
|
2184
2177
|
let clientDirRE = /\/\.client\//;
|
|
2185
|
-
if (clientFileRE.test(
|
|
2178
|
+
if (clientFileRE.test(id2) || clientDirRE.test(id2)) {
|
|
2186
2179
|
let exports2 = (0, import_es_module_lexer.parse)(code)[1];
|
|
2187
2180
|
return {
|
|
2188
2181
|
code: exports2.map(
|
|
@@ -2195,9 +2188,9 @@ var reactRouterVitePlugin = () => {
|
|
|
2195
2188
|
},
|
|
2196
2189
|
plugin,
|
|
2197
2190
|
{
|
|
2198
|
-
name: "react-router
|
|
2199
|
-
async transform(code,
|
|
2200
|
-
let route = getRoute(ctx.reactRouterConfig,
|
|
2191
|
+
name: "react-router-route-exports",
|
|
2192
|
+
async transform(code, id2, options) {
|
|
2193
|
+
let route = getRoute(ctx.reactRouterConfig, id2);
|
|
2201
2194
|
if (!route) return;
|
|
2202
2195
|
if (!options?.ssr && !ctx.reactRouterConfig.ssr) {
|
|
2203
2196
|
let serverOnlyExports = (0, import_es_module_lexer.parse)(code)[1].map((exp) => exp.n).filter((exp) => SERVER_ONLY_ROUTE_EXPORTS.includes(exp));
|
|
@@ -2214,7 +2207,7 @@ var reactRouterVitePlugin = () => {
|
|
|
2214
2207
|
}
|
|
2215
2208
|
}
|
|
2216
2209
|
}
|
|
2217
|
-
let [filepath] =
|
|
2210
|
+
let [filepath] = id2.split("?");
|
|
2218
2211
|
let ast = (0, import_parser.parse)(code, { sourceType: "module" });
|
|
2219
2212
|
if (!options?.ssr) {
|
|
2220
2213
|
removeExports(ast, SERVER_ONLY_ROUTE_EXPORTS);
|
|
@@ -2222,23 +2215,22 @@ var reactRouterVitePlugin = () => {
|
|
|
2222
2215
|
transform(ast);
|
|
2223
2216
|
return generate2(ast, {
|
|
2224
2217
|
sourceMaps: true,
|
|
2225
|
-
filename:
|
|
2218
|
+
filename: id2,
|
|
2226
2219
|
sourceFileName: filepath
|
|
2227
2220
|
});
|
|
2228
2221
|
}
|
|
2229
2222
|
},
|
|
2230
2223
|
{
|
|
2231
|
-
name: "react-router
|
|
2224
|
+
name: "react-router-inject-hmr-runtime",
|
|
2232
2225
|
enforce: "pre",
|
|
2233
|
-
resolveId(
|
|
2234
|
-
if (
|
|
2235
|
-
return
|
|
2236
|
-
}
|
|
2226
|
+
resolveId(id2) {
|
|
2227
|
+
if (id2 === injectHmrRuntimeId)
|
|
2228
|
+
return resolve3(injectHmrRuntimeId);
|
|
2237
2229
|
},
|
|
2238
|
-
async load(
|
|
2239
|
-
if (
|
|
2230
|
+
async load(id2) {
|
|
2231
|
+
if (id2 !== resolve3(injectHmrRuntimeId)) return;
|
|
2240
2232
|
return [
|
|
2241
|
-
`import RefreshRuntime from "${
|
|
2233
|
+
`import RefreshRuntime from "${hmrRuntimeId}"`,
|
|
2242
2234
|
"RefreshRuntime.injectIntoGlobalHook(window)",
|
|
2243
2235
|
"window.$RefreshReg$ = () => {}",
|
|
2244
2236
|
"window.$RefreshSig$ = () => (type) => type",
|
|
@@ -2247,13 +2239,13 @@ var reactRouterVitePlugin = () => {
|
|
|
2247
2239
|
}
|
|
2248
2240
|
},
|
|
2249
2241
|
{
|
|
2250
|
-
name: "react-router
|
|
2242
|
+
name: "react-router-hmr-runtime",
|
|
2251
2243
|
enforce: "pre",
|
|
2252
|
-
resolveId(
|
|
2253
|
-
if (
|
|
2244
|
+
resolveId(id2) {
|
|
2245
|
+
if (id2 === hmrRuntimeId) return resolve3(hmrRuntimeId);
|
|
2254
2246
|
},
|
|
2255
|
-
async load(
|
|
2256
|
-
if (
|
|
2247
|
+
async load(id2) {
|
|
2248
|
+
if (id2 !== resolve3(hmrRuntimeId)) return;
|
|
2257
2249
|
let reactRefreshDir = path4.dirname(
|
|
2258
2250
|
require.resolve("react-refresh/package.json")
|
|
2259
2251
|
);
|
|
@@ -2273,11 +2265,11 @@ var reactRouterVitePlugin = () => {
|
|
|
2273
2265
|
}
|
|
2274
2266
|
},
|
|
2275
2267
|
{
|
|
2276
|
-
name: "react-router
|
|
2277
|
-
async transform(code,
|
|
2268
|
+
name: "react-router-react-refresh-babel",
|
|
2269
|
+
async transform(code, id2, options) {
|
|
2278
2270
|
if (viteCommand !== "serve") return;
|
|
2279
|
-
if (
|
|
2280
|
-
let [filepath] =
|
|
2271
|
+
if (id2.includes("/node_modules/")) return;
|
|
2272
|
+
let [filepath] = id2.split("?");
|
|
2281
2273
|
let extensionsRE = /\.(jsx?|tsx?|mdx?)$/;
|
|
2282
2274
|
if (!extensionsRE.test(filepath)) return;
|
|
2283
2275
|
let devRuntime = "react/jsx-dev-runtime";
|
|
@@ -2285,10 +2277,13 @@ var reactRouterVitePlugin = () => {
|
|
|
2285
2277
|
let isJSX = filepath.endsWith("x");
|
|
2286
2278
|
let useFastRefresh = !ssr && (isJSX || code.includes(devRuntime));
|
|
2287
2279
|
if (!useFastRefresh) return;
|
|
2280
|
+
if (isRouteEntry(id2)) {
|
|
2281
|
+
return { code: addRefreshWrapper(ctx.reactRouterConfig, code, id2) };
|
|
2282
|
+
}
|
|
2288
2283
|
let result = await babel.transformAsync(code, {
|
|
2289
2284
|
babelrc: false,
|
|
2290
2285
|
configFile: false,
|
|
2291
|
-
filename:
|
|
2286
|
+
filename: id2,
|
|
2292
2287
|
sourceFileName: filepath,
|
|
2293
2288
|
parserOpts: {
|
|
2294
2289
|
sourceType: "module",
|
|
@@ -2301,18 +2296,18 @@ var reactRouterVitePlugin = () => {
|
|
|
2301
2296
|
code = result.code;
|
|
2302
2297
|
let refreshContentRE = /\$Refresh(?:Reg|Sig)\$\(/;
|
|
2303
2298
|
if (refreshContentRE.test(code)) {
|
|
2304
|
-
code = addRefreshWrapper(ctx.reactRouterConfig, code,
|
|
2299
|
+
code = addRefreshWrapper(ctx.reactRouterConfig, code, id2);
|
|
2305
2300
|
}
|
|
2306
2301
|
return { code, map: result.map };
|
|
2307
2302
|
}
|
|
2308
2303
|
},
|
|
2309
2304
|
{
|
|
2310
|
-
name: "react-router
|
|
2305
|
+
name: "react-router-hmr-updates",
|
|
2311
2306
|
async handleHotUpdate({ server, file, modules, read }) {
|
|
2312
2307
|
let route = getRoute(ctx.reactRouterConfig, file);
|
|
2313
2308
|
let hmrEventData = { route: null };
|
|
2314
2309
|
if (route) {
|
|
2315
|
-
let serverManifest = (await server.ssrLoadModule(
|
|
2310
|
+
let serverManifest = (await server.ssrLoadModule(serverManifestId)).default;
|
|
2316
2311
|
let oldRouteMetadata = serverManifest.routes[route.id];
|
|
2317
2312
|
let newRouteMetadata = await getRouteMetadata(
|
|
2318
2313
|
ctx,
|
|
@@ -2338,60 +2333,15 @@ var reactRouterVitePlugin = () => {
|
|
|
2338
2333
|
});
|
|
2339
2334
|
return modules;
|
|
2340
2335
|
}
|
|
2341
|
-
},
|
|
2342
|
-
{
|
|
2343
|
-
name: "react-router-server-change-trigger-client-hmr",
|
|
2344
|
-
// This hook is only available in Vite v6+ so this is a no-op in v5.
|
|
2345
|
-
// Previously the server and client modules were shared in a single module
|
|
2346
|
-
// graph. This meant that changes to server code automatically resulted in
|
|
2347
|
-
// client HMR updates. In Vite v6+ these module graphs are separate from
|
|
2348
|
-
// each other so we need to manually trigger client HMR updates if server
|
|
2349
|
-
// code has changed.
|
|
2350
|
-
hotUpdate({ server, modules }) {
|
|
2351
|
-
if (this.environment.name !== "ssr" && modules.length <= 0) {
|
|
2352
|
-
return;
|
|
2353
|
-
}
|
|
2354
|
-
let clientModules = uniqueNodes(
|
|
2355
|
-
modules.flatMap(
|
|
2356
|
-
(mod) => getParentClientNodes(server.environments.client.moduleGraph, mod)
|
|
2357
|
-
)
|
|
2358
|
-
);
|
|
2359
|
-
for (let clientModule of clientModules) {
|
|
2360
|
-
server.environments.client.reloadModule(clientModule);
|
|
2361
|
-
}
|
|
2362
|
-
}
|
|
2363
2336
|
}
|
|
2364
2337
|
];
|
|
2365
2338
|
};
|
|
2366
|
-
function
|
|
2367
|
-
|
|
2368
|
-
|
|
2369
|
-
}
|
|
2370
|
-
let clientModule = clientModuleGraph.getModuleById(module2.id);
|
|
2371
|
-
if (clientModule) {
|
|
2372
|
-
return [clientModule];
|
|
2373
|
-
}
|
|
2374
|
-
return [...module2.importers].flatMap(
|
|
2375
|
-
(importer) => getParentClientNodes(clientModuleGraph, importer)
|
|
2376
|
-
);
|
|
2377
|
-
}
|
|
2378
|
-
function uniqueNodes(nodes) {
|
|
2379
|
-
let nodeUrls = /* @__PURE__ */ new Set();
|
|
2380
|
-
let unique = [];
|
|
2381
|
-
for (let node of nodes) {
|
|
2382
|
-
if (nodeUrls.has(node.url)) {
|
|
2383
|
-
continue;
|
|
2384
|
-
}
|
|
2385
|
-
nodeUrls.add(node.url);
|
|
2386
|
-
unique.push(node);
|
|
2387
|
-
}
|
|
2388
|
-
return unique;
|
|
2389
|
-
}
|
|
2390
|
-
function addRefreshWrapper(reactRouterConfig, code, id) {
|
|
2391
|
-
let route = getRoute(reactRouterConfig, id);
|
|
2392
|
-
let acceptExports = route ? [
|
|
2339
|
+
function addRefreshWrapper(reactRouterConfig, code, id2) {
|
|
2340
|
+
let route = getRoute(reactRouterConfig, id2);
|
|
2341
|
+
let acceptExports = route || isRouteEntry(id2) ? [
|
|
2393
2342
|
"clientAction",
|
|
2394
2343
|
"clientLoader",
|
|
2344
|
+
"clientMiddleware",
|
|
2395
2345
|
"handle",
|
|
2396
2346
|
"meta",
|
|
2397
2347
|
"links",
|
|
@@ -2399,10 +2349,10 @@ function addRefreshWrapper(reactRouterConfig, code, id) {
|
|
|
2399
2349
|
] : [];
|
|
2400
2350
|
return "\n\n" + withCommentBoundaries(
|
|
2401
2351
|
"REACT REFRESH HEADER",
|
|
2402
|
-
REACT_REFRESH_HEADER.replaceAll("__SOURCE__", JSON.stringify(
|
|
2352
|
+
REACT_REFRESH_HEADER.replaceAll("__SOURCE__", JSON.stringify(id2))
|
|
2403
2353
|
) + "\n\n" + withCommentBoundaries("REACT REFRESH BODY", code) + "\n\n" + withCommentBoundaries(
|
|
2404
2354
|
"REACT REFRESH FOOTER",
|
|
2405
|
-
REACT_REFRESH_FOOTER.replaceAll("__SOURCE__", JSON.stringify(
|
|
2355
|
+
REACT_REFRESH_FOOTER.replaceAll("__SOURCE__", JSON.stringify(id2)).replaceAll("__ACCEPT_EXPORTS__", JSON.stringify(acceptExports)).replaceAll("__ROUTE_ID__", JSON.stringify(route?.id))
|
|
2406
2356
|
) + "\n";
|
|
2407
2357
|
}
|
|
2408
2358
|
function withCommentBoundaries(label, text) {
|
|
@@ -2415,7 +2365,7 @@ ${text}
|
|
|
2415
2365
|
${end}`;
|
|
2416
2366
|
}
|
|
2417
2367
|
var REACT_REFRESH_HEADER = `
|
|
2418
|
-
import RefreshRuntime from "${
|
|
2368
|
+
import RefreshRuntime from "${hmrRuntimeId}";
|
|
2419
2369
|
|
|
2420
2370
|
const inWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope;
|
|
2421
2371
|
let prevRefreshReg;
|
|
@@ -2501,7 +2451,7 @@ async function getPrerenderBuildAndHandler(viteConfig, reactRouterConfig, server
|
|
|
2501
2451
|
serverBuildDirectory,
|
|
2502
2452
|
reactRouterConfig.serverBuildFile
|
|
2503
2453
|
);
|
|
2504
|
-
let build = await import(
|
|
2454
|
+
let build = await import(url2.pathToFileURL(serverBuildPath).toString());
|
|
2505
2455
|
let { createRequestHandler: createHandler } = await import("react-router");
|
|
2506
2456
|
return {
|
|
2507
2457
|
build,
|
|
@@ -2724,6 +2674,8 @@ function createPrerenderRoutes(manifest, parentId = "", routesByParentId = group
|
|
|
2724
2674
|
loader: route.module.loader ? () => null : void 0,
|
|
2725
2675
|
action: void 0,
|
|
2726
2676
|
handle: route.module.handle
|
|
2677
|
+
// middleware is not necessary here since we just need to know which
|
|
2678
|
+
// routes have loaders so we know what paths to prerender
|
|
2727
2679
|
};
|
|
2728
2680
|
return route.index ? {
|
|
2729
2681
|
index: true,
|
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-e41ede670",
|
|
4
4
|
"description": "Dev tools and CLI for React Router",
|
|
5
5
|
"homepage": "https://reactrouter.com",
|
|
6
6
|
"bugs": {
|
|
@@ -80,8 +80,8 @@
|
|
|
80
80
|
"semver": "^7.3.7",
|
|
81
81
|
"set-cookie-parser": "^2.6.0",
|
|
82
82
|
"valibot": "^0.41.0",
|
|
83
|
-
"vite-node": "
|
|
84
|
-
"@react-router/node": "0.0.0-experimental-
|
|
83
|
+
"vite-node": "^1.6.0",
|
|
84
|
+
"@react-router/node": "0.0.0-experimental-e41ede670"
|
|
85
85
|
},
|
|
86
86
|
"devDependencies": {
|
|
87
87
|
"@types/babel__core": "^7.20.5",
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
"@types/gunzip-maybe": "^1.4.0",
|
|
94
94
|
"@types/jsesc": "^3.0.1",
|
|
95
95
|
"@types/lodash": "^4.14.182",
|
|
96
|
-
"@types/node": "^
|
|
96
|
+
"@types/node": "^18.17.1",
|
|
97
97
|
"@types/npmcli__package-json": "^4.0.0",
|
|
98
98
|
"@types/picomatch": "^2.3.0",
|
|
99
99
|
"@types/prettier": "^2.7.3",
|
|
@@ -107,18 +107,18 @@
|
|
|
107
107
|
"tiny-invariant": "^1.2.0",
|
|
108
108
|
"tsup": "^8.3.0",
|
|
109
109
|
"typescript": "^5.1.6",
|
|
110
|
-
"vite": "^
|
|
110
|
+
"vite": "^5.1.0",
|
|
111
111
|
"wireit": "0.14.9",
|
|
112
112
|
"wrangler": "^3.28.2",
|
|
113
|
-
"@react-router/serve": "0.0.0-experimental-
|
|
114
|
-
"react-router": "^0.0.0-experimental-
|
|
113
|
+
"@react-router/serve": "0.0.0-experimental-e41ede670",
|
|
114
|
+
"react-router": "^0.0.0-experimental-e41ede670"
|
|
115
115
|
},
|
|
116
116
|
"peerDependencies": {
|
|
117
117
|
"typescript": "^5.1.0",
|
|
118
|
-
"vite": "^5.1.0
|
|
118
|
+
"vite": "^5.1.0",
|
|
119
119
|
"wrangler": "^3.28.2",
|
|
120
|
-
"react-router": "^0.0.0-experimental-
|
|
121
|
-
"
|
|
120
|
+
"@react-router/serve": "^0.0.0-experimental-e41ede670",
|
|
121
|
+
"react-router": "^0.0.0-experimental-e41ede670"
|
|
122
122
|
},
|
|
123
123
|
"peerDependenciesMeta": {
|
|
124
124
|
"@react-router/serve": {
|