@modern-js/runtime 2.65.1 → 2.65.3

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 (98) hide show
  1. package/dist/cjs/cache/index.js +22 -0
  2. package/dist/cjs/cli/code.js +1 -0
  3. package/dist/cjs/cli/ssr/index.js +1 -1
  4. package/dist/cjs/cli/template.js +7 -3
  5. package/dist/cjs/core/browser/index.js +1 -3
  6. package/dist/cjs/core/compat/requestContext.js +48 -0
  7. package/dist/cjs/core/compatible.js +2 -14
  8. package/dist/cjs/core/context/index.js +6 -0
  9. package/dist/cjs/core/context/monitors/default.js +38 -0
  10. package/dist/cjs/core/context/monitors/index.js +31 -0
  11. package/dist/cjs/core/context/monitors/index.server.js +33 -0
  12. package/dist/cjs/core/context/request/index.js +30 -0
  13. package/dist/cjs/core/context/request/index.server.js +32 -0
  14. package/dist/cjs/core/context/response/index.js +43 -0
  15. package/dist/cjs/core/context/response/index.server.js +62 -0
  16. package/dist/cjs/core/plugin/index.js +2 -0
  17. package/dist/cjs/core/server/requestHandler.js +83 -73
  18. package/dist/cjs/core/server/stream/shared.js +40 -45
  19. package/dist/cjs/core/server/string/index.js +50 -55
  20. package/dist/cjs/core/server/string/prefetch.js +47 -52
  21. package/dist/cjs/index.js +13 -0
  22. package/dist/cjs/react-server.js +38 -0
  23. package/dist/cjs/router/cli/code/templates.js +3 -1
  24. package/dist/cjs/router/cli/handler.js +1 -0
  25. package/dist/cjs/router/runtime/plugin.node.js +1 -2
  26. package/dist/cjs/router/runtime/utils.js +4 -6
  27. package/dist/esm/cache/index.js +1 -0
  28. package/dist/esm/cli/code.js +1 -0
  29. package/dist/esm/cli/ssr/index.js +1 -1
  30. package/dist/esm/cli/template.js +4 -4
  31. package/dist/esm/core/browser/index.js +3 -4
  32. package/dist/esm/core/compat/requestContext.js +25 -0
  33. package/dist/esm/core/compatible.js +5 -16
  34. package/dist/esm/core/context/index.js +5 -0
  35. package/dist/esm/core/context/monitors/default.js +20 -0
  36. package/dist/esm/core/context/monitors/index.js +7 -0
  37. package/dist/esm/core/context/monitors/index.server.js +9 -0
  38. package/dist/esm/core/context/request/index.js +6 -0
  39. package/dist/esm/core/context/request/index.server.js +8 -0
  40. package/dist/esm/core/context/response/index.js +16 -0
  41. package/dist/esm/core/context/response/index.server.js +41 -0
  42. package/dist/esm/core/plugin/index.js +3 -1
  43. package/dist/esm/core/server/requestHandler.js +134 -118
  44. package/dist/esm/core/server/stream/shared.js +49 -63
  45. package/dist/esm/core/server/string/index.js +82 -93
  46. package/dist/esm/core/server/string/prefetch.js +83 -94
  47. package/dist/esm/index.js +8 -0
  48. package/dist/esm/react-server.js +10 -0
  49. package/dist/esm/router/cli/code/templates.js +3 -3
  50. package/dist/esm/router/cli/handler.js +1 -0
  51. package/dist/esm/router/runtime/plugin.node.js +1 -2
  52. package/dist/esm/router/runtime/utils.js +4 -6
  53. package/dist/esm-node/cache/index.js +1 -0
  54. package/dist/esm-node/cli/code.js +1 -0
  55. package/dist/esm-node/cli/ssr/index.js +1 -1
  56. package/dist/esm-node/cli/template.js +7 -3
  57. package/dist/esm-node/core/browser/index.js +1 -3
  58. package/dist/esm-node/core/compat/requestContext.js +23 -0
  59. package/dist/esm-node/core/compatible.js +2 -14
  60. package/dist/esm-node/core/context/index.js +5 -0
  61. package/dist/esm-node/core/context/monitors/default.js +14 -0
  62. package/dist/esm-node/core/context/monitors/index.js +7 -0
  63. package/dist/esm-node/core/context/monitors/index.server.js +9 -0
  64. package/dist/esm-node/core/context/request/index.js +6 -0
  65. package/dist/esm-node/core/context/request/index.server.js +8 -0
  66. package/dist/esm-node/core/context/response/index.js +16 -0
  67. package/dist/esm-node/core/context/response/index.server.js +35 -0
  68. package/dist/esm-node/core/plugin/index.js +2 -0
  69. package/dist/esm-node/core/server/requestHandler.js +83 -73
  70. package/dist/esm-node/core/server/stream/shared.js +40 -45
  71. package/dist/esm-node/core/server/string/index.js +50 -55
  72. package/dist/esm-node/core/server/string/prefetch.js +47 -52
  73. package/dist/esm-node/index.js +8 -0
  74. package/dist/esm-node/react-server.js +10 -0
  75. package/dist/esm-node/router/cli/code/templates.js +3 -1
  76. package/dist/esm-node/router/cli/handler.js +1 -0
  77. package/dist/esm-node/router/runtime/plugin.node.js +1 -2
  78. package/dist/esm-node/router/runtime/utils.js +4 -6
  79. package/dist/types/cache/index.d.ts +1 -0
  80. package/dist/types/cli/template.d.ts +2 -1
  81. package/dist/types/core/compat/requestContext.d.ts +27 -0
  82. package/dist/types/core/compatible.d.ts +2 -2
  83. package/dist/types/core/config.d.ts +1 -1
  84. package/dist/types/core/context/index.d.ts +2 -0
  85. package/dist/types/core/context/monitors/default.d.ts +2 -0
  86. package/dist/types/core/context/monitors/index.d.ts +1 -0
  87. package/dist/types/core/context/monitors/index.server.d.ts +2 -0
  88. package/dist/types/core/context/request/index.d.ts +1 -0
  89. package/dist/types/core/context/request/index.server.d.ts +1 -0
  90. package/dist/types/core/context/response/index.d.ts +4 -0
  91. package/dist/types/core/context/response/index.server.d.ts +7 -0
  92. package/dist/types/core/context/runtime.d.ts +1 -0
  93. package/dist/types/core/types.d.ts +4 -17
  94. package/dist/types/index.d.ts +3 -0
  95. package/dist/types/react-server.d.ts +3 -0
  96. package/dist/types/router/cli/code/templates.d.ts +2 -1
  97. package/dist/types/router/runtime/utils.d.ts +3 -5
  98. package/package.json +22 -12
@@ -1,9 +1,7 @@
1
1
  import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
2
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
3
  import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
4
- import { run } from "@modern-js/runtime-utils/node";
5
4
  import { time } from "@modern-js/runtime-utils/time";
6
- import { parseHeaders } from "@modern-js/runtime-utils/universal/request";
7
5
  import { wrapRuntimeContextProvider } from "../../react/wrapper";
8
6
  import { SSRErrors, SSRTimings } from "../tracer";
9
7
  import { getSSRConfigByEntry } from "../utils";
@@ -34,7 +32,7 @@ function getReadableStreamFromString(content) {
34
32
  function createRenderStreaming(createReadableStreamPromise) {
35
33
  return function() {
36
34
  var _ref = _async_to_generator(function(request, serverRoot, options) {
37
- var createReadableStreamFromElement, headersData;
35
+ var createReadableStreamFromElement, end, runtimeContext, config, resource, onError, onTiming, htmlTemplate, entryName, ssrConfig, RSCServerRoot, rootElement, stream;
38
36
  return _ts_generator(this, function(_state) {
39
37
  switch (_state.label) {
40
38
  case 0:
@@ -44,68 +42,56 @@ function createRenderStreaming(createReadableStreamPromise) {
44
42
  ];
45
43
  case 1:
46
44
  createReadableStreamFromElement = _state.sent();
47
- headersData = parseHeaders(request);
45
+ end = time();
46
+ runtimeContext = options.runtimeContext, config = options.config, resource = options.resource;
47
+ onError = options.onError, onTiming = options.onTiming;
48
+ htmlTemplate = resource.htmlTemplate, entryName = resource.entryName;
49
+ ssrConfig = getSSRConfigByEntry(entryName, config.ssr, config.ssrByEntries);
50
+ RSCServerRoot = function(param) {
51
+ var children = param.children;
52
+ return /* @__PURE__ */ _jsx(_Fragment, {
53
+ children
54
+ });
55
+ };
56
+ rootElement = wrapRuntimeContextProvider(serverRoot, Object.assign(runtimeContext, {
57
+ ssr: true
58
+ }));
59
+ rootElement = /* @__PURE__ */ _jsx(RSCServerRoot, {
60
+ children: rootElement
61
+ });
62
+ return [
63
+ 4,
64
+ createReadableStreamFromElement(request, rootElement, {
65
+ config,
66
+ htmlTemplate,
67
+ runtimeContext,
68
+ ssrConfig,
69
+ entryName,
70
+ rscClientManifest: options.rscClientManifest,
71
+ rscSSRManifest: options.rscSSRManifest,
72
+ rscServerManifest: options.rscServerManifest,
73
+ rscRoot: options.rscRoot,
74
+ onShellReady: function onShellReady() {
75
+ var cost = end();
76
+ onTiming(SSRTimings.RENDER_SHELL, cost);
77
+ },
78
+ onAllReady: function onAllReady() {
79
+ var cost = end();
80
+ onTiming(SSRTimings.RENDER_HTML, cost);
81
+ },
82
+ onShellError: function onShellError(error) {
83
+ onError(error, SSRErrors.RENDER_SHELL);
84
+ },
85
+ onError: function onError1(error) {
86
+ onError(error, SSRErrors.RENDER_STREAM);
87
+ }
88
+ })
89
+ ];
90
+ case 2:
91
+ stream = _state.sent();
48
92
  return [
49
93
  2,
50
- run(headersData, /* @__PURE__ */ _async_to_generator(function() {
51
- var end, runtimeContext, config, resource, onError, onTiming, htmlTemplate, entryName, ssrConfig, RSCServerRoot, rootElement, stream;
52
- return _ts_generator(this, function(_state2) {
53
- switch (_state2.label) {
54
- case 0:
55
- end = time();
56
- runtimeContext = options.runtimeContext, config = options.config, resource = options.resource;
57
- onError = options.onError, onTiming = options.onTiming;
58
- htmlTemplate = resource.htmlTemplate, entryName = resource.entryName;
59
- ssrConfig = getSSRConfigByEntry(entryName, config.ssr, config.ssrByEntries);
60
- RSCServerRoot = function(param) {
61
- var children = param.children;
62
- return /* @__PURE__ */ _jsx(_Fragment, {
63
- children
64
- });
65
- };
66
- rootElement = wrapRuntimeContextProvider(serverRoot, Object.assign(runtimeContext, {
67
- ssr: true
68
- }));
69
- rootElement = /* @__PURE__ */ _jsx(RSCServerRoot, {
70
- children: rootElement
71
- });
72
- return [
73
- 4,
74
- createReadableStreamFromElement(request, rootElement, {
75
- config,
76
- htmlTemplate,
77
- runtimeContext,
78
- ssrConfig,
79
- entryName,
80
- rscClientManifest: options.rscClientManifest,
81
- rscSSRManifest: options.rscSSRManifest,
82
- rscServerManifest: options.rscServerManifest,
83
- rscRoot: options.rscRoot,
84
- onShellReady: function onShellReady() {
85
- var cost = end();
86
- onTiming(SSRTimings.RENDER_SHELL, cost);
87
- },
88
- onAllReady: function onAllReady() {
89
- var cost = end();
90
- onTiming(SSRTimings.RENDER_HTML, cost);
91
- },
92
- onShellError: function onShellError(error) {
93
- onError(error, SSRErrors.RENDER_SHELL);
94
- },
95
- onError: function onError1(error) {
96
- onError(error, SSRErrors.RENDER_STREAM);
97
- }
98
- })
99
- ];
100
- case 1:
101
- stream = _state2.sent();
102
- return [
103
- 2,
104
- stream
105
- ];
106
- }
107
- });
108
- }))
94
+ stream
109
95
  ];
110
96
  }
111
97
  });
@@ -1,9 +1,7 @@
1
1
  import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
2
  import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
3
3
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
4
- import { run } from "@modern-js/runtime-utils/node";
5
4
  import { time } from "@modern-js/runtime-utils/time";
6
- import { parseHeaders } from "@modern-js/runtime-utils/universal/request";
7
5
  import ReactDomServer from "react-dom/server";
8
6
  import ReactHelmet from "react-helmet";
9
7
  import { RenderLevel } from "../../constants";
@@ -19,98 +17,89 @@ import { SSRDataCollector } from "./ssrData";
19
17
  import { StyledCollector } from "./styledComponent";
20
18
  var renderString = function() {
21
19
  var _ref = _async_to_generator(function(request, serverRoot, options) {
22
- var headersData;
20
+ var _runtimeContext_ssrContext, resource, runtimeContext, config, onError, onTiming, tracer, routerContext, htmlTemplate, entryName, loadableStats, routeManifest, ssrConfig, chunkSet, prefetchData, e, collectors, rootElement, html;
23
21
  return _ts_generator(this, function(_state) {
24
- headersData = parseHeaders(request);
25
- return [
26
- 2,
27
- run(headersData, /* @__PURE__ */ _async_to_generator(function() {
28
- var _runtimeContext_ssrContext, resource, runtimeContext, config, onError, onTiming, tracer, routerContext, htmlTemplate, entryName, loadableStats, routeManifest, ssrConfig, chunkSet, prefetchData, e, collectors, rootElement, html;
29
- return _ts_generator(this, function(_state2) {
30
- switch (_state2.label) {
31
- case 0:
32
- resource = options.resource, runtimeContext = options.runtimeContext, config = options.config, onError = options.onError, onTiming = options.onTiming;
33
- tracer = {
34
- onError,
35
- onTiming
36
- };
37
- routerContext = runtimeContext.routerContext;
38
- htmlTemplate = resource.htmlTemplate, entryName = resource.entryName, loadableStats = resource.loadableStats, routeManifest = resource.routeManifest;
39
- ssrConfig = getSSRConfigByEntry(entryName, config.ssr, config.ssrByEntries);
40
- chunkSet = {
41
- renderLevel: RenderLevel.CLIENT_RENDER,
42
- ssrScripts: "",
43
- jsChunk: "",
44
- cssChunk: ""
45
- };
46
- prefetchData = {};
47
- _state2.label = 1;
48
- case 1:
49
- _state2.trys.push([
50
- 1,
51
- 3,
52
- ,
53
- 4
54
- ]);
55
- return [
56
- 4,
57
- prefetch(serverRoot, request, options, ssrConfig, tracer)
58
- ];
59
- case 2:
60
- prefetchData = _state2.sent();
61
- chunkSet.renderLevel = RenderLevel.SERVER_PREFETCH;
62
- return [
63
- 3,
64
- 4
65
- ];
66
- case 3:
67
- e = _state2.sent();
68
- chunkSet.renderLevel = RenderLevel.CLIENT_RENDER;
69
- tracer.onError(e, SSRErrors.PRERENDER);
70
- return [
71
- 3,
72
- 4
73
- ];
74
- case 4:
75
- collectors = [
76
- new StyledCollector(chunkSet),
77
- new LoadableCollector({
78
- stats: loadableStats,
79
- nonce: config.nonce,
80
- routeManifest,
81
- template: htmlTemplate,
82
- entryName,
83
- chunkSet,
84
- config
85
- }),
86
- new SSRDataCollector({
87
- request,
88
- prefetchData,
89
- ssrConfig,
90
- ssrContext: runtimeContext.ssrContext,
91
- chunkSet,
92
- routerContext,
93
- nonce: config.nonce,
94
- useJsonScript: config.useJsonScript
95
- })
96
- ];
97
- rootElement = wrapRuntimeContextProvider(serverRoot, Object.assign(runtimeContext, {
98
- ssr: true
99
- }));
100
- return [
101
- 4,
102
- generateHtml(rootElement, htmlTemplate, chunkSet, collectors, ((_runtimeContext_ssrContext = runtimeContext.ssrContext) === null || _runtimeContext_ssrContext === void 0 ? void 0 : _runtimeContext_ssrContext.htmlModifiers) || [], tracer)
103
- ];
104
- case 5:
105
- html = _state2.sent();
106
- return [
107
- 2,
108
- html
109
- ];
110
- }
111
- });
112
- }))
113
- ];
22
+ switch (_state.label) {
23
+ case 0:
24
+ resource = options.resource, runtimeContext = options.runtimeContext, config = options.config, onError = options.onError, onTiming = options.onTiming;
25
+ tracer = {
26
+ onError,
27
+ onTiming
28
+ };
29
+ routerContext = runtimeContext.routerContext;
30
+ htmlTemplate = resource.htmlTemplate, entryName = resource.entryName, loadableStats = resource.loadableStats, routeManifest = resource.routeManifest;
31
+ ssrConfig = getSSRConfigByEntry(entryName, config.ssr, config.ssrByEntries);
32
+ chunkSet = {
33
+ renderLevel: RenderLevel.CLIENT_RENDER,
34
+ ssrScripts: "",
35
+ jsChunk: "",
36
+ cssChunk: ""
37
+ };
38
+ prefetchData = {};
39
+ _state.label = 1;
40
+ case 1:
41
+ _state.trys.push([
42
+ 1,
43
+ 3,
44
+ ,
45
+ 4
46
+ ]);
47
+ return [
48
+ 4,
49
+ prefetch(serverRoot, request, options, ssrConfig, tracer)
50
+ ];
51
+ case 2:
52
+ prefetchData = _state.sent();
53
+ chunkSet.renderLevel = RenderLevel.SERVER_PREFETCH;
54
+ return [
55
+ 3,
56
+ 4
57
+ ];
58
+ case 3:
59
+ e = _state.sent();
60
+ chunkSet.renderLevel = RenderLevel.CLIENT_RENDER;
61
+ tracer.onError(e, SSRErrors.PRERENDER);
62
+ return [
63
+ 3,
64
+ 4
65
+ ];
66
+ case 4:
67
+ collectors = [
68
+ new StyledCollector(chunkSet),
69
+ new LoadableCollector({
70
+ stats: loadableStats,
71
+ nonce: config.nonce,
72
+ routeManifest,
73
+ template: htmlTemplate,
74
+ entryName,
75
+ chunkSet,
76
+ config
77
+ }),
78
+ new SSRDataCollector({
79
+ request,
80
+ prefetchData,
81
+ ssrConfig,
82
+ ssrContext: runtimeContext.ssrContext,
83
+ chunkSet,
84
+ routerContext,
85
+ nonce: config.nonce,
86
+ useJsonScript: config.useJsonScript
87
+ })
88
+ ];
89
+ rootElement = wrapRuntimeContextProvider(serverRoot, Object.assign(runtimeContext, {
90
+ ssr: true
91
+ }));
92
+ return [
93
+ 4,
94
+ generateHtml(rootElement, htmlTemplate, chunkSet, collectors, ((_runtimeContext_ssrContext = runtimeContext.ssrContext) === null || _runtimeContext_ssrContext === void 0 ? void 0 : _runtimeContext_ssrContext.htmlModifiers) || [], tracer)
95
+ ];
96
+ case 5:
97
+ html = _state.sent();
98
+ return [
99
+ 2,
100
+ html
101
+ ];
102
+ }
114
103
  });
115
104
  });
116
105
  return function renderString2(request, serverRoot, options) {
@@ -1,110 +1,99 @@
1
1
  import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
2
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
3
  import { ChunkExtractor } from "@loadable/server";
4
- import { run } from "@modern-js/runtime-utils/node";
5
4
  import { time } from "@modern-js/runtime-utils/time";
6
- import { parseHeaders } from "@modern-js/runtime-utils/universal/request";
7
5
  import { renderToStaticMarkup } from "react-dom/server";
8
6
  import { wrapRuntimeContextProvider } from "../../react/wrapper";
9
7
  import { SSRErrors, SSRTimings } from "../tracer";
10
8
  var prefetch = function() {
11
9
  var _ref = _async_to_generator(function(App, request, options, ssrConfig, param) {
12
- var onError, onTiming, headersData, context, resource, entryName, loadableStats;
10
+ var onError, onTiming, _context_store, context, resource, entryName, loadableStats, end, extractor, cost, error, loadersData, end1, cost1, e;
13
11
  return _ts_generator(this, function(_state) {
14
- onError = param.onError, onTiming = param.onTiming;
15
- headersData = parseHeaders(request);
16
- context = options.runtimeContext, resource = options.resource;
17
- entryName = resource.entryName, loadableStats = resource.loadableStats;
18
- return [
19
- 2,
20
- run(headersData, /* @__PURE__ */ _async_to_generator(function() {
21
- var _context_store, end, extractor, cost, error, loadersData, end1, cost1, e;
22
- return _ts_generator(this, function(_state2) {
23
- switch (_state2.label) {
24
- case 0:
25
- if (typeof ssrConfig === "boolean" || !ssrConfig.disablePrerender) {
26
- try {
27
- end = time();
28
- if (loadableStats) {
29
- extractor = new ChunkExtractor({
30
- stats: loadableStats,
31
- entrypoints: [
32
- entryName
33
- ].filter(Boolean)
34
- });
35
- renderToStaticMarkup(extractor.collectChunks(wrapRuntimeContextProvider(App, Object.assign(context, {
36
- ssr: false
37
- }))));
38
- } else {
39
- renderToStaticMarkup(wrapRuntimeContextProvider(App, Object.assign(context, {
40
- ssr: false
41
- })));
42
- }
43
- cost = end();
44
- onTiming(SSRTimings.PRERENDER, cost);
45
- } catch (e2) {
46
- error = e2;
47
- onError(error, SSRErrors.PRERENDER);
48
- throw e2;
49
- }
50
- }
51
- if (!context.loaderManager.hasPendingLoaders()) {
52
- return [
53
- 2,
54
- {
55
- initialData: context.initialData,
56
- i18nData: context.__i18nData__
57
- }
58
- ];
59
- }
60
- loadersData = {};
61
- _state2.label = 1;
62
- case 1:
63
- _state2.trys.push([
64
- 1,
65
- 3,
66
- ,
67
- 4
68
- ]);
69
- end1 = time();
70
- return [
71
- 4,
72
- context.loaderManager.awaitPendingLoaders()
73
- ];
74
- case 2:
75
- loadersData = _state2.sent();
76
- cost1 = end1();
77
- onTiming(SSRTimings.USE_LOADER, cost1);
78
- return [
79
- 3,
80
- 4
81
- ];
82
- case 3:
83
- e = _state2.sent();
84
- onError(e, SSRErrors.USE_LOADER);
85
- throw e;
86
- case 4:
87
- Object.keys(loadersData).forEach(function(id) {
88
- var data = loadersData[id];
89
- if (data._error) {
90
- onError(data._error, SSRErrors.USE_LOADER);
91
- delete data._error;
92
- }
12
+ switch (_state.label) {
13
+ case 0:
14
+ onError = param.onError, onTiming = param.onTiming;
15
+ context = options.runtimeContext, resource = options.resource;
16
+ entryName = resource.entryName, loadableStats = resource.loadableStats;
17
+ if (typeof ssrConfig === "boolean" || !ssrConfig.disablePrerender) {
18
+ try {
19
+ end = time();
20
+ if (loadableStats) {
21
+ extractor = new ChunkExtractor({
22
+ stats: loadableStats,
23
+ entrypoints: [
24
+ entryName
25
+ ].filter(Boolean)
93
26
  });
94
- return [
95
- 2,
96
- {
97
- loadersData,
98
- initialData: context.initialData,
99
- i18nData: context.__i18nData__,
100
- // todo: move to plugin state
101
- storeState: context === null || context === void 0 ? void 0 : (_context_store = context.store) === null || _context_store === void 0 ? void 0 : _context_store.getState()
102
- }
103
- ];
27
+ renderToStaticMarkup(extractor.collectChunks(wrapRuntimeContextProvider(App, Object.assign(context, {
28
+ ssr: false
29
+ }))));
30
+ } else {
31
+ renderToStaticMarkup(wrapRuntimeContextProvider(App, Object.assign(context, {
32
+ ssr: false
33
+ })));
34
+ }
35
+ cost = end();
36
+ onTiming(SSRTimings.PRERENDER, cost);
37
+ } catch (e2) {
38
+ error = e2;
39
+ onError(error, SSRErrors.PRERENDER);
40
+ throw e2;
41
+ }
42
+ }
43
+ if (!context.loaderManager.hasPendingLoaders()) {
44
+ return [
45
+ 2,
46
+ {
47
+ initialData: context.initialData,
48
+ i18nData: context.__i18nData__
49
+ }
50
+ ];
51
+ }
52
+ loadersData = {};
53
+ _state.label = 1;
54
+ case 1:
55
+ _state.trys.push([
56
+ 1,
57
+ 3,
58
+ ,
59
+ 4
60
+ ]);
61
+ end1 = time();
62
+ return [
63
+ 4,
64
+ context.loaderManager.awaitPendingLoaders()
65
+ ];
66
+ case 2:
67
+ loadersData = _state.sent();
68
+ cost1 = end1();
69
+ onTiming(SSRTimings.USE_LOADER, cost1);
70
+ return [
71
+ 3,
72
+ 4
73
+ ];
74
+ case 3:
75
+ e = _state.sent();
76
+ onError(e, SSRErrors.USE_LOADER);
77
+ throw e;
78
+ case 4:
79
+ Object.keys(loadersData).forEach(function(id) {
80
+ var data = loadersData[id];
81
+ if (data._error) {
82
+ onError(data._error, SSRErrors.USE_LOADER);
83
+ delete data._error;
104
84
  }
105
85
  });
106
- }))
107
- ];
86
+ return [
87
+ 2,
88
+ {
89
+ loadersData,
90
+ initialData: context.initialData,
91
+ i18nData: context.__i18nData__,
92
+ // todo: move to plugin state
93
+ storeState: context === null || context === void 0 ? void 0 : (_context_store = context.store) === null || _context_store === void 0 ? void 0 : _context_store.getState()
94
+ }
95
+ ];
96
+ }
108
97
  });
109
98
  });
110
99
  return function prefetch2(App, request, options, ssrConfig, _) {
package/dist/esm/index.js CHANGED
@@ -1,4 +1,7 @@
1
1
  import { isBrowser } from "./common";
2
+ import { getMonitors } from "./core/context/monitors";
3
+ import { getRequest } from "./core/context/request";
4
+ import { setHeaders, setStatus, redirect } from "./core/context/response";
2
5
  import { createApp, useLoader, bootstrap, RuntimeReactContext, defineConfig, defineRuntimeConfig, useRuntimeContext } from "./core";
3
6
  export {
4
7
  RuntimeReactContext,
@@ -6,7 +9,12 @@ export {
6
9
  createApp,
7
10
  defineConfig,
8
11
  defineRuntimeConfig,
12
+ getMonitors,
13
+ getRequest,
9
14
  isBrowser,
15
+ redirect,
16
+ setHeaders,
17
+ setStatus,
10
18
  useLoader,
11
19
  useRuntimeContext
12
20
  };
@@ -0,0 +1,10 @@
1
+ import { getRequest } from "./core/context/request";
2
+ import { getMonitors } from "./core/context/monitors";
3
+ import { setHeaders, setStatus, redirect } from "./core/context/response";
4
+ export {
5
+ getMonitors,
6
+ getRequest,
7
+ redirect,
8
+ setHeaders,
9
+ setStatus
10
+ };
@@ -433,11 +433,11 @@ function ssrLoaderCombinedModule(entrypoints, entrypoint, config, appContext) {
433
433
  }
434
434
  var runtimeGlobalContext = function() {
435
435
  var _ref = _async_to_generator(function(param) {
436
- var metaName, srcDirectory, nestedRoutesEntry, internalSrcAlias, globalApp, imports, rootLayoutPath, rootLayoutFile, rootLayoutBuffer, rootLayout, _ref2, moduleExports, hasAppConfig, hasAppInit, layoutPath;
436
+ var entryName, metaName, srcDirectory, nestedRoutesEntry, internalSrcAlias, globalApp, imports, rootLayoutPath, rootLayoutFile, rootLayoutBuffer, rootLayout, _ref2, moduleExports, hasAppConfig, hasAppInit, layoutPath;
437
437
  return _ts_generator(this, function(_state) {
438
438
  switch (_state.label) {
439
439
  case 0:
440
- metaName = param.metaName, srcDirectory = param.srcDirectory, nestedRoutesEntry = param.nestedRoutesEntry, internalSrcAlias = param.internalSrcAlias, globalApp = param.globalApp;
440
+ entryName = param.entryName, metaName = param.metaName, srcDirectory = param.srcDirectory, nestedRoutesEntry = param.nestedRoutesEntry, internalSrcAlias = param.internalSrcAlias, globalApp = param.globalApp;
441
441
  imports = [
442
442
  "import { setGlobalContext } from '@".concat(metaName, "/runtime/context';")
443
443
  ];
@@ -514,7 +514,7 @@ var runtimeGlobalContext = function() {
514
514
  }
515
515
  return [
516
516
  2,
517
- "".concat(imports.join("\n"), "\n\nimport { routes } from './routes';\n\nsetGlobalContext({\n layoutApp,\n routes,\n appInit,\n appConfig,\n});")
517
+ "".concat(imports.join("\n"), "\n\nimport { routes } from './routes';\n\nconst entryName = '").concat(entryName, "';\nsetGlobalContext({\n entryName,\n layoutApp,\n routes,\n appInit,\n appConfig,\n});")
518
518
  ];
519
519
  }
520
520
  });
@@ -67,6 +67,7 @@ function _handleGeneratorEntryCode() {
67
67
  return [
68
68
  4,
69
69
  templates.runtimeGlobalContext({
70
+ entryName: entrypoint.entryName,
70
71
  metaName: appContext.metaName,
71
72
  srcDirectory: appContext.srcDirectory,
72
73
  nestedRoutesEntry: entrypoint.nestedRoutesEntry,
@@ -72,8 +72,7 @@ var routerPlugin = function() {
72
72
  ssrMode,
73
73
  props: {
74
74
  nonce
75
- },
76
- reporter
75
+ }
77
76
  }));
78
77
  routes = hooks.modifyRoutes.call(routes);
79
78
  query = createStaticHandler(routes, {
@@ -10,7 +10,7 @@ import { Route, isRouteErrorResponse } from "@modern-js/runtime-utils/router";
10
10
  import { DefaultNotFound } from "./DefaultNotFound";
11
11
  import DeferredDataScripts from "./DeferredDataScripts";
12
12
  function getRouteComponents(routes, param) {
13
- var globalApp = param.globalApp, ssrMode = param.ssrMode, props = param.props, reporter = param.reporter;
13
+ var globalApp = param.globalApp, ssrMode = param.ssrMode, props = param.props;
14
14
  var Layout = function(_param) {
15
15
  var Component = _param.Component, props2 = _object_without_properties(_param, [
16
16
  "Component"
@@ -31,8 +31,7 @@ function getRouteComponents(routes, param) {
31
31
  if (route.type === "nested") {
32
32
  var routeElement = renderNestedRoute(route, {
33
33
  DeferredDataComponent: ssrMode === "stream" ? DeferredDataScripts : void 0,
34
- props,
35
- reporter
34
+ props
36
35
  });
37
36
  routeElements.push(routeElement);
38
37
  } else {
@@ -66,7 +65,7 @@ function getRouteComponents(routes, param) {
66
65
  return routeElements;
67
66
  }
68
67
  function renderRoutes(param) {
69
- var routesConfig = param.routesConfig, props = param.props, ssrMode = param.ssrMode, reporter = param.reporter;
68
+ var routesConfig = param.routesConfig, props = param.props, ssrMode = param.ssrMode;
70
69
  if (!routesConfig) {
71
70
  return null;
72
71
  }
@@ -77,8 +76,7 @@ function renderRoutes(param) {
77
76
  var routeElements = getRouteComponents(routes, {
78
77
  globalApp,
79
78
  ssrMode,
80
- props,
81
- reporter
79
+ props
82
80
  });
83
81
  return routeElements;
84
82
  }
@@ -0,0 +1 @@
1
+ export * from "@modern-js/runtime-utils/cache";
@@ -99,6 +99,7 @@ const generateCode = async (entrypoints, appContext, config, hooks) => {
99
99
  let contextCode = "";
100
100
  if (!config.server.rsc) {
101
101
  contextCode = template.runtimeGlobalContext({
102
+ entryName,
102
103
  srcDirectory,
103
104
  internalSrcAlias,
104
105
  metaName,
@@ -87,7 +87,7 @@ const ssrPlugin = () => ({
87
87
  source: {
88
88
  alias: {
89
89
  // ensure that all packages use the same storage in @modern-js/runtime-utils/node
90
- "@modern-js/runtime-utils/node$": require.resolve("@modern-js/runtime-utils/node")
90
+ "@modern-js/runtime-utils/node$": require.resolve("@modern-js/runtime-utils/node").replace(`${path.sep}cjs${path.sep}`, `${path.sep}esm${path.sep}`)
91
91
  }
92
92
  },
93
93
  tools: {