@react-router/dev 0.0.0-experimental-2e661fbb4 → 0.0.0-experimental-54614613e

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 CHANGED
@@ -1,5 +1,18 @@
1
1
  # `@react-router/dev`
2
2
 
3
+ ## 7.4.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Fix path in prerender error messages ([#13257](https://github.com/remix-run/react-router/pull/13257))
8
+ - Fix typegen for virtual modules when `moduleDetection` is set to `force` ([#13267](https://github.com/remix-run/react-router/pull/13267))
9
+ - When both `future.unstable_middleware` and `future.unstable_splitRouteModules` are enabled, split `unstable_clientMiddleware` route exports into separate chunks when possible ([#13210](https://github.com/remix-run/react-router/pull/13210))
10
+ - Improve performance of `future.unstable_middleware` by ensuring that route modules are only blocking during the middleware phase when the `unstable_clientMiddleware` has been defined ([#13210](https://github.com/remix-run/react-router/pull/13210))
11
+ - Updated dependencies:
12
+ - `react-router@7.4.1`
13
+ - `@react-router/node@7.4.1`
14
+ - `@react-router/serve@7.4.1`
15
+
3
16
  ## 7.4.0
4
17
 
5
18
  ### Minor Changes
@@ -254,7 +267,7 @@
254
267
  +import { cloudflareDevProxy } from "@react-router/dev/vite/cloudflare";
255
268
  ```
256
269
 
257
- - Remove single_fetch future flag. ([#11522](https://github.com/remix-run/react-router/pull/11522))
270
+ - Remove single fetch future flag. ([#11522](https://github.com/remix-run/react-router/pull/11522))
258
271
 
259
272
  - update minimum node version to 18 ([#11690](https://github.com/remix-run/react-router/pull/11690))
260
273
 
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-2e661fbb4
3
+ * @react-router/dev v0.0.0-experimental-54614613e
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
@@ -46,6 +46,7 @@ interface FutureConfig {
46
46
  * Automatically split route modules into multiple chunks when possible.
47
47
  */
48
48
  unstable_splitRouteModules: boolean | "enforce";
49
+ unstable_subResourceIntegrity: boolean;
49
50
  /**
50
51
  * Use Vite Environment API (experimental)
51
52
  */
package/dist/config.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-2e661fbb4
2
+ * @react-router/dev v0.0.0-experimental-54614613e
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
package/dist/routes.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-2e661fbb4
2
+ * @react-router/dev v0.0.0-experimental-54614613e
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/dev v0.0.0-experimental-2e661fbb4
2
+ * @react-router/dev v0.0.0-experimental-54614613e
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 v0.0.0-experimental-2e661fbb4
2
+ * @react-router/dev v0.0.0-experimental-54614613e
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({
@@ -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({});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-router/dev",
3
- "version": "0.0.0-experimental-2e661fbb4",
3
+ "version": "0.0.0-experimental-54614613e",
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": "0.0.0-experimental-2e661fbb4"
89
+ "@react-router/node": "0.0.0-experimental-54614613e"
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": "^3.109.2",
113
- "@react-router/serve": "0.0.0-experimental-2e661fbb4",
114
- "react-router": "^0.0.0-experimental-2e661fbb4"
112
+ "wrangler": "^4.2.0",
113
+ "react-router": "^0.0.0-experimental-54614613e",
114
+ "@react-router/serve": "0.0.0-experimental-54614613e"
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": "^0.0.0-experimental-2e661fbb4",
121
- "react-router": "^0.0.0-experimental-2e661fbb4"
119
+ "wrangler": "^3.28.2 || ^4.0.0",
120
+ "react-router": "^0.0.0-experimental-54614613e",
121
+ "@react-router/serve": "^0.0.0-experimental-54614613e"
122
122
  },
123
123
  "peerDependenciesMeta": {
124
124
  "@react-router/serve": {