@bleedingdev/modern-js-runtime 3.5.0-ultramodern.10 → 3.5.0-ultramodern.101

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/dist/cjs/boundary-debugger/index.js +13 -3
  2. package/dist/cjs/cli/index.js +1 -11
  3. package/dist/cjs/cli/registry.js +18 -0
  4. package/dist/cjs/cli/ssr/index.js +3 -2
  5. package/dist/cjs/cli/ssr/loadable-bundler-plugin.js +8 -4
  6. package/dist/cjs/core/browser/hydrate.js +16 -2
  7. package/dist/cjs/core/browser/index.js +19 -18
  8. package/dist/cjs/core/context/index.js +3 -0
  9. package/dist/cjs/core/context/public.js +49 -0
  10. package/dist/cjs/core/context/runtime.js +6 -8
  11. package/dist/cjs/core/react/wrapper.js +57 -0
  12. package/dist/cjs/core/server/federatedCss.js +7 -3
  13. package/dist/cjs/core/server/requestHandler.js +15 -45
  14. package/dist/cjs/core/server/requestResponse.js +83 -0
  15. package/dist/cjs/core/server/routerCleanup.js +16 -6
  16. package/dist/cjs/core/server/scriptOrder.js +13 -10
  17. package/dist/cjs/core/server/stream/afterTemplate.js +9 -5
  18. package/dist/cjs/core/server/stream/template.js +3 -3
  19. package/dist/cjs/core/server/string/index.js +3 -3
  20. package/dist/cjs/core/server/string/loadable.js +3 -11
  21. package/dist/cjs/document/cli/index.js +5 -2
  22. package/dist/cjs/index.js +7 -6
  23. package/dist/cjs/module-federation/consume-surface.js +199 -0
  24. package/dist/cjs/module-federation/distributed-ssr.js +134 -0
  25. package/dist/cjs/module-federation/index.js +258 -120
  26. package/dist/cjs/module-federation/last-known-good.js +124 -0
  27. package/dist/cjs/module-federation/manifest-recovery-runtime-plugin.js +140 -0
  28. package/dist/cjs/module-federation/surface-resolution-types.js +61 -0
  29. package/dist/cjs/router/cli/code/nestedRoutes.js +3 -0
  30. package/dist/cjs/router/cli/code/templates.js +3 -2
  31. package/dist/cjs/router/cli/constants.js +1 -0
  32. package/dist/cjs/router/cli/nestedRoutesSpec.js +3 -1
  33. package/dist/cjs/router/runtime/hooks.js +7 -6
  34. package/dist/cjs/router/runtime/internal.js +30 -16
  35. package/dist/cjs/router/runtime/plugin.js +6 -7
  36. package/dist/cjs/router/runtime/provider.js +58 -12
  37. package/dist/esm/boundary-debugger/index.mjs +13 -3
  38. package/dist/esm/cli/code.mjs +12 -12
  39. package/dist/esm/cli/index.mjs +2 -12
  40. package/dist/esm/cli/registry.mjs +0 -0
  41. package/dist/esm/cli/ssr/index.mjs +3 -2
  42. package/dist/esm/cli/ssr/loadable-bundler-plugin.mjs +8 -4
  43. package/dist/esm/core/browser/hydrate.mjs +15 -4
  44. package/dist/esm/core/browser/index.mjs +15 -17
  45. package/dist/esm/core/context/index.mjs +1 -1
  46. package/dist/esm/core/context/public.mjs +5 -0
  47. package/dist/esm/core/context/runtime.mjs +4 -6
  48. package/dist/esm/core/react/wrapper.mjs +58 -1
  49. package/dist/esm/core/server/federatedCss.mjs +7 -3
  50. package/dist/esm/core/server/requestHandler.mjs +15 -45
  51. package/dist/esm/core/server/requestResponse.mjs +39 -0
  52. package/dist/esm/core/server/routerCleanup.mjs +11 -4
  53. package/dist/esm/core/server/scriptOrder.mjs +11 -8
  54. package/dist/esm/core/server/stream/afterTemplate.mjs +10 -6
  55. package/dist/esm/core/server/stream/template.mjs +3 -3
  56. package/dist/esm/core/server/string/index.mjs +3 -3
  57. package/dist/esm/core/server/string/loadable.mjs +3 -8
  58. package/dist/esm/document/cli/index.mjs +1 -1
  59. package/dist/esm/exports/loadable.mjs +3 -3
  60. package/dist/esm/index.mjs +2 -1
  61. package/dist/esm/module-federation/consume-surface.mjs +158 -0
  62. package/dist/esm/module-federation/distributed-ssr.mjs +81 -0
  63. package/dist/esm/module-federation/index.mjs +6 -0
  64. package/dist/esm/module-federation/last-known-good.mjs +80 -0
  65. package/dist/esm/module-federation/manifest-recovery-runtime-plugin.mjs +100 -0
  66. package/dist/esm/module-federation/surface-resolution-types.mjs +8 -0
  67. package/dist/esm/router/cli/code/index.mjs +5 -5
  68. package/dist/esm/router/cli/code/nestedRoutes.mjs +3 -0
  69. package/dist/esm/router/cli/code/templates.mjs +3 -2
  70. package/dist/esm/router/cli/constants.mjs +1 -0
  71. package/dist/esm/router/cli/handler.mjs +3 -3
  72. package/dist/esm/router/cli/nestedRoutesSpec.mjs +3 -1
  73. package/dist/esm/router/runtime/hooks.mjs +7 -6
  74. package/dist/esm/router/runtime/internal.mjs +26 -18
  75. package/dist/esm/router/runtime/plugin.mjs +6 -7
  76. package/dist/esm/router/runtime/provider.mjs +56 -13
  77. package/dist/esm-node/boundary-debugger/index.mjs +13 -3
  78. package/dist/esm-node/cli/code.mjs +12 -12
  79. package/dist/esm-node/cli/index.mjs +2 -12
  80. package/dist/esm-node/cli/registry.mjs +1 -0
  81. package/dist/esm-node/cli/ssr/index.mjs +3 -2
  82. package/dist/esm-node/cli/ssr/loadable-bundler-plugin.mjs +8 -4
  83. package/dist/esm-node/core/browser/hydrate.mjs +15 -4
  84. package/dist/esm-node/core/browser/index.mjs +15 -17
  85. package/dist/esm-node/core/context/index.mjs +1 -1
  86. package/dist/esm-node/core/context/public.mjs +6 -0
  87. package/dist/esm-node/core/context/runtime.mjs +4 -6
  88. package/dist/esm-node/core/react/wrapper.mjs +58 -1
  89. package/dist/esm-node/core/server/federatedCss.mjs +7 -3
  90. package/dist/esm-node/core/server/requestHandler.mjs +15 -45
  91. package/dist/esm-node/core/server/requestResponse.mjs +40 -0
  92. package/dist/esm-node/core/server/routerCleanup.mjs +11 -4
  93. package/dist/esm-node/core/server/scriptOrder.mjs +11 -8
  94. package/dist/esm-node/core/server/stream/afterTemplate.mjs +10 -6
  95. package/dist/esm-node/core/server/stream/template.mjs +3 -3
  96. package/dist/esm-node/core/server/string/index.mjs +3 -3
  97. package/dist/esm-node/core/server/string/loadable.mjs +3 -8
  98. package/dist/esm-node/document/cli/index.mjs +1 -1
  99. package/dist/esm-node/exports/loadable.mjs +3 -3
  100. package/dist/esm-node/index.mjs +2 -1
  101. package/dist/esm-node/module-federation/consume-surface.mjs +159 -0
  102. package/dist/esm-node/module-federation/distributed-ssr.mjs +82 -0
  103. package/dist/esm-node/module-federation/index.mjs +6 -0
  104. package/dist/esm-node/module-federation/last-known-good.mjs +81 -0
  105. package/dist/esm-node/module-federation/manifest-recovery-runtime-plugin.mjs +101 -0
  106. package/dist/esm-node/module-federation/surface-resolution-types.mjs +9 -0
  107. package/dist/esm-node/router/cli/code/index.mjs +5 -5
  108. package/dist/esm-node/router/cli/code/nestedRoutes.mjs +3 -0
  109. package/dist/esm-node/router/cli/code/templates.mjs +3 -2
  110. package/dist/esm-node/router/cli/constants.mjs +1 -0
  111. package/dist/esm-node/router/cli/handler.mjs +3 -3
  112. package/dist/esm-node/router/cli/nestedRoutesSpec.mjs +3 -1
  113. package/dist/esm-node/router/runtime/hooks.mjs +7 -6
  114. package/dist/esm-node/router/runtime/internal.mjs +26 -18
  115. package/dist/esm-node/router/runtime/plugin.mjs +6 -7
  116. package/dist/esm-node/router/runtime/provider.mjs +56 -13
  117. package/dist/types/boundary-debugger/index.d.ts +1 -1
  118. package/dist/types/cli/registry.d.ts +2 -0
  119. package/dist/types/common.d.ts +8 -1
  120. package/dist/types/core/browser/hydrate.d.ts +2 -1
  121. package/dist/types/core/browser/index.d.ts +4 -1
  122. package/dist/types/core/context/index.d.ts +26 -10
  123. package/dist/types/core/context/monitors/default.d.ts +10 -2
  124. package/dist/types/core/context/monitors/index.d.ts +1 -1
  125. package/dist/types/core/context/monitors/index.server.d.ts +2 -2
  126. package/dist/types/core/context/public.d.ts +27 -0
  127. package/dist/types/core/context/runtime.d.ts +12 -22
  128. package/dist/types/core/react/index.d.ts +1 -1
  129. package/dist/types/core/server/requestResponse.d.ts +15 -0
  130. package/dist/types/core/server/routerCleanup.d.ts +2 -1
  131. package/dist/types/core/server/scriptOrder.d.ts +1 -1
  132. package/dist/types/core/server/stream/shared.d.ts +2 -2
  133. package/dist/types/core/server/string/loadable.d.ts +0 -2
  134. package/dist/types/document/cli/index.d.ts +1 -0
  135. package/dist/types/exports/head.d.ts +1 -1
  136. package/dist/types/index.d.ts +5 -5
  137. package/dist/types/internal.d.ts +0 -1
  138. package/dist/types/module-federation/consume-surface.d.ts +104 -0
  139. package/dist/types/module-federation/distributed-ssr.d.ts +61 -0
  140. package/dist/types/module-federation/index.d.ts +6 -0
  141. package/dist/types/module-federation/last-known-good.d.ts +72 -0
  142. package/dist/types/module-federation/manifest-recovery-runtime-plugin.d.ts +25 -0
  143. package/dist/types/module-federation/surface-resolution-types.d.ts +23 -0
  144. package/dist/types/router/cli/constants.d.ts +1 -0
  145. package/dist/types/router/runtime/hooks.d.ts +10 -6
  146. package/dist/types/router/runtime/internal.d.ts +13 -3
  147. package/dist/types/router/runtime/plugin.d.ts +1 -1
  148. package/dist/types/router/runtime/plugin.node.d.ts +1 -1
  149. package/dist/types/router/runtime/provider.d.ts +28 -11
  150. package/dist/types/router/runtime/types.d.ts +27 -5
  151. package/package.json +47 -27
  152. package/dist/cjs/exports/tanstack-router.js +0 -83
  153. package/dist/esm/exports/tanstack-router.mjs +0 -30
  154. package/dist/esm-node/exports/tanstack-router.mjs +0 -31
  155. package/dist/types/exports/tanstack-router.d.ts +0 -88
@@ -0,0 +1,83 @@
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
+ applyRouterSnapshotResult: ()=>applyRouterSnapshotResult,
32
+ createLoaderRedirectResponse: ()=>createLoaderRedirectResponse,
33
+ finalizeRenderResponse: ()=>finalizeRenderResponse
34
+ });
35
+ const lifecycle_js_namespaceObject = require("../../router/runtime/lifecycle.js");
36
+ const rsc_router_js_namespaceObject = require("../../router/runtime/rsc-router.js");
37
+ const external_tracer_js_namespaceObject = require("./tracer.js");
38
+ const isRedirectStatus = (status)=>status >= 300 && status <= 399;
39
+ const isNullBodyStatus = (status)=>204 === status || 205 === status || 304 === status;
40
+ const processRedirect = (headers, status, ctx)=>{
41
+ if (ctx.enableRsc && ctx.isRSCNavigation) return (0, rsc_router_js_namespaceObject.handleRSCRedirect)(headers, ctx.basename, status);
42
+ return new Response(null, {
43
+ status,
44
+ headers
45
+ });
46
+ };
47
+ const applyRouterSnapshotResult = (context, onError)=>{
48
+ const routerServerSnapshot = (0, lifecycle_js_namespaceObject.getRouterServerSnapshot)(context);
49
+ const routerStatusCode = routerServerSnapshot?.statusCode ?? context.routerContext?.statusCode;
50
+ if (routerStatusCode && 200 !== routerStatusCode) context.ssrContext?.response.status(routerStatusCode);
51
+ const errors = Object.values(routerServerSnapshot?.errors || context.routerContext?.errors || {});
52
+ if (errors.length > 0) onError(errors[0], external_tracer_js_namespaceObject.SSRErrors.LOADER_ERROR);
53
+ };
54
+ const createLoaderRedirectResponse = (beforeRenderResult, redirectCtx)=>{
55
+ if (!beforeRenderResult || !isRedirectStatus(beforeRenderResult.status)) return;
56
+ if (beforeRenderResult.headers.has('X-Modernjs-Redirect')) return beforeRenderResult;
57
+ const redirectUrl = beforeRenderResult.headers.get('Location') || '/';
58
+ return processRedirect(new Headers({
59
+ Location: redirectUrl
60
+ }), beforeRenderResult.status, redirectCtx);
61
+ };
62
+ const finalizeRenderResponse = (response, responseProxy, redirectCtx, routerCleanup)=>{
63
+ if (-1 !== responseProxy.status && isRedirectStatus(responseProxy.status) && responseProxy.headers.Location) return processRedirect(new Headers(responseProxy.headers), responseProxy.status, redirectCtx);
64
+ Object.entries(responseProxy.headers).forEach(([key, value])=>{
65
+ response.headers.set(key, value);
66
+ });
67
+ if (-1 !== responseProxy.status) return routerCleanup.deferUntilBodyDone(new Response(isNullBodyStatus(responseProxy.status) ? null : response.body, {
68
+ status: responseProxy.status,
69
+ headers: response.headers
70
+ }));
71
+ return routerCleanup.deferUntilBodyDone(response);
72
+ };
73
+ exports.applyRouterSnapshotResult = __webpack_exports__.applyRouterSnapshotResult;
74
+ exports.createLoaderRedirectResponse = __webpack_exports__.createLoaderRedirectResponse;
75
+ exports.finalizeRenderResponse = __webpack_exports__.finalizeRenderResponse;
76
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
77
+ "applyRouterSnapshotResult",
78
+ "createLoaderRedirectResponse",
79
+ "finalizeRenderResponse"
80
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
81
+ Object.defineProperty(exports, '__esModule', {
82
+ value: true
83
+ });
@@ -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
- withRouterCleanup: ()=>withRouterCleanup
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 withRouterCleanup(runtimeContext, onError, callback) {
38
- const routerCleanup = createRouterCleanup(runtimeContext, onError);
38
+ async function runWithRouterCleanupOnError(routerCleanup, callback) {
39
39
  try {
40
- return await callback(routerCleanup);
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.withRouterCleanup = __webpack_exports__.withRouterCleanup;
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
- "withRouterCleanup"
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
- getMatchedRouteAssets: ()=>getMatchedRouteAssets,
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 matchedRouteIds = (0, lifecycle_js_namespaceObject.getRouterMatchedRouteIds)(runtimeContext) ?? [];
112
- const assetEntries = [
113
- ...matchedRouteIds.map((routeId)=>routeAssets[routeId]),
114
- routeAssets[`async-${entryName}`]
115
- ].filter((entry)=>void 0 !== entry);
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)=>template?.includes(asset) !== true).map((asset)=>`<script src=${asset}${nonceAttr}></script>`).join(' ');
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.getMatchedRouteAssets = __webpack_exports__.getMatchedRouteAssets;
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
- "getMatchedRouteAssets",
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
- (template)=>injectJs(template, entryName, config.nonce)
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)=>(0, external_utils_js_namespaceObject.safeReplace)(template, external_constants_js_namespaceObject_1.SSR_DATA_PLACEHOLDER, ssrScripts);
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 [beforeAppTemplate = '', afterAppHtmlTemplate = ''] = htmlTemplate.split(HTML_SEPARATOR) || [];
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: builtAfterTemplate
42
+ shellAfter: afterAppHtmlTemplate
43
43
  };
44
44
  };
45
45
  exports.getTemplates = __webpack_exports__.getTemplates;
@@ -127,7 +127,7 @@ async function generateHtml(App, htmlTemplate, chunkSet, collectors, htmlModifie
127
127
  createReplaceHtml(html),
128
128
  createReplaceChunkJs(jsChunk, entryName),
129
129
  createReplaceChunkCss(cssChunk),
130
- createReplaceSSRDataScript(ssrScripts),
130
+ createReplaceSSRDataScript(ssrScripts, entryName),
131
131
  (0, external_helmet_js_namespaceObject.createReplaceHelemt)(helmetData),
132
132
  ...htmlModifiers
133
133
  ]);
@@ -136,8 +136,8 @@ async function generateHtml(App, htmlTemplate, chunkSet, collectors, htmlModifie
136
136
  function createReplaceHtml(html) {
137
137
  return (template)=>(0, external_utils_js_namespaceObject.safeReplace)(template, external_constants_js_namespaceObject_1.HTML_PLACEHOLDER, html);
138
138
  }
139
- function createReplaceSSRDataScript(data) {
140
- return (template)=>(0, external_utils_js_namespaceObject.safeReplace)(template, external_constants_js_namespaceObject_1.SSR_DATA_PLACEHOLDER, data);
139
+ function createReplaceSSRDataScript(data, entryName) {
140
+ return (template)=>(0, external_scriptOrder_js_namespaceObject.replaceChunkJsPlaceholder)(template, data, entryName, external_constants_js_namespaceObject_1.SSR_DATA_PLACEHOLDER);
141
141
  }
142
142
  function createReplaceChunkJs(js, entryName) {
143
143
  return (template)=>(0, external_scriptOrder_js_namespaceObject.replaceChunkJsPlaceholder)(template, js, entryName);
@@ -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 = this.getMatchedRouteChunks();
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
@@ -39,7 +39,8 @@ __webpack_require__.r(__webpack_exports__);
39
39
  __webpack_require__.d(__webpack_exports__, {
40
40
  default: ()=>cli,
41
41
  documentPlugin: ()=>documentPlugin,
42
- getDocumentByEntryName: ()=>getDocumentByEntryName
42
+ getDocumentByEntryName: ()=>getDocumentByEntryName,
43
+ processScriptPlaceholders: ()=>processScriptPlaceholders
43
44
  });
44
45
  const utils_namespaceObject = require("@modern-js/utils");
45
46
  const external_entities_namespaceObject = require("entities");
@@ -394,10 +395,12 @@ const cli = documentPlugin;
394
395
  exports["default"] = __webpack_exports__["default"];
395
396
  exports.documentPlugin = __webpack_exports__.documentPlugin;
396
397
  exports.getDocumentByEntryName = __webpack_exports__.getDocumentByEntryName;
398
+ exports.processScriptPlaceholders = __webpack_exports__.processScriptPlaceholders;
397
399
  for(var __rspack_i in __webpack_exports__)if (-1 === [
398
400
  "default",
399
401
  "documentPlugin",
400
- "getDocumentByEntryName"
402
+ "getDocumentByEntryName",
403
+ "processScriptPlaceholders"
401
404
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
402
405
  Object.defineProperty(exports, '__esModule', {
403
406
  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: ()=>index_js_namespaceObject.RuntimeContext,
32
- defineRuntimeConfig: ()=>index_js_namespaceObject.defineRuntimeConfig,
33
- getMonitors: ()=>monitors_index_js_namespaceObject.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: ()=>index_js_namespaceObject.useRuntimeContext
39
+ useRuntimeContext: ()=>public_js_namespaceObject.useRuntimeContext
40
40
  });
41
41
  const external_common_js_namespaceObject = require("./common.js");
42
- const index_js_namespaceObject = require("./core/index.js");
43
- const monitors_index_js_namespaceObject = require("./core/context/monitors/index.js");
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
+ });