@react-router/dev 7.14.2 → 7.15.1
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 +38 -2
- package/dist/cli/index.js +32 -14
- package/dist/config.d.ts +12 -4
- package/dist/config.js +1 -1
- package/dist/routes.js +1 -1
- package/dist/vite/cloudflare.js +33 -15
- package/dist/vite.js +54 -33
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# `@react-router/dev`
|
|
2
2
|
|
|
3
|
+
## v7.15.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Fix `basename` conflicting with `app` directory name when Vite `base` is set ([#15027](https://github.com/remix-run/react-router/pull/15027))
|
|
8
|
+
|
|
9
|
+
When the Vite `base` config and React Router `basename` both match the
|
|
10
|
+
app directory name (e.g. `base: "/app/"`, `basename: "/app/"`), Vite would
|
|
11
|
+
strip the base prefix from server-build virtual module import paths, causing
|
|
12
|
+
"Failed to load url /root.tsx" errors. The fix uses `/@fs/` absolute paths
|
|
13
|
+
for those imports to bypass Vite's base-stripping logic.
|
|
14
|
+
- Updated dependencies:
|
|
15
|
+
- [`react-router@7.15.1`](https://github.com/remix-run/react-router/releases/tag/react-router@7.15.1)
|
|
16
|
+
- [`@react-router/node@7.15.1`](https://github.com/remix-run/react-router/releases/tag/@react-router/node@7.15.1)
|
|
17
|
+
- [`@react-router/serve@7.15.1`](https://github.com/remix-run/react-router/releases/tag/@react-router/serve@7.15.1)
|
|
18
|
+
|
|
19
|
+
## v7.15.0
|
|
20
|
+
|
|
21
|
+
### Minor Changes
|
|
22
|
+
|
|
23
|
+
- Stabilize `future.unstable_passThroughRequests` as `future.v8_passThroughRequests` ([a993f09](https://github.com/remix-run/react-router/commit/a993f09))
|
|
24
|
+
- ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
|
|
25
|
+
|
|
26
|
+
- Stabilize `prerender.unstable_concurrency` as `prerender.concurrency` ([a993f09](https://github.com/remix-run/react-router/commit/a993f09))
|
|
27
|
+
- ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
|
|
28
|
+
|
|
29
|
+
- Stabilize `future.unstable_subResourceIntegrity` as a top-level `subResourceIntegrity` config option in `react-router.config.ts` ([a993f09](https://github.com/remix-run/react-router/commit/a993f09))
|
|
30
|
+
- ⚠️ This is a breaking change if you have already opted into the unstable version - you will need to update your code accordingly
|
|
31
|
+
|
|
32
|
+
### Patch Changes
|
|
33
|
+
|
|
34
|
+
- Updated dependencies:
|
|
35
|
+
- [`react-router@7.15.0`](https://github.com/remix-run/react-router/releases/tag/react-router@7.15.0)
|
|
36
|
+
- [`@react-router/node@7.15.0`](https://github.com/remix-run/react-router/releases/tag/@react-router/node@7.15.0)
|
|
37
|
+
- [`@react-router/serve@7.15.0`](https://github.com/remix-run/react-router/releases/tag/@react-router/serve@7.15.0)
|
|
38
|
+
|
|
3
39
|
## v7.14.2
|
|
4
40
|
|
|
5
41
|
### Patch Changes
|
|
@@ -11,11 +47,11 @@
|
|
|
11
47
|
|
|
12
48
|
### Unstable Changes
|
|
13
49
|
|
|
14
|
-
⚠️
|
|
50
|
+
⚠️ _[Unstable features](https://reactrouter.com/community/api-development-strategy#unstable-flags) are not recommended for production use_
|
|
15
51
|
|
|
16
52
|
- For `unstable_reactRouterRSC` Vite plugin consumers, require `@vitejs/plugin-react` in user Vite config, and more reliably split route modules. ([#14965](https://github.com/remix-run/react-router/pull/14965)) ([[aabf4a1](https://github.com/remix-run/react-router/commit/aabf4a1))
|
|
17
|
-
|
|
18
53
|
- ⚠️ This is a breaking change if you have begun using the `unstable_reactRouterRSC` Vite plugin - please install `@vitejs/plugin-react` and add the `react` plugin to your Vite plugins array.
|
|
54
|
+
|
|
19
55
|
- Updated dependencies:
|
|
20
56
|
- [`react-router@7.14.2`](https://github.com/remix-run/react-router/releases/tag/react-router@7.14.2)
|
|
21
57
|
- [`@react-router/node@7.14.2`](https://github.com/remix-run/react-router/releases/tag/@react-router/node@7.14.2)
|
package/dist/cli/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* @react-router/dev v7.
|
|
3
|
+
* @react-router/dev v7.15.1
|
|
4
4
|
*
|
|
5
5
|
* Copyright (c) Remix Software Inc.
|
|
6
6
|
*
|
|
@@ -398,10 +398,15 @@ async function resolveConfig({
|
|
|
398
398
|
"The `prerender`/`prerender.paths` config must be a boolean, an array of string paths, or a function returning a boolean or array of string paths."
|
|
399
399
|
);
|
|
400
400
|
}
|
|
401
|
-
|
|
401
|
+
if (typeof prerender2 === "object" && "unstable_concurrency" in prerender2) {
|
|
402
|
+
return err(
|
|
403
|
+
"The `prerender.unstable_concurrency` config field has been stabilized as `prerender.concurrency`"
|
|
404
|
+
);
|
|
405
|
+
}
|
|
406
|
+
let isValidConcurrencyConfig = typeof prerender2 != "object" || !("concurrency" in prerender2) || typeof prerender2.concurrency === "number" && Number.isInteger(prerender2.concurrency) && prerender2.concurrency > 0;
|
|
402
407
|
if (!isValidConcurrencyConfig) {
|
|
403
408
|
return err(
|
|
404
|
-
"The `prerender.
|
|
409
|
+
"The `prerender.concurrency` config must be a positive integer if specified."
|
|
405
410
|
);
|
|
406
411
|
}
|
|
407
412
|
}
|
|
@@ -493,20 +498,31 @@ async function resolveConfig({
|
|
|
493
498
|
}
|
|
494
499
|
}
|
|
495
500
|
let futureConfig = userAndPresetConfigs.future;
|
|
496
|
-
if (futureConfig
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
501
|
+
if (futureConfig) {
|
|
502
|
+
if ("unstable_splitRouteModules" in futureConfig) {
|
|
503
|
+
return err(
|
|
504
|
+
"The `future.unstable_splitRouteModules` flag has been stabilized as `future.v8_splitRouteModules`"
|
|
505
|
+
);
|
|
506
|
+
}
|
|
507
|
+
if ("unstable_viteEnvironmentApi" in futureConfig) {
|
|
508
|
+
return err(
|
|
509
|
+
"The `future.unstable_viteEnvironmentApi` flag has been stabilized as `future.v8_viteEnvironmentApi`"
|
|
510
|
+
);
|
|
511
|
+
}
|
|
512
|
+
if ("unstable_passThroughRequests" in futureConfig) {
|
|
513
|
+
return err(
|
|
514
|
+
"The `future.unstable_passThroughRequests` flag has been stabilized as `future.v8_passThroughRequests`"
|
|
515
|
+
);
|
|
516
|
+
}
|
|
517
|
+
if ("unstable_subResourceIntegrity" in futureConfig) {
|
|
518
|
+
return err(
|
|
519
|
+
"The `future.unstable_subResourceIntegrity` flag has been stabilized and moved to a top-level `config.subResourceIntegrity` field"
|
|
520
|
+
);
|
|
521
|
+
}
|
|
505
522
|
}
|
|
506
523
|
let future = {
|
|
507
524
|
unstable_optimizeDeps: userAndPresetConfigs.future?.unstable_optimizeDeps ?? false,
|
|
508
|
-
|
|
509
|
-
unstable_subResourceIntegrity: userAndPresetConfigs.future?.unstable_subResourceIntegrity ?? false,
|
|
525
|
+
v8_passThroughRequests: userAndPresetConfigs.future?.v8_passThroughRequests ?? false,
|
|
510
526
|
unstable_trailingSlashAwareDataRequests: userAndPresetConfigs.future?.unstable_trailingSlashAwareDataRequests ?? false,
|
|
511
527
|
unstable_previewServerPrerendering: userAndPresetConfigs.future?.unstable_previewServerPrerendering ?? false,
|
|
512
528
|
v8_middleware: userAndPresetConfigs.future?.v8_middleware ?? false,
|
|
@@ -514,6 +530,7 @@ async function resolveConfig({
|
|
|
514
530
|
v8_viteEnvironmentApi: (userAndPresetConfigs.future?.v8_viteEnvironmentApi || userAndPresetConfigs.future?.unstable_previewServerPrerendering) ?? false
|
|
515
531
|
};
|
|
516
532
|
let allowedActionOrigins = userAndPresetConfigs.allowedActionOrigins ?? false;
|
|
533
|
+
let subResourceIntegrity = userAndPresetConfigs.subResourceIntegrity ?? false;
|
|
517
534
|
let reactRouterConfig = deepFreeze({
|
|
518
535
|
appDirectory,
|
|
519
536
|
basename: basename3,
|
|
@@ -527,6 +544,7 @@ async function resolveConfig({
|
|
|
527
544
|
serverBundles,
|
|
528
545
|
serverModuleFormat,
|
|
529
546
|
ssr,
|
|
547
|
+
subResourceIntegrity,
|
|
530
548
|
allowedActionOrigins,
|
|
531
549
|
unstable_routeConfig: routeConfig
|
|
532
550
|
});
|
package/dist/config.d.ts
CHANGED
|
@@ -38,8 +38,7 @@ type ServerBundlesBuildManifest = BaseBuildManifest & {
|
|
|
38
38
|
type ServerModuleFormat = "esm" | "cjs";
|
|
39
39
|
interface FutureConfig {
|
|
40
40
|
unstable_optimizeDeps: boolean;
|
|
41
|
-
|
|
42
|
-
unstable_subResourceIntegrity: boolean;
|
|
41
|
+
v8_passThroughRequests: boolean;
|
|
43
42
|
unstable_trailingSlashAwareDataRequests: boolean;
|
|
44
43
|
/**
|
|
45
44
|
* Prerender with Vite Preview server
|
|
@@ -103,7 +102,7 @@ type ReactRouterConfig = {
|
|
|
103
102
|
* An array of URLs to prerender to HTML files at build time. Can also be a
|
|
104
103
|
* function returning an array to dynamically generate URLs.
|
|
105
104
|
*
|
|
106
|
-
* `
|
|
105
|
+
* `concurrency` defaults to 1, which means "no concurrency" - fully serial execution.
|
|
107
106
|
* Setting it to a value more than 1 enables concurrent prerendering.
|
|
108
107
|
* Setting it to a value higher than one can increase the speed of the build,
|
|
109
108
|
* but may consume more resources, and send more concurrent requests to the
|
|
@@ -111,7 +110,7 @@ type ReactRouterConfig = {
|
|
|
111
110
|
*/
|
|
112
111
|
prerender?: PrerenderPaths | {
|
|
113
112
|
paths: PrerenderPaths;
|
|
114
|
-
|
|
113
|
+
concurrency?: number;
|
|
115
114
|
};
|
|
116
115
|
/**
|
|
117
116
|
* An array of React Router plugin config presets to ease integration with
|
|
@@ -153,6 +152,11 @@ type ReactRouterConfig = {
|
|
|
153
152
|
* SPA without server-rendering. Default's to `true`.
|
|
154
153
|
*/
|
|
155
154
|
ssr?: boolean;
|
|
155
|
+
/**
|
|
156
|
+
* Enable subresource integrity hashes on asset script tags. Defaults to
|
|
157
|
+
* `false`.
|
|
158
|
+
*/
|
|
159
|
+
subResourceIntegrity?: boolean;
|
|
156
160
|
/**
|
|
157
161
|
* An array of allowed origin hosts for action submissions to UI routes (does not apply
|
|
158
162
|
* to resource routes). Supports micromatch glob patterns (`*` to match one segment,
|
|
@@ -259,6 +263,10 @@ type ResolvedReactRouterConfig = Readonly<{
|
|
|
259
263
|
* SPA without server-rendering. Default's to `true`.
|
|
260
264
|
*/
|
|
261
265
|
ssr: boolean;
|
|
266
|
+
/**
|
|
267
|
+
* Whether to generate subresource integrity hashes for asset script tags.
|
|
268
|
+
*/
|
|
269
|
+
subResourceIntegrity: boolean;
|
|
262
270
|
/**
|
|
263
271
|
* The allowed origins for actions / mutations. Does not apply to routes
|
|
264
272
|
* without a component. micromatch glob patterns are supported.
|
package/dist/config.js
CHANGED
package/dist/routes.js
CHANGED
package/dist/vite/cloudflare.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v7.
|
|
2
|
+
* @react-router/dev v7.15.1
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -424,10 +424,15 @@ async function resolveConfig({
|
|
|
424
424
|
"The `prerender`/`prerender.paths` config must be a boolean, an array of string paths, or a function returning a boolean or array of string paths."
|
|
425
425
|
);
|
|
426
426
|
}
|
|
427
|
-
|
|
427
|
+
if (typeof prerender === "object" && "unstable_concurrency" in prerender) {
|
|
428
|
+
return err(
|
|
429
|
+
"The `prerender.unstable_concurrency` config field has been stabilized as `prerender.concurrency`"
|
|
430
|
+
);
|
|
431
|
+
}
|
|
432
|
+
let isValidConcurrencyConfig = typeof prerender != "object" || !("concurrency" in prerender) || typeof prerender.concurrency === "number" && Number.isInteger(prerender.concurrency) && prerender.concurrency > 0;
|
|
428
433
|
if (!isValidConcurrencyConfig) {
|
|
429
434
|
return err(
|
|
430
|
-
"The `prerender.
|
|
435
|
+
"The `prerender.concurrency` config must be a positive integer if specified."
|
|
431
436
|
);
|
|
432
437
|
}
|
|
433
438
|
}
|
|
@@ -519,20 +524,31 @@ async function resolveConfig({
|
|
|
519
524
|
}
|
|
520
525
|
}
|
|
521
526
|
let futureConfig = userAndPresetConfigs.future;
|
|
522
|
-
if (futureConfig
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
527
|
+
if (futureConfig) {
|
|
528
|
+
if ("unstable_splitRouteModules" in futureConfig) {
|
|
529
|
+
return err(
|
|
530
|
+
"The `future.unstable_splitRouteModules` flag has been stabilized as `future.v8_splitRouteModules`"
|
|
531
|
+
);
|
|
532
|
+
}
|
|
533
|
+
if ("unstable_viteEnvironmentApi" in futureConfig) {
|
|
534
|
+
return err(
|
|
535
|
+
"The `future.unstable_viteEnvironmentApi` flag has been stabilized as `future.v8_viteEnvironmentApi`"
|
|
536
|
+
);
|
|
537
|
+
}
|
|
538
|
+
if ("unstable_passThroughRequests" in futureConfig) {
|
|
539
|
+
return err(
|
|
540
|
+
"The `future.unstable_passThroughRequests` flag has been stabilized as `future.v8_passThroughRequests`"
|
|
541
|
+
);
|
|
542
|
+
}
|
|
543
|
+
if ("unstable_subResourceIntegrity" in futureConfig) {
|
|
544
|
+
return err(
|
|
545
|
+
"The `future.unstable_subResourceIntegrity` flag has been stabilized and moved to a top-level `config.subResourceIntegrity` field"
|
|
546
|
+
);
|
|
547
|
+
}
|
|
531
548
|
}
|
|
532
549
|
let future = {
|
|
533
550
|
unstable_optimizeDeps: userAndPresetConfigs.future?.unstable_optimizeDeps ?? false,
|
|
534
|
-
|
|
535
|
-
unstable_subResourceIntegrity: userAndPresetConfigs.future?.unstable_subResourceIntegrity ?? false,
|
|
551
|
+
v8_passThroughRequests: userAndPresetConfigs.future?.v8_passThroughRequests ?? false,
|
|
536
552
|
unstable_trailingSlashAwareDataRequests: userAndPresetConfigs.future?.unstable_trailingSlashAwareDataRequests ?? false,
|
|
537
553
|
unstable_previewServerPrerendering: userAndPresetConfigs.future?.unstable_previewServerPrerendering ?? false,
|
|
538
554
|
v8_middleware: userAndPresetConfigs.future?.v8_middleware ?? false,
|
|
@@ -540,6 +556,7 @@ async function resolveConfig({
|
|
|
540
556
|
v8_viteEnvironmentApi: (userAndPresetConfigs.future?.v8_viteEnvironmentApi || userAndPresetConfigs.future?.unstable_previewServerPrerendering) ?? false
|
|
541
557
|
};
|
|
542
558
|
let allowedActionOrigins = userAndPresetConfigs.allowedActionOrigins ?? false;
|
|
559
|
+
let subResourceIntegrity = userAndPresetConfigs.subResourceIntegrity ?? false;
|
|
543
560
|
let reactRouterConfig = deepFreeze({
|
|
544
561
|
appDirectory,
|
|
545
562
|
basename,
|
|
@@ -553,6 +570,7 @@ async function resolveConfig({
|
|
|
553
570
|
serverBundles,
|
|
554
571
|
serverModuleFormat,
|
|
555
572
|
ssr,
|
|
573
|
+
subResourceIntegrity,
|
|
556
574
|
allowedActionOrigins,
|
|
557
575
|
unstable_routeConfig: routeConfig
|
|
558
576
|
});
|
|
@@ -784,7 +802,7 @@ var serverBuildId = "virtual:react-router/server-build";
|
|
|
784
802
|
function importWrangler() {
|
|
785
803
|
try {
|
|
786
804
|
return import("wrangler");
|
|
787
|
-
} catch (
|
|
805
|
+
} catch (e) {
|
|
788
806
|
throw Error("Could not import `wrangler`. Do you have it installed?");
|
|
789
807
|
}
|
|
790
808
|
}
|
package/dist/vite.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v7.
|
|
2
|
+
* @react-router/dev v7.15.1
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -461,10 +461,15 @@ async function resolveConfig({
|
|
|
461
461
|
"The `prerender`/`prerender.paths` config must be a boolean, an array of string paths, or a function returning a boolean or array of string paths."
|
|
462
462
|
);
|
|
463
463
|
}
|
|
464
|
-
|
|
464
|
+
if (typeof prerender2 === "object" && "unstable_concurrency" in prerender2) {
|
|
465
|
+
return err(
|
|
466
|
+
"The `prerender.unstable_concurrency` config field has been stabilized as `prerender.concurrency`"
|
|
467
|
+
);
|
|
468
|
+
}
|
|
469
|
+
let isValidConcurrencyConfig = typeof prerender2 != "object" || !("concurrency" in prerender2) || typeof prerender2.concurrency === "number" && Number.isInteger(prerender2.concurrency) && prerender2.concurrency > 0;
|
|
465
470
|
if (!isValidConcurrencyConfig) {
|
|
466
471
|
return err(
|
|
467
|
-
"The `prerender.
|
|
472
|
+
"The `prerender.concurrency` config must be a positive integer if specified."
|
|
468
473
|
);
|
|
469
474
|
}
|
|
470
475
|
}
|
|
@@ -556,20 +561,31 @@ async function resolveConfig({
|
|
|
556
561
|
}
|
|
557
562
|
}
|
|
558
563
|
let futureConfig = userAndPresetConfigs.future;
|
|
559
|
-
if (futureConfig
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
564
|
+
if (futureConfig) {
|
|
565
|
+
if ("unstable_splitRouteModules" in futureConfig) {
|
|
566
|
+
return err(
|
|
567
|
+
"The `future.unstable_splitRouteModules` flag has been stabilized as `future.v8_splitRouteModules`"
|
|
568
|
+
);
|
|
569
|
+
}
|
|
570
|
+
if ("unstable_viteEnvironmentApi" in futureConfig) {
|
|
571
|
+
return err(
|
|
572
|
+
"The `future.unstable_viteEnvironmentApi` flag has been stabilized as `future.v8_viteEnvironmentApi`"
|
|
573
|
+
);
|
|
574
|
+
}
|
|
575
|
+
if ("unstable_passThroughRequests" in futureConfig) {
|
|
576
|
+
return err(
|
|
577
|
+
"The `future.unstable_passThroughRequests` flag has been stabilized as `future.v8_passThroughRequests`"
|
|
578
|
+
);
|
|
579
|
+
}
|
|
580
|
+
if ("unstable_subResourceIntegrity" in futureConfig) {
|
|
581
|
+
return err(
|
|
582
|
+
"The `future.unstable_subResourceIntegrity` flag has been stabilized and moved to a top-level `config.subResourceIntegrity` field"
|
|
583
|
+
);
|
|
584
|
+
}
|
|
568
585
|
}
|
|
569
586
|
let future = {
|
|
570
587
|
unstable_optimizeDeps: userAndPresetConfigs.future?.unstable_optimizeDeps ?? false,
|
|
571
|
-
|
|
572
|
-
unstable_subResourceIntegrity: userAndPresetConfigs.future?.unstable_subResourceIntegrity ?? false,
|
|
588
|
+
v8_passThroughRequests: userAndPresetConfigs.future?.v8_passThroughRequests ?? false,
|
|
573
589
|
unstable_trailingSlashAwareDataRequests: userAndPresetConfigs.future?.unstable_trailingSlashAwareDataRequests ?? false,
|
|
574
590
|
unstable_previewServerPrerendering: userAndPresetConfigs.future?.unstable_previewServerPrerendering ?? false,
|
|
575
591
|
v8_middleware: userAndPresetConfigs.future?.v8_middleware ?? false,
|
|
@@ -577,6 +593,7 @@ async function resolveConfig({
|
|
|
577
593
|
v8_viteEnvironmentApi: (userAndPresetConfigs.future?.v8_viteEnvironmentApi || userAndPresetConfigs.future?.unstable_previewServerPrerendering) ?? false
|
|
578
594
|
};
|
|
579
595
|
let allowedActionOrigins = userAndPresetConfigs.allowedActionOrigins ?? false;
|
|
596
|
+
let subResourceIntegrity = userAndPresetConfigs.subResourceIntegrity ?? false;
|
|
580
597
|
let reactRouterConfig = deepFreeze({
|
|
581
598
|
appDirectory,
|
|
582
599
|
basename: basename3,
|
|
@@ -590,6 +607,7 @@ async function resolveConfig({
|
|
|
590
607
|
serverBundles,
|
|
591
608
|
serverModuleFormat,
|
|
592
609
|
ssr,
|
|
610
|
+
subResourceIntegrity,
|
|
593
611
|
allowedActionOrigins,
|
|
594
612
|
unstable_routeConfig: routeConfig
|
|
595
613
|
});
|
|
@@ -1376,14 +1394,18 @@ var import_react_router = require("react-router");
|
|
|
1376
1394
|
|
|
1377
1395
|
// vite/resolve-file-url.ts
|
|
1378
1396
|
var path3 = __toESM(require("path"));
|
|
1379
|
-
var resolveFileUrl = ({ rootDirectory }, filePath) => {
|
|
1397
|
+
var resolveFileUrl = ({ rootDirectory }, filePath, { publicPath } = {}) => {
|
|
1380
1398
|
let vite2 = getVite();
|
|
1381
1399
|
let relativePath = path3.relative(rootDirectory, filePath);
|
|
1382
1400
|
let isWithinRoot = !relativePath.startsWith("..") && !path3.isAbsolute(relativePath);
|
|
1383
1401
|
if (!isWithinRoot) {
|
|
1384
1402
|
return path3.posix.join("/@fs", vite2.normalizePath(filePath));
|
|
1385
1403
|
}
|
|
1386
|
-
|
|
1404
|
+
let url2 = "/" + vite2.normalizePath(relativePath);
|
|
1405
|
+
if (publicPath && publicPath !== "/" && url2.startsWith(publicPath)) {
|
|
1406
|
+
return path3.posix.join("/@fs", vite2.normalizePath(filePath));
|
|
1407
|
+
}
|
|
1408
|
+
return url2;
|
|
1387
1409
|
};
|
|
1388
1410
|
|
|
1389
1411
|
// vite/styles.ts
|
|
@@ -1714,7 +1736,7 @@ function hasDependency({
|
|
|
1714
1736
|
}) {
|
|
1715
1737
|
try {
|
|
1716
1738
|
return Boolean(require.resolve(name, { paths: [rootDirectory] }));
|
|
1717
|
-
} catch (
|
|
1739
|
+
} catch (e) {
|
|
1718
1740
|
return false;
|
|
1719
1741
|
}
|
|
1720
1742
|
}
|
|
@@ -3134,7 +3156,9 @@ var reactRouterVitePlugin = () => {
|
|
|
3134
3156
|
let isSpaMode = isSpaModeEnabled(ctx.reactRouterConfig);
|
|
3135
3157
|
return `
|
|
3136
3158
|
import * as entryServer from ${JSON.stringify(
|
|
3137
|
-
resolveFileUrl(ctx, ctx.entryServerFilePath
|
|
3159
|
+
resolveFileUrl(ctx, ctx.entryServerFilePath, {
|
|
3160
|
+
publicPath: ctx.publicPath
|
|
3161
|
+
})
|
|
3138
3162
|
)};
|
|
3139
3163
|
${Object.keys(routes).map((key, index) => {
|
|
3140
3164
|
let route = routes[key];
|
|
@@ -3144,7 +3168,8 @@ var reactRouterVitePlugin = () => {
|
|
|
3144
3168
|
return `import * as route${index} from ${JSON.stringify(
|
|
3145
3169
|
resolveFileUrl(
|
|
3146
3170
|
ctx,
|
|
3147
|
-
resolveRelativeRouteFilePath(route, ctx.reactRouterConfig)
|
|
3171
|
+
resolveRelativeRouteFilePath(route, ctx.reactRouterConfig),
|
|
3172
|
+
{ publicPath: ctx.publicPath }
|
|
3148
3173
|
)
|
|
3149
3174
|
)};`;
|
|
3150
3175
|
}
|
|
@@ -3354,7 +3379,7 @@ var reactRouterVitePlugin = () => {
|
|
|
3354
3379
|
)};`
|
|
3355
3380
|
);
|
|
3356
3381
|
let sri = void 0;
|
|
3357
|
-
if (ctx.reactRouterConfig.
|
|
3382
|
+
if (ctx.reactRouterConfig.subResourceIntegrity) {
|
|
3358
3383
|
sri = await generateSriManifest(ctx);
|
|
3359
3384
|
}
|
|
3360
3385
|
let reactRouterServerManifest = {
|
|
@@ -4628,7 +4653,7 @@ ${html}`
|
|
|
4628
4653
|
},
|
|
4629
4654
|
async finalize(buildDirectory) {
|
|
4630
4655
|
invariant(viteConfig);
|
|
4631
|
-
let { ssr
|
|
4656
|
+
let { ssr } = ctx.reactRouterConfig;
|
|
4632
4657
|
if (!ssr) {
|
|
4633
4658
|
let spaFallback = path7.join(buildDirectory, "__spa-fallback.html");
|
|
4634
4659
|
let index = path7.join(buildDirectory, "index.html");
|
|
@@ -4928,8 +4953,8 @@ async function handlePrerender(viteConfig, reactRouterConfig, serverBuildDirecto
|
|
|
4928
4953
|
};
|
|
4929
4954
|
let concurrency = 1;
|
|
4930
4955
|
let { prerender: prerender2 } = reactRouterConfig;
|
|
4931
|
-
if (typeof prerender2 === "object" && "
|
|
4932
|
-
concurrency = prerender2.
|
|
4956
|
+
if (typeof prerender2 === "object" && "concurrency" in prerender2) {
|
|
4957
|
+
concurrency = prerender2.concurrency ?? 1;
|
|
4933
4958
|
}
|
|
4934
4959
|
const pMap = await import("p-map");
|
|
4935
4960
|
await pMap.default(build.prerender, prerenderSinglePath, { concurrency });
|
|
@@ -5611,8 +5636,8 @@ function assertPrerenderPathsMatchRoutes(config, prerenderPaths) {
|
|
|
5611
5636
|
function getPrerenderConcurrencyConfig(reactRouterConfig) {
|
|
5612
5637
|
let concurrency = 1;
|
|
5613
5638
|
let { prerender: prerender2 } = reactRouterConfig;
|
|
5614
|
-
if (typeof prerender2 === "object" && "
|
|
5615
|
-
concurrency = prerender2.
|
|
5639
|
+
if (typeof prerender2 === "object" && "concurrency" in prerender2) {
|
|
5640
|
+
concurrency = prerender2.concurrency ?? 1;
|
|
5616
5641
|
}
|
|
5617
5642
|
return concurrency;
|
|
5618
5643
|
}
|
|
@@ -6244,10 +6269,6 @@ function reactRouterRSCVitePlugin() {
|
|
|
6244
6269
|
([routeFile]) => import_pathe6.default.normalize(routeFile).endsWith(normalizedFile)
|
|
6245
6270
|
)?.[1];
|
|
6246
6271
|
}
|
|
6247
|
-
function isMdxRouteModule(filename2) {
|
|
6248
|
-
let extension = import_pathe6.default.extname(filename2).toLowerCase();
|
|
6249
|
-
return extension === ".md" || extension === ".mdx";
|
|
6250
|
-
}
|
|
6251
6272
|
function getTransformLanguage(filename2) {
|
|
6252
6273
|
let extension = import_pathe6.default.extname(filename2).toLowerCase();
|
|
6253
6274
|
switch (extension) {
|
|
@@ -6314,8 +6335,8 @@ function reactRouterRSCVitePlugin() {
|
|
|
6314
6335
|
errors.push("future.v8_middleware: false");
|
|
6315
6336
|
if (userConfig.future?.v8_viteEnvironmentApi === false)
|
|
6316
6337
|
errors.push("future.v8_viteEnvironmentApi: false");
|
|
6317
|
-
if (userConfig.
|
|
6318
|
-
errors.push("
|
|
6338
|
+
if (userConfig.subResourceIntegrity)
|
|
6339
|
+
errors.push("subResourceIntegrity");
|
|
6319
6340
|
if (errors.length) {
|
|
6320
6341
|
return `RSC Framework Mode does not currently support the following React Router config:
|
|
6321
6342
|
${errors.map((x) => ` - ${x}`).join("\n")}
|
|
@@ -6825,8 +6846,8 @@ var getClientBuildDirectory2 = (reactRouterConfig) => import_pathe6.default.join
|
|
|
6825
6846
|
function getPrerenderConcurrencyConfig2(reactRouterConfig) {
|
|
6826
6847
|
let concurrency = 1;
|
|
6827
6848
|
let { prerender: prerender2 } = reactRouterConfig;
|
|
6828
|
-
if (typeof prerender2 === "object" && "
|
|
6829
|
-
concurrency = prerender2.
|
|
6849
|
+
if (typeof prerender2 === "object" && "concurrency" in prerender2) {
|
|
6850
|
+
concurrency = prerender2.concurrency ?? 1;
|
|
6830
6851
|
}
|
|
6831
6852
|
return concurrency;
|
|
6832
6853
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-router/dev",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.15.1",
|
|
4
4
|
"description": "Dev tools and CLI for React Router",
|
|
5
5
|
"homepage": "https://reactrouter.com",
|
|
6
6
|
"bugs": {
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"tinyglobby": "^0.2.14",
|
|
93
93
|
"valibot": "^1.2.0",
|
|
94
94
|
"vite-node": "^3.2.2",
|
|
95
|
-
"@react-router/node": "7.
|
|
95
|
+
"@react-router/node": "7.15.1"
|
|
96
96
|
},
|
|
97
97
|
"devDependencies": {
|
|
98
98
|
"@types/babel__core": "^7.20.5",
|
|
@@ -116,8 +116,8 @@
|
|
|
116
116
|
"vite": "^6.3.0",
|
|
117
117
|
"wireit": "0.14.9",
|
|
118
118
|
"wrangler": "^4.23.0",
|
|
119
|
-
"@react-router/serve": "7.
|
|
120
|
-
"react-router": "^7.
|
|
119
|
+
"@react-router/serve": "7.15.1",
|
|
120
|
+
"react-router": "^7.15.1"
|
|
121
121
|
},
|
|
122
122
|
"peerDependencies": {
|
|
123
123
|
"@vitejs/plugin-rsc": "~0.5.21",
|
|
@@ -125,8 +125,8 @@
|
|
|
125
125
|
"typescript": "^5.1.0 || ^6.0.0",
|
|
126
126
|
"vite": "^5.1.0 || ^6.0.0 || ^7.0.0 || ^8.0.0",
|
|
127
127
|
"wrangler": "^3.28.2 || ^4.0.0",
|
|
128
|
-
"@react-router/serve": "^7.
|
|
129
|
-
"react-router": "^7.
|
|
128
|
+
"@react-router/serve": "^7.15.1",
|
|
129
|
+
"react-router": "^7.15.1"
|
|
130
130
|
},
|
|
131
131
|
"peerDependenciesMeta": {
|
|
132
132
|
"@vitejs/plugin-rsc": {
|