@react-router/dev 7.4.1 → 7.5.0-pre.0
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 +13 -0
- package/dist/cli/index.js +4 -2
- package/dist/config.d.ts +1 -0
- package/dist/config.js +1 -1
- package/dist/routes.js +1 -1
- package/dist/vite/cloudflare.js +2 -1
- package/dist/vite.js +44 -22
- package/package.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# `@react-router/dev`
|
|
2
2
|
|
|
3
|
+
## 7.5.0-pre.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Introduce `unstable_subResourceIntegrity` future flag that enables generation of an importmap with integrity for the scripts that will be loaded by the browser. ([#13163](https://github.com/remix-run/react-router/pull/13163))
|
|
8
|
+
- Update optional Wrangler peer dependency range to support Wrangler v4 ([#13258](https://github.com/remix-run/react-router/pull/13258))
|
|
9
|
+
- When `future.unstable_viteEnvironmentApi` is enabled, ensure critical CSS in development works when using a custom Vite `base` has been configured ([#13305](https://github.com/remix-run/react-router/pull/13305))
|
|
10
|
+
- Reinstate dependency optimization in the child compiler to fix `depsOptimizer is required in dev mode` errors when using `vite-plugin-cloudflare` and importing Node.js builtins ([#13317](https://github.com/remix-run/react-router/pull/13317))
|
|
11
|
+
- Updated dependencies:
|
|
12
|
+
- `react-router@7.5.0-pre.0`
|
|
13
|
+
- `@react-router/node@7.5.0-pre.0`
|
|
14
|
+
- `@react-router/serve@7.5.0-pre.0`
|
|
15
|
+
|
|
3
16
|
## 7.4.1
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
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.5.0-pre.0
|
|
4
4
|
*
|
|
5
5
|
* Copyright (c) Remix Software Inc.
|
|
6
6
|
*
|
|
@@ -419,6 +419,7 @@ async function resolveConfig({
|
|
|
419
419
|
unstable_middleware: reactRouterUserConfig.future?.unstable_middleware ?? false,
|
|
420
420
|
unstable_optimizeDeps: reactRouterUserConfig.future?.unstable_optimizeDeps ?? false,
|
|
421
421
|
unstable_splitRouteModules: reactRouterUserConfig.future?.unstable_splitRouteModules ?? false,
|
|
422
|
+
unstable_subResourceIntegrity: reactRouterUserConfig.future?.unstable_subResourceIntegrity ?? false,
|
|
422
423
|
unstable_viteEnvironmentApi: reactRouterUserConfig.future?.unstable_viteEnvironmentApi ?? false
|
|
423
424
|
};
|
|
424
425
|
let reactRouterConfig = deepFreeze({
|
|
@@ -1308,11 +1309,12 @@ function resolveEnvironmentsOptions(environmentResolvers, resolverOptions) {
|
|
|
1308
1309
|
function isNonNullable(x) {
|
|
1309
1310
|
return x != null;
|
|
1310
1311
|
}
|
|
1311
|
-
var import_node_crypto, path7, url, fse, babel2, import_react_router2, import_es_module_lexer, import_pick3, import_jsesc, import_picocolors4, import_kebabCase, CLIENT_NON_COMPONENT_EXPORTS, CLIENT_ROUTE_EXPORTS, BUILD_CLIENT_ROUTE_QUERY_STRING, SSR_BUNDLE_PREFIX, CSS_DEV_HELPER_ENVIRONMENT_NAME, virtualHmrRuntime, virtualInjectHmrRuntime, virtual2, getServerBuildDirectory, getClientBuildDirectory, defaultEntriesDir, defaultEntries, REACT_REFRESH_HEADER;
|
|
1312
|
+
var import_node_crypto, fs4, path7, url, fse, babel2, import_react_router2, import_es_module_lexer, import_pick3, import_jsesc, import_picocolors4, import_kebabCase, CLIENT_NON_COMPONENT_EXPORTS, CLIENT_ROUTE_EXPORTS, BUILD_CLIENT_ROUTE_QUERY_STRING, SSR_BUNDLE_PREFIX, CSS_DEV_HELPER_ENVIRONMENT_NAME, virtualHmrRuntime, virtualInjectHmrRuntime, virtual2, getServerBuildDirectory, getClientBuildDirectory, defaultEntriesDir, defaultEntries, REACT_REFRESH_HEADER;
|
|
1312
1313
|
var init_plugin = __esm({
|
|
1313
1314
|
"vite/plugin.ts"() {
|
|
1314
1315
|
"use strict";
|
|
1315
1316
|
import_node_crypto = require("crypto");
|
|
1317
|
+
fs4 = __toESM(require("fs"));
|
|
1316
1318
|
path7 = __toESM(require("path"));
|
|
1317
1319
|
url = __toESM(require("url"));
|
|
1318
1320
|
fse = __toESM(require("fs-extra"));
|
package/dist/config.d.ts
CHANGED
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.5.0-pre.0
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -512,6 +512,7 @@ async function resolveConfig({
|
|
|
512
512
|
unstable_middleware: reactRouterUserConfig.future?.unstable_middleware ?? false,
|
|
513
513
|
unstable_optimizeDeps: reactRouterUserConfig.future?.unstable_optimizeDeps ?? false,
|
|
514
514
|
unstable_splitRouteModules: reactRouterUserConfig.future?.unstable_splitRouteModules ?? false,
|
|
515
|
+
unstable_subResourceIntegrity: reactRouterUserConfig.future?.unstable_subResourceIntegrity ?? false,
|
|
515
516
|
unstable_viteEnvironmentApi: reactRouterUserConfig.future?.unstable_viteEnvironmentApi ?? false
|
|
516
517
|
};
|
|
517
518
|
let reactRouterConfig = deepFreeze({
|
package/dist/vite.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v7.
|
|
2
|
+
* @react-router/dev v7.5.0-pre.0
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -46,6 +46,7 @@ module.exports = __toCommonJS(vite_exports);
|
|
|
46
46
|
|
|
47
47
|
// vite/plugin.ts
|
|
48
48
|
var import_node_crypto = require("crypto");
|
|
49
|
+
var fs3 = __toESM(require("fs"));
|
|
49
50
|
var path6 = __toESM(require("path"));
|
|
50
51
|
var url = __toESM(require("url"));
|
|
51
52
|
var fse = __toESM(require("fs-extra"));
|
|
@@ -475,6 +476,7 @@ async function resolveConfig({
|
|
|
475
476
|
unstable_middleware: reactRouterUserConfig.future?.unstable_middleware ?? false,
|
|
476
477
|
unstable_optimizeDeps: reactRouterUserConfig.future?.unstable_optimizeDeps ?? false,
|
|
477
478
|
unstable_splitRouteModules: reactRouterUserConfig.future?.unstable_splitRouteModules ?? false,
|
|
479
|
+
unstable_subResourceIntegrity: reactRouterUserConfig.future?.unstable_subResourceIntegrity ?? false,
|
|
478
480
|
unstable_viteEnvironmentApi: reactRouterUserConfig.future?.unstable_viteEnvironmentApi ?? false
|
|
479
481
|
};
|
|
480
482
|
let reactRouterConfig = deepFreeze({
|
|
@@ -2371,7 +2373,7 @@ var reactRouterVitePlugin = () => {
|
|
|
2371
2373
|
export const unstable_getCriticalCss = ({ pathname }) => {
|
|
2372
2374
|
return {
|
|
2373
2375
|
rel: "stylesheet",
|
|
2374
|
-
href: "${
|
|
2376
|
+
href: "${ctx.publicPath}@react-router/critical.css?pathname=" + pathname,
|
|
2375
2377
|
};
|
|
2376
2378
|
}
|
|
2377
2379
|
` : ""}`;
|
|
@@ -2397,6 +2399,34 @@ var reactRouterVitePlugin = () => {
|
|
|
2397
2399
|
);
|
|
2398
2400
|
return /* @__PURE__ */ new Set([...cssUrlPaths, ...chunkAssetPaths]);
|
|
2399
2401
|
};
|
|
2402
|
+
let generateSriManifest = async (ctx2) => {
|
|
2403
|
+
let clientBuildDirectory = getClientBuildDirectory(ctx2.reactRouterConfig);
|
|
2404
|
+
let entries = fs3.readdirSync(clientBuildDirectory, {
|
|
2405
|
+
withFileTypes: true,
|
|
2406
|
+
recursive: true
|
|
2407
|
+
});
|
|
2408
|
+
let sriManifest = {};
|
|
2409
|
+
for (const entry of entries) {
|
|
2410
|
+
if (entry.isFile() && entry.name.endsWith(".js")) {
|
|
2411
|
+
let contents;
|
|
2412
|
+
try {
|
|
2413
|
+
contents = await fse.readFile(
|
|
2414
|
+
path6.join(entry.path, entry.name),
|
|
2415
|
+
"utf-8"
|
|
2416
|
+
);
|
|
2417
|
+
} catch (e) {
|
|
2418
|
+
logger.error(`Failed to read file for SRI generation: ${entry.name}`);
|
|
2419
|
+
throw e;
|
|
2420
|
+
}
|
|
2421
|
+
let hash = (0, import_node_crypto.createHash)("sha384").update(contents).digest().toString("base64");
|
|
2422
|
+
let filepath = getVite().normalizePath(
|
|
2423
|
+
path6.relative(clientBuildDirectory, path6.join(entry.path, entry.name))
|
|
2424
|
+
);
|
|
2425
|
+
sriManifest[`${ctx2.publicPath}${filepath}`] = `sha384-${hash}`;
|
|
2426
|
+
}
|
|
2427
|
+
}
|
|
2428
|
+
return sriManifest;
|
|
2429
|
+
};
|
|
2400
2430
|
let generateReactRouterManifestsForBuild = async ({
|
|
2401
2431
|
routeIds
|
|
2402
2432
|
}) => {
|
|
@@ -2501,7 +2531,8 @@ var reactRouterVitePlugin = () => {
|
|
|
2501
2531
|
let nonFingerprintedValues = { url: url2, version };
|
|
2502
2532
|
let reactRouterBrowserManifest = {
|
|
2503
2533
|
...fingerprintedValues,
|
|
2504
|
-
...nonFingerprintedValues
|
|
2534
|
+
...nonFingerprintedValues,
|
|
2535
|
+
sri: void 0
|
|
2505
2536
|
};
|
|
2506
2537
|
await writeFileSafe(
|
|
2507
2538
|
path6.join(getClientBuildDirectory(ctx.reactRouterConfig), manifestPath),
|
|
@@ -2509,9 +2540,14 @@ var reactRouterVitePlugin = () => {
|
|
|
2509
2540
|
reactRouterBrowserManifest
|
|
2510
2541
|
)};`
|
|
2511
2542
|
);
|
|
2543
|
+
let sri = void 0;
|
|
2544
|
+
if (ctx.reactRouterConfig.future.unstable_subResourceIntegrity) {
|
|
2545
|
+
sri = await generateSriManifest(ctx);
|
|
2546
|
+
}
|
|
2512
2547
|
let reactRouterServerManifest = {
|
|
2513
2548
|
...reactRouterBrowserManifest,
|
|
2514
|
-
routes: serverRoutes
|
|
2549
|
+
routes: serverRoutes,
|
|
2550
|
+
sri
|
|
2515
2551
|
};
|
|
2516
2552
|
return {
|
|
2517
2553
|
reactRouterBrowserManifest,
|
|
@@ -2581,6 +2617,7 @@ var reactRouterVitePlugin = () => {
|
|
|
2581
2617
|
imports: []
|
|
2582
2618
|
};
|
|
2583
2619
|
}
|
|
2620
|
+
let sri = void 0;
|
|
2584
2621
|
let reactRouterManifestForDev = {
|
|
2585
2622
|
version: String(Math.random()),
|
|
2586
2623
|
url: combineURLs(ctx.publicPath, virtual2.browserManifest.url),
|
|
@@ -2594,6 +2631,7 @@ var reactRouterVitePlugin = () => {
|
|
|
2594
2631
|
),
|
|
2595
2632
|
imports: []
|
|
2596
2633
|
},
|
|
2634
|
+
sri,
|
|
2597
2635
|
routes
|
|
2598
2636
|
};
|
|
2599
2637
|
currentReactRouterManifestForDev = reactRouterManifestForDev;
|
|
@@ -2862,23 +2900,7 @@ var reactRouterVitePlugin = () => {
|
|
|
2862
2900
|
...plugin2,
|
|
2863
2901
|
configureServer: void 0,
|
|
2864
2902
|
configurePreviewServer: void 0
|
|
2865
|
-
}))
|
|
2866
|
-
{
|
|
2867
|
-
name: "react-router:override-optimize-deps",
|
|
2868
|
-
config(userConfig) {
|
|
2869
|
-
if (ctx.reactRouterConfig.future.unstable_viteEnvironmentApi && userConfig.environments) {
|
|
2870
|
-
for (const environmentName of Object.keys(
|
|
2871
|
-
userConfig.environments
|
|
2872
|
-
)) {
|
|
2873
|
-
userConfig.environments[environmentName].optimizeDeps = {
|
|
2874
|
-
noDiscovery: true
|
|
2875
|
-
};
|
|
2876
|
-
}
|
|
2877
|
-
} else {
|
|
2878
|
-
userConfig.optimizeDeps = { noDiscovery: true };
|
|
2879
|
-
}
|
|
2880
|
-
}
|
|
2881
|
-
}
|
|
2903
|
+
}))
|
|
2882
2904
|
]
|
|
2883
2905
|
});
|
|
2884
2906
|
await viteChildCompiler.pluginContainer.buildStart({});
|
|
@@ -2962,7 +2984,7 @@ var reactRouterVitePlugin = () => {
|
|
|
2962
2984
|
if (ctx.reactRouterConfig.future.unstable_viteEnvironmentApi) {
|
|
2963
2985
|
viteDevServer.middlewares.use(async (req, res, next) => {
|
|
2964
2986
|
let [reqPathname, reqSearch] = (req.url ?? "").split("?");
|
|
2965
|
-
if (reqPathname ===
|
|
2987
|
+
if (reqPathname === `${ctx.publicPath}@react-router/critical.css`) {
|
|
2966
2988
|
let pathname = new URLSearchParams(reqSearch).get("pathname");
|
|
2967
2989
|
if (!pathname) {
|
|
2968
2990
|
return next("No pathname provided");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-router/dev",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.5.0-pre.0",
|
|
4
4
|
"description": "Dev tools and CLI for React Router",
|
|
5
5
|
"homepage": "https://reactrouter.com",
|
|
6
6
|
"bugs": {
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"set-cookie-parser": "^2.6.0",
|
|
87
87
|
"valibot": "^0.41.0",
|
|
88
88
|
"vite-node": "3.0.0-beta.2",
|
|
89
|
-
"@react-router/node": "7.
|
|
89
|
+
"@react-router/node": "7.5.0-pre.0"
|
|
90
90
|
},
|
|
91
91
|
"devDependencies": {
|
|
92
92
|
"@types/babel__core": "^7.20.5",
|
|
@@ -109,16 +109,16 @@
|
|
|
109
109
|
"typescript": "^5.1.6",
|
|
110
110
|
"vite": "^6.1.0",
|
|
111
111
|
"wireit": "0.14.9",
|
|
112
|
-
"wrangler": "^
|
|
113
|
-
"@react-router/serve": "7.
|
|
114
|
-
"react-router": "^7.
|
|
112
|
+
"wrangler": "^4.2.0",
|
|
113
|
+
"@react-router/serve": "7.5.0-pre.0",
|
|
114
|
+
"react-router": "^7.5.0-pre.0"
|
|
115
115
|
},
|
|
116
116
|
"peerDependencies": {
|
|
117
117
|
"typescript": "^5.1.0",
|
|
118
118
|
"vite": "^5.1.0 || ^6.0.0",
|
|
119
|
-
"wrangler": "^3.28.2",
|
|
120
|
-
"@react-router/serve": "^7.
|
|
121
|
-
"react-router": "^7.
|
|
119
|
+
"wrangler": "^3.28.2 || ^4.0.0",
|
|
120
|
+
"@react-router/serve": "^7.5.0-pre.0",
|
|
121
|
+
"react-router": "^7.5.0-pre.0"
|
|
122
122
|
},
|
|
123
123
|
"peerDependenciesMeta": {
|
|
124
124
|
"@react-router/serve": {
|