@modern-js/prod-server 2.15.0 → 2.17.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 (122) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/cjs/constants.js +15 -31
  3. package/dist/cjs/index.js +35 -37
  4. package/dist/cjs/libs/context/context.js +53 -66
  5. package/dist/cjs/libs/context/index.js +15 -28
  6. package/dist/cjs/libs/hook-api/index.js +59 -54
  7. package/dist/cjs/libs/hook-api/route.js +28 -30
  8. package/dist/cjs/libs/hook-api/template.js +30 -34
  9. package/dist/cjs/libs/loadConfig.js +74 -65
  10. package/dist/cjs/libs/logger.js +46 -37
  11. package/dist/cjs/libs/metrics.js +7 -25
  12. package/dist/cjs/libs/proxy.js +29 -46
  13. package/dist/cjs/libs/render/cache/__tests__/cache.fun.test.js +48 -64
  14. package/dist/cjs/libs/render/cache/__tests__/cache.test.js +53 -37
  15. package/dist/cjs/libs/render/cache/__tests__/cacheable.js +38 -34
  16. package/dist/cjs/libs/render/cache/__tests__/error-configuration.js +22 -30
  17. package/dist/cjs/libs/render/cache/__tests__/matched-cache.js +86 -46
  18. package/dist/cjs/libs/render/cache/index.js +17 -37
  19. package/dist/cjs/libs/render/cache/page-caches/index.js +12 -28
  20. package/dist/cjs/libs/render/cache/page-caches/lru.js +32 -40
  21. package/dist/cjs/libs/render/cache/spr.js +104 -111
  22. package/dist/cjs/libs/render/cache/type.js +4 -15
  23. package/dist/cjs/libs/render/cache/util.js +29 -53
  24. package/dist/cjs/libs/render/index.js +75 -73
  25. package/dist/cjs/libs/render/measure.js +19 -34
  26. package/dist/cjs/libs/render/reader.js +52 -61
  27. package/dist/cjs/libs/render/ssr.js +34 -66
  28. package/dist/cjs/libs/render/static.js +22 -45
  29. package/dist/cjs/libs/render/type.js +10 -28
  30. package/dist/cjs/libs/render/utils.js +17 -38
  31. package/dist/cjs/libs/route/index.js +32 -31
  32. package/dist/cjs/libs/route/matcher.js +38 -38
  33. package/dist/cjs/libs/route/route.js +29 -26
  34. package/dist/cjs/libs/serveFile.js +23 -41
  35. package/dist/cjs/server/index.js +101 -107
  36. package/dist/cjs/server/modernServer.js +191 -171
  37. package/dist/cjs/server/modernServerSplit.js +12 -30
  38. package/dist/cjs/type.js +4 -15
  39. package/dist/cjs/utils.js +50 -50
  40. package/dist/cjs/workerServer.js +26 -36
  41. package/dist/esm/constants.js +24 -25
  42. package/dist/esm/index.js +11 -10
  43. package/dist/esm/libs/context/context.js +271 -264
  44. package/dist/esm/libs/context/index.js +3 -3
  45. package/dist/esm/libs/hook-api/index.js +237 -223
  46. package/dist/esm/libs/hook-api/route.js +62 -60
  47. package/dist/esm/libs/hook-api/template.js +117 -115
  48. package/dist/esm/libs/loadConfig.js +68 -69
  49. package/dist/esm/libs/logger.js +188 -174
  50. package/dist/esm/libs/metrics.js +6 -3
  51. package/dist/esm/libs/proxy.js +236 -221
  52. package/dist/esm/libs/render/cache/__tests__/cache.fun.test.js +286 -267
  53. package/dist/esm/libs/render/cache/__tests__/cache.test.js +765 -745
  54. package/dist/esm/libs/render/cache/__tests__/cacheable.js +62 -63
  55. package/dist/esm/libs/render/cache/__tests__/error-configuration.js +42 -43
  56. package/dist/esm/libs/render/cache/__tests__/matched-cache.js +134 -135
  57. package/dist/esm/libs/render/cache/index.js +337 -326
  58. package/dist/esm/libs/render/cache/page-caches/index.js +147 -141
  59. package/dist/esm/libs/render/cache/page-caches/lru.js +78 -76
  60. package/dist/esm/libs/render/cache/spr.js +465 -456
  61. package/dist/esm/libs/render/cache/type.js +1 -1
  62. package/dist/esm/libs/render/cache/util.js +266 -246
  63. package/dist/esm/libs/render/index.js +226 -218
  64. package/dist/esm/libs/render/measure.js +136 -128
  65. package/dist/esm/libs/render/reader.js +315 -304
  66. package/dist/esm/libs/render/ssr.js +214 -209
  67. package/dist/esm/libs/render/static.js +208 -198
  68. package/dist/esm/libs/render/type.js +6 -7
  69. package/dist/esm/libs/render/utils.js +8 -9
  70. package/dist/esm/libs/route/index.js +134 -123
  71. package/dist/esm/libs/route/matcher.js +140 -130
  72. package/dist/esm/libs/route/route.js +36 -37
  73. package/dist/esm/libs/serveFile.js +177 -168
  74. package/dist/esm/server/index.js +578 -549
  75. package/dist/esm/server/modernServer.js +1137 -1074
  76. package/dist/esm/server/modernServerSplit.js +344 -328
  77. package/dist/esm/type.js +1 -1
  78. package/dist/esm/utils.js +133 -124
  79. package/dist/esm/workerServer.js +226 -220
  80. package/dist/esm-node/constants.js +7 -14
  81. package/dist/esm-node/index.js +4 -9
  82. package/dist/esm-node/libs/context/context.js +32 -25
  83. package/dist/esm-node/libs/context/index.js +2 -5
  84. package/dist/esm-node/libs/hook-api/index.js +40 -21
  85. package/dist/esm-node/libs/hook-api/route.js +21 -8
  86. package/dist/esm-node/libs/hook-api/template.js +19 -14
  87. package/dist/esm-node/libs/loadConfig.js +11 -28
  88. package/dist/esm-node/libs/logger.js +37 -17
  89. package/dist/esm-node/libs/metrics.js +1 -3
  90. package/dist/esm-node/libs/proxy.js +14 -22
  91. package/dist/esm-node/libs/render/cache/__tests__/cache.fun.test.js +25 -36
  92. package/dist/esm-node/libs/render/cache/__tests__/cache.test.js +23 -11
  93. package/dist/esm-node/libs/render/cache/__tests__/cacheable.js +32 -13
  94. package/dist/esm-node/libs/render/cache/__tests__/error-configuration.js +16 -9
  95. package/dist/esm-node/libs/render/cache/__tests__/matched-cache.js +80 -25
  96. package/dist/esm-node/libs/render/cache/index.js +3 -10
  97. package/dist/esm-node/libs/render/cache/page-caches/index.js +4 -5
  98. package/dist/esm-node/libs/render/cache/page-caches/lru.js +20 -8
  99. package/dist/esm-node/libs/render/cache/spr.js +79 -80
  100. package/dist/esm-node/libs/render/cache/type.js +1 -0
  101. package/dist/esm-node/libs/render/cache/util.js +13 -23
  102. package/dist/esm-node/libs/render/index.js +10 -28
  103. package/dist/esm-node/libs/render/measure.js +7 -13
  104. package/dist/esm-node/libs/render/reader.js +31 -26
  105. package/dist/esm-node/libs/render/ssr.js +5 -21
  106. package/dist/esm-node/libs/render/static.js +1 -4
  107. package/dist/esm-node/libs/render/type.js +3 -6
  108. package/dist/esm-node/libs/render/utils.js +6 -18
  109. package/dist/esm-node/libs/route/index.js +20 -9
  110. package/dist/esm-node/libs/route/matcher.js +28 -17
  111. package/dist/esm-node/libs/route/route.js +23 -5
  112. package/dist/esm-node/libs/serveFile.js +2 -6
  113. package/dist/esm-node/server/index.js +72 -75
  114. package/dist/esm-node/server/modernServer.js +102 -130
  115. package/dist/esm-node/server/modernServerSplit.js +1 -4
  116. package/dist/esm-node/type.js +1 -0
  117. package/dist/esm-node/utils.js +41 -32
  118. package/dist/esm-node/workerServer.js +9 -10
  119. package/dist/types/libs/context/context.d.ts +1 -1
  120. package/dist/types/server/modernServer.d.ts +1 -1
  121. package/dist/types/utils.d.ts +1 -1
  122. package/package.json +12 -8
@@ -1,86 +1,90 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
- var modernServer_exports = {};
29
- __export(modernServer_exports, {
30
- ModernServer: () => ModernServer
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
31
4
  });
32
- module.exports = __toCommonJS(modernServer_exports);
33
- var import_http = require("http");
34
- var import_path = __toESM(require("path"));
35
- var import_utils = require("@modern-js/utils");
36
- var import_route = require("../libs/route");
37
- var import_render = require("../libs/render");
38
- var import_serveFile = require("../libs/serveFile");
39
- var import_utils2 = require("../utils");
40
- var reader = __toESM(require("../libs/render/reader"));
41
- var import_proxy = require("../libs/proxy");
42
- var import_context = require("../libs/context");
43
- var import_constants = require("../constants");
44
- var import_hook_api = require("../libs/hook-api");
5
+ Object.defineProperty(exports, "ModernServer", {
6
+ enumerable: true,
7
+ get: () => ModernServer
8
+ });
9
+ const _http = require("http");
10
+ const _path = /* @__PURE__ */ _interop_require_default(require("path"));
11
+ const _utils = require("@modern-js/utils");
12
+ const _route = require("../libs/route");
13
+ const _render = require("../libs/render");
14
+ const _serveFile = require("../libs/serveFile");
15
+ const _utils1 = require("../utils");
16
+ const _reader = /* @__PURE__ */ _interop_require_wildcard(require("../libs/render/reader"));
17
+ const _proxy = require("../libs/proxy");
18
+ const _context = require("../libs/context");
19
+ const _constants = require("../constants");
20
+ const _hookapi = require("../libs/hook-api");
21
+ function _define_property(obj, key, value) {
22
+ if (key in obj) {
23
+ Object.defineProperty(obj, key, {
24
+ value,
25
+ enumerable: true,
26
+ configurable: true,
27
+ writable: true
28
+ });
29
+ } else {
30
+ obj[key] = value;
31
+ }
32
+ return obj;
33
+ }
34
+ function _interop_require_default(obj) {
35
+ return obj && obj.__esModule ? obj : {
36
+ default: obj
37
+ };
38
+ }
39
+ function _getRequireWildcardCache(nodeInterop) {
40
+ if (typeof WeakMap !== "function")
41
+ return null;
42
+ var cacheBabelInterop = /* @__PURE__ */ new WeakMap();
43
+ var cacheNodeInterop = /* @__PURE__ */ new WeakMap();
44
+ return (_getRequireWildcardCache = function(nodeInterop2) {
45
+ return nodeInterop2 ? cacheNodeInterop : cacheBabelInterop;
46
+ })(nodeInterop);
47
+ }
48
+ function _interop_require_wildcard(obj, nodeInterop) {
49
+ if (!nodeInterop && obj && obj.__esModule) {
50
+ return obj;
51
+ }
52
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
53
+ return {
54
+ default: obj
55
+ };
56
+ }
57
+ var cache = _getRequireWildcardCache(nodeInterop);
58
+ if (cache && cache.has(obj)) {
59
+ return cache.get(obj);
60
+ }
61
+ var newObj = {};
62
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
63
+ for (var key in obj) {
64
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
65
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
66
+ if (desc && (desc.get || desc.set)) {
67
+ Object.defineProperty(newObj, key, desc);
68
+ } else {
69
+ newObj[key] = obj[key];
70
+ }
71
+ }
72
+ }
73
+ newObj.default = obj;
74
+ if (cache) {
75
+ cache.set(obj, newObj);
76
+ }
77
+ return newObj;
78
+ }
45
79
  const SERVER_DIR = "./server";
46
80
  class ModernServer {
47
- constructor({
48
- pwd,
49
- config,
50
- routes,
51
- staticGenerate,
52
- logger,
53
- metrics,
54
- runMode,
55
- proxyTarget
56
- }) {
57
- this.handlers = [];
58
- this.reader = reader;
59
- this.loaderHandler = null;
60
- this.frameWebHandler = null;
61
- this.frameAPIHandler = null;
62
- this.proxyHandler = null;
63
- require("ignore-styles");
64
- this.pwd = pwd;
65
- this.distDir = import_path.default.join(pwd, config.output.path || "dist");
66
- this.workDir = this.distDir;
67
- this.conf = config;
68
- (0, import_utils2.debug)("server conf", this.conf);
69
- this.logger = logger;
70
- this.metrics = metrics;
71
- this.router = new import_route.RouteMatchManager();
72
- this.presetRoutes = routes;
73
- this.proxyTarget = proxyTarget;
74
- this.staticGenerate = staticGenerate || false;
75
- this.runMode = runMode || import_constants.RUN_MODE.FULL;
76
- }
77
81
  // server prepare
78
82
  async onInit(runner, app) {
79
- var _a, _b, _c;
83
+ var _conf_bff, _this_conf_server, _this_conf_output;
80
84
  this.runner = runner;
81
85
  const { distDir, staticGenerate, conf } = this;
82
- (0, import_utils2.debug)("final server conf", this.conf);
83
- this.proxyHandler = (0, import_proxy.createProxyHandler)((_a = conf.bff) == null ? void 0 : _a.proxy);
86
+ (0, _utils1.debug)("final server conf", this.conf);
87
+ this.proxyHandler = (0, _proxy.createProxyHandler)((_conf_bff = conf.bff) === null || _conf_bff === void 0 ? void 0 : _conf_bff.proxy);
84
88
  if (this.proxyHandler) {
85
89
  this.proxyHandler.forEach((handler) => {
86
90
  this.addHandler(handler);
@@ -95,30 +99,33 @@ class ModernServer {
95
99
  this.warmupSSRBundle();
96
100
  await this.prepareFrameHandler();
97
101
  await this.prepareLoaderHandler(usageRoutes, distDir);
98
- const ssrConfig = (_b = this.conf.server) == null ? void 0 : _b.ssr;
102
+ const ssrConfig = (_this_conf_server = this.conf.server) === null || _this_conf_server === void 0 ? void 0 : _this_conf_server.ssr;
99
103
  const forceCSR = typeof ssrConfig === "object" ? ssrConfig.forceCSR : false;
100
- this.routeRenderHandler = (0, import_render.createRenderHandler)({
104
+ this.routeRenderHandler = (0, _render.createRenderHandler)({
101
105
  distDir,
102
106
  staticGenerate,
103
107
  forceCSR
104
108
  });
105
109
  await this.setupBeforeProdMiddleware();
106
- this.addHandler(this.setupStaticMiddleware((_c = this.conf.output) == null ? void 0 : _c.assetPrefix));
107
- this.addHandler(import_serveFile.faviconFallbackHandler);
110
+ this.addHandler(this.setupStaticMiddleware((_this_conf_output = this.conf.output) === null || _this_conf_output === void 0 ? void 0 : _this_conf_output.assetPrefix));
111
+ this.addHandler(_serveFile.faviconFallbackHandler);
108
112
  this.addHandler(this.routeHandler.bind(this));
109
113
  this.compose();
110
114
  }
111
115
  // server ready
112
116
  onRepack(_) {
113
117
  }
114
- onServerChange({ filepath }) {
118
+ async onServerChange({ filepath }) {
115
119
  const { pwd } = this;
116
- const { api, server } = import_constants.AGGRED_DIR;
117
- const apiPath = import_path.default.normalize(import_path.default.join(pwd, api));
118
- const serverPath = import_path.default.normalize(import_path.default.join(pwd, server));
120
+ const { api, server } = _constants.AGGRED_DIR;
121
+ const apiPath = _path.default.normalize(_path.default.join(pwd, api));
122
+ const serverPath = _path.default.normalize(_path.default.join(pwd, server));
119
123
  const onlyApi = filepath.startsWith(apiPath);
120
124
  const onlyWeb = filepath.startsWith(serverPath);
121
- this.prepareFrameHandler({ onlyWeb, onlyApi });
125
+ await this.prepareFrameHandler({
126
+ onlyWeb,
127
+ onlyApi
128
+ });
122
129
  }
123
130
  // exposed requestHandler
124
131
  getRequestHandler() {
@@ -127,7 +134,7 @@ class ModernServer {
127
134
  async render(req, res, url) {
128
135
  req.logger = req.logger || this.logger;
129
136
  req.metrics = req.metrics || this.metrics;
130
- const context = (0, import_context.createContext)(req, res);
137
+ const context = (0, _context.createContext)(req, res);
131
138
  const matched = this.router.match(url || context.path);
132
139
  if (!matched) {
133
140
  return null;
@@ -143,7 +150,7 @@ class ModernServer {
143
150
  return result.content.toString();
144
151
  }
145
152
  async createHTTPServer(handler) {
146
- return (0, import_http.createServer)(handler);
153
+ return (0, _http.createServer)(handler);
147
154
  }
148
155
  /* —————————————————————— function will be overwrite —————————————————————— */
149
156
  // get routes info
@@ -151,9 +158,9 @@ class ModernServer {
151
158
  if (this.presetRoutes) {
152
159
  return this.presetRoutes;
153
160
  }
154
- const file = import_path.default.join(this.distDir, import_utils.ROUTE_SPEC_FILE);
155
- if (import_utils.fs.existsSync(file)) {
156
- const content = import_utils.fs.readJSONSync(file);
161
+ const file = _path.default.join(this.distDir, _utils.ROUTE_SPEC_FILE);
162
+ if (_utils.fs.existsSync(file)) {
163
+ const content = _utils.fs.readJSONSync(file);
157
164
  return content.routes;
158
165
  }
159
166
  return [];
@@ -165,71 +172,66 @@ class ModernServer {
165
172
  }
166
173
  // return 404 page
167
174
  render404(context) {
168
- context.error(import_constants.ERROR_DIGEST.ENOTF, "404 Not Found");
175
+ context.error(_constants.ERROR_DIGEST.ENOTF, "404 Not Found");
169
176
  this.renderErrorPage(context, 404);
170
177
  }
171
178
  async prepareLoaderHandler(specs, distDir) {
172
179
  const { runner } = this;
173
- const handler = await runner.prepareLoaderHandler(
174
- {
175
- serverRoutes: specs,
176
- distDir
177
- },
178
- {
179
- onLast: () => null
180
- }
181
- );
180
+ const handler = await runner.prepareLoaderHandler({
181
+ serverRoutes: specs,
182
+ distDir
183
+ }, {
184
+ onLast: () => null
185
+ });
182
186
  this.loaderHandler = handler;
183
187
  }
184
188
  // gather frame extension and get framework handler
185
189
  async prepareFrameHandler(options) {
186
190
  const { workDir, runner } = this;
187
191
  const { onlyApi, onlyWeb } = options || {};
188
- const { getMiddlewares, ...collector } = (0, import_utils2.createMiddlewareCollecter)();
192
+ const { getMiddlewares, ...collector } = (0, _utils1.createMiddlewareCollecter)();
189
193
  await runner.gather(collector);
190
194
  const { api: pluginAPIExt, web: pluginWebExt } = getMiddlewares();
191
- const serverDir = import_path.default.join(workDir, SERVER_DIR);
192
- if (await import_utils.fs.pathExists(import_path.default.join(serverDir)) && !onlyApi) {
193
- const webExtension = (0, import_utils2.mergeExtension)(pluginWebExt);
195
+ const serverDir = _path.default.join(workDir, SERVER_DIR);
196
+ if (await _utils.fs.pathExists(_path.default.join(serverDir)) && !onlyApi) {
197
+ const webExtension = (0, _utils1.mergeExtension)(pluginWebExt);
194
198
  this.frameWebHandler = await this.prepareWebHandler(webExtension);
195
199
  }
196
200
  if (!onlyWeb) {
197
- const apiExtension = (0, import_utils2.mergeExtension)(pluginAPIExt);
201
+ const apiExtension = (0, _utils1.mergeExtension)(pluginAPIExt);
198
202
  this.frameAPIHandler = await this.prepareAPIHandler(apiExtension);
199
203
  }
200
204
  }
201
205
  async prepareWebHandler(extension) {
202
206
  const { workDir, runner } = this;
203
- const handler = await runner.prepareWebServer(
204
- {
205
- pwd: workDir,
206
- config: extension
207
- },
208
- { onLast: () => null }
209
- );
207
+ const handler = await runner.prepareWebServer({
208
+ pwd: workDir,
209
+ config: extension
210
+ }, {
211
+ onLast: () => null
212
+ });
210
213
  return handler;
211
214
  }
212
215
  async prepareAPIHandler(extension) {
213
216
  const { workDir, runner, conf } = this;
214
217
  const { bff } = conf;
215
- const prefix = (bff == null ? void 0 : bff.prefix) || "/api";
216
- const webOnly = await (0, import_utils.isWebOnly)();
218
+ const prefix = (bff === null || bff === void 0 ? void 0 : bff.prefix) || "/api";
219
+ const webOnly = await (0, _utils.isWebOnly)();
217
220
  if (webOnly && process.env.NODE_ENV === "development") {
218
221
  return (req, res) => {
219
222
  res.setHeader("Content-Type", "text/plain");
220
223
  res.end(JSON.stringify(""));
221
224
  };
222
225
  }
223
- return runner.prepareApiServer(
224
- {
225
- pwd: workDir,
226
- config: extension,
227
- prefix: Array.isArray(prefix) ? prefix[0] : prefix,
228
- httpMethodDecider: bff == null ? void 0 : bff.httpMethodDecider,
229
- render: this.render.bind(this)
230
- },
231
- { onLast: () => null }
232
- );
226
+ return runner.prepareApiServer({
227
+ pwd: workDir,
228
+ config: extension,
229
+ prefix: Array.isArray(prefix) ? prefix[0] : prefix,
230
+ httpMethodDecider: bff === null || bff === void 0 ? void 0 : bff.httpMethodDecider,
231
+ render: this.render.bind(this)
232
+ }, {
233
+ onLast: () => null
234
+ });
233
235
  }
234
236
  filterRoutes(routes) {
235
237
  return routes;
@@ -242,20 +244,13 @@ class ModernServer {
242
244
  });
243
245
  }
244
246
  setupStaticMiddleware(prefix) {
245
- const staticPathRegExp = (0, import_utils2.getStaticReg)(
246
- this.conf.output,
247
- this.conf.html,
248
- prefix
249
- );
250
- return (0, import_serveFile.createStaticFileHandler)(
251
- [
252
- {
253
- path: staticPathRegExp,
254
- target: this.distDir
255
- }
256
- ],
257
- prefix
258
- );
247
+ const staticPathRegExp = (0, _utils1.getStaticReg)(this.conf.output, this.conf.html, prefix);
248
+ return (0, _serveFile.createStaticFileHandler)([
249
+ {
250
+ path: staticPathRegExp,
251
+ target: this.distDir
252
+ }
253
+ ], prefix);
259
254
  }
260
255
  async handleAPI(context) {
261
256
  const { req, res } = context;
@@ -295,11 +290,7 @@ class ModernServer {
295
290
  return null;
296
291
  }
297
292
  if (renderResult.redirect) {
298
- this.redirect(
299
- res,
300
- renderResult.content,
301
- renderResult.statusCode
302
- );
293
+ this.redirect(res, renderResult.content, renderResult.statusCode);
303
294
  return null;
304
295
  }
305
296
  if (this.isSend(res)) {
@@ -316,14 +307,14 @@ class ModernServer {
316
307
  const { distDir } = this;
317
308
  const bundles = this.router.getBundles();
318
309
  bundles.forEach((bundle) => {
319
- const filepath = import_path.default.join(distDir, bundle);
320
- if (import_utils.fs.existsSync(filepath)) {
310
+ const filepath = _path.default.join(distDir, bundle);
311
+ if (_utils.fs.existsSync(filepath)) {
321
312
  require(filepath);
322
313
  }
323
314
  });
324
315
  }
325
316
  createContext(req, res, options = {}) {
326
- return (0, import_context.createContext)(req, res, options);
317
+ return (0, _context.createContext)(req, res, options);
327
318
  }
328
319
  /* —————————————————————— private function —————————————————————— */
329
320
  // handler route.json, include api / csr / ssr
@@ -340,12 +331,11 @@ class ModernServer {
340
331
  return;
341
332
  }
342
333
  if (route.entryName) {
343
- const afterMatchContext = (0, import_hook_api.createAfterMatchContext)(
344
- context,
345
- route.entryName
346
- );
347
- if (this.runMode === import_constants.RUN_MODE.FULL) {
348
- await this.runner.afterMatch(afterMatchContext, { onLast: import_utils2.noop });
334
+ const afterMatchContext = (0, _hookapi.createAfterMatchContext)(context, route.entryName);
335
+ if (this.runMode === _constants.RUN_MODE.FULL) {
336
+ await this.runner.afterMatch(afterMatchContext, {
337
+ onLast: _utils1.noop
338
+ });
349
339
  }
350
340
  if (this.isSend(res)) {
351
341
  return;
@@ -366,7 +356,7 @@ class ModernServer {
366
356
  }
367
357
  if (this.frameWebHandler) {
368
358
  res.locals = res.locals || {};
369
- const middlewareContext = (0, import_hook_api.createMiddlewareContext)(context);
359
+ const middlewareContext = (0, _hookapi.createMiddlewareContext)(context);
370
360
  await this.frameWebHandler(middlewareContext);
371
361
  res.locals = {
372
362
  ...res.locals,
@@ -387,12 +377,11 @@ class ModernServer {
387
377
  return;
388
378
  }
389
379
  if (route.entryName) {
390
- const afterRenderContext = (0, import_hook_api.createAfterRenderContext)(
391
- context,
392
- response.toString()
393
- );
394
- if (this.runMode === import_constants.RUN_MODE.FULL) {
395
- await this.runner.afterRender(afterRenderContext, { onLast: import_utils2.noop });
380
+ const afterRenderContext = (0, _hookapi.createAfterRenderContext)(context, response.toString());
381
+ if (this.runMode === _constants.RUN_MODE.FULL) {
382
+ await this.runner.afterRender(afterRenderContext, {
383
+ onLast: _utils1.noop
384
+ });
396
385
  }
397
386
  if (this.isSend(res)) {
398
387
  return;
@@ -405,7 +394,7 @@ class ModernServer {
405
394
  if (res.headersSent) {
406
395
  return true;
407
396
  }
408
- if (res.getHeader("Location") && (0, import_utils2.isRedirect)(res.statusCode)) {
397
+ if (res.getHeader("Location") && (0, _utils1.isRedirect)(res.statusCode)) {
409
398
  res.end();
410
399
  return true;
411
400
  }
@@ -434,7 +423,7 @@ class ModernServer {
434
423
  }
435
424
  try {
436
425
  const result = handler(context, dispatch);
437
- if ((0, import_utils.isPromise)(result)) {
426
+ if ((0, _utils.isPromise)(result)) {
438
427
  return result.catch(onError);
439
428
  }
440
429
  } catch (e) {
@@ -458,8 +447,8 @@ class ModernServer {
458
447
  } catch (e) {
459
448
  this.logger.error(e);
460
449
  res.statusCode = 500;
461
- res.setHeader("content-type", import_utils.mime.contentType("html"));
462
- return res.end((0, import_utils2.createErrorDocument)(500, import_constants.ERROR_PAGE_TEXT[500]));
450
+ res.setHeader("content-type", _utils.mime.contentType("html"));
451
+ return res.end((0, _utils1.createErrorDocument)(500, _constants.ERROR_PAGE_TEXT[500]));
463
452
  }
464
453
  try {
465
454
  return this._handler(context, next);
@@ -473,13 +462,13 @@ class ModernServer {
473
462
  res.end();
474
463
  }
475
464
  onError(context, err) {
476
- context.error(import_constants.ERROR_DIGEST.EINTER, err);
465
+ context.error(_constants.ERROR_DIGEST.EINTER, err);
477
466
  this.renderErrorPage(context, 500);
478
467
  }
479
468
  async renderErrorPage(context, status) {
480
469
  const { res } = context;
481
470
  context.status = status;
482
- res.setHeader("content-type", import_utils.mime.contentType("html"));
471
+ res.setHeader("content-type", _utils.mime.contentType("html"));
483
472
  const statusPage = `/${status}`;
484
473
  const customErrorPage = `/_error`;
485
474
  const matched = this.router.match(statusPage) || this.router.match(customErrorPage);
@@ -501,11 +490,42 @@ class ModernServer {
501
490
  }
502
491
  }
503
492
  }
504
- const text = import_constants.ERROR_PAGE_TEXT[status] || import_constants.ERROR_PAGE_TEXT[500];
505
- context.res.end((0, import_utils2.createErrorDocument)(status, text));
493
+ const text = _constants.ERROR_PAGE_TEXT[status] || _constants.ERROR_PAGE_TEXT[500];
494
+ context.res.end((0, _utils1.createErrorDocument)(status, text));
495
+ }
496
+ constructor({ pwd, config, routes, staticGenerate, logger, metrics, runMode, proxyTarget }) {
497
+ _define_property(this, "pwd", void 0);
498
+ _define_property(this, "distDir", void 0);
499
+ _define_property(this, "workDir", void 0);
500
+ _define_property(this, "router", void 0);
501
+ _define_property(this, "conf", void 0);
502
+ _define_property(this, "handlers", []);
503
+ _define_property(this, "presetRoutes", void 0);
504
+ _define_property(this, "runner", void 0);
505
+ _define_property(this, "logger", void 0);
506
+ _define_property(this, "metrics", void 0);
507
+ _define_property(this, "runMode", void 0);
508
+ _define_property(this, "reader", _reader);
509
+ _define_property(this, "proxyTarget", void 0);
510
+ _define_property(this, "routeRenderHandler", void 0);
511
+ _define_property(this, "loaderHandler", null);
512
+ _define_property(this, "frameWebHandler", null);
513
+ _define_property(this, "frameAPIHandler", null);
514
+ _define_property(this, "proxyHandler", null);
515
+ _define_property(this, "_handler", void 0);
516
+ _define_property(this, "staticGenerate", void 0);
517
+ require("ignore-styles");
518
+ this.pwd = pwd;
519
+ this.distDir = _path.default.join(pwd, config.output.path || "dist");
520
+ this.workDir = this.distDir;
521
+ this.conf = config;
522
+ (0, _utils1.debug)("server conf", this.conf);
523
+ this.logger = logger;
524
+ this.metrics = metrics;
525
+ this.router = new _route.RouteMatchManager();
526
+ this.presetRoutes = routes;
527
+ this.proxyTarget = proxyTarget;
528
+ this.staticGenerate = staticGenerate || false;
529
+ this.runMode = runMode || _constants.RUN_MODE.FULL;
506
530
  }
507
531
  }
508
- // Annotate the CommonJS export names for ESM import in node:
509
- 0 && (module.exports = {
510
- ModernServer
511
- });
@@ -1,27 +1,13 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
- var modernServerSplit_exports = {};
19
- __export(modernServerSplit_exports, {
20
- createProdServer: () => createProdServer
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
21
4
  });
22
- module.exports = __toCommonJS(modernServerSplit_exports);
23
- var import_modernServer = require("./modernServer");
24
- class ModernSSRServer extends import_modernServer.ModernServer {
5
+ Object.defineProperty(exports, "createProdServer", {
6
+ enumerable: true,
7
+ get: () => createProdServer
8
+ });
9
+ const _modernServer = require("./modernServer");
10
+ class ModernSSRServer extends _modernServer.ModernServer {
25
11
  prepareAPIHandler(_) {
26
12
  return null;
27
13
  }
@@ -29,7 +15,7 @@ class ModernSSRServer extends import_modernServer.ModernServer {
29
15
  return this.render404(context);
30
16
  }
31
17
  }
32
- class ModernAPIServer extends import_modernServer.ModernServer {
18
+ class ModernAPIServer extends _modernServer.ModernServer {
33
19
  prepareWebHandler(_) {
34
20
  return null;
35
21
  }
@@ -37,7 +23,7 @@ class ModernAPIServer extends import_modernServer.ModernServer {
37
23
  return routes.filter((route) => route.isApi);
38
24
  }
39
25
  }
40
- class ModernWebServer extends import_modernServer.ModernServer {
26
+ class ModernWebServer extends _modernServer.ModernServer {
41
27
  async warmupSSRBundle() {
42
28
  return null;
43
29
  }
@@ -57,10 +43,6 @@ const createProdServer = (options) => {
57
43
  } else if (options.webOnly) {
58
44
  return new ModernWebServer(options);
59
45
  } else {
60
- return new import_modernServer.ModernServer(options);
46
+ return new _modernServer.ModernServer(options);
61
47
  }
62
48
  };
63
- // Annotate the CommonJS export names for ESM import in node:
64
- 0 && (module.exports = {
65
- createProdServer
66
- });
package/dist/cjs/type.js CHANGED
@@ -1,15 +1,4 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __copyProps = (to, from, except, desc) => {
6
- if (from && typeof from === "object" || typeof from === "function") {
7
- for (let key of __getOwnPropNames(from))
8
- if (!__hasOwnProp.call(to, key) && key !== except)
9
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
- }
11
- return to;
12
- };
13
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
14
- var type_exports = {};
15
- module.exports = __toCommonJS(type_exports);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });