@modern-js/server 1.1.3 → 1.1.4-rc.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 (38) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/js/modern/dev-tools/babel/register.js +2 -2
  3. package/dist/js/modern/dev-tools/mock/getMockData.js +2 -2
  4. package/dist/js/modern/libs/proxy.js +2 -2
  5. package/dist/js/modern/libs/render/cache/__tests__/cache.test.js +2 -2
  6. package/dist/js/modern/libs/render/cache/index.js +2 -2
  7. package/dist/js/modern/server/dev-server/dev-server-split.js +2 -6
  8. package/dist/js/modern/server/dev-server/index.js +1 -1
  9. package/dist/js/modern/server/index.js +15 -13
  10. package/dist/js/modern/server/modern-server-split.js +55 -6
  11. package/dist/js/modern/server/modern-server.js +84 -52
  12. package/dist/js/modern/utils.js +9 -1
  13. package/dist/js/node/dev-tools/babel/register.js +2 -2
  14. package/dist/js/node/dev-tools/mock/getMockData.js +2 -2
  15. package/dist/js/node/libs/proxy.js +2 -2
  16. package/dist/js/node/libs/render/cache/__tests__/cache.test.js +2 -2
  17. package/dist/js/node/libs/render/cache/index.js +2 -2
  18. package/dist/js/node/server/dev-server/dev-server-split.js +5 -9
  19. package/dist/js/node/server/dev-server/index.js +4 -4
  20. package/dist/js/node/server/index.js +14 -12
  21. package/dist/js/node/server/modern-server-split.js +61 -9
  22. package/dist/js/node/server/modern-server.js +85 -53
  23. package/dist/js/node/utils.js +12 -2
  24. package/dist/types/server/dev-server/dev-server-split.d.ts +3 -4
  25. package/dist/types/server/dev-server/index.d.ts +1 -1
  26. package/dist/types/server/modern-server-split.d.ts +15 -5
  27. package/dist/types/server/modern-server.d.ts +13 -6
  28. package/dist/types/type.d.ts +5 -0
  29. package/dist/types/utils.d.ts +2 -1
  30. package/package.json +9 -8
  31. package/src/server/dev-server/dev-server-split.ts +3 -7
  32. package/src/server/dev-server/dev-server.ts +6 -10
  33. package/src/server/dev-server/index.ts +1 -1
  34. package/src/server/index.ts +19 -12
  35. package/src/server/modern-server-split.ts +59 -7
  36. package/src/server/modern-server.ts +95 -58
  37. package/src/type.ts +5 -0
  38. package/src/utils.ts +14 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @modern-js/server
2
2
 
3
+ ## 1.1.4-rc.0
4
+
5
+ ### Patch Changes
6
+
7
+ - d73ff455: support multi process product
8
+ - d73ff455: support multi process product
9
+ - d73ff455: support multi process product
10
+ - d73ff455: support multi process product
11
+ - d73ff455: support multi process product
12
+ - Updated dependencies [d927bc83]
13
+ - Updated dependencies [d73ff455]
14
+ - Updated dependencies [9c1ab865]
15
+ - Updated dependencies [d73ff455]
16
+ - Updated dependencies [d73ff455]
17
+ - Updated dependencies [d73ff455]
18
+ - Updated dependencies [d73ff455]
19
+ - @modern-js/utils@1.1.4-rc.0
20
+ - @modern-js/core@1.1.4-rc.0
21
+ - @modern-js/bff-utils@1.1.2-rc.0
22
+ - @modern-js/hmr-client@1.1.2-rc.0
23
+ - @modern-js/server-utils@1.1.3-rc.0
24
+ - @modern-js/server-plugin@1.1.2
25
+
3
26
  ## 1.1.3
4
27
 
5
28
  ### Patch Changes
@@ -1,6 +1,6 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
@@ -1,6 +1,6 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
@@ -1,6 +1,6 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
@@ -1,6 +1,6 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
@@ -1,6 +1,6 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
@@ -1,5 +1,5 @@
1
1
  import { ModernDevServer } from "./dev-server";
2
- export class WebModernDevServer extends ModernDevServer {
2
+ export class ModernSSRDevServer extends ModernDevServer {
3
3
  prepareAPIHandler(_m, _) {
4
4
  return null;
5
5
  }
@@ -13,11 +13,7 @@ export class WebModernDevServer extends ModernDevServer {
13
13
  }
14
14
 
15
15
  }
16
- export class APIModernDevServer extends ModernDevServer {
17
- prepareWebHandler(_) {
18
- return null;
19
- }
20
-
16
+ export class ModernAPIDevServer extends ModernDevServer {
21
17
  async prepareAPIHandler(mode, extension) {
22
18
  return super.prepareAPIHandler(mode, extension);
23
19
  }
@@ -1,2 +1,2 @@
1
- export { APIModernDevServer, WebModernDevServer } from "./dev-server-split";
1
+ export { ModernAPIDevServer, ModernSSRDevServer } from "./dev-server-split";
2
2
  export { ModernDevServer } from "./dev-server";
@@ -1,6 +1,6 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
@@ -9,7 +9,7 @@ import { serverManager } from '@modern-js/server-plugin';
9
9
  import { logger as defaultLogger } from '@modern-js/utils';
10
10
  import { AppContext, initAppContext, initAppDir, loadUserConfig, ConfigContext } from '@modern-js/core';
11
11
  import { ModernServer } from "./modern-server";
12
- import { APIModernServer, WebModernServer } from "./modern-server-split";
12
+ import { ModernAPIServer, ModernSSRServer, ModernWebServer } from "./modern-server-split";
13
13
  import { measure as defaultMeasure } from "../libs/measure";
14
14
  export class Server {
15
15
  constructor(options) {
@@ -79,9 +79,11 @@ export class Server {
79
79
  } = this;
80
80
 
81
81
  if (options.apiOnly) {
82
- return new APIModernServer(options);
82
+ return new ModernAPIServer(options);
83
+ } else if (options.ssrOnly) {
84
+ return new ModernSSRServer(options);
83
85
  } else if (options.webOnly) {
84
- return new WebModernServer(options);
86
+ return new ModernWebServer(options);
85
87
  } else {
86
88
  return new ModernServer(options);
87
89
  }
@@ -93,15 +95,15 @@ export class Server {
93
95
  } = this;
94
96
 
95
97
  const {
96
- APIModernDevServer,
97
- WebModernDevServer,
98
+ ModernAPIDevServer,
99
+ ModernSSRDevServer,
98
100
  ModernDevServer
99
101
  } = require("./dev-server");
100
102
 
101
103
  if (options.apiOnly) {
102
- return new APIModernDevServer(options);
103
- } else if (options.webOnly) {
104
- return new WebModernDevServer(options);
104
+ return new ModernAPIDevServer(options);
105
+ } else if (options.ssrOnly) {
106
+ return new ModernSSRDevServer(options);
105
107
  } else {
106
108
  return new ModernDevServer(options);
107
109
  }
@@ -113,6 +115,9 @@ export class Server {
113
115
  const {
114
116
  options
115
117
  } = this;
118
+ (_options$plugins = options.plugins) === null || _options$plugins === void 0 ? void 0 : _options$plugins.forEach(p => {
119
+ serverManager.usePlugin(p);
120
+ });
116
121
  const appContext = await this.initAppContext();
117
122
  serverManager.run(() => {
118
123
  ConfigContext.set(this.options.config);
@@ -120,9 +125,6 @@ export class Server {
120
125
  distDirectory: path.join(options.pwd, options.config.output.path || 'dist')
121
126
  }));
122
127
  });
123
- (_options$plugins = options.plugins) === null || _options$plugins === void 0 ? void 0 : _options$plugins.forEach(p => {
124
- serverManager.usePlugin(p);
125
- });
126
128
  return serverManager.init({});
127
129
  }
128
130
 
@@ -1,19 +1,37 @@
1
1
  import { ModernServer } from "./modern-server";
2
- export class WebModernServer extends ModernServer {
2
+ export class ModernSSRServer extends ModernServer {
3
+ // Todo should not invoke any route hook in modernSSRServer
4
+ async warmupSSRBundle() {// empty
5
+ }
6
+
7
+ verifyMatch(context, matched) {
8
+ if (matched.generate().isApi) {
9
+ this.render404(context);
10
+ }
11
+ }
12
+
3
13
  prepareAPIHandler(_m, _) {
4
14
  return null;
5
15
  }
6
16
 
7
17
  async prepareWebHandler(extension) {
8
18
  return super.prepareWebHandler(extension);
9
- }
19
+ } // protected filterRoutes(routes: ModernRouteInterface[]) {
20
+ // return routes.filter(route => route.entryName);
21
+ // }
10
22
 
11
- filterRoutes(routes) {
12
- return routes.filter(route => route.entryName);
23
+
24
+ async preServerInit() {// empty
13
25
  }
14
26
 
15
27
  }
16
- export class APIModernServer extends ModernServer {
28
+ export class ModernAPIServer extends ModernServer {
29
+ async emitRouteHook(_, _input) {// empty
30
+ }
31
+
32
+ async warmupSSRBundle() {// empty
33
+ }
34
+
17
35
  prepareWebHandler(_) {
18
36
  return null;
19
37
  }
@@ -26,7 +44,38 @@ export class APIModernServer extends ModernServer {
26
44
  return routes.filter(route => route.isApi);
27
45
  }
28
46
 
29
- async preServerInit() {// noop
47
+ async preServerInit() {// empty
48
+ }
49
+
50
+ }
51
+ export class ModernWebServer extends ModernServer {
52
+ async warmupSSRBundle() {// empty
53
+ }
54
+
55
+ async handleAPI(context) {
56
+ const {
57
+ proxyTarget
58
+ } = this;
59
+
60
+ if (!(proxyTarget !== null && proxyTarget !== void 0 && proxyTarget.api)) {
61
+ this.proxy();
62
+ } else {
63
+ this.render404(context);
64
+ }
65
+ }
66
+
67
+ async handleWeb(context, route) {
68
+ const {
69
+ proxyTarget
70
+ } = this;
71
+
72
+ if (route.isSSR && proxyTarget !== null && proxyTarget !== void 0 && proxyTarget.ssr) {
73
+ return this.proxy();
74
+ } else {
75
+ // if no proxyTarget but access web server, degradation to csr
76
+ route.isSSR = false;
77
+ return super.handleWeb(context, route);
78
+ }
30
79
  }
31
80
 
32
81
  }
@@ -1,8 +1,8 @@
1
1
  const _excluded = ["getMiddlewares"];
2
2
 
3
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
4
 
5
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
6
 
7
7
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
8
 
@@ -41,7 +41,8 @@ export class ModernServer {
41
41
  routes,
42
42
  staticGenerate,
43
43
  logger,
44
- measure
44
+ measure,
45
+ proxyTarget
45
46
  }) {
46
47
  this.pwd = void 0;
47
48
  this.distDir = void 0;
@@ -53,6 +54,7 @@ export class ModernServer {
53
54
  this.runner = void 0;
54
55
  this.logger = void 0;
55
56
  this.measure = void 0;
57
+ this.proxyTarget = void 0;
56
58
  this.isDev = false;
57
59
  this.staticFileHandler = void 0;
58
60
  this.routeRenderHandler = void 0;
@@ -66,13 +68,14 @@ export class ModernServer {
66
68
 
67
69
  this.isDev = Boolean(dev);
68
70
  this.pwd = pwd;
69
- this.distDir = path.join(pwd, config.output.path || '');
71
+ this.distDir = path.join(pwd, config.output.path || 'dist');
70
72
  this.workDir = this.isDev ? pwd : this.distDir;
71
73
  this.conf = config;
72
74
  this.logger = logger;
73
75
  this.measure = measure;
74
76
  this.router = new RouteMatchManager();
75
77
  this.presetRoutes = routes;
78
+ this.proxyTarget = proxyTarget;
76
79
 
77
80
  if (staticGenerate) {
78
81
  this.staticGenerate = staticGenerate;
@@ -159,19 +162,6 @@ export class ModernServer {
159
162
 
160
163
  async createHTTPServer(handler) {
161
164
  return createServer(handler);
162
- } // warmup ssr function
163
-
164
-
165
- warmupSSRBundle() {
166
- const {
167
- distDir
168
- } = this;
169
- const bundles = this.router.getBundles();
170
- bundles.forEach(bundle => {
171
- const filepath = path.join(distDir, bundle); // if error, just throw and let process die
172
-
173
- require(filepath);
174
- });
175
165
  } // read route spec from route.json
176
166
 
177
167
 
@@ -233,6 +223,11 @@ export class ModernServer {
233
223
  const apiExtension = mergeExtension(pluginAPIExt);
234
224
  this.frameAPIHandler = await this.prepareAPIHandler(mode, apiExtension);
235
225
  }
226
+ } // Todo
227
+
228
+
229
+ async proxy() {
230
+ return null;
236
231
  }
237
232
  /* —————————————————————— function will be overwrite —————————————————————— */
238
233
 
@@ -274,34 +269,54 @@ export class ModernServer {
274
269
  return routes;
275
270
  }
276
271
 
272
+ async emitRouteHook(eventName, input) {
273
+ return this.runner[eventName](input, {
274
+ onLast: noop
275
+ });
276
+ } // warmup ssr function
277
+
278
+
279
+ warmupSSRBundle() {
280
+ const {
281
+ distDir
282
+ } = this;
283
+ const bundles = this.router.getBundles();
284
+ bundles.forEach(bundle => {
285
+ const filepath = path.join(distDir, bundle); // if error, just throw and let process die
286
+
287
+ require(filepath);
288
+ });
289
+ }
290
+
277
291
  async preServerInit() {
278
292
  const {
279
- conf
293
+ conf,
294
+ runner
280
295
  } = this;
281
- const preMiddleware = await this.runner.preServerInit(conf);
296
+ const preMiddleware = await runner.preServerInit(conf);
282
297
  preMiddleware.flat().forEach(mid => {
283
298
  this.addHandler(mid);
284
299
  });
285
300
  }
286
301
 
287
- prepareFavicons(favicon, faviconByEntries) {
288
- const faviconNames = [];
302
+ async handleAPI(context) {
303
+ const {
304
+ req,
305
+ res
306
+ } = context;
289
307
 
290
- if (favicon) {
291
- faviconNames.push(favicon.substring(favicon.lastIndexOf('/') + 1));
308
+ if (!this.frameAPIHandler) {
309
+ throw new Error('can not found api hanlder');
292
310
  }
293
311
 
294
- if (faviconByEntries) {
295
- Object.keys(faviconByEntries).forEach(f => {
296
- const curFavicon = faviconByEntries[f];
312
+ await this.frameAPIHandler(req, res);
313
+ }
297
314
 
298
- if (curFavicon) {
299
- faviconNames.push(curFavicon.substring(curFavicon.lastIndexOf('/') + 1));
300
- }
301
- });
302
- }
315
+ async handleWeb(context, route) {
316
+ return this.routeRenderHandler(context, route);
317
+ }
303
318
 
304
- return faviconNames;
319
+ verifyMatch(_c, _m) {// empty
305
320
  }
306
321
  /* —————————————————————— private function —————————————————————— */
307
322
  // handler route.json, include api / csr / ssr
@@ -313,10 +328,8 @@ export class ModernServer {
313
328
  req,
314
329
  res
315
330
  } = context;
316
- await this.runner.beforeMatch({
331
+ await this.emitRouteHook('beforeMatch', {
317
332
  context
318
- }, {
319
- onLast: noop
320
333
  }); // match routes in the route spec
321
334
 
322
335
  const matched = this.router.match(context.url);
@@ -324,14 +337,18 @@ export class ModernServer {
324
337
  if (!matched) {
325
338
  this.render404(context);
326
339
  return;
340
+ } else {
341
+ this.verifyMatch(context, matched);
342
+ }
343
+
344
+ if (res.headersSent) {
345
+ return;
327
346
  }
328
347
 
329
348
  const routeAPI = createRouteAPI(matched, this.router);
330
- await this.runner.afterMatch({
349
+ await this.emitRouteHook('afterMatch', {
331
350
  context,
332
351
  routeAPI
333
- }, {
334
- onLast: noop
335
352
  });
336
353
 
337
354
  if (res.headersSent) {
@@ -346,11 +363,7 @@ export class ModernServer {
346
363
  context.setParams(params); // route is api service
347
364
 
348
365
  if (route.isApi) {
349
- if (!this.frameAPIHandler) {
350
- throw new Error('can not found api hanlder');
351
- }
352
-
353
- await this.frameAPIHandler(req, res);
366
+ this.handleAPI(context);
354
367
  return;
355
368
  }
356
369
 
@@ -363,12 +376,13 @@ export class ModernServer {
363
376
  return;
364
377
  }
365
378
 
366
- await this.runner.beforeRender({
367
- context
368
- }, {
369
- onLast: noop
370
- });
371
- const file = await this.routeRenderHandler(context, route);
379
+ if (route.entryName) {
380
+ await this.emitRouteHook('beforeRender', {
381
+ context
382
+ });
383
+ }
384
+
385
+ const file = await this.handleWeb(context, route);
372
386
 
373
387
  if (!file) {
374
388
  this.render404(context);
@@ -386,11 +400,9 @@ export class ModernServer {
386
400
 
387
401
  if (route.entryName) {
388
402
  const templateAPI = createTemplateAPI(file.content.toString());
389
- await this.runner.afterRender({
403
+ await this.emitRouteHook('afterRender', {
390
404
  context,
391
405
  templateAPI
392
- }, {
393
- onLast: noop
394
406
  });
395
407
  await this.injectMicroFE(context, templateAPI);
396
408
  response = templateAPI.get();
@@ -558,5 +570,25 @@ export class ModernServer {
558
570
  res.end(createErrorDocument(status, text));
559
571
  }
560
572
 
573
+ prepareFavicons(favicon, faviconByEntries) {
574
+ const faviconNames = [];
575
+
576
+ if (favicon) {
577
+ faviconNames.push(favicon.substring(favicon.lastIndexOf('/') + 1));
578
+ }
579
+
580
+ if (faviconByEntries) {
581
+ Object.keys(faviconByEntries).forEach(f => {
582
+ const curFavicon = faviconByEntries[f];
583
+
584
+ if (curFavicon) {
585
+ faviconNames.push(curFavicon.substring(curFavicon.lastIndexOf('/') + 1));
586
+ }
587
+ });
588
+ }
589
+
590
+ return faviconNames;
591
+ }
592
+
561
593
  }
562
594
  /* eslint-enable max-lines */
@@ -47,4 +47,12 @@ export const createErrorDocument = (status, text) => {
47
47
  </body>
48
48
  </html>
49
49
  `;
50
- };
50
+ }; // This can live anywhere in your codebase:
51
+
52
+ export function applyMixins(derivedCtor, constructors) {
53
+ constructors.forEach(baseCtor => {
54
+ Object.getOwnPropertyNames(baseCtor.prototype).forEach(name => {
55
+ Object.defineProperty(derivedCtor.prototype, name, Object.getOwnPropertyDescriptor(baseCtor.prototype, name) || Object.create(null));
56
+ });
57
+ });
58
+ }
@@ -11,9 +11,9 @@ var _serverUtils = require("@modern-js/server-utils");
11
11
 
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
13
 
14
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
14
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
15
 
16
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
16
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
17
 
18
18
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
19
 
@@ -7,9 +7,9 @@ exports.default = void 0;
7
7
 
8
8
  var _utils = require("@modern-js/utils");
9
9
 
10
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
10
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11
11
 
12
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
12
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
13
 
14
14
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
15
 
@@ -7,9 +7,9 @@ exports.createProxyHandler = void 0;
7
7
 
8
8
  var _httpProxyMiddleware = require("http-proxy-middleware");
9
9
 
10
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
10
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11
11
 
12
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
12
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
13
 
14
14
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
15
 
@@ -8,9 +8,9 @@ var _cacheable = require("./cacheable");
8
8
 
9
9
  var _matchedCache = require("./matched-cache");
10
10
 
11
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
11
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
12
12
 
13
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
13
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
14
14
 
15
15
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
16
16
 
@@ -11,9 +11,9 @@ var _util = require("./util");
11
11
 
12
12
  var _constants = require("../../../constants");
13
13
 
14
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
14
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15
15
 
16
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
16
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
17
 
18
18
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
19
 
@@ -3,11 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.WebModernDevServer = exports.APIModernDevServer = void 0;
6
+ exports.ModernSSRDevServer = exports.ModernAPIDevServer = void 0;
7
7
 
8
8
  var _devServer = require("./dev-server");
9
9
 
10
- class WebModernDevServer extends _devServer.ModernDevServer {
10
+ class ModernSSRDevServer extends _devServer.ModernDevServer {
11
11
  prepareAPIHandler(_m, _) {
12
12
  return null;
13
13
  }
@@ -22,13 +22,9 @@ class WebModernDevServer extends _devServer.ModernDevServer {
22
22
 
23
23
  }
24
24
 
25
- exports.WebModernDevServer = WebModernDevServer;
26
-
27
- class APIModernDevServer extends _devServer.ModernDevServer {
28
- prepareWebHandler(_) {
29
- return null;
30
- }
25
+ exports.ModernSSRDevServer = ModernSSRDevServer;
31
26
 
27
+ class ModernAPIDevServer extends _devServer.ModernDevServer {
32
28
  async prepareAPIHandler(mode, extension) {
33
29
  return super.prepareAPIHandler(mode, extension);
34
30
  }
@@ -42,4 +38,4 @@ class APIModernDevServer extends _devServer.ModernDevServer {
42
38
 
43
39
  }
44
40
 
45
- exports.APIModernDevServer = APIModernDevServer;
41
+ exports.ModernAPIDevServer = ModernAPIDevServer;