@modern-js/prod-server 2.46.1 → 2.47.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 (169) hide show
  1. package/README.md +20 -16
  2. package/dist/cjs/{libs/hook-api/route.js → error.js} +16 -25
  3. package/dist/cjs/index.js +46 -24
  4. package/dist/esm/error.js +15 -0
  5. package/dist/esm/index.js +105 -19
  6. package/dist/esm-node/error.js +14 -0
  7. package/dist/esm-node/index.js +44 -17
  8. package/dist/types/error.d.ts +6 -0
  9. package/dist/types/index.d.ts +21 -11
  10. package/package.json +19 -93
  11. package/dist/cjs/constants.js +0 -72
  12. package/dist/cjs/libs/context/context.js +0 -240
  13. package/dist/cjs/libs/context/index.js +0 -31
  14. package/dist/cjs/libs/hook-api/afterRenderForStream.js +0 -34
  15. package/dist/cjs/libs/hook-api/base.js +0 -107
  16. package/dist/cjs/libs/hook-api/index.js +0 -85
  17. package/dist/cjs/libs/hook-api/index.worker.js +0 -119
  18. package/dist/cjs/libs/hook-api/template.js +0 -74
  19. package/dist/cjs/libs/hook-api/templateForStream.js +0 -52
  20. package/dist/cjs/libs/loadConfig.js +0 -70
  21. package/dist/cjs/libs/metrics.js +0 -33
  22. package/dist/cjs/libs/preload/flushServerHeader.js +0 -49
  23. package/dist/cjs/libs/preload/index.js +0 -24
  24. package/dist/cjs/libs/preload/parseLinks.js +0 -124
  25. package/dist/cjs/libs/preload/shouldFlushServerHeader.js +0 -52
  26. package/dist/cjs/libs/preload/transformLinks2String.js +0 -150
  27. package/dist/cjs/libs/proxy.js +0 -99
  28. package/dist/cjs/libs/render/index.js +0 -97
  29. package/dist/cjs/libs/render/measure.js +0 -74
  30. package/dist/cjs/libs/render/ssr.js +0 -126
  31. package/dist/cjs/libs/render/ssrCache/cacheMod.js +0 -56
  32. package/dist/cjs/libs/render/ssrCache/index.js +0 -81
  33. package/dist/cjs/libs/render/ssrCache/manager.js +0 -104
  34. package/dist/cjs/libs/render/static.js +0 -72
  35. package/dist/cjs/libs/render/type.js +0 -33
  36. package/dist/cjs/libs/render/utils.js +0 -41
  37. package/dist/cjs/libs/reporter.js +0 -39
  38. package/dist/cjs/libs/route/index.js +0 -85
  39. package/dist/cjs/libs/route/matcher.js +0 -117
  40. package/dist/cjs/libs/route/route.js +0 -49
  41. package/dist/cjs/libs/serveFile.js +0 -84
  42. package/dist/cjs/libs/serverTiming.js +0 -44
  43. package/dist/cjs/renderHtml.js +0 -72
  44. package/dist/cjs/server/index.js +0 -229
  45. package/dist/cjs/server/modernServer.js +0 -532
  46. package/dist/cjs/server/modernServerSplit.js +0 -67
  47. package/dist/cjs/type.js +0 -16
  48. package/dist/cjs/utils.js +0 -164
  49. package/dist/cjs/workerServer.js +0 -264
  50. package/dist/esm/constants.js +0 -43
  51. package/dist/esm/libs/context/context.js +0 -292
  52. package/dist/esm/libs/context/index.js +0 -8
  53. package/dist/esm/libs/hook-api/afterRenderForStream.js +0 -33
  54. package/dist/esm/libs/hook-api/base.js +0 -108
  55. package/dist/esm/libs/hook-api/index.js +0 -55
  56. package/dist/esm/libs/hook-api/index.worker.js +0 -113
  57. package/dist/esm/libs/hook-api/route.js +0 -41
  58. package/dist/esm/libs/hook-api/template.js +0 -84
  59. package/dist/esm/libs/hook-api/templateForStream.js +0 -35
  60. package/dist/esm/libs/loadConfig.js +0 -36
  61. package/dist/esm/libs/metrics.js +0 -9
  62. package/dist/esm/libs/preload/flushServerHeader.js +0 -50
  63. package/dist/esm/libs/preload/index.js +0 -2
  64. package/dist/esm/libs/preload/parseLinks.js +0 -172
  65. package/dist/esm/libs/preload/shouldFlushServerHeader.js +0 -27
  66. package/dist/esm/libs/preload/transformLinks2String.js +0 -140
  67. package/dist/esm/libs/proxy.js +0 -160
  68. package/dist/esm/libs/render/index.js +0 -142
  69. package/dist/esm/libs/render/measure.js +0 -69
  70. package/dist/esm/libs/render/ssr.js +0 -129
  71. package/dist/esm/libs/render/ssrCache/cacheMod.js +0 -33
  72. package/dist/esm/libs/render/ssrCache/index.js +0 -146
  73. package/dist/esm/libs/render/ssrCache/manager.js +0 -159
  74. package/dist/esm/libs/render/static.js +0 -100
  75. package/dist/esm/libs/render/type.js +0 -9
  76. package/dist/esm/libs/render/utils.js +0 -16
  77. package/dist/esm/libs/reporter.js +0 -15
  78. package/dist/esm/libs/route/index.js +0 -116
  79. package/dist/esm/libs/route/matcher.js +0 -128
  80. package/dist/esm/libs/route/route.js +0 -26
  81. package/dist/esm/libs/serveFile.js +0 -68
  82. package/dist/esm/libs/serverTiming.js +0 -30
  83. package/dist/esm/renderHtml.js +0 -150
  84. package/dist/esm/server/index.js +0 -426
  85. package/dist/esm/server/modernServer.js +0 -1018
  86. package/dist/esm/server/modernServerSplit.js +0 -138
  87. package/dist/esm/type.js +0 -0
  88. package/dist/esm/utils.js +0 -103
  89. package/dist/esm/workerServer.js +0 -347
  90. package/dist/esm-node/constants.js +0 -43
  91. package/dist/esm-node/libs/context/context.js +0 -206
  92. package/dist/esm-node/libs/context/index.js +0 -6
  93. package/dist/esm-node/libs/hook-api/afterRenderForStream.js +0 -10
  94. package/dist/esm-node/libs/hook-api/base.js +0 -72
  95. package/dist/esm-node/libs/hook-api/index.js +0 -57
  96. package/dist/esm-node/libs/hook-api/index.worker.js +0 -92
  97. package/dist/esm-node/libs/hook-api/route.js +0 -24
  98. package/dist/esm-node/libs/hook-api/template.js +0 -49
  99. package/dist/esm-node/libs/hook-api/templateForStream.js +0 -28
  100. package/dist/esm-node/libs/loadConfig.js +0 -34
  101. package/dist/esm-node/libs/metrics.js +0 -9
  102. package/dist/esm-node/libs/preload/flushServerHeader.js +0 -25
  103. package/dist/esm-node/libs/preload/index.js +0 -2
  104. package/dist/esm-node/libs/preload/parseLinks.js +0 -90
  105. package/dist/esm-node/libs/preload/shouldFlushServerHeader.js +0 -27
  106. package/dist/esm-node/libs/preload/transformLinks2String.js +0 -126
  107. package/dist/esm-node/libs/proxy.js +0 -74
  108. package/dist/esm-node/libs/render/index.js +0 -63
  109. package/dist/esm-node/libs/render/measure.js +0 -49
  110. package/dist/esm-node/libs/render/ssr.js +0 -92
  111. package/dist/esm-node/libs/render/ssrCache/cacheMod.js +0 -22
  112. package/dist/esm-node/libs/render/ssrCache/index.js +0 -57
  113. package/dist/esm-node/libs/render/ssrCache/manager.js +0 -80
  114. package/dist/esm-node/libs/render/static.js +0 -38
  115. package/dist/esm-node/libs/render/type.js +0 -9
  116. package/dist/esm-node/libs/render/utils.js +0 -16
  117. package/dist/esm-node/libs/reporter.js +0 -15
  118. package/dist/esm-node/libs/route/index.js +0 -60
  119. package/dist/esm-node/libs/route/matcher.js +0 -93
  120. package/dist/esm-node/libs/route/route.js +0 -25
  121. package/dist/esm-node/libs/serveFile.js +0 -49
  122. package/dist/esm-node/libs/serverTiming.js +0 -20
  123. package/dist/esm-node/renderHtml.js +0 -80
  124. package/dist/esm-node/server/index.js +0 -195
  125. package/dist/esm-node/server/modernServer.js +0 -498
  126. package/dist/esm-node/server/modernServerSplit.js +0 -43
  127. package/dist/esm-node/type.js +0 -0
  128. package/dist/esm-node/utils.js +0 -132
  129. package/dist/esm-node/workerServer.js +0 -239
  130. package/dist/types/constants.d.ts +0 -30
  131. package/dist/types/libs/context/context.d.ts +0 -62
  132. package/dist/types/libs/context/index.d.ts +0 -7
  133. package/dist/types/libs/hook-api/afterRenderForStream.d.ts +0 -4
  134. package/dist/types/libs/hook-api/base.d.ts +0 -53
  135. package/dist/types/libs/hook-api/index.d.ts +0 -6
  136. package/dist/types/libs/hook-api/index.worker.d.ts +0 -19
  137. package/dist/types/libs/hook-api/route.d.ts +0 -9
  138. package/dist/types/libs/hook-api/template.d.ts +0 -22
  139. package/dist/types/libs/hook-api/templateForStream.d.ts +0 -8
  140. package/dist/types/libs/loadConfig.d.ts +0 -13
  141. package/dist/types/libs/metrics.d.ts +0 -3
  142. package/dist/types/libs/preload/flushServerHeader.d.ts +0 -14
  143. package/dist/types/libs/preload/index.d.ts +0 -2
  144. package/dist/types/libs/preload/parseLinks.d.ts +0 -13
  145. package/dist/types/libs/preload/shouldFlushServerHeader.d.ts +0 -3
  146. package/dist/types/libs/preload/transformLinks2String.d.ts +0 -3
  147. package/dist/types/libs/proxy.d.ts +0 -13
  148. package/dist/types/libs/render/index.d.ts +0 -21
  149. package/dist/types/libs/render/measure.d.ts +0 -10
  150. package/dist/types/libs/render/ssr.d.ts +0 -12
  151. package/dist/types/libs/render/ssrCache/cacheMod.d.ts +0 -8
  152. package/dist/types/libs/render/ssrCache/index.d.ts +0 -7
  153. package/dist/types/libs/render/ssrCache/manager.d.ts +0 -14
  154. package/dist/types/libs/render/static.d.ts +0 -3
  155. package/dist/types/libs/render/type.d.ts +0 -36
  156. package/dist/types/libs/render/utils.d.ts +0 -5
  157. package/dist/types/libs/reporter.d.ts +0 -2
  158. package/dist/types/libs/route/index.d.ts +0 -15
  159. package/dist/types/libs/route/matcher.d.ts +0 -15
  160. package/dist/types/libs/route/route.d.ts +0 -14
  161. package/dist/types/libs/serveFile.d.ts +0 -9
  162. package/dist/types/libs/serverTiming.d.ts +0 -13
  163. package/dist/types/renderHtml.d.ts +0 -23
  164. package/dist/types/server/index.d.ts +0 -55
  165. package/dist/types/server/modernServer.d.ts +0 -71
  166. package/dist/types/server/modernServerSplit.d.ts +0 -2
  167. package/dist/types/type.d.ts +0 -77
  168. package/dist/types/utils.d.ts +0 -24
  169. package/dist/types/workerServer.d.ts +0 -59
package/README.md CHANGED
@@ -1,26 +1,30 @@
1
- <p align="center">
2
- <a href="https://modernjs.dev" target="blank"><img src="https://lf3-static.bytednsdoc.com/obj/eden-cn/ylaelkeh7nuhfnuhf/modernjs-cover.png" width="300" alt="Modern.js Logo" /></a>
3
- </p>
1
+ # Modern.js Package
4
2
 
5
- <h1 align="center">Modern.js</h1>
3
+ ## Get Started
6
4
 
7
- <p align="center">
8
- A Progressive React Framework for modern web development.
9
- </p>
5
+ Run and debug the module:
10
6
 
11
- ## Getting Started
7
+ ```bash
8
+ pnpm run dev
9
+ ```
12
10
 
13
- Please follow [Quick Start](https://modernjs.dev/en/guides/get-started/quick-start) to get started with Modern.js.
11
+ Run test cases:
14
12
 
15
- ## Documentation
13
+ ```bash
14
+ pnpm run test
15
+ ```
16
16
 
17
- - [English Documentation](https://modernjs.dev/en/)
18
- - [中文文档](https://modernjs.dev)
17
+ Build the module for production:
19
18
 
20
- ## Contributing
19
+ ```bash
20
+ pnpm run build
21
+ ```
21
22
 
22
- Please read the [Contributing Guide](https://github.com/web-infra-dev/modern.js/blob/main/CONTRIBUTING.md).
23
+ Enable optional features:
23
24
 
24
- ## License
25
+ ```bash
26
+ pnpm run new
27
+ ```
25
28
 
26
- Modern.js is [MIT licensed](https://github.com/web-infra-dev/modern.js/blob/main/LICENSE).
29
+
30
+ For more information, see the [Modern.js Module documentation](https://modernjs.dev/module-tools/en).
@@ -16,33 +16,24 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var route_exports = {};
20
- __export(route_exports, {
21
- RouteAPI: () => RouteAPI
19
+ var error_exports = {};
20
+ __export(error_exports, {
21
+ ErrorDigest: () => ErrorDigest,
22
+ onError: () => onError
22
23
  });
23
- module.exports = __toCommonJS(route_exports);
24
- var import_define_property = require("@swc/helpers/_/_define_property");
25
- class RouteAPI {
26
- redirect(url, status = 302) {
27
- this.url = url;
28
- this.status = status;
29
- }
30
- rewrite(entryName) {
31
- this.current = entryName;
32
- }
33
- use(entryName) {
34
- this.rewrite(entryName);
35
- }
36
- constructor(entryName) {
37
- (0, import_define_property._)(this, "current", void 0);
38
- (0, import_define_property._)(this, "status", void 0);
39
- (0, import_define_property._)(this, "url", void 0);
40
- this.current = entryName;
41
- this.status = 200;
42
- this.url = "";
43
- }
24
+ module.exports = __toCommonJS(error_exports);
25
+ var ErrorDigest;
26
+ (function(ErrorDigest2) {
27
+ ErrorDigest2["ENOTF"] = "Page could not be found";
28
+ ErrorDigest2["EINTER"] = "Internal server error";
29
+ })(ErrorDigest || (ErrorDigest = {}));
30
+ function onError(logger, digest, error, req) {
31
+ const headers = req === null || req === void 0 ? void 0 : req.headers;
32
+ headers === null || headers === void 0 ? void 0 : headers.delete("cookie");
33
+ logger.error(req ? `Server Error - ${digest}, error = %s, req.url = %s, req.headers = %o` : `Server Error - ${digest}, error = %s`, error instanceof Error ? error.stack || error.message : error, req === null || req === void 0 ? void 0 : req.url, headers);
44
34
  }
45
35
  // Annotate the CommonJS export names for ESM import in node:
46
36
  0 && (module.exports = {
47
- RouteAPI
37
+ ErrorDigest,
38
+ onError
48
39
  });
package/dist/cjs/index.js CHANGED
@@ -15,36 +15,58 @@ var __copyProps = (to, from, except, desc) => {
15
15
  }
16
16
  return to;
17
17
  };
18
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
19
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
19
  var src_exports = {};
21
20
  __export(src_exports, {
22
- ModernServer: () => import_modernServer.ModernServer,
23
- Server: () => import_server.Server,
24
- createProxyHandler: () => import_proxy.createProxyHandler,
25
- createRenderHandler: () => import_render.createRenderHandler,
26
- default: () => src_default
21
+ createProdServer: () => createProdServer,
22
+ initProdMiddlewares: () => initProdMiddlewares
27
23
  });
28
24
  module.exports = __toCommonJS(src_exports);
29
- var import_server = require("./server");
30
- var import_modernServer = require("./server/modernServer");
31
- var import_proxy = require("./libs/proxy");
32
- __reExport(src_exports, require("./type"), module.exports);
33
- __reExport(src_exports, require("./constants"), module.exports);
34
- var import_render = require("./libs/render");
35
- var src_default = (options) => {
36
- if (options == null) {
37
- throw new Error("can not start mserver without options");
38
- }
39
- const server = new import_server.Server(options);
40
- return server.init();
25
+ var import_base = require("@modern-js/server-core/base");
26
+ var import_utils = require("@modern-js/utils");
27
+ var import_error = require("./error");
28
+ const createProdServer = async (options) => {
29
+ const server = (0, import_base.createServerBase)(options);
30
+ await (0, import_base.loadServerEnv)(options);
31
+ await server.init();
32
+ const nodeServer = (0, import_base.createNodeServer)(server.handle.bind(server));
33
+ await server.runner.beforeServerInit({
34
+ app: nodeServer
35
+ });
36
+ await initProdMiddlewares(server, options);
37
+ return nodeServer;
38
+ };
39
+ const initProdMiddlewares = async (server, options) => {
40
+ const { config, pwd, routes, logger: inputLogger } = options;
41
+ const logger = inputLogger || (0, import_utils.createLogger)({
42
+ level: "warn"
43
+ });
44
+ const staticMiddleware = (0, import_base.createStaticMiddleware)({
45
+ pwd,
46
+ output: (config === null || config === void 0 ? void 0 : config.output) || {},
47
+ html: (config === null || config === void 0 ? void 0 : config.html) || {}
48
+ });
49
+ server.all("*", (0, import_base.injectReporter)());
50
+ server.all("*", (0, import_base.injectLogger)(logger));
51
+ server.all("*", (0, import_base.createInjectHtml)(pwd, routes));
52
+ server.notFound((c) => {
53
+ const logger2 = c.get("logger");
54
+ (0, import_error.onError)(logger2, import_error.ErrorDigest.ENOTF, "404 not found", c.req.raw);
55
+ return c.html((0, import_base.createErrorHtml)(404), 404);
56
+ });
57
+ server.onError((err, c) => {
58
+ const logger2 = c.get("logger");
59
+ (0, import_error.onError)(logger2, import_error.ErrorDigest.EINTER, err, c.req.raw);
60
+ return c.html((0, import_base.createErrorHtml)(500), 500);
61
+ });
62
+ server.get("*", staticMiddleware);
63
+ server.get("*", import_base.favionFallbackMiddleware);
64
+ await (0, import_base.bindBFFHandler)(server, options);
65
+ await (0, import_base.bindRenderHandler)(server, options);
66
+ return server;
41
67
  };
42
68
  // Annotate the CommonJS export names for ESM import in node:
43
69
  0 && (module.exports = {
44
- ModernServer,
45
- Server,
46
- createProxyHandler,
47
- createRenderHandler,
48
- ...require("./type"),
49
- ...require("./constants")
70
+ createProdServer,
71
+ initProdMiddlewares
50
72
  });
@@ -0,0 +1,15 @@
1
+ import { _ as _instanceof } from "@swc/helpers/_/_instanceof";
2
+ var ErrorDigest;
3
+ (function(ErrorDigest2) {
4
+ ErrorDigest2["ENOTF"] = "Page could not be found";
5
+ ErrorDigest2["EINTER"] = "Internal server error";
6
+ })(ErrorDigest || (ErrorDigest = {}));
7
+ function onError(logger, digest, error, req) {
8
+ var headers = req === null || req === void 0 ? void 0 : req.headers;
9
+ headers === null || headers === void 0 ? void 0 : headers.delete("cookie");
10
+ logger.error(req ? "Server Error - ".concat(digest, ", error = %s, req.url = %s, req.headers = %o") : "Server Error - ".concat(digest, ", error = %s"), _instanceof(error, Error) ? error.stack || error.message : error, req === null || req === void 0 ? void 0 : req.url, headers);
11
+ }
12
+ export {
13
+ ErrorDigest,
14
+ onError
15
+ };
package/dist/esm/index.js CHANGED
@@ -1,21 +1,107 @@
1
- import { Server } from "./server";
2
- import { ModernServer } from "./server/modernServer";
3
- import { createProxyHandler } from "./libs/proxy";
4
- export * from "./type";
5
- export * from "./constants";
6
- import { createRenderHandler } from "./libs/render";
7
- function src_default(options) {
8
- if (options == null) {
9
- throw new Error("can not start mserver without options");
10
- }
11
- var server = new Server(options);
12
- return server.init();
13
- }
14
- ;
1
+ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
3
+ import { createNodeServer, createStaticMiddleware, bindRenderHandler, favionFallbackMiddleware, injectReporter, injectLogger, createErrorHtml, loadServerEnv, bindBFFHandler, createServerBase, createInjectHtml } from "@modern-js/server-core/base";
4
+ import { createLogger } from "@modern-js/utils";
5
+ import { ErrorDigest, onError } from "./error";
6
+ var createProdServer = function() {
7
+ var _ref = _async_to_generator(function(options) {
8
+ var server, nodeServer;
9
+ return _ts_generator(this, function(_state) {
10
+ switch (_state.label) {
11
+ case 0:
12
+ server = createServerBase(options);
13
+ return [
14
+ 4,
15
+ loadServerEnv(options)
16
+ ];
17
+ case 1:
18
+ _state.sent();
19
+ return [
20
+ 4,
21
+ server.init()
22
+ ];
23
+ case 2:
24
+ _state.sent();
25
+ nodeServer = createNodeServer(server.handle.bind(server));
26
+ return [
27
+ 4,
28
+ server.runner.beforeServerInit({
29
+ app: nodeServer
30
+ })
31
+ ];
32
+ case 3:
33
+ _state.sent();
34
+ return [
35
+ 4,
36
+ initProdMiddlewares(server, options)
37
+ ];
38
+ case 4:
39
+ _state.sent();
40
+ return [
41
+ 2,
42
+ nodeServer
43
+ ];
44
+ }
45
+ });
46
+ });
47
+ return function createProdServer2(options) {
48
+ return _ref.apply(this, arguments);
49
+ };
50
+ }();
51
+ var initProdMiddlewares = function() {
52
+ var _ref = _async_to_generator(function(server, options) {
53
+ var config, pwd, routes, inputLogger, logger, staticMiddleware;
54
+ return _ts_generator(this, function(_state) {
55
+ switch (_state.label) {
56
+ case 0:
57
+ config = options.config, pwd = options.pwd, routes = options.routes, inputLogger = options.logger;
58
+ logger = inputLogger || createLogger({
59
+ level: "warn"
60
+ });
61
+ staticMiddleware = createStaticMiddleware({
62
+ pwd,
63
+ output: (config === null || config === void 0 ? void 0 : config.output) || {},
64
+ html: (config === null || config === void 0 ? void 0 : config.html) || {}
65
+ });
66
+ server.all("*", injectReporter());
67
+ server.all("*", injectLogger(logger));
68
+ server.all("*", createInjectHtml(pwd, routes));
69
+ server.notFound(function(c) {
70
+ var logger2 = c.get("logger");
71
+ onError(logger2, ErrorDigest.ENOTF, "404 not found", c.req.raw);
72
+ return c.html(createErrorHtml(404), 404);
73
+ });
74
+ server.onError(function(err, c) {
75
+ var logger2 = c.get("logger");
76
+ onError(logger2, ErrorDigest.EINTER, err, c.req.raw);
77
+ return c.html(createErrorHtml(500), 500);
78
+ });
79
+ server.get("*", staticMiddleware);
80
+ server.get("*", favionFallbackMiddleware);
81
+ return [
82
+ 4,
83
+ bindBFFHandler(server, options)
84
+ ];
85
+ case 1:
86
+ _state.sent();
87
+ return [
88
+ 4,
89
+ bindRenderHandler(server, options)
90
+ ];
91
+ case 2:
92
+ _state.sent();
93
+ return [
94
+ 2,
95
+ server
96
+ ];
97
+ }
98
+ });
99
+ });
100
+ return function initProdMiddlewares2(server, options) {
101
+ return _ref.apply(this, arguments);
102
+ };
103
+ }();
15
104
  export {
16
- ModernServer,
17
- Server,
18
- createProxyHandler,
19
- createRenderHandler,
20
- src_default as default
105
+ createProdServer,
106
+ initProdMiddlewares
21
107
  };
@@ -0,0 +1,14 @@
1
+ var ErrorDigest;
2
+ (function(ErrorDigest2) {
3
+ ErrorDigest2["ENOTF"] = "Page could not be found";
4
+ ErrorDigest2["EINTER"] = "Internal server error";
5
+ })(ErrorDigest || (ErrorDigest = {}));
6
+ function onError(logger, digest, error, req) {
7
+ const headers = req === null || req === void 0 ? void 0 : req.headers;
8
+ headers === null || headers === void 0 ? void 0 : headers.delete("cookie");
9
+ logger.error(req ? `Server Error - ${digest}, error = %s, req.url = %s, req.headers = %o` : `Server Error - ${digest}, error = %s`, error instanceof Error ? error.stack || error.message : error, req === null || req === void 0 ? void 0 : req.url, headers);
10
+ }
11
+ export {
12
+ ErrorDigest,
13
+ onError
14
+ };
@@ -1,20 +1,47 @@
1
- import { Server } from "./server";
2
- import { ModernServer } from "./server/modernServer";
3
- import { createProxyHandler } from "./libs/proxy";
4
- export * from "./type";
5
- export * from "./constants";
6
- import { createRenderHandler } from "./libs/render";
7
- var src_default = (options) => {
8
- if (options == null) {
9
- throw new Error("can not start mserver without options");
10
- }
11
- const server = new Server(options);
12
- return server.init();
1
+ import { createNodeServer, createStaticMiddleware, bindRenderHandler, favionFallbackMiddleware, injectReporter, injectLogger, createErrorHtml, loadServerEnv, bindBFFHandler, createServerBase, createInjectHtml } from "@modern-js/server-core/base";
2
+ import { createLogger } from "@modern-js/utils";
3
+ import { ErrorDigest, onError } from "./error";
4
+ const createProdServer = async (options) => {
5
+ const server = createServerBase(options);
6
+ await loadServerEnv(options);
7
+ await server.init();
8
+ const nodeServer = createNodeServer(server.handle.bind(server));
9
+ await server.runner.beforeServerInit({
10
+ app: nodeServer
11
+ });
12
+ await initProdMiddlewares(server, options);
13
+ return nodeServer;
14
+ };
15
+ const initProdMiddlewares = async (server, options) => {
16
+ const { config, pwd, routes, logger: inputLogger } = options;
17
+ const logger = inputLogger || createLogger({
18
+ level: "warn"
19
+ });
20
+ const staticMiddleware = createStaticMiddleware({
21
+ pwd,
22
+ output: (config === null || config === void 0 ? void 0 : config.output) || {},
23
+ html: (config === null || config === void 0 ? void 0 : config.html) || {}
24
+ });
25
+ server.all("*", injectReporter());
26
+ server.all("*", injectLogger(logger));
27
+ server.all("*", createInjectHtml(pwd, routes));
28
+ server.notFound((c) => {
29
+ const logger2 = c.get("logger");
30
+ onError(logger2, ErrorDigest.ENOTF, "404 not found", c.req.raw);
31
+ return c.html(createErrorHtml(404), 404);
32
+ });
33
+ server.onError((err, c) => {
34
+ const logger2 = c.get("logger");
35
+ onError(logger2, ErrorDigest.EINTER, err, c.req.raw);
36
+ return c.html(createErrorHtml(500), 500);
37
+ });
38
+ server.get("*", staticMiddleware);
39
+ server.get("*", favionFallbackMiddleware);
40
+ await bindBFFHandler(server, options);
41
+ await bindRenderHandler(server, options);
42
+ return server;
13
43
  };
14
44
  export {
15
- ModernServer,
16
- Server,
17
- createProxyHandler,
18
- createRenderHandler,
19
- src_default as default
45
+ createProdServer,
46
+ initProdMiddlewares
20
47
  };
@@ -0,0 +1,6 @@
1
+ import { Logger } from '@modern-js/types';
2
+ export declare enum ErrorDigest {
3
+ ENOTF = "Page could not be found",
4
+ EINTER = "Internal server error"
5
+ }
6
+ export declare function onError(logger: Logger, digest: ErrorDigest, error: Error | string, req?: Request): void;
@@ -1,11 +1,21 @@
1
- import { ModernServerOptions } from './type';
2
- import { Server } from './server';
3
- export { Server };
4
- export type { ServerConfig } from '@modern-js/server-core';
5
- export { ModernServer } from './server/modernServer';
6
- export { createProxyHandler } from './libs/proxy';
7
- export * from './type';
8
- export * from './constants';
9
- export { createRenderHandler } from './libs/render';
10
- declare const _default: (options: ModernServerOptions) => Promise<Server>;
11
- export default _default;
1
+ /// <reference types="node" />
2
+ /// <reference types="node/http" />
3
+ /// <reference types="@modern-js/server-core/dist/types/core/server" />
4
+ import { ServerBase, ServerBaseOptions, BindRenderHandleOptions } from '@modern-js/server-core/base';
5
+ import { Logger, Reporter } from '@modern-js/types';
6
+ interface MonitoOptions {
7
+ logger?: Logger;
8
+ }
9
+ export type ProdServerOptions = ServerBaseOptions & Omit<BindRenderHandleOptions, 'templates'> & MonitoOptions;
10
+ type BaseEnv = {
11
+ Variables: {
12
+ logger: Logger;
13
+ reporter: Reporter;
14
+ };
15
+ };
16
+ export declare const createProdServer: (options: ProdServerOptions) => Promise<import("http").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse> & {
17
+ getRequestHandler: () => (req: import("http").IncomingMessage, res: import("@modern-js/server-core/dist/types/core").NodeResponse) => Promise<void>;
18
+ }>;
19
+ export type InitProdMiddlewares = typeof initProdMiddlewares;
20
+ export declare const initProdMiddlewares: (server: ServerBase<BaseEnv>, options: ProdServerOptions) => Promise<ServerBase<BaseEnv>>;
21
+ export {};
package/package.json CHANGED
@@ -1,108 +1,34 @@
1
1
  {
2
2
  "name": "@modern-js/prod-server",
3
- "description": "A Progressive React Framework for modern web development.",
4
- "homepage": "https://modernjs.dev",
5
- "bugs": "https://github.com/web-infra-dev/modern.js/issues",
6
- "repository": {
7
- "type": "git",
8
- "url": "https://github.com/web-infra-dev/modern.js",
9
- "directory": "packages/server/prod-server"
10
- },
11
- "license": "MIT",
12
- "keywords": [
13
- "react",
14
- "framework",
15
- "modern",
16
- "modern.js"
17
- ],
18
- "version": "2.46.1",
19
- "jsnext:source": "./src/index.ts",
3
+ "version": "2.47.1-alpha.0",
20
4
  "types": "./dist/types/index.d.ts",
21
5
  "main": "./dist/cjs/index.js",
22
- "module": "./dist/esm/index.js",
23
- "exports": {
24
- ".": {
25
- "types": "./dist/types/index.d.ts",
26
- "node": {
27
- "jsnext:source": "./src/index.ts",
28
- "import": "./dist/esm-node/index.js",
29
- "require": "./dist/cjs/index.js"
30
- },
31
- "default": "./dist/esm/index.js"
32
- },
33
- "./worker": {
34
- "types": "./dist/types/workerServer.d.ts",
35
- "node": {
36
- "jsnext:source": "./src/workerServer.ts",
37
- "import": "./dist/esm-node/workerServer.js",
38
- "require": "./dist/cjs/workerServer.js"
39
- },
40
- "default": "./dist/esm/workerServer.js"
41
- },
42
- "./renderHtml": {
43
- "types": "./dist/types/renderHtml.d.ts",
44
- "node": {
45
- "jsnext:source": "./src/renderHtml.ts",
46
- "import": "./dist/esm-node/renderHtml.js",
47
- "require": "./dist/cjs/renderHtml.js"
48
- },
49
- "default": "./dist/esm/renderHtml.js"
50
- }
51
- },
52
- "typesVersions": {
53
- "*": {
54
- ".": [
55
- "./dist/types/index.d.ts"
56
- ],
57
- "worker": [
58
- "./dist/types/workerServer.d.ts"
59
- ],
60
- "renderHtml": [
61
- "./dist/types/renderHtml.d.ts"
62
- ]
63
- }
64
- },
6
+ "module": "./dist/es/index.js",
65
7
  "dependencies": {
66
- "isbot": "^3.8.0",
67
8
  "@swc/helpers": "0.5.3",
68
- "cookie": "0.5.0",
69
- "etag": "^1.8.1",
70
- "fresh": "^0.5.2",
71
- "http-proxy-middleware": "^2.0.4",
72
- "ignore-styles": "^5.0.1",
73
- "merge-deep": "^3.0.3",
74
- "node-html-parser": "^6.1.5",
75
- "path-to-regexp": "^6.2.0",
76
- "serve-static": "^1.14.1",
77
- "@modern-js/plugin": "2.46.1",
78
- "@modern-js/server-core": "2.46.1",
79
- "@modern-js/utils": "2.46.1",
80
- "@modern-js/runtime-utils": "2.46.1"
9
+ "@modern-js/server-core": "2.47.1-alpha.2",
10
+ "@modern-js/runtime-utils": "2.47.0"
81
11
  },
82
12
  "devDependencies": {
83
- "@types/cookie": "0.5.1",
84
- "@types/etag": "^1.8.1",
85
- "@types/fresh": "^0.5.0",
86
- "@types/jest": "^29",
87
13
  "@types/merge-deep": "^3.0.0",
88
- "@types/node": "^14",
89
- "@types/serve-static": "^1.13.10",
90
- "@types/ws": "^8.5.5",
91
- "axios": "^1.6.0",
92
- "jest": "^29",
93
- "memfs": "^3.5.1",
94
- "node-mocks-http": "^1.11.0",
95
- "portfinder": "^1.0.28",
96
- "typescript": "^5",
97
- "ws": "^8.13.0",
98
- "@modern-js/types": "2.46.1",
99
- "@scripts/jest-config": "2.46.1",
100
- "@scripts/build": "2.46.1"
14
+ "@types/node": "~16.11.7",
15
+ "husky": "~8.0.1",
16
+ "jest": "^29.7.0",
17
+ "lint-staged": "~13.1.0",
18
+ "prettier": "~2.8.1",
19
+ "rimraf": "~3.0.2",
20
+ "tsx": "^3.12.7",
21
+ "@types/jest": "^29",
22
+ "typescript": "~5.0.4",
23
+ "@scripts/build": "2.47.0",
24
+ "@modern-js/types": "2.47.0",
25
+ "@modern-js/utils": "2.47.0",
26
+ "@scripts/jest-config": "2.47.0",
27
+ "@modern-js/eslint-config": "2.47.0"
101
28
  },
102
- "sideEffects": false,
29
+ "sideEffects": [],
103
30
  "publishConfig": {
104
31
  "access": "public",
105
- "provenance": true,
106
32
  "registry": "https://registry.npmjs.org/"
107
33
  },
108
34
  "scripts": {
@@ -1,72 +0,0 @@
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 constants_exports = {};
20
- __export(constants_exports, {
21
- AGGRED_DIR: () => AGGRED_DIR,
22
- ApiServerMode: () => ApiServerMode,
23
- ERROR_DIGEST: () => ERROR_DIGEST,
24
- ERROR_PAGE_TEXT: () => ERROR_PAGE_TEXT,
25
- RUN_MODE: () => RUN_MODE,
26
- ServerReportTimings: () => ServerReportTimings
27
- });
28
- module.exports = __toCommonJS(constants_exports);
29
- const AGGRED_DIR = {
30
- mock: "config/mock",
31
- server: "server",
32
- api: "api",
33
- shared: "shared",
34
- lambda: "lambda"
35
- };
36
- var ApiServerMode;
37
- (function(ApiServerMode2) {
38
- ApiServerMode2["func"] = "function";
39
- ApiServerMode2["frame"] = "framework";
40
- })(ApiServerMode || (ApiServerMode = {}));
41
- const ERROR_DIGEST = {
42
- INIT: "Server init error",
43
- ENOTF: "Page could not be found",
44
- WARMUP: "SSR warmup failed",
45
- EINTER: "Internal server error",
46
- ERENDER: "SSR render failed",
47
- EMICROINJ: "Get micro-frontend info failed"
48
- };
49
- const ERROR_PAGE_TEXT = {
50
- 404: "This page could not be found.",
51
- 500: "Internal Server Error."
52
- };
53
- const RUN_MODE = {
54
- FULL: "full",
55
- TYPE: "type"
56
- };
57
- var ServerReportTimings;
58
- (function(ServerReportTimings2) {
59
- ServerReportTimings2["SERVER_HANDLE_REQUEST"] = "server-handle-request";
60
- ServerReportTimings2["SERVER_MIDDLEWARE"] = "server-middleware";
61
- ServerReportTimings2["SERVER_HOOK_AFTER_RENDER"] = "server-hook-after-render";
62
- ServerReportTimings2["SERVER_HOOK_AFTER_MATCH"] = "server-hook-after-match";
63
- })(ServerReportTimings || (ServerReportTimings = {}));
64
- // Annotate the CommonJS export names for ESM import in node:
65
- 0 && (module.exports = {
66
- AGGRED_DIR,
67
- ApiServerMode,
68
- ERROR_DIGEST,
69
- ERROR_PAGE_TEXT,
70
- RUN_MODE,
71
- ServerReportTimings
72
- });