@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,212 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var ssrRender_exports = {};
30
+ __export(ssrRender_exports, {
31
+ getPathnameFromNodeReq: () => getPathnameFromNodeReq,
32
+ ssrRender: () => ssrRender
33
+ });
34
+ module.exports = __toCommonJS(ssrRender_exports);
35
+ var import_constants = require("@modern-js/utils/universal/constants");
36
+ var isbot = __toESM(require("isbot"));
37
+ var import_utils = require("../../utils");
38
+ var import_constants2 = require("../../constants");
39
+ var import_serverTiming = require("./serverTiming");
40
+ const defaultReporter = {
41
+ init() {
42
+ },
43
+ reportError() {
44
+ },
45
+ reportTiming() {
46
+ },
47
+ reportInfo() {
48
+ },
49
+ reportWarn() {
50
+ }
51
+ };
52
+ async function ssrRender(request, { routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, metrics }) {
53
+ var _serverManifest_renderBundles;
54
+ const { entryName } = routeInfo;
55
+ const loadableStats = serverManifest.loadableStats || {};
56
+ const routeManifest = serverManifest.routeManifest || {};
57
+ const host = (0, import_utils.getHost)(request);
58
+ const isSpider = isbot.default(request.headers.get("user-agent"));
59
+ const responseProxy = new ResponseProxy();
60
+ const query = (0, import_utils.parseQuery)(request);
61
+ const headers = (0, import_utils.parseHeaders)(request);
62
+ if (nodeReq) {
63
+ for (const key in nodeReq.headers) {
64
+ if (!headers[key]) {
65
+ headers[key] = nodeReq.headers[key];
66
+ }
67
+ }
68
+ }
69
+ const ssrContext = {
70
+ request: {
71
+ baseUrl: routeInfo.urlPath,
72
+ params: {},
73
+ pathname: nodeReq ? getPathnameFromNodeReq(nodeReq) : (0, import_utils.getPathname)(request),
74
+ host,
75
+ query,
76
+ url: nodeReq ? getHrefFromNodeReq(nodeReq) : request.url,
77
+ headers
78
+ },
79
+ response: {
80
+ setHeader(key, value) {
81
+ responseProxy.headers.set(key, value);
82
+ },
83
+ status(code) {
84
+ responseProxy.status = code;
85
+ },
86
+ locals: locals || {}
87
+ },
88
+ redirection: {},
89
+ template: html,
90
+ loadableStats,
91
+ routeManifest,
92
+ entryName,
93
+ staticGenerate,
94
+ logger,
95
+ metrics,
96
+ serverTiming: new import_serverTiming.ServerTiming(responseProxy.headers, metaName),
97
+ reporter: reporter || defaultReporter,
98
+ /** @deprecated node req */
99
+ req: nodeReq || request,
100
+ /** @deprecated node res */
101
+ res: void 0,
102
+ isSpider,
103
+ nonce
104
+ };
105
+ const renderBundle = (_serverManifest_renderBundles = serverManifest.renderBundles) === null || _serverManifest_renderBundles === void 0 ? void 0 : _serverManifest_renderBundles[entryName || import_constants.MAIN_ENTRY_NAME];
106
+ if (!renderBundle) {
107
+ throw new Error(`Can't found renderBundle ${entryName || import_constants.MAIN_ENTRY_NAME}`);
108
+ }
109
+ const runtimeEnv = (0, import_utils.getRuntimeEnv)();
110
+ let ssrResult;
111
+ let cacheStatus;
112
+ const render = renderBundle[import_constants.SERVER_RENDER_FUNCTION_NAME];
113
+ if (runtimeEnv === "node") {
114
+ const cacheModuleName = "./ssrCache";
115
+ const { ssrCache } = await Promise.resolve().then(() => __toESM(require(cacheModuleName)));
116
+ const incomingMessage = nodeReq ? nodeReq : new IncomingMessgeProxy(request);
117
+ const cacheControl = await ssrCache.matchCacheControl(incomingMessage);
118
+ if (cacheControl) {
119
+ const { data: data2, status } = await ssrCache.getCache(request, cacheControl, render, ssrContext);
120
+ ssrResult = data2;
121
+ cacheStatus = status;
122
+ } else {
123
+ ssrResult = await render(ssrContext);
124
+ }
125
+ } else {
126
+ ssrResult = await render(ssrContext);
127
+ }
128
+ const { redirection } = ssrContext;
129
+ if (cacheStatus) {
130
+ responseProxy.headers.set(import_constants2.X_RENDER_CACHE, cacheStatus);
131
+ }
132
+ if (redirection.url) {
133
+ const { headers: headers2 } = responseProxy;
134
+ headers2.set("Location", redirection.url);
135
+ return new Response(null, {
136
+ status: redirection.status || 302,
137
+ headers: {
138
+ Location: redirection.url
139
+ }
140
+ });
141
+ }
142
+ const { Readable } = await Promise.resolve().then(() => __toESM(require("stream"))).catch((_) => ({
143
+ Readable: void 0
144
+ }));
145
+ const streamModule = "../../adapters/node/polyfills/stream";
146
+ const { createReadableStreamFromReadable } = runtimeEnv === "node" ? await Promise.resolve().then(() => __toESM(require(streamModule))).catch((_) => ({
147
+ createReadableStreamFromReadable: void 0
148
+ })) : {
149
+ createReadableStreamFromReadable: void 0
150
+ };
151
+ const data = Readable && ssrResult instanceof Readable ? (createReadableStreamFromReadable === null || createReadableStreamFromReadable === void 0 ? void 0 : createReadableStreamFromReadable(ssrResult)) || "" : ssrResult;
152
+ if (typeof data !== "string") {
153
+ responseProxy.headers.set("transfer-encoding", "chunked");
154
+ }
155
+ return new Response(data, {
156
+ status: responseProxy.status,
157
+ headers: responseProxy.headers
158
+ });
159
+ }
160
+ class ResponseProxy {
161
+ constructor() {
162
+ this.headers = new Headers();
163
+ this.status = 200;
164
+ this.headers.set("content-type", "text/html; charset=UTF-8");
165
+ }
166
+ }
167
+ class IncomingMessgeProxy {
168
+ constructor(req) {
169
+ this.headers = {};
170
+ req.headers.forEach((value, key) => {
171
+ this.headers[key] = value;
172
+ });
173
+ this.method = req.method;
174
+ this.url = (0, import_utils.getPathname)(req);
175
+ }
176
+ }
177
+ function getHrefFromNodeReq(nodeReq) {
178
+ function getProtocal() {
179
+ if (nodeReq.socket.encrypted) {
180
+ return "https";
181
+ }
182
+ const proto = nodeReq.headers["x-forwarded-proto"];
183
+ return proto ? proto.split(/\s*,\s*/, 1)[0] : "http";
184
+ }
185
+ function getHost2() {
186
+ let host = nodeReq.headers["x-forwarded-host"];
187
+ if (!host) {
188
+ host = nodeReq.headers.host;
189
+ }
190
+ host = host.split(/\s*,\s*/, 1)[0] || "undefined";
191
+ return host;
192
+ }
193
+ const href = `${getProtocal()}://${getHost2()}${nodeReq.url || ""}`;
194
+ return href;
195
+ }
196
+ function getPathnameFromNodeReq(nodeReq) {
197
+ const { url } = nodeReq;
198
+ if (!url) {
199
+ return "/";
200
+ }
201
+ const match = url.match(/\/[^?]*/);
202
+ let pathname = match ? match[0] : "/";
203
+ if (pathname !== "/" && pathname.endsWith("/")) {
204
+ pathname = pathname.slice(0, -1);
205
+ }
206
+ return pathname;
207
+ }
208
+ // Annotate the CommonJS export names for ESM import in node:
209
+ 0 && (module.exports = {
210
+ getPathnameFromNodeReq,
211
+ ssrRender
212
+ });
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var serverBase_exports = {};
30
+ __export(serverBase_exports, {
31
+ ServerBase: () => ServerBase,
32
+ createServerBase: () => createServerBase
33
+ });
34
+ module.exports = __toCommonJS(serverBase_exports);
35
+ var import_constants = require("@modern-js/utils/universal/constants");
36
+ var import_hono = require("hono");
37
+ var import_core = require("../core");
38
+ var import_utils = require("./utils");
39
+ class ServerBase {
40
+ /**
41
+ * 初始化顺序
42
+ * - 获取 server runtime config
43
+ * - 设置 context
44
+ * - 创建 hooksRunner
45
+ * - 合并插件,内置插件和 serverConfig 中配置的插件
46
+ * - 执行 config hook
47
+ * - 获取最终的配置
48
+ * - 设置配置到 context
49
+ * - 执行 prepare hook
50
+ */
51
+ async init() {
52
+ const { options } = this;
53
+ const runtimeEnv = (0, import_utils.getRuntimeEnv)();
54
+ runtimeEnv === "node" && await this.initServerConfig(options);
55
+ await this.injectContext(options);
56
+ this.runner = await this.createHookRunner();
57
+ runtimeEnv === "node" && await this.initConfig(this.runner, options);
58
+ await this.injectContext(options);
59
+ await this.runner.prepare();
60
+ return this;
61
+ }
62
+ async createHookRunner() {
63
+ import_core.serverManager.clear();
64
+ const runtimeEnv = (0, import_utils.getRuntimeEnv)();
65
+ const internalPlugins = runtimeEnv === "node" ? await this.loadInternalPlugins() : [];
66
+ const externalPlugins = this.loadExternalPlugins();
67
+ const loadedPlugins = [
68
+ ...internalPlugins,
69
+ ...externalPlugins
70
+ ];
71
+ loadedPlugins.forEach((p) => {
72
+ import_core.serverManager.usePlugin(p);
73
+ });
74
+ const hooksRunner = await import_core.serverManager.init();
75
+ return hooksRunner;
76
+ }
77
+ async loadInternalPlugins() {
78
+ const { internalPlugins: plugins = import_constants.INTERNAL_SERVER_PLUGINS, appContext, pwd } = this.options;
79
+ const loadPluginsModule = "../core/loadPlugins";
80
+ const { loadPlugins } = await Promise.resolve().then(() => __toESM(require(loadPluginsModule)));
81
+ const internalPlugins = loadPlugins(appContext.appDirectory || pwd, plugins);
82
+ return internalPlugins;
83
+ }
84
+ loadExternalPlugins() {
85
+ const { plugins = [] } = this.options;
86
+ const configPlugins = this.serverConfig.plugins || [];
87
+ const externalPlugins = [
88
+ ...plugins,
89
+ ...configPlugins
90
+ ];
91
+ return externalPlugins.map((plugin) => (0, import_core.createPlugin)(plugin.setup, plugin));
92
+ }
93
+ async initServerConfig(options) {
94
+ const { pwd, serverConfigFile } = options;
95
+ const utilsModuleName = "./utils/serverConfig";
96
+ const { getServerConfigPath, requireConfig } = await Promise.resolve().then(() => __toESM(require(utilsModuleName)));
97
+ const serverConfigPath = await getServerConfigPath(pwd, serverConfigFile);
98
+ const serverConfig = requireConfig(serverConfigPath);
99
+ this.serverConfig = serverConfig;
100
+ }
101
+ async injectContext(options) {
102
+ const appContext = await this.initAppContext();
103
+ const { config, pwd } = options;
104
+ import_core.ConfigContext.set(config);
105
+ import_core.AppContext.set({
106
+ ...appContext,
107
+ serverBase: this,
108
+ distDirectory: pwd
109
+ });
110
+ }
111
+ async initAppContext() {
112
+ const { options } = this;
113
+ const { pwd, plugins = [], appContext } = options;
114
+ const serverPlugins = plugins.map((p) => ({
115
+ server: p
116
+ }));
117
+ return {
118
+ appDirectory: (appContext === null || appContext === void 0 ? void 0 : appContext.appDirectory) || "",
119
+ apiDirectory: appContext === null || appContext === void 0 ? void 0 : appContext.apiDirectory,
120
+ lambdaDirectory: appContext === null || appContext === void 0 ? void 0 : appContext.lambdaDirectory,
121
+ sharedDirectory: appContext.sharedDirectory || "",
122
+ distDirectory: pwd,
123
+ plugins: serverPlugins
124
+ };
125
+ }
126
+ /**
127
+ * Execute config hooks
128
+ * @param runner
129
+ * @param options
130
+ */
131
+ runConfigHook(runner, serverConfig) {
132
+ const newServerConfig = runner.config(serverConfig || {});
133
+ return newServerConfig;
134
+ }
135
+ async initConfig(runner, options) {
136
+ const path = await Promise.resolve().then(() => __toESM(require("path"))).catch((_) => {
137
+ return {};
138
+ });
139
+ const utilsModuleName = "@modern-js/utils";
140
+ const { ensureAbsolutePath, OUTPUT_CONFIG_FILE } = await Promise.resolve().then(() => __toESM(require(utilsModuleName)));
141
+ const configModuleName = "./utils/serverConfig";
142
+ const { loadConfig } = await Promise.resolve().then(() => __toESM(require(configModuleName)));
143
+ const { pwd, config } = options;
144
+ const { serverConfig } = this;
145
+ const finalServerConfig = this.runConfigHook(runner, serverConfig);
146
+ const resolvedConfigPath = ensureAbsolutePath(pwd, path.join(config.output.path || "dist", OUTPUT_CONFIG_FILE));
147
+ options.config = loadConfig({
148
+ cliConfig: config,
149
+ serverConfig: finalServerConfig,
150
+ resolvedConfigPath
151
+ });
152
+ }
153
+ get all() {
154
+ return this.app.all.bind(this.app);
155
+ }
156
+ get use() {
157
+ return this.app.use.bind(this.app);
158
+ }
159
+ get get() {
160
+ return this.app.get.bind(this.app);
161
+ }
162
+ get post() {
163
+ return this.app.post.bind(this.app);
164
+ }
165
+ get put() {
166
+ return this.app.put.bind(this.app);
167
+ }
168
+ get delete() {
169
+ return this.app.delete.bind(this.app);
170
+ }
171
+ get patch() {
172
+ return this.app.patch.bind(this.app);
173
+ }
174
+ get handle() {
175
+ return this.app.fetch.bind(this.app);
176
+ }
177
+ get request() {
178
+ return this.app.request.bind(this.app);
179
+ }
180
+ get notFound() {
181
+ return this.app.notFound.bind(this.app);
182
+ }
183
+ get onError() {
184
+ return this.app.onError.bind(this.app);
185
+ }
186
+ constructor(options) {
187
+ this.serverConfig = {};
188
+ this.options = options;
189
+ this.app = new import_hono.Hono();
190
+ }
191
+ }
192
+ function createServerBase(options) {
193
+ if (options == null) {
194
+ throw new Error("can not start server without options");
195
+ }
196
+ const server = new ServerBase(options);
197
+ return server;
198
+ }
199
+ // Annotate the CommonJS export names for ESM import in node:
200
+ 0 && (module.exports = {
201
+ ServerBase,
202
+ createServerBase
203
+ });
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var debug_exports = {};
20
+ __export(debug_exports, {
21
+ debug: () => debug
22
+ });
23
+ module.exports = __toCommonJS(debug_exports);
24
+ var import_utils = require("@modern-js/utils");
25
+ const debug = (0, import_utils.createDebugger)("prod-server");
26
+ // Annotate the CommonJS export names for ESM import in node:
27
+ 0 && (module.exports = {
28
+ debug
29
+ });
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var entry_exports = {};
20
+ __export(entry_exports, {
21
+ sortRoutes: () => sortRoutes
22
+ });
23
+ module.exports = __toCommonJS(entry_exports);
24
+ const sortRoutes = (route1, route2) => {
25
+ return route2.urlPath.length - route1.urlPath.length;
26
+ };
27
+ // Annotate the CommonJS export names for ESM import in node:
28
+ 0 && (module.exports = {
29
+ sortRoutes
30
+ });
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var env_exports = {};
20
+ __export(env_exports, {
21
+ checkIsProd: () => checkIsProd,
22
+ getRuntimeEnv: () => getRuntimeEnv
23
+ });
24
+ module.exports = __toCommonJS(env_exports);
25
+ const getRuntimeEnv = () => {
26
+ var _globalThis_process_release, _globalThis_process, _globalThis;
27
+ if (((_globalThis = globalThis) === null || _globalThis === void 0 ? void 0 : (_globalThis_process = _globalThis.process) === null || _globalThis_process === void 0 ? void 0 : (_globalThis_process_release = _globalThis_process.release) === null || _globalThis_process_release === void 0 ? void 0 : _globalThis_process_release.name) === "node") {
28
+ return "node";
29
+ }
30
+ return "other";
31
+ };
32
+ const checkIsProd = () => {
33
+ const env = getRuntimeEnv();
34
+ switch (env) {
35
+ case "node":
36
+ return process.env.NODE_ENV === "production";
37
+ default:
38
+ return false;
39
+ }
40
+ };
41
+ // Annotate the CommonJS export names for ESM import in node:
42
+ 0 && (module.exports = {
43
+ checkIsProd,
44
+ getRuntimeEnv
45
+ });
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var error_exports = {};
20
+ __export(error_exports, {
21
+ createErrorHtml: () => createErrorHtml
22
+ });
23
+ module.exports = __toCommonJS(error_exports);
24
+ const ERROR_PAGE_TEXT = {
25
+ 404: "This page could not be found.",
26
+ 500: "Internal Server Error."
27
+ };
28
+ const createErrorHtml = (status) => {
29
+ const text = ERROR_PAGE_TEXT[status] || "";
30
+ const title = `${status}: ${text}`;
31
+ return `<!DOCTYPE html>
32
+ <html lang="en">
33
+ <head>
34
+ <meta charset="utf-8">
35
+ <meta name="viewport" content="width=device-width">
36
+ <title>${title}</title>
37
+ <style>
38
+ html,body {
39
+ margin: 0;
40
+ }
41
+
42
+ .page-container {
43
+ color: #000;
44
+ background: #fff;
45
+ height: 100vh;
46
+ text-align: center;
47
+ display: flex;
48
+ flex-direction: column;
49
+ align-items: center;
50
+ justify-content: center;
51
+ }
52
+ </style>
53
+ </head>
54
+ <body>
55
+ <div class="page-container">
56
+ <h1>${status}</h1>
57
+ <div>${text}</div>
58
+ </body>
59
+ </html>
60
+ `;
61
+ };
62
+ // Annotate the CommonJS export names for ESM import in node:
63
+ 0 && (module.exports = {
64
+ createErrorHtml
65
+ });
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
+ var utils_exports = {};
17
+ module.exports = __toCommonJS(utils_exports);
18
+ __reExport(utils_exports, require("./env"), module.exports);
19
+ __reExport(utils_exports, require("./request"), module.exports);
20
+ __reExport(utils_exports, require("./transformStream"), module.exports);
21
+ __reExport(utils_exports, require("./middlewareCollector"), module.exports);
22
+ __reExport(utils_exports, require("./error"), module.exports);
23
+ __reExport(utils_exports, require("./warmup"), module.exports);
24
+ __reExport(utils_exports, require("./entry"), module.exports);
25
+ // Annotate the CommonJS export names for ESM import in node:
26
+ 0 && (module.exports = {
27
+ ...require("./env"),
28
+ ...require("./request"),
29
+ ...require("./transformStream"),
30
+ ...require("./middlewareCollector"),
31
+ ...require("./error"),
32
+ ...require("./warmup"),
33
+ ...require("./entry")
34
+ });
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var middlewareCollector_exports = {};
20
+ __export(middlewareCollector_exports, {
21
+ createMiddlewareCollecter: () => createMiddlewareCollecter,
22
+ mergeExtension: () => mergeExtension
23
+ });
24
+ module.exports = __toCommonJS(middlewareCollector_exports);
25
+ const mergeExtension = (users) => {
26
+ const output = [];
27
+ return {
28
+ middleware: output.concat(users)
29
+ };
30
+ };
31
+ const createMiddlewareCollecter = () => {
32
+ const webMiddlewares = [];
33
+ const apiMiddlewares = [];
34
+ const addWebMiddleware = (input) => {
35
+ webMiddlewares.push(input);
36
+ };
37
+ const addAPIMiddleware = (input) => {
38
+ apiMiddlewares.push(input);
39
+ };
40
+ const getMiddlewares = () => ({
41
+ web: webMiddlewares,
42
+ api: apiMiddlewares
43
+ });
44
+ return {
45
+ getMiddlewares,
46
+ addWebMiddleware,
47
+ addAPIMiddleware
48
+ };
49
+ };
50
+ // Annotate the CommonJS export names for ESM import in node:
51
+ 0 && (module.exports = {
52
+ createMiddlewareCollecter,
53
+ mergeExtension
54
+ });