@modern-js/server 1.1.3 → 1.1.5-beta.1

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 (67) hide show
  1. package/CHANGELOG.md +19 -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/context/context.js +15 -7
  5. package/dist/js/modern/libs/context/index.js +2 -2
  6. package/dist/js/modern/libs/{measure.js → metrics.js} +2 -2
  7. package/dist/js/modern/libs/proxy.js +2 -2
  8. package/dist/js/modern/libs/render/cache/__tests__/cache.test.js +2 -2
  9. package/dist/js/modern/libs/render/cache/index.js +2 -2
  10. package/dist/js/modern/libs/render/index.js +6 -2
  11. package/dist/js/modern/libs/render/ssr.js +3 -2
  12. package/dist/js/modern/libs/route/route.js +1 -1
  13. package/dist/js/modern/server/dev-server/dev-server-split.js +2 -6
  14. package/dist/js/modern/server/dev-server/dev-server.js +11 -2
  15. package/dist/js/modern/server/dev-server/index.js +1 -1
  16. package/dist/js/modern/server/index.js +17 -15
  17. package/dist/js/modern/server/modern-server-split.js +55 -6
  18. package/dist/js/modern/server/modern-server.js +96 -56
  19. package/dist/js/modern/utils.js +9 -1
  20. package/dist/js/node/dev-tools/babel/register.js +2 -2
  21. package/dist/js/node/dev-tools/mock/getMockData.js +2 -2
  22. package/dist/js/node/libs/context/context.js +15 -7
  23. package/dist/js/node/libs/context/index.js +2 -2
  24. package/dist/js/node/libs/{measure.js → metrics.js} +3 -3
  25. package/dist/js/node/libs/proxy.js +2 -2
  26. package/dist/js/node/libs/render/cache/__tests__/cache.test.js +2 -2
  27. package/dist/js/node/libs/render/cache/index.js +2 -2
  28. package/dist/js/node/libs/render/index.js +6 -2
  29. package/dist/js/node/libs/render/ssr.js +3 -2
  30. package/dist/js/node/libs/route/route.js +1 -1
  31. package/dist/js/node/server/dev-server/dev-server-split.js +5 -9
  32. package/dist/js/node/server/dev-server/dev-server.js +11 -2
  33. package/dist/js/node/server/dev-server/index.js +4 -4
  34. package/dist/js/node/server/index.js +16 -14
  35. package/dist/js/node/server/modern-server-split.js +61 -9
  36. package/dist/js/node/server/modern-server.js +97 -57
  37. package/dist/js/node/utils.js +12 -2
  38. package/dist/types/libs/context/context.d.ts +5 -5
  39. package/dist/types/libs/context/index.d.ts +3 -3
  40. package/dist/types/libs/metrics.d.ts +3 -0
  41. package/dist/types/libs/render/index.d.ts +10 -1
  42. package/dist/types/libs/render/ssr.d.ts +2 -1
  43. package/dist/types/libs/render/type.d.ts +2 -21
  44. package/dist/types/libs/route/route.d.ts +2 -10
  45. package/dist/types/server/dev-server/dev-server-split.d.ts +3 -4
  46. package/dist/types/server/dev-server/index.d.ts +1 -1
  47. package/dist/types/server/modern-server-split.d.ts +15 -5
  48. package/dist/types/server/modern-server.d.ts +14 -7
  49. package/dist/types/type.d.ts +11 -5
  50. package/dist/types/utils.d.ts +2 -1
  51. package/package.json +5 -5
  52. package/src/libs/context/context.ts +12 -8
  53. package/src/libs/context/index.ts +3 -3
  54. package/src/libs/{measure.ts → metrics.ts} +3 -3
  55. package/src/libs/render/index.ts +21 -11
  56. package/src/libs/render/ssr.ts +5 -1
  57. package/src/libs/render/type.ts +3 -16
  58. package/src/libs/route/route.ts +4 -20
  59. package/src/server/dev-server/dev-server-split.ts +3 -7
  60. package/src/server/dev-server/dev-server.ts +14 -12
  61. package/src/server/dev-server/index.ts +1 -1
  62. package/src/server/index.ts +21 -14
  63. package/src/server/modern-server-split.ts +59 -7
  64. package/src/server/modern-server.ts +109 -64
  65. package/src/type.ts +12 -5
  66. package/src/utils.ts +14 -0
  67. package/dist/types/libs/measure.d.ts +0 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
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
+
3
22
  ## 1.1.3
4
23
 
5
24
  ### 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
 
@@ -15,17 +15,29 @@ export class ModernServerContext {
15
15
  */
16
16
  constructor(req, res, {
17
17
  logger,
18
- measure
18
+ metrics
19
19
  }) {
20
20
  this.req = void 0;
21
21
  this.res = void 0;
22
22
  this.params = {};
23
23
  this.logger = void 0;
24
- this.measure = void 0;
24
+ this.metrics = void 0;
25
25
  this.req = req;
26
26
  this.res = res;
27
27
  this.logger = logger;
28
- this.measure = measure;
28
+ this.metrics = metrics;
29
+ this.bind();
30
+ }
31
+
32
+ bind() {
33
+ const {
34
+ req,
35
+ res
36
+ } = this;
37
+
38
+ req.get = key => this.getReqHeader(key);
39
+
40
+ res.set = (key, value) => this.res.setHeader(key, value);
29
41
  }
30
42
 
31
43
  setParams(params) {
@@ -54,10 +66,6 @@ export class ModernServerContext {
54
66
  return this.req.headers;
55
67
  }
56
68
 
57
- set headers(val) {
58
- this.req.headers = val;
59
- }
60
-
61
69
  get method() {
62
70
  return this.req.method;
63
71
  }
@@ -1,9 +1,9 @@
1
1
  import { ModernServerContext } from "./context";
2
2
  export const createContext = (req, res, {
3
3
  logger,
4
- measure
4
+ metrics
5
5
  }) => new ModernServerContext(req, res, {
6
6
  logger,
7
- measure
7
+ metrics
8
8
  });
9
9
  export { ModernServerContext };
@@ -1,4 +1,4 @@
1
- const measure = {
1
+ const metrics = {
2
2
  gauges() {// no impl
3
3
  },
4
4
 
@@ -9,4 +9,4 @@ const measure = {
9
9
  }
10
10
 
11
11
  };
12
- export { measure };
12
+ export { metrics };
@@ -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
 
@@ -9,7 +9,11 @@ import { ERROR_DIGEST } from "../../constants";
9
9
  export const createRenderHandler = ({
10
10
  distDir,
11
11
  staticGenerate
12
- }) => async function render(ctx, route) {
12
+ }) => async function render({
13
+ ctx,
14
+ route,
15
+ runner
16
+ }) {
13
17
  if (ctx.resHasHandled()) {
14
18
  return null;
15
19
  }
@@ -39,7 +43,7 @@ export const createRenderHandler = ({
39
43
  bundle: route.bundle,
40
44
  template: templateHTML,
41
45
  staticGenerate
42
- });
46
+ }, runner);
43
47
  return result;
44
48
  } catch (err) {
45
49
  ctx.error(ERROR_DIGEST.ERENDER, err.stack);
@@ -2,7 +2,7 @@ import path from 'path';
2
2
  import { SERVER_RENDER_FUNCTION_NAME } from '@modern-js/utils';
3
3
  import mime from 'mime-types';
4
4
  import cache from "./cache";
5
- export const render = async (ctx, renderOptions) => {
5
+ export const render = async (ctx, renderOptions, runner) => {
6
6
  const {
7
7
  bundle,
8
8
  distDir,
@@ -25,8 +25,9 @@ export const render = async (ctx, renderOptions) => {
25
25
  distDir,
26
26
  staticGenerate,
27
27
  logger: ctx.logger,
28
- measure: ctx.measure
28
+ metrics: ctx.metrics
29
29
  };
30
+ runner.extendSSRContext(context);
30
31
 
31
32
  const serverRender = require(bundleJS)[SERVER_RENDER_FUNCTION_NAME];
32
33
 
@@ -10,7 +10,7 @@ export class ModernRoute {
10
10
  this.isSSR = void 0;
11
11
  this.isSPA = void 0;
12
12
  this.enableModernMode = void 0;
13
- this.entryName = routeSpec.entryName;
13
+ this.entryName = routeSpec.entryName || '';
14
14
  this.urlPath = routeSpec.urlPath;
15
15
  this.entryPath = routeSpec.entryPath || '';
16
16
  this.isSSR = routeSpec.isSSR || false;
@@ -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,3 +1,9 @@
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
+
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
+
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
+
1
7
  import { createServer } from 'http';
2
8
  import path from 'path';
3
9
  import { createServer as createHttpsServer } from 'https';
@@ -25,6 +31,7 @@ const DEFAULT_DEV_OPTIONS = {
25
31
  dev: {
26
32
  writeToDisk: true
27
33
  },
34
+ watch: true,
28
35
  hot: true,
29
36
  liveReload: true
30
37
  };
@@ -41,7 +48,7 @@ export class ModernDevServer extends ModernServer {
41
48
  this.devMiddleware = void 0;
42
49
  this.compiler = options.compiler; // set dev server options, like webpack-dev-server
43
50
 
44
- this.dev = typeof options.dev === 'boolean' ? DEFAULT_DEV_OPTIONS : options.dev;
51
+ this.dev = typeof options.dev === 'boolean' ? DEFAULT_DEV_OPTIONS : _objectSpread(_objectSpread({}, DEFAULT_DEV_OPTIONS), options.dev);
45
52
  enableRegister(this.pwd, this.conf);
46
53
  } // Complete the preparation of services
47
54
 
@@ -90,7 +97,9 @@ export class ModernDevServer extends ModernServer {
90
97
 
91
98
  await super.init(runner); // watch mock/ server/ api/ dir file change
92
99
 
93
- this.startWatcher();
100
+ if (this.dev.watch) {
101
+ this.startWatcher();
102
+ }
94
103
  }
95
104
 
96
105
  ready(options = {}) {
@@ -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,8 +9,8 @@ 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";
13
- import { measure as defaultMeasure } from "../libs/measure";
12
+ import { ModernAPIServer, ModernSSRServer, ModernWebServer } from "./modern-server-split";
13
+ import { metrics as defaultMetrics } from "../libs/metrics";
14
14
  export class Server {
15
15
  constructor(options) {
16
16
  this.options = void 0;
@@ -36,7 +36,7 @@ export class Server {
36
36
  options
37
37
  } = this;
38
38
  options.logger = options.logger || defaultLogger;
39
- options.measure = options.measure || defaultMeasure; // initialize server
39
+ options.metrics = options.metrics || defaultMetrics; // initialize server
40
40
 
41
41
  if (options.dev) {
42
42
  this.server = this.createDevServer();
@@ -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
  }