@modern-js/prod-server 2.35.0 → 2.36.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 (151) hide show
  1. package/dist/cjs/constants.js +33 -27
  2. package/dist/cjs/index.js +41 -33
  3. package/dist/cjs/libs/context/context.js +86 -36
  4. package/dist/cjs/libs/context/index.js +27 -17
  5. package/dist/cjs/libs/hook-api/base.js +49 -30
  6. package/dist/cjs/libs/hook-api/index.js +36 -28
  7. package/dist/cjs/libs/hook-api/index.worker.js +39 -31
  8. package/dist/cjs/libs/hook-api/route.js +28 -11
  9. package/dist/cjs/libs/hook-api/template.js +27 -17
  10. package/dist/cjs/libs/hook-api/templateForStream.js +31 -14
  11. package/dist/cjs/libs/loadConfig.js +46 -29
  12. package/dist/cjs/libs/metrics.js +24 -7
  13. package/dist/cjs/libs/preload/flushServerHeader.js +30 -13
  14. package/dist/cjs/libs/preload/index.js +22 -5
  15. package/dist/cjs/libs/preload/parseLinks.js +54 -30
  16. package/dist/cjs/libs/preload/shouldFlushServerHeader.js +25 -15
  17. package/dist/cjs/libs/preload/transformLinks2String.js +27 -11
  18. package/dist/cjs/libs/proxy.js +29 -19
  19. package/dist/cjs/libs/render/cache/__tests__/cache.fun.test.js +40 -22
  20. package/dist/cjs/libs/render/cache/__tests__/cache.test.js +33 -41
  21. package/dist/cjs/libs/render/cache/__tests__/cacheable.js +24 -7
  22. package/dist/cjs/libs/render/cache/__tests__/error-configuration.js +24 -7
  23. package/dist/cjs/libs/render/cache/__tests__/matched-cache.js +24 -7
  24. package/dist/cjs/libs/render/cache/index.js +30 -18
  25. package/dist/cjs/libs/render/cache/page-caches/index.js +26 -9
  26. package/dist/cjs/libs/render/cache/page-caches/lru.js +39 -13
  27. package/dist/cjs/libs/render/cache/spr.js +62 -44
  28. package/dist/cjs/libs/render/cache/type.js +15 -3
  29. package/dist/cjs/libs/render/cache/util.js +49 -36
  30. package/dist/cjs/libs/render/index.js +56 -30
  31. package/dist/cjs/libs/render/measure.js +27 -17
  32. package/dist/cjs/libs/render/reader.js +50 -35
  33. package/dist/cjs/libs/render/ssr.js +52 -26
  34. package/dist/cjs/libs/render/static.js +44 -18
  35. package/dist/cjs/libs/render/type.js +24 -7
  36. package/dist/cjs/libs/render/utils.js +29 -19
  37. package/dist/cjs/libs/reporter.js +24 -7
  38. package/dist/cjs/libs/route/index.js +30 -20
  39. package/dist/cjs/libs/route/matcher.js +37 -20
  40. package/dist/cjs/libs/route/route.js +34 -17
  41. package/dist/cjs/libs/serveFile.js +40 -21
  42. package/dist/cjs/libs/serverTiming.js +27 -10
  43. package/dist/cjs/renderHtml.js +17 -20
  44. package/dist/cjs/server/index.js +74 -50
  45. package/dist/cjs/server/modernServer.js +136 -113
  46. package/dist/cjs/server/modernServerSplit.js +29 -12
  47. package/dist/cjs/type.js +15 -3
  48. package/dist/cjs/utils.js +41 -38
  49. package/dist/cjs/workerServer.js +48 -39
  50. package/dist/esm/constants.js +14 -6
  51. package/dist/esm/index.js +11 -5
  52. package/dist/esm/libs/context/context.js +33 -6
  53. package/dist/esm/libs/context/index.js +5 -2
  54. package/dist/esm/libs/hook-api/base.js +6 -2
  55. package/dist/esm/libs/hook-api/index.js +11 -5
  56. package/dist/esm/libs/hook-api/index.worker.js +16 -10
  57. package/dist/esm/libs/hook-api/route.js +4 -1
  58. package/dist/esm/libs/hook-api/template.js +6 -2
  59. package/dist/esm/libs/hook-api/templateForStream.js +4 -1
  60. package/dist/esm/libs/loadConfig.js +8 -3
  61. package/dist/esm/libs/metrics.js +3 -1
  62. package/dist/esm/libs/preload/flushServerHeader.js +9 -6
  63. package/dist/esm/libs/preload/parseLinks.js +13 -11
  64. package/dist/esm/libs/preload/shouldFlushServerHeader.js +6 -2
  65. package/dist/esm/libs/preload/transformLinks2String.js +5 -3
  66. package/dist/esm/libs/proxy.js +9 -5
  67. package/dist/esm/libs/render/cache/__tests__/cache.test.js +12 -12
  68. package/dist/esm/libs/render/cache/__tests__/cacheable.js +4 -1
  69. package/dist/esm/libs/render/cache/__tests__/error-configuration.js +4 -1
  70. package/dist/esm/libs/render/cache/__tests__/matched-cache.js +4 -1
  71. package/dist/esm/libs/render/cache/index.js +6 -3
  72. package/dist/esm/libs/render/cache/page-caches/index.js +5 -2
  73. package/dist/esm/libs/render/cache/page-caches/lru.js +4 -1
  74. package/dist/esm/libs/render/cache/spr.js +13 -9
  75. package/dist/esm/libs/render/cache/type.js +0 -1
  76. package/dist/esm/libs/render/cache/util.js +18 -8
  77. package/dist/esm/libs/render/index.js +17 -11
  78. package/dist/esm/libs/render/measure.js +15 -11
  79. package/dist/esm/libs/render/reader.js +17 -10
  80. package/dist/esm/libs/render/ssr.js +11 -8
  81. package/dist/esm/libs/render/static.js +5 -2
  82. package/dist/esm/libs/render/type.js +4 -1
  83. package/dist/esm/libs/render/utils.js +6 -2
  84. package/dist/esm/libs/reporter.js +4 -1
  85. package/dist/esm/libs/route/index.js +5 -2
  86. package/dist/esm/libs/route/matcher.js +6 -3
  87. package/dist/esm/libs/route/route.js +4 -1
  88. package/dist/esm/libs/serveFile.js +6 -2
  89. package/dist/esm/libs/serverTiming.js +4 -1
  90. package/dist/esm/renderHtml.js +133 -124
  91. package/dist/esm/server/index.js +14 -13
  92. package/dist/esm/server/modernServer.js +39 -47
  93. package/dist/esm/server/modernServerSplit.js +4 -1
  94. package/dist/esm/type.js +0 -1
  95. package/dist/esm/utils.js +23 -12
  96. package/dist/esm/workerServer.js +25 -22
  97. package/dist/esm-node/constants.js +14 -6
  98. package/dist/esm-node/index.js +11 -5
  99. package/dist/esm-node/libs/context/context.js +33 -6
  100. package/dist/esm-node/libs/context/index.js +5 -2
  101. package/dist/esm-node/libs/hook-api/base.js +6 -2
  102. package/dist/esm-node/libs/hook-api/index.js +10 -4
  103. package/dist/esm-node/libs/hook-api/index.worker.js +10 -4
  104. package/dist/esm-node/libs/hook-api/route.js +4 -1
  105. package/dist/esm-node/libs/hook-api/template.js +6 -2
  106. package/dist/esm-node/libs/hook-api/templateForStream.js +4 -1
  107. package/dist/esm-node/libs/loadConfig.js +8 -3
  108. package/dist/esm-node/libs/metrics.js +3 -1
  109. package/dist/esm-node/libs/preload/flushServerHeader.js +6 -3
  110. package/dist/esm-node/libs/preload/parseLinks.js +11 -9
  111. package/dist/esm-node/libs/preload/shouldFlushServerHeader.js +6 -2
  112. package/dist/esm-node/libs/preload/transformLinks2String.js +5 -3
  113. package/dist/esm-node/libs/proxy.js +6 -2
  114. package/dist/esm-node/libs/render/cache/__tests__/cache.test.js +7 -12
  115. package/dist/esm-node/libs/render/cache/__tests__/cacheable.js +4 -1
  116. package/dist/esm-node/libs/render/cache/__tests__/error-configuration.js +4 -1
  117. package/dist/esm-node/libs/render/cache/__tests__/matched-cache.js +4 -1
  118. package/dist/esm-node/libs/render/cache/index.js +5 -3
  119. package/dist/esm-node/libs/render/cache/page-caches/index.js +4 -1
  120. package/dist/esm-node/libs/render/cache/page-caches/lru.js +4 -1
  121. package/dist/esm-node/libs/render/cache/spr.js +7 -4
  122. package/dist/esm-node/libs/render/cache/type.js +0 -1
  123. package/dist/esm-node/libs/render/cache/util.js +18 -8
  124. package/dist/esm-node/libs/render/index.js +7 -3
  125. package/dist/esm-node/libs/render/measure.js +6 -2
  126. package/dist/esm-node/libs/render/reader.js +13 -7
  127. package/dist/esm-node/libs/render/ssr.js +4 -1
  128. package/dist/esm-node/libs/render/static.js +4 -1
  129. package/dist/esm-node/libs/render/type.js +4 -1
  130. package/dist/esm-node/libs/render/utils.js +6 -2
  131. package/dist/esm-node/libs/reporter.js +4 -1
  132. package/dist/esm-node/libs/route/index.js +5 -2
  133. package/dist/esm-node/libs/route/matcher.js +6 -3
  134. package/dist/esm-node/libs/route/route.js +4 -1
  135. package/dist/esm-node/libs/serveFile.js +6 -2
  136. package/dist/esm-node/libs/serverTiming.js +4 -1
  137. package/dist/esm-node/renderHtml.js +72 -63
  138. package/dist/esm-node/server/index.js +11 -10
  139. package/dist/esm-node/server/modernServer.js +29 -28
  140. package/dist/esm-node/server/modernServerSplit.js +4 -1
  141. package/dist/esm-node/type.js +0 -1
  142. package/dist/esm-node/utils.js +20 -9
  143. package/dist/esm-node/workerServer.js +12 -9
  144. package/dist/types/libs/context/context.d.ts +2 -1
  145. package/dist/types/type.d.ts +1 -0
  146. package/dist/types/utils.d.ts +1 -1
  147. package/package.json +9 -8
  148. package/dist/cjs/libs/logger.js +0 -123
  149. package/dist/esm/libs/logger.js +0 -125
  150. package/dist/esm-node/libs/logger.js +0 -106
  151. package/dist/types/libs/logger.d.ts +0 -61
@@ -1,46 +1,67 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
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 modernServer_exports = {};
30
+ __export(modernServer_exports, {
31
+ ModernServer: () => ModernServer
4
32
  });
5
- Object.defineProperty(exports, "ModernServer", {
6
- enumerable: true,
7
- get: function() {
8
- return ModernServer;
9
- }
10
- });
11
- const _define_property = require("@swc/helpers/_/_define_property");
12
- const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
13
- const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
14
- const _http = require("http");
15
- const _path = /* @__PURE__ */ _interop_require_default._(require("path"));
16
- const _utils = require("@modern-js/utils");
17
- const _time = require("@modern-js/utils/universal/time");
18
- const _route = require("../libs/route");
19
- const _render = require("../libs/render");
20
- const _serveFile = require("../libs/serveFile");
21
- const _utils1 = require("../utils");
22
- const _reader = /* @__PURE__ */ _interop_require_wildcard._(require("../libs/render/reader"));
23
- const _proxy = require("../libs/proxy");
24
- const _context = require("../libs/context");
25
- const _constants = require("../constants");
26
- const _hookapi = require("../libs/hook-api");
33
+ module.exports = __toCommonJS(modernServer_exports);
34
+ var import_define_property = require("@swc/helpers/_/_define_property");
35
+ var import_http = require("http");
36
+ var import_path = __toESM(require("path"));
37
+ var import_utils = require("@modern-js/utils");
38
+ var import_time = require("@modern-js/runtime-utils/time");
39
+ var import_route = require("../libs/route");
40
+ var import_render = require("../libs/render");
41
+ var import_serveFile = require("../libs/serveFile");
42
+ var import_utils2 = require("../utils");
43
+ var reader = __toESM(require("../libs/render/reader"));
44
+ var import_proxy = require("../libs/proxy");
45
+ var import_context = require("../libs/context");
46
+ var import_constants = require("../constants");
47
+ var import_hook_api = require("../libs/hook-api");
27
48
  const SERVER_DIR = "./server";
28
49
  class ModernServer {
29
50
  // server prepare
30
51
  async onInit(runner, app) {
31
- var _conf_bff, _app, _this_conf_output;
52
+ var _conf_bff, _this_conf_output;
32
53
  this.runner = runner;
33
54
  const { distDir, conf } = this;
34
55
  this.initReader();
35
- (0, _utils1.debug)("final server conf", this.conf);
56
+ (0, import_utils2.debug)("final server conf", this.conf);
36
57
  if ((_conf_bff = conf.bff) === null || _conf_bff === void 0 ? void 0 : _conf_bff.proxy) {
37
- const { handlers, handleUpgrade } = (0, _proxy.createProxyHandler)(conf.bff.proxy);
58
+ const { handlers, handleUpgrade } = (0, import_proxy.createProxyHandler)(conf.bff.proxy);
38
59
  app && handleUpgrade(app);
39
60
  handlers.forEach((handler) => {
40
61
  this.addHandler(handler);
41
62
  });
42
63
  }
43
- (_app = app) === null || _app === void 0 ? void 0 : _app.on("close", () => {
64
+ app === null || app === void 0 ? void 0 : app.on("close", () => {
44
65
  this.reader.close();
45
66
  });
46
67
  const usageRoutes = this.filterRoutes(this.getRoutes());
@@ -51,7 +72,7 @@ class ModernServer {
51
72
  this.routeRenderHandler = this.getRenderHandler();
52
73
  await this.setupBeforeProdMiddleware();
53
74
  this.addHandler(this.setupStaticMiddleware((_this_conf_output = this.conf.output) === null || _this_conf_output === void 0 ? void 0 : _this_conf_output.assetPrefix));
54
- this.addHandler(_serveFile.faviconFallbackHandler);
75
+ this.addHandler(import_serveFile.faviconFallbackHandler);
55
76
  this.addHandler(this.routeHandler.bind(this));
56
77
  this.compose();
57
78
  }
@@ -60,7 +81,7 @@ class ModernServer {
60
81
  const { distDir, staticGenerate, conf, metaName } = this;
61
82
  const ssrConfig = (_this_conf_server = this.conf.server) === null || _this_conf_server === void 0 ? void 0 : _this_conf_server.ssr;
62
83
  const forceCSR = typeof ssrConfig === "object" ? ssrConfig.forceCSR : false;
63
- return (0, _render.createRenderHandler)({
84
+ return (0, import_render.createRenderHandler)({
64
85
  distDir,
65
86
  staticGenerate,
66
87
  forceCSR,
@@ -79,7 +100,7 @@ class ModernServer {
79
100
  async render(req, res, url) {
80
101
  req.logger = req.logger || this.logger;
81
102
  req.metrics = req.metrics || this.metrics;
82
- const context = (0, _context.createContext)(req, res, {
103
+ const context = (0, import_context.createContext)(req, res, {
83
104
  metaName: this.metaName
84
105
  });
85
106
  const matched = this.router.match(url || context.path);
@@ -98,7 +119,7 @@ class ModernServer {
98
119
  return result.content.toString();
99
120
  }
100
121
  async createHTTPServer(handler) {
101
- return (0, _http.createServer)(handler);
122
+ return (0, import_http.createServer)(handler);
102
123
  }
103
124
  /* —————————————————————— function will be overwrite —————————————————————— */
104
125
  initReader() {
@@ -106,9 +127,9 @@ class ModernServer {
106
127
  }
107
128
  async onServerChange({ filepath }) {
108
129
  const { pwd } = this;
109
- const { api, server } = _constants.AGGRED_DIR;
110
- const apiPath = _path.default.normalize(_path.default.join(pwd, api));
111
- const serverPath = _path.default.normalize(_path.default.join(pwd, server));
130
+ const { api, server } = import_constants.AGGRED_DIR;
131
+ const apiPath = import_path.default.normalize(import_path.default.join(pwd, api));
132
+ const serverPath = import_path.default.normalize(import_path.default.join(pwd, server));
112
133
  const onlyApi = filepath.startsWith(apiPath);
113
134
  const onlyWeb = filepath.startsWith(serverPath);
114
135
  await this.prepareFrameHandler({
@@ -121,9 +142,9 @@ class ModernServer {
121
142
  if (this.presetRoutes) {
122
143
  return this.presetRoutes;
123
144
  }
124
- const file = _path.default.join(this.distDir, _utils.ROUTE_SPEC_FILE);
125
- if (_utils.fs.existsSync(file)) {
126
- const content = _utils.fs.readJSONSync(file);
145
+ const file = import_path.default.join(this.distDir, import_utils.ROUTE_SPEC_FILE);
146
+ if (import_utils.fs.existsSync(file)) {
147
+ const content = import_utils.fs.readJSONSync(file);
127
148
  return content.routes;
128
149
  }
129
150
  return [];
@@ -135,7 +156,7 @@ class ModernServer {
135
156
  }
136
157
  // return 404 page
137
158
  render404(context) {
138
- context.error(_constants.ERROR_DIGEST.ENOTF, "404 Not Found");
159
+ context.error(import_constants.ERROR_DIGEST.ENOTF, "404 Not Found");
139
160
  this.renderErrorPage(context, 404);
140
161
  }
141
162
  async prepareLoaderHandler(specs, distDir) {
@@ -152,16 +173,16 @@ class ModernServer {
152
173
  async prepareFrameHandler(options) {
153
174
  const { workDir, runner } = this;
154
175
  const { onlyApi, onlyWeb } = options || {};
155
- const { getMiddlewares, ...collector } = (0, _utils1.createMiddlewareCollecter)();
176
+ const { getMiddlewares, ...collector } = (0, import_utils2.createMiddlewareCollecter)();
156
177
  await runner.gather(collector);
157
178
  const { api: pluginAPIExt, web: pluginWebExt } = getMiddlewares();
158
- const serverDir = _path.default.join(workDir, SERVER_DIR);
159
- if (await _utils.fs.pathExists(_path.default.join(serverDir)) && !onlyApi) {
160
- const webExtension = (0, _utils1.mergeExtension)(pluginWebExt);
179
+ const serverDir = import_path.default.join(workDir, SERVER_DIR);
180
+ if (await import_utils.fs.pathExists(import_path.default.join(serverDir)) && !onlyApi) {
181
+ const webExtension = (0, import_utils2.mergeExtension)(pluginWebExt);
161
182
  this.frameWebHandler = await this.prepareWebHandler(webExtension);
162
183
  }
163
184
  if (!onlyWeb) {
164
- const apiExtension = (0, _utils1.mergeExtension)(pluginAPIExt);
185
+ const apiExtension = (0, import_utils2.mergeExtension)(pluginAPIExt);
165
186
  this.frameAPIHandler = await this.prepareAPIHandler(apiExtension);
166
187
  }
167
188
  }
@@ -176,11 +197,10 @@ class ModernServer {
176
197
  return handler;
177
198
  }
178
199
  async prepareAPIHandler(extension) {
179
- var _bff, _bff1;
180
200
  const { workDir, runner, conf } = this;
181
201
  const { bff } = conf;
182
- const prefix = ((_bff = bff) === null || _bff === void 0 ? void 0 : _bff.prefix) || "/api";
183
- const webOnly = await (0, _utils.isWebOnly)();
202
+ const prefix = (bff === null || bff === void 0 ? void 0 : bff.prefix) || "/api";
203
+ const webOnly = await (0, import_utils.isWebOnly)();
184
204
  if (webOnly && process.env.NODE_ENV === "development") {
185
205
  return (req, res) => {
186
206
  res.setHeader("Content-Type", "text/plain");
@@ -191,7 +211,7 @@ class ModernServer {
191
211
  pwd: workDir,
192
212
  config: extension,
193
213
  prefix: Array.isArray(prefix) ? prefix[0] : prefix,
194
- httpMethodDecider: (_bff1 = bff) === null || _bff1 === void 0 ? void 0 : _bff1.httpMethodDecider,
214
+ httpMethodDecider: bff === null || bff === void 0 ? void 0 : bff.httpMethodDecider,
195
215
  render: this.render.bind(this)
196
216
  }, {
197
217
  onLast: () => null
@@ -208,8 +228,8 @@ class ModernServer {
208
228
  });
209
229
  }
210
230
  setupStaticMiddleware(prefix) {
211
- const staticPathRegExp = (0, _utils1.getStaticReg)(this.conf.output, this.conf.html, prefix);
212
- return (0, _serveFile.createStaticFileHandler)([
231
+ const staticPathRegExp = (0, import_utils2.getStaticReg)(this.conf.output, this.conf.html, prefix);
232
+ return (0, import_serveFile.createStaticFileHandler)([
213
233
  {
214
234
  path: staticPathRegExp,
215
235
  target: this.distDir
@@ -271,14 +291,14 @@ class ModernServer {
271
291
  const { distDir } = this;
272
292
  const bundles = this.router.getBundles();
273
293
  bundles.forEach((bundle) => {
274
- const filepath = _path.default.join(distDir, bundle);
275
- if (_utils.fs.existsSync(filepath)) {
294
+ const filepath = import_path.default.join(distDir, bundle);
295
+ if (import_utils.fs.existsSync(filepath)) {
276
296
  require(filepath);
277
297
  }
278
298
  });
279
299
  }
280
300
  createContext(req, res, options = {}) {
281
- return (0, _context.createContext)(req, res, options);
301
+ return (0, import_context.createContext)(req, res, options);
282
302
  }
283
303
  /* —————————————————————— private function —————————————————————— */
284
304
  // handler route.json, include api / csr / ssr
@@ -292,26 +312,24 @@ class ModernServer {
292
312
  await reporter.init({
293
313
  match: matched
294
314
  });
295
- const end = (0, _time.time)();
315
+ const end = (0, import_time.time)();
296
316
  res.on("finish", () => {
297
317
  const cost = end();
298
- reporter.reportTiming(_constants.ServerReportTimings.SERVER_HANDLE_REQUEST, cost);
318
+ reporter.reportTiming(import_constants.ServerReportTimings.SERVER_HANDLE_REQUEST, cost);
299
319
  });
300
320
  let route = matched.generate(context.url);
301
321
  if (route.isApi) {
302
322
  await this.handleAPI(context);
303
323
  return;
304
324
  }
305
- if (route.entryName) {
306
- const afterMatchContext = (0, _hookapi.createAfterMatchContext)(context, route.entryName);
307
- if (this.runMode === _constants.RUN_MODE.FULL) {
308
- const end2 = (0, _time.time)();
309
- await this.runner.afterMatch(afterMatchContext, {
310
- onLast: _utils1.noop
311
- });
312
- const cost = end2();
313
- cost && reporter.reportTiming(_constants.ServerReportTimings.SERVER_HOOK_AFTER_MATCH, cost);
314
- }
325
+ if (route.entryName && this.runMode === import_constants.RUN_MODE.FULL) {
326
+ const afterMatchContext = (0, import_hook_api.createAfterMatchContext)(context, route.entryName);
327
+ const end2 = (0, import_time.time)();
328
+ await this.runner.afterMatch(afterMatchContext, {
329
+ onLast: import_utils2.noop
330
+ });
331
+ const cost = end2();
332
+ cost && reporter.reportTiming(import_constants.ServerReportTimings.SERVER_HOOK_AFTER_MATCH, cost);
315
333
  if (this.isSend(res)) {
316
334
  return;
317
335
  }
@@ -331,11 +349,11 @@ class ModernServer {
331
349
  }
332
350
  if (this.frameWebHandler) {
333
351
  res.locals = res.locals || {};
334
- const middlewareContext = (0, _hookapi.createMiddlewareContext)(context);
335
- const end2 = (0, _time.time)();
352
+ const middlewareContext = (0, import_hook_api.createMiddlewareContext)(context);
353
+ const end2 = (0, import_time.time)();
336
354
  await this.frameWebHandler(middlewareContext);
337
355
  const cost = end2();
338
- cost && reporter.reportTiming(_constants.ServerReportTimings.SERVER_MIDDLEWARE, cost);
356
+ cost && reporter.reportTiming(import_constants.ServerReportTimings.SERVER_MIDDLEWARE, cost);
339
357
  res.locals = {
340
358
  ...res.locals,
341
359
  ...middlewareContext.response.locals
@@ -354,16 +372,14 @@ class ModernServer {
354
372
  responseStream.pipe(res);
355
373
  return;
356
374
  }
357
- if (route.entryName) {
358
- const afterRenderContext = (0, _hookapi.createAfterRenderContext)(context, response.toString());
359
- if (this.runMode === _constants.RUN_MODE.FULL) {
360
- const end2 = (0, _time.time)();
361
- await this.runner.afterRender(afterRenderContext, {
362
- onLast: _utils1.noop
363
- });
364
- const cost = end2();
365
- cost && reporter.reportTiming(_constants.ServerReportTimings.SERVER_HOOK_AFTER_RENDER, cost);
366
- }
375
+ if (route.entryName && this.runMode === import_constants.RUN_MODE.FULL) {
376
+ const afterRenderContext = (0, import_hook_api.createAfterRenderContext)(context, response.toString());
377
+ const end2 = (0, import_time.time)();
378
+ await this.runner.afterRender(afterRenderContext, {
379
+ onLast: import_utils2.noop
380
+ });
381
+ const cost = end2();
382
+ cost && reporter.reportTiming(import_constants.ServerReportTimings.SERVER_HOOK_AFTER_RENDER, cost);
367
383
  if (this.isSend(res)) {
368
384
  return;
369
385
  }
@@ -372,10 +388,14 @@ class ModernServer {
372
388
  res.end(response);
373
389
  }
374
390
  isSend(res) {
375
- if (res.writableEnded) {
391
+ if (res.modernFlushedHeaders) {
392
+ if (res.writableFinished) {
393
+ return true;
394
+ }
395
+ } else if (res.headersSent) {
376
396
  return true;
377
397
  }
378
- if (res.getHeader("Location") && (0, _utils1.isRedirect)(res.statusCode)) {
398
+ if (res.getHeader("Location") && (0, import_utils2.isRedirect)(res.statusCode)) {
379
399
  res.end();
380
400
  return true;
381
401
  }
@@ -404,7 +424,7 @@ class ModernServer {
404
424
  }
405
425
  try {
406
426
  const result = handler(context, dispatch);
407
- if ((0, _utils.isPromise)(result)) {
427
+ if ((0, import_utils.isPromise)(result)) {
408
428
  return result.catch(onError);
409
429
  }
410
430
  } catch (e) {
@@ -430,8 +450,8 @@ class ModernServer {
430
450
  } catch (e) {
431
451
  this.logger.error(e);
432
452
  res.statusCode = 500;
433
- res.setHeader("content-type", _utils.mime.contentType("html"));
434
- return res.end((0, _utils1.createErrorDocument)(500, _constants.ERROR_PAGE_TEXT[500]));
453
+ res.setHeader("content-type", import_utils.mime.contentType("html"));
454
+ return res.end((0, import_utils2.createErrorDocument)(500, import_constants.ERROR_PAGE_TEXT[500]));
435
455
  }
436
456
  try {
437
457
  return this._handler(context, next);
@@ -445,13 +465,13 @@ class ModernServer {
445
465
  res.end();
446
466
  }
447
467
  onError(context, err) {
448
- context.error(_constants.ERROR_DIGEST.EINTER, err);
468
+ context.error(import_constants.ERROR_DIGEST.EINTER, err);
449
469
  this.renderErrorPage(context, 500);
450
470
  }
451
471
  async renderErrorPage(context, status) {
452
472
  const { res } = context;
453
473
  context.status = status;
454
- res.set("content-type", _utils.mime.contentType("html"));
474
+ res.set("content-type", import_utils.mime.contentType("html"));
455
475
  const statusPage = `/${status}`;
456
476
  const customErrorPage = `/_error`;
457
477
  const matched = this.router.match(statusPage) || this.router.match(customErrorPage);
@@ -473,44 +493,47 @@ class ModernServer {
473
493
  }
474
494
  }
475
495
  }
476
- const text = _constants.ERROR_PAGE_TEXT[status] || _constants.ERROR_PAGE_TEXT[500];
477
- context.res.end((0, _utils1.createErrorDocument)(status, text));
496
+ const text = import_constants.ERROR_PAGE_TEXT[status] || import_constants.ERROR_PAGE_TEXT[500];
497
+ context.res.end((0, import_utils2.createErrorDocument)(status, text));
478
498
  }
479
499
  constructor({ pwd, config, routes, staticGenerate, logger, metrics, runMode, proxyTarget, appContext }) {
480
- var _appContext;
481
- _define_property._(this, "pwd", void 0);
482
- _define_property._(this, "distDir", void 0);
483
- _define_property._(this, "workDir", void 0);
484
- _define_property._(this, "router", void 0);
485
- _define_property._(this, "conf", void 0);
486
- _define_property._(this, "handlers", []);
487
- _define_property._(this, "presetRoutes", void 0);
488
- _define_property._(this, "runner", void 0);
489
- _define_property._(this, "logger", void 0);
490
- _define_property._(this, "metrics", void 0);
491
- _define_property._(this, "runMode", void 0);
492
- _define_property._(this, "reader", _reader);
493
- _define_property._(this, "proxyTarget", void 0);
494
- _define_property._(this, "routeRenderHandler", void 0);
495
- _define_property._(this, "staticGenerate", void 0);
496
- _define_property._(this, "metaName", void 0);
497
- _define_property._(this, "loaderHandler", null);
498
- _define_property._(this, "frameWebHandler", null);
499
- _define_property._(this, "frameAPIHandler", null);
500
- _define_property._(this, "_handler", void 0);
500
+ (0, import_define_property._)(this, "pwd", void 0);
501
+ (0, import_define_property._)(this, "distDir", void 0);
502
+ (0, import_define_property._)(this, "workDir", void 0);
503
+ (0, import_define_property._)(this, "router", void 0);
504
+ (0, import_define_property._)(this, "conf", void 0);
505
+ (0, import_define_property._)(this, "handlers", []);
506
+ (0, import_define_property._)(this, "presetRoutes", void 0);
507
+ (0, import_define_property._)(this, "runner", void 0);
508
+ (0, import_define_property._)(this, "logger", void 0);
509
+ (0, import_define_property._)(this, "metrics", void 0);
510
+ (0, import_define_property._)(this, "runMode", void 0);
511
+ (0, import_define_property._)(this, "reader", reader);
512
+ (0, import_define_property._)(this, "proxyTarget", void 0);
513
+ (0, import_define_property._)(this, "routeRenderHandler", void 0);
514
+ (0, import_define_property._)(this, "staticGenerate", void 0);
515
+ (0, import_define_property._)(this, "metaName", void 0);
516
+ (0, import_define_property._)(this, "loaderHandler", null);
517
+ (0, import_define_property._)(this, "frameWebHandler", null);
518
+ (0, import_define_property._)(this, "frameAPIHandler", null);
519
+ (0, import_define_property._)(this, "_handler", void 0);
501
520
  require("ignore-styles");
502
521
  this.pwd = pwd;
503
- this.distDir = _path.default.resolve(pwd, config.output.path || "dist");
522
+ this.distDir = import_path.default.resolve(pwd, config.output.path || "dist");
504
523
  this.workDir = this.distDir;
505
524
  this.conf = config;
506
- (0, _utils1.debug)("server conf", this.conf);
525
+ (0, import_utils2.debug)("server conf", this.conf);
507
526
  this.logger = logger;
508
527
  this.metrics = metrics;
509
- this.router = new _route.RouteMatchManager();
528
+ this.router = new import_route.RouteMatchManager();
510
529
  this.presetRoutes = routes;
511
530
  this.proxyTarget = proxyTarget;
512
531
  this.staticGenerate = staticGenerate || false;
513
- this.runMode = runMode || _constants.RUN_MODE.FULL;
514
- this.metaName = (_appContext = appContext) === null || _appContext === void 0 ? void 0 : _appContext.metaName;
532
+ this.runMode = runMode || import_constants.RUN_MODE.FULL;
533
+ this.metaName = appContext === null || appContext === void 0 ? void 0 : appContext.metaName;
515
534
  }
516
535
  }
536
+ // Annotate the CommonJS export names for ESM import in node:
537
+ 0 && (module.exports = {
538
+ ModernServer
539
+ });
@@ -1,15 +1,28 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "createProdServer", {
6
- enumerable: true,
7
- get: function() {
8
- return createProdServer;
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 });
9
15
  }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var modernServerSplit_exports = {};
20
+ __export(modernServerSplit_exports, {
21
+ createProdServer: () => createProdServer
10
22
  });
11
- const _modernServer = require("./modernServer");
12
- class ModernSSRServer extends _modernServer.ModernServer {
23
+ module.exports = __toCommonJS(modernServerSplit_exports);
24
+ var import_modernServer = require("./modernServer");
25
+ class ModernSSRServer extends import_modernServer.ModernServer {
13
26
  prepareAPIHandler(_) {
14
27
  return null;
15
28
  }
@@ -17,7 +30,7 @@ class ModernSSRServer extends _modernServer.ModernServer {
17
30
  return this.render404(context);
18
31
  }
19
32
  }
20
- class ModernAPIServer extends _modernServer.ModernServer {
33
+ class ModernAPIServer extends import_modernServer.ModernServer {
21
34
  prepareWebHandler(_) {
22
35
  return null;
23
36
  }
@@ -25,7 +38,7 @@ class ModernAPIServer extends _modernServer.ModernServer {
25
38
  return routes.filter((route) => route.isApi);
26
39
  }
27
40
  }
28
- class ModernWebServer extends _modernServer.ModernServer {
41
+ class ModernWebServer extends import_modernServer.ModernServer {
29
42
  async warmupSSRBundle() {
30
43
  return null;
31
44
  }
@@ -45,6 +58,10 @@ const createProdServer = (options) => {
45
58
  } else if (options.webOnly) {
46
59
  return new ModernWebServer(options);
47
60
  } else {
48
- return new _modernServer.ModernServer(options);
61
+ return new import_modernServer.ModernServer(options);
49
62
  }
50
63
  };
64
+ // Annotate the CommonJS export names for ESM import in node:
65
+ 0 && (module.exports = {
66
+ createProdServer
67
+ });
package/dist/cjs/type.js CHANGED
@@ -1,4 +1,16 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
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 __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var type_exports = {};
16
+ module.exports = __toCommonJS(type_exports);
package/dist/cjs/utils.js CHANGED
@@ -1,45 +1,36 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
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) => {
6
7
  for (var name in all)
7
- Object.defineProperty(target, name, {
8
- enumerable: true,
9
- get: all[name]
10
- });
11
- }
12
- _export(exports, {
13
- debug: function() {
14
- return debug;
15
- },
16
- mergeExtension: function() {
17
- return mergeExtension;
18
- },
19
- noop: function() {
20
- return noop;
21
- },
22
- createErrorDocument: function() {
23
- return createErrorDocument;
24
- },
25
- createMiddlewareCollecter: function() {
26
- return createMiddlewareCollecter;
27
- },
28
- getStaticReg: function() {
29
- return getStaticReg;
30
- },
31
- prepareFavicons: function() {
32
- return prepareFavicons;
33
- },
34
- headersWithoutCookie: function() {
35
- return headersWithoutCookie;
36
- },
37
- isRedirect: function() {
38
- return isRedirect;
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 });
39
15
  }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var utils_exports = {};
20
+ __export(utils_exports, {
21
+ createErrorDocument: () => createErrorDocument,
22
+ createMiddlewareCollecter: () => createMiddlewareCollecter,
23
+ debug: () => debug,
24
+ getStaticReg: () => getStaticReg,
25
+ headersWithoutCookie: () => headersWithoutCookie,
26
+ isRedirect: () => isRedirect,
27
+ mergeExtension: () => mergeExtension,
28
+ noop: () => noop,
29
+ prepareFavicons: () => prepareFavicons
40
30
  });
41
- const _utils = require("@modern-js/utils");
42
- const debug = (0, _utils.createDebugger)("prod-server");
31
+ module.exports = __toCommonJS(utils_exports);
32
+ var import_utils = require("@modern-js/utils");
33
+ const debug = (0, import_utils.createDebugger)("prod-server");
43
34
  const mergeExtension = (users) => {
44
35
  const output = [];
45
36
  return {
@@ -159,3 +150,15 @@ const isRedirect = (code) => {
159
150
  308
160
151
  ].includes(code);
161
152
  };
153
+ // Annotate the CommonJS export names for ESM import in node:
154
+ 0 && (module.exports = {
155
+ createErrorDocument,
156
+ createMiddlewareCollecter,
157
+ debug,
158
+ getStaticReg,
159
+ headersWithoutCookie,
160
+ isRedirect,
161
+ mergeExtension,
162
+ noop,
163
+ prepareFavicons
164
+ });