@modern-js/prod-server 2.9.1-alpha.0 → 2.11.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 (139) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/cjs/libs/hook-api/index.js +7 -26
  3. package/dist/cjs/libs/render/index.js +2 -1
  4. package/dist/cjs/libs/render/ssr.js +7 -5
  5. package/dist/{js/node/libs/metrics.js → cjs/libs/render/utils.js} +25 -12
  6. package/dist/cjs/server/index.js +1 -1
  7. package/dist/cjs/server/modernServer.js +75 -80
  8. package/dist/esm/libs/hook-api/index.js +9 -37
  9. package/dist/esm/libs/render/index.js +2 -1
  10. package/dist/esm/libs/render/ssr.js +6 -4
  11. package/dist/esm/libs/render/utils.js +12 -0
  12. package/dist/esm/server/index.js +2 -2
  13. package/dist/esm/server/modernServer.js +108 -103
  14. package/dist/esm-node/libs/hook-api/index.js +7 -26
  15. package/dist/esm-node/libs/render/index.js +2 -1
  16. package/dist/esm-node/libs/render/ssr.js +7 -7
  17. package/dist/esm-node/libs/render/utils.js +23 -0
  18. package/dist/esm-node/server/index.js +1 -1
  19. package/dist/esm-node/server/modernServer.js +75 -80
  20. package/dist/types/libs/context/context.d.ts +1 -1
  21. package/dist/types/libs/render/utils.d.ts +5 -0
  22. package/dist/types/server/index.d.ts +2 -1
  23. package/dist/types/server/modernServer.d.ts +4 -4
  24. package/dist/types/type.d.ts +1 -1
  25. package/dist/types/utils.d.ts +1 -1
  26. package/package.json +9 -7
  27. package/dist/js/modern/constants.js +0 -35
  28. package/dist/js/modern/index.js +0 -18
  29. package/dist/js/modern/libs/context/context.js +0 -160
  30. package/dist/js/modern/libs/context/index.js +0 -6
  31. package/dist/js/modern/libs/hook-api/index.js +0 -134
  32. package/dist/js/modern/libs/hook-api/route.js +0 -20
  33. package/dist/js/modern/libs/hook-api/template.js +0 -73
  34. package/dist/js/modern/libs/loadConfig.js +0 -62
  35. package/dist/js/modern/libs/logger.js +0 -111
  36. package/dist/js/modern/libs/metrics.js +0 -11
  37. package/dist/js/modern/libs/proxy.js +0 -92
  38. package/dist/js/modern/libs/render/cache/__tests__/cache.fun.test.js +0 -114
  39. package/dist/js/modern/libs/render/cache/__tests__/cache.test.js +0 -254
  40. package/dist/js/modern/libs/render/cache/__tests__/cacheable.js +0 -47
  41. package/dist/js/modern/libs/render/cache/__tests__/error-configuration.js +0 -37
  42. package/dist/js/modern/libs/render/cache/__tests__/matched-cache.js +0 -91
  43. package/dist/js/modern/libs/render/cache/index.js +0 -115
  44. package/dist/js/modern/libs/render/cache/page-caches/index.js +0 -32
  45. package/dist/js/modern/libs/render/cache/page-caches/lru.js +0 -29
  46. package/dist/js/modern/libs/render/cache/spr.js +0 -248
  47. package/dist/js/modern/libs/render/cache/type.js +0 -0
  48. package/dist/js/modern/libs/render/cache/util.js +0 -102
  49. package/dist/js/modern/libs/render/index.js +0 -86
  50. package/dist/js/modern/libs/render/measure.js +0 -68
  51. package/dist/js/modern/libs/render/reader.js +0 -107
  52. package/dist/js/modern/libs/render/ssr.js +0 -100
  53. package/dist/js/modern/libs/render/static.js +0 -60
  54. package/dist/js/modern/libs/render/type.js +0 -9
  55. package/dist/js/modern/libs/route/index.js +0 -54
  56. package/dist/js/modern/libs/route/matcher.js +0 -87
  57. package/dist/js/modern/libs/route/route.js +0 -16
  58. package/dist/js/modern/libs/serve-file.js +0 -67
  59. package/dist/js/modern/server/index.js +0 -208
  60. package/dist/js/modern/server/modern-server-split.js +0 -74
  61. package/dist/js/modern/server/modern-server.js +0 -554
  62. package/dist/js/modern/type.js +0 -0
  63. package/dist/js/modern/utils.js +0 -136
  64. package/dist/js/modern/worker-server.js +0 -89
  65. package/dist/js/node/constants.js +0 -62
  66. package/dist/js/node/index.js +0 -44
  67. package/dist/js/node/libs/context/context.js +0 -189
  68. package/dist/js/node/libs/context/index.js +0 -30
  69. package/dist/js/node/libs/hook-api/index.js +0 -164
  70. package/dist/js/node/libs/hook-api/route.js +0 -43
  71. package/dist/js/node/libs/hook-api/template.js +0 -97
  72. package/dist/js/node/libs/loadConfig.js +0 -91
  73. package/dist/js/node/libs/logger.js +0 -133
  74. package/dist/js/node/libs/proxy.js +0 -114
  75. package/dist/js/node/libs/render/cache/__tests__/cache.fun.test.js +0 -115
  76. package/dist/js/node/libs/render/cache/__tests__/cache.test.js +0 -245
  77. package/dist/js/node/libs/render/cache/__tests__/cacheable.js +0 -70
  78. package/dist/js/node/libs/render/cache/__tests__/error-configuration.js +0 -60
  79. package/dist/js/node/libs/render/cache/__tests__/matched-cache.js +0 -114
  80. package/dist/js/node/libs/render/cache/index.js +0 -134
  81. package/dist/js/node/libs/render/cache/page-caches/index.js +0 -55
  82. package/dist/js/node/libs/render/cache/page-caches/lru.js +0 -58
  83. package/dist/js/node/libs/render/cache/spr.js +0 -270
  84. package/dist/js/node/libs/render/cache/type.js +0 -15
  85. package/dist/js/node/libs/render/cache/util.js +0 -138
  86. package/dist/js/node/libs/render/index.js +0 -115
  87. package/dist/js/node/libs/render/measure.js +0 -90
  88. package/dist/js/node/libs/render/reader.js +0 -140
  89. package/dist/js/node/libs/render/ssr.js +0 -123
  90. package/dist/js/node/libs/render/static.js +0 -89
  91. package/dist/js/node/libs/render/type.js +0 -32
  92. package/dist/js/node/libs/route/index.js +0 -78
  93. package/dist/js/node/libs/route/matcher.js +0 -106
  94. package/dist/js/node/libs/route/route.js +0 -39
  95. package/dist/js/node/libs/serve-file.js +0 -97
  96. package/dist/js/node/server/index.js +0 -219
  97. package/dist/js/node/server/modern-server-split.js +0 -97
  98. package/dist/js/node/server/modern-server.js +0 -559
  99. package/dist/js/node/type.js +0 -15
  100. package/dist/js/node/utils.js +0 -166
  101. package/dist/js/node/worker-server.js +0 -113
  102. package/dist/js/treeshaking/constants.js +0 -29
  103. package/dist/js/treeshaking/index.js +0 -13
  104. package/dist/js/treeshaking/libs/context/context.js +0 -274
  105. package/dist/js/treeshaking/libs/context/index.js +0 -5
  106. package/dist/js/treeshaking/libs/hook-api/index.js +0 -281
  107. package/dist/js/treeshaking/libs/hook-api/route.js +0 -68
  108. package/dist/js/treeshaking/libs/hook-api/template.js +0 -127
  109. package/dist/js/treeshaking/libs/loadConfig.js +0 -82
  110. package/dist/js/treeshaking/libs/logger.js +0 -205
  111. package/dist/js/treeshaking/libs/metrics.js +0 -6
  112. package/dist/js/treeshaking/libs/proxy.js +0 -244
  113. package/dist/js/treeshaking/libs/render/cache/__tests__/cache.fun.test.js +0 -291
  114. package/dist/js/treeshaking/libs/render/cache/__tests__/cache.test.js +0 -781
  115. package/dist/js/treeshaking/libs/render/cache/__tests__/cacheable.js +0 -67
  116. package/dist/js/treeshaking/libs/render/cache/__tests__/error-configuration.js +0 -45
  117. package/dist/js/treeshaking/libs/render/cache/__tests__/matched-cache.js +0 -147
  118. package/dist/js/treeshaking/libs/render/cache/index.js +0 -346
  119. package/dist/js/treeshaking/libs/render/cache/page-caches/index.js +0 -154
  120. package/dist/js/treeshaking/libs/render/cache/page-caches/lru.js +0 -84
  121. package/dist/js/treeshaking/libs/render/cache/spr.js +0 -492
  122. package/dist/js/treeshaking/libs/render/cache/type.js +0 -1
  123. package/dist/js/treeshaking/libs/render/cache/util.js +0 -280
  124. package/dist/js/treeshaking/libs/render/index.js +0 -234
  125. package/dist/js/treeshaking/libs/render/measure.js +0 -146
  126. package/dist/js/treeshaking/libs/render/reader.js +0 -339
  127. package/dist/js/treeshaking/libs/render/ssr.js +0 -223
  128. package/dist/js/treeshaking/libs/render/static.js +0 -216
  129. package/dist/js/treeshaking/libs/render/type.js +0 -7
  130. package/dist/js/treeshaking/libs/route/index.js +0 -130
  131. package/dist/js/treeshaking/libs/route/matcher.js +0 -143
  132. package/dist/js/treeshaking/libs/route/route.js +0 -40
  133. package/dist/js/treeshaking/libs/serve-file.js +0 -184
  134. package/dist/js/treeshaking/server/index.js +0 -505
  135. package/dist/js/treeshaking/server/modern-server-split.js +0 -360
  136. package/dist/js/treeshaking/server/modern-server.js +0 -1089
  137. package/dist/js/treeshaking/type.js +0 -1
  138. package/dist/js/treeshaking/utils.js +0 -147
  139. package/dist/js/treeshaking/worker-server.js +0 -233
@@ -111,13 +111,13 @@ var __generator = this && this.__generator || function(thisArg, body) {
111
111
  trys: [],
112
112
  ops: []
113
113
  };
114
- return(g = {
114
+ return g = {
115
115
  next: verb(0),
116
116
  "throw": verb(1),
117
117
  "return": verb(2)
118
118
  }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
119
119
  return this;
120
- }), g);
120
+ }), g;
121
121
  function verb(n) {
122
122
  return function(v) {
123
123
  return step([
@@ -206,7 +206,6 @@ import { createErrorDocument, createMiddlewareCollecter, getStaticReg, mergeExte
206
206
  import * as reader from "../libs/render/reader";
207
207
  import { createProxyHandler } from "../libs/proxy";
208
208
  import { createContext } from "../libs/context";
209
- import { templateInjectableStream } from "../libs/hook-api/template";
210
209
  import { AGGRED_DIR, ERROR_DIGEST, ERROR_PAGE_TEXT, RUN_MODE } from "../constants";
211
210
  import { createAfterMatchContext, createAfterRenderContext, createMiddlewareContext } from "../libs/hook-api";
212
211
  var SERVER_DIR = "./server";
@@ -232,7 +231,7 @@ var ModernServer = /*#__PURE__*/ function() {
232
231
  _defineProperty(this, "reader", reader);
233
232
  _defineProperty(this, "proxyTarget", void 0);
234
233
  _defineProperty(this, "routeRenderHandler", void 0);
235
- _defineProperty(this, "beforeRouteHandler", null);
234
+ _defineProperty(this, "loaderHandler", null);
236
235
  _defineProperty(this, "frameWebHandler", null);
237
236
  _defineProperty(this, "frameAPIHandler", null);
238
237
  _defineProperty(this, "proxyHandler", null);
@@ -287,7 +286,7 @@ var ModernServer = /*#__PURE__*/ function() {
287
286
  _state.sent();
288
287
  return [
289
288
  4,
290
- _this.prepareBeforeRouteHandler(usageRoutes, distDir)
289
+ _this.prepareLoaderHandler(usageRoutes, distDir)
291
290
  ];
292
291
  case 2:
293
292
  _state.sent();
@@ -306,7 +305,6 @@ var ModernServer = /*#__PURE__*/ function() {
306
305
  _state.sent();
307
306
  _this.addHandler(_this.setupStaticMiddleware((_this_conf_output = _this.conf.output) === null || _this_conf_output === void 0 ? void 0 : _this_conf_output.assetPrefix));
308
307
  _this.addHandler(faviconFallbackHandler);
309
- _this.addBeforeRouteHandler();
310
308
  _this.addHandler(_this.routeHandler.bind(_this));
311
309
  _this.compose();
312
310
  return [
@@ -322,45 +320,6 @@ var ModernServer = /*#__PURE__*/ function() {
322
320
  key: "onRepack",
323
321
  value: function onRepack(_) {}
324
322
  },
325
- {
326
- key: "addBeforeRouteHandler",
327
- value: function addBeforeRouteHandler() {
328
- var _this = this;
329
- this.addHandler(function() {
330
- var _ref = _asyncToGenerator(function(context, next) {
331
- return __generator(this, function(_state) {
332
- switch(_state.label){
333
- case 0:
334
- if (!_this.beforeRouteHandler) return [
335
- 3,
336
- 2
337
- ];
338
- return [
339
- 4,
340
- _this.beforeRouteHandler(context)
341
- ];
342
- case 1:
343
- _state.sent();
344
- if (_this.isSend(context.res)) {
345
- return [
346
- 2
347
- ];
348
- }
349
- _state.label = 2;
350
- case 2:
351
- return [
352
- 2,
353
- next()
354
- ];
355
- }
356
- });
357
- });
358
- return function(context, next) {
359
- return _ref.apply(this, arguments);
360
- };
361
- }());
362
- }
363
- },
364
323
  {
365
324
  key: "onServerChange",
366
325
  value: function onServerChange(param) {
@@ -416,6 +375,12 @@ var ModernServer = /*#__PURE__*/ function() {
416
375
  null
417
376
  ];
418
377
  }
378
+ if (result.contentStream) {
379
+ return [
380
+ 2,
381
+ result.contentStream
382
+ ];
383
+ }
419
384
  return [
420
385
  2,
421
386
  result.content.toString()
@@ -470,8 +435,8 @@ var ModernServer = /*#__PURE__*/ function() {
470
435
  }
471
436
  },
472
437
  {
473
- key: "prepareBeforeRouteHandler",
474
- value: function prepareBeforeRouteHandler(specs, distDir) {
438
+ key: "prepareLoaderHandler",
439
+ value: function prepareLoaderHandler(specs, distDir) {
475
440
  var _this = this;
476
441
  return _asyncToGenerator(function() {
477
442
  var runner, handler;
@@ -481,7 +446,7 @@ var ModernServer = /*#__PURE__*/ function() {
481
446
  runner = _this.runner;
482
447
  return [
483
448
  4,
484
- runner.preparebeforeRouteHandler({
449
+ runner.prepareLoaderHandler({
485
450
  serverRoutes: specs,
486
451
  distDir: distDir
487
452
  }, {
@@ -492,7 +457,7 @@ var ModernServer = /*#__PURE__*/ function() {
492
457
  ];
493
458
  case 1:
494
459
  handler = _state.sent();
495
- _this.beforeRouteHandler = handler;
460
+ _this.loaderHandler = handler;
496
461
  return [
497
462
  2
498
463
  ];
@@ -718,15 +683,78 @@ var ModernServer = /*#__PURE__*/ function() {
718
683
  value: function handleWeb(context, route) {
719
684
  var _this = this;
720
685
  return _asyncToGenerator(function() {
686
+ var res, renderResult;
721
687
  return __generator(this, function(_state) {
722
- return [
723
- 2,
724
- _this.routeRenderHandler({
725
- ctx: context,
726
- route: route,
727
- runner: _this.runner
728
- })
729
- ];
688
+ switch(_state.label){
689
+ case 0:
690
+ res = context.res;
691
+ if (!_this.loaderHandler) return [
692
+ 3,
693
+ 2
694
+ ];
695
+ return [
696
+ 4,
697
+ _this.loaderHandler(context)
698
+ ];
699
+ case 1:
700
+ _state.sent();
701
+ if (_this.isSend(res)) {
702
+ return [
703
+ 2,
704
+ null
705
+ ];
706
+ }
707
+ _state.label = 2;
708
+ case 2:
709
+ context.setParams(route.params);
710
+ context.setServerData("router", {
711
+ baseUrl: route.urlPath,
712
+ params: route.params
713
+ });
714
+ if (route.responseHeaders) {
715
+ Object.keys(route.responseHeaders).forEach(function(key) {
716
+ var value = route.responseHeaders[key];
717
+ if (value) {
718
+ context.res.setHeader(key, value);
719
+ }
720
+ });
721
+ }
722
+ return [
723
+ 4,
724
+ _this.routeRenderHandler({
725
+ ctx: context,
726
+ route: route,
727
+ runner: _this.runner
728
+ })
729
+ ];
730
+ case 3:
731
+ renderResult = _state.sent();
732
+ if (!renderResult) {
733
+ _this.render404(context);
734
+ return [
735
+ 2,
736
+ null
737
+ ];
738
+ }
739
+ if (renderResult.redirect) {
740
+ _this.redirect(res, renderResult.content, renderResult.statusCode);
741
+ return [
742
+ 2,
743
+ null
744
+ ];
745
+ }
746
+ if (_this.isSend(res)) {
747
+ return [
748
+ 2,
749
+ null
750
+ ];
751
+ }
752
+ res.setHeader("content-type", renderResult.contentType);
753
+ return [
754
+ 2,
755
+ renderResult
756
+ ];
757
+ }
730
758
  });
731
759
  })();
732
760
  }
@@ -771,7 +799,7 @@ var ModernServer = /*#__PURE__*/ function() {
771
799
  function routeHandler(context) {
772
800
  var _this = this;
773
801
  return _asyncToGenerator(function() {
774
- var res, matched, route, afterMatchContext, _afterMatchContext_router, current, url, status, matched2, middlewareContext, renderResult, contentStream, response, afterRenderContext;
802
+ var res, matched, route, afterMatchContext, _afterMatchContext_router, current, url, status, matched2, middlewareContext, renderResult, responseStream, response, afterRenderContext;
775
803
  return __generator(this, function(_state) {
776
804
  switch(_state.label){
777
805
  case 0:
@@ -798,6 +826,10 @@ var ModernServer = /*#__PURE__*/ function() {
798
826
  2
799
827
  ];
800
828
  case 2:
829
+ if (!route.entryName) return [
830
+ 3,
831
+ 5
832
+ ];
801
833
  afterMatchContext = createAfterMatchContext(context, route.entryName);
802
834
  if (!(_this.runMode === RUN_MODE.FULL)) return [
803
835
  3,
@@ -835,14 +867,11 @@ var ModernServer = /*#__PURE__*/ function() {
835
867
  }
836
868
  route = matched2.generate(context.url);
837
869
  }
838
- context.setParams(route.params);
839
- context.setServerData("router", {
840
- baseUrl: route.urlPath,
841
- params: route.params
842
- });
870
+ _state.label = 5;
871
+ case 5:
843
872
  if (!_this.frameWebHandler) return [
844
873
  3,
845
- 6
874
+ 7
846
875
  ];
847
876
  res.locals = res.locals || {};
848
877
  middlewareContext = createMiddlewareContext(context);
@@ -850,66 +879,43 @@ var ModernServer = /*#__PURE__*/ function() {
850
879
  4,
851
880
  _this.frameWebHandler(middlewareContext)
852
881
  ];
853
- case 5:
882
+ case 6:
854
883
  _state.sent();
855
884
  res.locals = _objectSpread({}, res.locals, middlewareContext.response.locals);
856
- _state.label = 6;
857
- case 6:
858
885
  if (_this.isSend(res)) {
859
886
  return [
860
887
  2
861
888
  ];
862
889
  }
863
- if (route.responseHeaders) {
864
- Object.keys(route.responseHeaders).forEach(function(key) {
865
- var value = route.responseHeaders[key];
866
- if (value) {
867
- context.res.setHeader(key, value);
868
- }
869
- });
870
- }
890
+ _state.label = 7;
891
+ case 7:
871
892
  return [
872
893
  4,
873
894
  _this.handleWeb(context, route)
874
895
  ];
875
- case 7:
896
+ case 8:
876
897
  renderResult = _state.sent();
877
898
  if (!renderResult) {
878
- _this.render404(context);
879
- return [
880
- 2
881
- ];
882
- }
883
- if (renderResult.redirect) {
884
- _this.redirect(res, renderResult.content, renderResult.statusCode);
885
899
  return [
886
900
  2
887
901
  ];
888
902
  }
889
- if (_this.isSend(res)) {
890
- return [
891
- 2
892
- ];
893
- }
894
- res.setHeader("content-type", renderResult.contentType);
895
- contentStream = renderResult.contentStream;
896
- if (contentStream) {
897
- contentStream.pipe(templateInjectableStream({
898
- prependHead: route.entryName ? "<script>window._SERVER_DATA=".concat(JSON.stringify(context.serverData), "</script>") : void 0
899
- })).pipe(res);
903
+ responseStream = renderResult.contentStream;
904
+ response = renderResult.content;
905
+ if (route.entryName && responseStream) {
906
+ responseStream.pipe(res);
900
907
  return [
901
908
  2
902
909
  ];
903
910
  }
904
- response = renderResult.content;
905
911
  if (!route.entryName) return [
906
912
  3,
907
- 10
913
+ 11
908
914
  ];
909
915
  afterRenderContext = createAfterRenderContext(context, response.toString());
910
916
  if (!(_this.runMode === RUN_MODE.FULL)) return [
911
917
  3,
912
- 9
918
+ 10
913
919
  ];
914
920
  return [
915
921
  4,
@@ -917,19 +923,18 @@ var ModernServer = /*#__PURE__*/ function() {
917
923
  onLast: noop
918
924
  })
919
925
  ];
920
- case 8:
921
- _state.sent();
922
- _state.label = 9;
923
926
  case 9:
927
+ _state.sent();
928
+ _state.label = 10;
929
+ case 10:
924
930
  if (_this.isSend(res)) {
925
931
  return [
926
932
  2
927
933
  ];
928
934
  }
929
- afterRenderContext.template.prependHead("<script>window._SERVER_DATA=".concat(JSON.stringify(context.serverData), "</script>"));
930
935
  response = afterRenderContext.template.get();
931
- _state.label = 10;
932
- case 10:
936
+ _state.label = 11;
937
+ case 11:
933
938
  res.end(response);
934
939
  return [
935
940
  2
@@ -4,13 +4,9 @@ import { TemplateAPI } from "./template";
4
4
  class Response {
5
5
  constructor(res) {
6
6
  this.res = res;
7
- this._cookie = cookie.parse(res.getHeader("set-cookie") || "");
8
7
  this.cookies = {
9
- get: this.getCookie.bind(this),
10
8
  set: this.setCookie.bind(this),
11
- delete: this.deleteCookie.bind(this),
12
- clear: this.clearCookie.bind(this),
13
- apply: this.applyCookie.bind(this)
9
+ clear: this.clearCookie.bind(this)
14
10
  };
15
11
  }
16
12
  get(key) {
@@ -22,29 +18,14 @@ class Response {
22
18
  status(code) {
23
19
  this.res.statusCode = code;
24
20
  }
25
- getCookie(key) {
26
- return this._cookie[key];
27
- }
28
- setCookie(key, value) {
29
- this._cookie[key] = value;
30
- }
31
- deleteCookie(key) {
32
- if (this._cookie[key]) {
33
- delete this._cookie[key];
34
- }
21
+ setCookie(key, value, options) {
22
+ const cookieValue = this.res.getHeader("set-cookie");
23
+ const fmt = Array.isArray(cookieValue) ? cookieValue : [cookieValue].filter(Boolean);
24
+ fmt.push(cookie.serialize(key, value, options));
25
+ this.res.setHeader("set-cookie", fmt.length === 1 ? fmt[0] : fmt);
35
26
  }
36
27
  clearCookie() {
37
- this._cookie = {};
38
- }
39
- applyCookie() {
40
- const str = Object.entries(this._cookie).map(([key, value]) => {
41
- return cookie.serialize(key, value);
42
- }).join("; ");
43
- if (str) {
44
- this.res.setHeader("set-cookie", str);
45
- } else {
46
- this.res.removeHeader("set-cookie");
47
- }
28
+ this.res.removeHeader("set-cookie");
48
29
  }
49
30
  raw(body, options) {
50
31
  const { status, headers = {} } = options || {};
@@ -4,6 +4,7 @@ import { ERROR_DIGEST } from "../../constants";
4
4
  import { handleDirectory } from "./static";
5
5
  import { readFile } from "./reader";
6
6
  import * as ssr from "./ssr";
7
+ import { injectSeverData } from "./utils";
7
8
  const createRenderHandler = ({
8
9
  distDir,
9
10
  staticGenerate,
@@ -55,7 +56,7 @@ const createRenderHandler = ({
55
56
  }
56
57
  }
57
58
  return {
58
- content,
59
+ content: route.entryName ? injectSeverData(content.toString(), ctx) : content,
59
60
  contentType: mime.contentType(path.extname(templatePath))
60
61
  };
61
62
  };
@@ -1,13 +1,13 @@
1
1
  import path from "path";
2
+ import { fs, mime } from "@modern-js/utils";
2
3
  import {
3
- fs,
4
4
  LOADABLE_STATS_FILE,
5
- mime,
6
- ROUTE_MINIFEST_FILE,
5
+ ROUTE_MANIFEST_FILE,
7
6
  SERVER_RENDER_FUNCTION_NAME
8
- } from "@modern-js/utils";
7
+ } from "@modern-js/utils/constants";
9
8
  import cache from "./cache";
10
9
  import { createLogger, createMetrics } from "./measure";
10
+ import { injectServerDataStream, injectSeverData } from "./utils";
11
11
  const render = async (ctx, renderOptions, runner) => {
12
12
  var _a;
13
13
  const {
@@ -22,7 +22,7 @@ const render = async (ctx, renderOptions, runner) => {
22
22
  const bundleJS = path.join(distDir, bundle);
23
23
  const loadableUri = path.join(distDir, LOADABLE_STATS_FILE);
24
24
  const loadableStats = fs.existsSync(loadableUri) ? require(loadableUri) : "";
25
- const routesManifestUri = path.join(distDir, ROUTE_MINIFEST_FILE);
25
+ const routesManifestUri = path.join(distDir, ROUTE_MANIFEST_FILE);
26
26
  const routeManifest = fs.existsSync(routesManifestUri) ? require(routesManifestUri) : void 0;
27
27
  const context = {
28
28
  request: {
@@ -72,13 +72,13 @@ const render = async (ctx, renderOptions, runner) => {
72
72
  }
73
73
  if (typeof content === "string") {
74
74
  return {
75
- content,
75
+ content: injectSeverData(content, ctx),
76
76
  contentType: mime.contentType("html")
77
77
  };
78
78
  } else {
79
79
  return {
80
80
  content: "",
81
- contentStream: content,
81
+ contentStream: injectServerDataStream(content, ctx),
82
82
  contentType: mime.contentType("html")
83
83
  };
84
84
  }
@@ -0,0 +1,23 @@
1
+ import { TemplateAPI, templateInjectableStream } from "../hook-api/template";
2
+ const injectSeverData = (content, context) => {
3
+ const template = new TemplateAPI(content);
4
+ template.prependHead(
5
+ `<script>window._SERVER_DATA=${JSON.stringify(
6
+ context.serverData
7
+ )}</script>`
8
+ );
9
+ return template.get();
10
+ };
11
+ const injectServerDataStream = (content, context) => {
12
+ return content.pipe(
13
+ templateInjectableStream({
14
+ prependHead: `<script>window._SERVER_DATA=${JSON.stringify(
15
+ context.serverData
16
+ )}</script>`
17
+ })
18
+ );
19
+ };
20
+ export {
21
+ injectServerDataStream,
22
+ injectSeverData
23
+ };
@@ -174,7 +174,7 @@ class Server {
174
174
  const serverEnv = process.env.MODERN_ENV;
175
175
  const defaultEnvPath = path.resolve(appDirectory, `.env`);
176
176
  const serverEnvPath = path.resolve(appDirectory, `.env.${serverEnv}`);
177
- for (const envPath of [defaultEnvPath, serverEnvPath]) {
177
+ for (const envPath of [serverEnvPath, defaultEnvPath]) {
178
178
  if (await fs.pathExists(envPath) && !(await fs.stat(envPath)).isDirectory()) {
179
179
  const envConfig = dotenv.config({ path: envPath });
180
180
  dotenvExpand(envConfig);