react-router 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.
Files changed (36) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/development/{chunk-XJI4KG32.mjs → chunk-YTH545ZN.mjs} +244 -154
  3. package/dist/development/dom-export.d.mts +2 -2
  4. package/dist/development/dom-export.d.ts +2 -2
  5. package/dist/development/dom-export.js +246 -149
  6. package/dist/development/dom-export.mjs +14 -2
  7. package/dist/development/{fog-of-war-BjgPfDmv.d.mts → fog-of-war-1hWhK5ey.d.mts} +3 -1
  8. package/dist/{production/fog-of-war-BaM-ohjc.d.ts → development/fog-of-war-oa9CGk10.d.ts} +3 -1
  9. package/dist/development/index.d.mts +4 -4
  10. package/dist/development/index.d.ts +4 -4
  11. package/dist/development/index.js +244 -154
  12. package/dist/development/index.mjs +2 -2
  13. package/dist/development/lib/types/route-module.d.mts +1 -1
  14. package/dist/development/lib/types/route-module.d.ts +1 -1
  15. package/dist/development/lib/types/route-module.js +1 -1
  16. package/dist/development/lib/types/route-module.mjs +1 -1
  17. package/dist/development/{route-data-BL8ToWby.d.ts → route-data-5OzAzQtT.d.mts} +19 -14
  18. package/dist/{production/route-data-BL8ToWby.d.mts → development/route-data-5OzAzQtT.d.ts} +19 -14
  19. package/dist/production/{chunk-T6D7EGPT.mjs → chunk-RSOGH2WR.mjs} +244 -154
  20. package/dist/production/dom-export.d.mts +2 -2
  21. package/dist/production/dom-export.d.ts +2 -2
  22. package/dist/production/dom-export.js +246 -149
  23. package/dist/production/dom-export.mjs +14 -2
  24. package/dist/production/{fog-of-war-BjgPfDmv.d.mts → fog-of-war-1hWhK5ey.d.mts} +3 -1
  25. package/dist/{development/fog-of-war-BaM-ohjc.d.ts → production/fog-of-war-oa9CGk10.d.ts} +3 -1
  26. package/dist/production/index.d.mts +4 -4
  27. package/dist/production/index.d.ts +4 -4
  28. package/dist/production/index.js +244 -154
  29. package/dist/production/index.mjs +2 -2
  30. package/dist/production/lib/types/route-module.d.mts +1 -1
  31. package/dist/production/lib/types/route-module.d.ts +1 -1
  32. package/dist/production/lib/types/route-module.js +1 -1
  33. package/dist/production/lib/types/route-module.mjs +1 -1
  34. package/dist/production/{route-data-BL8ToWby.d.ts → route-data-5OzAzQtT.d.mts} +19 -14
  35. package/dist/{development/route-data-BL8ToWby.d.mts → production/route-data-5OzAzQtT.d.ts} +19 -14
  36. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v7.4.1
2
+ * react-router v7.5.0-pre.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -275,6 +275,19 @@ var unstable_RouterContextProvider = class {
275
275
  }
276
276
  };
277
277
  _map = new WeakMap();
278
+ var unsupportedLazyRouteObjectKeys = /* @__PURE__ */ new Set([
279
+ "lazy",
280
+ "caseSensitive",
281
+ "path",
282
+ "id",
283
+ "index",
284
+ "children"
285
+ ]);
286
+ function isUnsupportedLazyRouteObjectKey(key) {
287
+ return unsupportedLazyRouteObjectKeys.has(
288
+ key
289
+ );
290
+ }
278
291
  var unsupportedLazyRouteFunctionKeys = /* @__PURE__ */ new Set([
279
292
  "lazy",
280
293
  "caseSensitive",
@@ -282,9 +295,13 @@ var unsupportedLazyRouteFunctionKeys = /* @__PURE__ */ new Set([
282
295
  "id",
283
296
  "index",
284
297
  "unstable_middleware",
285
- "unstable_lazyMiddleware",
286
298
  "children"
287
299
  ]);
300
+ function isUnsupportedLazyRouteFunctionKey(key) {
301
+ return unsupportedLazyRouteFunctionKeys.has(
302
+ key
303
+ );
304
+ }
288
305
  function isIndexRoute(route) {
289
306
  return route.index === true;
290
307
  }
@@ -2823,79 +2840,139 @@ function isSameRoute(newRoute, existingRoute) {
2823
2840
  (aChild, i) => existingRoute.children?.some((bChild) => isSameRoute(aChild, bChild))
2824
2841
  );
2825
2842
  }
2826
- var lazyRouteFunctionCache = /* @__PURE__ */ new WeakMap();
2827
- async function loadLazyRouteModule(route, mapRouteProperties2, manifest) {
2843
+ var lazyRoutePropertyCache = /* @__PURE__ */ new WeakMap();
2844
+ var loadLazyRouteProperty = ({
2845
+ key,
2846
+ route,
2847
+ manifest,
2848
+ mapRouteProperties: mapRouteProperties2
2849
+ }) => {
2828
2850
  let routeToUpdate = manifest[route.id];
2829
2851
  invariant(routeToUpdate, "No route found in manifest");
2830
- if (!route.lazy) {
2852
+ if (!routeToUpdate.lazy || typeof routeToUpdate.lazy !== "object") {
2831
2853
  return;
2832
2854
  }
2833
- let cachedPromise = lazyRouteFunctionCache.get(routeToUpdate);
2834
- if (cachedPromise) {
2835
- await cachedPromise;
2855
+ let lazyFn = routeToUpdate.lazy[key];
2856
+ if (!lazyFn) {
2836
2857
  return;
2837
2858
  }
2838
- let lazyRoutePromise = route.lazy().then((lazyRoute) => {
2839
- let routeUpdates = {};
2840
- for (let lazyRouteProperty in lazyRoute) {
2841
- let staticRouteValue = routeToUpdate[lazyRouteProperty];
2842
- let isPropertyStaticallyDefined = staticRouteValue !== void 0 && // This property isn't static since it should always be updated based
2843
- // on the route updates
2844
- lazyRouteProperty !== "hasErrorBoundary";
2859
+ let cache = lazyRoutePropertyCache.get(routeToUpdate);
2860
+ if (!cache) {
2861
+ cache = {};
2862
+ lazyRoutePropertyCache.set(routeToUpdate, cache);
2863
+ }
2864
+ let cachedPromise = cache[key];
2865
+ if (cachedPromise) {
2866
+ return cachedPromise;
2867
+ }
2868
+ let propertyPromise = (async () => {
2869
+ let isUnsupported = isUnsupportedLazyRouteObjectKey(key);
2870
+ let staticRouteValue = routeToUpdate[key];
2871
+ let isStaticallyDefined = staticRouteValue !== void 0 && key !== "hasErrorBoundary";
2872
+ if (isUnsupported) {
2845
2873
  warning(
2846
- !isPropertyStaticallyDefined,
2847
- `Route "${routeToUpdate.id}" has a static property "${lazyRouteProperty}" defined but its lazy function is also returning a value for this property. The lazy route property "${lazyRouteProperty}" will be ignored.`
2874
+ !isUnsupported,
2875
+ "Route property " + key + " is not a supported lazy route property. This property will be ignored."
2848
2876
  );
2877
+ cache[key] = Promise.resolve();
2878
+ } else if (isStaticallyDefined) {
2849
2879
  warning(
2850
- !unsupportedLazyRouteFunctionKeys.has(
2851
- lazyRouteProperty
2852
- ),
2853
- "Route property " + lazyRouteProperty + " is not a supported property to be returned from a lazy route function. This property will be ignored."
2880
+ false,
2881
+ `Route "${routeToUpdate.id}" has a static property "${key}" defined. The lazy property will be ignored.`
2854
2882
  );
2855
- if (!isPropertyStaticallyDefined && !unsupportedLazyRouteFunctionKeys.has(
2856
- lazyRouteProperty
2857
- )) {
2858
- routeUpdates[lazyRouteProperty] = lazyRoute[lazyRouteProperty];
2883
+ } else {
2884
+ let value = await lazyFn();
2885
+ if (value != null) {
2886
+ Object.assign(routeToUpdate, { [key]: value });
2887
+ Object.assign(routeToUpdate, mapRouteProperties2(routeToUpdate));
2859
2888
  }
2860
2889
  }
2861
- Object.assign(routeToUpdate, routeUpdates);
2862
- Object.assign(routeToUpdate, {
2863
- // To keep things framework agnostic, we use the provided `mapRouteProperties`
2864
- // function to set the framework-aware properties (`element`/`hasErrorBoundary`)
2865
- // since the logic will differ between frameworks.
2866
- ...mapRouteProperties2(routeToUpdate),
2867
- lazy: void 0
2868
- });
2869
- });
2870
- lazyRouteFunctionCache.set(routeToUpdate, lazyRoutePromise);
2871
- await lazyRoutePromise;
2872
- }
2873
- async function loadLazyMiddleware(route, manifest) {
2874
- if (!route.unstable_lazyMiddleware) {
2875
- return;
2876
- }
2890
+ if (typeof routeToUpdate.lazy === "object") {
2891
+ routeToUpdate.lazy[key] = void 0;
2892
+ if (Object.values(routeToUpdate.lazy).every((value) => value === void 0)) {
2893
+ routeToUpdate.lazy = void 0;
2894
+ }
2895
+ }
2896
+ })();
2897
+ cache[key] = propertyPromise;
2898
+ return propertyPromise;
2899
+ };
2900
+ var lazyRouteFunctionCache = /* @__PURE__ */ new WeakMap();
2901
+ async function loadLazyRoute(route, manifest, mapRouteProperties2) {
2877
2902
  let routeToUpdate = manifest[route.id];
2878
2903
  invariant(routeToUpdate, "No route found in manifest");
2879
- if (routeToUpdate.unstable_middleware) {
2880
- warning(
2881
- false,
2882
- `Route "${routeToUpdate.id}" has a static property "unstable_middleware" defined. The "unstable_lazyMiddleware" function will be ignored.`
2883
- );
2884
- } else {
2885
- let middleware = await route.unstable_lazyMiddleware();
2886
- if (!route.unstable_lazyMiddleware) {
2904
+ if (!route.lazy) {
2905
+ return;
2906
+ }
2907
+ if (typeof route.lazy === "function") {
2908
+ let cachedPromise = lazyRouteFunctionCache.get(routeToUpdate);
2909
+ if (cachedPromise) {
2910
+ await cachedPromise;
2887
2911
  return;
2888
2912
  }
2889
- if (!routeToUpdate.unstable_middleware) {
2890
- routeToUpdate.unstable_middleware = middleware;
2891
- }
2913
+ let lazyRoutePromise = route.lazy().then((lazyRoute) => {
2914
+ let routeUpdates = {};
2915
+ for (let lazyRouteProperty in lazyRoute) {
2916
+ let lazyValue = lazyRoute[lazyRouteProperty];
2917
+ if (lazyValue === void 0) {
2918
+ continue;
2919
+ }
2920
+ let isUnsupported = isUnsupportedLazyRouteFunctionKey(lazyRouteProperty);
2921
+ let staticRouteValue = routeToUpdate[lazyRouteProperty];
2922
+ let isStaticallyDefined = staticRouteValue !== void 0 && // This property isn't static since it should always be updated based
2923
+ // on the route updates
2924
+ lazyRouteProperty !== "hasErrorBoundary";
2925
+ if (isUnsupported) {
2926
+ warning(
2927
+ !isUnsupported,
2928
+ "Route property " + lazyRouteProperty + " is not a supported property to be returned from a lazy route function. This property will be ignored."
2929
+ );
2930
+ } else if (isStaticallyDefined) {
2931
+ warning(
2932
+ !isStaticallyDefined,
2933
+ `Route "${routeToUpdate.id}" has a static property "${lazyRouteProperty}" defined but its lazy function is also returning a value for this property. The lazy route property "${lazyRouteProperty}" will be ignored.`
2934
+ );
2935
+ } else {
2936
+ routeUpdates[lazyRouteProperty] = lazyValue;
2937
+ }
2938
+ }
2939
+ Object.assign(routeToUpdate, routeUpdates);
2940
+ Object.assign(routeToUpdate, {
2941
+ // To keep things framework agnostic, we use the provided `mapRouteProperties`
2942
+ // function to set the framework-aware properties (`element`/`hasErrorBoundary`)
2943
+ // since the logic will differ between frameworks.
2944
+ ...mapRouteProperties2(routeToUpdate),
2945
+ lazy: void 0
2946
+ });
2947
+ });
2948
+ lazyRouteFunctionCache.set(routeToUpdate, lazyRoutePromise);
2949
+ await lazyRoutePromise;
2950
+ return;
2892
2951
  }
2893
- routeToUpdate.unstable_lazyMiddleware = void 0;
2952
+ let lazyKeys = Object.keys(route.lazy);
2953
+ await Promise.all(
2954
+ lazyKeys.map(
2955
+ (key) => loadLazyRouteProperty({
2956
+ key,
2957
+ route,
2958
+ manifest,
2959
+ mapRouteProperties: mapRouteProperties2
2960
+ })
2961
+ )
2962
+ );
2894
2963
  }
2895
- function loadLazyMiddlewareForMatches(matches, manifest) {
2896
- let promises = matches.map(
2897
- (m) => m.route.unstable_lazyMiddleware ? loadLazyMiddleware(m.route, manifest) : void 0
2898
- ).filter(Boolean);
2964
+ function loadLazyMiddlewareForMatches(matches, manifest, mapRouteProperties2) {
2965
+ let promises = matches.map(({ route }) => {
2966
+ if (typeof route.lazy !== "object" || !route.lazy.unstable_middleware) {
2967
+ return void 0;
2968
+ }
2969
+ return loadLazyRouteProperty({
2970
+ key: "unstable_middleware",
2971
+ route,
2972
+ manifest,
2973
+ mapRouteProperties: mapRouteProperties2
2974
+ });
2975
+ }).filter((p) => p != null);
2899
2976
  return promises.length > 0 ? Promise.all(promises) : void 0;
2900
2977
  }
2901
2978
  async function defaultDataStrategy(args) {
@@ -3013,15 +3090,19 @@ async function callRouteMiddleware(args, middlewares, propagateResult, middlewar
3013
3090
  }
3014
3091
  }
3015
3092
  async function callDataStrategyImpl(dataStrategyImpl, type, request, matchesToLoad, matches, fetcherKey, manifest, mapRouteProperties2, scopedContext) {
3016
- let loadMiddlewarePromise = loadLazyMiddlewareForMatches(matches, manifest);
3017
- let loadRouteDefinitionsPromises = matches.map(
3018
- (m) => m.route.lazy ? loadLazyRouteModule(m.route, mapRouteProperties2, manifest) : void 0
3093
+ let loadMiddlewarePromise = loadLazyMiddlewareForMatches(
3094
+ matches,
3095
+ manifest,
3096
+ mapRouteProperties2
3097
+ );
3098
+ let loadLazyRoutePromises = matches.map(
3099
+ (m) => m.route.lazy ? loadLazyRoute(m.route, manifest, mapRouteProperties2) : void 0
3019
3100
  );
3020
3101
  if (loadMiddlewarePromise) {
3021
3102
  await loadMiddlewarePromise;
3022
3103
  }
3023
3104
  let dsMatches = matches.map((match, i) => {
3024
- let loadRoutePromise = loadRouteDefinitionsPromises[i];
3105
+ let loadRoutePromise = loadLazyRoutePromises[i];
3025
3106
  let shouldLoad = matchesToLoad.some((m) => m.route.id === match.route.id);
3026
3107
  let resolve = async (handlerOverride) => {
3027
3108
  if (handlerOverride && request.method === "GET" && (match.route.lazy || match.route.loader)) {
@@ -3050,7 +3131,7 @@ async function callDataStrategyImpl(dataStrategyImpl, type, request, matchesToLo
3050
3131
  context: scopedContext
3051
3132
  });
3052
3133
  try {
3053
- await Promise.all(loadRouteDefinitionsPromises);
3134
+ await Promise.all(loadLazyRoutePromises);
3054
3135
  } catch (e) {
3055
3136
  }
3056
3137
  return results;
@@ -5210,22 +5291,6 @@ function createClientRoutes(manifest, routeModulesCache, initialState, ssr, isSp
5210
5291
  dataRoute.loader = (_, singleFetch) => prefetchStylesAndCallHandler(() => {
5211
5292
  return fetchServerLoader(singleFetch);
5212
5293
  });
5213
- } else if (route.clientLoaderModule) {
5214
- dataRoute.loader = async (args, singleFetch) => {
5215
- invariant2(route.clientLoaderModule);
5216
- let { clientLoader } = await import(
5217
- /* @vite-ignore */
5218
- /* webpackIgnore: true */
5219
- route.clientLoaderModule
5220
- );
5221
- return clientLoader({
5222
- ...args,
5223
- async serverLoader() {
5224
- preventInvalidServerHandlerCall("loader", route);
5225
- return fetchServerLoader(singleFetch);
5226
- }
5227
- });
5228
- };
5229
5294
  }
5230
5295
  if (!route.hasClientAction) {
5231
5296
  dataRoute.action = (_, singleFetch) => prefetchStylesAndCallHandler(() => {
@@ -5234,86 +5299,84 @@ function createClientRoutes(manifest, routeModulesCache, initialState, ssr, isSp
5234
5299
  }
5235
5300
  return fetchServerAction(singleFetch);
5236
5301
  });
5237
- } else if (route.clientActionModule) {
5238
- dataRoute.action = async (args, singleFetch) => {
5239
- invariant2(route.clientActionModule);
5240
- prefetchRouteModuleChunks(route);
5241
- let { clientAction } = await import(
5242
- /* @vite-ignore */
5243
- /* webpackIgnore: true */
5244
- route.clientActionModule
5302
+ }
5303
+ let lazyRoutePromise;
5304
+ async function getLazyRoute() {
5305
+ if (lazyRoutePromise) {
5306
+ return await lazyRoutePromise;
5307
+ }
5308
+ lazyRoutePromise = (async () => {
5309
+ if (route.clientLoaderModule || route.clientActionModule) {
5310
+ await new Promise((resolve) => setTimeout(resolve, 0));
5311
+ }
5312
+ let routeModulePromise = loadRouteModuleWithBlockingLinks(
5313
+ route,
5314
+ routeModulesCache
5245
5315
  );
5246
- return clientAction({
5247
- ...args,
5248
- async serverAction() {
5249
- preventInvalidServerHandlerCall("action", route);
5250
- return fetchServerAction(singleFetch);
5251
- }
5252
- });
5253
- };
5316
+ prefetchRouteModuleChunks(route);
5317
+ return await routeModulePromise;
5318
+ })();
5319
+ return await lazyRoutePromise;
5254
5320
  }
5255
- if (route.hasClientMiddleware) {
5256
- dataRoute.unstable_lazyMiddleware = async () => {
5257
- invariant2(route);
5258
- let clientMiddlewareModule = await import(
5321
+ dataRoute.lazy = {
5322
+ loader: route.hasClientLoader ? async () => {
5323
+ let { clientLoader } = route.clientLoaderModule ? await import(
5259
5324
  /* @vite-ignore */
5260
5325
  /* webpackIgnore: true */
5261
- route.clientMiddlewareModule || route.module
5262
- );
5263
- invariant2(
5264
- clientMiddlewareModule?.unstable_clientMiddleware,
5265
- "No `unstable_clientMiddleware` export in chunk"
5266
- );
5267
- return clientMiddlewareModule.unstable_clientMiddleware;
5268
- };
5269
- }
5270
- dataRoute.lazy = async () => {
5271
- if (route.clientLoaderModule || route.clientActionModule) {
5272
- await new Promise((resolve) => setTimeout(resolve, 0));
5273
- }
5274
- let modPromise = loadRouteModuleWithBlockingLinks(
5275
- route,
5276
- routeModulesCache
5277
- );
5278
- prefetchRouteModuleChunks(route);
5279
- let mod = await modPromise;
5280
- let lazyRoute = { ...mod };
5281
- if (mod.clientLoader) {
5282
- let clientLoader = mod.clientLoader;
5283
- lazyRoute.loader = (args, singleFetch) => clientLoader({
5326
+ route.clientLoaderModule
5327
+ ) : await getLazyRoute();
5328
+ invariant2(clientLoader, "No `clientLoader` export found");
5329
+ return (args, singleFetch) => clientLoader({
5284
5330
  ...args,
5285
5331
  async serverLoader() {
5286
5332
  preventInvalidServerHandlerCall("loader", route);
5287
5333
  return fetchServerLoader(singleFetch);
5288
5334
  }
5289
5335
  });
5290
- }
5291
- if (mod.clientAction) {
5292
- let clientAction = mod.clientAction;
5293
- lazyRoute.action = (args, singleFetch) => clientAction({
5336
+ } : void 0,
5337
+ action: route.hasClientAction ? async () => {
5338
+ let clientActionPromise = route.clientActionModule ? import(
5339
+ /* @vite-ignore */
5340
+ /* webpackIgnore: true */
5341
+ route.clientActionModule
5342
+ ) : getLazyRoute();
5343
+ prefetchRouteModuleChunks(route);
5344
+ let { clientAction } = await clientActionPromise;
5345
+ invariant2(clientAction, "No `clientAction` export found");
5346
+ return (args, singleFetch) => clientAction({
5294
5347
  ...args,
5295
5348
  async serverAction() {
5296
5349
  preventInvalidServerHandlerCall("action", route);
5297
5350
  return fetchServerAction(singleFetch);
5298
5351
  }
5299
5352
  });
5300
- }
5301
- return {
5302
- ...lazyRoute.loader ? { loader: lazyRoute.loader } : {},
5303
- ...lazyRoute.action ? { action: lazyRoute.action } : {},
5304
- hasErrorBoundary: lazyRoute.hasErrorBoundary,
5305
- shouldRevalidate: getShouldRevalidateFunction(
5353
+ } : void 0,
5354
+ unstable_middleware: route.hasClientMiddleware ? async () => {
5355
+ let { unstable_clientMiddleware } = route.clientMiddlewareModule ? await import(
5356
+ /* @vite-ignore */
5357
+ /* webpackIgnore: true */
5358
+ route.clientMiddlewareModule
5359
+ ) : await getLazyRoute();
5360
+ invariant2(
5361
+ unstable_clientMiddleware,
5362
+ "No `unstable_clientMiddleware` export found"
5363
+ );
5364
+ return unstable_clientMiddleware;
5365
+ } : void 0,
5366
+ shouldRevalidate: async () => {
5367
+ let lazyRoute = await getLazyRoute();
5368
+ return getShouldRevalidateFunction(
5306
5369
  lazyRoute,
5307
5370
  route,
5308
5371
  ssr,
5309
5372
  needsRevalidation
5310
- ),
5311
- handle: lazyRoute.handle,
5312
- // No need to wrap these in layout since the root route is never
5313
- // loaded via route.lazy()
5314
- Component: lazyRoute.Component,
5315
- ErrorBoundary: lazyRoute.ErrorBoundary
5316
- };
5373
+ );
5374
+ },
5375
+ handle: async () => (await getLazyRoute()).handle,
5376
+ // No need to wrap these in layout since the root route is never
5377
+ // loaded via route.lazy()
5378
+ Component: async () => (await getLazyRoute()).Component,
5379
+ ErrorBoundary: route.hasErrorBoundary ? async () => (await getLazyRoute()).ErrorBoundary : void 0
5317
5380
  };
5318
5381
  }
5319
5382
  let children = createClientRoutes(
@@ -5401,7 +5464,7 @@ var URL_LIMIT = 7680;
5401
5464
  function isFogOfWarEnabled(ssr) {
5402
5465
  return ssr === true;
5403
5466
  }
5404
- function getPartialManifest(manifest, router2) {
5467
+ function getPartialManifest({ sri, ...manifest }, router2) {
5405
5468
  let routeIds = new Set(router2.state.matches.map((m) => m.route.id));
5406
5469
  let segments = router2.state.location.pathname.split("/").filter(Boolean);
5407
5470
  let paths = ["/"];
@@ -5422,7 +5485,8 @@ function getPartialManifest(manifest, router2) {
5422
5485
  );
5423
5486
  return {
5424
5487
  ...manifest,
5425
- routes: initialRoutes
5488
+ routes: initialRoutes,
5489
+ sri: sri ? true : void 0
5426
5490
  };
5427
5491
  }
5428
5492
  function getPatchRoutesOnNavigationFunction(manifest, routeModules, ssr, isSpaMode, basename) {
@@ -5709,32 +5773,53 @@ import(${JSON.stringify(manifest.entry.module)});`;
5709
5773
  }
5710
5774
  ));
5711
5775
  }, []);
5712
- let preloads = isHydrated ? [] : manifest.entry.imports.concat(
5713
- getModuleLinkHrefs(matches, manifest, {
5714
- includeHydrateFallback: true
5715
- })
5776
+ let preloads = isHydrated ? [] : dedupe(
5777
+ manifest.entry.imports.concat(
5778
+ getModuleLinkHrefs(matches, manifest, {
5779
+ includeHydrateFallback: true
5780
+ })
5781
+ )
5716
5782
  );
5717
- return isHydrated ? null : /* @__PURE__ */ React9.createElement(React9.Fragment, null, !enableFogOfWar ? /* @__PURE__ */ React9.createElement(
5783
+ let sri = typeof manifest.sri === "object" ? manifest.sri : {};
5784
+ return isHydrated ? null : /* @__PURE__ */ React9.createElement(React9.Fragment, null, typeof manifest.sri === "object" ? /* @__PURE__ */ React9.createElement(
5785
+ "script",
5786
+ {
5787
+ "rr-importmap": "",
5788
+ type: "importmap",
5789
+ suppressHydrationWarning: true,
5790
+ dangerouslySetInnerHTML: {
5791
+ __html: JSON.stringify({
5792
+ integrity: sri
5793
+ })
5794
+ }
5795
+ }
5796
+ ) : null, !enableFogOfWar ? /* @__PURE__ */ React9.createElement(
5718
5797
  "link",
5719
5798
  {
5720
5799
  rel: "modulepreload",
5721
5800
  href: manifest.url,
5722
- crossOrigin: props.crossOrigin
5801
+ crossOrigin: props.crossOrigin,
5802
+ integrity: sri[manifest.url],
5803
+ suppressHydrationWarning: true
5723
5804
  }
5724
5805
  ) : null, /* @__PURE__ */ React9.createElement(
5725
5806
  "link",
5726
5807
  {
5727
5808
  rel: "modulepreload",
5728
5809
  href: manifest.entry.module,
5729
- crossOrigin: props.crossOrigin
5810
+ crossOrigin: props.crossOrigin,
5811
+ integrity: sri[manifest.entry.module],
5812
+ suppressHydrationWarning: true
5730
5813
  }
5731
- ), dedupe(preloads).map((path) => /* @__PURE__ */ React9.createElement(
5814
+ ), preloads.map((path) => /* @__PURE__ */ React9.createElement(
5732
5815
  "link",
5733
5816
  {
5734
5817
  key: path,
5735
5818
  rel: "modulepreload",
5736
5819
  href: path,
5737
- crossOrigin: props.crossOrigin
5820
+ crossOrigin: props.crossOrigin,
5821
+ integrity: sri[path],
5822
+ suppressHydrationWarning: true
5738
5823
  }
5739
5824
  )), initialScripts);
5740
5825
  }
@@ -5790,6 +5875,18 @@ var ssrInfo = null;
5790
5875
  var router = null;
5791
5876
  function initSsrInfo() {
5792
5877
  if (!ssrInfo && window.__reactRouterContext && window.__reactRouterManifest && window.__reactRouterRouteModules) {
5878
+ if (window.__reactRouterManifest.sri === true) {
5879
+ const importMap = document.querySelector("script[rr-importmap]");
5880
+ if (importMap?.textContent) {
5881
+ try {
5882
+ window.__reactRouterManifest.sri = JSON.parse(
5883
+ importMap.textContent
5884
+ ).integrity;
5885
+ } catch (err) {
5886
+ console.error("Failed to parse import map", err);
5887
+ }
5888
+ }
5889
+ }
5793
5890
  ssrInfo = {
5794
5891
  context: window.__reactRouterContext,
5795
5892
  manifest: window.__reactRouterManifest,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v7.4.1
2
+ * react-router v7.5.0-pre.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -25,7 +25,7 @@ import {
25
25
  matchRoutes,
26
26
  shouldHydrateRouteLoader,
27
27
  useFogOFWarDiscovery
28
- } from "./chunk-XJI4KG32.mjs";
28
+ } from "./chunk-YTH545ZN.mjs";
29
29
 
30
30
  // lib/dom-export/dom-router-provider.tsx
31
31
  import * as React from "react";
@@ -40,6 +40,18 @@ var ssrInfo = null;
40
40
  var router = null;
41
41
  function initSsrInfo() {
42
42
  if (!ssrInfo && window.__reactRouterContext && window.__reactRouterManifest && window.__reactRouterRouteModules) {
43
+ if (window.__reactRouterManifest.sri === true) {
44
+ const importMap = document.querySelector("script[rr-importmap]");
45
+ if (importMap?.textContent) {
46
+ try {
47
+ window.__reactRouterManifest.sri = JSON.parse(
48
+ importMap.textContent
49
+ ).integrity;
50
+ } catch (err) {
51
+ console.error("Failed to parse import map", err);
52
+ }
53
+ }
54
+ }
43
55
  ssrInfo = {
44
56
  context: window.__reactRouterContext,
45
57
  manifest: window.__reactRouterManifest,
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { k as RouteObject, R as RouterInit, F as FutureConfig$1, H as HydrationState, I as InitialEntry, D as DataStrategyFunction, ar as PatchRoutesOnNavigationFunction, b as Router$1, T as To, d as RelativeRoutingType, x as NonIndexRouteObject, a2 as LazyRouteFunction, s as IndexRouteObject, e as Location, f as Action, aq as Navigator, at as RouteMatch, p as StaticHandlerContext, c as RouteManifest, a as RouteModules, ap as DataRouteObject, aR as RouteModule, a1 as HTMLFormMethod, $ as FormEncType, aC as PageLinkDescriptor, aS as History, z as GetScrollRestorationKeyFunction, N as NavigateOptions, J as Fetcher, n as SerializeFrom, B as BlockerFunction } from './route-data-BL8ToWby.mjs';
2
+ import { k as RouteObject, R as RouterInit, F as FutureConfig$1, H as HydrationState, I as InitialEntry, D as DataStrategyFunction, ar as PatchRoutesOnNavigationFunction, b as Router$1, T as To, d as RelativeRoutingType, x as NonIndexRouteObject, a2 as LazyRouteFunction, s as IndexRouteObject, e as Location, f as Action, aq as Navigator, at as RouteMatch, p as StaticHandlerContext, c as RouteManifest, a as RouteModules, ap as DataRouteObject, aR as RouteModule, a1 as HTMLFormMethod, $ as FormEncType, aC as PageLinkDescriptor, aS as History, z as GetScrollRestorationKeyFunction, N as NavigateOptions, J as Fetcher, n as SerializeFrom, B as BlockerFunction } from './route-data-5OzAzQtT.mjs';
3
3
 
4
4
  /**
5
5
  * @private
@@ -440,6 +440,7 @@ interface EntryContext extends FrameworkContextObject {
440
440
  serverHandoffStream?: ReadableStream<Uint8Array>;
441
441
  }
442
442
  interface FutureConfig {
443
+ unstable_subResourceIntegrity: boolean;
443
444
  unstable_middleware: boolean;
444
445
  }
445
446
  type CriticalCss = string | {
@@ -458,6 +459,7 @@ interface AssetsManifest {
458
459
  timestamp?: number;
459
460
  runtime: string;
460
461
  };
462
+ sri?: Record<string, string> | true;
461
463
  }
462
464
 
463
465
  interface Route {
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { k as RouteObject, R as RouterInit, F as FutureConfig$1, H as HydrationState, I as InitialEntry, D as DataStrategyFunction, ar as PatchRoutesOnNavigationFunction, b as Router$1, T as To, d as RelativeRoutingType, x as NonIndexRouteObject, a2 as LazyRouteFunction, s as IndexRouteObject, e as Location, f as Action, aq as Navigator, at as RouteMatch, p as StaticHandlerContext, c as RouteManifest, a as RouteModules, ap as DataRouteObject, aR as RouteModule, a1 as HTMLFormMethod, $ as FormEncType, aC as PageLinkDescriptor, aS as History, z as GetScrollRestorationKeyFunction, N as NavigateOptions, J as Fetcher, n as SerializeFrom, B as BlockerFunction } from './route-data-BL8ToWby.js';
2
+ import { k as RouteObject, R as RouterInit, F as FutureConfig$1, H as HydrationState, I as InitialEntry, D as DataStrategyFunction, ar as PatchRoutesOnNavigationFunction, b as Router$1, T as To, d as RelativeRoutingType, x as NonIndexRouteObject, a2 as LazyRouteFunction, s as IndexRouteObject, e as Location, f as Action, aq as Navigator, at as RouteMatch, p as StaticHandlerContext, c as RouteManifest, a as RouteModules, ap as DataRouteObject, aR as RouteModule, a1 as HTMLFormMethod, $ as FormEncType, aC as PageLinkDescriptor, aS as History, z as GetScrollRestorationKeyFunction, N as NavigateOptions, J as Fetcher, n as SerializeFrom, B as BlockerFunction } from './route-data-5OzAzQtT.js';
3
3
 
4
4
  /**
5
5
  * @private
@@ -440,6 +440,7 @@ interface EntryContext extends FrameworkContextObject {
440
440
  serverHandoffStream?: ReadableStream<Uint8Array>;
441
441
  }
442
442
  interface FutureConfig {
443
+ unstable_subResourceIntegrity: boolean;
443
444
  unstable_middleware: boolean;
444
445
  }
445
446
  type CriticalCss = string | {
@@ -458,6 +459,7 @@ interface AssetsManifest {
458
459
  timestamp?: number;
459
460
  runtime: string;
460
461
  };
462
+ sri?: Record<string, string> | true;
461
463
  }
462
464
 
463
465
  interface Route {
@@ -1,7 +1,7 @@
1
- import { a as RouteModules, b as Router, D as DataStrategyFunction, c as RouteManifest, S as ServerRouteModule, u as unstable_RouterContextProvider, L as LoaderFunctionArgs, A as ActionFunctionArgs, T as To, d as RelativeRoutingType, e as Location, f as Action, P as ParamParseKey, g as Path, h as PathPattern, i as PathMatch, N as NavigateOptions, j as Params$1, k as RouteObject, l as Navigation, m as RevalidationState, U as UIMatch, n as SerializeFrom, B as BlockerFunction, o as Blocker, p as StaticHandlerContext, q as StaticHandler, F as FutureConfig$1, C as CreateStaticHandlerOptions$1, I as InitialEntry, H as HydrationState, r as unstable_InitialContext, s as IndexRouteObject, t as LoaderFunction, v as ActionFunction, M as MetaFunction, w as LinksFunction, x as NonIndexRouteObject, E as Equal, y as RouterState } from './route-data-BL8ToWby.mjs';
2
- export { au as ClientActionFunction, av as ClientActionFunctionArgs, aw as ClientLoaderFunction, ax as ClientLoaderFunctionArgs, ao as DataRouteMatch, ap as DataRouteObject, W as DataStrategyFunctionArgs, X as DataStrategyMatch, Y as DataStrategyResult, _ as ErrorResponse, J as Fetcher, $ as FormEncType, a0 as FormMethod, G as GetScrollPositionFunction, z as GetScrollRestorationKeyFunction, a1 as HTMLFormMethod, ay as HeadersArgs, az as HeadersFunction, aD as HtmlLinkDescriptor, ae as IDLE_BLOCKER, ad as IDLE_FETCHER, ac as IDLE_NAVIGATION, a2 as LazyRouteFunction, aE as LinkDescriptor, aA as MetaArgs, aB as MetaDescriptor, K as NavigationStates, aq as Navigator, aC as PageLinkDescriptor, ar as PatchRoutesOnNavigationFunction, as as PatchRoutesOnNavigationFunctionArgs, a4 as PathParam, a5 as RedirectFunction, at as RouteMatch, V as RouterFetchOptions, R as RouterInit, Q as RouterNavigateOptions, O as RouterSubscriber, a7 as ShouldRevalidateFunction, a8 as ShouldRevalidateFunctionArgs, aK as UNSAFE_DataRouterContext, aL as UNSAFE_DataRouterStateContext, Z as UNSAFE_DataWithResponseInit, aJ as UNSAFE_ErrorResponseImpl, aM as UNSAFE_FetchersContext, aN as UNSAFE_LocationContext, aO as UNSAFE_NavigationContext, aP as UNSAFE_RouteContext, aQ as UNSAFE_ViewTransitionContext, aG as UNSAFE_createBrowserHistory, aI as UNSAFE_createRouter, aH as UNSAFE_invariant, aa as createPath, af as data, ag as generatePath, ah as isRouteErrorResponse, ai as matchPath, aj as matchRoutes, ab as parsePath, ak as redirect, al as redirectDocument, am as replace, an as resolvePath, a3 as unstable_MiddlewareFunction, a6 as unstable_RouterContext, aF as unstable_SerializesTo, a9 as unstable_createContext } from './route-data-BL8ToWby.mjs';
3
- import { A as AssetsManifest, a as Route, F as FutureConfig, E as EntryContext, C as CriticalCss } from './fog-of-war-BjgPfDmv.mjs';
4
- export { g as Await, b as AwaitProps, T as BrowserRouter, B as BrowserRouterProps, D as DOMRouterOpts, w as FetcherFormProps, G as FetcherSubmitFunction, a7 as FetcherSubmitOptions, J as FetcherWithComponents, Y as Form, x as FormProps, U as HashRouter, H as HashRouterProps, s as HistoryRouterProps, I as IndexRouteProps, L as LayoutRouteProps, V as Link, t as LinkProps, ae as Links, h as MemoryRouter, M as MemoryRouterOpts, c as MemoryRouterProps, ad as Meta, X as NavLink, u as NavLinkProps, v as NavLinkRenderProps, i as Navigate, N as NavigateProps, j as Outlet, O as OutletProps, a8 as ParamKeyValuePair, P as PathRouteProps, ag as PrefetchPageLinks, k as Route, d as RouteProps, l as Router, e as RouterProps, m as RouterProvider, R as RouterProviderProps, n as Routes, f as RoutesProps, af as Scripts, ah as ScriptsProps, Z as ScrollRestoration, S as ScrollRestorationProps, y as SetURLSearchParams, z as SubmitFunction, a9 as SubmitOptions, ab as SubmitTarget, aj as UNSAFE_FrameworkContext, am as UNSAFE_createClientRoutes, an as UNSAFE_createClientRoutesWithHMRRevalidationOptOut, ak as UNSAFE_getPatchRoutesOnNavigationFunction, ai as UNSAFE_mapRouteProperties, ao as UNSAFE_shouldHydrateRouteLoader, al as UNSAFE_useFogOFWarDiscovery, ap as UNSAFE_useScrollRestoration, aa as URLSearchParamsInit, K as createBrowserRouter, Q as createHashRouter, o as createMemoryRouter, p as createRoutesFromChildren, q as createRoutesFromElements, ac as createSearchParams, r as renderMatches, W as unstable_HistoryRouter, a5 as unstable_usePrompt, a4 as useBeforeUnload, a2 as useFetcher, a3 as useFetchers, a1 as useFormAction, _ as useLinkClickHandler, $ as useSearchParams, a0 as useSubmit, a6 as useViewTransitionState } from './fog-of-war-BjgPfDmv.mjs';
1
+ import { a as RouteModules, b as Router, D as DataStrategyFunction, c as RouteManifest, S as ServerRouteModule, u as unstable_RouterContextProvider, L as LoaderFunctionArgs, A as ActionFunctionArgs, T as To, d as RelativeRoutingType, e as Location, f as Action, P as ParamParseKey, g as Path, h as PathPattern, i as PathMatch, N as NavigateOptions, j as Params$1, k as RouteObject, l as Navigation, m as RevalidationState, U as UIMatch, n as SerializeFrom, B as BlockerFunction, o as Blocker, p as StaticHandlerContext, q as StaticHandler, F as FutureConfig$1, C as CreateStaticHandlerOptions$1, I as InitialEntry, H as HydrationState, r as unstable_InitialContext, s as IndexRouteObject, t as LoaderFunction, v as ActionFunction, M as MetaFunction, w as LinksFunction, x as NonIndexRouteObject, E as Equal, y as RouterState } from './route-data-5OzAzQtT.mjs';
2
+ export { au as ClientActionFunction, av as ClientActionFunctionArgs, aw as ClientLoaderFunction, ax as ClientLoaderFunctionArgs, ao as DataRouteMatch, ap as DataRouteObject, W as DataStrategyFunctionArgs, X as DataStrategyMatch, Y as DataStrategyResult, _ as ErrorResponse, J as Fetcher, $ as FormEncType, a0 as FormMethod, G as GetScrollPositionFunction, z as GetScrollRestorationKeyFunction, a1 as HTMLFormMethod, ay as HeadersArgs, az as HeadersFunction, aD as HtmlLinkDescriptor, ae as IDLE_BLOCKER, ad as IDLE_FETCHER, ac as IDLE_NAVIGATION, a2 as LazyRouteFunction, aE as LinkDescriptor, aA as MetaArgs, aB as MetaDescriptor, K as NavigationStates, aq as Navigator, aC as PageLinkDescriptor, ar as PatchRoutesOnNavigationFunction, as as PatchRoutesOnNavigationFunctionArgs, a4 as PathParam, a5 as RedirectFunction, at as RouteMatch, V as RouterFetchOptions, R as RouterInit, Q as RouterNavigateOptions, O as RouterSubscriber, a7 as ShouldRevalidateFunction, a8 as ShouldRevalidateFunctionArgs, aK as UNSAFE_DataRouterContext, aL as UNSAFE_DataRouterStateContext, Z as UNSAFE_DataWithResponseInit, aJ as UNSAFE_ErrorResponseImpl, aM as UNSAFE_FetchersContext, aN as UNSAFE_LocationContext, aO as UNSAFE_NavigationContext, aP as UNSAFE_RouteContext, aQ as UNSAFE_ViewTransitionContext, aG as UNSAFE_createBrowserHistory, aI as UNSAFE_createRouter, aH as UNSAFE_invariant, aa as createPath, af as data, ag as generatePath, ah as isRouteErrorResponse, ai as matchPath, aj as matchRoutes, ab as parsePath, ak as redirect, al as redirectDocument, am as replace, an as resolvePath, a3 as unstable_MiddlewareFunction, a6 as unstable_RouterContext, aF as unstable_SerializesTo, a9 as unstable_createContext } from './route-data-5OzAzQtT.mjs';
3
+ import { A as AssetsManifest, a as Route, F as FutureConfig, E as EntryContext, C as CriticalCss } from './fog-of-war-1hWhK5ey.mjs';
4
+ export { g as Await, b as AwaitProps, T as BrowserRouter, B as BrowserRouterProps, D as DOMRouterOpts, w as FetcherFormProps, G as FetcherSubmitFunction, a7 as FetcherSubmitOptions, J as FetcherWithComponents, Y as Form, x as FormProps, U as HashRouter, H as HashRouterProps, s as HistoryRouterProps, I as IndexRouteProps, L as LayoutRouteProps, V as Link, t as LinkProps, ae as Links, h as MemoryRouter, M as MemoryRouterOpts, c as MemoryRouterProps, ad as Meta, X as NavLink, u as NavLinkProps, v as NavLinkRenderProps, i as Navigate, N as NavigateProps, j as Outlet, O as OutletProps, a8 as ParamKeyValuePair, P as PathRouteProps, ag as PrefetchPageLinks, k as Route, d as RouteProps, l as Router, e as RouterProps, m as RouterProvider, R as RouterProviderProps, n as Routes, f as RoutesProps, af as Scripts, ah as ScriptsProps, Z as ScrollRestoration, S as ScrollRestorationProps, y as SetURLSearchParams, z as SubmitFunction, a9 as SubmitOptions, ab as SubmitTarget, aj as UNSAFE_FrameworkContext, am as UNSAFE_createClientRoutes, an as UNSAFE_createClientRoutesWithHMRRevalidationOptOut, ak as UNSAFE_getPatchRoutesOnNavigationFunction, ai as UNSAFE_mapRouteProperties, ao as UNSAFE_shouldHydrateRouteLoader, al as UNSAFE_useFogOFWarDiscovery, ap as UNSAFE_useScrollRestoration, aa as URLSearchParamsInit, K as createBrowserRouter, Q as createHashRouter, o as createMemoryRouter, p as createRoutesFromChildren, q as createRoutesFromElements, ac as createSearchParams, r as renderMatches, W as unstable_HistoryRouter, a5 as unstable_usePrompt, a4 as useBeforeUnload, a2 as useFetcher, a3 as useFetchers, a1 as useFormAction, _ as useLinkClickHandler, $ as useSearchParams, a0 as useSubmit, a6 as useViewTransitionState } from './fog-of-war-1hWhK5ey.mjs';
5
5
  import * as React from 'react';
6
6
  import { ReactElement } from 'react';
7
7
  import { ParseOptions, SerializeOptions } from 'cookie';