@modern-js/server 1.1.3-beta.1 → 1.1.5-beta.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 (69) 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/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/cache/type.js +0 -1
  11. package/dist/js/modern/libs/render/index.js +6 -2
  12. package/dist/js/modern/libs/render/ssr.js +3 -2
  13. package/dist/js/modern/libs/route/route.js +1 -1
  14. package/dist/js/modern/server/dev-server/dev-server-split.js +2 -6
  15. package/dist/js/modern/server/dev-server/dev-server.js +12 -3
  16. package/dist/js/modern/server/dev-server/index.js +1 -1
  17. package/dist/js/modern/server/index.js +19 -16
  18. package/dist/js/modern/server/modern-server-split.js +55 -6
  19. package/dist/js/modern/server/modern-server.js +92 -58
  20. package/dist/js/modern/type.js +0 -1
  21. package/dist/js/modern/utils.js +9 -1
  22. package/dist/js/node/dev-tools/babel/register.js +2 -2
  23. package/dist/js/node/dev-tools/mock/getMockData.js +2 -2
  24. package/dist/js/node/libs/context/context.js +15 -7
  25. package/dist/js/node/libs/context/index.js +2 -2
  26. package/dist/js/node/libs/{measure.js → metrics.js} +3 -3
  27. package/dist/js/node/libs/proxy.js +2 -2
  28. package/dist/js/node/libs/render/cache/__tests__/cache.test.js +2 -2
  29. package/dist/js/node/libs/render/cache/index.js +2 -2
  30. package/dist/js/node/libs/render/index.js +6 -2
  31. package/dist/js/node/libs/render/ssr.js +3 -2
  32. package/dist/js/node/libs/route/route.js +1 -1
  33. package/dist/js/node/server/dev-server/dev-server-split.js +5 -9
  34. package/dist/js/node/server/dev-server/dev-server.js +12 -3
  35. package/dist/js/node/server/dev-server/index.js +4 -4
  36. package/dist/js/node/server/index.js +18 -14
  37. package/dist/js/node/server/modern-server-split.js +61 -9
  38. package/dist/js/node/server/modern-server.js +93 -59
  39. package/dist/js/node/utils.js +12 -2
  40. package/dist/types/libs/context/context.d.ts +5 -5
  41. package/dist/types/libs/context/index.d.ts +3 -3
  42. package/dist/types/libs/metrics.d.ts +3 -0
  43. package/dist/types/libs/render/index.d.ts +10 -1
  44. package/dist/types/libs/render/ssr.d.ts +2 -1
  45. package/dist/types/libs/render/type.d.ts +2 -21
  46. package/dist/types/libs/route/route.d.ts +2 -10
  47. package/dist/types/server/dev-server/dev-server-split.d.ts +3 -4
  48. package/dist/types/server/dev-server/index.d.ts +1 -1
  49. package/dist/types/server/modern-server-split.d.ts +15 -5
  50. package/dist/types/server/modern-server.d.ts +14 -7
  51. package/dist/types/type.d.ts +11 -5
  52. package/dist/types/utils.d.ts +2 -1
  53. package/package.json +7 -7
  54. package/src/libs/context/context.ts +12 -8
  55. package/src/libs/context/index.ts +3 -3
  56. package/src/libs/{measure.ts → metrics.ts} +3 -3
  57. package/src/libs/render/index.ts +21 -11
  58. package/src/libs/render/ssr.ts +5 -1
  59. package/src/libs/render/type.ts +3 -16
  60. package/src/libs/route/route.ts +4 -20
  61. package/src/server/dev-server/dev-server-split.ts +3 -7
  62. package/src/server/dev-server/dev-server.ts +15 -13
  63. package/src/server/dev-server/index.ts +1 -1
  64. package/src/server/index.ts +24 -14
  65. package/src/server/modern-server-split.ts +59 -7
  66. package/src/server/modern-server.ts +105 -67
  67. package/src/type.ts +12 -5
  68. package/src/utils.ts +14 -0
  69. package/dist/types/libs/measure.d.ts +0 -3
@@ -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
+ metrics,
45
+ proxyTarget
45
46
  }) {
46
47
  this.pwd = void 0;
47
48
  this.distDir = void 0;
@@ -52,7 +53,8 @@ export class ModernServer {
52
53
  this.presetRoutes = void 0;
53
54
  this.runner = void 0;
54
55
  this.logger = void 0;
55
- this.measure = void 0;
56
+ this.metrics = 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
- this.measure = measure;
75
+ this.metrics = metrics;
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,58 @@ 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({
317
+ ctx: context,
318
+ route,
319
+ runner: this.runner
320
+ });
321
+ }
305
322
 
306
- return faviconNames;
323
+ verifyMatch(_c, _m) {// empty
307
324
  }
308
325
  /* —————————————————————— private function —————————————————————— */
309
326
  // handler route.json, include api / csr / ssr
@@ -315,10 +332,8 @@ export class ModernServer {
315
332
  req,
316
333
  res
317
334
  } = context;
318
- await this.runner.beforeMatch({
335
+ await this.emitRouteHook('beforeMatch', {
319
336
  context
320
- }, {
321
- onLast: noop
322
337
  }); // match routes in the route spec
323
338
 
324
339
  const matched = this.router.match(context.url);
@@ -326,14 +341,18 @@ export class ModernServer {
326
341
  if (!matched) {
327
342
  this.render404(context);
328
343
  return;
344
+ } else {
345
+ this.verifyMatch(context, matched);
346
+ }
347
+
348
+ if (res.headersSent) {
349
+ return;
329
350
  }
330
351
 
331
352
  const routeAPI = createRouteAPI(matched, this.router);
332
- await this.runner.afterMatch({
353
+ await this.emitRouteHook('afterMatch', {
333
354
  context,
334
355
  routeAPI
335
- }, {
336
- onLast: noop
337
356
  });
338
357
 
339
358
  if (res.headersSent) {
@@ -348,11 +367,7 @@ export class ModernServer {
348
367
  context.setParams(params); // route is api service
349
368
 
350
369
  if (route.isApi) {
351
- if (!this.frameAPIHandler) {
352
- throw new Error('can not found api hanlder');
353
- }
354
-
355
- await this.frameAPIHandler(req, res);
370
+ this.handleAPI(context);
356
371
  return;
357
372
  }
358
373
 
@@ -365,12 +380,13 @@ export class ModernServer {
365
380
  return;
366
381
  }
367
382
 
368
- await this.runner.beforeRender({
369
- context
370
- }, {
371
- onLast: noop
372
- });
373
- const file = await this.routeRenderHandler(context, route);
383
+ if (route.entryName) {
384
+ await this.emitRouteHook('beforeRender', {
385
+ context
386
+ });
387
+ }
388
+
389
+ const file = await this.handleWeb(context, route);
374
390
 
375
391
  if (!file) {
376
392
  this.render404(context);
@@ -388,11 +404,9 @@ export class ModernServer {
388
404
 
389
405
  if (route.entryName) {
390
406
  const templateAPI = createTemplateAPI(file.content.toString());
391
- await this.runner.afterRender({
407
+ await this.emitRouteHook('afterRender', {
392
408
  context,
393
409
  templateAPI
394
- }, {
395
- onLast: noop
396
410
  });
397
411
  await this.injectMicroFE(context, templateAPI);
398
412
  response = templateAPI.get();
@@ -512,7 +526,7 @@ export class ModernServer {
512
526
  res.statusCode = 200;
513
527
  const context = createContext(req, res, {
514
528
  logger: this.logger,
515
- measure: this.measure
529
+ metrics: this.metrics
516
530
  });
517
531
 
518
532
  try {
@@ -560,5 +574,25 @@ export class ModernServer {
560
574
  res.end(createErrorDocument(status, text));
561
575
  }
562
576
 
577
+ prepareFavicons(favicon, faviconByEntries) {
578
+ const faviconNames = [];
579
+
580
+ if (favicon) {
581
+ faviconNames.push(favicon.substring(favicon.lastIndexOf('/') + 1));
582
+ }
583
+
584
+ if (faviconByEntries) {
585
+ Object.keys(faviconByEntries).forEach(f => {
586
+ const curFavicon = faviconByEntries[f];
587
+
588
+ if (curFavicon) {
589
+ faviconNames.push(curFavicon.substring(curFavicon.lastIndexOf('/') + 1));
590
+ }
591
+ });
592
+ }
593
+
594
+ return faviconNames;
595
+ }
596
+
563
597
  }
564
598
  /* 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
 
@@ -27,17 +27,29 @@ class ModernServerContext {
27
27
  */
28
28
  constructor(req, res, {
29
29
  logger,
30
- measure
30
+ metrics
31
31
  }) {
32
32
  this.req = void 0;
33
33
  this.res = void 0;
34
34
  this.params = {};
35
35
  this.logger = void 0;
36
- this.measure = void 0;
36
+ this.metrics = void 0;
37
37
  this.req = req;
38
38
  this.res = res;
39
39
  this.logger = logger;
40
- this.measure = measure;
40
+ this.metrics = metrics;
41
+ this.bind();
42
+ }
43
+
44
+ bind() {
45
+ const {
46
+ req,
47
+ res
48
+ } = this;
49
+
50
+ req.get = key => this.getReqHeader(key);
51
+
52
+ res.set = (key, value) => this.res.setHeader(key, value);
41
53
  }
42
54
 
43
55
  setParams(params) {
@@ -66,10 +78,6 @@ class ModernServerContext {
66
78
  return this.req.headers;
67
79
  }
68
80
 
69
- set headers(val) {
70
- this.req.headers = val;
71
- }
72
-
73
81
  get method() {
74
82
  return this.req.method;
75
83
  }
@@ -15,10 +15,10 @@ var _context = require("./context");
15
15
 
16
16
  const createContext = (req, res, {
17
17
  logger,
18
- measure
18
+ metrics
19
19
  }) => new _context.ModernServerContext(req, res, {
20
20
  logger,
21
- measure
21
+ metrics
22
22
  });
23
23
 
24
24
  exports.createContext = createContext;
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.measure = void 0;
7
- const measure = {
6
+ exports.metrics = void 0;
7
+ const metrics = {
8
8
  gauges() {// no impl
9
9
  },
10
10
 
@@ -15,4 +15,4 @@ const measure = {
15
15
  }
16
16
 
17
17
  };
18
- exports.measure = measure;
18
+ exports.metrics = metrics;
@@ -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
 
@@ -30,7 +30,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
30
30
  const createRenderHandler = ({
31
31
  distDir,
32
32
  staticGenerate
33
- }) => async function render(ctx, route) {
33
+ }) => async function render({
34
+ ctx,
35
+ route,
36
+ runner
37
+ }) {
34
38
  if (ctx.resHasHandled()) {
35
39
  return null;
36
40
  }
@@ -63,7 +67,7 @@ const createRenderHandler = ({
63
67
  bundle: route.bundle,
64
68
  template: templateHTML,
65
69
  staticGenerate
66
- });
70
+ }, runner);
67
71
  return result;
68
72
  } catch (err) {
69
73
  ctx.error(_constants.ERROR_DIGEST.ERENDER, err.stack);
@@ -15,7 +15,7 @@ var _cache = _interopRequireDefault(require("./cache"));
15
15
 
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
 
18
- const render = async (ctx, renderOptions) => {
18
+ const render = async (ctx, renderOptions, runner) => {
19
19
  const {
20
20
  bundle,
21
21
  distDir,
@@ -40,8 +40,9 @@ const render = async (ctx, renderOptions) => {
40
40
  distDir,
41
41
  staticGenerate,
42
42
  logger: ctx.logger,
43
- measure: ctx.measure
43
+ metrics: ctx.metrics
44
44
  };
45
+ runner.extendSSRContext(context);
45
46
 
46
47
  const serverRender = require(bundleJS)[_utils.SERVER_RENDER_FUNCTION_NAME];
47
48
 
@@ -17,7 +17,7 @@ class ModernRoute {
17
17
  this.isSSR = void 0;
18
18
  this.isSPA = void 0;
19
19
  this.enableModernMode = void 0;
20
- this.entryName = routeSpec.entryName;
20
+ this.entryName = routeSpec.entryName || '';
21
21
  this.urlPath = routeSpec.urlPath;
22
22
  this.entryPath = routeSpec.entryPath || '';
23
23
  this.isSSR = routeSpec.isSSR || false;
@@ -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;
@@ -41,6 +41,12 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
41
41
 
42
42
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
43
43
 
44
+ 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; }
45
+
46
+ 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; }
47
+
48
+ 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; }
49
+
44
50
  const DEFAULT_DEV_OPTIONS = {
45
51
  client: {
46
52
  port: '8080',
@@ -53,6 +59,7 @@ const DEFAULT_DEV_OPTIONS = {
53
59
  dev: {
54
60
  writeToDisk: true
55
61
  },
62
+ watch: true,
56
63
  hot: true,
57
64
  liveReload: true
58
65
  };
@@ -70,7 +77,7 @@ class ModernDevServer extends _modernServer.ModernServer {
70
77
  this.devMiddleware = void 0;
71
78
  this.compiler = options.compiler; // set dev server options, like webpack-dev-server
72
79
 
73
- this.dev = typeof options.dev === 'boolean' ? DEFAULT_DEV_OPTIONS : options.dev;
80
+ this.dev = typeof options.dev === 'boolean' ? DEFAULT_DEV_OPTIONS : _objectSpread(_objectSpread({}, DEFAULT_DEV_OPTIONS), options.dev);
74
81
  (0, _register.enableRegister)(this.pwd, this.conf);
75
82
  } // Complete the preparation of services
76
83
 
@@ -119,7 +126,9 @@ class ModernDevServer extends _modernServer.ModernServer {
119
126
 
120
127
  await super.init(runner); // watch mock/ server/ api/ dir file change
121
128
 
122
- this.startWatcher();
129
+ if (this.dev.watch) {
130
+ this.startWatcher();
131
+ }
123
132
  }
124
133
 
125
134
  ready(options = {}) {
@@ -259,7 +268,7 @@ class ModernDevServer extends _modernServer.ModernServer {
259
268
  const {
260
269
  mock
261
270
  } = _constants.AGGRED_DIR;
262
- const defaultWatched = [`${pwd}/${mock}/**/*`, `${pwd}/${_utils.SERVER_DIR}/**/*`, `${pwd}/${_utils.API_DIR}/**/*`, `${pwd}/${_utils.SHARED_DIR}/**/*`];
271
+ const defaultWatched = [`${pwd}/${mock}/**/*`, `${pwd}/${_utils.SERVER_DIR}/**/*`, `${pwd}/${_utils.API_DIR}/!(typings)/**`, `${pwd}/${_utils.SHARED_DIR}/**/*`];
263
272
  const watcher = new _watcher.default();
264
273
  watcher.createDepTree(); // 监听文件变动,如果有变动则给 client,也就是 start 启动的插件发消息
265
274
 
@@ -3,10 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "APIModernDevServer", {
6
+ Object.defineProperty(exports, "ModernAPIDevServer", {
7
7
  enumerable: true,
8
8
  get: function () {
9
- return _devServerSplit.APIModernDevServer;
9
+ return _devServerSplit.ModernAPIDevServer;
10
10
  }
11
11
  });
12
12
  Object.defineProperty(exports, "ModernDevServer", {
@@ -15,10 +15,10 @@ Object.defineProperty(exports, "ModernDevServer", {
15
15
  return _devServer.ModernDevServer;
16
16
  }
17
17
  });
18
- Object.defineProperty(exports, "WebModernDevServer", {
18
+ Object.defineProperty(exports, "ModernSSRDevServer", {
19
19
  enumerable: true,
20
20
  get: function () {
21
- return _devServerSplit.WebModernDevServer;
21
+ return _devServerSplit.ModernSSRDevServer;
22
22
  }
23
23
  });
24
24