@bleedingdev/modern-js-runtime 3.2.0-ultramodern.101 → 3.2.0-ultramodern.103

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 (159) hide show
  1. package/dist/cjs/boundary-debugger/index.js +9 -5
  2. package/dist/cjs/cache/index.js +9 -5
  3. package/dist/cjs/cli/alias.js +9 -5
  4. package/dist/cjs/cli/code.js +9 -5
  5. package/dist/cjs/cli/constants.js +20 -16
  6. package/dist/cjs/cli/entry.js +9 -5
  7. package/dist/cjs/cli/index.js +9 -5
  8. package/dist/cjs/cli/ssr/index.js +9 -5
  9. package/dist/cjs/cli/ssr/loadable-bundler-plugin.js +9 -5
  10. package/dist/cjs/cli/ssr/mode.js +12 -8
  11. package/dist/cjs/cli/template.js +9 -5
  12. package/dist/cjs/cli/template.server.js +9 -5
  13. package/dist/cjs/common.js +14 -10
  14. package/dist/cjs/core/browser/hydrate.js +9 -5
  15. package/dist/cjs/core/browser/index.js +9 -5
  16. package/dist/cjs/core/browser/withCallback.js +9 -5
  17. package/dist/cjs/core/compat/hooks.js +14 -10
  18. package/dist/cjs/core/compat/index.js +9 -5
  19. package/dist/cjs/core/compat/requestContext.js +13 -9
  20. package/dist/cjs/core/config.js +12 -8
  21. package/dist/cjs/core/constants.js +15 -10
  22. package/dist/cjs/core/context/index.js +9 -5
  23. package/dist/cjs/core/context/monitors/default.js +12 -8
  24. package/dist/cjs/core/context/monitors/index.js +9 -5
  25. package/dist/cjs/core/context/monitors/index.server.js +9 -5
  26. package/dist/cjs/core/context/request/index.js +12 -8
  27. package/dist/cjs/core/context/request/index.server.js +9 -5
  28. package/dist/cjs/core/context/response/index.js +15 -11
  29. package/dist/cjs/core/context/response/index.server.js +9 -5
  30. package/dist/cjs/core/context/runtime.js +9 -5
  31. package/dist/cjs/core/context/serverPayload/index.js +13 -9
  32. package/dist/cjs/core/context/serverPayload/index.server.js +9 -5
  33. package/dist/cjs/core/index.js +9 -5
  34. package/dist/cjs/core/plugin/index.js +9 -5
  35. package/dist/cjs/core/react/index.js +9 -5
  36. package/dist/cjs/core/react/wrapper.js +9 -5
  37. package/dist/cjs/core/server/constants.js +15 -11
  38. package/dist/cjs/core/server/federatedCss.js +9 -5
  39. package/dist/cjs/core/server/helmet.js +9 -5
  40. package/dist/cjs/core/server/index.js +9 -5
  41. package/dist/cjs/core/server/react/index.js +9 -5
  42. package/dist/cjs/core/server/react/no-ssr-cache/index.js +9 -5
  43. package/dist/cjs/core/server/react/nossr/index.js +9 -5
  44. package/dist/cjs/core/server/requestHandler.js +9 -5
  45. package/dist/cjs/core/server/scriptOrder.js +12 -8
  46. package/dist/cjs/core/server/server.js +9 -5
  47. package/dist/cjs/core/server/shared.js +12 -8
  48. package/dist/cjs/core/server/stream/afterTemplate.js +9 -5
  49. package/dist/cjs/core/server/stream/beforeTemplate.js +9 -5
  50. package/dist/cjs/core/server/stream/beforeTemplate.worker.js +9 -5
  51. package/dist/cjs/core/server/stream/createReadableStream.js +9 -5
  52. package/dist/cjs/core/server/stream/createReadableStream.worker.js +9 -5
  53. package/dist/cjs/core/server/stream/deferredScript.js +9 -5
  54. package/dist/cjs/core/server/stream/index.js +9 -5
  55. package/dist/cjs/core/server/stream/shared.js +9 -5
  56. package/dist/cjs/core/server/stream/template.js +9 -5
  57. package/dist/cjs/core/server/string/index.js +9 -5
  58. package/dist/cjs/core/server/string/loadable.js +9 -5
  59. package/dist/cjs/core/server/string/ssrData.js +9 -5
  60. package/dist/cjs/core/server/tracer.js +13 -9
  61. package/dist/cjs/core/server/utils.js +9 -5
  62. package/dist/cjs/document/Body.js +9 -5
  63. package/dist/cjs/document/Comment.js +9 -5
  64. package/dist/cjs/document/DocumentContext.js +9 -5
  65. package/dist/cjs/document/DocumentStructureContext.js +9 -5
  66. package/dist/cjs/document/Head.js +9 -5
  67. package/dist/cjs/document/Html.js +9 -5
  68. package/dist/cjs/document/Links.js +9 -5
  69. package/dist/cjs/document/Root.js +9 -5
  70. package/dist/cjs/document/Script.js +9 -5
  71. package/dist/cjs/document/Scripts.js +9 -5
  72. package/dist/cjs/document/Style.js +9 -5
  73. package/dist/cjs/document/Title.js +9 -5
  74. package/dist/cjs/document/cli/index.js +12 -6
  75. package/dist/cjs/document/constants.js +9 -5
  76. package/dist/cjs/document/index.js +9 -5
  77. package/dist/cjs/exports/config-routes.js +12 -8
  78. package/dist/cjs/exports/head.js +9 -5
  79. package/dist/cjs/exports/loadable.js +15 -11
  80. package/dist/cjs/exports/tanstack-router.js +9 -5
  81. package/dist/cjs/index.js +9 -5
  82. package/dist/cjs/internal.js +9 -5
  83. package/dist/cjs/react-server.js +9 -5
  84. package/dist/cjs/router/cli/code/getClientRoutes/getRoutes.js +9 -5
  85. package/dist/cjs/router/cli/code/getClientRoutes/index.js +9 -5
  86. package/dist/cjs/router/cli/code/getClientRoutes/utils.js +9 -5
  87. package/dist/cjs/router/cli/code/index.js +9 -5
  88. package/dist/cjs/router/cli/code/inspect.js +9 -5
  89. package/dist/cjs/router/cli/code/makeLegalIdentifier.js +12 -8
  90. package/dist/cjs/router/cli/code/nestedRoutes.js +9 -5
  91. package/dist/cjs/router/cli/code/tanstackTypes.js +9 -5
  92. package/dist/cjs/router/cli/code/templates.js +9 -5
  93. package/dist/cjs/router/cli/code/utils.js +9 -5
  94. package/dist/cjs/router/cli/config-routes/converter.js +9 -5
  95. package/dist/cjs/router/cli/config-routes/parseRouteConfig.js +9 -5
  96. package/dist/cjs/router/cli/constants.js +23 -19
  97. package/dist/cjs/router/cli/entry.js +9 -5
  98. package/dist/cjs/router/cli/handler.js +9 -5
  99. package/dist/cjs/router/cli/index.js +9 -5
  100. package/dist/cjs/router/index.js +9 -5
  101. package/dist/cjs/router/internal.js +12 -8
  102. package/dist/cjs/router/runtime/CSSLinks.js +9 -5
  103. package/dist/cjs/router/runtime/DefaultNotFound.js +9 -5
  104. package/dist/cjs/router/runtime/DeferredDataScripts.js +12 -8
  105. package/dist/cjs/router/runtime/DeferredDataScripts.node.js +9 -5
  106. package/dist/cjs/router/runtime/PrefetchLink.js +161 -26
  107. package/dist/cjs/router/runtime/constants.js +9 -5
  108. package/dist/cjs/router/runtime/hooks.js +9 -5
  109. package/dist/cjs/router/runtime/index.js +15 -10
  110. package/dist/cjs/router/runtime/internal.js +9 -5
  111. package/dist/cjs/router/runtime/lifecycle.js +18 -14
  112. package/dist/cjs/router/runtime/plugin.js +9 -5
  113. package/dist/cjs/router/runtime/plugin.node.js +9 -5
  114. package/dist/cjs/router/runtime/routerHelper.js +9 -5
  115. package/dist/cjs/router/runtime/rsc-router.js +9 -5
  116. package/dist/cjs/router/runtime/rsc.js +9 -5
  117. package/dist/cjs/router/runtime/server.js +9 -5
  118. package/dist/cjs/router/runtime/tanstack/basepathRewrite.js +12 -8
  119. package/dist/cjs/router/runtime/tanstack/dataMutation.js +9 -5
  120. package/dist/cjs/router/runtime/tanstack/hydrationBoundary.js +9 -5
  121. package/dist/cjs/router/runtime/tanstack/outlet.js +9 -5
  122. package/dist/cjs/router/runtime/tanstack/plugin.js +9 -5
  123. package/dist/cjs/router/runtime/tanstack/plugin.node.js +9 -5
  124. package/dist/cjs/router/runtime/tanstack/prefetchLink.js +10 -6
  125. package/dist/cjs/router/runtime/tanstack/routeTree.js +9 -5
  126. package/dist/cjs/router/runtime/tanstack/rsc/ClientSlot.js +9 -5
  127. package/dist/cjs/router/runtime/tanstack/rsc/CompositeComponent.js +9 -5
  128. package/dist/cjs/router/runtime/tanstack/rsc/ReplayableStream.js +14 -9
  129. package/dist/cjs/router/runtime/tanstack/rsc/RscNodeRenderer.js +9 -5
  130. package/dist/cjs/router/runtime/tanstack/rsc/SlotContext.js +9 -5
  131. package/dist/cjs/router/runtime/tanstack/rsc/client.js +9 -5
  132. package/dist/cjs/router/runtime/tanstack/rsc/createRscProxy.js +9 -5
  133. package/dist/cjs/router/runtime/tanstack/rsc/index.js +9 -5
  134. package/dist/cjs/router/runtime/tanstack/rsc/server.js +9 -5
  135. package/dist/cjs/router/runtime/tanstack/rsc/slotUsageSanitizer.js +9 -5
  136. package/dist/cjs/router/runtime/tanstack/rsc/symbols.js +20 -15
  137. package/dist/cjs/router/runtime/utils.js +9 -5
  138. package/dist/cjs/router/runtime/withRouter.js +9 -5
  139. package/dist/cjs/rsc/client.js +12 -8
  140. package/dist/cjs/rsc/server.js +9 -5
  141. package/dist/cjs/rsc/server.worker.js +9 -5
  142. package/dist/cjs/ssr/index.node.js +13 -9
  143. package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.after.js +9 -5
  144. package/dist/cjs/ssr/serverRender/renderToString/entry.js +9 -5
  145. package/dist/cjs/ssr/serverRender/types.js +9 -5
  146. package/dist/esm/document/cli/index.mjs +3 -1
  147. package/dist/esm/router/runtime/PrefetchLink.mjs +152 -21
  148. package/dist/esm/router/runtime/tanstack/prefetchLink.mjs +1 -1
  149. package/dist/esm-node/document/cli/index.mjs +3 -1
  150. package/dist/esm-node/router/runtime/PrefetchLink.mjs +152 -21
  151. package/dist/esm-node/router/runtime/tanstack/prefetchLink.mjs +1 -1
  152. package/dist/types/cli/entry.d.ts +2 -2
  153. package/dist/types/core/context/response/index.server.d.ts +4 -1
  154. package/dist/types/core/plugin/index.d.ts +1 -1
  155. package/dist/types/core/server/utils.d.ts +11 -1
  156. package/dist/types/router/cli/code/utils.d.ts +1 -1
  157. package/dist/types/router/cli/entry.d.ts +1 -1
  158. package/dist/types/router/runtime/PrefetchLink.d.ts +5 -1
  159. package/package.json +10 -10
@@ -10,11 +10,15 @@ var __webpack_require__ = {};
10
10
  };
11
11
  })();
12
12
  (()=>{
13
- __webpack_require__.d = (exports1, definition)=>{
14
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
- enumerable: true,
16
- get: definition[key]
17
- });
13
+ __webpack_require__.d = (exports1, getters, values)=>{
14
+ var define = (defs, kind)=>{
15
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
16
+ enumerable: true,
17
+ [kind]: defs[key]
18
+ });
19
+ };
20
+ define(getters, "get");
21
+ define(values, "value");
18
22
  };
19
23
  })();
20
24
  (()=>{
@@ -10,11 +10,15 @@ var __webpack_require__ = {};
10
10
  };
11
11
  })();
12
12
  (()=>{
13
- __webpack_require__.d = (exports1, definition)=>{
14
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
- enumerable: true,
16
- get: definition[key]
17
- });
13
+ __webpack_require__.d = (exports1, getters, values)=>{
14
+ var define = (defs, kind)=>{
15
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
16
+ enumerable: true,
17
+ [kind]: defs[key]
18
+ });
19
+ };
20
+ define(getters, "get");
21
+ define(values, "value");
18
22
  };
19
23
  })();
20
24
  (()=>{
@@ -10,11 +10,15 @@ var __webpack_require__ = {};
10
10
  };
11
11
  })();
12
12
  (()=>{
13
- __webpack_require__.d = (exports1, definition)=>{
14
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
- enumerable: true,
16
- get: definition[key]
17
- });
13
+ __webpack_require__.d = (exports1, getters, values)=>{
14
+ var define = (defs, kind)=>{
15
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
16
+ enumerable: true,
17
+ [kind]: defs[key]
18
+ });
19
+ };
20
+ define(getters, "get");
21
+ define(values, "value");
18
22
  };
19
23
  })();
20
24
  (()=>{
@@ -24,11 +24,15 @@ function __webpack_require__(moduleId) {
24
24
  };
25
25
  })();
26
26
  (()=>{
27
- __webpack_require__.d = (exports1, definition)=>{
28
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
29
- enumerable: true,
30
- get: definition[key]
31
- });
27
+ __webpack_require__.d = (exports1, getters, values)=>{
28
+ var define = (defs, kind)=>{
29
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
30
+ enumerable: true,
31
+ [kind]: defs[key]
32
+ });
33
+ };
34
+ define(getters, "get");
35
+ define(values, "value");
32
36
  };
33
37
  })();
34
38
  (()=>{
@@ -24,11 +24,15 @@ function __webpack_require__(moduleId) {
24
24
  };
25
25
  })();
26
26
  (()=>{
27
- __webpack_require__.d = (exports1, definition)=>{
28
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
29
- enumerable: true,
30
- get: definition[key]
31
- });
27
+ __webpack_require__.d = (exports1, getters, values)=>{
28
+ var define = (defs, kind)=>{
29
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
30
+ enumerable: true,
31
+ [kind]: defs[key]
32
+ });
33
+ };
34
+ define(getters, "get");
35
+ define(values, "value");
32
36
  };
33
37
  })();
34
38
  (()=>{
@@ -47,13 +51,13 @@ function __webpack_require__(moduleId) {
47
51
  var __webpack_exports__ = {};
48
52
  (()=>{
49
53
  __webpack_require__.r(__webpack_exports__);
50
- __webpack_require__.d(__webpack_exports__, {
51
- default: ()=>_runtime_internal__rspack_import_0.routerPlugin
52
- });
53
54
  var _runtime_internal__rspack_import_0 = __webpack_require__("./runtime/internal");
54
55
  var __rspack_reexport = {};
55
56
  for(const __rspack_import_key in _runtime_internal__rspack_import_0)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_runtime_internal__rspack_import_0[__rspack_import_key];
56
57
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
58
+ __webpack_require__.d(__webpack_exports__, {
59
+ default: ()=>_runtime_internal__rspack_import_0.routerPlugin
60
+ });
57
61
  })();
58
62
  exports["default"] = __webpack_exports__["default"];
59
63
  for(var __rspack_i in __webpack_exports__)if (-1 === [
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
9
13
  };
10
14
  })();
11
15
  (()=>{
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
9
13
  };
10
14
  })();
11
15
  (()=>{
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
9
13
  };
10
14
  })();
11
15
  (()=>{
@@ -23,10 +27,10 @@ var __webpack_require__ = {};
23
27
  })();
24
28
  var __webpack_exports__ = {};
25
29
  __webpack_require__.r(__webpack_exports__);
26
- __webpack_require__.d(__webpack_exports__, {
27
- default: ()=>__rspack_default_export
28
- });
29
30
  const __rspack_default_export = ()=>null;
31
+ __webpack_require__.d(__webpack_exports__, {}, {
32
+ default: __rspack_default_export
33
+ });
30
34
  exports["default"] = __webpack_exports__["default"];
31
35
  for(var __rspack_i in __webpack_exports__)if (-1 === [
32
36
  "default"
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
9
13
  };
10
14
  })();
11
15
  (()=>{
@@ -11,11 +11,15 @@ var __webpack_require__ = {};
11
11
  };
12
12
  })();
13
13
  (()=>{
14
- __webpack_require__.d = (exports1, definition)=>{
15
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
16
- enumerable: true,
17
- get: definition[key]
18
- });
14
+ __webpack_require__.d = (exports1, getters, values)=>{
15
+ var define = (defs, kind)=>{
16
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
17
+ enumerable: true,
18
+ [kind]: defs[key]
19
+ });
20
+ };
21
+ define(getters, "get");
22
+ define(values, "value");
19
23
  };
20
24
  })();
21
25
  (()=>{
@@ -49,45 +53,141 @@ function composeEventHandlers(theirHandler, ourHandler) {
49
53
  };
50
54
  }
51
55
  const ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;
52
- function usePrefetchBehavior(prefetch, theirElementProps) {
53
- const [maybePrefetch, setMaybePrefetch] = external_react_default().useState(false);
56
+ const DEFAULT_PREFETCH_BEHAVIOR = 'render';
57
+ const DEFAULT_PRELOAD_BEHAVIOR = 'viewport';
58
+ const INTENT_DELAY = 100;
59
+ const VIEWPORT_ROOT_MARGIN = '200px';
60
+ const MAX_CONCURRENT_WARMUPS = 4;
61
+ const WARMUP_TTL = 30000;
62
+ const SLOW_EFFECTIVE_TYPES = new Set([
63
+ 'slow-2g',
64
+ '2g'
65
+ ]);
66
+ const warmupCache = new Map();
67
+ const warmupQueue = [];
68
+ let activeWarmups = 0;
69
+ const getConnection = ()=>{
70
+ const nav = globalThis.navigator;
71
+ return nav?.connection || nav?.mozConnection || nav?.webkitConnection;
72
+ };
73
+ const shouldWarmupOnCurrentNetwork = ()=>{
74
+ const connection = getConnection();
75
+ if (connection?.saveData) return false;
76
+ if ('string' == typeof connection?.effectiveType && SLOW_EFFECTIVE_TYPES.has(connection.effectiveType)) return false;
77
+ return true;
78
+ };
79
+ const pruneWarmupCache = (now = Date.now())=>{
80
+ for (const [key, timestamp] of warmupCache)if (now - timestamp > WARMUP_TTL) warmupCache.delete(key);
81
+ };
82
+ const runNextWarmup = ()=>{
83
+ while(activeWarmups < MAX_CONCURRENT_WARMUPS && warmupQueue.length > 0){
84
+ const task = warmupQueue.shift();
85
+ if (task.cancelled) continue;
86
+ activeWarmups += 1;
87
+ task.run().catch((error)=>{
88
+ console.error(error);
89
+ warmupCache.delete(task.key);
90
+ }).finally(()=>{
91
+ activeWarmups -= 1;
92
+ runNextWarmup();
93
+ });
94
+ }
95
+ };
96
+ const scheduleWarmup = (key, run)=>{
97
+ if (!shouldWarmupOnCurrentNetwork()) return ()=>{};
98
+ pruneWarmupCache();
99
+ if (warmupCache.has(key)) return ()=>{};
100
+ warmupCache.set(key, Date.now());
101
+ const task = {
102
+ key,
103
+ run,
104
+ cancelled: false
105
+ };
106
+ warmupQueue.push(task);
107
+ runNextWarmup();
108
+ return ()=>{
109
+ task.cancelled = true;
110
+ };
111
+ };
112
+ const setRef = (ref, value)=>{
113
+ if (!ref) return;
114
+ if ('function' == typeof ref) return void ref(value);
115
+ try {
116
+ ref.current = value;
117
+ } catch {}
118
+ };
119
+ const isDataWarmupEnabled = (route)=>{
120
+ const handle = route.handle;
121
+ return handle?.navigationWarmup?.data === true;
122
+ };
123
+ function usePrefetchBehavior(prefetch, preload, theirElementProps) {
124
+ const [maybeWarmup, setMaybeWarmup] = external_react_default().useState(false);
54
125
  const [shouldPrefetch, setShouldPrefetch] = external_react_default().useState(false);
126
+ const [shouldPreload, setShouldPreload] = external_react_default().useState(false);
127
+ const [viewportElement, setViewportElement] = external_react_default().useState(null);
55
128
  const { onFocus, onBlur, onMouseEnter, onMouseLeave, onTouchStart } = theirElementProps;
56
129
  external_react_default().useEffect(()=>{
57
130
  if ('render' === prefetch) setShouldPrefetch(true);
131
+ if ('render' === preload) setShouldPreload(true);
58
132
  }, [
59
- prefetch
133
+ prefetch,
134
+ preload
60
135
  ]);
61
136
  const setIntent = ()=>{
62
- if ('intent' === prefetch) setMaybePrefetch(true);
137
+ if ('intent' === prefetch || 'intent' === preload) setMaybeWarmup(true);
63
138
  };
64
139
  const cancelIntent = ()=>{
65
- if ('intent' === prefetch) {
66
- setMaybePrefetch(false);
140
+ if ('intent' === prefetch || 'intent' === preload) {
141
+ setMaybeWarmup(false);
67
142
  setShouldPrefetch(false);
143
+ setShouldPreload(false);
68
144
  }
69
145
  };
70
146
  external_react_default().useEffect(()=>{
71
- if (maybePrefetch) {
147
+ if (maybeWarmup) {
72
148
  const id = setTimeout(()=>{
73
- setShouldPrefetch(true);
74
- }, 100);
149
+ if ('intent' === prefetch) setShouldPrefetch(true);
150
+ if ('intent' === preload) setShouldPreload(true);
151
+ }, INTENT_DELAY);
75
152
  return ()=>{
76
153
  clearTimeout(id);
77
154
  };
78
155
  }
79
156
  }, [
80
- maybePrefetch
157
+ maybeWarmup,
158
+ prefetch,
159
+ preload
160
+ ]);
161
+ external_react_default().useEffect(()=>{
162
+ if (!viewportElement || 'viewport' !== prefetch && 'viewport' !== preload || "u" < typeof IntersectionObserver) return;
163
+ const observer = new IntersectionObserver((entries)=>{
164
+ if (!entries.some((entry)=>entry.isIntersecting)) return;
165
+ if ('viewport' === prefetch) setShouldPrefetch(true);
166
+ if ('viewport' === preload) setShouldPreload(true);
167
+ observer.disconnect();
168
+ }, {
169
+ rootMargin: VIEWPORT_ROOT_MARGIN
170
+ });
171
+ observer.observe(viewportElement);
172
+ return ()=>{
173
+ observer.disconnect();
174
+ };
175
+ }, [
176
+ prefetch,
177
+ preload,
178
+ viewportElement
81
179
  ]);
82
180
  return [
83
181
  shouldPrefetch,
182
+ shouldPreload,
84
183
  {
85
184
  onFocus: composeEventHandlers(onFocus, setIntent),
86
185
  onBlur: composeEventHandlers(onBlur, cancelIntent),
87
186
  onMouseEnter: composeEventHandlers(onMouseEnter, setIntent),
88
187
  onMouseLeave: composeEventHandlers(onMouseLeave, cancelIntent),
89
188
  onTouchStart: composeEventHandlers(onTouchStart, setIntent)
90
- }
189
+ },
190
+ setViewportElement
91
191
  ];
92
192
  }
93
193
  async function loadRouteModule(route, routeAssets) {
@@ -122,14 +222,34 @@ const getDataHref = (route, pathname, basename)=>{
122
222
  const url = getRequestUrl(path, id);
123
223
  return createDataHref(url.toString());
124
224
  };
125
- const PrefetchPageLinks = ({ path })=>{
225
+ const PrefetchPageLinks = ({ path, includeData })=>{
126
226
  const { pathname } = path;
127
227
  const context = (0, external_react_namespaceObject.useContext)(index_js_namespaceObject.InternalRuntimeContext);
128
228
  const { routeManifest, routes } = context;
129
229
  const { routeAssets } = routeManifest || {};
130
- const matches = Array.isArray(routes) ? (0, router_namespaceObject.matchRoutes)(routes, pathname) : [];
131
- if (Array.isArray(matches) && routeAssets) matches?.forEach((match)=>loadRouteModule(match.route, routeAssets));
132
- if (!window._SSR_DATA) return null;
230
+ const allowNetworkWarmup = shouldWarmupOnCurrentNetwork();
231
+ const matches = (0, external_react_namespaceObject.useMemo)(()=>Array.isArray(routes) ? (0, router_namespaceObject.matchRoutes)(routes, pathname) : [], [
232
+ pathname,
233
+ routes
234
+ ]);
235
+ external_react_default().useEffect(()=>{
236
+ if (!allowNetworkWarmup || !Array.isArray(matches) || !routeAssets || !__webpack_chunk_load__) return;
237
+ const cancellations = matches.map((match)=>{
238
+ const routeId = match.route.id;
239
+ const routeAsset = routeId ? routeAssets[routeId] : void 0;
240
+ const chunkIds = routeAsset?.chunkIds;
241
+ if (!routeId || !Array.isArray(chunkIds) || 0 === chunkIds.length) return ()=>{};
242
+ return scheduleWarmup(`route-module:${routeId}:${chunkIds.join(',')}`, ()=>loadRouteModule(match.route, routeAssets));
243
+ });
244
+ return ()=>{
245
+ cancellations.forEach((cancel)=>cancel());
246
+ };
247
+ }, [
248
+ allowNetworkWarmup,
249
+ matches,
250
+ routeAssets
251
+ ]);
252
+ if (!allowNetworkWarmup || !includeData || !window._SSR_DATA) return null;
133
253
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(PrefetchDataLinks, {
134
254
  matches: matches,
135
255
  path: path,
@@ -141,7 +261,7 @@ const PrefetchDataLinks = ({ matches, path, routeManifest })=>{
141
261
  const currentMatches = (0, router_namespaceObject.useMatches)();
142
262
  const basename = (0, router_namespaceObject.useHref)('/');
143
263
  const dataHrefs = (0, external_react_namespaceObject.useMemo)(()=>matches?.filter((match, index)=>{
144
- if (!match.route.loader || 'function' != typeof match.route.loader || 0 === match.route.loader.length) return false;
264
+ if (!isDataWarmupEnabled(match.route) || !match.route.loader || 'function' != typeof match.route.loader || 0 === match.route.loader.length) return false;
145
265
  if (match.route.shouldRevalidate) {
146
266
  const currentUrl = new URL(location.pathname + location.search + location.hash, window.origin);
147
267
  const nextUrl = new URL(pathname + search + hash, window.origin);
@@ -168,20 +288,35 @@ const PrefetchDataLinks = ({ matches, path, routeManifest })=>{
168
288
  children: dataHrefs
169
289
  });
170
290
  };
171
- const createPrefetchLink = (Link)=>/*#__PURE__*/ external_react_default().forwardRef(({ to, prefetch = 'none', ...props }, forwardedRef)=>{
291
+ const normalizePreloadBehavior = (preload, prefetch)=>{
292
+ if (false === preload || 'none' === preload) return 'none';
293
+ if (void 0 !== preload) return preload;
294
+ if ('none' === prefetch) return 'none';
295
+ return DEFAULT_PRELOAD_BEHAVIOR;
296
+ };
297
+ const createPrefetchLink = (Link)=>/*#__PURE__*/ external_react_default().forwardRef(({ to, prefetch = DEFAULT_PREFETCH_BEHAVIOR, preload, ...props }, forwardedRef)=>{
172
298
  const isAbsolute = 'string' == typeof to && ABSOLUTE_URL_REGEX.test(to);
173
- const [shouldPrefetch, prefetchHandlers] = usePrefetchBehavior(prefetch, props);
299
+ const resolvedPreload = normalizePreloadBehavior(preload, prefetch);
300
+ const [shouldPrefetch, shouldPreload, prefetchHandlers, setViewportElement] = usePrefetchBehavior(prefetch, resolvedPreload, props);
301
+ const setAnchorRef = external_react_default().useCallback((element)=>{
302
+ setViewportElement(element);
303
+ setRef(forwardedRef, element);
304
+ }, [
305
+ forwardedRef,
306
+ setViewportElement
307
+ ]);
174
308
  const resolvedPath = (0, router_namespaceObject.useResolvedPath)(to);
175
309
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(jsx_runtime_namespaceObject.Fragment, {
176
310
  children: [
177
311
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(Link, {
178
- ref: forwardedRef,
312
+ ref: setAnchorRef,
179
313
  to: to,
180
314
  ...props,
181
315
  ...prefetchHandlers
182
316
  }),
183
- shouldPrefetch && __webpack_chunk_load__ && !isAbsolute ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(PrefetchPageLinks, {
184
- path: resolvedPath
317
+ (shouldPrefetch || shouldPreload) && !isAbsolute ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(PrefetchPageLinks, {
318
+ path: resolvedPath,
319
+ includeData: shouldPrefetch
185
320
  }) : null
186
321
  ]
187
322
  });
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
9
13
  };
10
14
  })();
11
15
  (()=>{
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
9
13
  };
10
14
  })();
11
15
  (()=>{
@@ -30,11 +30,15 @@ function __webpack_require__(moduleId) {
30
30
  };
31
31
  })();
32
32
  (()=>{
33
- __webpack_require__.d = (exports1, definition)=>{
34
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
35
- enumerable: true,
36
- get: definition[key]
37
- });
33
+ __webpack_require__.d = (exports1, getters, values)=>{
34
+ var define = (defs, kind)=>{
35
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
36
+ enumerable: true,
37
+ [kind]: defs[key]
38
+ });
39
+ };
40
+ define(getters, "get");
41
+ define(values, "value");
38
42
  };
39
43
  })();
40
44
  (()=>{
@@ -53,11 +57,6 @@ function __webpack_require__(moduleId) {
53
57
  var __webpack_exports__ = {};
54
58
  (()=>{
55
59
  __webpack_require__.r(__webpack_exports__);
56
- __webpack_require__.d(__webpack_exports__, {
57
- Link: ()=>_PrefetchLink__rspack_import_1.Link,
58
- NavLink: ()=>_PrefetchLink__rspack_import_1.NavLink,
59
- useRouteLoaderData: ()=>useRouteLoaderData
60
- });
61
60
  var _modern_js_runtime_utils_router__rspack_import_0 = __webpack_require__("@modern-js/runtime-utils/router");
62
61
  var __rspack_reexport = {};
63
62
  for(const __rspack_import_key in _modern_js_runtime_utils_router__rspack_import_0)if ([
@@ -81,6 +80,12 @@ var __webpack_exports__ = {};
81
80
  const realRouteId = routeId.replace(/\[(.*?)\]/g, '($1)');
82
81
  return (0, _modern_js_runtime_utils_router__rspack_import_0.useRouteLoaderData)(realRouteId);
83
82
  };
83
+ __webpack_require__.d(__webpack_exports__, {
84
+ Link: ()=>_PrefetchLink__rspack_import_1.Link,
85
+ NavLink: ()=>_PrefetchLink__rspack_import_1.NavLink
86
+ }, {
87
+ useRouteLoaderData: useRouteLoaderData
88
+ });
84
89
  })();
85
90
  exports.Link = __webpack_exports__.Link;
86
91
  exports.NavLink = __webpack_exports__.NavLink;
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
9
13
  };
10
14
  })();
11
15
  (()=>{
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
9
13
  };
10
14
  })();
11
15
  (()=>{
@@ -23,15 +27,6 @@ var __webpack_require__ = {};
23
27
  })();
24
28
  var __webpack_exports__ = {};
25
29
  __webpack_require__.r(__webpack_exports__);
26
- __webpack_require__.d(__webpack_exports__, {
27
- applyRouterRuntimeState: ()=>applyRouterRuntimeState,
28
- applyRouterServerPrepareResult: ()=>applyRouterServerPrepareResult,
29
- cleanupRouterRuntimeState: ()=>cleanupRouterRuntimeState,
30
- createRouterRuntimeState: ()=>createRouterRuntimeState,
31
- createRouterServerSnapshot: ()=>createRouterServerSnapshot,
32
- getRouterHydrationScripts: ()=>getRouterHydrationScripts,
33
- getRouterMatchedRouteIds: ()=>getRouterMatchedRouteIds
34
- });
35
30
  function toHydrationScripts(state) {
36
31
  if (state.hydrationScripts?.length) return state.hydrationScripts;
37
32
  return state.hydrationScript ? [
@@ -127,6 +122,15 @@ async function cleanupRouterRuntimeState(runtimeContext) {
127
122
  await runtimeContext.routerRuntime?.cleanup?.();
128
123
  } catch {}
129
124
  }
125
+ __webpack_require__.d(__webpack_exports__, {
126
+ applyRouterRuntimeState: ()=>applyRouterRuntimeState,
127
+ applyRouterServerPrepareResult: ()=>applyRouterServerPrepareResult,
128
+ cleanupRouterRuntimeState: ()=>cleanupRouterRuntimeState,
129
+ createRouterRuntimeState: ()=>createRouterRuntimeState,
130
+ createRouterServerSnapshot: ()=>createRouterServerSnapshot,
131
+ getRouterHydrationScripts: ()=>getRouterHydrationScripts,
132
+ getRouterMatchedRouteIds: ()=>getRouterMatchedRouteIds
133
+ });
130
134
  exports.applyRouterRuntimeState = __webpack_exports__.applyRouterRuntimeState;
131
135
  exports.applyRouterServerPrepareResult = __webpack_exports__.applyRouterServerPrepareResult;
132
136
  exports.cleanupRouterRuntimeState = __webpack_exports__.cleanupRouterRuntimeState;