@bleedingdev/modern-js-runtime 3.9.0-ultramodern.3 → 3.9.0-ultramodern.5
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/cli/code.js +3 -1
- package/dist/cjs/cli/ssr/index.js +2 -74
- package/dist/cjs/core/browser/hydrate.js +6 -1
- package/dist/cjs/core/context/index.js +4 -43
- package/dist/cjs/core/context/public.js +4 -7
- package/dist/cjs/core/context/runtime.js +17 -5
- package/dist/cjs/core/react/wrapper.js +22 -65
- package/dist/cjs/core/server/helmet.js +5 -4
- package/dist/cjs/core/server/requestResponse.js +4 -4
- package/dist/cjs/core/server/routerCleanup.js +2 -2
- package/dist/cjs/core/server/shared.js +171 -4
- package/dist/cjs/core/server/stream/afterTemplate.js +21 -16
- package/dist/cjs/core/server/stream/beforeTemplate.js +34 -25
- package/dist/cjs/core/server/stream/beforeTemplate.worker.js +28 -21
- package/dist/cjs/core/server/stream/createReadableStream.js +208 -123
- package/dist/cjs/core/server/stream/createReadableStream.worker.js +159 -90
- package/dist/cjs/core/server/stream/deferredScript.js +3 -3
- package/dist/cjs/core/server/stream/shared.js +2 -2
- package/dist/cjs/core/server/string/index.js +100 -64
- package/dist/cjs/core/server/string/loadable.js +34 -19
- package/dist/cjs/core/server/string/ssrData.js +5 -12
- package/dist/cjs/core/server/utils.js +1 -2
- package/dist/cjs/exports/head.js +7 -14
- package/dist/cjs/router/runtime/PrefetchLink.js +67 -123
- package/dist/cjs/router/runtime/hooks.js +13 -2
- package/dist/cjs/router/runtime/internal.js +7 -45
- package/dist/cjs/router/runtime/plugin.js +2 -8
- package/dist/cjs/router/runtime/plugin.node.js +2 -30
- package/dist/cjs/router/runtime/redirect.js +1 -1
- package/dist/esm/cli/code.mjs +3 -1
- package/dist/esm/cli/ssr/index.mjs +3 -72
- package/dist/esm/core/browser/hydrate.mjs +7 -2
- package/dist/esm/core/context/index.mjs +2 -5
- package/dist/esm/core/context/public.mjs +1 -5
- package/dist/esm/core/context/runtime.mjs +13 -4
- package/dist/esm/core/react/wrapper.mjs +21 -67
- package/dist/esm/core/server/helmet.mjs +5 -4
- package/dist/esm/core/server/requestResponse.mjs +3 -3
- package/dist/esm/core/server/routerCleanup.mjs +1 -1
- package/dist/esm/core/server/shared.mjs +153 -1
- package/dist/esm/core/server/stream/afterTemplate.mjs +23 -18
- package/dist/esm/core/server/stream/beforeTemplate.mjs +37 -28
- package/dist/esm/core/server/stream/beforeTemplate.worker.mjs +31 -24
- package/dist/esm/core/server/stream/createReadableStream.mjs +207 -122
- package/dist/esm/core/server/stream/createReadableStream.worker.mjs +149 -90
- package/dist/esm/core/server/stream/deferredScript.mjs +3 -3
- package/dist/esm/core/server/stream/shared.mjs +2 -2
- package/dist/esm/core/server/string/index.mjs +104 -68
- package/dist/esm/core/server/string/loadable.mjs +34 -19
- package/dist/esm/core/server/string/ssrData.mjs +5 -12
- package/dist/esm/core/server/utils.mjs +1 -2
- package/dist/esm/exports/head.mjs +7 -14
- package/dist/esm/router/runtime/PrefetchLink.mjs +67 -123
- package/dist/esm/router/runtime/hooks.mjs +9 -1
- package/dist/esm/router/runtime/internal.mjs +2 -33
- package/dist/esm/router/runtime/plugin.mjs +1 -7
- package/dist/esm/router/runtime/plugin.node.mjs +1 -29
- package/dist/esm/router/runtime/redirect.mjs +1 -1
- package/dist/esm-node/cli/code.mjs +3 -1
- package/dist/esm-node/cli/ssr/index.mjs +3 -72
- package/dist/esm-node/core/browser/hydrate.mjs +7 -2
- package/dist/esm-node/core/context/index.mjs +2 -5
- package/dist/esm-node/core/context/public.mjs +1 -5
- package/dist/esm-node/core/context/runtime.mjs +13 -4
- package/dist/esm-node/core/react/wrapper.mjs +21 -67
- package/dist/esm-node/core/server/helmet.mjs +5 -4
- package/dist/esm-node/core/server/requestResponse.mjs +3 -3
- package/dist/esm-node/core/server/routerCleanup.mjs +1 -1
- package/dist/esm-node/core/server/shared.mjs +153 -1
- package/dist/esm-node/core/server/stream/afterTemplate.mjs +23 -18
- package/dist/esm-node/core/server/stream/beforeTemplate.mjs +37 -28
- package/dist/esm-node/core/server/stream/beforeTemplate.worker.mjs +31 -24
- package/dist/esm-node/core/server/stream/createReadableStream.mjs +207 -122
- package/dist/esm-node/core/server/stream/createReadableStream.worker.mjs +149 -90
- package/dist/esm-node/core/server/stream/deferredScript.mjs +3 -3
- package/dist/esm-node/core/server/stream/shared.mjs +2 -2
- package/dist/esm-node/core/server/string/index.mjs +104 -68
- package/dist/esm-node/core/server/string/loadable.mjs +34 -19
- package/dist/esm-node/core/server/string/ssrData.mjs +5 -12
- package/dist/esm-node/core/server/utils.mjs +1 -2
- package/dist/esm-node/exports/head.mjs +7 -14
- package/dist/esm-node/router/runtime/PrefetchLink.mjs +67 -123
- package/dist/esm-node/router/runtime/hooks.mjs +9 -1
- package/dist/esm-node/router/runtime/internal.mjs +2 -33
- package/dist/esm-node/router/runtime/plugin.mjs +1 -7
- package/dist/esm-node/router/runtime/plugin.node.mjs +1 -29
- package/dist/esm-node/router/runtime/redirect.mjs +1 -1
- package/dist/types/cli/ssr/index.d.ts +0 -3
- package/dist/types/core/context/index.d.ts +4 -6
- package/dist/types/core/context/public.d.ts +1 -23
- package/dist/types/core/context/runtime.d.ts +26 -2
- package/dist/types/core/react/wrapper.d.ts +6 -0
- package/dist/types/core/server/helmet.d.ts +4 -5
- package/dist/types/core/server/shared.d.ts +23 -0
- package/dist/types/core/server/stream/afterTemplate.d.ts +2 -1
- package/dist/types/core/server/stream/beforeTemplate.d.ts +4 -1
- package/dist/types/core/server/stream/beforeTemplate.worker.d.ts +4 -1
- package/dist/types/core/server/stream/shared.d.ts +1 -1
- package/dist/types/core/server/string/loadable.d.ts +6 -3
- package/dist/types/core/server/string/ssrData.d.ts +2 -1
- package/dist/types/core/server/string/types.d.ts +1 -5
- package/dist/types/exports/head.d.ts +2 -2
- package/dist/types/router/runtime/PrefetchLink.d.ts +27 -2
- package/dist/types/router/runtime/hooks.d.ts +19 -2
- package/dist/types/router/runtime/internal.d.ts +4 -21
- package/dist/types/router/runtime/types.d.ts +2 -43
- package/package.json +9 -38
- package/rstest.config.mts +32 -2
- package/dist/cjs/boundary-debugger/index.js +0 -317
- package/dist/cjs/core/context/extensions.js +0 -74
- package/dist/cjs/core/context/helmetContext.js +0 -54
- package/dist/cjs/core/server/federatedCss.js +0 -58
- package/dist/cjs/core/server/scriptOrder.js +0 -140
- package/dist/cjs/module-federation/consume-surface.js +0 -199
- package/dist/cjs/module-federation/distributed-ssr.js +0 -135
- package/dist/cjs/module-federation/index.js +0 -316
- package/dist/cjs/module-federation/last-known-good.js +0 -157
- package/dist/cjs/module-federation/manifest-recovery-runtime-plugin.js +0 -129
- package/dist/cjs/module-federation/surface-resolution-types.js +0 -61
- package/dist/cjs/router/runtime/lifecycle.js +0 -167
- package/dist/cjs/router/runtime/provider.js +0 -153
- package/dist/esm/boundary-debugger/index.mjs +0 -277
- package/dist/esm/core/context/extensions.mjs +0 -33
- package/dist/esm/core/context/helmetContext.mjs +0 -13
- package/dist/esm/core/server/federatedCss.mjs +0 -20
- package/dist/esm/core/server/scriptOrder.mjs +0 -90
- package/dist/esm/module-federation/consume-surface.mjs +0 -158
- package/dist/esm/module-federation/distributed-ssr.mjs +0 -82
- package/dist/esm/module-federation/index.mjs +0 -115
- package/dist/esm/module-federation/last-known-good.mjs +0 -113
- package/dist/esm/module-federation/manifest-recovery-runtime-plugin.mjs +0 -89
- package/dist/esm/module-federation/surface-resolution-types.mjs +0 -8
- package/dist/esm/router/runtime/lifecycle.mjs +0 -105
- package/dist/esm/router/runtime/provider.mjs +0 -100
- package/dist/esm-node/boundary-debugger/index.mjs +0 -278
- package/dist/esm-node/core/context/extensions.mjs +0 -34
- package/dist/esm-node/core/context/helmetContext.mjs +0 -14
- package/dist/esm-node/core/server/federatedCss.mjs +0 -21
- package/dist/esm-node/core/server/scriptOrder.mjs +0 -91
- package/dist/esm-node/module-federation/consume-surface.mjs +0 -159
- package/dist/esm-node/module-federation/distributed-ssr.mjs +0 -83
- package/dist/esm-node/module-federation/index.mjs +0 -116
- package/dist/esm-node/module-federation/last-known-good.mjs +0 -114
- package/dist/esm-node/module-federation/manifest-recovery-runtime-plugin.mjs +0 -90
- package/dist/esm-node/module-federation/surface-resolution-types.mjs +0 -9
- package/dist/esm-node/router/runtime/lifecycle.mjs +0 -106
- package/dist/esm-node/router/runtime/provider.mjs +0 -101
- package/dist/types/boundary-debugger/index.d.ts +0 -28
- package/dist/types/core/context/extensions.d.ts +0 -35
- package/dist/types/core/context/helmetContext.d.ts +0 -10
- package/dist/types/core/server/federatedCss.d.ts +0 -5
- package/dist/types/core/server/scriptOrder.d.ts +0 -25
- package/dist/types/module-federation/consume-surface.d.ts +0 -104
- package/dist/types/module-federation/distributed-ssr.d.ts +0 -61
- package/dist/types/module-federation/index.d.ts +0 -71
- package/dist/types/module-federation/last-known-good.d.ts +0 -52
- package/dist/types/module-federation/manifest-recovery-runtime-plugin.d.ts +0 -25
- package/dist/types/module-federation/surface-resolution-types.d.ts +0 -23
- package/dist/types/router/runtime/lifecycle.d.ts +0 -27
- package/dist/types/router/runtime/provider.d.ts +0 -78
|
@@ -58,13 +58,13 @@ function isDeferredDataLike(v) {
|
|
|
58
58
|
return hasPending && hasData;
|
|
59
59
|
}
|
|
60
60
|
function isPromiseLike(value) {
|
|
61
|
-
return
|
|
61
|
+
return Boolean(value) && 'function' == typeof value.then;
|
|
62
62
|
}
|
|
63
63
|
function toErrorInfo(error) {
|
|
64
64
|
if ((0, external_utils_js_namespaceObject.shouldRedactServerError)()) return {
|
|
65
65
|
message: 'Unexpected Server Error'
|
|
66
66
|
};
|
|
67
|
-
if (error && 'object' == typeof error) {
|
|
67
|
+
if (null !== error && 'object' == typeof error) {
|
|
68
68
|
const maybeMsg = error.message;
|
|
69
69
|
const maybeStack = error.stack;
|
|
70
70
|
return {
|
|
@@ -79,7 +79,7 @@ function toErrorInfo(error) {
|
|
|
79
79
|
function buildDeferredDataScript(nonce, args) {
|
|
80
80
|
const payload = JSON.stringify(args);
|
|
81
81
|
const escaped = escapeAttr(payload);
|
|
82
|
-
const nonceAttr = nonce ? ` nonce="${nonce}"` : '';
|
|
82
|
+
const nonceAttr = void 0 !== nonce && '' !== nonce ? ` nonce="${nonce}"` : '';
|
|
83
83
|
return `<script async${nonceAttr} data-fn-name="r" data-script-src="modern-run-router-data-fn" data-fn-args='${escaped}' suppressHydrationWarning>${constants_js_namespaceObject.runRouterDataFnStr}</script>`;
|
|
84
84
|
}
|
|
85
85
|
function enqueueFromEntries(entries, nonce, emit) {
|
|
@@ -99,7 +99,7 @@ function createRenderStreaming(createReadableStreamPromise) {
|
|
|
99
99
|
const end = (0, time_namespaceObject.time)();
|
|
100
100
|
const { runtimeContext, config, resource } = options;
|
|
101
101
|
const { onError, onTiming } = options;
|
|
102
|
-
const { htmlTemplate, entryName
|
|
102
|
+
const { htmlTemplate, entryName } = resource;
|
|
103
103
|
const ssrConfig = (0, external_utils_js_namespaceObject.getSSRConfigByEntry)(entryName, config.ssr, config.ssrByEntries);
|
|
104
104
|
const StreamServerRootWrapper = ({ children })=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(jsx_runtime_namespaceObject.Fragment, {
|
|
105
105
|
children: [
|
|
@@ -119,7 +119,7 @@ function createRenderStreaming(createReadableStreamPromise) {
|
|
|
119
119
|
runtimeContext,
|
|
120
120
|
ssrConfig,
|
|
121
121
|
entryName,
|
|
122
|
-
|
|
122
|
+
resource,
|
|
123
123
|
rscClientManifest: options.rscClientManifest,
|
|
124
124
|
rscSSRManifest: options.rscSSRManifest,
|
|
125
125
|
rscServerManifest: options.rscServerManifest,
|
|
@@ -39,7 +39,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
39
39
|
__webpack_require__.d(__webpack_exports__, {
|
|
40
40
|
renderString: ()=>renderString
|
|
41
41
|
});
|
|
42
|
-
const runtime_extensions_namespaceObject = require("@modern-js/runtime-extensions");
|
|
43
42
|
const time_namespaceObject = require("@modern-js/runtime-utils/time");
|
|
44
43
|
const constants_namespaceObject = require("@modern-js/utils/universal/constants");
|
|
45
44
|
const server_namespaceObject = require("react-dom/server");
|
|
@@ -49,7 +48,6 @@ const index_js_namespaceObject = require("../../context/index.js");
|
|
|
49
48
|
const wrapper_js_namespaceObject = require("../../react/wrapper.js");
|
|
50
49
|
const external_constants_js_namespaceObject_1 = require("../constants.js");
|
|
51
50
|
const external_helmet_js_namespaceObject = require("../helmet.js");
|
|
52
|
-
const external_scriptOrder_js_namespaceObject = require("../scriptOrder.js");
|
|
53
51
|
const external_shared_js_namespaceObject = require("../shared.js");
|
|
54
52
|
const external_tracer_js_namespaceObject = require("../tracer.js");
|
|
55
53
|
const external_utils_js_namespaceObject = require("../utils.js");
|
|
@@ -62,7 +60,7 @@ const renderString = async (request, serverRoot, options)=>{
|
|
|
62
60
|
onTiming
|
|
63
61
|
};
|
|
64
62
|
const routerContext = runtimeContext.routerContext;
|
|
65
|
-
const { htmlTemplate, entryName, loadableStats, routeManifest
|
|
63
|
+
const { htmlTemplate, entryName, loadableStats, routeManifest } = resource;
|
|
66
64
|
const ssrConfig = (0, external_utils_js_namespaceObject.getSSRConfigByEntry)(entryName, config.ssr, config.ssrByEntries);
|
|
67
65
|
const chunkSet = {
|
|
68
66
|
renderLevel: external_constants_js_namespaceObject.RenderLevel.CLIENT_RENDER,
|
|
@@ -70,85 +68,123 @@ const renderString = async (request, serverRoot, options)=>{
|
|
|
70
68
|
jsChunk: '',
|
|
71
69
|
cssChunk: ''
|
|
72
70
|
};
|
|
73
|
-
const collectors = [
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
71
|
+
const collectors = [];
|
|
72
|
+
const lifecycle = (0, external_shared_js_namespaceObject.createSSRRenderLifecycle)(collectors);
|
|
73
|
+
const loadableCollector = new external_loadable_js_namespaceObject.LoadableCollector({
|
|
74
|
+
stats: loadableStats,
|
|
75
|
+
nonce: config.nonce,
|
|
76
|
+
routeManifest,
|
|
77
|
+
template: htmlTemplate,
|
|
78
|
+
entryName,
|
|
79
|
+
chunkSet,
|
|
80
|
+
config,
|
|
81
|
+
lifecycle
|
|
82
|
+
});
|
|
83
|
+
collectors.push(loadableCollector, new external_ssrData_js_namespaceObject.SSRDataCollector({
|
|
84
|
+
runtimeContext,
|
|
85
|
+
request,
|
|
86
|
+
ssrConfig,
|
|
87
|
+
ssrContext: runtimeContext.ssrContext,
|
|
88
|
+
chunkSet,
|
|
89
|
+
routerContext,
|
|
90
|
+
nonce: config.nonce,
|
|
91
|
+
useJsonScript: config.useJsonScript,
|
|
92
|
+
lifecycle
|
|
93
|
+
}));
|
|
96
94
|
const internalRuntimeContext = (0, index_js_namespaceObject.getGlobalInternalRuntimeContext)();
|
|
97
95
|
const hooks = internalRuntimeContext.hooks;
|
|
98
96
|
const extraCollectors = hooks.extendStringSSRCollectors.call({
|
|
99
|
-
chunkSet
|
|
97
|
+
chunkSet,
|
|
98
|
+
render: {
|
|
99
|
+
runtimeContext,
|
|
100
|
+
request,
|
|
101
|
+
resource,
|
|
102
|
+
config,
|
|
103
|
+
platform: 'node',
|
|
104
|
+
mode: 'string',
|
|
105
|
+
isRsc: true === (0, index_js_namespaceObject.getGlobalEnableRsc)()
|
|
106
|
+
}
|
|
100
107
|
});
|
|
101
108
|
for (const c of extraCollectors)if (c) collectors.unshift(c);
|
|
102
|
-
|
|
109
|
+
let rootElement = (0, wrapper_js_namespaceObject.wrapRuntimeContextProvider)(serverRoot, Object.assign(runtimeContext, {
|
|
103
110
|
ssr: true
|
|
104
111
|
}));
|
|
105
|
-
|
|
112
|
+
if (true === (0, index_js_namespaceObject.getGlobalEnableRsc)() && false === runtimeContext.isBrowser) rootElement = (0, wrapper_js_namespaceObject.wrapRuntimeComponentResolver)(rootElement, hooks);
|
|
113
|
+
const html = await generateHtml(rootElement, htmlTemplate, chunkSet, collectors, runtimeContext.ssrContext?.htmlModifiers || [], tracer, request.signal, lifecycle, loadableCollector.stylesheetInfo);
|
|
106
114
|
return html;
|
|
107
115
|
};
|
|
108
|
-
async function generateHtml(App, htmlTemplate, chunkSet, collectors, htmlModifiers,
|
|
116
|
+
async function generateHtml(App, htmlTemplate, chunkSet, collectors, htmlModifiers, { onError, onTiming }, signal, lifecycle, stylesheetInfo) {
|
|
109
117
|
let html = '';
|
|
110
118
|
let helmetData;
|
|
111
|
-
const finalApp = collectors.reduce((pre, creator)=>creator.collect?.(pre) || pre, App);
|
|
112
|
-
runtime_extensions_namespaceObject.beginHeadRender(runtimeContext);
|
|
113
119
|
try {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
120
|
+
signal.throwIfAborted();
|
|
121
|
+
try {
|
|
122
|
+
const finalApp = collectors.reduce((pre, creator)=>creator.collect?.(pre) || pre, App);
|
|
123
|
+
lifecycle.beforeReact();
|
|
124
|
+
const end = (0, time_namespaceObject.time)();
|
|
125
|
+
html = server_default().renderToString(finalApp, {
|
|
126
|
+
identifierPrefix: constants_namespaceObject.SSR_HYDRATION_ID_PREFIX
|
|
127
|
+
});
|
|
128
|
+
html = lifecycle.completedBody(html, 'complete');
|
|
129
|
+
chunkSet.renderLevel = external_constants_js_namespaceObject.RenderLevel.SERVER_RENDER;
|
|
130
|
+
helmetData = (0, external_helmet_js_namespaceObject.getHelmetData)(collectors);
|
|
131
|
+
const cost = end();
|
|
132
|
+
onTiming(external_tracer_js_namespaceObject.SSRTimings.RENDER_HTML, cost);
|
|
133
|
+
} catch (error) {
|
|
134
|
+
lifecycle.finish({
|
|
135
|
+
status: 'fallback',
|
|
136
|
+
error
|
|
137
|
+
});
|
|
138
|
+
html = '';
|
|
139
|
+
chunkSet.renderLevel = external_constants_js_namespaceObject.RenderLevel.CLIENT_RENDER;
|
|
140
|
+
onError(error, external_tracer_js_namespaceObject.SSRErrors.RENDER_HTML);
|
|
141
|
+
}
|
|
142
|
+
await Promise.all(collectors.map((component)=>component.effect()));
|
|
143
|
+
signal.throwIfAborted();
|
|
144
|
+
const { ssrScripts, cssChunk, jsChunk } = chunkSet;
|
|
145
|
+
const finalHtml = await (0, external_shared_js_namespaceObject.buildHtml)(htmlTemplate, [
|
|
146
|
+
createReplaceHtml(html),
|
|
147
|
+
(template)=>(0, external_shared_js_namespaceObject.replaceSSRTemplateChunk)({
|
|
148
|
+
name: "scripts",
|
|
149
|
+
template,
|
|
150
|
+
placeholder: external_constants_js_namespaceObject_1.CHUNK_JS_PLACEHOLDER,
|
|
151
|
+
content: jsChunk
|
|
152
|
+
}, lifecycle),
|
|
153
|
+
(template)=>(0, external_shared_js_namespaceObject.replaceSSRTemplateChunk)({
|
|
154
|
+
name: 'styles',
|
|
155
|
+
template,
|
|
156
|
+
placeholder: external_constants_js_namespaceObject_1.CHUNK_CSS_PLACEHOLDER,
|
|
157
|
+
content: cssChunk,
|
|
158
|
+
...stylesheetInfo
|
|
159
|
+
}, lifecycle),
|
|
160
|
+
(template)=>(0, external_shared_js_namespaceObject.replaceSSRTemplateChunk)({
|
|
161
|
+
name: 'data',
|
|
162
|
+
template,
|
|
163
|
+
placeholder: external_constants_js_namespaceObject_1.SSR_DATA_PLACEHOLDER,
|
|
164
|
+
content: ssrScripts
|
|
165
|
+
}, lifecycle),
|
|
166
|
+
(0, external_helmet_js_namespaceObject.createReplaceHelemt)(helmetData),
|
|
167
|
+
...htmlModifiers
|
|
168
|
+
]);
|
|
169
|
+
signal.throwIfAborted();
|
|
170
|
+
lifecycle.finish({
|
|
171
|
+
status: 'complete'
|
|
172
|
+
});
|
|
173
|
+
return finalHtml;
|
|
174
|
+
} catch (error) {
|
|
175
|
+
lifecycle.finish(signal.aborted ? {
|
|
176
|
+
status: 'cancelled',
|
|
177
|
+
reason: signal.reason
|
|
178
|
+
} : {
|
|
179
|
+
status: 'error',
|
|
180
|
+
error
|
|
117
181
|
});
|
|
118
|
-
|
|
119
|
-
chunkSet.renderLevel = external_constants_js_namespaceObject.RenderLevel.SERVER_RENDER;
|
|
120
|
-
helmetData = (0, external_helmet_js_namespaceObject.getHelmetData)(runtimeContext);
|
|
121
|
-
const cost = end();
|
|
122
|
-
onTiming(external_tracer_js_namespaceObject.SSRTimings.RENDER_HTML, cost);
|
|
123
|
-
} catch (e) {
|
|
124
|
-
runtime_extensions_namespaceObject.abortHeadRender(runtimeContext);
|
|
125
|
-
chunkSet.renderLevel = external_constants_js_namespaceObject.RenderLevel.CLIENT_RENDER;
|
|
126
|
-
onError(e, external_tracer_js_namespaceObject.SSRErrors.RENDER_HTML);
|
|
182
|
+
throw error;
|
|
127
183
|
}
|
|
128
|
-
await Promise.all(collectors.map((component)=>component.effect()));
|
|
129
|
-
const { ssrScripts, cssChunk, jsChunk } = chunkSet;
|
|
130
|
-
const finalHtml = await (0, external_shared_js_namespaceObject.buildHtml)(htmlTemplate, [
|
|
131
|
-
createReplaceHtml(html),
|
|
132
|
-
createReplaceChunkJs(jsChunk, entryName),
|
|
133
|
-
createReplaceChunkCss(cssChunk),
|
|
134
|
-
createReplaceSSRDataScript(ssrScripts, entryName),
|
|
135
|
-
(0, external_helmet_js_namespaceObject.createReplaceHelemt)(helmetData),
|
|
136
|
-
...htmlModifiers
|
|
137
|
-
]);
|
|
138
|
-
return finalHtml;
|
|
139
184
|
}
|
|
140
185
|
function createReplaceHtml(html) {
|
|
141
186
|
return (template)=>(0, external_utils_js_namespaceObject.safeReplace)(template, external_constants_js_namespaceObject_1.HTML_PLACEHOLDER, html);
|
|
142
187
|
}
|
|
143
|
-
function createReplaceSSRDataScript(data, entryName) {
|
|
144
|
-
return (template)=>(0, external_scriptOrder_js_namespaceObject.replaceChunkJsPlaceholder)(template, data, entryName, external_constants_js_namespaceObject_1.SSR_DATA_PLACEHOLDER);
|
|
145
|
-
}
|
|
146
|
-
function createReplaceChunkJs(js, entryName) {
|
|
147
|
-
return (template)=>(0, external_scriptOrder_js_namespaceObject.replaceChunkJsPlaceholder)(template, js, entryName);
|
|
148
|
-
}
|
|
149
|
-
function createReplaceChunkCss(css) {
|
|
150
|
-
return (template)=>(0, external_utils_js_namespaceObject.safeReplace)(template, external_constants_js_namespaceObject_1.CHUNK_CSS_PLACEHOLDER, css);
|
|
151
|
-
}
|
|
152
188
|
exports.renderString = __webpack_exports__.renderString;
|
|
153
189
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
154
190
|
"renderString"
|
|
@@ -31,15 +31,13 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
31
31
|
LoadableCollector: ()=>LoadableCollector
|
|
32
32
|
});
|
|
33
33
|
const server_namespaceObject = require("@loadable/server");
|
|
34
|
-
const external_federatedCss_js_namespaceObject = require("../federatedCss.js");
|
|
35
|
-
const external_scriptOrder_js_namespaceObject = require("../scriptOrder.js");
|
|
36
34
|
const external_utils_js_namespaceObject = require("../utils.js");
|
|
37
35
|
const extname = (uri)=>{
|
|
38
36
|
if ('string' != typeof uri || !uri.includes('.')) return '';
|
|
39
37
|
return `.${uri?.split('.').pop()}` || '';
|
|
40
38
|
};
|
|
41
39
|
const generateChunks = (chunks, ext)=>chunks.filter((chunk)=>Boolean(chunk.url)).filter((chunk)=>extname(chunk.url).slice(1) === ext);
|
|
42
|
-
const
|
|
40
|
+
const assetToChunk = (asset)=>({
|
|
43
41
|
chunk: asset,
|
|
44
42
|
filename: asset.replace(/^\//, ''),
|
|
45
43
|
linkType: 'preload',
|
|
@@ -85,16 +83,32 @@ class LoadableCollector {
|
|
|
85
83
|
]));
|
|
86
84
|
} catch (e) {}
|
|
87
85
|
const collectedChunks = extractor ? extractor.getChunkAssets(extractor.chunks) : [];
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
86
|
+
const groups = [
|
|
87
|
+
{
|
|
88
|
+
name: 'async-entry',
|
|
89
|
+
assets: asyncChunks
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
name: 'loadable',
|
|
93
|
+
assets: collectedChunks
|
|
94
|
+
}
|
|
95
|
+
];
|
|
96
|
+
const nativeChunks = [
|
|
97
|
+
...asyncChunks,
|
|
98
|
+
...collectedChunks
|
|
99
|
+
];
|
|
100
|
+
const prepare = (kind)=>options.lifecycle?.transformAssets(groups, {
|
|
101
|
+
kind,
|
|
102
|
+
source: 'loadable',
|
|
103
|
+
template: options.template,
|
|
104
|
+
createAsset: assetToChunk
|
|
105
|
+
}) ?? nativeChunks;
|
|
106
|
+
const scriptChunks = generateChunks([
|
|
107
|
+
...prepare("script")
|
|
108
|
+
], 'js');
|
|
109
|
+
const styleChunks = generateChunks([
|
|
110
|
+
...prepare('style')
|
|
111
|
+
], 'css');
|
|
98
112
|
if (extractor) {
|
|
99
113
|
this.emitLoadableScripts(extractor);
|
|
100
114
|
await this.emitScriptAssets(scriptChunks);
|
|
@@ -133,7 +147,7 @@ class LoadableCollector {
|
|
|
133
147
|
chunkSet.jsChunk += scripts.filter((script)=>Boolean(script)).join('');
|
|
134
148
|
}
|
|
135
149
|
async emitStyleAssets(chunks) {
|
|
136
|
-
const { template, chunkSet, config
|
|
150
|
+
const { template, chunkSet, config } = this.options;
|
|
137
151
|
const { inlineStyles } = config;
|
|
138
152
|
const atrributes = (0, external_utils_js_namespaceObject.attributesToString)(this.generateAttributes());
|
|
139
153
|
const emittedAssetUrls = new Set();
|
|
@@ -148,11 +162,8 @@ class LoadableCollector {
|
|
|
148
162
|
return link;
|
|
149
163
|
}));
|
|
150
164
|
chunkSet.cssChunk += css.filter((css)=>Boolean(css)).join('');
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
attributes: this.generateAttributes(),
|
|
154
|
-
existingAssets: emittedChunks.map((chunk)=>chunk.url)
|
|
155
|
-
});
|
|
165
|
+
this.stylesheetInfo.emittedAssets = emittedChunks.map((chunk)=>chunk.url);
|
|
166
|
+
this.stylesheetInfo.attributes = this.generateAttributes();
|
|
156
167
|
}
|
|
157
168
|
generateAttributes(extraAtr = {}) {
|
|
158
169
|
const { config } = this.options;
|
|
@@ -165,6 +176,10 @@ class LoadableCollector {
|
|
|
165
176
|
};
|
|
166
177
|
}
|
|
167
178
|
constructor(options){
|
|
179
|
+
this.stylesheetInfo = {
|
|
180
|
+
emittedAssets: [],
|
|
181
|
+
attributes: {}
|
|
182
|
+
};
|
|
168
183
|
this.options = options;
|
|
169
184
|
}
|
|
170
185
|
}
|
|
@@ -31,7 +31,6 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
31
31
|
SSRDataCollector: ()=>SSRDataCollector
|
|
32
32
|
});
|
|
33
33
|
const node_namespaceObject = require("@modern-js/runtime-utils/node");
|
|
34
|
-
const lifecycle_js_namespaceObject = require("../../../router/runtime/lifecycle.js");
|
|
35
34
|
const external_constants_js_namespaceObject = require("../../constants.js");
|
|
36
35
|
const external_utils_js_namespaceObject = require("../utils.js");
|
|
37
36
|
function _check_private_redeclaration(obj, privateCollection) {
|
|
@@ -120,20 +119,15 @@ function getSSRData() {
|
|
|
120
119
|
};
|
|
121
120
|
}
|
|
122
121
|
function getRouterData() {
|
|
123
|
-
const { routerContext,
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
loaderData:
|
|
127
|
-
errors: (0, external_utils_js_namespaceObject.serializeErrors)(
|
|
128
|
-
};
|
|
129
|
-
return routerContext ? {
|
|
130
|
-
loaderData: routerContext.loaderData,
|
|
131
|
-
errors: (0, external_utils_js_namespaceObject.serializeErrors)(routerContext.errors)
|
|
122
|
+
const { routerContext, lifecycle } = _class_private_field_get(this, _options);
|
|
123
|
+
const data = lifecycle?.getRouterData() ?? routerContext;
|
|
124
|
+
return data ? {
|
|
125
|
+
loaderData: data.loaderData,
|
|
126
|
+
errors: (0, external_utils_js_namespaceObject.serializeErrors)(data.errors || null)
|
|
132
127
|
} : void 0;
|
|
133
128
|
}
|
|
134
129
|
function getSSRDataScripts(ssrData, routerData) {
|
|
135
130
|
const { nonce, useJsonScript = false } = _class_private_field_get(this, _options);
|
|
136
|
-
const hydrationScripts = (0, lifecycle_js_namespaceObject.getRouterHydrationScripts)(_class_private_field_get(this, _options).runtimeContext);
|
|
137
131
|
const serializeSSRData = (0, node_namespaceObject.serializeJson)(ssrData);
|
|
138
132
|
const attrsStr = (0, external_utils_js_namespaceObject.attributesToString)({
|
|
139
133
|
nonce
|
|
@@ -143,7 +137,6 @@ function getSSRDataScripts(ssrData, routerData) {
|
|
|
143
137
|
const serializedRouterData = (0, node_namespaceObject.serializeJson)(routerData);
|
|
144
138
|
ssrDataScripts += useJsonScript ? `\n<script type="application/json" id="${external_constants_js_namespaceObject.ROUTER_DATA_JSON_ID}">${serializedRouterData}</script>` : `\n<script${attrsStr}>window._ROUTER_DATA = ${serializedRouterData}</script>`;
|
|
145
139
|
}
|
|
146
|
-
if (hydrationScripts.length) ssrDataScripts += `\n${hydrationScripts.join('\n')}`;
|
|
147
140
|
return ssrDataScripts;
|
|
148
141
|
}
|
|
149
142
|
exports.SSRDataCollector = __webpack_exports__.SSRDataCollector;
|
|
@@ -37,10 +37,9 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
37
37
|
serializeErrors: ()=>serializeErrors,
|
|
38
38
|
shouldRedactServerError: ()=>shouldRedactServerError
|
|
39
39
|
});
|
|
40
|
-
const runtime_extensions_namespaceObject = require("@modern-js/runtime-extensions");
|
|
41
40
|
const routerHelper_js_namespaceObject = require("../../router/runtime/routerHelper.js");
|
|
42
41
|
function attributesToString(attributes) {
|
|
43
|
-
return Object.entries(attributes).reduce((str, [key, value])=>void 0 !== value &&
|
|
42
|
+
return Object.entries(attributes).reduce((str, [key, value])=>void 0 !== value && /^[^\u0000-\u0020"'<>/=]+$/u.test(key) ? `${str} ${key}="${String(value).replaceAll('&', '&').replaceAll('"', '"').replaceAll('<', '<').replaceAll('>', '>')}"` : str, '');
|
|
44
43
|
}
|
|
45
44
|
function safeReplace(source, searchValue, replaceValue) {
|
|
46
45
|
return source.replace(searchValue, ()=>replaceValue);
|
package/dist/cjs/exports/head.js
CHANGED
|
@@ -41,24 +41,17 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
41
41
|
Helmet: ()=>Helmet,
|
|
42
42
|
default: ()=>exports_head
|
|
43
43
|
});
|
|
44
|
-
const runtime_extensions_namespaceObject = require("@modern-js/runtime-extensions");
|
|
45
44
|
const external_react_namespaceObject = require("react");
|
|
46
45
|
var external_react_default = /*#__PURE__*/ __webpack_require__.n(external_react_namespaceObject);
|
|
47
46
|
const external_react_helmet_async_namespaceObject = require("react-helmet-async");
|
|
48
|
-
const
|
|
49
|
-
const helmetContext_js_namespaceObject = require("../core/context/helmetContext.js");
|
|
50
|
-
const collectServerHelmet = (runtimeContext, props)=>{
|
|
51
|
-
const helmetContext = (0, helmetContext_js_namespaceObject.ensureHelmetContext)(runtimeContext);
|
|
52
|
-
const createRecord = ()=>runtime_extensions_namespaceObject.createHelmetRecord(external_react_default(), props);
|
|
53
|
-
const deriveState = (records)=>runtime_extensions_namespaceObject.deriveHelmetServerState(external_react_default(), records);
|
|
54
|
-
const marker = runtime_extensions_namespaceObject.collectHeadState(runtimeContext, createRecord, deriveState, helmetContext);
|
|
55
|
-
if (void 0 !== marker) return marker;
|
|
56
|
-
helmetContext.helmet = runtime_extensions_namespaceObject.collectImmediateHelmetState(external_react_default(), helmetContext, createRecord());
|
|
57
|
-
};
|
|
47
|
+
const runtime_js_namespaceObject = require("../core/context/runtime.js");
|
|
58
48
|
const Helmet = (props)=>{
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
49
|
+
const resolveComponent = external_react_default().useContext(runtime_js_namespaceObject.RuntimeComponentResolverContext);
|
|
50
|
+
const Component = resolveComponent?.(external_react_helmet_async_namespaceObject.Helmet, {
|
|
51
|
+
name: 'head.Helmet'
|
|
52
|
+
}) ?? external_react_helmet_async_namespaceObject.Helmet;
|
|
53
|
+
if (Component === Helmet) throw new Error('A component resolver cannot resolve head.Helmet to itself.');
|
|
54
|
+
return external_react_default().createElement(Component, props);
|
|
62
55
|
};
|
|
63
56
|
const head = {
|
|
64
57
|
Helmet,
|