@modern-js/server-core 2.48.2 → 2.48.3-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 (204) hide show
  1. package/dist/cjs/base/adapters/node/bff.js +69 -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 +126 -0
  12. package/dist/cjs/base/adapters/node/polyfills/index.js +24 -0
  13. package/dist/cjs/base/adapters/node/polyfills/install.js +70 -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 +45 -0
  17. package/dist/cjs/base/middlewares/customServer/base.js +111 -0
  18. package/dist/cjs/base/middlewares/customServer/context.js +78 -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/index.js +26 -0
  24. package/dist/cjs/base/middlewares/monitor.js +90 -0
  25. package/dist/cjs/base/middlewares/renderHandler/dataHandler.js +46 -0
  26. package/dist/cjs/base/middlewares/renderHandler/index.js +104 -0
  27. package/dist/cjs/base/middlewares/renderHandler/render.js +123 -0
  28. package/dist/cjs/base/middlewares/renderHandler/serverTiming.js +40 -0
  29. package/dist/cjs/base/middlewares/renderHandler/ssrCache.js +197 -0
  30. package/dist/cjs/base/middlewares/renderHandler/ssrRender.js +168 -0
  31. package/dist/cjs/base/serverBase.js +203 -0
  32. package/dist/cjs/base/utils/debug.js +29 -0
  33. package/dist/cjs/base/utils/entry.js +30 -0
  34. package/dist/cjs/base/utils/env.js +45 -0
  35. package/dist/cjs/base/utils/error.js +65 -0
  36. package/dist/cjs/base/utils/index.js +45 -0
  37. package/dist/cjs/base/utils/middlewareCollector.js +54 -0
  38. package/dist/cjs/base/utils/request.js +65 -0
  39. package/dist/cjs/base/utils/serverConfig.js +70 -0
  40. package/dist/cjs/base/utils/transformStream.js +61 -0
  41. package/dist/cjs/base/utils/warmup.js +43 -0
  42. package/dist/cjs/core/hono.js +16 -0
  43. package/dist/cjs/core/index.js +22 -0
  44. package/dist/cjs/{loadPlugins.js → core/loadPlugins.js} +4 -7
  45. package/dist/cjs/{plugin.js → core/plugin.js} +1 -3
  46. package/dist/cjs/core/render.js +16 -0
  47. package/dist/cjs/core/server.js +16 -0
  48. package/dist/cjs/index.js +6 -4
  49. package/dist/esm/base/adapters/node/bff.js +128 -0
  50. package/dist/esm/base/adapters/node/hono.js +83 -0
  51. package/dist/esm/base/adapters/node/index.js +19 -0
  52. package/dist/esm/base/adapters/node/loadServer.js +73 -0
  53. package/dist/esm/base/adapters/node/middlewares/index.js +4 -0
  54. package/dist/esm/base/adapters/node/middlewares/mock.js +198 -0
  55. package/dist/esm/base/adapters/node/middlewares/serverManifest.js +132 -0
  56. package/dist/esm/base/adapters/node/middlewares/serverPublic.js +85 -0
  57. package/dist/esm/base/adapters/node/middlewares/serverStatic.js +109 -0
  58. package/dist/esm/base/adapters/node/middlewares/templates.js +114 -0
  59. package/dist/esm/base/adapters/node/node.js +194 -0
  60. package/dist/esm/base/adapters/node/polyfills/index.js +2 -0
  61. package/dist/esm/base/adapters/node/polyfills/install.js +46 -0
  62. package/dist/esm/base/adapters/node/polyfills/stream.js +316 -0
  63. package/dist/esm/base/constants.js +31 -0
  64. package/dist/esm/base/index.js +14 -0
  65. package/dist/esm/base/middlewares/customServer/base.js +126 -0
  66. package/dist/esm/base/middlewares/customServer/context.js +70 -0
  67. package/dist/esm/base/middlewares/customServer/index.js +208 -0
  68. package/dist/esm/base/middlewares/customServer/routerApi.js +26 -0
  69. package/dist/esm/base/middlewares/customServer/template.js +47 -0
  70. package/dist/esm/base/middlewares/faviconFallback.js +28 -0
  71. package/dist/esm/base/middlewares/index.js +3 -0
  72. package/dist/esm/base/middlewares/monitor.js +157 -0
  73. package/dist/esm/base/middlewares/renderHandler/dataHandler.js +45 -0
  74. package/dist/esm/base/middlewares/renderHandler/index.js +163 -0
  75. package/dist/esm/base/middlewares/renderHandler/render.js +213 -0
  76. package/dist/esm/base/middlewares/renderHandler/serverTiming.js +21 -0
  77. package/dist/esm/base/middlewares/renderHandler/ssrCache.js +306 -0
  78. package/dist/esm/base/middlewares/renderHandler/ssrRender.js +226 -0
  79. package/dist/esm/base/serverBase.js +383 -0
  80. package/dist/esm/base/utils/debug.js +5 -0
  81. package/dist/esm/base/utils/entry.js +6 -0
  82. package/dist/esm/base/utils/env.js +20 -0
  83. package/dist/esm/base/utils/error.js +12 -0
  84. package/dist/esm/base/utils/index.js +13 -0
  85. package/dist/esm/base/utils/middlewareCollector.js +31 -0
  86. package/dist/esm/base/utils/request.js +39 -0
  87. package/dist/esm/base/utils/serverConfig.js +58 -0
  88. package/dist/esm/base/utils/transformStream.js +90 -0
  89. package/dist/esm/base/utils/warmup.js +9 -0
  90. package/dist/esm/core/hono.js +0 -0
  91. package/dist/esm/core/index.js +1 -0
  92. package/dist/esm/core/loadPlugins.js +26 -0
  93. package/dist/esm/core/plugin.js +98 -0
  94. package/dist/esm/core/render.js +0 -0
  95. package/dist/esm/core/server.js +0 -0
  96. package/dist/esm/index.js +3 -2
  97. package/dist/esm-node/base/adapters/node/bff.js +45 -0
  98. package/dist/esm-node/base/adapters/node/hono.js +38 -0
  99. package/dist/esm-node/base/adapters/node/index.js +19 -0
  100. package/dist/esm-node/base/adapters/node/loadServer.js +22 -0
  101. package/dist/esm-node/base/adapters/node/middlewares/index.js +4 -0
  102. package/dist/esm-node/base/adapters/node/middlewares/mock.js +79 -0
  103. package/dist/esm-node/base/adapters/node/middlewares/serverManifest.js +48 -0
  104. package/dist/esm-node/base/adapters/node/middlewares/serverPublic.js +33 -0
  105. package/dist/esm-node/base/adapters/node/middlewares/serverStatic.js +75 -0
  106. package/dist/esm-node/base/adapters/node/middlewares/templates.js +32 -0
  107. package/dist/esm-node/base/adapters/node/node.js +100 -0
  108. package/dist/esm-node/base/adapters/node/polyfills/index.js +2 -0
  109. package/dist/esm-node/base/adapters/node/polyfills/install.js +46 -0
  110. package/dist/esm-node/base/adapters/node/polyfills/stream.js +126 -0
  111. package/dist/esm-node/base/constants.js +31 -0
  112. package/dist/esm-node/base/index.js +14 -0
  113. package/dist/esm-node/base/middlewares/customServer/base.js +87 -0
  114. package/dist/esm-node/base/middlewares/customServer/context.js +51 -0
  115. package/dist/esm-node/base/middlewares/customServer/index.js +106 -0
  116. package/dist/esm-node/base/middlewares/customServer/routerApi.js +20 -0
  117. package/dist/esm-node/base/middlewares/customServer/template.js +34 -0
  118. package/dist/esm-node/base/middlewares/faviconFallback.js +10 -0
  119. package/dist/esm-node/base/middlewares/index.js +3 -0
  120. package/dist/esm-node/base/middlewares/monitor.js +63 -0
  121. package/dist/esm-node/base/middlewares/renderHandler/dataHandler.js +22 -0
  122. package/dist/esm-node/base/middlewares/renderHandler/index.js +69 -0
  123. package/dist/esm-node/base/middlewares/renderHandler/render.js +99 -0
  124. package/dist/esm-node/base/middlewares/renderHandler/serverTiming.js +16 -0
  125. package/dist/esm-node/base/middlewares/renderHandler/ssrCache.js +162 -0
  126. package/dist/esm-node/base/middlewares/renderHandler/ssrRender.js +134 -0
  127. package/dist/esm-node/base/serverBase.js +168 -0
  128. package/dist/esm-node/base/utils/debug.js +5 -0
  129. package/dist/esm-node/base/utils/entry.js +6 -0
  130. package/dist/esm-node/base/utils/env.js +20 -0
  131. package/dist/esm-node/base/utils/error.js +41 -0
  132. package/dist/esm-node/base/utils/index.js +13 -0
  133. package/dist/esm-node/base/utils/middlewareCollector.js +29 -0
  134. package/dist/esm-node/base/utils/request.js +38 -0
  135. package/dist/esm-node/base/utils/serverConfig.js +34 -0
  136. package/dist/esm-node/base/utils/transformStream.js +36 -0
  137. package/dist/esm-node/base/utils/warmup.js +9 -0
  138. package/dist/esm-node/core/hono.js +0 -0
  139. package/dist/esm-node/core/index.js +1 -0
  140. package/dist/{esm → esm-node/core}/loadPlugins.js +4 -7
  141. package/dist/{esm → esm-node/core}/plugin.js +1 -3
  142. package/dist/esm-node/core/render.js +0 -0
  143. package/dist/esm-node/core/server.js +0 -0
  144. package/dist/esm-node/index.js +5 -0
  145. package/dist/esm-node/types/config/bff.js +0 -0
  146. package/dist/esm-node/types/config/dev.js +0 -0
  147. package/dist/esm-node/types/config/html.js +0 -0
  148. package/dist/esm-node/types/config/index.js +6 -0
  149. package/dist/esm-node/types/config/output.js +0 -0
  150. package/dist/esm-node/types/config/security.js +0 -0
  151. package/dist/esm-node/types/config/server.js +0 -0
  152. package/dist/esm-node/types/config/share.js +0 -0
  153. package/dist/esm-node/types/config/source.js +0 -0
  154. package/dist/esm-node/types/config/tools.js +0 -0
  155. package/dist/types/base/adapters/node/bff.d.ts +4 -0
  156. package/dist/types/base/adapters/node/hono.d.ts +22 -0
  157. package/dist/types/base/adapters/node/index.d.ts +6 -0
  158. package/dist/types/base/adapters/node/loadServer.d.ts +3 -0
  159. package/dist/types/base/adapters/node/middlewares/index.d.ts +4 -0
  160. package/dist/types/base/adapters/node/middlewares/mock.d.ts +5 -0
  161. package/dist/types/base/adapters/node/middlewares/serverManifest.d.ts +3 -0
  162. package/dist/types/base/adapters/node/middlewares/serverPublic.d.ts +7 -0
  163. package/dist/types/base/adapters/node/middlewares/serverStatic.d.ts +11 -0
  164. package/dist/types/base/adapters/node/middlewares/templates.d.ts +4 -0
  165. package/dist/types/base/adapters/node/node.d.ts +12 -0
  166. package/dist/types/base/adapters/node/polyfills/index.d.ts +2 -0
  167. package/dist/types/base/adapters/node/polyfills/install.d.ts +1 -0
  168. package/dist/types/base/adapters/node/polyfills/stream.d.ts +18 -0
  169. package/dist/types/base/constants.d.ts +24 -0
  170. package/dist/types/base/index.d.ts +7 -0
  171. package/dist/types/base/middlewares/customServer/base.d.ts +3 -0
  172. package/dist/types/base/middlewares/customServer/context.d.ts +7 -0
  173. package/dist/types/base/middlewares/customServer/index.d.ts +13 -0
  174. package/dist/types/base/middlewares/customServer/routerApi.d.ts +9 -0
  175. package/dist/types/base/middlewares/customServer/template.d.ts +11 -0
  176. package/dist/types/base/middlewares/faviconFallback.d.ts +2 -0
  177. package/dist/types/base/middlewares/index.d.ts +3 -0
  178. package/dist/types/base/middlewares/monitor.d.ts +6 -0
  179. package/dist/types/base/middlewares/renderHandler/dataHandler.d.ts +5 -0
  180. package/dist/types/base/middlewares/renderHandler/index.d.ts +9 -0
  181. package/dist/types/base/middlewares/renderHandler/render.d.ts +12 -0
  182. package/dist/types/base/middlewares/renderHandler/serverTiming.d.ts +7 -0
  183. package/dist/types/base/middlewares/renderHandler/ssrCache.d.ts +29 -0
  184. package/dist/types/base/middlewares/renderHandler/ssrRender.d.ts +18 -0
  185. package/dist/types/base/serverBase.d.ts +52 -0
  186. package/dist/types/base/utils/debug.d.ts +1 -0
  187. package/dist/types/base/utils/entry.d.ts +2 -0
  188. package/dist/types/base/utils/env.d.ts +2 -0
  189. package/dist/types/base/utils/error.d.ts +1 -0
  190. package/dist/types/base/utils/index.d.ts +8 -0
  191. package/dist/types/base/utils/middlewareCollector.d.ts +12 -0
  192. package/dist/types/base/utils/request.d.ts +12 -0
  193. package/dist/types/base/utils/serverConfig.d.ts +14 -0
  194. package/dist/types/base/utils/transformStream.d.ts +5 -0
  195. package/dist/types/base/utils/warmup.d.ts +1 -0
  196. package/dist/types/core/hono.d.ts +1 -0
  197. package/dist/types/core/index.d.ts +1 -0
  198. package/dist/types/core/loadPlugins.d.ts +3 -0
  199. package/dist/types/{plugin.d.ts → core/plugin.d.ts} +32 -35
  200. package/dist/types/core/render.d.ts +13 -0
  201. package/dist/types/core/server.d.ts +99 -0
  202. package/dist/types/index.d.ts +3 -2
  203. package/package.json +38 -3
  204. package/dist/types/loadPlugins.d.ts +0 -5
@@ -0,0 +1,306 @@
1
+ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _class_call_check } from "@swc/helpers/_/_class_call_check";
3
+ import { _ as _instanceof } from "@swc/helpers/_/_instanceof";
4
+ import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
5
+ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
6
+ import { Readable } from "stream";
7
+ import { SERVER_DIR, requireExistModule } from "@modern-js/utils";
8
+ import { createMemoryStorage } from "@modern-js/runtime-utils/storer";
9
+ import { createReadableStreamFromReadable } from "../../adapters/node/polyfills/stream";
10
+ import { createTransformStream, getPathname } from "../../utils";
11
+ var CacheManager = /* @__PURE__ */ function() {
12
+ "use strict";
13
+ function CacheManager2(container) {
14
+ _class_call_check(this, CacheManager2);
15
+ this.container = container;
16
+ }
17
+ var _proto = CacheManager2.prototype;
18
+ _proto.getCacheResult = function getCacheResult(req, cacheControl, render, ssrContext) {
19
+ var _this = this;
20
+ return _async_to_generator(function() {
21
+ var key, value, maxAge, staleWhileRevalidate, ttl, cache, interval;
22
+ return _ts_generator(this, function(_state) {
23
+ switch (_state.label) {
24
+ case 0:
25
+ key = _this.computedKey(req, cacheControl);
26
+ return [
27
+ 4,
28
+ _this.container.get(key)
29
+ ];
30
+ case 1:
31
+ value = _state.sent();
32
+ maxAge = cacheControl.maxAge, staleWhileRevalidate = cacheControl.staleWhileRevalidate;
33
+ ttl = maxAge + staleWhileRevalidate;
34
+ if (value) {
35
+ cache = JSON.parse(value);
36
+ interval = Date.now() - cache.cursor;
37
+ if (interval <= maxAge) {
38
+ return [
39
+ 2,
40
+ {
41
+ data: cache.val,
42
+ status: "hit"
43
+ }
44
+ ];
45
+ } else if (interval <= staleWhileRevalidate + maxAge) {
46
+ _this.processCache(key, render, ssrContext, ttl);
47
+ return [
48
+ 2,
49
+ {
50
+ data: cache.val,
51
+ status: "stale"
52
+ }
53
+ ];
54
+ } else {
55
+ return [
56
+ 2,
57
+ _this.processCache(key, render, ssrContext, ttl, "expired")
58
+ ];
59
+ }
60
+ } else {
61
+ return [
62
+ 2,
63
+ _this.processCache(key, render, ssrContext, ttl, "miss")
64
+ ];
65
+ }
66
+ return [
67
+ 2
68
+ ];
69
+ }
70
+ });
71
+ })();
72
+ };
73
+ _proto.processCache = function processCache(key, render, ssrContext, ttl, status) {
74
+ var _this = this;
75
+ return _async_to_generator(function() {
76
+ var renderResult, current, cache, body, html, stream;
77
+ return _ts_generator(this, function(_state) {
78
+ switch (_state.label) {
79
+ case 0:
80
+ return [
81
+ 4,
82
+ render(ssrContext)
83
+ ];
84
+ case 1:
85
+ renderResult = _state.sent();
86
+ if (!!renderResult)
87
+ return [
88
+ 3,
89
+ 2
90
+ ];
91
+ return [
92
+ 2,
93
+ {
94
+ data: ""
95
+ }
96
+ ];
97
+ case 2:
98
+ if (!(typeof renderResult === "string"))
99
+ return [
100
+ 3,
101
+ 4
102
+ ];
103
+ current = Date.now();
104
+ cache = {
105
+ val: renderResult,
106
+ cursor: current
107
+ };
108
+ return [
109
+ 4,
110
+ _this.container.set(key, JSON.stringify(cache), {
111
+ ttl
112
+ })
113
+ ];
114
+ case 3:
115
+ _state.sent();
116
+ return [
117
+ 2,
118
+ {
119
+ data: renderResult,
120
+ status
121
+ }
122
+ ];
123
+ case 4:
124
+ body = // TODO: remove node:stream, move it to ssr entry.
125
+ _instanceof(renderResult, Readable) ? createReadableStreamFromReadable(renderResult) : renderResult;
126
+ html = "";
127
+ stream = createTransformStream(function(chunk) {
128
+ html += chunk;
129
+ return chunk;
130
+ });
131
+ stream.readable.getReader().closed.then(function() {
132
+ var current2 = Date.now();
133
+ var cache2 = {
134
+ val: html,
135
+ cursor: current2
136
+ };
137
+ _this.container.set(key, JSON.stringify(cache2), {
138
+ ttl
139
+ });
140
+ });
141
+ body.pipeThrough(stream);
142
+ return [
143
+ 2,
144
+ {
145
+ data: stream.readable,
146
+ status
147
+ }
148
+ ];
149
+ case 5:
150
+ return [
151
+ 2
152
+ ];
153
+ }
154
+ });
155
+ })();
156
+ };
157
+ _proto.computedKey = function computedKey(req, cacheControl) {
158
+ var pathname = getPathname(req);
159
+ var customKey = cacheControl.customKey;
160
+ var defaultKey = pathname.replace(/.+\/+$/, "");
161
+ if (customKey) {
162
+ if (typeof customKey === "string") {
163
+ return customKey;
164
+ } else {
165
+ return customKey(defaultKey);
166
+ }
167
+ } else {
168
+ return defaultKey;
169
+ }
170
+ };
171
+ return CacheManager2;
172
+ }();
173
+ var CACHE_FILENAME = "cache";
174
+ var ServerCache = /* @__PURE__ */ function() {
175
+ "use strict";
176
+ function ServerCache2() {
177
+ _class_call_check(this, ServerCache2);
178
+ }
179
+ var _proto = ServerCache2.prototype;
180
+ _proto.loadCacheMod = function loadCacheMod() {
181
+ var pwd = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : process.cwd();
182
+ var _this = this;
183
+ return _async_to_generator(function() {
184
+ var path, serverCacheFilepath, mod, cacheStorage;
185
+ return _ts_generator(this, function(_state) {
186
+ switch (_state.label) {
187
+ case 0:
188
+ return [
189
+ 4,
190
+ import("path").catch(function() {
191
+ return {};
192
+ })
193
+ ];
194
+ case 1:
195
+ path = _state.sent();
196
+ serverCacheFilepath = path.resolve(pwd, SERVER_DIR, CACHE_FILENAME);
197
+ mod = requireExistModule(serverCacheFilepath, {
198
+ interop: false
199
+ });
200
+ _this.cacheOption = mod === null || mod === void 0 ? void 0 : mod.cacheOption;
201
+ if (_this.cacheOption && !(mod === null || mod === void 0 ? void 0 : mod.customContainer)) {
202
+ cacheStorage = createMemoryStorage("__ssr__cache");
203
+ _this.customContainer = cacheStorage;
204
+ } else {
205
+ _this.customContainer = mod === null || mod === void 0 ? void 0 : mod.customContainer;
206
+ }
207
+ if (_this.customContainer) {
208
+ _this.cacheManger = new CacheManager(_this.customContainer);
209
+ }
210
+ return [
211
+ 2
212
+ ];
213
+ }
214
+ });
215
+ })();
216
+ };
217
+ _proto.matchCacheControl = function matchCacheControl(req) {
218
+ var cacheOption = this.cacheOption;
219
+ if (!cacheOption || !req) {
220
+ return void 0;
221
+ } else if (isCacheControl(cacheOption)) {
222
+ return cacheOption;
223
+ } else if (isCacheOptionProvider(cacheOption)) {
224
+ return cacheOption(req);
225
+ } else {
226
+ var url = req.url;
227
+ var options = Object.entries(cacheOption);
228
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
229
+ try {
230
+ for (var _iterator = options[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
231
+ var _step_value = _sliced_to_array(_step.value, 2), key = _step_value[0], option = _step_value[1];
232
+ if (key === "*" || new RegExp(key).test(url)) {
233
+ if (typeof option === "function") {
234
+ return option(req);
235
+ } else {
236
+ return option;
237
+ }
238
+ }
239
+ }
240
+ } catch (err) {
241
+ _didIteratorError = true;
242
+ _iteratorError = err;
243
+ } finally {
244
+ try {
245
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
246
+ _iterator.return();
247
+ }
248
+ } finally {
249
+ if (_didIteratorError) {
250
+ throw _iteratorError;
251
+ }
252
+ }
253
+ }
254
+ return void 0;
255
+ }
256
+ function isCacheOptionProvider(option2) {
257
+ return typeof option2 === "function";
258
+ }
259
+ function isCacheControl(option2) {
260
+ return typeof option2 === "object" && option2 !== null && "maxAge" in option2;
261
+ }
262
+ };
263
+ _proto.getCache = function getCache(req, cacheControl, render, ssrContext) {
264
+ var _this = this;
265
+ return _async_to_generator(function() {
266
+ var renderResult;
267
+ return _ts_generator(this, function(_state) {
268
+ switch (_state.label) {
269
+ case 0:
270
+ if (!_this.cacheManger)
271
+ return [
272
+ 3,
273
+ 1
274
+ ];
275
+ return [
276
+ 2,
277
+ _this.cacheManger.getCacheResult(req, cacheControl, render, ssrContext)
278
+ ];
279
+ case 1:
280
+ return [
281
+ 4,
282
+ render(ssrContext)
283
+ ];
284
+ case 2:
285
+ renderResult = _state.sent();
286
+ return [
287
+ 2,
288
+ {
289
+ data: renderResult
290
+ }
291
+ ];
292
+ case 3:
293
+ return [
294
+ 2
295
+ ];
296
+ }
297
+ });
298
+ })();
299
+ };
300
+ return ServerCache2;
301
+ }();
302
+ var ssrCache = new ServerCache();
303
+ export {
304
+ CacheManager,
305
+ ssrCache
306
+ };
@@ -0,0 +1,226 @@
1
+ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _class_call_check } from "@swc/helpers/_/_class_call_check";
3
+ import { _ as _instanceof } from "@swc/helpers/_/_instanceof";
4
+ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
5
+ import { SERVER_RENDER_FUNCTION_NAME, MAIN_ENTRY_NAME } from "@modern-js/utils/universal/constants";
6
+ import * as isbot from "isbot";
7
+ import { getRuntimeEnv, parseHeaders, parseQuery, getHost } from "../../utils";
8
+ import { X_RENDER_CACHE } from "../../constants";
9
+ import { ServerTiming } from "./serverTiming";
10
+ var defaultReporter = {
11
+ init: function init() {
12
+ },
13
+ reportError: function reportError() {
14
+ },
15
+ reportTiming: function reportTiming() {
16
+ },
17
+ reportInfo: function reportInfo() {
18
+ },
19
+ reportWarn: function reportWarn() {
20
+ }
21
+ };
22
+ function ssrRender(request, _) {
23
+ return _ssrRender.apply(this, arguments);
24
+ }
25
+ function _ssrRender() {
26
+ _ssrRender = _async_to_generator(function(request, param) {
27
+ var routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, _serverManifest_renderBundles, entryName, loadableStats, routeManifest, host, isSpider, responseProxy, query, headers, ssrContext, renderBundle, runtimeEnv, ssrResult, cacheStatus, render, cacheModuleName, ssrCache, incomingMessage, cacheControl, _ref, data, status, redirection, headers1, Readable, streamModule, createReadableStreamFromReadable, _tmp, data1;
28
+ return _ts_generator(this, function(_state) {
29
+ switch (_state.label) {
30
+ case 0:
31
+ routeInfo = param.routeInfo, html = param.html, staticGenerate = param.staticGenerate, nonce = param.nonce, metaName = param.metaName, reporter = param.reporter, logger = param.logger, nodeReq = param.nodeReq, serverManifest = param.serverManifest;
32
+ entryName = routeInfo.entryName;
33
+ loadableStats = serverManifest.loadableStats || {};
34
+ routeManifest = serverManifest.routeManifest || {};
35
+ host = getHost(request);
36
+ isSpider = isbot.default(request.headers.get("user-agent"));
37
+ responseProxy = new ResponseProxy();
38
+ query = parseQuery(request);
39
+ headers = parseHeaders(request);
40
+ ssrContext = {
41
+ request: {
42
+ baseUrl: routeInfo.urlPath,
43
+ params: {},
44
+ // eslint-disable-next-line node/no-unsupported-features/node-builtins, node/prefer-global/url
45
+ pathname: new URL(request.url).pathname,
46
+ host,
47
+ query,
48
+ url: request.url,
49
+ headers
50
+ },
51
+ response: {
52
+ setHeader: function setHeader(key, value) {
53
+ responseProxy.headers.set(key, value);
54
+ },
55
+ status: function status2(code) {
56
+ responseProxy.status = code;
57
+ }
58
+ },
59
+ redirection: {},
60
+ template: html,
61
+ loadableStats,
62
+ routeManifest,
63
+ entryName,
64
+ staticGenerate,
65
+ logger,
66
+ serverTiming: new ServerTiming(responseProxy.headers, metaName),
67
+ reporter: reporter || defaultReporter,
68
+ /** @deprecated node req */
69
+ req: nodeReq,
70
+ /** @deprecated node res */
71
+ res: void 0,
72
+ isSpider,
73
+ nonce
74
+ };
75
+ renderBundle = (_serverManifest_renderBundles = serverManifest.renderBundles) === null || _serverManifest_renderBundles === void 0 ? void 0 : _serverManifest_renderBundles[entryName || MAIN_ENTRY_NAME];
76
+ if (!renderBundle) {
77
+ throw new Error("Can't found renderBundle ".concat(entryName || MAIN_ENTRY_NAME));
78
+ }
79
+ runtimeEnv = getRuntimeEnv();
80
+ render = renderBundle[SERVER_RENDER_FUNCTION_NAME];
81
+ if (!(runtimeEnv === "node"))
82
+ return [
83
+ 3,
84
+ 7
85
+ ];
86
+ cacheModuleName = "./ssrCache";
87
+ return [
88
+ 4,
89
+ import(cacheModuleName)
90
+ ];
91
+ case 1:
92
+ ssrCache = _state.sent().ssrCache;
93
+ incomingMessage = nodeReq ? nodeReq : new IncomingMessgeProxy(request);
94
+ return [
95
+ 4,
96
+ ssrCache.matchCacheControl(incomingMessage)
97
+ ];
98
+ case 2:
99
+ cacheControl = _state.sent();
100
+ if (!cacheControl)
101
+ return [
102
+ 3,
103
+ 4
104
+ ];
105
+ return [
106
+ 4,
107
+ ssrCache.getCache(request, cacheControl, render, ssrContext)
108
+ ];
109
+ case 3:
110
+ _ref = _state.sent(), data = _ref.data, status = _ref.status;
111
+ ssrResult = data;
112
+ cacheStatus = status;
113
+ return [
114
+ 3,
115
+ 6
116
+ ];
117
+ case 4:
118
+ return [
119
+ 4,
120
+ render(ssrContext)
121
+ ];
122
+ case 5:
123
+ ssrResult = _state.sent();
124
+ _state.label = 6;
125
+ case 6:
126
+ return [
127
+ 3,
128
+ 9
129
+ ];
130
+ case 7:
131
+ return [
132
+ 4,
133
+ render(ssrContext)
134
+ ];
135
+ case 8:
136
+ ssrResult = _state.sent();
137
+ _state.label = 9;
138
+ case 9:
139
+ redirection = ssrContext.redirection;
140
+ if (cacheStatus) {
141
+ responseProxy.headers.set(X_RENDER_CACHE, cacheStatus);
142
+ }
143
+ if (redirection.url) {
144
+ headers1 = responseProxy.headers;
145
+ headers1.set("Location", redirection.url);
146
+ return [
147
+ 2,
148
+ new Response(null, {
149
+ status: redirection.status || 302,
150
+ headers: {
151
+ Location: redirection.url
152
+ }
153
+ })
154
+ ];
155
+ }
156
+ return [
157
+ 4,
158
+ import("stream").catch(function(_) {
159
+ return {
160
+ Readable: void 0
161
+ };
162
+ })
163
+ ];
164
+ case 10:
165
+ Readable = _state.sent().Readable;
166
+ streamModule = "../../adapters/node/polyfills/stream";
167
+ if (!(runtimeEnv === "node"))
168
+ return [
169
+ 3,
170
+ 12
171
+ ];
172
+ return [
173
+ 4,
174
+ import(streamModule).catch(function(_) {
175
+ return {
176
+ createReadableStreamFromReadable: void 0
177
+ };
178
+ })
179
+ ];
180
+ case 11:
181
+ _tmp = _state.sent();
182
+ return [
183
+ 3,
184
+ 13
185
+ ];
186
+ case 12:
187
+ _tmp = {
188
+ createReadableStreamFromReadable: void 0
189
+ };
190
+ _state.label = 13;
191
+ case 13:
192
+ createReadableStreamFromReadable = _tmp.createReadableStreamFromReadable;
193
+ data1 = Readable && _instanceof(ssrResult, Readable) ? (createReadableStreamFromReadable === null || createReadableStreamFromReadable === void 0 ? void 0 : createReadableStreamFromReadable(ssrResult)) || "" : ssrResult;
194
+ return [
195
+ 2,
196
+ new Response(data1, {
197
+ status: responseProxy.status,
198
+ headers: responseProxy.headers
199
+ })
200
+ ];
201
+ }
202
+ });
203
+ });
204
+ return _ssrRender.apply(this, arguments);
205
+ }
206
+ var ResponseProxy = function ResponseProxy2() {
207
+ "use strict";
208
+ _class_call_check(this, ResponseProxy2);
209
+ this.headers = new Headers();
210
+ this.status = 200;
211
+ this.headers.set("content-type", "text/html; charset=UTF-8");
212
+ };
213
+ var IncomingMessgeProxy = function IncomingMessgeProxy2(req) {
214
+ "use strict";
215
+ var _this = this;
216
+ _class_call_check(this, IncomingMessgeProxy2);
217
+ this.headers = {};
218
+ req.headers.forEach(function(value, key) {
219
+ _this.headers[key] = value;
220
+ });
221
+ this.method = req.method;
222
+ this.url = new URL(req.url).pathname;
223
+ };
224
+ export {
225
+ ssrRender
226
+ };