@modern-js/prod-server 2.15.0 → 2.16.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 +14 -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,66 +1,51 @@
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 server_exports = {};
29
- __export(server_exports, {
30
- Server: () => Server
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
31
4
  });
32
- module.exports = __toCommonJS(server_exports);
33
- var import_path = __toESM(require("path"));
34
- var import_utils = require("@modern-js/utils");
35
- var import_server_core = require("@modern-js/server-core");
36
- var import_metrics = require("../libs/metrics");
37
- var import_loadConfig = require("../libs/loadConfig");
38
- var import_utils2 = require("../utils");
39
- var import_modernServerSplit = require("./modernServerSplit");
40
- class Server {
41
- constructor(options) {
42
- this.serverImpl = import_modernServerSplit.createProdServer;
43
- options.logger = options.logger || new import_utils.Logger({
44
- level: "warn"
5
+ Object.defineProperty(exports, "Server", {
6
+ enumerable: true,
7
+ get: () => Server
8
+ });
9
+ const _path = /* @__PURE__ */ _interop_require_default(require("path"));
10
+ const _utils = require("@modern-js/utils");
11
+ const _servercore = require("@modern-js/server-core");
12
+ const _metrics = require("../libs/metrics");
13
+ const _loadConfig = require("../libs/loadConfig");
14
+ const _utils1 = require("../utils");
15
+ const _modernServerSplit = require("./modernServerSplit");
16
+ function _define_property(obj, key, value) {
17
+ if (key in obj) {
18
+ Object.defineProperty(obj, key, {
19
+ value,
20
+ enumerable: true,
21
+ configurable: true,
22
+ writable: true
45
23
  });
46
- options.metrics = options.metrics || import_metrics.metrics;
47
- this.options = options;
48
- this.serverConfig = {};
24
+ } else {
25
+ obj[key] = value;
49
26
  }
27
+ return obj;
28
+ }
29
+ function _interop_require_default(obj) {
30
+ return obj && obj.__esModule ? obj : {
31
+ default: obj
32
+ };
33
+ }
34
+ class Server {
50
35
  /**
51
- * 初始化顺序
52
- * - 读取 .env.{process.env.MODERN_ENV} 文件,加载环境变量
53
- * - 获取 server runtime config
54
- * - 设置 context
55
- * - 创建 hooksRunner
56
- * - 合并插件,内置插件和 serverConfig 中配置的插件
57
- * - 执行 config hook
58
- * - 获取最终的配置
59
- * - 设置配置到 context
60
- * - 初始化 server
61
- * - 执行 prepare hook
62
- * - 执行 server init
63
- */
36
+ * 初始化顺序
37
+ * - 读取 .env.{process.env.MODERN_ENV} 文件,加载环境变量
38
+ * - 获取 server runtime config
39
+ * - 设置 context
40
+ * - 创建 hooksRunner
41
+ * - 合并插件,内置插件和 serverConfig 中配置的插件
42
+ * - 执行 config hook
43
+ * - 获取最终的配置
44
+ * - 设置配置到 context
45
+ * - 初始化 server
46
+ * - 执行 prepare hook
47
+ * - 执行 server init
48
+ */
64
49
  async init() {
65
50
  const { options } = this;
66
51
  await this.loadServerEnv(options);
@@ -76,10 +61,10 @@ class Server {
76
61
  return this;
77
62
  }
78
63
  /**
79
- * Execute config hooks
80
- * @param runner
81
- * @param options
82
- */
64
+ * Execute config hooks
65
+ * @param runner
66
+ * @param options
67
+ */
83
68
  runConfigHook(runner, serverConfig) {
84
69
  const newServerConfig = runner.config(serverConfig || {});
85
70
  return newServerConfig;
@@ -89,28 +74,21 @@ class Server {
89
74
  }
90
75
  initServerConfig(options) {
91
76
  const { pwd, serverConfigFile } = options;
92
- const distDirectory = import_path.default.join(pwd, options.config.output.path || "dist");
93
- const serverConfigPath = (0, import_loadConfig.getServerConfigPath)(
94
- distDirectory,
95
- serverConfigFile
96
- );
97
- const serverConfig = (0, import_loadConfig.requireConfig)(serverConfigPath);
77
+ const distDirectory = _path.default.join(pwd, options.config.output.path || "dist");
78
+ const serverConfigPath = (0, _loadConfig.getServerConfigPath)(distDirectory, serverConfigFile);
79
+ const serverConfig = (0, _loadConfig.requireConfig)(serverConfigPath);
98
80
  this.serverConfig = serverConfig;
99
81
  }
100
82
  /**
101
- *
102
- * merge cliConfig and serverConfig
103
- */
83
+ *
84
+ * merge cliConfig and serverConfig
85
+ */
104
86
  async initConfig(runner, options) {
105
87
  const { pwd, config } = options;
106
88
  const { serverConfig } = this;
107
89
  const finalServerConfig = this.runConfigHook(runner, serverConfig);
108
- const resolvedConfigPath = import_path.default.join(
109
- pwd,
110
- config.output.path || "dist",
111
- import_utils.OUTPUT_CONFIG_FILE
112
- );
113
- options.config = (0, import_loadConfig.loadConfig)({
90
+ const resolvedConfigPath = _path.default.join(pwd, config.output.path || "dist", _utils.OUTPUT_CONFIG_FILE);
91
+ options.config = (0, _loadConfig.loadConfig)({
114
92
  cliConfig: config,
115
93
  serverConfig: finalServerConfig,
116
94
  resolvedConfigPath
@@ -121,11 +99,13 @@ class Server {
121
99
  }
122
100
  listen(options, listener) {
123
101
  const callback = () => {
124
- listener == null ? void 0 : listener();
102
+ listener === null || listener === void 0 ? void 0 : listener();
125
103
  };
126
104
  if (typeof options === "object") {
127
105
  if (process.env.PORT) {
128
- Object.assign(options, { port: process.env.PORT });
106
+ Object.assign(options, {
107
+ port: process.env.PORT
108
+ });
129
109
  }
130
110
  this.app.listen(options, callback);
131
111
  } else {
@@ -142,31 +122,30 @@ class Server {
142
122
  return this.server.render(req, res, url);
143
123
  }
144
124
  async createHookRunner() {
145
- import_server_core.serverManager.clear();
125
+ _servercore.serverManager.clear();
146
126
  const { options } = this;
147
- const {
148
- internalPlugins = import_utils.INTERNAL_SERVER_PLUGINS,
149
- pwd,
150
- plugins = []
151
- } = options;
127
+ const { internalPlugins = _utils.INTERNAL_SERVER_PLUGINS, pwd, plugins = [] } = options;
152
128
  const serverPlugins = this.serverConfig.plugins || [];
153
- const loadedPlugins = (0, import_server_core.loadPlugins)(pwd, [...serverPlugins, ...plugins], {
129
+ const loadedPlugins = (0, _servercore.loadPlugins)(pwd, [
130
+ ...serverPlugins,
131
+ ...plugins
132
+ ], {
154
133
  internalPlugins
155
134
  });
156
- (0, import_utils2.debug)("plugins", loadedPlugins);
135
+ (0, _utils1.debug)("plugins", loadedPlugins);
157
136
  loadedPlugins.forEach((p) => {
158
- import_server_core.serverManager.usePlugin(p);
137
+ _servercore.serverManager.usePlugin(p);
159
138
  });
160
- const hooksRunner = await import_server_core.serverManager.init();
139
+ const hooksRunner = await _servercore.serverManager.init();
161
140
  return hooksRunner;
162
141
  }
163
142
  async injectContext(runner, options) {
164
143
  const appContext = this.initAppContext();
165
144
  const { config, pwd } = options;
166
- import_server_core.ConfigContext.set(config);
167
- import_server_core.AppContext.set({
145
+ _servercore.ConfigContext.set(config);
146
+ _servercore.AppContext.set({
168
147
  ...appContext,
169
- distDirectory: import_path.default.join(pwd, config.output.path || "dist")
148
+ distDirectory: _path.default.join(pwd, config.output.path || "dist")
170
149
  });
171
150
  }
172
151
  initAppContext() {
@@ -177,27 +156,42 @@ class Server {
177
156
  }));
178
157
  return {
179
158
  appDirectory,
180
- apiDirectory: appContext == null ? void 0 : appContext.apiDirectory,
181
- lambdaDirectory: appContext == null ? void 0 : appContext.lambdaDirectory,
182
- sharedDirectory: (appContext == null ? void 0 : appContext.sharedDirectory) || import_path.default.resolve(appDirectory, import_utils.SHARED_DIR),
183
- distDirectory: import_path.default.join(appDirectory, config.output.path || "dist"),
159
+ apiDirectory: appContext === null || appContext === void 0 ? void 0 : appContext.apiDirectory,
160
+ lambdaDirectory: appContext === null || appContext === void 0 ? void 0 : appContext.lambdaDirectory,
161
+ sharedDirectory: (appContext === null || appContext === void 0 ? void 0 : appContext.sharedDirectory) || _path.default.resolve(appDirectory, _utils.SHARED_DIR),
162
+ distDirectory: _path.default.join(appDirectory, config.output.path || "dist"),
184
163
  plugins: serverPlugins
185
164
  };
186
165
  }
187
166
  async loadServerEnv(options) {
188
167
  const { pwd: appDirectory } = options;
189
168
  const serverEnv = process.env.MODERN_ENV;
190
- const defaultEnvPath = import_path.default.resolve(appDirectory, `.env`);
191
- const serverEnvPath = import_path.default.resolve(appDirectory, `.env.${serverEnv}`);
192
- for (const envPath of [serverEnvPath, defaultEnvPath]) {
193
- if (await import_utils.fs.pathExists(envPath) && !(await import_utils.fs.stat(envPath)).isDirectory()) {
194
- const envConfig = import_utils.dotenv.config({ path: envPath });
195
- (0, import_utils.dotenvExpand)(envConfig);
169
+ const defaultEnvPath = _path.default.resolve(appDirectory, `.env`);
170
+ const serverEnvPath = _path.default.resolve(appDirectory, `.env.${serverEnv}`);
171
+ for (const envPath of [
172
+ serverEnvPath,
173
+ defaultEnvPath
174
+ ]) {
175
+ if (await _utils.fs.pathExists(envPath) && !(await _utils.fs.stat(envPath)).isDirectory()) {
176
+ const envConfig = _utils.dotenv.config({
177
+ path: envPath
178
+ });
179
+ (0, _utils.dotenvExpand)(envConfig);
196
180
  }
197
181
  }
198
182
  }
183
+ constructor(options) {
184
+ _define_property(this, "options", void 0);
185
+ _define_property(this, "serverImpl", _modernServerSplit.createProdServer);
186
+ _define_property(this, "server", void 0);
187
+ _define_property(this, "app", void 0);
188
+ _define_property(this, "runner", void 0);
189
+ _define_property(this, "serverConfig", void 0);
190
+ options.logger = options.logger || new _utils.Logger({
191
+ level: "warn"
192
+ });
193
+ options.metrics = options.metrics || _metrics.metrics;
194
+ this.options = options;
195
+ this.serverConfig = {};
196
+ }
199
197
  }
200
- // Annotate the CommonJS export names for ESM import in node:
201
- 0 && (module.exports = {
202
- Server
203
- });