@bleedingdev/modern-js-runtime 3.9.0-ultramodern.2 → 3.9.0-ultramodern.21
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/cli/ssr/loadable-bundler-plugin.js +2 -0
- package/dist/cjs/cli/template.server.js +1 -2
- package/dist/cjs/core/browser/hydrate.js +9 -10
- package/dist/cjs/core/browser/index.js +4 -5
- package/dist/cjs/core/context/index.js +12 -45
- package/dist/cjs/core/context/public.js +4 -7
- package/dist/cjs/core/context/runtime.js +10 -4
- package/dist/cjs/core/index.js +3 -3
- package/dist/cjs/core/plugin/index.js +2 -2
- package/dist/cjs/core/react/index.js +3 -3
- package/dist/cjs/core/react/wrapper.js +23 -67
- package/dist/cjs/core/server/helmet.js +5 -4
- package/dist/cjs/core/server/requestHandler.js +6 -7
- 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 +37 -28
- package/dist/cjs/core/server/stream/beforeTemplate.worker.js +30 -23
- package/dist/cjs/core/server/stream/createReadableStream.js +222 -125
- package/dist/cjs/core/server/stream/createReadableStream.worker.js +171 -90
- package/dist/cjs/core/server/stream/deferredScript.js +3 -3
- package/dist/cjs/core/server/stream/shared.js +6 -2
- package/dist/cjs/core/server/string/index.js +104 -66
- package/dist/cjs/core/server/string/loadable.js +38 -23
- package/dist/cjs/core/server/string/ssrData.js +5 -12
- package/dist/cjs/core/server/utils.js +1 -2
- package/dist/cjs/document/cli/index.js +14 -5
- package/dist/cjs/exports/head.js +7 -14
- package/dist/cjs/internal.js +2 -2
- package/dist/cjs/router/cli/code/nestedRoutes.js +1 -2
- package/dist/cjs/router/cli/code/templates.js +1 -1
- package/dist/cjs/router/cli/code/utils.js +2 -2
- package/dist/cjs/router/runtime/DeferredDataScripts.node.js +10 -9
- package/dist/cjs/router/runtime/PrefetchLink.js +69 -125
- 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 +19 -34
- package/dist/cjs/router/runtime/plugin.node.js +9 -37
- 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/cli/ssr/loadable-bundler-plugin.mjs +2 -0
- package/dist/esm/cli/template.server.mjs +1 -2
- package/dist/esm/core/browser/hydrate.mjs +10 -11
- package/dist/esm/core/browser/index.mjs +1 -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 +6 -3
- package/dist/esm/core/index.mjs +1 -1
- package/dist/esm/core/plugin/index.mjs +1 -1
- package/dist/esm/core/react/index.mjs +1 -1
- package/dist/esm/core/react/wrapper.mjs +20 -67
- package/dist/esm/core/server/helmet.mjs +5 -4
- package/dist/esm/core/server/requestHandler.mjs +1 -2
- 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 +40 -31
- package/dist/esm/core/server/stream/beforeTemplate.worker.mjs +33 -26
- package/dist/esm/core/server/stream/createReadableStream.mjs +220 -123
- package/dist/esm/core/server/stream/createReadableStream.worker.mjs +161 -90
- package/dist/esm/core/server/stream/deferredScript.mjs +3 -3
- package/dist/esm/core/server/stream/shared.mjs +4 -3
- package/dist/esm/core/server/string/index.mjs +106 -68
- package/dist/esm/core/server/string/loadable.mjs +38 -23
- package/dist/esm/core/server/string/ssrData.mjs +5 -12
- package/dist/esm/core/server/utils.mjs +1 -2
- package/dist/esm/document/cli/index.mjs +12 -6
- package/dist/esm/exports/head.mjs +7 -14
- package/dist/esm/internal.mjs +1 -1
- package/dist/esm/router/cli/code/nestedRoutes.mjs +1 -2
- package/dist/esm/router/cli/code/templates.mjs +1 -1
- package/dist/esm/router/cli/code/utils.mjs +2 -2
- package/dist/esm/router/runtime/DeferredDataScripts.node.mjs +10 -9
- package/dist/esm/router/runtime/PrefetchLink.mjs +68 -124
- 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 +10 -25
- package/dist/esm/router/runtime/plugin.node.mjs +3 -31
- 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/cli/ssr/loadable-bundler-plugin.mjs +2 -0
- package/dist/esm-node/cli/template.server.mjs +1 -2
- package/dist/esm-node/core/browser/hydrate.mjs +10 -11
- package/dist/esm-node/core/browser/index.mjs +1 -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 +6 -3
- package/dist/esm-node/core/index.mjs +1 -1
- package/dist/esm-node/core/plugin/index.mjs +1 -1
- package/dist/esm-node/core/react/index.mjs +1 -1
- package/dist/esm-node/core/react/wrapper.mjs +20 -67
- package/dist/esm-node/core/server/helmet.mjs +5 -4
- package/dist/esm-node/core/server/requestHandler.mjs +1 -2
- 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 +40 -31
- package/dist/esm-node/core/server/stream/beforeTemplate.worker.mjs +33 -26
- package/dist/esm-node/core/server/stream/createReadableStream.mjs +220 -123
- package/dist/esm-node/core/server/stream/createReadableStream.worker.mjs +161 -90
- package/dist/esm-node/core/server/stream/deferredScript.mjs +3 -3
- package/dist/esm-node/core/server/stream/shared.mjs +4 -3
- package/dist/esm-node/core/server/string/index.mjs +106 -68
- package/dist/esm-node/core/server/string/loadable.mjs +38 -23
- 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/document/cli/index.mjs +12 -6
- package/dist/esm-node/exports/head.mjs +7 -14
- package/dist/esm-node/internal.mjs +1 -1
- package/dist/esm-node/router/cli/code/nestedRoutes.mjs +1 -2
- package/dist/esm-node/router/cli/code/templates.mjs +1 -1
- package/dist/esm-node/router/cli/code/utils.mjs +2 -2
- package/dist/esm-node/router/runtime/DeferredDataScripts.node.mjs +10 -9
- package/dist/esm-node/router/runtime/PrefetchLink.mjs +68 -124
- 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 +10 -25
- package/dist/esm-node/router/runtime/plugin.node.mjs +3 -31
- 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/index.d.ts +1 -1
- package/dist/types/core/react/wrapper.d.ts +7 -1
- package/dist/types/core/server/helmet.d.ts +4 -5
- package/dist/types/core/server/requestHandler.d.ts +3 -3
- package/dist/types/core/server/requestResponse.d.ts +1 -1
- package/dist/types/core/server/routerCleanup.d.ts +1 -1
- package/dist/types/core/server/shared.d.ts +24 -1
- 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 +16 -2
- 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/core/server/tracer.d.ts +1 -1
- package/dist/types/core/server/utils.d.ts +1 -1
- package/dist/types/core/types.d.ts +1 -2
- package/dist/types/document/cli/index.d.ts +1 -0
- package/dist/types/exports/head.d.ts +2 -2
- package/dist/types/internal.d.ts +1 -1
- 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 +18 -46
- package/rslib.config.mts +3 -0
- package/rstest.config.mts +28 -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/cjs/rsc/server.worker.js +0 -62
- 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/rsc/server.worker.mjs +0 -1
- 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/esm-node/rsc/server.worker.mjs +0 -2
- 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
- package/dist/types/rsc/server.worker.d.ts +0 -1
|
@@ -40,26 +40,25 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
40
40
|
createRequestHandler: ()=>createRequestHandler
|
|
41
41
|
});
|
|
42
42
|
const jsx_runtime_namespaceObject = require("react/jsx-runtime");
|
|
43
|
+
const context_namespaceObject = require("@modern-js/runtime/context");
|
|
43
44
|
const node_namespaceObject = require("@modern-js/runtime-utils/node");
|
|
44
45
|
const request_namespaceObject = require("@modern-js/runtime-utils/universal/request");
|
|
45
46
|
const external_react_namespaceObject = require("react");
|
|
46
47
|
var external_react_default = /*#__PURE__*/ __webpack_require__.n(external_react_namespaceObject);
|
|
47
|
-
const index_js_namespaceObject = require("../context/index.js");
|
|
48
|
-
const runtime_js_namespaceObject = require("../context/runtime.js");
|
|
49
|
-
const serverPayload_index_js_namespaceObject = require("../context/serverPayload/index.js");
|
|
48
|
+
const index_js_namespaceObject = require("../context/serverPayload/index.js");
|
|
50
49
|
const external_react_index_js_namespaceObject = require("../react/index.js");
|
|
51
50
|
const external_constants_js_namespaceObject = require("./constants.js");
|
|
52
51
|
const external_requestResponse_js_namespaceObject = require("./requestResponse.js");
|
|
53
52
|
const external_routerCleanup_js_namespaceObject = require("./routerCleanup.js");
|
|
54
53
|
const external_utils_js_namespaceObject = require("./utils.js");
|
|
55
54
|
async function handleRSCRequest(request, Root, context, options, handleRequest) {
|
|
56
|
-
const serverPayload = (0,
|
|
55
|
+
const serverPayload = (0, index_js_namespaceObject.getServerPayload)();
|
|
57
56
|
if (void 0 !== serverPayload) return await handleRequest(request, Root, {
|
|
58
57
|
...options,
|
|
59
58
|
runtimeContext: context,
|
|
60
59
|
rscRoot: serverPayload
|
|
61
60
|
});
|
|
62
|
-
const App = (0,
|
|
61
|
+
const App = (0, context_namespaceObject.getGlobalRSCRoot)();
|
|
63
62
|
if (App) return await handleRequest(request, external_react_namespaceObject.Fragment, {
|
|
64
63
|
...options,
|
|
65
64
|
runtimeContext: context,
|
|
@@ -151,10 +150,10 @@ const createRequestHandler = async (handleRequest, createRequestOptions)=>{
|
|
|
151
150
|
serverPayload: void 0
|
|
152
151
|
}, async ()=>{
|
|
153
152
|
const Root = (0, external_react_index_js_namespaceObject.createRoot)();
|
|
154
|
-
const internalRuntimeContext = (0,
|
|
153
|
+
const internalRuntimeContext = (0, context_namespaceObject.getGlobalInternalRuntimeContext)();
|
|
155
154
|
const hooks = internalRuntimeContext.hooks;
|
|
156
155
|
const { routeManifest } = options.resource;
|
|
157
|
-
const context = (0,
|
|
156
|
+
const context = (0, context_namespaceObject.getInitialContext)(false, routeManifest);
|
|
158
157
|
const runBeforeRender = async (context)=>{
|
|
159
158
|
const result = await hooks.onBeforeRender.call(context);
|
|
160
159
|
if ("u" > typeof Response && result instanceof Response) return result;
|
|
@@ -32,14 +32,14 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
32
32
|
createLoaderRedirectResponse: ()=>createLoaderRedirectResponse,
|
|
33
33
|
finalizeRenderResponse: ()=>finalizeRenderResponse
|
|
34
34
|
});
|
|
35
|
-
const
|
|
35
|
+
const router_state_namespaceObject = require("@modern-js/runtime-extensions/router-state");
|
|
36
36
|
const redirect_js_namespaceObject = require("../../router/runtime/redirect.js");
|
|
37
37
|
const external_tracer_js_namespaceObject = require("./tracer.js");
|
|
38
38
|
const isRedirectStatus = (status)=>301 === status || 302 === status || 303 === status || 307 === status || 308 === status;
|
|
39
39
|
const isNullBodyStatus = (status)=>204 === status || 205 === status || 304 === status;
|
|
40
40
|
const getRedirectLocation = (headers)=>{
|
|
41
41
|
const location = headers.get('Location');
|
|
42
|
-
return location && URL.canParse(location, 'http://localhost') ? location : void 0;
|
|
42
|
+
return null !== location && '' !== location && URL.canParse(location, 'http://localhost') ? location : void 0;
|
|
43
43
|
};
|
|
44
44
|
const processRedirect = (headers, status, ctx)=>{
|
|
45
45
|
headers.delete('content-length');
|
|
@@ -51,7 +51,7 @@ const processRedirect = (headers, status, ctx)=>{
|
|
|
51
51
|
});
|
|
52
52
|
};
|
|
53
53
|
const applyRouterSnapshotResult = (context, onError)=>{
|
|
54
|
-
const routerServerSnapshot = (0,
|
|
54
|
+
const routerServerSnapshot = (0, router_state_namespaceObject.getRouterServerSnapshot)(context);
|
|
55
55
|
const routerStatusCode = routerServerSnapshot?.statusCode ?? context.routerContext?.statusCode;
|
|
56
56
|
if (void 0 !== routerStatusCode && 0 !== routerStatusCode && !Number.isNaN(routerStatusCode) && 200 !== routerStatusCode) context.ssrContext?.response.status(routerStatusCode);
|
|
57
57
|
const errors = Object.values(routerServerSnapshot?.errors || context.routerContext?.errors || {});
|
|
@@ -61,7 +61,7 @@ const createLoaderRedirectResponse = (beforeRenderResult, redirectCtx)=>{
|
|
|
61
61
|
if (void 0 === beforeRenderResult || !isRedirectStatus(beforeRenderResult.status)) return;
|
|
62
62
|
if (beforeRenderResult.headers.has('X-Modernjs-Redirect')) return beforeRenderResult;
|
|
63
63
|
const redirectUrl = getRedirectLocation(beforeRenderResult.headers);
|
|
64
|
-
if (
|
|
64
|
+
if (void 0 === redirectUrl) return;
|
|
65
65
|
return processRedirect(new Headers(beforeRenderResult.headers), beforeRenderResult.status, redirectCtx);
|
|
66
66
|
};
|
|
67
67
|
const finalizeRenderResponse = async (response, responseProxy, redirectCtx, routerCleanup)=>{
|
|
@@ -33,7 +33,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
33
33
|
finishWithRouterCleanup: ()=>finishWithRouterCleanup,
|
|
34
34
|
runWithRouterCleanupOnError: ()=>runWithRouterCleanupOnError
|
|
35
35
|
});
|
|
36
|
-
const
|
|
36
|
+
const router_state_namespaceObject = require("@modern-js/runtime-extensions/router-state");
|
|
37
37
|
const ROUTER_CLEANUP_ERROR = 'An error occurs during router runtime cleanup';
|
|
38
38
|
async function runWithRouterCleanupOnError(routerCleanup, callback) {
|
|
39
39
|
try {
|
|
@@ -57,7 +57,7 @@ function createRouterCleanup(runtimeContext, onError) {
|
|
|
57
57
|
if (finished) return;
|
|
58
58
|
finished = true;
|
|
59
59
|
try {
|
|
60
|
-
await (0,
|
|
60
|
+
await (0, router_state_namespaceObject.getRouterRuntimeState)(runtimeContext)?.cleanup?.();
|
|
61
61
|
} catch (error) {
|
|
62
62
|
onError(error, ROUTER_CLEANUP_ERROR);
|
|
63
63
|
}
|
|
@@ -27,15 +27,182 @@ var __webpack_require__ = {};
|
|
|
27
27
|
})();
|
|
28
28
|
var __webpack_exports__ = {};
|
|
29
29
|
__webpack_require__.r(__webpack_exports__);
|
|
30
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
+
buildHtml: ()=>buildHtml,
|
|
32
|
+
createSSRRenderLifecycle: ()=>createSSRRenderLifecycle,
|
|
33
|
+
createSSRStreamErrorReporter: ()=>createSSRStreamErrorReporter,
|
|
34
|
+
observeSSRStream: ()=>observeSSRStream,
|
|
35
|
+
orderSSRStreamTransforms: ()=>orderSSRStreamTransforms,
|
|
36
|
+
replaceSSRTemplateChunk: ()=>replaceSSRTemplateChunk
|
|
37
|
+
});
|
|
38
|
+
const external_utils_js_namespaceObject = require("./utils.js");
|
|
30
39
|
function buildHtml(template, callbacks) {
|
|
31
40
|
return callbacks.reduce((promise, buildHtmlCb)=>promise.then((template)=>buildHtmlCb(template)), Promise.resolve(template));
|
|
32
41
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
42
|
+
function createSSRRenderLifecycle(observers) {
|
|
43
|
+
let terminal;
|
|
44
|
+
return {
|
|
45
|
+
transformAssets (groups, info) {
|
|
46
|
+
let assets = groups.flatMap((group)=>group.assets);
|
|
47
|
+
for (const observer of observers)assets = observer.transformAssets?.(assets, {
|
|
48
|
+
...info,
|
|
49
|
+
groups
|
|
50
|
+
}) ?? assets;
|
|
51
|
+
return assets;
|
|
52
|
+
},
|
|
53
|
+
transformTemplateChunk (chunk) {
|
|
54
|
+
for (const observer of observers)chunk = observer.transformTemplateChunk?.(chunk, {
|
|
55
|
+
attributesToString: external_utils_js_namespaceObject.attributesToString,
|
|
56
|
+
hasStylesheetLink: external_utils_js_namespaceObject.hasStylesheetLink
|
|
57
|
+
}) ?? chunk;
|
|
58
|
+
return chunk;
|
|
59
|
+
},
|
|
60
|
+
getRouterData () {
|
|
61
|
+
let data;
|
|
62
|
+
for (const observer of observers)data = observer.getRouterData?.() ?? data;
|
|
63
|
+
return data;
|
|
64
|
+
},
|
|
65
|
+
get terminal () {
|
|
66
|
+
return terminal;
|
|
67
|
+
},
|
|
68
|
+
beforeReact () {
|
|
69
|
+
for (const observer of observers)observer.beforeReact?.();
|
|
70
|
+
},
|
|
71
|
+
completedBody (html, phase) {
|
|
72
|
+
for (const observer of observers)html = observer.completedBody?.(html, {
|
|
73
|
+
phase
|
|
74
|
+
}) ?? html;
|
|
75
|
+
return html;
|
|
76
|
+
},
|
|
77
|
+
finish (result) {
|
|
78
|
+
if (void 0 !== terminal) return;
|
|
79
|
+
terminal = result;
|
|
80
|
+
for (const observer of observers)try {
|
|
81
|
+
observer.onTerminal?.(result);
|
|
82
|
+
} catch {}
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function replaceSSRTemplateChunk(chunk, lifecycle, options = {}) {
|
|
87
|
+
const result = lifecycle?.transformTemplateChunk(chunk) ?? chunk;
|
|
88
|
+
if (true === options.preserveEmpty && '' === result.content) return result.template;
|
|
89
|
+
return (0, external_utils_js_namespaceObject.safeReplace)(result.template, result.placeholder, result.content);
|
|
90
|
+
}
|
|
91
|
+
function orderSSRStreamTransforms(extenders) {
|
|
92
|
+
return [
|
|
93
|
+
...extenders.filter((extender)=>'body' !== extender.streamPhase),
|
|
94
|
+
...extenders.filter((extender)=>'body' === extender.streamPhase)
|
|
95
|
+
];
|
|
96
|
+
}
|
|
97
|
+
function createSSRStreamErrorReporter(onError) {
|
|
98
|
+
let reported = false;
|
|
99
|
+
return (error)=>{
|
|
100
|
+
if (reported) return;
|
|
101
|
+
reported = true;
|
|
102
|
+
try {
|
|
103
|
+
onError(error);
|
|
104
|
+
} catch {}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function observeSSRStream(source, options) {
|
|
108
|
+
const reader = source.getReader();
|
|
109
|
+
let controller;
|
|
110
|
+
let ended = false;
|
|
111
|
+
let cancellation;
|
|
112
|
+
const cleanup = ()=>{
|
|
113
|
+
options.signal.removeEventListener('abort', onAbort);
|
|
114
|
+
reader.releaseLock();
|
|
115
|
+
};
|
|
116
|
+
const cancel = (reason)=>{
|
|
117
|
+
if (void 0 !== cancellation) return cancellation;
|
|
118
|
+
if (ended) return Promise.resolve();
|
|
119
|
+
ended = true;
|
|
120
|
+
options.lifecycle.finish({
|
|
121
|
+
status: 'cancelled',
|
|
122
|
+
reason
|
|
123
|
+
});
|
|
124
|
+
cancellation = (async ()=>{
|
|
125
|
+
try {
|
|
126
|
+
const observer = Promise.withResolvers();
|
|
127
|
+
try {
|
|
128
|
+
observer.resolve(options.onCancel?.(reason));
|
|
129
|
+
} catch (error) {
|
|
130
|
+
observer.reject(error);
|
|
131
|
+
}
|
|
132
|
+
const results = await Promise.allSettled([
|
|
133
|
+
observer.promise,
|
|
134
|
+
reader.cancel(reason)
|
|
135
|
+
]);
|
|
136
|
+
const rejected = results.find((result)=>'rejected' === result.status);
|
|
137
|
+
if (rejected?.status === 'rejected') throw rejected.reason;
|
|
138
|
+
} finally{
|
|
139
|
+
cleanup();
|
|
140
|
+
}
|
|
141
|
+
})();
|
|
142
|
+
return cancellation;
|
|
143
|
+
};
|
|
144
|
+
const onAbort = ()=>{
|
|
145
|
+
if (ended) return;
|
|
146
|
+
const reason = options.signal.reason;
|
|
147
|
+
cancel(reason).then(()=>controller.error(reason), (error)=>{
|
|
148
|
+
controller.error(reason);
|
|
149
|
+
return options.onError(error);
|
|
150
|
+
});
|
|
151
|
+
};
|
|
152
|
+
return new ReadableStream({
|
|
153
|
+
start (value) {
|
|
154
|
+
controller = value;
|
|
155
|
+
options.signal.addEventListener('abort', onAbort, {
|
|
156
|
+
once: true
|
|
157
|
+
});
|
|
158
|
+
if (options.signal.aborted) onAbort();
|
|
159
|
+
},
|
|
160
|
+
async pull (value) {
|
|
161
|
+
if (ended) return void await cancellation;
|
|
162
|
+
try {
|
|
163
|
+
const result = await reader.read();
|
|
164
|
+
if (ended) return void await cancellation;
|
|
165
|
+
if (result.done) {
|
|
166
|
+
await options.onComplete?.();
|
|
167
|
+
if (ended) return void await cancellation;
|
|
168
|
+
ended = true;
|
|
169
|
+
options.lifecycle.finish({
|
|
170
|
+
status: 'complete'
|
|
171
|
+
});
|
|
172
|
+
cleanup();
|
|
173
|
+
value.close();
|
|
174
|
+
} else value.enqueue(result.value);
|
|
175
|
+
} catch (error) {
|
|
176
|
+
if (ended) return void await cancellation;
|
|
177
|
+
ended = true;
|
|
178
|
+
options.lifecycle.finish({
|
|
179
|
+
status: 'error',
|
|
180
|
+
error
|
|
181
|
+
});
|
|
182
|
+
try {
|
|
183
|
+
await options.onError(error);
|
|
184
|
+
} finally{
|
|
185
|
+
cleanup();
|
|
186
|
+
value.error(error);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
cancel
|
|
191
|
+
});
|
|
192
|
+
}
|
|
36
193
|
exports.buildHtml = __webpack_exports__.buildHtml;
|
|
194
|
+
exports.createSSRRenderLifecycle = __webpack_exports__.createSSRRenderLifecycle;
|
|
195
|
+
exports.createSSRStreamErrorReporter = __webpack_exports__.createSSRStreamErrorReporter;
|
|
196
|
+
exports.observeSSRStream = __webpack_exports__.observeSSRStream;
|
|
197
|
+
exports.orderSSRStreamTransforms = __webpack_exports__.orderSSRStreamTransforms;
|
|
198
|
+
exports.replaceSSRTemplateChunk = __webpack_exports__.replaceSSRTemplateChunk;
|
|
37
199
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
38
|
-
"buildHtml"
|
|
200
|
+
"buildHtml",
|
|
201
|
+
"createSSRRenderLifecycle",
|
|
202
|
+
"createSSRStreamErrorReporter",
|
|
203
|
+
"observeSSRStream",
|
|
204
|
+
"orderSSRStreamTransforms",
|
|
205
|
+
"replaceSSRTemplateChunk"
|
|
39
206
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
40
207
|
Object.defineProperty(exports, '__esModule', {
|
|
41
208
|
value: true
|
|
@@ -31,14 +31,12 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
31
31
|
buildShellAfterTemplate: ()=>buildShellAfterTemplate
|
|
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_constants_js_namespaceObject_1 = require("../constants.js");
|
|
37
|
-
const external_scriptOrder_js_namespaceObject = require("../scriptOrder.js");
|
|
38
36
|
const external_shared_js_namespaceObject = require("../shared.js");
|
|
39
37
|
const external_utils_js_namespaceObject = require("../utils.js");
|
|
40
38
|
function buildShellAfterTemplate(afterAppTemplate, options) {
|
|
41
|
-
const { request, config, ssrConfig, runtimeContext, renderLevel, entryName } = options;
|
|
39
|
+
const { request, config, ssrConfig, runtimeContext, renderLevel, entryName, lifecycle } = options;
|
|
42
40
|
const callbacks = [
|
|
43
41
|
(template)=>injectJs(template, entryName, config.nonce),
|
|
44
42
|
createReplaceSSRData({
|
|
@@ -48,21 +46,28 @@ function buildShellAfterTemplate(afterAppTemplate, options) {
|
|
|
48
46
|
useJsonScript: config.useJsonScript,
|
|
49
47
|
runtimeContext,
|
|
50
48
|
renderLevel,
|
|
51
|
-
|
|
49
|
+
lifecycle
|
|
52
50
|
})
|
|
53
51
|
];
|
|
54
52
|
async function injectJs(template, entryName, nonce) {
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
const assets = runtimeContext.routeManifest?.routeAssets?.[`async-${entryName}`]?.assets ?? [];
|
|
54
|
+
const jsChunkStr = assets.filter((asset)=>asset.endsWith('.js')).map((asset)=>`<script${(0, external_utils_js_namespaceObject.attributesToString)({
|
|
55
|
+
src: asset,
|
|
56
|
+
nonce
|
|
57
|
+
})}></script>`).join(' ');
|
|
58
|
+
return (0, external_shared_js_namespaceObject.replaceSSRTemplateChunk)({
|
|
59
|
+
name: "scripts",
|
|
60
|
+
template,
|
|
61
|
+
placeholder: external_constants_js_namespaceObject_1.CHUNK_JS_PLACEHOLDER,
|
|
62
|
+
content: jsChunkStr
|
|
63
|
+
}, lifecycle, {
|
|
64
|
+
preserveEmpty: true
|
|
58
65
|
});
|
|
59
|
-
if (!jsChunkStr) return template;
|
|
60
|
-
return (0, external_scriptOrder_js_namespaceObject.replaceChunkJsPlaceholder)(template, jsChunkStr, entryName);
|
|
61
66
|
}
|
|
62
67
|
return (0, external_shared_js_namespaceObject.buildHtml)(afterAppTemplate, callbacks);
|
|
63
68
|
}
|
|
64
69
|
function createReplaceSSRData(options) {
|
|
65
|
-
const { runtimeContext, nonce, renderLevel, useJsonScript, ssrConfig,
|
|
70
|
+
const { runtimeContext, nonce, renderLevel, useJsonScript, ssrConfig, lifecycle } = options;
|
|
66
71
|
const { request, reporter } = runtimeContext.ssrContext;
|
|
67
72
|
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;
|
|
68
73
|
const ssrData = {
|
|
@@ -91,12 +96,12 @@ function createReplaceSSRData(options) {
|
|
|
91
96
|
});
|
|
92
97
|
const serializeSSRData = (0, node_namespaceObject.serializeJson)(ssrData);
|
|
93
98
|
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>`;
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
99
|
+
return (template)=>(0, external_shared_js_namespaceObject.replaceSSRTemplateChunk)({
|
|
100
|
+
name: 'data',
|
|
101
|
+
template,
|
|
102
|
+
placeholder: external_constants_js_namespaceObject_1.SSR_DATA_PLACEHOLDER,
|
|
103
|
+
content: ssrDataScript
|
|
104
|
+
}, lifecycle);
|
|
100
105
|
}
|
|
101
106
|
exports.buildShellAfterTemplate = __webpack_exports__.buildShellAfterTemplate;
|
|
102
107
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
@@ -31,9 +31,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
31
31
|
buildShellBeforeTemplate: ()=>buildShellBeforeTemplate
|
|
32
32
|
});
|
|
33
33
|
const router_namespaceObject = require("@modern-js/runtime-utils/router");
|
|
34
|
-
const lifecycle_js_namespaceObject = require("../../../router/runtime/lifecycle.js");
|
|
35
34
|
const external_constants_js_namespaceObject = require("../constants.js");
|
|
36
|
-
const external_federatedCss_js_namespaceObject = require("../federatedCss.js");
|
|
37
35
|
const external_helmet_js_namespaceObject = require("../helmet.js");
|
|
38
36
|
const external_shared_js_namespaceObject = require("../shared.js");
|
|
39
37
|
const external_utils_js_namespaceObject = require("../utils.js");
|
|
@@ -45,12 +43,11 @@ const readAsset = async (chunk)=>{
|
|
|
45
43
|
};
|
|
46
44
|
const checkIsInline = (chunk, enableInline)=>{
|
|
47
45
|
if ('production' !== process.env.NODE_ENV) return false;
|
|
48
|
-
if (enableInline instanceof RegExp) return enableInline.test(chunk);
|
|
49
|
-
return Boolean(enableInline);
|
|
46
|
+
else if (enableInline instanceof RegExp) return enableInline.test(chunk);
|
|
47
|
+
else return Boolean(enableInline);
|
|
50
48
|
};
|
|
51
49
|
async function buildShellBeforeTemplate(beforeAppTemplate, options) {
|
|
52
|
-
const { config, runtimeContext, styledComponentsStyleTags, entryName,
|
|
53
|
-
const helmetData = (0, external_helmet_js_namespaceObject.getHelmetData)(runtimeContext);
|
|
50
|
+
const { config, runtimeContext, styledComponentsStyleTags, entryName, lifecycle, helmetData } = options;
|
|
54
51
|
const callbacks = [
|
|
55
52
|
(0, external_helmet_js_namespaceObject.createReplaceHelemt)(helmetData),
|
|
56
53
|
(template)=>injectCss(template, entryName, styledComponentsStyleTags)
|
|
@@ -59,41 +56,53 @@ async function buildShellBeforeTemplate(beforeAppTemplate, options) {
|
|
|
59
56
|
async function injectCss(template, entryName, styledComponentsStyleTags) {
|
|
60
57
|
let css = await getCssChunks();
|
|
61
58
|
if (styledComponentsStyleTags) css += styledComponentsStyleTags;
|
|
62
|
-
|
|
59
|
+
return (0, external_shared_js_namespaceObject.replaceSSRTemplateChunk)({
|
|
60
|
+
name: 'styles',
|
|
63
61
|
template,
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
62
|
+
placeholder: external_constants_js_namespaceObject.CHUNK_CSS_PLACEHOLDER,
|
|
63
|
+
content: css,
|
|
64
|
+
emittedAssets: css.match(/href="([^"]+)"/g)?.map((item)=>item.replace(/^href="/, '').replace(/"$/, ''))
|
|
65
|
+
}, lifecycle);
|
|
67
66
|
async function getCssChunks() {
|
|
68
67
|
const { routeManifest, routerContext, routes } = runtimeContext;
|
|
69
68
|
const routeAssets = routeManifest?.routeAssets;
|
|
70
69
|
if (!routeAssets) return '';
|
|
71
70
|
let matchedRouteManifests = [];
|
|
72
|
-
|
|
73
|
-
if (matchedRouteIds?.length) matchedRouteManifests = matchedRouteIds.map((routeId)=>routeAssets[routeId]).filter(Boolean);
|
|
74
|
-
else if (routerContext && routes) {
|
|
71
|
+
if (routerContext && routes) {
|
|
75
72
|
const matches = (0, router_namespaceObject.matchRoutes)(routes, routerContext.location, routerContext.basename);
|
|
76
|
-
matchedRouteManifests = matches?.
|
|
77
|
-
if (!index) return;
|
|
73
|
+
matchedRouteManifests = matches?.flatMap((match, index)=>{
|
|
78
74
|
const routeId = match.route.id;
|
|
79
|
-
|
|
80
|
-
|
|
75
|
+
const manifest = 0 !== index && routeId ? routeAssets[routeId] : void 0;
|
|
76
|
+
return void 0 === manifest ? [] : [
|
|
77
|
+
manifest
|
|
78
|
+
];
|
|
79
|
+
}) ?? [];
|
|
81
80
|
}
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
81
|
+
const createAsset = (url)=>({
|
|
82
|
+
url
|
|
83
|
+
});
|
|
84
|
+
const groups = [
|
|
85
|
+
{
|
|
86
|
+
name: 'route',
|
|
87
|
+
assets: matchedRouteManifests.flatMap((manifest)=>manifest.referenceCssAssets ?? []).map(createAsset)
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'async-entry',
|
|
91
|
+
assets: (routeAssets[`async-${entryName}`]?.referenceCssAssets ?? []).map(createAsset)
|
|
92
|
+
}
|
|
93
|
+
];
|
|
94
|
+
const assets = lifecycle?.transformAssets(groups, {
|
|
95
|
+
kind: 'style',
|
|
96
|
+
source: 'template',
|
|
97
|
+
template,
|
|
98
|
+
createAsset
|
|
99
|
+
}) ?? groups.flatMap((group)=>group.assets);
|
|
100
|
+
const cssChunks = assets.map((asset)=>asset.url).filter((asset)=>asset.endsWith('.css') && !(0, external_utils_js_namespaceObject.hasStylesheetLink)(template, asset));
|
|
92
101
|
const { inlineStyles } = config;
|
|
93
102
|
const styles = await Promise.all(cssChunks.map(async (chunk)=>{
|
|
94
103
|
const link = `<link href="${chunk}" rel="stylesheet" />`;
|
|
95
104
|
if ((0, external_utils_js_namespaceObject.checkIsNode)() && checkIsInline(chunk, inlineStyles)) return readAsset(chunk).then((content)=>`<style>${content}</style>`).catch((_)=>link);
|
|
96
|
-
return link;
|
|
105
|
+
else return link;
|
|
97
106
|
}));
|
|
98
107
|
return `${styles.join('')}`;
|
|
99
108
|
}
|
|
@@ -30,20 +30,17 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
31
|
buildShellBeforeTemplate: ()=>buildShellBeforeTemplate
|
|
32
32
|
});
|
|
33
|
-
const lifecycle_js_namespaceObject = require("../../../router/runtime/lifecycle.js");
|
|
34
33
|
const external_constants_js_namespaceObject = require("../constants.js");
|
|
35
|
-
const external_federatedCss_js_namespaceObject = require("../federatedCss.js");
|
|
36
34
|
const external_helmet_js_namespaceObject = require("../helmet.js");
|
|
37
35
|
const external_shared_js_namespaceObject = require("../shared.js");
|
|
38
36
|
const external_utils_js_namespaceObject = require("../utils.js");
|
|
39
37
|
const checkIsInline = (chunk, enableInline)=>{
|
|
40
38
|
if ('production' !== process.env.NODE_ENV) return false;
|
|
41
|
-
if (enableInline instanceof RegExp) return enableInline.test(chunk);
|
|
42
|
-
return Boolean(enableInline);
|
|
39
|
+
else if (enableInline instanceof RegExp) return enableInline.test(chunk);
|
|
40
|
+
else return Boolean(enableInline);
|
|
43
41
|
};
|
|
44
42
|
async function buildShellBeforeTemplate(beforeAppTemplate, options) {
|
|
45
|
-
const { config, runtimeContext, styledComponentsStyleTags, entryName,
|
|
46
|
-
const helmetData = (0, external_helmet_js_namespaceObject.getHelmetData)(runtimeContext);
|
|
43
|
+
const { config, runtimeContext, styledComponentsStyleTags, entryName, lifecycle, helmetData } = options;
|
|
47
44
|
const callbacks = [
|
|
48
45
|
(0, external_helmet_js_namespaceObject.createReplaceHelemt)(helmetData),
|
|
49
46
|
(template)=>injectCss(template, entryName, styledComponentsStyleTags)
|
|
@@ -52,28 +49,38 @@ async function buildShellBeforeTemplate(beforeAppTemplate, options) {
|
|
|
52
49
|
async function injectCss(template, entryName, styledComponentsStyleTags) {
|
|
53
50
|
let css = await getCssChunks();
|
|
54
51
|
if (styledComponentsStyleTags) css += styledComponentsStyleTags;
|
|
55
|
-
|
|
52
|
+
return (0, external_shared_js_namespaceObject.replaceSSRTemplateChunk)({
|
|
53
|
+
name: 'styles',
|
|
56
54
|
template,
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
55
|
+
placeholder: external_constants_js_namespaceObject.CHUNK_CSS_PLACEHOLDER,
|
|
56
|
+
content: css,
|
|
57
|
+
emittedAssets: css.match(/href="([^"]+)"/g)?.map((item)=>item.replace(/^href="/, '').replace(/"$/, ''))
|
|
58
|
+
}, lifecycle);
|
|
60
59
|
async function getCssChunks() {
|
|
61
60
|
const { routeManifest } = runtimeContext;
|
|
62
61
|
const routeAssets = routeManifest?.routeAssets;
|
|
63
62
|
if (!routeAssets) return '';
|
|
64
|
-
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
63
|
+
const matchedRouteManifests = [];
|
|
64
|
+
const createAsset = (url)=>({
|
|
65
|
+
url
|
|
66
|
+
});
|
|
67
|
+
const groups = [
|
|
68
|
+
{
|
|
69
|
+
name: 'route',
|
|
70
|
+
assets: matchedRouteManifests.flatMap((manifest)=>manifest.referenceCssAssets ?? []).map(createAsset)
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'async-entry',
|
|
74
|
+
assets: (routeAssets[`async-${entryName}`]?.referenceCssAssets ?? []).map(createAsset)
|
|
75
|
+
}
|
|
76
|
+
];
|
|
77
|
+
const assets = lifecycle?.transformAssets(groups, {
|
|
78
|
+
kind: 'style',
|
|
79
|
+
source: 'template',
|
|
80
|
+
template,
|
|
81
|
+
createAsset
|
|
82
|
+
}) ?? groups.flatMap((group)=>group.assets);
|
|
83
|
+
const cssChunks = assets.map((asset)=>asset.url).filter((asset)=>asset.endsWith('.css') && !(0, external_utils_js_namespaceObject.hasStylesheetLink)(template, asset));
|
|
77
84
|
const { inlineStyles } = config;
|
|
78
85
|
const styles = cssChunks.map((chunk)=>{
|
|
79
86
|
const link = `<link href="${chunk}" rel="stylesheet" />`;
|