@bleedingdev/modern-js-runtime 3.5.0-ultramodern.9 → 3.5.0-ultramodern.91
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 +13 -3
- package/dist/cjs/cli/registry.js +18 -0
- package/dist/cjs/cli/ssr/index.js +3 -2
- package/dist/cjs/cli/ssr/loadable-bundler-plugin.js +8 -4
- package/dist/cjs/core/browser/hydrate.js +16 -2
- package/dist/cjs/core/browser/index.js +15 -3
- package/dist/cjs/core/context/index.js +3 -0
- package/dist/cjs/core/context/public.js +49 -0
- package/dist/cjs/core/context/runtime.js +6 -8
- package/dist/cjs/core/react/wrapper.js +57 -0
- package/dist/cjs/core/server/federatedCss.js +7 -3
- package/dist/cjs/core/server/requestHandler.js +15 -45
- package/dist/cjs/core/server/requestResponse.js +83 -0
- package/dist/cjs/core/server/routerCleanup.js +16 -6
- package/dist/cjs/core/server/scriptOrder.js +13 -10
- package/dist/cjs/core/server/stream/afterTemplate.js +9 -5
- package/dist/cjs/core/server/stream/template.js +3 -3
- package/dist/cjs/core/server/string/loadable.js +3 -11
- package/dist/cjs/index.js +7 -6
- package/dist/cjs/module-federation/consume-surface.js +199 -0
- package/dist/cjs/module-federation/distributed-ssr.js +134 -0
- package/dist/cjs/module-federation/index.js +258 -120
- package/dist/cjs/module-federation/last-known-good.js +124 -0
- package/dist/cjs/module-federation/manifest-recovery-runtime-plugin.js +140 -0
- package/dist/cjs/module-federation/surface-resolution-types.js +61 -0
- package/dist/cjs/router/cli/code/nestedRoutes.js +3 -0
- package/dist/cjs/router/cli/code/templates.js +3 -2
- package/dist/cjs/router/cli/constants.js +1 -0
- package/dist/cjs/router/cli/nestedRoutesSpec.js +3 -1
- package/dist/cjs/router/runtime/hooks.js +7 -6
- package/dist/cjs/router/runtime/internal.js +30 -16
- package/dist/cjs/router/runtime/plugin.js +6 -7
- package/dist/cjs/router/runtime/provider.js +58 -12
- package/dist/esm/boundary-debugger/index.mjs +13 -3
- package/dist/esm/cli/code.mjs +12 -12
- package/dist/esm/cli/registry.mjs +0 -0
- package/dist/esm/cli/ssr/index.mjs +3 -2
- package/dist/esm/cli/ssr/loadable-bundler-plugin.mjs +8 -4
- package/dist/esm/core/browser/hydrate.mjs +15 -4
- package/dist/esm/core/browser/index.mjs +11 -5
- package/dist/esm/core/context/index.mjs +1 -1
- package/dist/esm/core/context/public.mjs +5 -0
- package/dist/esm/core/context/runtime.mjs +4 -6
- package/dist/esm/core/react/wrapper.mjs +58 -1
- package/dist/esm/core/server/federatedCss.mjs +7 -3
- package/dist/esm/core/server/requestHandler.mjs +15 -45
- package/dist/esm/core/server/requestResponse.mjs +39 -0
- package/dist/esm/core/server/routerCleanup.mjs +11 -4
- package/dist/esm/core/server/scriptOrder.mjs +11 -8
- package/dist/esm/core/server/stream/afterTemplate.mjs +10 -6
- package/dist/esm/core/server/stream/template.mjs +3 -3
- package/dist/esm/core/server/string/loadable.mjs +3 -8
- package/dist/esm/exports/loadable.mjs +3 -3
- package/dist/esm/index.mjs +2 -1
- package/dist/esm/module-federation/consume-surface.mjs +158 -0
- package/dist/esm/module-federation/distributed-ssr.mjs +81 -0
- package/dist/esm/module-federation/index.mjs +6 -0
- package/dist/esm/module-federation/last-known-good.mjs +80 -0
- package/dist/esm/module-federation/manifest-recovery-runtime-plugin.mjs +100 -0
- package/dist/esm/module-federation/surface-resolution-types.mjs +8 -0
- package/dist/esm/router/cli/code/index.mjs +5 -5
- package/dist/esm/router/cli/code/nestedRoutes.mjs +3 -0
- package/dist/esm/router/cli/code/templates.mjs +3 -2
- package/dist/esm/router/cli/constants.mjs +1 -0
- package/dist/esm/router/cli/handler.mjs +3 -3
- package/dist/esm/router/cli/nestedRoutesSpec.mjs +3 -1
- package/dist/esm/router/runtime/hooks.mjs +7 -6
- package/dist/esm/router/runtime/internal.mjs +26 -18
- package/dist/esm/router/runtime/plugin.mjs +6 -7
- package/dist/esm/router/runtime/provider.mjs +56 -13
- package/dist/esm-node/boundary-debugger/index.mjs +13 -3
- package/dist/esm-node/cli/code.mjs +12 -12
- package/dist/esm-node/cli/registry.mjs +1 -0
- package/dist/esm-node/cli/ssr/index.mjs +3 -2
- package/dist/esm-node/cli/ssr/loadable-bundler-plugin.mjs +8 -4
- package/dist/esm-node/core/browser/hydrate.mjs +15 -4
- package/dist/esm-node/core/browser/index.mjs +11 -5
- package/dist/esm-node/core/context/index.mjs +1 -1
- package/dist/esm-node/core/context/public.mjs +6 -0
- package/dist/esm-node/core/context/runtime.mjs +4 -6
- package/dist/esm-node/core/react/wrapper.mjs +58 -1
- package/dist/esm-node/core/server/federatedCss.mjs +7 -3
- package/dist/esm-node/core/server/requestHandler.mjs +15 -45
- package/dist/esm-node/core/server/requestResponse.mjs +40 -0
- package/dist/esm-node/core/server/routerCleanup.mjs +11 -4
- package/dist/esm-node/core/server/scriptOrder.mjs +11 -8
- package/dist/esm-node/core/server/stream/afterTemplate.mjs +10 -6
- package/dist/esm-node/core/server/stream/template.mjs +3 -3
- package/dist/esm-node/core/server/string/loadable.mjs +3 -8
- package/dist/esm-node/exports/loadable.mjs +3 -3
- package/dist/esm-node/index.mjs +2 -1
- package/dist/esm-node/module-federation/consume-surface.mjs +159 -0
- package/dist/esm-node/module-federation/distributed-ssr.mjs +82 -0
- package/dist/esm-node/module-federation/index.mjs +6 -0
- package/dist/esm-node/module-federation/last-known-good.mjs +81 -0
- package/dist/esm-node/module-federation/manifest-recovery-runtime-plugin.mjs +101 -0
- package/dist/esm-node/module-federation/surface-resolution-types.mjs +9 -0
- package/dist/esm-node/router/cli/code/index.mjs +5 -5
- package/dist/esm-node/router/cli/code/nestedRoutes.mjs +3 -0
- package/dist/esm-node/router/cli/code/templates.mjs +3 -2
- package/dist/esm-node/router/cli/constants.mjs +1 -0
- package/dist/esm-node/router/cli/handler.mjs +3 -3
- package/dist/esm-node/router/cli/nestedRoutesSpec.mjs +3 -1
- package/dist/esm-node/router/runtime/hooks.mjs +7 -6
- package/dist/esm-node/router/runtime/internal.mjs +26 -18
- package/dist/esm-node/router/runtime/plugin.mjs +6 -7
- package/dist/esm-node/router/runtime/provider.mjs +56 -13
- package/dist/types/boundary-debugger/index.d.ts +1 -1
- package/dist/types/cli/registry.d.ts +2 -0
- package/dist/types/common.d.ts +8 -1
- package/dist/types/core/browser/hydrate.d.ts +2 -1
- package/dist/types/core/browser/index.d.ts +4 -0
- package/dist/types/core/context/index.d.ts +26 -10
- package/dist/types/core/context/monitors/default.d.ts +10 -2
- package/dist/types/core/context/monitors/index.d.ts +1 -1
- package/dist/types/core/context/monitors/index.server.d.ts +2 -2
- package/dist/types/core/context/public.d.ts +27 -0
- package/dist/types/core/context/runtime.d.ts +12 -22
- package/dist/types/core/react/index.d.ts +1 -1
- package/dist/types/core/server/requestResponse.d.ts +15 -0
- package/dist/types/core/server/routerCleanup.d.ts +2 -1
- package/dist/types/core/server/scriptOrder.d.ts +1 -1
- package/dist/types/core/server/stream/shared.d.ts +2 -2
- package/dist/types/core/server/string/loadable.d.ts +0 -2
- package/dist/types/exports/head.d.ts +1 -1
- package/dist/types/index.d.ts +5 -5
- package/dist/types/internal.d.ts +0 -1
- package/dist/types/module-federation/consume-surface.d.ts +104 -0
- package/dist/types/module-federation/distributed-ssr.d.ts +61 -0
- package/dist/types/module-federation/index.d.ts +6 -0
- package/dist/types/module-federation/last-known-good.d.ts +72 -0
- package/dist/types/module-federation/manifest-recovery-runtime-plugin.d.ts +25 -0
- package/dist/types/module-federation/surface-resolution-types.d.ts +23 -0
- package/dist/types/router/cli/constants.d.ts +1 -0
- package/dist/types/router/runtime/hooks.d.ts +10 -6
- package/dist/types/router/runtime/internal.d.ts +13 -3
- package/dist/types/router/runtime/plugin.d.ts +1 -1
- package/dist/types/router/runtime/plugin.node.d.ts +1 -1
- package/dist/types/router/runtime/provider.d.ts +28 -11
- package/dist/types/router/runtime/types.d.ts +27 -5
- package/package.json +46 -27
- package/dist/cjs/exports/tanstack-router.js +0 -83
- package/dist/esm/exports/tanstack-router.mjs +0 -30
- package/dist/esm-node/exports/tanstack-router.mjs +0 -31
- package/dist/types/exports/tanstack-router.d.ts +0 -88
|
@@ -30,14 +30,22 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
31
|
ROUTER_CLEANUP_ERROR: ()=>ROUTER_CLEANUP_ERROR,
|
|
32
32
|
createRouterCleanup: ()=>createRouterCleanup,
|
|
33
|
-
|
|
33
|
+
finishWithRouterCleanup: ()=>finishWithRouterCleanup,
|
|
34
|
+
runWithRouterCleanupOnError: ()=>runWithRouterCleanupOnError
|
|
34
35
|
});
|
|
35
36
|
const lifecycle_js_namespaceObject = require("../../router/runtime/lifecycle.js");
|
|
36
37
|
const ROUTER_CLEANUP_ERROR = 'An error occurs during router runtime cleanup';
|
|
37
|
-
async function
|
|
38
|
-
const routerCleanup = createRouterCleanup(runtimeContext, onError);
|
|
38
|
+
async function runWithRouterCleanupOnError(routerCleanup, callback) {
|
|
39
39
|
try {
|
|
40
|
-
return await callback(
|
|
40
|
+
return await callback();
|
|
41
|
+
} catch (error) {
|
|
42
|
+
await routerCleanup.run();
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async function finishWithRouterCleanup(routerCleanup, callback) {
|
|
47
|
+
try {
|
|
48
|
+
return await callback();
|
|
41
49
|
} finally{
|
|
42
50
|
if (!routerCleanup.deferred) await routerCleanup.run();
|
|
43
51
|
}
|
|
@@ -99,11 +107,13 @@ function createRouterCleanup(runtimeContext, onError) {
|
|
|
99
107
|
}
|
|
100
108
|
exports.ROUTER_CLEANUP_ERROR = __webpack_exports__.ROUTER_CLEANUP_ERROR;
|
|
101
109
|
exports.createRouterCleanup = __webpack_exports__.createRouterCleanup;
|
|
102
|
-
exports.
|
|
110
|
+
exports.finishWithRouterCleanup = __webpack_exports__.finishWithRouterCleanup;
|
|
111
|
+
exports.runWithRouterCleanupOnError = __webpack_exports__.runWithRouterCleanupOnError;
|
|
103
112
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
104
113
|
"ROUTER_CLEANUP_ERROR",
|
|
105
114
|
"createRouterCleanup",
|
|
106
|
-
"
|
|
115
|
+
"finishWithRouterCleanup",
|
|
116
|
+
"runWithRouterCleanupOnError"
|
|
107
117
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
108
118
|
Object.defineProperty(exports, '__esModule', {
|
|
109
119
|
value: true
|
|
@@ -29,7 +29,7 @@ var __webpack_exports__ = {};
|
|
|
29
29
|
__webpack_require__.r(__webpack_exports__);
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
31
|
createRouteHydrationScriptTags: ()=>createRouteHydrationScriptTags,
|
|
32
|
-
|
|
32
|
+
getMatchedRouteChunks: ()=>getMatchedRouteChunks,
|
|
33
33
|
injectBeforeHydrationEntryScript: ()=>injectBeforeHydrationEntryScript,
|
|
34
34
|
orderHydrationScriptChunks: ()=>orderHydrationScriptChunks,
|
|
35
35
|
replaceChunkJsPlaceholder: ()=>replaceChunkJsPlaceholder
|
|
@@ -78,6 +78,10 @@ function getMatchedRouteAssets(runtimeContext, routeManifest) {
|
|
|
78
78
|
const matchedRouteIds = (0, lifecycle_js_namespaceObject.getRouterMatchedRouteIds)(runtimeContext) ?? [];
|
|
79
79
|
return matchedRouteIds.flatMap((routeId)=>routeAssets[routeId]?.assets ?? []);
|
|
80
80
|
}
|
|
81
|
+
function getMatchedRouteChunks(runtimeContext, routeManifest, routeAssetToChunk) {
|
|
82
|
+
if (!routeManifest) return [];
|
|
83
|
+
return getMatchedRouteAssets(runtimeContext, routeManifest).map(routeAssetToChunk);
|
|
84
|
+
}
|
|
81
85
|
const orderHydrationScriptChunks = ({ asyncEntryChunks, collectedChunks, matchedRouteChunks, entryName })=>{
|
|
82
86
|
const asyncEntryScriptChunks = [];
|
|
83
87
|
const asyncEntryDependencyChunks = [];
|
|
@@ -108,23 +112,22 @@ function createRouteHydrationScriptTags(runtimeContext, entryName, options = {})
|
|
|
108
112
|
const { nonce, template } = options;
|
|
109
113
|
const routeAssets = getRouteAssets(runtimeContext);
|
|
110
114
|
if (void 0 === routeAssets) return '';
|
|
111
|
-
const
|
|
112
|
-
const
|
|
113
|
-
...
|
|
114
|
-
routeAssets[`async-${entryName}`]
|
|
115
|
-
].filter((
|
|
116
|
-
const jsAssets = Array.from(new Set(assetEntries.flatMap((entry)=>(entry.assets ?? []).filter((asset)=>asset.endsWith('.js')))));
|
|
115
|
+
const existingScriptSrcs = void 0 === template ? new Set() : new Set(getScriptTags(template).map(({ src })=>src));
|
|
116
|
+
const jsAssets = Array.from(new Set([
|
|
117
|
+
...getMatchedRouteAssets(runtimeContext),
|
|
118
|
+
...routeAssets[`async-${entryName}`]?.assets ?? []
|
|
119
|
+
].filter((asset)=>asset.endsWith('.js'))));
|
|
117
120
|
const nonceAttr = void 0 === nonce || '' === nonce ? '' : ` nonce="${nonce}"`;
|
|
118
|
-
return jsAssets.filter((asset)
|
|
121
|
+
return jsAssets.filter((asset)=>!existingScriptSrcs.has(asset)).map((asset)=>`<script src=${asset}${nonceAttr}></script>`).join(' ');
|
|
119
122
|
}
|
|
120
123
|
exports.createRouteHydrationScriptTags = __webpack_exports__.createRouteHydrationScriptTags;
|
|
121
|
-
exports.
|
|
124
|
+
exports.getMatchedRouteChunks = __webpack_exports__.getMatchedRouteChunks;
|
|
122
125
|
exports.injectBeforeHydrationEntryScript = __webpack_exports__.injectBeforeHydrationEntryScript;
|
|
123
126
|
exports.orderHydrationScriptChunks = __webpack_exports__.orderHydrationScriptChunks;
|
|
124
127
|
exports.replaceChunkJsPlaceholder = __webpack_exports__.replaceChunkJsPlaceholder;
|
|
125
128
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
126
129
|
"createRouteHydrationScriptTags",
|
|
127
|
-
"
|
|
130
|
+
"getMatchedRouteChunks",
|
|
128
131
|
"injectBeforeHydrationEntryScript",
|
|
129
132
|
"orderHydrationScriptChunks",
|
|
130
133
|
"replaceChunkJsPlaceholder"
|
|
@@ -40,15 +40,16 @@ const external_utils_js_namespaceObject = require("../utils.js");
|
|
|
40
40
|
function buildShellAfterTemplate(afterAppTemplate, options) {
|
|
41
41
|
const { request, config, ssrConfig, runtimeContext, renderLevel, entryName } = options;
|
|
42
42
|
const callbacks = [
|
|
43
|
+
(template)=>injectJs(template, entryName, config.nonce),
|
|
43
44
|
createReplaceSSRData({
|
|
44
45
|
request,
|
|
45
46
|
ssrConfig,
|
|
46
47
|
nonce: config.nonce,
|
|
47
48
|
useJsonScript: config.useJsonScript,
|
|
48
49
|
runtimeContext,
|
|
49
|
-
renderLevel
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
renderLevel,
|
|
51
|
+
entryName
|
|
52
|
+
})
|
|
52
53
|
];
|
|
53
54
|
async function injectJs(template, entryName, nonce) {
|
|
54
55
|
const jsChunkStr = (0, external_scriptOrder_js_namespaceObject.createRouteHydrationScriptTags)(runtimeContext, entryName, {
|
|
@@ -61,7 +62,7 @@ function buildShellAfterTemplate(afterAppTemplate, options) {
|
|
|
61
62
|
return (0, external_shared_js_namespaceObject.buildHtml)(afterAppTemplate, callbacks);
|
|
62
63
|
}
|
|
63
64
|
function createReplaceSSRData(options) {
|
|
64
|
-
const { runtimeContext, nonce, renderLevel, useJsonScript, ssrConfig } = options;
|
|
65
|
+
const { runtimeContext, nonce, renderLevel, useJsonScript, ssrConfig, entryName } = options;
|
|
65
66
|
const { request, reporter } = runtimeContext.ssrContext;
|
|
66
67
|
const headers = 'object' == typeof ssrConfig && ssrConfig.unsafeHeaders ? Object.fromEntries(Object.entries(request.headers).filter(([key, _])=>ssrConfig.unsafeHeaders?.map((header)=>header.toLowerCase())?.includes(key.toLowerCase()))) : void 0;
|
|
67
68
|
const ssrData = {
|
|
@@ -92,7 +93,10 @@ function createReplaceSSRData(options) {
|
|
|
92
93
|
const ssrDataScript = useJsonScript ? `<script type="application/json" id="${external_constants_js_namespaceObject.SSR_DATA_JSON_ID}">${serializeSSRData}</script>` : `<script${attrsStr}>window._SSR_DATA = ${serializeSSRData}</script>`;
|
|
93
94
|
const hydrationScripts = (0, lifecycle_js_namespaceObject.getRouterHydrationScripts)(runtimeContext);
|
|
94
95
|
const ssrScripts = hydrationScripts.length ? `${ssrDataScript}\n${hydrationScripts.join('\n')}` : ssrDataScript;
|
|
95
|
-
return (template)=>
|
|
96
|
+
return (template)=>{
|
|
97
|
+
if (!template.includes(external_constants_js_namespaceObject_1.SSR_DATA_PLACEHOLDER)) return template;
|
|
98
|
+
return (0, external_scriptOrder_js_namespaceObject.replaceChunkJsPlaceholder)(template, ssrScripts, entryName, external_constants_js_namespaceObject_1.SSR_DATA_PLACEHOLDER);
|
|
99
|
+
};
|
|
96
100
|
}
|
|
97
101
|
exports.buildShellAfterTemplate = __webpack_exports__.buildShellAfterTemplate;
|
|
98
102
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
@@ -34,12 +34,12 @@ const external_afterTemplate_js_namespaceObject = require("./afterTemplate.js");
|
|
|
34
34
|
const external_beforeTemplate_js_namespaceObject = require("./beforeTemplate.js");
|
|
35
35
|
const HTML_SEPARATOR = '<!--<?- html ?>-->';
|
|
36
36
|
const getTemplates = async (htmlTemplate, options)=>{
|
|
37
|
-
const
|
|
37
|
+
const builtTemplate = await (0, external_afterTemplate_js_namespaceObject.buildShellAfterTemplate)(htmlTemplate, options);
|
|
38
|
+
const [beforeAppTemplate = '', afterAppHtmlTemplate = ''] = builtTemplate.split(HTML_SEPARATOR) || [];
|
|
38
39
|
const builtBeforeTemplate = await (0, external_beforeTemplate_js_namespaceObject.buildShellBeforeTemplate)(beforeAppTemplate, options);
|
|
39
|
-
const builtAfterTemplate = await (0, external_afterTemplate_js_namespaceObject.buildShellAfterTemplate)(afterAppHtmlTemplate, options);
|
|
40
40
|
return {
|
|
41
41
|
shellBefore: builtBeforeTemplate,
|
|
42
|
-
shellAfter:
|
|
42
|
+
shellAfter: afterAppHtmlTemplate
|
|
43
43
|
};
|
|
44
44
|
};
|
|
45
45
|
exports.getTemplates = __webpack_exports__.getTemplates;
|
|
@@ -28,8 +28,7 @@ var __webpack_require__ = {};
|
|
|
28
28
|
var __webpack_exports__ = {};
|
|
29
29
|
__webpack_require__.r(__webpack_exports__);
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
-
LoadableCollector: ()=>LoadableCollector
|
|
32
|
-
orderHydrationScriptChunks: ()=>external_scriptOrder_js_namespaceObject.orderHydrationScriptChunks
|
|
31
|
+
LoadableCollector: ()=>LoadableCollector
|
|
33
32
|
});
|
|
34
33
|
const server_namespaceObject = require("@loadable/server");
|
|
35
34
|
const external_federatedCss_js_namespaceObject = require("../federatedCss.js");
|
|
@@ -61,11 +60,6 @@ const readAsset = async (chunk)=>{
|
|
|
61
60
|
return fs.readFile(filepath, 'utf-8');
|
|
62
61
|
};
|
|
63
62
|
class LoadableCollector {
|
|
64
|
-
getMatchedRouteChunks() {
|
|
65
|
-
const { routeManifest, runtimeContext } = this.options;
|
|
66
|
-
if (!routeManifest) return [];
|
|
67
|
-
return (0, external_scriptOrder_js_namespaceObject.getMatchedRouteAssets)(runtimeContext, routeManifest).map(routeAssetToChunk);
|
|
68
|
-
}
|
|
69
63
|
collect(comopnent) {
|
|
70
64
|
const { stats, entryName } = this.options;
|
|
71
65
|
if (!stats) return comopnent;
|
|
@@ -87,7 +81,7 @@ class LoadableCollector {
|
|
|
87
81
|
]));
|
|
88
82
|
} catch (e) {}
|
|
89
83
|
const collectedChunks = extractor ? extractor.getChunkAssets(extractor.chunks) : [];
|
|
90
|
-
const matchedRouteChunks =
|
|
84
|
+
const matchedRouteChunks = (0, external_scriptOrder_js_namespaceObject.getMatchedRouteChunks)(options.runtimeContext, options.routeManifest, routeAssetToChunk);
|
|
91
85
|
const orderedScriptChunks = (0, external_scriptOrder_js_namespaceObject.orderHydrationScriptChunks)({
|
|
92
86
|
asyncEntryChunks: asyncChunks,
|
|
93
87
|
collectedChunks,
|
|
@@ -166,10 +160,8 @@ class LoadableCollector {
|
|
|
166
160
|
}
|
|
167
161
|
}
|
|
168
162
|
exports.LoadableCollector = __webpack_exports__.LoadableCollector;
|
|
169
|
-
exports.orderHydrationScriptChunks = __webpack_exports__.orderHydrationScriptChunks;
|
|
170
163
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
171
|
-
"LoadableCollector"
|
|
172
|
-
"orderHydrationScriptChunks"
|
|
164
|
+
"LoadableCollector"
|
|
173
165
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
174
166
|
Object.defineProperty(exports, '__esModule', {
|
|
175
167
|
value: true
|
package/dist/cjs/index.js
CHANGED
|
@@ -28,19 +28,20 @@ var __webpack_require__ = {};
|
|
|
28
28
|
var __webpack_exports__ = {};
|
|
29
29
|
__webpack_require__.r(__webpack_exports__);
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
-
RuntimeContext: ()=>
|
|
32
|
-
defineRuntimeConfig: ()=>
|
|
33
|
-
getMonitors: ()=>
|
|
31
|
+
RuntimeContext: ()=>public_js_namespaceObject.RuntimeContext,
|
|
32
|
+
defineRuntimeConfig: ()=>config_js_namespaceObject.defineRuntimeConfig,
|
|
33
|
+
getMonitors: ()=>index_js_namespaceObject.getMonitors,
|
|
34
34
|
getRequest: ()=>request_index_js_namespaceObject.getRequest,
|
|
35
35
|
isBrowser: ()=>external_common_js_namespaceObject.isBrowser,
|
|
36
36
|
redirect: ()=>response_index_js_namespaceObject.redirect,
|
|
37
37
|
setHeaders: ()=>response_index_js_namespaceObject.setHeaders,
|
|
38
38
|
setStatus: ()=>response_index_js_namespaceObject.setStatus,
|
|
39
|
-
useRuntimeContext: ()=>
|
|
39
|
+
useRuntimeContext: ()=>public_js_namespaceObject.useRuntimeContext
|
|
40
40
|
});
|
|
41
41
|
const external_common_js_namespaceObject = require("./common.js");
|
|
42
|
-
const
|
|
43
|
-
const
|
|
42
|
+
const config_js_namespaceObject = require("./core/config.js");
|
|
43
|
+
const index_js_namespaceObject = require("./core/context/monitors/index.js");
|
|
44
|
+
const public_js_namespaceObject = require("./core/context/public.js");
|
|
44
45
|
const request_index_js_namespaceObject = require("./core/context/request/index.js");
|
|
45
46
|
const response_index_js_namespaceObject = require("./core/context/response/index.js");
|
|
46
47
|
exports.RuntimeContext = __webpack_exports__.RuntimeContext;
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
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");
|
|
13
|
+
};
|
|
14
|
+
})();
|
|
15
|
+
(()=>{
|
|
16
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
17
|
+
})();
|
|
18
|
+
(()=>{
|
|
19
|
+
__webpack_require__.r = (exports1)=>{
|
|
20
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
21
|
+
value: 'Module'
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
24
|
+
value: true
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
})();
|
|
28
|
+
var __webpack_exports__ = {};
|
|
29
|
+
__webpack_require__.r(__webpack_exports__);
|
|
30
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
+
consumeSurface: ()=>consumeSurface,
|
|
32
|
+
createSurfaceConsumer: ()=>createSurfaceConsumer
|
|
33
|
+
});
|
|
34
|
+
const external_index_js_namespaceObject = require("./index.js");
|
|
35
|
+
const external_surface_resolution_types_js_namespaceObject = require("./surface-resolution-types.js");
|
|
36
|
+
function classifyDiscoveryError(code) {
|
|
37
|
+
switch(code){
|
|
38
|
+
case 'major-not-published':
|
|
39
|
+
case 'stale-record':
|
|
40
|
+
return 'version-skew';
|
|
41
|
+
case 'identity-mismatch':
|
|
42
|
+
return 'contract';
|
|
43
|
+
case 'unknown-unit':
|
|
44
|
+
case 'unknown-surface':
|
|
45
|
+
case 'provider-unavailable':
|
|
46
|
+
return 'remote-unavailable';
|
|
47
|
+
default:
|
|
48
|
+
return 'remote-unavailable';
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function toRemoteString(ref) {
|
|
52
|
+
return void 0 === (0, external_surface_resolution_types_js_namespaceObject.validateSurfaceRef)(ref) ? (0, external_surface_resolution_types_js_namespaceObject.formatSurfaceRef)(ref) : `${ref.unitId}#${ref.surfaceId}`;
|
|
53
|
+
}
|
|
54
|
+
async function reportFailure(options, ref, base) {
|
|
55
|
+
const remote = toRemoteString(ref);
|
|
56
|
+
const telemetry = (0, external_index_js_namespaceObject.createModuleFederationFallbackTelemetry)({
|
|
57
|
+
appName: options.appName,
|
|
58
|
+
classification: base.classification,
|
|
59
|
+
error: base.error ?? base.discoveryError,
|
|
60
|
+
metadata: {
|
|
61
|
+
env: options.env,
|
|
62
|
+
surfaceRef: remote,
|
|
63
|
+
...base.discoveryError ? {
|
|
64
|
+
discoveryErrorCode: base.discoveryError.code
|
|
65
|
+
} : {},
|
|
66
|
+
...base.resolved ? {
|
|
67
|
+
buildMarker: base.resolved.buildMarker
|
|
68
|
+
} : {}
|
|
69
|
+
},
|
|
70
|
+
phase: base.phase,
|
|
71
|
+
remote,
|
|
72
|
+
status: 'degraded'
|
|
73
|
+
});
|
|
74
|
+
try {
|
|
75
|
+
await (0, external_index_js_namespaceObject.emitModuleFederationFallbackTelemetry)({
|
|
76
|
+
appName: options.appName,
|
|
77
|
+
classification: base.classification,
|
|
78
|
+
error: base.error ?? base.discoveryError,
|
|
79
|
+
metadata: telemetry.metadata,
|
|
80
|
+
phase: base.phase,
|
|
81
|
+
remote,
|
|
82
|
+
status: 'degraded'
|
|
83
|
+
}, options.telemetry ?? {});
|
|
84
|
+
} catch {}
|
|
85
|
+
const failure = {
|
|
86
|
+
ref,
|
|
87
|
+
env: options.env,
|
|
88
|
+
phase: base.phase,
|
|
89
|
+
classification: base.classification,
|
|
90
|
+
telemetry
|
|
91
|
+
};
|
|
92
|
+
if (base.discoveryError) failure.discoveryError = base.discoveryError;
|
|
93
|
+
if (void 0 !== base.error) failure.error = base.error;
|
|
94
|
+
if (base.resolved) failure.resolved = base.resolved;
|
|
95
|
+
const critical = (options.classification ?? 'critical') === 'critical';
|
|
96
|
+
const reason = base.discoveryError ?? (void 0 !== base.error ? base.error : (0, external_surface_resolution_types_js_namespaceObject.createDiscoveryError)('identity-mismatch', remote, `resolved record for "${remote}" is incompatible`, {
|
|
97
|
+
env: options.env
|
|
98
|
+
}));
|
|
99
|
+
let degradedValue;
|
|
100
|
+
try {
|
|
101
|
+
degradedValue = await options.degraded(failure);
|
|
102
|
+
} catch (handlerError) {
|
|
103
|
+
try {
|
|
104
|
+
await (0, external_index_js_namespaceObject.emitModuleFederationFallbackTelemetry)({
|
|
105
|
+
appName: options.appName,
|
|
106
|
+
classification: base.classification,
|
|
107
|
+
error: handlerError,
|
|
108
|
+
metadata: {
|
|
109
|
+
...telemetry.metadata,
|
|
110
|
+
degradedHandlerFailed: true
|
|
111
|
+
},
|
|
112
|
+
phase: base.phase,
|
|
113
|
+
remote,
|
|
114
|
+
status: 'failed'
|
|
115
|
+
}, options.telemetry ?? {});
|
|
116
|
+
} catch {}
|
|
117
|
+
if (critical) throw reason;
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
if (critical) throw reason;
|
|
121
|
+
return degradedValue;
|
|
122
|
+
}
|
|
123
|
+
async function consumeSurface(options) {
|
|
124
|
+
let ref;
|
|
125
|
+
if ('string' == typeof options.ref) {
|
|
126
|
+
const parsed = (0, external_surface_resolution_types_js_namespaceObject.parseSurfaceRef)(options.ref);
|
|
127
|
+
if (!parsed.ok) {
|
|
128
|
+
const hashIndex = options.ref.indexOf('#');
|
|
129
|
+
const echoed = -1 === hashIndex ? {
|
|
130
|
+
unitId: options.ref,
|
|
131
|
+
surfaceId: ''
|
|
132
|
+
} : {
|
|
133
|
+
unitId: options.ref.slice(0, hashIndex),
|
|
134
|
+
surfaceId: options.ref.slice(hashIndex + 1)
|
|
135
|
+
};
|
|
136
|
+
return reportFailure(options, echoed, {
|
|
137
|
+
phase: 'discovery',
|
|
138
|
+
classification: 'remote-unavailable',
|
|
139
|
+
discoveryError: (0, external_surface_resolution_types_js_namespaceObject.createDiscoveryError)('unknown-surface', options.ref, `SurfaceRef "${options.ref}" is not a valid canonical reference (${parsed.error.code}).`, {
|
|
140
|
+
parseError: parsed.error,
|
|
141
|
+
env: options.env
|
|
142
|
+
})
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
ref = parsed.ref;
|
|
146
|
+
} else ref = options.ref;
|
|
147
|
+
let resolution;
|
|
148
|
+
try {
|
|
149
|
+
resolution = await options.provider.resolve(ref, options.env);
|
|
150
|
+
} catch (error) {
|
|
151
|
+
return reportFailure(options, ref, {
|
|
152
|
+
phase: 'discovery',
|
|
153
|
+
classification: (0, external_index_js_namespaceObject.classifyModuleFederationFallback)(error),
|
|
154
|
+
error
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
if (!resolution.ok) return reportFailure(options, ref, {
|
|
158
|
+
phase: 'discovery',
|
|
159
|
+
classification: classifyDiscoveryError(resolution.error.code),
|
|
160
|
+
discoveryError: resolution.error
|
|
161
|
+
});
|
|
162
|
+
const resolved = resolution.unit;
|
|
163
|
+
if ('incompatible' === resolved.compatibility.status) return reportFailure(options, ref, {
|
|
164
|
+
phase: 'discovery',
|
|
165
|
+
classification: 'contract',
|
|
166
|
+
resolved
|
|
167
|
+
});
|
|
168
|
+
try {
|
|
169
|
+
return await options.load({
|
|
170
|
+
resolved,
|
|
171
|
+
ref,
|
|
172
|
+
env: options.env
|
|
173
|
+
});
|
|
174
|
+
} catch (error) {
|
|
175
|
+
return reportFailure(options, ref, {
|
|
176
|
+
phase: 'load',
|
|
177
|
+
classification: (0, external_index_js_namespaceObject.classifyModuleFederationFallback)(error),
|
|
178
|
+
error,
|
|
179
|
+
resolved
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
function createSurfaceConsumer(base) {
|
|
184
|
+
return function(options) {
|
|
185
|
+
return consumeSurface({
|
|
186
|
+
...base,
|
|
187
|
+
...options
|
|
188
|
+
});
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
exports.consumeSurface = __webpack_exports__.consumeSurface;
|
|
192
|
+
exports.createSurfaceConsumer = __webpack_exports__.createSurfaceConsumer;
|
|
193
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
194
|
+
"consumeSurface",
|
|
195
|
+
"createSurfaceConsumer"
|
|
196
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
197
|
+
Object.defineProperty(exports, '__esModule', {
|
|
198
|
+
value: true
|
|
199
|
+
});
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
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");
|
|
13
|
+
};
|
|
14
|
+
})();
|
|
15
|
+
(()=>{
|
|
16
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
17
|
+
})();
|
|
18
|
+
(()=>{
|
|
19
|
+
__webpack_require__.r = (exports1)=>{
|
|
20
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
21
|
+
value: 'Module'
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
24
|
+
value: true
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
})();
|
|
28
|
+
var __webpack_exports__ = {};
|
|
29
|
+
__webpack_require__.r(__webpack_exports__);
|
|
30
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
+
DISTRIBUTED_SSR_FRAGMENTS_LOCALS_KEY: ()=>DISTRIBUTED_SSR_FRAGMENTS_LOCALS_KEY,
|
|
32
|
+
DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY: ()=>DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY,
|
|
33
|
+
DistributedSsrBoundary: ()=>DistributedSsrBoundary,
|
|
34
|
+
createDistributedSsrComponent: ()=>createDistributedSsrComponent,
|
|
35
|
+
distributedSsrFragmentKey: ()=>distributedSsrFragmentKey,
|
|
36
|
+
useDistributedSsrFragmentProps: ()=>useDistributedSsrFragmentProps
|
|
37
|
+
});
|
|
38
|
+
const jsx_runtime_namespaceObject = require("react/jsx-runtime");
|
|
39
|
+
const runtime_js_namespaceObject = require("../core/context/runtime.js");
|
|
40
|
+
const DISTRIBUTED_SSR_FRAGMENTS_LOCALS_KEY = '__modernDistributedSsrFragments';
|
|
41
|
+
const DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY = '__modernDistributedSsrFragmentRequest';
|
|
42
|
+
function distributedSsrFragmentKey(remote, expose) {
|
|
43
|
+
return `${remote}::${expose}`;
|
|
44
|
+
}
|
|
45
|
+
function getDistributedSsrFragmentContext(response) {
|
|
46
|
+
const locals = response?.locals;
|
|
47
|
+
if (!locals || 'object' != typeof locals) return;
|
|
48
|
+
const context = locals[DISTRIBUTED_SSR_FRAGMENTS_LOCALS_KEY];
|
|
49
|
+
if (!context || 'object' != typeof context) return;
|
|
50
|
+
return context;
|
|
51
|
+
}
|
|
52
|
+
function useDistributedSsrFragmentProps({ boundaryId, expose }) {
|
|
53
|
+
const runtimeContext = (0, runtime_js_namespaceObject.useRuntimeContext)();
|
|
54
|
+
const locals = runtimeContext.requestContext?.response?.locals;
|
|
55
|
+
const request = locals && 'object' == typeof locals ? locals[DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY] : void 0;
|
|
56
|
+
if (!request || 'object' != typeof request || request.boundaryId !== boundaryId || request.expose !== expose) throw new Error(`Distributed SSR fragment request contract mismatch for ${boundaryId} ${expose}.`);
|
|
57
|
+
const props = request.props;
|
|
58
|
+
if (!props || 'object' != typeof props || Array.isArray(props)) throw new Error(`Distributed SSR fragment request props must be an object for ${boundaryId} ${expose}.`);
|
|
59
|
+
return props;
|
|
60
|
+
}
|
|
61
|
+
function isThenable(value) {
|
|
62
|
+
return 'function' == typeof value.then;
|
|
63
|
+
}
|
|
64
|
+
function DistributedSsrBoundary({ children, expose, fallback, fragmentProps = {}, remote }) {
|
|
65
|
+
const runtimeContext = (0, runtime_js_namespaceObject.useRuntimeContext)();
|
|
66
|
+
const key = distributedSsrFragmentKey(remote, expose);
|
|
67
|
+
const attributes = {
|
|
68
|
+
'data-modern-distributed-ssr-boundary': key
|
|
69
|
+
};
|
|
70
|
+
if (runtimeContext.isBrowser) return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
|
|
71
|
+
...attributes,
|
|
72
|
+
children: children
|
|
73
|
+
});
|
|
74
|
+
const fragmentContext = getDistributedSsrFragmentContext(runtimeContext.requestContext?.response);
|
|
75
|
+
if (!fragmentContext) return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
|
|
76
|
+
...attributes,
|
|
77
|
+
children: children
|
|
78
|
+
});
|
|
79
|
+
const fragmentOrPromise = fragmentContext.resolve?.(remote, expose, fragmentProps) ?? fragmentContext.fragments?.[key];
|
|
80
|
+
if (fragmentOrPromise && isThenable(fragmentOrPromise)) throw fragmentOrPromise;
|
|
81
|
+
const fragment = fragmentOrPromise;
|
|
82
|
+
if (fragment?.status === 'ready') return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
|
|
83
|
+
...attributes,
|
|
84
|
+
"data-modern-distributed-ssr-build": fragment.buildMarker,
|
|
85
|
+
"data-modern-distributed-ssr-digest": fragment.digest,
|
|
86
|
+
"data-modern-distributed-ssr-status": "ready",
|
|
87
|
+
dangerouslySetInnerHTML: {
|
|
88
|
+
__html: fragment.html
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
|
|
92
|
+
...attributes,
|
|
93
|
+
"data-modern-distributed-ssr-reason": fragment?.reason ?? 'missing',
|
|
94
|
+
"data-modern-distributed-ssr-status": "degraded",
|
|
95
|
+
children: fallback
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
function createDistributedSsrComponent({ createComponent, expose, fallback, remote }) {
|
|
99
|
+
let RemoteComponent;
|
|
100
|
+
function DeferredRemoteComponent(props) {
|
|
101
|
+
RemoteComponent ??= createComponent();
|
|
102
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(RemoteComponent, {
|
|
103
|
+
...props
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
return function(props) {
|
|
107
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(DistributedSsrBoundary, {
|
|
108
|
+
expose: expose,
|
|
109
|
+
fallback: fallback,
|
|
110
|
+
fragmentProps: props,
|
|
111
|
+
remote: remote,
|
|
112
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(DeferredRemoteComponent, {
|
|
113
|
+
...props
|
|
114
|
+
})
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
exports.DISTRIBUTED_SSR_FRAGMENTS_LOCALS_KEY = __webpack_exports__.DISTRIBUTED_SSR_FRAGMENTS_LOCALS_KEY;
|
|
119
|
+
exports.DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY = __webpack_exports__.DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY;
|
|
120
|
+
exports.DistributedSsrBoundary = __webpack_exports__.DistributedSsrBoundary;
|
|
121
|
+
exports.createDistributedSsrComponent = __webpack_exports__.createDistributedSsrComponent;
|
|
122
|
+
exports.distributedSsrFragmentKey = __webpack_exports__.distributedSsrFragmentKey;
|
|
123
|
+
exports.useDistributedSsrFragmentProps = __webpack_exports__.useDistributedSsrFragmentProps;
|
|
124
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
125
|
+
"DISTRIBUTED_SSR_FRAGMENTS_LOCALS_KEY",
|
|
126
|
+
"DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY",
|
|
127
|
+
"DistributedSsrBoundary",
|
|
128
|
+
"createDistributedSsrComponent",
|
|
129
|
+
"distributedSsrFragmentKey",
|
|
130
|
+
"useDistributedSsrFragmentProps"
|
|
131
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
132
|
+
Object.defineProperty(exports, '__esModule', {
|
|
133
|
+
value: true
|
|
134
|
+
});
|