@bleedingdev/modern-js-runtime 3.2.0-ultramodern.102 → 3.2.0-ultramodern.104
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/dist/cjs/boundary-debugger/index.js +15 -11
- package/dist/cjs/cache/index.js +9 -5
- package/dist/cjs/cli/alias.js +9 -5
- package/dist/cjs/cli/code.js +9 -5
- package/dist/cjs/cli/constants.js +20 -16
- package/dist/cjs/cli/entry.js +9 -5
- package/dist/cjs/cli/index.js +9 -5
- package/dist/cjs/cli/ssr/index.js +9 -5
- package/dist/cjs/cli/ssr/loadable-bundler-plugin.js +9 -5
- package/dist/cjs/cli/ssr/mode.js +12 -8
- package/dist/cjs/cli/template.js +9 -5
- package/dist/cjs/cli/template.server.js +9 -5
- package/dist/cjs/common.js +14 -10
- package/dist/cjs/core/browser/hydrate.js +9 -5
- package/dist/cjs/core/browser/index.js +9 -5
- package/dist/cjs/core/browser/withCallback.js +9 -5
- package/dist/cjs/core/compat/hooks.js +14 -10
- package/dist/cjs/core/compat/index.js +9 -5
- package/dist/cjs/core/compat/requestContext.js +13 -9
- package/dist/cjs/core/config.js +12 -8
- package/dist/cjs/core/constants.js +15 -10
- package/dist/cjs/core/context/index.js +9 -5
- package/dist/cjs/core/context/monitors/default.js +12 -8
- package/dist/cjs/core/context/monitors/index.js +9 -5
- package/dist/cjs/core/context/monitors/index.server.js +9 -5
- package/dist/cjs/core/context/request/index.js +12 -8
- package/dist/cjs/core/context/request/index.server.js +9 -5
- package/dist/cjs/core/context/response/index.js +15 -11
- package/dist/cjs/core/context/response/index.server.js +9 -5
- package/dist/cjs/core/context/runtime.js +9 -5
- package/dist/cjs/core/context/serverPayload/index.js +13 -9
- package/dist/cjs/core/context/serverPayload/index.server.js +9 -5
- package/dist/cjs/core/index.js +9 -5
- package/dist/cjs/core/plugin/index.js +9 -5
- package/dist/cjs/core/react/index.js +9 -5
- package/dist/cjs/core/react/wrapper.js +9 -5
- package/dist/cjs/core/server/constants.js +15 -11
- package/dist/cjs/core/server/federatedCss.js +11 -7
- package/dist/cjs/core/server/helmet.js +9 -5
- package/dist/cjs/core/server/index.js +9 -5
- package/dist/cjs/core/server/react/index.js +9 -5
- package/dist/cjs/core/server/react/no-ssr-cache/index.js +9 -5
- package/dist/cjs/core/server/react/nossr/index.js +9 -5
- package/dist/cjs/core/server/requestHandler.js +9 -5
- package/dist/cjs/core/server/scriptOrder.js +14 -10
- package/dist/cjs/core/server/server.js +9 -5
- package/dist/cjs/core/server/shared.js +12 -8
- package/dist/cjs/core/server/stream/afterTemplate.js +9 -5
- package/dist/cjs/core/server/stream/beforeTemplate.js +10 -6
- package/dist/cjs/core/server/stream/beforeTemplate.worker.js +10 -6
- package/dist/cjs/core/server/stream/createReadableStream.js +9 -5
- package/dist/cjs/core/server/stream/createReadableStream.worker.js +9 -5
- package/dist/cjs/core/server/stream/deferredScript.js +9 -5
- package/dist/cjs/core/server/stream/index.js +9 -5
- package/dist/cjs/core/server/stream/shared.js +9 -5
- package/dist/cjs/core/server/stream/template.js +9 -5
- package/dist/cjs/core/server/string/index.js +9 -5
- package/dist/cjs/core/server/string/loadable.js +9 -5
- package/dist/cjs/core/server/string/ssrData.js +9 -5
- package/dist/cjs/core/server/tracer.js +13 -9
- package/dist/cjs/core/server/utils.js +9 -5
- package/dist/cjs/document/Body.js +9 -5
- package/dist/cjs/document/Comment.js +9 -5
- package/dist/cjs/document/DocumentContext.js +9 -5
- package/dist/cjs/document/DocumentStructureContext.js +9 -5
- package/dist/cjs/document/Head.js +9 -5
- package/dist/cjs/document/Html.js +9 -5
- package/dist/cjs/document/Links.js +9 -5
- package/dist/cjs/document/Root.js +9 -5
- package/dist/cjs/document/Script.js +9 -5
- package/dist/cjs/document/Scripts.js +9 -5
- package/dist/cjs/document/Style.js +9 -5
- package/dist/cjs/document/Title.js +9 -5
- package/dist/cjs/document/cli/index.js +12 -6
- package/dist/cjs/document/constants.js +9 -5
- package/dist/cjs/document/index.js +9 -5
- package/dist/cjs/exports/config-routes.js +12 -8
- package/dist/cjs/exports/head.js +18 -10
- package/dist/cjs/exports/loadable.js +27 -18
- package/dist/cjs/exports/tanstack-router.js +9 -5
- package/dist/cjs/index.js +9 -5
- package/dist/cjs/internal.js +9 -5
- package/dist/cjs/react-server.js +9 -5
- package/dist/cjs/router/cli/code/getClientRoutes/getRoutes.js +9 -5
- package/dist/cjs/router/cli/code/getClientRoutes/index.js +9 -5
- package/dist/cjs/router/cli/code/getClientRoutes/utils.js +9 -5
- package/dist/cjs/router/cli/code/index.js +9 -5
- package/dist/cjs/router/cli/code/inspect.js +9 -5
- package/dist/cjs/router/cli/code/makeLegalIdentifier.js +12 -8
- package/dist/cjs/router/cli/code/nestedRoutes.js +9 -5
- package/dist/cjs/router/cli/code/tanstackTypes.js +9 -5
- package/dist/cjs/router/cli/code/templates.js +9 -5
- package/dist/cjs/router/cli/code/utils.js +9 -5
- package/dist/cjs/router/cli/config-routes/converter.js +9 -5
- package/dist/cjs/router/cli/config-routes/parseRouteConfig.js +9 -5
- package/dist/cjs/router/cli/constants.js +23 -19
- package/dist/cjs/router/cli/entry.js +9 -5
- package/dist/cjs/router/cli/handler.js +9 -5
- package/dist/cjs/router/cli/index.js +9 -5
- package/dist/cjs/router/index.js +9 -5
- package/dist/cjs/router/internal.js +12 -8
- package/dist/cjs/router/runtime/CSSLinks.js +9 -5
- package/dist/cjs/router/runtime/DefaultNotFound.js +9 -5
- package/dist/cjs/router/runtime/DeferredDataScripts.js +12 -8
- package/dist/cjs/router/runtime/DeferredDataScripts.node.js +9 -5
- package/dist/cjs/router/runtime/PrefetchLink.js +162 -26
- package/dist/cjs/router/runtime/constants.js +9 -5
- package/dist/cjs/router/runtime/hooks.js +9 -5
- package/dist/cjs/router/runtime/index.js +15 -10
- package/dist/cjs/router/runtime/internal.js +9 -5
- package/dist/cjs/router/runtime/lifecycle.js +18 -14
- package/dist/cjs/router/runtime/plugin.js +9 -5
- package/dist/cjs/router/runtime/plugin.node.js +9 -5
- package/dist/cjs/router/runtime/routerHelper.js +9 -5
- package/dist/cjs/router/runtime/rsc-router.js +9 -5
- package/dist/cjs/router/runtime/rsc.js +9 -5
- package/dist/cjs/router/runtime/server.js +9 -5
- package/dist/cjs/router/runtime/tanstack/basepathRewrite.js +12 -8
- package/dist/cjs/router/runtime/tanstack/dataMutation.js +9 -5
- package/dist/cjs/router/runtime/tanstack/hydrationBoundary.js +9 -5
- package/dist/cjs/router/runtime/tanstack/outlet.js +10 -6
- package/dist/cjs/router/runtime/tanstack/plugin.js +42 -41
- package/dist/cjs/router/runtime/tanstack/plugin.node.js +9 -5
- package/dist/cjs/router/runtime/tanstack/prefetchLink.js +10 -6
- package/dist/cjs/router/runtime/tanstack/routeTree.js +9 -5
- package/dist/cjs/router/runtime/tanstack/rsc/ClientSlot.js +9 -5
- package/dist/cjs/router/runtime/tanstack/rsc/CompositeComponent.js +9 -5
- package/dist/cjs/router/runtime/tanstack/rsc/ReplayableStream.js +14 -9
- package/dist/cjs/router/runtime/tanstack/rsc/RscNodeRenderer.js +9 -5
- package/dist/cjs/router/runtime/tanstack/rsc/SlotContext.js +9 -5
- package/dist/cjs/router/runtime/tanstack/rsc/client.js +9 -5
- package/dist/cjs/router/runtime/tanstack/rsc/createRscProxy.js +9 -5
- package/dist/cjs/router/runtime/tanstack/rsc/index.js +9 -5
- package/dist/cjs/router/runtime/tanstack/rsc/server.js +9 -5
- package/dist/cjs/router/runtime/tanstack/rsc/slotUsageSanitizer.js +9 -5
- package/dist/cjs/router/runtime/tanstack/rsc/symbols.js +20 -15
- package/dist/cjs/router/runtime/utils.js +9 -5
- package/dist/cjs/router/runtime/withRouter.js +9 -5
- package/dist/cjs/rsc/client.js +12 -8
- package/dist/cjs/rsc/server.js +9 -5
- package/dist/cjs/rsc/server.worker.js +9 -5
- package/dist/cjs/ssr/index.node.js +13 -9
- package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.after.js +9 -5
- package/dist/cjs/ssr/serverRender/renderToString/entry.js +9 -5
- package/dist/cjs/ssr/serverRender/types.js +9 -5
- package/dist/esm/boundary-debugger/index.mjs +6 -6
- package/dist/esm/core/server/federatedCss.mjs +2 -2
- package/dist/esm/core/server/scriptOrder.mjs +2 -2
- package/dist/esm/core/server/stream/beforeTemplate.mjs +1 -1
- package/dist/esm/core/server/stream/beforeTemplate.worker.mjs +1 -1
- package/dist/esm/document/cli/index.mjs +3 -1
- package/dist/esm/exports/head.mjs +9 -5
- package/dist/esm/exports/loadable.mjs +12 -6
- package/dist/esm/router/runtime/PrefetchLink.mjs +153 -21
- package/dist/esm/router/runtime/tanstack/outlet.mjs +1 -1
- package/dist/esm/router/runtime/tanstack/plugin.mjs +33 -36
- package/dist/esm/router/runtime/tanstack/prefetchLink.mjs +1 -1
- package/dist/esm-node/boundary-debugger/index.mjs +6 -6
- package/dist/esm-node/core/server/federatedCss.mjs +2 -2
- package/dist/esm-node/core/server/scriptOrder.mjs +2 -2
- package/dist/esm-node/core/server/stream/beforeTemplate.mjs +1 -1
- package/dist/esm-node/core/server/stream/beforeTemplate.worker.mjs +1 -1
- package/dist/esm-node/document/cli/index.mjs +3 -1
- package/dist/esm-node/exports/head.mjs +9 -5
- package/dist/esm-node/exports/loadable.mjs +12 -6
- package/dist/esm-node/router/runtime/PrefetchLink.mjs +153 -21
- package/dist/esm-node/router/runtime/tanstack/outlet.mjs +1 -1
- package/dist/esm-node/router/runtime/tanstack/plugin.mjs +33 -36
- package/dist/esm-node/router/runtime/tanstack/prefetchLink.mjs +1 -1
- package/dist/types/cli/entry.d.ts +2 -2
- package/dist/types/core/context/response/index.server.d.ts +4 -1
- package/dist/types/core/plugin/index.d.ts +1 -1
- package/dist/types/core/server/utils.d.ts +11 -1
- package/dist/types/exports/head.d.ts +4 -4
- package/dist/types/exports/loadable.d.ts +1 -1
- package/dist/types/router/cli/code/utils.d.ts +1 -1
- package/dist/types/router/cli/entry.d.ts +1 -1
- package/dist/types/router/runtime/PrefetchLink.d.ts +5 -1
- package/package.json +10 -10
|
@@ -24,11 +24,15 @@ function __webpack_require__(moduleId) {
|
|
|
24
24
|
};
|
|
25
25
|
})();
|
|
26
26
|
(()=>{
|
|
27
|
-
__webpack_require__.d = (exports1,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
(()=>{
|
|
@@ -33,11 +33,15 @@ function __webpack_require__(moduleId) {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
(()=>{
|
|
36
|
-
__webpack_require__.d = (exports1,
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
37
|
+
var define = (defs, kind)=>{
|
|
38
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
39
|
+
enumerable: true,
|
|
40
|
+
[kind]: defs[key]
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
define(getters, "get");
|
|
44
|
+
define(values, "value");
|
|
41
45
|
};
|
|
42
46
|
})();
|
|
43
47
|
(()=>{
|
|
@@ -56,10 +60,6 @@ function __webpack_require__(moduleId) {
|
|
|
56
60
|
var __webpack_exports__ = {};
|
|
57
61
|
(()=>{
|
|
58
62
|
__webpack_require__.r(__webpack_exports__);
|
|
59
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
60
|
-
default: ()=>__rspack_default_export,
|
|
61
|
-
ssr: ()=>ssr
|
|
62
|
-
});
|
|
63
63
|
var _serverRender__rspack_import_0 = __webpack_require__("./serverRender");
|
|
64
64
|
var _serverRender__rspack_import_0_default = /*#__PURE__*/ __webpack_require__.n(_serverRender__rspack_import_0);
|
|
65
65
|
var _serverRender_tracker__rspack_import_1 = __webpack_require__("./serverRender/tracker");
|
|
@@ -109,6 +109,10 @@ var __webpack_exports__ = {};
|
|
|
109
109
|
})
|
|
110
110
|
});
|
|
111
111
|
const __rspack_default_export = ssr;
|
|
112
|
+
__webpack_require__.d(__webpack_exports__, {}, {
|
|
113
|
+
default: __rspack_default_export,
|
|
114
|
+
ssr: ssr
|
|
115
|
+
});
|
|
112
116
|
})();
|
|
113
117
|
exports["default"] = __webpack_exports__["default"];
|
|
114
118
|
exports.ssr = __webpack_exports__.ssr;
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
(()=>{
|
|
@@ -10,11 +10,15 @@ var __webpack_require__ = {};
|
|
|
10
10
|
};
|
|
11
11
|
})();
|
|
12
12
|
(()=>{
|
|
13
|
-
__webpack_require__.d = (exports1,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
(()=>{
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
3
|
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
(()=>{
|
|
@@ -50,7 +50,7 @@ const readQueryEnabledOverride = ()=>{
|
|
|
50
50
|
const detectLanguage = ()=>{
|
|
51
51
|
if ("u" < typeof document) return 'en';
|
|
52
52
|
const htmlLanguage = document.documentElement.lang;
|
|
53
|
-
if (htmlLanguage) return htmlLanguage.split('-')[0] || 'en';
|
|
53
|
+
if ('' !== htmlLanguage) return htmlLanguage.split('-')[0] || 'en';
|
|
54
54
|
if ("u" < typeof window) return 'en';
|
|
55
55
|
return window.location.pathname.split('/').filter(Boolean)[0] || 'en';
|
|
56
56
|
};
|
|
@@ -69,7 +69,7 @@ const getBoundaryId = (element)=>element.dataset.modernBoundaryId ?? element.dat
|
|
|
69
69
|
const collectBoundaryElements = (legacySelector)=>{
|
|
70
70
|
const elements = new Set();
|
|
71
71
|
for (const element of document.querySelectorAll(boundarySelector))elements.add(element);
|
|
72
|
-
if (
|
|
72
|
+
if (void 0 === legacySelector || '' === legacySelector) return Array.from(elements);
|
|
73
73
|
try {
|
|
74
74
|
for (const element of document.querySelectorAll(legacySelector))elements.add(element);
|
|
75
75
|
} catch {}
|
|
@@ -113,7 +113,7 @@ function BoundaryDebugger({ controlMode = 'visible', enabledByDefault = false, l
|
|
|
113
113
|
const seenBoxes = new Set();
|
|
114
114
|
const nextBoxes = collectBoundaryElements(legacySelector).map((element)=>{
|
|
115
115
|
const boundaryId = getBoundaryId(element);
|
|
116
|
-
if (
|
|
116
|
+
if (void 0 === boundaryId || '' === boundaryId) return;
|
|
117
117
|
const rect = element.getBoundingClientRect();
|
|
118
118
|
if (rect.width <= 0 || rect.height <= 0) return;
|
|
119
119
|
const rectKey = formatRectKey(rect);
|
|
@@ -124,7 +124,7 @@ function BoundaryDebugger({ controlMode = 'visible', enabledByDefault = false, l
|
|
|
124
124
|
const color = boundary?.color ?? palette[hashBoundaryId(boundaryId) % palette.length];
|
|
125
125
|
const label = boundary?.label ?? boundary?.appId ?? boundaryId;
|
|
126
126
|
const expose = element.dataset.modernMfExpose;
|
|
127
|
-
const detail = expose && expose !== label && expose !== boundaryId ? expose : void 0;
|
|
127
|
+
const detail = void 0 !== expose && '' !== expose && expose !== label && expose !== boundaryId ? expose : void 0;
|
|
128
128
|
const box = {
|
|
129
129
|
color,
|
|
130
130
|
height: rect.height,
|
|
@@ -134,7 +134,7 @@ function BoundaryDebugger({ controlMode = 'visible', enabledByDefault = false, l
|
|
|
134
134
|
top: rect.top,
|
|
135
135
|
width: rect.width
|
|
136
136
|
};
|
|
137
|
-
if (detail) box.detail = detail;
|
|
137
|
+
if (void 0 !== detail) box.detail = detail;
|
|
138
138
|
return box;
|
|
139
139
|
}).filter((box)=>void 0 !== box);
|
|
140
140
|
setBoxes(nextBoxes);
|
|
@@ -227,7 +227,7 @@ function BoundaryDebugger({ controlMode = 'visible', enabledByDefault = false, l
|
|
|
227
227
|
/*#__PURE__*/ jsx("span", {
|
|
228
228
|
children: box.label
|
|
229
229
|
}),
|
|
230
|
-
box.detail ? /*#__PURE__*/ jsx("span", {
|
|
230
|
+
void 0 !== box.detail && '' !== box.detail ? /*#__PURE__*/ jsx("span", {
|
|
231
231
|
style: {
|
|
232
232
|
font: '700 10px/1.1 system-ui, sans-serif',
|
|
233
233
|
opacity: 0.82,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { attributesToString } from "./utils.mjs";
|
|
2
2
|
const createFederatedCssLinks = (assets, options)=>{
|
|
3
|
-
if (
|
|
3
|
+
if (void 0 === assets || 0 === assets.length) return '';
|
|
4
4
|
const seen = new Set(options.existingAssets || []);
|
|
5
5
|
const attributes = attributesToString(options.attributes || {});
|
|
6
6
|
const links = [];
|
|
7
|
-
for (const asset of assets)if (!(
|
|
7
|
+
for (const asset of assets)if (!('' === asset || seen.has(asset) || options.template.includes(asset))) {
|
|
8
8
|
seen.add(asset);
|
|
9
9
|
links.push(`<link${attributes} href="${asset}" rel="stylesheet" />`);
|
|
10
10
|
}
|
|
@@ -16,10 +16,10 @@ function isEntryScript(src, entryName, asyncEntry) {
|
|
|
16
16
|
return basename === `${prefix}.js` || basename.startsWith(`${prefix}.`) || basename.startsWith(`${prefix}-`);
|
|
17
17
|
}
|
|
18
18
|
function injectBeforeHydrationEntryScript(template, scripts, entryName = 'index') {
|
|
19
|
-
if (
|
|
19
|
+
if ('' === scripts) return template;
|
|
20
20
|
const scriptTags = getScriptTags(template);
|
|
21
21
|
const target = scriptTags.find((match)=>isEntryScript(match.src, entryName, false)) ?? scriptTags.find((match)=>isEntryScript(match.src, entryName, true));
|
|
22
|
-
if (
|
|
22
|
+
if (void 0 === target) return template;
|
|
23
23
|
return `${template.slice(0, target.index)}${scripts}${template.slice(target.index)}`;
|
|
24
24
|
}
|
|
25
25
|
export { injectBeforeHydrationEntryScript };
|
|
@@ -45,7 +45,7 @@ async function buildShellBeforeTemplate(beforeAppTemplate, options) {
|
|
|
45
45
|
if (!index) return;
|
|
46
46
|
const routeId = match.route.id;
|
|
47
47
|
if (routeId) return routeAssets[routeId];
|
|
48
|
-
}).filter(
|
|
48
|
+
}).filter((routeManifest)=>void 0 !== routeManifest) ?? [];
|
|
49
49
|
}
|
|
50
50
|
const asyncEntry = routeAssets[`async-${entryName}`];
|
|
51
51
|
if (asyncEntry) matchedRouteManifests.push(asyncEntry);
|
|
@@ -39,7 +39,7 @@ async function buildShellBeforeTemplate(beforeAppTemplate, options) {
|
|
|
39
39
|
if (!index) return;
|
|
40
40
|
const routeId = match.route.id;
|
|
41
41
|
if (routeId) return routeAssets[routeId];
|
|
42
|
-
}).filter(
|
|
42
|
+
}).filter((routeManifest)=>void 0 !== routeManifest) ?? [];
|
|
43
43
|
}
|
|
44
44
|
const asyncEntry = routeAssets[`async-${entryName}`];
|
|
45
45
|
if (asyncEntry) matchedRouteManifests.push(asyncEntry);
|
|
@@ -299,7 +299,7 @@ const documentPlugin = ()=>({
|
|
|
299
299
|
const { entrypoints, internalDirectory, appDirectory } = api.getAppContext();
|
|
300
300
|
const documentFilePath = getDocumentByEntryName(entrypoints, entryName, appDirectory);
|
|
301
301
|
if (!documentFilePath) return null;
|
|
302
|
-
return async (
|
|
302
|
+
return async (templateData)=>{
|
|
303
303
|
const config = api.getNormalizedConfig();
|
|
304
304
|
const documentParams = getDocParams({
|
|
305
305
|
config: config,
|
|
@@ -318,6 +318,8 @@ const documentPlugin = ()=>({
|
|
|
318
318
|
debug("entry %s's document jsx rendered html: %o", entryName, html);
|
|
319
319
|
const { partialsByEntrypoint } = api.getAppContext();
|
|
320
320
|
html = processPartials(html, entryName, partialsByEntrypoint || {});
|
|
321
|
+
const htmlPlugin = templateData.htmlPlugin || templateData.htmlWebpackPlugin || templateData.htmlRspackPlugin;
|
|
322
|
+
if (!htmlPlugin) throw new Error('Failed to get HTML plugin tags from template parameters.');
|
|
321
323
|
const { scripts, links, metas, titles } = extractHtmlTags(htmlPlugin, templateParameters);
|
|
322
324
|
return processPlaceholders(html, config, scripts, links, metas, titles);
|
|
323
325
|
};
|
|
@@ -40,7 +40,7 @@ const createAttributeDatum = (attributes)=>({
|
|
|
40
40
|
const createTitleDatum = (title, attributes)=>({
|
|
41
41
|
toComponent: ()=>[],
|
|
42
42
|
toString: ()=>{
|
|
43
|
-
if (
|
|
43
|
+
if (void 0 === title || '' === title) return '';
|
|
44
44
|
const attrs = attributesToString(attributes, true);
|
|
45
45
|
return `<title ${attrs}>${escapeHtml(title)}</title>`;
|
|
46
46
|
}
|
|
@@ -57,6 +57,10 @@ const createEmptyHelmetState = ()=>({
|
|
|
57
57
|
style: createDatum('style', []),
|
|
58
58
|
title: createTitleDatum(void 0, {})
|
|
59
59
|
});
|
|
60
|
+
const normalizeHelmetTitle = (title)=>{
|
|
61
|
+
if ('string' == typeof title) return title;
|
|
62
|
+
if (Array.isArray(title)) return title.map((part)=>String(part)).join('');
|
|
63
|
+
};
|
|
60
64
|
const mergeAttributes = (current, next)=>({
|
|
61
65
|
...current,
|
|
62
66
|
...next ?? {}
|
|
@@ -86,7 +90,7 @@ const collectHelmetProps = (current, props)=>{
|
|
|
86
90
|
const baseState = current ?? createEmptyHelmetState();
|
|
87
91
|
const draft = {
|
|
88
92
|
base: [
|
|
89
|
-
...props.base ? [
|
|
93
|
+
...void 0 !== props.base ? [
|
|
90
94
|
props.base
|
|
91
95
|
] : []
|
|
92
96
|
],
|
|
@@ -107,11 +111,11 @@ const collectHelmetProps = (current, props)=>{
|
|
|
107
111
|
style: [
|
|
108
112
|
...props.style ?? []
|
|
109
113
|
],
|
|
110
|
-
title:
|
|
114
|
+
title: normalizeHelmetTitle(props.title),
|
|
111
115
|
titleAttributes: props.titleAttributes ?? {}
|
|
112
116
|
};
|
|
113
117
|
collectChildren(props.children, draft);
|
|
114
|
-
const title = draft.title && props.titleTemplate ? props.titleTemplate.replaceAll('%s', draft.title) : draft.title ?? props.defaultTitle;
|
|
118
|
+
const title = void 0 !== draft.title && '' !== draft.title && void 0 !== props.titleTemplate ? props.titleTemplate.replaceAll('%s', draft.title) : draft.title ?? props.defaultTitle;
|
|
115
119
|
return {
|
|
116
120
|
base: createDatum('base', [
|
|
117
121
|
...baseState.__baseTags ?? [],
|
|
@@ -173,7 +177,7 @@ const collectHelmetProps = (current, props)=>{
|
|
|
173
177
|
};
|
|
174
178
|
const head_Helmet = (props)=>{
|
|
175
179
|
const runtimeContext = react.useContext(InternalRuntimeContext);
|
|
176
|
-
if (runtimeContext &&
|
|
180
|
+
if (null !== runtimeContext && false === runtimeContext.isBrowser) {
|
|
177
181
|
runtimeContext._helmetContext ??= {};
|
|
178
182
|
runtimeContext._helmetContext.helmet = collectHelmetProps(runtimeContext._helmetContext.helmet ?? void 0, props);
|
|
179
183
|
return null;
|
|
@@ -1,21 +1,27 @@
|
|
|
1
1
|
import * as __rspack_external__loadable_component_0aaae075 from "@loadable/component";
|
|
2
2
|
export * from "@loadable/component";
|
|
3
|
+
function asLoadableNamespace(value) {
|
|
4
|
+
return 'object' == typeof value && null !== value ? value : {};
|
|
5
|
+
}
|
|
3
6
|
function resolveLoadable(module) {
|
|
4
|
-
const namespace = module;
|
|
5
|
-
const defaultExport = namespace.default;
|
|
7
|
+
const namespace = asLoadableNamespace(module);
|
|
8
|
+
const defaultExport = asLoadableNamespace(namespace.default);
|
|
6
9
|
const candidates = [
|
|
7
10
|
module,
|
|
8
11
|
namespace.default,
|
|
9
12
|
defaultExport?.default
|
|
10
13
|
];
|
|
11
14
|
const loadable = candidates.find((candidate)=>'function' == typeof candidate);
|
|
12
|
-
if (
|
|
15
|
+
if ('function' != typeof loadable) throw new TypeError('Modern.js runtime loadable export must resolve to a function');
|
|
13
16
|
return loadable;
|
|
14
17
|
}
|
|
15
18
|
const loadable_loadable = resolveLoadable(__rspack_external__loadable_component_0aaae075);
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
+
const loadableNamespace = asLoadableNamespace(__rspack_external__loadable_component_0aaae075);
|
|
20
|
+
const loadableDefaultNamespace = asLoadableNamespace(loadableNamespace.default);
|
|
21
|
+
const callableLoadableNamespace = asLoadableNamespace(loadable_loadable);
|
|
22
|
+
const lazy = loadableNamespace.lazy ?? loadableDefaultNamespace.lazy ?? callableLoadableNamespace.lazy;
|
|
23
|
+
const loadableReady = loadableNamespace.loadableReady ?? loadableDefaultNamespace.loadableReady ?? callableLoadableNamespace.loadableReady;
|
|
24
|
+
const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = loadableNamespace.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED ?? loadableDefaultNamespace.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED ?? callableLoadableNamespace.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
|
|
19
25
|
const exports_loadable = loadable_loadable;
|
|
20
26
|
export default exports_loadable;
|
|
21
27
|
export { __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, lazy, loadableReady };
|
|
@@ -10,45 +10,142 @@ function composeEventHandlers(theirHandler, ourHandler) {
|
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
12
|
const ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
const DEFAULT_PREFETCH_BEHAVIOR = 'render';
|
|
14
|
+
const DEFAULT_PRELOAD_BEHAVIOR = 'viewport';
|
|
15
|
+
const INTENT_DELAY = 100;
|
|
16
|
+
const VIEWPORT_ROOT_MARGIN = '200px';
|
|
17
|
+
const MAX_CONCURRENT_WARMUPS = 4;
|
|
18
|
+
const WARMUP_TTL = 30000;
|
|
19
|
+
const SLOW_EFFECTIVE_TYPES = new Set([
|
|
20
|
+
'slow-2g',
|
|
21
|
+
'2g'
|
|
22
|
+
]);
|
|
23
|
+
const warmupCache = new Map();
|
|
24
|
+
const warmupQueue = [];
|
|
25
|
+
let activeWarmups = 0;
|
|
26
|
+
const getWarmupTimestamp = ()=>performance.now();
|
|
27
|
+
const getConnection = ()=>{
|
|
28
|
+
const nav = globalThis.navigator;
|
|
29
|
+
return nav?.connection || nav?.mozConnection || nav?.webkitConnection;
|
|
30
|
+
};
|
|
31
|
+
const shouldWarmupOnCurrentNetwork = ()=>{
|
|
32
|
+
const connection = getConnection();
|
|
33
|
+
if (connection?.saveData) return false;
|
|
34
|
+
if ('string' == typeof connection?.effectiveType && SLOW_EFFECTIVE_TYPES.has(connection.effectiveType)) return false;
|
|
35
|
+
return true;
|
|
36
|
+
};
|
|
37
|
+
const pruneWarmupCache = (now = getWarmupTimestamp())=>{
|
|
38
|
+
for (const [key, timestamp] of warmupCache)if (now - timestamp > WARMUP_TTL) warmupCache.delete(key);
|
|
39
|
+
};
|
|
40
|
+
const runNextWarmup = ()=>{
|
|
41
|
+
while(activeWarmups < MAX_CONCURRENT_WARMUPS && warmupQueue.length > 0){
|
|
42
|
+
const task = warmupQueue.shift();
|
|
43
|
+
if (task.cancelled) continue;
|
|
44
|
+
activeWarmups += 1;
|
|
45
|
+
task.run().catch((error)=>{
|
|
46
|
+
console.error(error);
|
|
47
|
+
warmupCache.delete(task.key);
|
|
48
|
+
}).finally(()=>{
|
|
49
|
+
activeWarmups -= 1;
|
|
50
|
+
runNextWarmup();
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
const scheduleWarmup = (key, run)=>{
|
|
55
|
+
if (!shouldWarmupOnCurrentNetwork()) return ()=>{};
|
|
56
|
+
pruneWarmupCache();
|
|
57
|
+
if (warmupCache.has(key)) return ()=>{};
|
|
58
|
+
warmupCache.set(key, getWarmupTimestamp());
|
|
59
|
+
const task = {
|
|
60
|
+
key,
|
|
61
|
+
run,
|
|
62
|
+
cancelled: false
|
|
63
|
+
};
|
|
64
|
+
warmupQueue.push(task);
|
|
65
|
+
runNextWarmup();
|
|
66
|
+
return ()=>{
|
|
67
|
+
task.cancelled = true;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
const setRef = (ref, value)=>{
|
|
71
|
+
if (!ref) return;
|
|
72
|
+
if ('function' == typeof ref) return void ref(value);
|
|
73
|
+
try {
|
|
74
|
+
ref.current = value;
|
|
75
|
+
} catch {}
|
|
76
|
+
};
|
|
77
|
+
const isDataWarmupEnabled = (route)=>{
|
|
78
|
+
const handle = route.handle;
|
|
79
|
+
return handle?.navigationWarmup?.data === true;
|
|
80
|
+
};
|
|
81
|
+
function usePrefetchBehavior(prefetch, preload, theirElementProps) {
|
|
82
|
+
const [maybeWarmup, setMaybeWarmup] = react.useState(false);
|
|
15
83
|
const [shouldPrefetch, setShouldPrefetch] = react.useState(false);
|
|
84
|
+
const [shouldPreload, setShouldPreload] = react.useState(false);
|
|
85
|
+
const [viewportElement, setViewportElement] = react.useState(null);
|
|
16
86
|
const { onFocus, onBlur, onMouseEnter, onMouseLeave, onTouchStart } = theirElementProps;
|
|
17
87
|
react.useEffect(()=>{
|
|
18
88
|
if ('render' === prefetch) setShouldPrefetch(true);
|
|
89
|
+
if ('render' === preload) setShouldPreload(true);
|
|
19
90
|
}, [
|
|
20
|
-
prefetch
|
|
91
|
+
prefetch,
|
|
92
|
+
preload
|
|
21
93
|
]);
|
|
22
94
|
const setIntent = ()=>{
|
|
23
|
-
if ('intent' === prefetch)
|
|
95
|
+
if ('intent' === prefetch || 'intent' === preload) setMaybeWarmup(true);
|
|
24
96
|
};
|
|
25
97
|
const cancelIntent = ()=>{
|
|
26
|
-
if ('intent' === prefetch) {
|
|
27
|
-
|
|
98
|
+
if ('intent' === prefetch || 'intent' === preload) {
|
|
99
|
+
setMaybeWarmup(false);
|
|
28
100
|
setShouldPrefetch(false);
|
|
101
|
+
setShouldPreload(false);
|
|
29
102
|
}
|
|
30
103
|
};
|
|
31
104
|
react.useEffect(()=>{
|
|
32
|
-
if (
|
|
105
|
+
if (maybeWarmup) {
|
|
33
106
|
const id = setTimeout(()=>{
|
|
34
|
-
setShouldPrefetch(true);
|
|
35
|
-
|
|
107
|
+
if ('intent' === prefetch) setShouldPrefetch(true);
|
|
108
|
+
if ('intent' === preload) setShouldPreload(true);
|
|
109
|
+
}, INTENT_DELAY);
|
|
36
110
|
return ()=>{
|
|
37
111
|
clearTimeout(id);
|
|
38
112
|
};
|
|
39
113
|
}
|
|
40
114
|
}, [
|
|
41
|
-
|
|
115
|
+
maybeWarmup,
|
|
116
|
+
prefetch,
|
|
117
|
+
preload
|
|
118
|
+
]);
|
|
119
|
+
react.useEffect(()=>{
|
|
120
|
+
if (!viewportElement || 'viewport' !== prefetch && 'viewport' !== preload || "u" < typeof IntersectionObserver) return;
|
|
121
|
+
const observer = new IntersectionObserver((entries)=>{
|
|
122
|
+
if (!entries.some((entry)=>entry.isIntersecting)) return;
|
|
123
|
+
if ('viewport' === prefetch) setShouldPrefetch(true);
|
|
124
|
+
if ('viewport' === preload) setShouldPreload(true);
|
|
125
|
+
observer.disconnect();
|
|
126
|
+
}, {
|
|
127
|
+
rootMargin: VIEWPORT_ROOT_MARGIN
|
|
128
|
+
});
|
|
129
|
+
observer.observe(viewportElement);
|
|
130
|
+
return ()=>{
|
|
131
|
+
observer.disconnect();
|
|
132
|
+
};
|
|
133
|
+
}, [
|
|
134
|
+
prefetch,
|
|
135
|
+
preload,
|
|
136
|
+
viewportElement
|
|
42
137
|
]);
|
|
43
138
|
return [
|
|
44
139
|
shouldPrefetch,
|
|
140
|
+
shouldPreload,
|
|
45
141
|
{
|
|
46
142
|
onFocus: composeEventHandlers(onFocus, setIntent),
|
|
47
143
|
onBlur: composeEventHandlers(onBlur, cancelIntent),
|
|
48
144
|
onMouseEnter: composeEventHandlers(onMouseEnter, setIntent),
|
|
49
145
|
onMouseLeave: composeEventHandlers(onMouseLeave, cancelIntent),
|
|
50
146
|
onTouchStart: composeEventHandlers(onTouchStart, setIntent)
|
|
51
|
-
}
|
|
147
|
+
},
|
|
148
|
+
setViewportElement
|
|
52
149
|
];
|
|
53
150
|
}
|
|
54
151
|
async function loadRouteModule(route, routeAssets) {
|
|
@@ -83,14 +180,34 @@ const getDataHref = (route, pathname, basename)=>{
|
|
|
83
180
|
const url = getRequestUrl(path, id);
|
|
84
181
|
return createDataHref(url.toString());
|
|
85
182
|
};
|
|
86
|
-
const PrefetchPageLinks = ({ path })=>{
|
|
183
|
+
const PrefetchPageLinks = ({ path, includeData })=>{
|
|
87
184
|
const { pathname } = path;
|
|
88
185
|
const context = useContext(InternalRuntimeContext);
|
|
89
186
|
const { routeManifest, routes } = context;
|
|
90
187
|
const { routeAssets } = routeManifest || {};
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
188
|
+
const allowNetworkWarmup = shouldWarmupOnCurrentNetwork();
|
|
189
|
+
const matches = useMemo(()=>Array.isArray(routes) ? matchRoutes(routes, pathname) : [], [
|
|
190
|
+
pathname,
|
|
191
|
+
routes
|
|
192
|
+
]);
|
|
193
|
+
react.useEffect(()=>{
|
|
194
|
+
if (!allowNetworkWarmup || !Array.isArray(matches) || !routeAssets || !__webpack_chunk_load__) return;
|
|
195
|
+
const cancellations = matches.map((match)=>{
|
|
196
|
+
const routeId = match.route.id;
|
|
197
|
+
const routeAsset = routeId ? routeAssets[routeId] : void 0;
|
|
198
|
+
const chunkIds = routeAsset?.chunkIds;
|
|
199
|
+
if (!routeId || !Array.isArray(chunkIds) || 0 === chunkIds.length) return ()=>{};
|
|
200
|
+
return scheduleWarmup(`route-module:${routeId}:${chunkIds.join(',')}`, ()=>loadRouteModule(match.route, routeAssets));
|
|
201
|
+
});
|
|
202
|
+
return ()=>{
|
|
203
|
+
cancellations.forEach((cancel)=>cancel());
|
|
204
|
+
};
|
|
205
|
+
}, [
|
|
206
|
+
allowNetworkWarmup,
|
|
207
|
+
matches,
|
|
208
|
+
routeAssets
|
|
209
|
+
]);
|
|
210
|
+
if (!allowNetworkWarmup || !includeData || !window._SSR_DATA) return null;
|
|
94
211
|
return /*#__PURE__*/ jsx(PrefetchDataLinks, {
|
|
95
212
|
matches: matches,
|
|
96
213
|
path: path,
|
|
@@ -102,7 +219,7 @@ const PrefetchDataLinks = ({ matches, path, routeManifest })=>{
|
|
|
102
219
|
const currentMatches = useMatches();
|
|
103
220
|
const basename = useHref('/');
|
|
104
221
|
const dataHrefs = useMemo(()=>matches?.filter((match, index)=>{
|
|
105
|
-
if (!match.route.loader || 'function' != typeof match.route.loader || 0 === match.route.loader.length) return false;
|
|
222
|
+
if (!isDataWarmupEnabled(match.route) || !match.route.loader || 'function' != typeof match.route.loader || 0 === match.route.loader.length) return false;
|
|
106
223
|
if (match.route.shouldRevalidate) {
|
|
107
224
|
const currentUrl = new URL(location.pathname + location.search + location.hash, window.origin);
|
|
108
225
|
const nextUrl = new URL(pathname + search + hash, window.origin);
|
|
@@ -129,20 +246,35 @@ const PrefetchDataLinks = ({ matches, path, routeManifest })=>{
|
|
|
129
246
|
children: dataHrefs
|
|
130
247
|
});
|
|
131
248
|
};
|
|
132
|
-
const
|
|
249
|
+
const normalizePreloadBehavior = (preload, prefetch)=>{
|
|
250
|
+
if (false === preload || 'none' === preload) return 'none';
|
|
251
|
+
if (void 0 !== preload) return preload;
|
|
252
|
+
if ('none' === prefetch) return 'none';
|
|
253
|
+
return DEFAULT_PRELOAD_BEHAVIOR;
|
|
254
|
+
};
|
|
255
|
+
const createPrefetchLink = (Link)=>/*#__PURE__*/ react.forwardRef(({ to, prefetch = DEFAULT_PREFETCH_BEHAVIOR, preload, ...props }, forwardedRef)=>{
|
|
133
256
|
const isAbsolute = 'string' == typeof to && ABSOLUTE_URL_REGEX.test(to);
|
|
134
|
-
const
|
|
257
|
+
const resolvedPreload = normalizePreloadBehavior(preload, prefetch);
|
|
258
|
+
const [shouldPrefetch, shouldPreload, prefetchHandlers, setViewportElement] = usePrefetchBehavior(prefetch, resolvedPreload, props);
|
|
259
|
+
const setAnchorRef = react.useCallback((element)=>{
|
|
260
|
+
setViewportElement(element);
|
|
261
|
+
setRef(forwardedRef, element);
|
|
262
|
+
}, [
|
|
263
|
+
forwardedRef,
|
|
264
|
+
setViewportElement
|
|
265
|
+
]);
|
|
135
266
|
const resolvedPath = useResolvedPath(to);
|
|
136
267
|
return /*#__PURE__*/ jsxs(Fragment, {
|
|
137
268
|
children: [
|
|
138
269
|
/*#__PURE__*/ jsx(Link, {
|
|
139
|
-
ref:
|
|
270
|
+
ref: setAnchorRef,
|
|
140
271
|
to: to,
|
|
141
272
|
...props,
|
|
142
273
|
...prefetchHandlers
|
|
143
274
|
}),
|
|
144
|
-
shouldPrefetch
|
|
145
|
-
path: resolvedPath
|
|
275
|
+
(shouldPrefetch || shouldPreload) && !isAbsolute ? /*#__PURE__*/ jsx(PrefetchPageLinks, {
|
|
276
|
+
path: resolvedPath,
|
|
277
|
+
includeData: shouldPrefetch
|
|
146
278
|
}) : null
|
|
147
279
|
]
|
|
148
280
|
});
|
|
@@ -5,7 +5,7 @@ const outlet_Outlet = /*#__PURE__*/ memo(function() {
|
|
|
5
5
|
return /*#__PURE__*/ jsx(Outlet, {});
|
|
6
6
|
});
|
|
7
7
|
function withModernRouteMatchContext(component, _routeId) {
|
|
8
|
-
if (
|
|
8
|
+
if (null == component) return component;
|
|
9
9
|
const Component = component;
|
|
10
10
|
const WrappedRouteComponent = (props)=>/*#__PURE__*/ createElement(Component, props);
|
|
11
11
|
const preloadable = component;
|