@modern-js/server 1.1.3-beta.0 → 1.1.4

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 (42) hide show
  1. package/CHANGELOG.md +42 -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/libs/render/cache/type.js +0 -1
  8. package/dist/js/modern/server/dev-server/dev-server-split.js +2 -6
  9. package/dist/js/modern/server/dev-server/dev-server.js +1 -1
  10. package/dist/js/modern/server/dev-server/index.js +1 -1
  11. package/dist/js/modern/server/index.js +17 -14
  12. package/dist/js/modern/server/modern-server-split.js +55 -6
  13. package/dist/js/modern/server/modern-server.js +85 -55
  14. package/dist/js/modern/type.js +0 -1
  15. package/dist/js/modern/utils.js +9 -1
  16. package/dist/js/node/dev-tools/babel/register.js +2 -2
  17. package/dist/js/node/dev-tools/mock/getMockData.js +2 -2
  18. package/dist/js/node/libs/proxy.js +2 -2
  19. package/dist/js/node/libs/render/cache/__tests__/cache.test.js +2 -2
  20. package/dist/js/node/libs/render/cache/index.js +2 -2
  21. package/dist/js/node/server/dev-server/dev-server-split.js +5 -9
  22. package/dist/js/node/server/dev-server/dev-server.js +1 -1
  23. package/dist/js/node/server/dev-server/index.js +4 -4
  24. package/dist/js/node/server/index.js +16 -12
  25. package/dist/js/node/server/modern-server-split.js +61 -9
  26. package/dist/js/node/server/modern-server.js +86 -56
  27. package/dist/js/node/utils.js +12 -2
  28. package/dist/types/server/dev-server/dev-server-split.d.ts +3 -4
  29. package/dist/types/server/dev-server/index.d.ts +1 -1
  30. package/dist/types/server/modern-server-split.d.ts +15 -5
  31. package/dist/types/server/modern-server.d.ts +13 -6
  32. package/dist/types/type.d.ts +5 -0
  33. package/dist/types/utils.d.ts +2 -1
  34. package/package.json +17 -18
  35. package/src/server/dev-server/dev-server-split.ts +3 -7
  36. package/src/server/dev-server/dev-server.ts +7 -11
  37. package/src/server/dev-server/index.ts +1 -1
  38. package/src/server/index.ts +22 -12
  39. package/src/server/modern-server-split.ts +59 -7
  40. package/src/server/modern-server.ts +96 -62
  41. package/src/type.ts +5 -0
  42. package/src/utils.ts +14 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,47 @@
1
1
  # @modern-js/server
2
2
 
3
+ ## 1.1.4
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
20
+ - @modern-js/core@1.1.4
21
+
22
+ ## 1.1.3
23
+
24
+ ### Patch Changes
25
+
26
+ - 085a6a58: refactor server plugin
27
+ - 085a6a58: refactor server plugin
28
+ - 085a6a58: refactor server conifg
29
+ - 085a6a58: support server runtime
30
+ - 085a6a58: feat: refactor server plugin
31
+ - Updated dependencies [085a6a58]
32
+ - Updated dependencies [085a6a58]
33
+ - Updated dependencies [085a6a58]
34
+ - Updated dependencies [d280ea33]
35
+ - Updated dependencies [d4fcc73a]
36
+ - Updated dependencies [085a6a58]
37
+ - Updated dependencies [ed1f6b12]
38
+ - Updated dependencies [a5ebbb00]
39
+ - Updated dependencies [085a6a58]
40
+ - @modern-js/core@1.1.3
41
+ - @modern-js/server-plugin@1.1.2
42
+ - @modern-js/server-utils@1.1.2
43
+ - @modern-js/utils@1.1.3
44
+
3
45
  ## 1.1.2
4
46
 
5
47
  ### 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,2 +1 @@
1
- export {};
2
1
  export {};
@@ -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
  }
@@ -230,7 +230,7 @@ export class ModernDevServer extends ModernServer {
230
230
  const {
231
231
  mock
232
232
  } = AGGRED_DIR;
233
- const defaultWatched = [`${pwd}/${mock}/**/*`, `${pwd}/${SERVER_DIR}/**/*`, `${pwd}/${API_DIR}/**/*`, `${pwd}/${SHARED_DIR}/**/*`];
233
+ const defaultWatched = [`${pwd}/${mock}/**/*`, `${pwd}/${SERVER_DIR}/**/*`, `${pwd}/${API_DIR}/!(typings)/**`, `${pwd}/${SHARED_DIR}/**/*`];
234
234
  const watcher = new Watcher();
235
235
  watcher.createDepTree(); // 监听文件变动,如果有变动则给 client,也就是 start 启动的插件发消息
236
236
 
@@ -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,15 +1,15 @@
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
 
7
7
  import path from 'path';
8
8
  import { serverManager } from '@modern-js/server-plugin';
9
9
  import { logger as defaultLogger } from '@modern-js/utils';
10
- import { AppContext, initAppContext, initAppDir, loadUserConfig } from '@modern-js/core';
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,15 +115,16 @@ 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(() => {
123
+ ConfigContext.set(this.options.config);
118
124
  AppContext.set(_objectSpread(_objectSpread({}, appContext), {}, {
119
125
  distDirectory: path.join(options.pwd, options.config.output.path || 'dist')
120
126
  }));
121
127
  });
122
- (_options$plugins = options.plugins) === null || _options$plugins === void 0 ? void 0 : _options$plugins.forEach(p => {
123
- serverManager.usePlugin(p);
124
- });
125
128
  return serverManager.init({});
126
129
  }
127
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
 
@@ -231,10 +221,13 @@ export class ModernServer {
231
221
  const mode = fs.existsSync(path.join(apiDir, AGGRED_DIR.lambda)) ? ApiServerMode.frame : ApiServerMode.func; // if use lambda/, mean framework style of writing, then discard user extension
232
222
 
233
223
  const apiExtension = mergeExtension(pluginAPIExt);
234
- this.frameAPIHandler = await this.prepareAPIHandler(mode, _objectSpread(_objectSpread({}, apiExtension), {}, {
235
- modernJsConfig: this.conf
236
- }));
224
+ this.frameAPIHandler = await this.prepareAPIHandler(mode, apiExtension);
237
225
  }
226
+ } // Todo
227
+
228
+
229
+ async proxy() {
230
+ return null;
238
231
  }
239
232
  /* —————————————————————— function will be overwrite —————————————————————— */
240
233
 
@@ -276,34 +269,54 @@ export class ModernServer {
276
269
  return routes;
277
270
  }
278
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
+
279
291
  async preServerInit() {
280
292
  const {
281
- conf
293
+ conf,
294
+ runner
282
295
  } = this;
283
- const preMiddleware = await this.runner.preServerInit(conf);
296
+ const preMiddleware = await runner.preServerInit(conf);
284
297
  preMiddleware.flat().forEach(mid => {
285
298
  this.addHandler(mid);
286
299
  });
287
300
  }
288
301
 
289
- prepareFavicons(favicon, faviconByEntries) {
290
- const faviconNames = [];
302
+ async handleAPI(context) {
303
+ const {
304
+ req,
305
+ res
306
+ } = context;
291
307
 
292
- if (favicon) {
293
- faviconNames.push(favicon.substring(favicon.lastIndexOf('/') + 1));
308
+ if (!this.frameAPIHandler) {
309
+ throw new Error('can not found api hanlder');
294
310
  }
295
311
 
296
- if (faviconByEntries) {
297
- Object.keys(faviconByEntries).forEach(f => {
298
- const curFavicon = faviconByEntries[f];
312
+ await this.frameAPIHandler(req, res);
313
+ }
299
314
 
300
- if (curFavicon) {
301
- faviconNames.push(curFavicon.substring(curFavicon.lastIndexOf('/') + 1));
302
- }
303
- });
304
- }
315
+ async handleWeb(context, route) {
316
+ return this.routeRenderHandler(context, route);
317
+ }
305
318
 
306
- return faviconNames;
319
+ verifyMatch(_c, _m) {// empty
307
320
  }
308
321
  /* —————————————————————— private function —————————————————————— */
309
322
  // handler route.json, include api / csr / ssr
@@ -315,10 +328,8 @@ export class ModernServer {
315
328
  req,
316
329
  res
317
330
  } = context;
318
- await this.runner.beforeMatch({
331
+ await this.emitRouteHook('beforeMatch', {
319
332
  context
320
- }, {
321
- onLast: noop
322
333
  }); // match routes in the route spec
323
334
 
324
335
  const matched = this.router.match(context.url);
@@ -326,14 +337,18 @@ export class ModernServer {
326
337
  if (!matched) {
327
338
  this.render404(context);
328
339
  return;
340
+ } else {
341
+ this.verifyMatch(context, matched);
342
+ }
343
+
344
+ if (res.headersSent) {
345
+ return;
329
346
  }
330
347
 
331
348
  const routeAPI = createRouteAPI(matched, this.router);
332
- await this.runner.afterMatch({
349
+ await this.emitRouteHook('afterMatch', {
333
350
  context,
334
351
  routeAPI
335
- }, {
336
- onLast: noop
337
352
  });
338
353
 
339
354
  if (res.headersSent) {
@@ -348,11 +363,7 @@ export class ModernServer {
348
363
  context.setParams(params); // route is api service
349
364
 
350
365
  if (route.isApi) {
351
- if (!this.frameAPIHandler) {
352
- throw new Error('can not found api hanlder');
353
- }
354
-
355
- await this.frameAPIHandler(req, res);
366
+ this.handleAPI(context);
356
367
  return;
357
368
  }
358
369
 
@@ -365,12 +376,13 @@ export class ModernServer {
365
376
  return;
366
377
  }
367
378
 
368
- await this.runner.beforeRender({
369
- context
370
- }, {
371
- onLast: noop
372
- });
373
- 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);
374
386
 
375
387
  if (!file) {
376
388
  this.render404(context);
@@ -388,11 +400,9 @@ export class ModernServer {
388
400
 
389
401
  if (route.entryName) {
390
402
  const templateAPI = createTemplateAPI(file.content.toString());
391
- await this.runner.afterRender({
403
+ await this.emitRouteHook('afterRender', {
392
404
  context,
393
405
  templateAPI
394
- }, {
395
- onLast: noop
396
406
  });
397
407
  await this.injectMicroFE(context, templateAPI);
398
408
  response = templateAPI.get();
@@ -560,5 +570,25 @@ export class ModernServer {
560
570
  res.end(createErrorDocument(status, text));
561
571
  }
562
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
+
563
593
  }
564
594
  /* eslint-enable max-lines */
@@ -1,2 +1 @@
1
- export {};
2
1
  export {};
@@ -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