@modern-js/server-core 2.48.6 → 2.49.1-alpha.0

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