@modern-js/server-core 2.48.4 → 2.48.5-alpha.1

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 (213) hide show
  1. package/dist/cjs/base/adapters/node/bff.js +70 -0
  2. package/dist/cjs/base/adapters/node/hono.js +63 -0
  3. package/dist/cjs/base/adapters/node/index.js +54 -0
  4. package/dist/cjs/base/adapters/node/loadServer.js +56 -0
  5. package/dist/cjs/base/adapters/node/middlewares/index.js +28 -0
  6. package/dist/cjs/base/adapters/node/middlewares/mock.js +113 -0
  7. package/dist/cjs/base/adapters/node/middlewares/serverManifest.js +82 -0
  8. package/dist/cjs/base/adapters/node/middlewares/serverPublic.js +67 -0
  9. package/dist/cjs/base/adapters/node/middlewares/serverStatic.js +109 -0
  10. package/dist/cjs/base/adapters/node/middlewares/templates.js +67 -0
  11. package/dist/cjs/base/adapters/node/node.js +127 -0
  12. package/dist/cjs/base/adapters/node/polyfills/index.js +24 -0
  13. package/dist/cjs/base/adapters/node/polyfills/install.js +72 -0
  14. package/dist/cjs/base/adapters/node/polyfills/stream.js +153 -0
  15. package/dist/cjs/base/constants.js +58 -0
  16. package/dist/cjs/base/index.js +49 -0
  17. package/dist/cjs/base/middlewares/customServer/base.js +154 -0
  18. package/dist/cjs/base/middlewares/customServer/context.js +73 -0
  19. package/dist/cjs/base/middlewares/customServer/index.js +130 -0
  20. package/dist/cjs/base/middlewares/customServer/routerApi.js +44 -0
  21. package/dist/cjs/base/middlewares/customServer/template.js +58 -0
  22. package/dist/cjs/base/middlewares/faviconFallback.js +34 -0
  23. package/dist/cjs/base/middlewares/frameworkHeader.js +31 -0
  24. package/dist/cjs/base/middlewares/index.js +30 -0
  25. package/dist/cjs/base/middlewares/logger.js +77 -0
  26. package/dist/cjs/base/middlewares/monitor.js +90 -0
  27. package/dist/cjs/base/middlewares/renderHandler/dataHandler.js +46 -0
  28. package/dist/cjs/base/middlewares/renderHandler/index.js +106 -0
  29. package/dist/cjs/base/middlewares/renderHandler/render.js +126 -0
  30. package/dist/cjs/base/middlewares/renderHandler/serverTiming.js +40 -0
  31. package/dist/cjs/base/middlewares/renderHandler/ssrCache.js +197 -0
  32. package/dist/cjs/base/middlewares/renderHandler/ssrRender.js +208 -0
  33. package/dist/cjs/base/serverBase.js +203 -0
  34. package/dist/cjs/base/utils/debug.js +29 -0
  35. package/dist/cjs/base/utils/entry.js +30 -0
  36. package/dist/cjs/base/utils/env.js +45 -0
  37. package/dist/cjs/base/utils/error.js +65 -0
  38. package/dist/cjs/base/utils/index.js +34 -0
  39. package/dist/cjs/base/utils/middlewareCollector.js +54 -0
  40. package/dist/cjs/base/utils/request.js +65 -0
  41. package/dist/cjs/base/utils/serverConfig.js +70 -0
  42. package/dist/cjs/base/utils/transformStream.js +61 -0
  43. package/dist/cjs/base/utils/warmup.js +43 -0
  44. package/dist/cjs/core/hono.js +16 -0
  45. package/dist/cjs/core/index.js +22 -0
  46. package/dist/cjs/{loadPlugins.js → core/loadPlugins.js} +4 -7
  47. package/dist/cjs/{plugin.js → core/plugin.js} +1 -42
  48. package/dist/cjs/core/render.js +16 -0
  49. package/dist/cjs/core/server.js +16 -0
  50. package/dist/cjs/index.js +6 -4
  51. package/dist/esm/base/adapters/node/bff.js +128 -0
  52. package/dist/esm/base/adapters/node/hono.js +83 -0
  53. package/dist/esm/base/adapters/node/index.js +19 -0
  54. package/dist/esm/base/adapters/node/loadServer.js +73 -0
  55. package/dist/esm/base/adapters/node/middlewares/index.js +4 -0
  56. package/dist/esm/base/adapters/node/middlewares/mock.js +198 -0
  57. package/dist/esm/base/adapters/node/middlewares/serverManifest.js +132 -0
  58. package/dist/esm/base/adapters/node/middlewares/serverPublic.js +85 -0
  59. package/dist/esm/base/adapters/node/middlewares/serverStatic.js +119 -0
  60. package/dist/esm/base/adapters/node/middlewares/templates.js +114 -0
  61. package/dist/esm/base/adapters/node/node.js +197 -0
  62. package/dist/esm/base/adapters/node/polyfills/index.js +2 -0
  63. package/dist/esm/base/adapters/node/polyfills/install.js +48 -0
  64. package/dist/esm/base/adapters/node/polyfills/stream.js +316 -0
  65. package/dist/esm/base/constants.js +31 -0
  66. package/dist/esm/base/index.js +16 -0
  67. package/dist/esm/base/middlewares/customServer/base.js +182 -0
  68. package/dist/esm/base/middlewares/customServer/context.js +68 -0
  69. package/dist/esm/base/middlewares/customServer/index.js +214 -0
  70. package/dist/esm/base/middlewares/customServer/routerApi.js +26 -0
  71. package/dist/esm/base/middlewares/customServer/template.js +47 -0
  72. package/dist/esm/base/middlewares/faviconFallback.js +28 -0
  73. package/dist/esm/base/middlewares/frameworkHeader.js +27 -0
  74. package/dist/esm/base/middlewares/index.js +5 -0
  75. package/dist/esm/base/middlewares/logger.js +75 -0
  76. package/dist/esm/base/middlewares/monitor.js +157 -0
  77. package/dist/esm/base/middlewares/renderHandler/dataHandler.js +45 -0
  78. package/dist/esm/base/middlewares/renderHandler/index.js +165 -0
  79. package/dist/esm/base/middlewares/renderHandler/render.js +216 -0
  80. package/dist/esm/base/middlewares/renderHandler/serverTiming.js +21 -0
  81. package/dist/esm/base/middlewares/renderHandler/ssrCache.js +306 -0
  82. package/dist/esm/base/middlewares/renderHandler/ssrRender.js +265 -0
  83. package/dist/esm/base/serverBase.js +383 -0
  84. package/dist/esm/base/utils/debug.js +5 -0
  85. package/dist/esm/base/utils/entry.js +6 -0
  86. package/dist/esm/base/utils/env.js +20 -0
  87. package/dist/esm/base/utils/error.js +12 -0
  88. package/dist/esm/base/utils/index.js +7 -0
  89. package/dist/esm/base/utils/middlewareCollector.js +31 -0
  90. package/dist/esm/base/utils/request.js +39 -0
  91. package/dist/esm/base/utils/serverConfig.js +58 -0
  92. package/dist/esm/base/utils/transformStream.js +90 -0
  93. package/dist/esm/base/utils/warmup.js +9 -0
  94. package/dist/esm/core/hono.js +0 -0
  95. package/dist/esm/core/index.js +1 -0
  96. package/dist/esm/core/loadPlugins.js +26 -0
  97. package/dist/esm/core/plugin.js +59 -0
  98. package/dist/esm/core/render.js +0 -0
  99. package/dist/esm/core/server.js +0 -0
  100. package/dist/esm/index.js +3 -2
  101. package/dist/esm-node/base/adapters/node/bff.js +46 -0
  102. package/dist/esm-node/base/adapters/node/hono.js +38 -0
  103. package/dist/esm-node/base/adapters/node/index.js +19 -0
  104. package/dist/esm-node/base/adapters/node/loadServer.js +22 -0
  105. package/dist/esm-node/base/adapters/node/middlewares/index.js +4 -0
  106. package/dist/esm-node/base/adapters/node/middlewares/mock.js +79 -0
  107. package/dist/esm-node/base/adapters/node/middlewares/serverManifest.js +48 -0
  108. package/dist/esm-node/base/adapters/node/middlewares/serverPublic.js +33 -0
  109. package/dist/esm-node/base/adapters/node/middlewares/serverStatic.js +75 -0
  110. package/dist/esm-node/base/adapters/node/middlewares/templates.js +32 -0
  111. package/dist/esm-node/base/adapters/node/node.js +101 -0
  112. package/dist/esm-node/base/adapters/node/polyfills/index.js +2 -0
  113. package/dist/esm-node/base/adapters/node/polyfills/install.js +48 -0
  114. package/dist/esm-node/base/adapters/node/polyfills/stream.js +126 -0
  115. package/dist/esm-node/base/constants.js +31 -0
  116. package/dist/esm-node/base/index.js +16 -0
  117. package/dist/esm-node/base/middlewares/customServer/base.js +130 -0
  118. package/dist/esm-node/base/middlewares/customServer/context.js +46 -0
  119. package/dist/esm-node/base/middlewares/customServer/index.js +106 -0
  120. package/dist/esm-node/base/middlewares/customServer/routerApi.js +20 -0
  121. package/dist/esm-node/base/middlewares/customServer/template.js +34 -0
  122. package/dist/esm-node/base/middlewares/faviconFallback.js +10 -0
  123. package/dist/esm-node/base/middlewares/frameworkHeader.js +7 -0
  124. package/dist/esm-node/base/middlewares/index.js +5 -0
  125. package/dist/esm-node/base/middlewares/logger.js +53 -0
  126. package/dist/esm-node/base/middlewares/monitor.js +63 -0
  127. package/dist/esm-node/base/middlewares/renderHandler/dataHandler.js +22 -0
  128. package/dist/esm-node/base/middlewares/renderHandler/index.js +71 -0
  129. package/dist/esm-node/base/middlewares/renderHandler/render.js +102 -0
  130. package/dist/esm-node/base/middlewares/renderHandler/serverTiming.js +16 -0
  131. package/dist/esm-node/base/middlewares/renderHandler/ssrCache.js +162 -0
  132. package/dist/esm-node/base/middlewares/renderHandler/ssrRender.js +173 -0
  133. package/dist/esm-node/base/serverBase.js +168 -0
  134. package/dist/esm-node/base/utils/debug.js +5 -0
  135. package/dist/esm-node/base/utils/entry.js +6 -0
  136. package/dist/esm-node/base/utils/env.js +20 -0
  137. package/dist/esm-node/base/utils/error.js +41 -0
  138. package/dist/esm-node/base/utils/index.js +7 -0
  139. package/dist/esm-node/base/utils/middlewareCollector.js +29 -0
  140. package/dist/esm-node/base/utils/request.js +38 -0
  141. package/dist/esm-node/base/utils/serverConfig.js +34 -0
  142. package/dist/esm-node/base/utils/transformStream.js +36 -0
  143. package/dist/esm-node/base/utils/warmup.js +9 -0
  144. package/dist/esm-node/core/hono.js +0 -0
  145. package/dist/esm-node/core/index.js +1 -0
  146. package/dist/{esm → esm-node/core}/loadPlugins.js +4 -7
  147. package/dist/{esm → esm-node/core}/plugin.js +1 -42
  148. package/dist/esm-node/core/render.js +0 -0
  149. package/dist/esm-node/core/server.js +0 -0
  150. package/dist/esm-node/index.js +5 -0
  151. package/dist/esm-node/types/config/bff.js +0 -0
  152. package/dist/esm-node/types/config/dev.js +0 -0
  153. package/dist/esm-node/types/config/html.js +0 -0
  154. package/dist/esm-node/types/config/index.js +6 -0
  155. package/dist/esm-node/types/config/output.js +0 -0
  156. package/dist/esm-node/types/config/security.js +0 -0
  157. package/dist/esm-node/types/config/server.js +0 -0
  158. package/dist/esm-node/types/config/share.js +0 -0
  159. package/dist/esm-node/types/config/source.js +0 -0
  160. package/dist/esm-node/types/config/tools.js +0 -0
  161. package/dist/types/base/adapters/node/bff.d.ts +4 -0
  162. package/dist/types/base/adapters/node/hono.d.ts +22 -0
  163. package/dist/types/base/adapters/node/index.d.ts +6 -0
  164. package/dist/types/base/adapters/node/loadServer.d.ts +3 -0
  165. package/dist/types/base/adapters/node/middlewares/index.d.ts +4 -0
  166. package/dist/types/base/adapters/node/middlewares/mock.d.ts +5 -0
  167. package/dist/types/base/adapters/node/middlewares/serverManifest.d.ts +3 -0
  168. package/dist/types/base/adapters/node/middlewares/serverPublic.d.ts +7 -0
  169. package/dist/types/base/adapters/node/middlewares/serverStatic.d.ts +11 -0
  170. package/dist/types/base/adapters/node/middlewares/templates.d.ts +4 -0
  171. package/dist/types/base/adapters/node/node.d.ts +13 -0
  172. package/dist/types/base/adapters/node/polyfills/index.d.ts +2 -0
  173. package/dist/types/base/adapters/node/polyfills/install.d.ts +1 -0
  174. package/dist/types/base/adapters/node/polyfills/stream.d.ts +18 -0
  175. package/dist/types/base/constants.d.ts +24 -0
  176. package/dist/types/base/index.d.ts +7 -0
  177. package/dist/types/base/middlewares/customServer/base.d.ts +3 -0
  178. package/dist/types/base/middlewares/customServer/context.d.ts +7 -0
  179. package/dist/types/base/middlewares/customServer/index.d.ts +13 -0
  180. package/dist/types/base/middlewares/customServer/routerApi.d.ts +9 -0
  181. package/dist/types/base/middlewares/customServer/template.d.ts +11 -0
  182. package/dist/types/base/middlewares/faviconFallback.d.ts +2 -0
  183. package/dist/types/base/middlewares/frameworkHeader.d.ts +2 -0
  184. package/dist/types/base/middlewares/index.d.ts +5 -0
  185. package/dist/types/base/middlewares/logger.d.ts +2 -0
  186. package/dist/types/base/middlewares/monitor.d.ts +6 -0
  187. package/dist/types/base/middlewares/renderHandler/dataHandler.d.ts +5 -0
  188. package/dist/types/base/middlewares/renderHandler/index.d.ts +10 -0
  189. package/dist/types/base/middlewares/renderHandler/render.d.ts +12 -0
  190. package/dist/types/base/middlewares/renderHandler/serverTiming.d.ts +7 -0
  191. package/dist/types/base/middlewares/renderHandler/ssrCache.d.ts +29 -0
  192. package/dist/types/base/middlewares/renderHandler/ssrRender.d.ts +21 -0
  193. package/dist/types/base/serverBase.d.ts +52 -0
  194. package/dist/types/base/utils/debug.d.ts +1 -0
  195. package/dist/types/base/utils/entry.d.ts +2 -0
  196. package/dist/types/base/utils/env.d.ts +2 -0
  197. package/dist/types/base/utils/error.d.ts +1 -0
  198. package/dist/types/base/utils/index.d.ts +7 -0
  199. package/dist/types/base/utils/middlewareCollector.d.ts +12 -0
  200. package/dist/types/base/utils/request.d.ts +12 -0
  201. package/dist/types/base/utils/serverConfig.d.ts +14 -0
  202. package/dist/types/base/utils/transformStream.d.ts +5 -0
  203. package/dist/types/base/utils/warmup.d.ts +1 -0
  204. package/dist/types/core/hono.d.ts +1 -0
  205. package/dist/types/core/index.d.ts +1 -0
  206. package/dist/types/core/loadPlugins.d.ts +3 -0
  207. package/dist/types/core/plugin.d.ts +202 -0
  208. package/dist/types/core/render.d.ts +15 -0
  209. package/dist/types/core/server.d.ts +94 -0
  210. package/dist/types/index.d.ts +3 -2
  211. package/package.json +39 -1
  212. package/dist/types/loadPlugins.d.ts +0 -5
  213. package/dist/types/plugin.d.ts +0 -493
@@ -0,0 +1,157 @@
1
+ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
+ import { time } from "@modern-js/runtime-utils/time";
4
+ import { ServerReportTimings } from "../constants";
5
+ var defaultReporter = {
6
+ init: function init() {
7
+ },
8
+ reportError: function reportError() {
9
+ },
10
+ reportTiming: function reportTiming() {
11
+ },
12
+ reportInfo: function reportInfo() {
13
+ },
14
+ reportWarn: function reportWarn() {
15
+ }
16
+ };
17
+ function injectReporter() {
18
+ return function() {
19
+ var _ref = _async_to_generator(function(c, next) {
20
+ var reporter;
21
+ return _ts_generator(this, function(_state) {
22
+ switch (_state.label) {
23
+ case 0:
24
+ reporter = c.get("reporter");
25
+ if (!reporter) {
26
+ c.set("reporter", defaultReporter);
27
+ }
28
+ return [
29
+ 4,
30
+ next()
31
+ ];
32
+ case 1:
33
+ _state.sent();
34
+ return [
35
+ 2
36
+ ];
37
+ }
38
+ });
39
+ });
40
+ return function(c, next) {
41
+ return _ref.apply(this, arguments);
42
+ };
43
+ }();
44
+ }
45
+ function initReporter(entryName) {
46
+ return function() {
47
+ var _ref = _async_to_generator(function(c, next) {
48
+ var reporter, getCost, cost;
49
+ return _ts_generator(this, function(_state) {
50
+ switch (_state.label) {
51
+ case 0:
52
+ reporter = c.get("reporter");
53
+ if (!!reporter)
54
+ return [
55
+ 3,
56
+ 2
57
+ ];
58
+ return [
59
+ 4,
60
+ next()
61
+ ];
62
+ case 1:
63
+ _state.sent();
64
+ return [
65
+ 2
66
+ ];
67
+ case 2:
68
+ return [
69
+ 4,
70
+ reporter.init({
71
+ entryName
72
+ })
73
+ ];
74
+ case 3:
75
+ _state.sent();
76
+ getCost = time();
77
+ return [
78
+ 4,
79
+ next()
80
+ ];
81
+ case 4:
82
+ _state.sent();
83
+ cost = getCost();
84
+ reporter.reportTiming(ServerReportTimings.SERVER_HANDLE_REQUEST, cost);
85
+ return [
86
+ 2
87
+ ];
88
+ }
89
+ });
90
+ });
91
+ return function(c, next) {
92
+ return _ref.apply(this, arguments);
93
+ };
94
+ }();
95
+ }
96
+ function injectLogger(inputLogger) {
97
+ return function() {
98
+ var _ref = _async_to_generator(function(c, next) {
99
+ var logger;
100
+ return _ts_generator(this, function(_state) {
101
+ switch (_state.label) {
102
+ case 0:
103
+ logger = c.get("logger");
104
+ if (!logger && inputLogger) {
105
+ c.set("logger", inputLogger);
106
+ }
107
+ return [
108
+ 4,
109
+ next()
110
+ ];
111
+ case 1:
112
+ _state.sent();
113
+ return [
114
+ 2
115
+ ];
116
+ }
117
+ });
118
+ });
119
+ return function(c, next) {
120
+ return _ref.apply(this, arguments);
121
+ };
122
+ }();
123
+ }
124
+ function injectMetrics(inputMetrics) {
125
+ return function() {
126
+ var _ref = _async_to_generator(function(c, next) {
127
+ var metrics;
128
+ return _ts_generator(this, function(_state) {
129
+ switch (_state.label) {
130
+ case 0:
131
+ metrics = c.get("metrics");
132
+ if (!metrics) {
133
+ c.set("metrics", inputMetrics);
134
+ }
135
+ return [
136
+ 4,
137
+ next()
138
+ ];
139
+ case 1:
140
+ _state.sent();
141
+ return [
142
+ 2
143
+ ];
144
+ }
145
+ });
146
+ });
147
+ return function(c, next) {
148
+ return _ref.apply(this, arguments);
149
+ };
150
+ }();
151
+ }
152
+ export {
153
+ initReporter,
154
+ injectLogger,
155
+ injectMetrics,
156
+ injectReporter
157
+ };
@@ -0,0 +1,45 @@
1
+ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
+ import { MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
4
+ var dataHandler = function() {
5
+ var _ref = _async_to_generator(function(request, param) {
6
+ var routeInfo, serverRoutes, reporter, logger, serverManifest, _serverManifest_loaderBundles, serverLoaderModule, routes, handleRequest, response;
7
+ return _ts_generator(this, function(_state) {
8
+ switch (_state.label) {
9
+ case 0:
10
+ routeInfo = param.routeInfo, serverRoutes = param.serverRoutes, reporter = param.reporter, logger = param.logger, serverManifest = param.serverManifest;
11
+ serverLoaderModule = serverManifest === null || serverManifest === void 0 ? void 0 : (_serverManifest_loaderBundles = serverManifest.loaderBundles) === null || _serverManifest_loaderBundles === void 0 ? void 0 : _serverManifest_loaderBundles[routeInfo.entryName || MAIN_ENTRY_NAME];
12
+ if (!serverLoaderModule) {
13
+ return [
14
+ 2
15
+ ];
16
+ }
17
+ routes = serverLoaderModule.routes, handleRequest = serverLoaderModule.handleRequest;
18
+ return [
19
+ 4,
20
+ handleRequest({
21
+ request,
22
+ serverRoutes,
23
+ context: {
24
+ logger,
25
+ reporter
26
+ },
27
+ routes
28
+ })
29
+ ];
30
+ case 1:
31
+ response = _state.sent();
32
+ return [
33
+ 2,
34
+ response
35
+ ];
36
+ }
37
+ });
38
+ });
39
+ return function dataHandler2(request, _) {
40
+ return _ref.apply(this, arguments);
41
+ };
42
+ }();
43
+ export {
44
+ dataHandler
45
+ };
@@ -0,0 +1,165 @@
1
+ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
+ import { checkIsProd, sortRoutes, getRuntimeEnv } from "../../utils";
4
+ import { initReporter } from "../monitor";
5
+ import { CustomServer } from "../customServer";
6
+ import { createRender } from "./render";
7
+ function createRenderHandler(render) {
8
+ return function() {
9
+ var _ref = _async_to_generator(function(c, _) {
10
+ var _c_env_node, logger, reporter, templates, serverManifest, locals, request, nodeReq, res;
11
+ return _ts_generator(this, function(_state) {
12
+ switch (_state.label) {
13
+ case 0:
14
+ logger = c.get("logger");
15
+ reporter = c.get("reporter");
16
+ templates = c.get("templates") || {};
17
+ serverManifest = c.get("serverManifest") || {};
18
+ locals = c.get("locals");
19
+ request = c.req.raw;
20
+ nodeReq = (_c_env_node = c.env.node) === null || _c_env_node === void 0 ? void 0 : _c_env_node.req;
21
+ return [
22
+ 4,
23
+ render(request, {
24
+ logger,
25
+ nodeReq,
26
+ reporter,
27
+ templates,
28
+ serverManifest,
29
+ locals
30
+ })
31
+ ];
32
+ case 1:
33
+ res = _state.sent();
34
+ return [
35
+ 2,
36
+ res
37
+ ];
38
+ }
39
+ });
40
+ });
41
+ return function(c, _) {
42
+ return _ref.apply(this, arguments);
43
+ };
44
+ }();
45
+ }
46
+ function getRenderHandler(options) {
47
+ return _getRenderHandler.apply(this, arguments);
48
+ }
49
+ function _getRenderHandler() {
50
+ _getRenderHandler = _async_to_generator(function(options) {
51
+ var routes, pwd, config, _config_server, _options_config_security, ssrConfig, forceCSR, render;
52
+ return _ts_generator(this, function(_state) {
53
+ routes = options.routes, pwd = options.pwd, config = options.config;
54
+ if (routes && routes.length > 0) {
55
+ ;
56
+ ssrConfig = (_config_server = config.server) === null || _config_server === void 0 ? void 0 : _config_server.ssr;
57
+ forceCSR = typeof ssrConfig === "object" ? ssrConfig.forceCSR : false;
58
+ render = createRender({
59
+ routes,
60
+ pwd,
61
+ staticGenerate: options.staticGenerate,
62
+ metaName: options.metaName || "modern-js",
63
+ forceCSR,
64
+ nonce: (_options_config_security = options.config.security) === null || _options_config_security === void 0 ? void 0 : _options_config_security.nonce
65
+ });
66
+ return [
67
+ 2,
68
+ render
69
+ ];
70
+ }
71
+ return [
72
+ 2,
73
+ null
74
+ ];
75
+ });
76
+ });
77
+ return _getRenderHandler.apply(this, arguments);
78
+ }
79
+ function bindRenderHandler(server, options) {
80
+ return _bindRenderHandler.apply(this, arguments);
81
+ }
82
+ function _bindRenderHandler() {
83
+ _bindRenderHandler = _async_to_generator(function(server, options) {
84
+ var routes, pwd, disableCustomHook, runner, customServer, cacheModuleName, ssrCache, pageRoutes, render, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, route, originUrlPath, entryName, urlPath, customServerHookMiddleware, customServerMiddleware;
85
+ return _ts_generator(this, function(_state) {
86
+ switch (_state.label) {
87
+ case 0:
88
+ routes = options.routes, pwd = options.pwd, disableCustomHook = options.disableCustomHook;
89
+ runner = server.runner;
90
+ if (!(routes && routes.length > 0))
91
+ return [
92
+ 3,
93
+ 5
94
+ ];
95
+ customServer = new CustomServer(runner, server, pwd);
96
+ if (!(getRuntimeEnv() === "node"))
97
+ return [
98
+ 3,
99
+ 3
100
+ ];
101
+ cacheModuleName = "./ssrCache";
102
+ return [
103
+ 4,
104
+ import(cacheModuleName)
105
+ ];
106
+ case 1:
107
+ ssrCache = _state.sent().ssrCache;
108
+ return [
109
+ 4,
110
+ ssrCache.loadCacheMod(checkIsProd() ? pwd : void 0)
111
+ ];
112
+ case 2:
113
+ _state.sent();
114
+ _state.label = 3;
115
+ case 3:
116
+ pageRoutes = routes.filter(function(route2) {
117
+ return !route2.isApi;
118
+ }).sort(sortRoutes);
119
+ return [
120
+ 4,
121
+ getRenderHandler(options)
122
+ ];
123
+ case 4:
124
+ render = _state.sent();
125
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
126
+ try {
127
+ for (_iterator = pageRoutes[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
128
+ route = _step.value;
129
+ originUrlPath = route.urlPath, entryName = route.entryName;
130
+ urlPath = originUrlPath.endsWith("/") ? "".concat(originUrlPath, "*") : "".concat(originUrlPath, "/*");
131
+ customServerHookMiddleware = customServer.getHookMiddleware(entryName || "main", routes);
132
+ server.use(urlPath, initReporter(entryName));
133
+ !disableCustomHook && server.use(urlPath, customServerHookMiddleware);
134
+ customServerMiddleware = customServer.getServerMiddleware();
135
+ server.use(urlPath, customServerMiddleware);
136
+ render && server.all(urlPath, createRenderHandler(render));
137
+ }
138
+ } catch (err) {
139
+ _didIteratorError = true;
140
+ _iteratorError = err;
141
+ } finally {
142
+ try {
143
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
144
+ _iterator.return();
145
+ }
146
+ } finally {
147
+ if (_didIteratorError) {
148
+ throw _iteratorError;
149
+ }
150
+ }
151
+ }
152
+ _state.label = 5;
153
+ case 5:
154
+ return [
155
+ 2
156
+ ];
157
+ }
158
+ });
159
+ });
160
+ return _bindRenderHandler.apply(this, arguments);
161
+ }
162
+ export {
163
+ bindRenderHandler,
164
+ getRenderHandler
165
+ };
@@ -0,0 +1,216 @@
1
+ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
+ import { cutNameByHyphen } from "@modern-js/utils/universal";
4
+ import { REPLACE_REG } from "../../../base/constants";
5
+ import { createErrorHtml, sortRoutes, parseQuery, transformResponse, getPathname } from "../../utils";
6
+ import { dataHandler } from "./dataHandler";
7
+ import { ssrRender } from "./ssrRender";
8
+ function createRender(_) {
9
+ return _createRender.apply(this, arguments);
10
+ }
11
+ function _createRender() {
12
+ _createRender = _async_to_generator(function(param) {
13
+ var routes, pwd, metaName, staticGenerate, forceCSR, nonce;
14
+ return _ts_generator(this, function(_state) {
15
+ routes = param.routes, pwd = param.pwd, metaName = param.metaName, staticGenerate = param.staticGenerate, forceCSR = param.forceCSR, nonce = param.nonce;
16
+ return [
17
+ 2,
18
+ function() {
19
+ var _ref = _async_to_generator(function(req, param2) {
20
+ var logger, nodeReq, reporter, templates, serverManifest, locals, routeInfo, html, renderMode, renderOptions, response;
21
+ return _ts_generator(this, function(_state2) {
22
+ switch (_state2.label) {
23
+ case 0:
24
+ logger = param2.logger, nodeReq = param2.nodeReq, reporter = param2.reporter, templates = param2.templates, serverManifest = param2.serverManifest, locals = param2.locals;
25
+ routeInfo = matchRoute(req, routes);
26
+ if (!routeInfo) {
27
+ return [
28
+ 2,
29
+ new Response(createErrorHtml(404), {
30
+ status: 404,
31
+ headers: {
32
+ "content-type": "text/html; charset=UTF-8"
33
+ }
34
+ })
35
+ ];
36
+ }
37
+ html = templates[routeInfo.entryName];
38
+ if (!html) {
39
+ throw new Error("Can't found entry ".concat(routeInfo.entryName, " html "));
40
+ }
41
+ renderMode = getRenderMode(req, metaName || "modern-js", routeInfo.isSSR, forceCSR, nodeReq);
42
+ renderOptions = {
43
+ pwd,
44
+ html,
45
+ routeInfo,
46
+ staticGenerate: staticGenerate || false,
47
+ metaName: metaName || "modern-js",
48
+ nonce,
49
+ logger,
50
+ nodeReq,
51
+ reporter,
52
+ serverRoutes: routes,
53
+ locals,
54
+ serverManifest
55
+ };
56
+ switch (renderMode) {
57
+ case "data":
58
+ return [
59
+ 3,
60
+ 1
61
+ ];
62
+ case "ssr":
63
+ return [
64
+ 3,
65
+ 5
66
+ ];
67
+ case "csr":
68
+ return [
69
+ 3,
70
+ 5
71
+ ];
72
+ }
73
+ return [
74
+ 3,
75
+ 6
76
+ ];
77
+ case 1:
78
+ return [
79
+ 4,
80
+ dataHandler(req, renderOptions)
81
+ ];
82
+ case 2:
83
+ response = _state2.sent();
84
+ if (!!response)
85
+ return [
86
+ 3,
87
+ 4
88
+ ];
89
+ return [
90
+ 4,
91
+ renderHandler(req, renderOptions, "ssr")
92
+ ];
93
+ case 3:
94
+ response = _state2.sent();
95
+ _state2.label = 4;
96
+ case 4:
97
+ return [
98
+ 2,
99
+ response
100
+ ];
101
+ case 5:
102
+ return [
103
+ 2,
104
+ renderHandler(req, renderOptions, renderMode)
105
+ ];
106
+ case 6:
107
+ throw new Error("Unknown render mode: ".concat(renderMode));
108
+ case 7:
109
+ return [
110
+ 2
111
+ ];
112
+ }
113
+ });
114
+ });
115
+ return function(req, _) {
116
+ return _ref.apply(this, arguments);
117
+ };
118
+ }()
119
+ ];
120
+ });
121
+ });
122
+ return _createRender.apply(this, arguments);
123
+ }
124
+ function renderHandler(request, options, mode) {
125
+ return _renderHandler.apply(this, arguments);
126
+ }
127
+ function _renderHandler() {
128
+ _renderHandler = _async_to_generator(function(request, options, mode) {
129
+ var serverData, response;
130
+ return _ts_generator(this, function(_state) {
131
+ switch (_state.label) {
132
+ case 0:
133
+ serverData = {
134
+ router: {
135
+ baseUrl: options.routeInfo.urlPath,
136
+ params: {}
137
+ }
138
+ };
139
+ return [
140
+ 4,
141
+ mode === "ssr" ? ssrRender(request, options) : csrRender(options.html)
142
+ ];
143
+ case 1:
144
+ response = _state.sent();
145
+ return [
146
+ 2,
147
+ transformResponse(response, injectServerData(serverData))
148
+ ];
149
+ }
150
+ });
151
+ });
152
+ return _renderHandler.apply(this, arguments);
153
+ }
154
+ function matchRoute(req, routes) {
155
+ var sorted = routes.sort(sortRoutes);
156
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
157
+ try {
158
+ for (var _iterator = sorted[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
159
+ var route = _step.value;
160
+ var pathname = getPathname(req);
161
+ if (pathname.startsWith(route.urlPath)) {
162
+ return route;
163
+ }
164
+ }
165
+ } catch (err) {
166
+ _didIteratorError = true;
167
+ _iteratorError = err;
168
+ } finally {
169
+ try {
170
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
171
+ _iterator.return();
172
+ }
173
+ } finally {
174
+ if (_didIteratorError) {
175
+ throw _iteratorError;
176
+ }
177
+ }
178
+ }
179
+ return void 0;
180
+ }
181
+ function getRenderMode(req, framework, isSSR, forceCSR, nodeReq) {
182
+ var query = parseQuery(req);
183
+ var fallbackHeader = "x-".concat(cutNameByHyphen(framework), "-ssr-fallback");
184
+ if (isSSR) {
185
+ if (query.__loader) {
186
+ return "data";
187
+ }
188
+ if (forceCSR && (query.csr || req.headers.get(fallbackHeader) || (nodeReq === null || nodeReq === void 0 ? void 0 : nodeReq.headers[fallbackHeader]))) {
189
+ return "csr";
190
+ }
191
+ return "ssr";
192
+ } else {
193
+ return "csr";
194
+ }
195
+ }
196
+ function csrRender(html) {
197
+ return new Response(html, {
198
+ status: 200,
199
+ headers: new Headers({
200
+ "content-type": "text/html; charset=UTF-8"
201
+ })
202
+ });
203
+ }
204
+ function injectServerData(serverData) {
205
+ var head = REPLACE_REG.before.head;
206
+ var searchValue = new RegExp(head);
207
+ var replcaeCb = function(beforeHead) {
208
+ return "".concat(beforeHead, '<script type="application/json" id="__MODERN_SERVER_DATA__">').concat(JSON.stringify(serverData), "</script>");
209
+ };
210
+ return function(template) {
211
+ return template.replace(searchValue, replcaeCb);
212
+ };
213
+ }
214
+ export {
215
+ createRender
216
+ };
@@ -0,0 +1,21 @@
1
+ import { _ as _class_call_check } from "@swc/helpers/_/_class_call_check";
2
+ var SERVER_TIMING = "Server-Timing";
3
+ var ServerTiming = /* @__PURE__ */ function() {
4
+ "use strict";
5
+ function ServerTiming2(headers, meta) {
6
+ _class_call_check(this, ServerTiming2);
7
+ this.meta = meta;
8
+ this.headers = headers;
9
+ }
10
+ var _proto = ServerTiming2.prototype;
11
+ _proto.addServeTiming = function addServeTiming(name, dur, desc) {
12
+ var _name = "bd-".concat(this.meta, "-").concat(name);
13
+ var value = "".concat(_name, ";").concat(desc ? 'decs="'.concat(desc, '";') : "", " dur=").concat(dur);
14
+ this.headers.append(SERVER_TIMING, value);
15
+ return this;
16
+ };
17
+ return ServerTiming2;
18
+ }();
19
+ export {
20
+ ServerTiming
21
+ };