@modern-js/prod-server 2.35.0 → 2.36.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 (151) hide show
  1. package/dist/cjs/constants.js +33 -27
  2. package/dist/cjs/index.js +41 -33
  3. package/dist/cjs/libs/context/context.js +86 -36
  4. package/dist/cjs/libs/context/index.js +27 -17
  5. package/dist/cjs/libs/hook-api/base.js +49 -30
  6. package/dist/cjs/libs/hook-api/index.js +36 -28
  7. package/dist/cjs/libs/hook-api/index.worker.js +39 -31
  8. package/dist/cjs/libs/hook-api/route.js +28 -11
  9. package/dist/cjs/libs/hook-api/template.js +27 -17
  10. package/dist/cjs/libs/hook-api/templateForStream.js +31 -14
  11. package/dist/cjs/libs/loadConfig.js +46 -29
  12. package/dist/cjs/libs/metrics.js +24 -7
  13. package/dist/cjs/libs/preload/flushServerHeader.js +30 -13
  14. package/dist/cjs/libs/preload/index.js +22 -5
  15. package/dist/cjs/libs/preload/parseLinks.js +54 -30
  16. package/dist/cjs/libs/preload/shouldFlushServerHeader.js +25 -15
  17. package/dist/cjs/libs/preload/transformLinks2String.js +27 -11
  18. package/dist/cjs/libs/proxy.js +29 -19
  19. package/dist/cjs/libs/render/cache/__tests__/cache.fun.test.js +40 -22
  20. package/dist/cjs/libs/render/cache/__tests__/cache.test.js +33 -41
  21. package/dist/cjs/libs/render/cache/__tests__/cacheable.js +24 -7
  22. package/dist/cjs/libs/render/cache/__tests__/error-configuration.js +24 -7
  23. package/dist/cjs/libs/render/cache/__tests__/matched-cache.js +24 -7
  24. package/dist/cjs/libs/render/cache/index.js +30 -18
  25. package/dist/cjs/libs/render/cache/page-caches/index.js +26 -9
  26. package/dist/cjs/libs/render/cache/page-caches/lru.js +39 -13
  27. package/dist/cjs/libs/render/cache/spr.js +62 -44
  28. package/dist/cjs/libs/render/cache/type.js +15 -3
  29. package/dist/cjs/libs/render/cache/util.js +49 -36
  30. package/dist/cjs/libs/render/index.js +56 -30
  31. package/dist/cjs/libs/render/measure.js +27 -17
  32. package/dist/cjs/libs/render/reader.js +50 -35
  33. package/dist/cjs/libs/render/ssr.js +52 -26
  34. package/dist/cjs/libs/render/static.js +44 -18
  35. package/dist/cjs/libs/render/type.js +24 -7
  36. package/dist/cjs/libs/render/utils.js +29 -19
  37. package/dist/cjs/libs/reporter.js +24 -7
  38. package/dist/cjs/libs/route/index.js +30 -20
  39. package/dist/cjs/libs/route/matcher.js +37 -20
  40. package/dist/cjs/libs/route/route.js +34 -17
  41. package/dist/cjs/libs/serveFile.js +40 -21
  42. package/dist/cjs/libs/serverTiming.js +27 -10
  43. package/dist/cjs/renderHtml.js +17 -20
  44. package/dist/cjs/server/index.js +74 -50
  45. package/dist/cjs/server/modernServer.js +136 -113
  46. package/dist/cjs/server/modernServerSplit.js +29 -12
  47. package/dist/cjs/type.js +15 -3
  48. package/dist/cjs/utils.js +41 -38
  49. package/dist/cjs/workerServer.js +48 -39
  50. package/dist/esm/constants.js +14 -6
  51. package/dist/esm/index.js +11 -5
  52. package/dist/esm/libs/context/context.js +33 -6
  53. package/dist/esm/libs/context/index.js +5 -2
  54. package/dist/esm/libs/hook-api/base.js +6 -2
  55. package/dist/esm/libs/hook-api/index.js +11 -5
  56. package/dist/esm/libs/hook-api/index.worker.js +16 -10
  57. package/dist/esm/libs/hook-api/route.js +4 -1
  58. package/dist/esm/libs/hook-api/template.js +6 -2
  59. package/dist/esm/libs/hook-api/templateForStream.js +4 -1
  60. package/dist/esm/libs/loadConfig.js +8 -3
  61. package/dist/esm/libs/metrics.js +3 -1
  62. package/dist/esm/libs/preload/flushServerHeader.js +9 -6
  63. package/dist/esm/libs/preload/parseLinks.js +13 -11
  64. package/dist/esm/libs/preload/shouldFlushServerHeader.js +6 -2
  65. package/dist/esm/libs/preload/transformLinks2String.js +5 -3
  66. package/dist/esm/libs/proxy.js +9 -5
  67. package/dist/esm/libs/render/cache/__tests__/cache.test.js +12 -12
  68. package/dist/esm/libs/render/cache/__tests__/cacheable.js +4 -1
  69. package/dist/esm/libs/render/cache/__tests__/error-configuration.js +4 -1
  70. package/dist/esm/libs/render/cache/__tests__/matched-cache.js +4 -1
  71. package/dist/esm/libs/render/cache/index.js +6 -3
  72. package/dist/esm/libs/render/cache/page-caches/index.js +5 -2
  73. package/dist/esm/libs/render/cache/page-caches/lru.js +4 -1
  74. package/dist/esm/libs/render/cache/spr.js +13 -9
  75. package/dist/esm/libs/render/cache/type.js +0 -1
  76. package/dist/esm/libs/render/cache/util.js +18 -8
  77. package/dist/esm/libs/render/index.js +17 -11
  78. package/dist/esm/libs/render/measure.js +15 -11
  79. package/dist/esm/libs/render/reader.js +17 -10
  80. package/dist/esm/libs/render/ssr.js +11 -8
  81. package/dist/esm/libs/render/static.js +5 -2
  82. package/dist/esm/libs/render/type.js +4 -1
  83. package/dist/esm/libs/render/utils.js +6 -2
  84. package/dist/esm/libs/reporter.js +4 -1
  85. package/dist/esm/libs/route/index.js +5 -2
  86. package/dist/esm/libs/route/matcher.js +6 -3
  87. package/dist/esm/libs/route/route.js +4 -1
  88. package/dist/esm/libs/serveFile.js +6 -2
  89. package/dist/esm/libs/serverTiming.js +4 -1
  90. package/dist/esm/renderHtml.js +133 -124
  91. package/dist/esm/server/index.js +14 -13
  92. package/dist/esm/server/modernServer.js +39 -47
  93. package/dist/esm/server/modernServerSplit.js +4 -1
  94. package/dist/esm/type.js +0 -1
  95. package/dist/esm/utils.js +23 -12
  96. package/dist/esm/workerServer.js +25 -22
  97. package/dist/esm-node/constants.js +14 -6
  98. package/dist/esm-node/index.js +11 -5
  99. package/dist/esm-node/libs/context/context.js +33 -6
  100. package/dist/esm-node/libs/context/index.js +5 -2
  101. package/dist/esm-node/libs/hook-api/base.js +6 -2
  102. package/dist/esm-node/libs/hook-api/index.js +10 -4
  103. package/dist/esm-node/libs/hook-api/index.worker.js +10 -4
  104. package/dist/esm-node/libs/hook-api/route.js +4 -1
  105. package/dist/esm-node/libs/hook-api/template.js +6 -2
  106. package/dist/esm-node/libs/hook-api/templateForStream.js +4 -1
  107. package/dist/esm-node/libs/loadConfig.js +8 -3
  108. package/dist/esm-node/libs/metrics.js +3 -1
  109. package/dist/esm-node/libs/preload/flushServerHeader.js +6 -3
  110. package/dist/esm-node/libs/preload/parseLinks.js +11 -9
  111. package/dist/esm-node/libs/preload/shouldFlushServerHeader.js +6 -2
  112. package/dist/esm-node/libs/preload/transformLinks2String.js +5 -3
  113. package/dist/esm-node/libs/proxy.js +6 -2
  114. package/dist/esm-node/libs/render/cache/__tests__/cache.test.js +7 -12
  115. package/dist/esm-node/libs/render/cache/__tests__/cacheable.js +4 -1
  116. package/dist/esm-node/libs/render/cache/__tests__/error-configuration.js +4 -1
  117. package/dist/esm-node/libs/render/cache/__tests__/matched-cache.js +4 -1
  118. package/dist/esm-node/libs/render/cache/index.js +5 -3
  119. package/dist/esm-node/libs/render/cache/page-caches/index.js +4 -1
  120. package/dist/esm-node/libs/render/cache/page-caches/lru.js +4 -1
  121. package/dist/esm-node/libs/render/cache/spr.js +7 -4
  122. package/dist/esm-node/libs/render/cache/type.js +0 -1
  123. package/dist/esm-node/libs/render/cache/util.js +18 -8
  124. package/dist/esm-node/libs/render/index.js +7 -3
  125. package/dist/esm-node/libs/render/measure.js +6 -2
  126. package/dist/esm-node/libs/render/reader.js +13 -7
  127. package/dist/esm-node/libs/render/ssr.js +4 -1
  128. package/dist/esm-node/libs/render/static.js +4 -1
  129. package/dist/esm-node/libs/render/type.js +4 -1
  130. package/dist/esm-node/libs/render/utils.js +6 -2
  131. package/dist/esm-node/libs/reporter.js +4 -1
  132. package/dist/esm-node/libs/route/index.js +5 -2
  133. package/dist/esm-node/libs/route/matcher.js +6 -3
  134. package/dist/esm-node/libs/route/route.js +4 -1
  135. package/dist/esm-node/libs/serveFile.js +6 -2
  136. package/dist/esm-node/libs/serverTiming.js +4 -1
  137. package/dist/esm-node/renderHtml.js +72 -63
  138. package/dist/esm-node/server/index.js +11 -10
  139. package/dist/esm-node/server/modernServer.js +29 -28
  140. package/dist/esm-node/server/modernServerSplit.js +4 -1
  141. package/dist/esm-node/type.js +0 -1
  142. package/dist/esm-node/utils.js +20 -9
  143. package/dist/esm-node/workerServer.js +12 -9
  144. package/dist/types/libs/context/context.d.ts +2 -1
  145. package/dist/types/type.d.ts +1 -0
  146. package/dist/types/utils.d.ts +1 -1
  147. package/package.json +9 -8
  148. package/dist/cjs/libs/logger.js +0 -123
  149. package/dist/esm/libs/logger.js +0 -125
  150. package/dist/esm-node/libs/logger.js +0 -106
  151. package/dist/types/libs/logger.d.ts +0 -61
@@ -8,7 +8,7 @@ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
8
8
  import { createServer } from "http";
9
9
  import path from "path";
10
10
  import { fs, isPromise, isWebOnly, mime, ROUTE_SPEC_FILE } from "@modern-js/utils";
11
- import { time } from "@modern-js/utils/universal/time";
11
+ import { time } from "@modern-js/runtime-utils/time";
12
12
  import { RouteMatchManager } from "../libs/route";
13
13
  import { createRenderHandler } from "../libs/render";
14
14
  import { createStaticFileHandler, faviconFallbackHandler } from "../libs/serveFile";
@@ -19,12 +19,11 @@ import { createContext } from "../libs/context";
19
19
  import { AGGRED_DIR, ERROR_DIGEST, ERROR_PAGE_TEXT, RUN_MODE, ServerReportTimings } from "../constants";
20
20
  import { createAfterMatchContext, createAfterRenderContext, createMiddlewareContext } from "../libs/hook-api";
21
21
  var SERVER_DIR = "./server";
22
- export var ModernServer = /* @__PURE__ */ function() {
22
+ var ModernServer = /* @__PURE__ */ function() {
23
23
  "use strict";
24
24
  function ModernServer2(param) {
25
25
  var pwd = param.pwd, config = param.config, routes = param.routes, staticGenerate = param.staticGenerate, logger = param.logger, metrics = param.metrics, runMode = param.runMode, proxyTarget = param.proxyTarget, appContext = param.appContext;
26
26
  _class_call_check(this, ModernServer2);
27
- var _appContext;
28
27
  _define_property(this, "pwd", void 0);
29
28
  _define_property(this, "distDir", void 0);
30
29
  _define_property(this, "workDir", void 0);
@@ -58,7 +57,7 @@ export var ModernServer = /* @__PURE__ */ function() {
58
57
  this.proxyTarget = proxyTarget;
59
58
  this.staticGenerate = staticGenerate || false;
60
59
  this.runMode = runMode || RUN_MODE.FULL;
61
- this.metaName = (_appContext = appContext) === null || _appContext === void 0 ? void 0 : _appContext.metaName;
60
+ this.metaName = appContext === null || appContext === void 0 ? void 0 : appContext.metaName;
62
61
  }
63
62
  _create_class(ModernServer2, [
64
63
  {
@@ -68,7 +67,7 @@ export var ModernServer = /* @__PURE__ */ function() {
68
67
  function onInit(runner, app) {
69
68
  var _this = this;
70
69
  return _async_to_generator(function() {
71
- var _conf_bff, _app, _this_conf_output, distDir, conf, _createProxyHandler, handlers, handleUpgrade, usageRoutes;
70
+ var _conf_bff, _this_conf_output, distDir, conf, _createProxyHandler, handlers, handleUpgrade, usageRoutes;
72
71
  return _ts_generator(this, function(_state) {
73
72
  switch (_state.label) {
74
73
  case 0:
@@ -83,7 +82,7 @@ export var ModernServer = /* @__PURE__ */ function() {
83
82
  _this.addHandler(handler);
84
83
  });
85
84
  }
86
- (_app = app) === null || _app === void 0 ? void 0 : _app.on("close", function() {
85
+ app === null || app === void 0 ? void 0 : app.on("close", function() {
87
86
  _this.reader.close();
88
87
  });
89
88
  usageRoutes = _this.filterRoutes(_this.getRoutes());
@@ -129,12 +128,12 @@ export var ModernServer = /* @__PURE__ */ function() {
129
128
  var ssrConfig = (_this_conf_server = this.conf.server) === null || _this_conf_server === void 0 ? void 0 : _this_conf_server.ssr;
130
129
  var forceCSR = typeof ssrConfig === "object" ? ssrConfig.forceCSR : false;
131
130
  return createRenderHandler({
132
- distDir: distDir,
133
- staticGenerate: staticGenerate,
134
- forceCSR: forceCSR,
131
+ distDir,
132
+ staticGenerate,
133
+ forceCSR,
135
134
  conf: this.conf,
136
135
  nonce: (_conf_security = conf.security) === null || _conf_security === void 0 ? void 0 : _conf_security.nonce,
137
- metaName: metaName
136
+ metaName
138
137
  });
139
138
  }
140
139
  },
@@ -246,8 +245,8 @@ export var ModernServer = /* @__PURE__ */ function() {
246
245
  return [
247
246
  4,
248
247
  _this.prepareFrameHandler({
249
- onlyWeb: onlyWeb,
250
- onlyApi: onlyApi
248
+ onlyWeb,
249
+ onlyApi
251
250
  })
252
251
  ];
253
252
  case 1:
@@ -311,7 +310,7 @@ export var ModernServer = /* @__PURE__ */ function() {
311
310
  4,
312
311
  runner.prepareLoaderHandler({
313
312
  serverRoutes: specs,
314
- distDir: distDir
313
+ distDir
315
314
  }, {
316
315
  onLast: function() {
317
316
  return null;
@@ -432,13 +431,13 @@ export var ModernServer = /* @__PURE__ */ function() {
432
431
  value: function prepareAPIHandler(extension) {
433
432
  var _this = this;
434
433
  return _async_to_generator(function() {
435
- var _bff, _bff1, workDir, runner, conf, bff, prefix, webOnly;
434
+ var workDir, runner, conf, bff, prefix, webOnly;
436
435
  return _ts_generator(this, function(_state) {
437
436
  switch (_state.label) {
438
437
  case 0:
439
438
  workDir = _this.workDir, runner = _this.runner, conf = _this.conf;
440
439
  bff = conf.bff;
441
- prefix = ((_bff = bff) === null || _bff === void 0 ? void 0 : _bff.prefix) || "/api";
440
+ prefix = (bff === null || bff === void 0 ? void 0 : bff.prefix) || "/api";
442
441
  return [
443
442
  4,
444
443
  isWebOnly()
@@ -460,7 +459,7 @@ export var ModernServer = /* @__PURE__ */ function() {
460
459
  pwd: workDir,
461
460
  config: extension,
462
461
  prefix: Array.isArray(prefix) ? prefix[0] : prefix,
463
- httpMethodDecider: (_bff1 = bff) === null || _bff1 === void 0 ? void 0 : _bff1.httpMethodDecider,
462
+ httpMethodDecider: bff === null || bff === void 0 ? void 0 : bff.httpMethodDecider,
464
463
  render: _this.render.bind(_this)
465
464
  }, {
466
465
  onLast: function() {
@@ -591,7 +590,7 @@ export var ModernServer = /* @__PURE__ */ function() {
591
590
  4,
592
591
  _this.routeRenderHandler({
593
592
  ctx: context,
594
- route: route,
593
+ route,
595
594
  runner: _this.runner
596
595
  })
597
596
  ];
@@ -712,17 +711,12 @@ export var ModernServer = /* @__PURE__ */ function() {
712
711
  2
713
712
  ];
714
713
  case 3:
715
- if (!route.entryName)
716
- return [
717
- 3,
718
- 6
719
- ];
720
- afterMatchContext = createAfterMatchContext(context, route.entryName);
721
- if (!(_this.runMode === RUN_MODE.FULL))
714
+ if (!(route.entryName && _this.runMode === RUN_MODE.FULL))
722
715
  return [
723
716
  3,
724
717
  5
725
718
  ];
719
+ afterMatchContext = createAfterMatchContext(context, route.entryName);
726
720
  end1 = time();
727
721
  return [
728
722
  4,
@@ -734,8 +728,6 @@ export var ModernServer = /* @__PURE__ */ function() {
734
728
  _state.sent();
735
729
  cost = end1();
736
730
  cost && reporter.reportTiming(ServerReportTimings.SERVER_HOOK_AFTER_MATCH, cost);
737
- _state.label = 5;
738
- case 5:
739
731
  if (_this.isSend(res)) {
740
732
  return [
741
733
  2
@@ -758,12 +750,12 @@ export var ModernServer = /* @__PURE__ */ function() {
758
750
  }
759
751
  route = matched1.generate(context.url);
760
752
  }
761
- _state.label = 6;
762
- case 6:
753
+ _state.label = 5;
754
+ case 5:
763
755
  if (!_this.frameWebHandler)
764
756
  return [
765
757
  3,
766
- 8
758
+ 7
767
759
  ];
768
760
  res.locals = res.locals || {};
769
761
  middlewareContext = createMiddlewareContext(context);
@@ -772,7 +764,7 @@ export var ModernServer = /* @__PURE__ */ function() {
772
764
  4,
773
765
  _this.frameWebHandler(middlewareContext)
774
766
  ];
775
- case 7:
767
+ case 6:
776
768
  _state.sent();
777
769
  cost1 = end2();
778
770
  cost1 && reporter.reportTiming(ServerReportTimings.SERVER_MIDDLEWARE, cost1);
@@ -782,13 +774,13 @@ export var ModernServer = /* @__PURE__ */ function() {
782
774
  2
783
775
  ];
784
776
  }
785
- _state.label = 8;
786
- case 8:
777
+ _state.label = 7;
778
+ case 7:
787
779
  return [
788
780
  4,
789
781
  _this.handleWeb(context, route)
790
782
  ];
791
- case 9:
783
+ case 8:
792
784
  renderResult = _state.sent();
793
785
  if (!renderResult) {
794
786
  return [
@@ -803,17 +795,12 @@ export var ModernServer = /* @__PURE__ */ function() {
803
795
  2
804
796
  ];
805
797
  }
806
- if (!route.entryName)
798
+ if (!(route.entryName && _this.runMode === RUN_MODE.FULL))
807
799
  return [
808
800
  3,
809
- 12
801
+ 10
810
802
  ];
811
803
  afterRenderContext = createAfterRenderContext(context, response.toString());
812
- if (!(_this.runMode === RUN_MODE.FULL))
813
- return [
814
- 3,
815
- 11
816
- ];
817
804
  end3 = time();
818
805
  return [
819
806
  4,
@@ -821,20 +808,18 @@ export var ModernServer = /* @__PURE__ */ function() {
821
808
  onLast: noop
822
809
  })
823
810
  ];
824
- case 10:
811
+ case 9:
825
812
  _state.sent();
826
813
  cost2 = end3();
827
814
  cost2 && reporter.reportTiming(ServerReportTimings.SERVER_HOOK_AFTER_RENDER, cost2);
828
- _state.label = 11;
829
- case 11:
830
815
  if (_this.isSend(res)) {
831
816
  return [
832
817
  2
833
818
  ];
834
819
  }
835
820
  response = afterRenderContext.template.get();
836
- _state.label = 12;
837
- case 12:
821
+ _state.label = 10;
822
+ case 10:
838
823
  res.end(response);
839
824
  return [
840
825
  2
@@ -848,7 +833,11 @@ export var ModernServer = /* @__PURE__ */ function() {
848
833
  {
849
834
  key: "isSend",
850
835
  value: function isSend(res) {
851
- if (res.writableEnded) {
836
+ if (res.modernFlushedHeaders) {
837
+ if (res.writableFinished) {
838
+ return true;
839
+ }
840
+ } else if (res.headersSent) {
852
841
  return true;
853
842
  }
854
843
  if (res.getHeader("Location") && isRedirect(res.statusCode)) {
@@ -997,7 +986,7 @@ export var ModernServer = /* @__PURE__ */ function() {
997
986
  return [
998
987
  4,
999
988
  _this.routeRenderHandler({
1000
- route: route,
989
+ route,
1001
990
  ctx: context,
1002
991
  runner: _this.runner
1003
992
  })
@@ -1034,3 +1023,6 @@ export var ModernServer = /* @__PURE__ */ function() {
1034
1023
  ]);
1035
1024
  return ModernServer2;
1036
1025
  }();
1026
+ export {
1027
+ ModernServer
1028
+ };
@@ -122,7 +122,7 @@ var ModernWebServer = /* @__PURE__ */ function(ModernServer2) {
122
122
  ]);
123
123
  return ModernWebServer2;
124
124
  }(ModernServer);
125
- export var createProdServer = function(options) {
125
+ var createProdServer = function(options) {
126
126
  if (options.apiOnly) {
127
127
  return new ModernAPIServer(options);
128
128
  } else if (options.ssrOnly) {
@@ -133,3 +133,6 @@ export var createProdServer = function(options) {
133
133
  return new ModernServer(options);
134
134
  }
135
135
  };
136
+ export {
137
+ createProdServer
138
+ };
package/dist/esm/type.js CHANGED
@@ -1 +0,0 @@
1
- export {};
package/dist/esm/utils.js CHANGED
@@ -1,20 +1,20 @@
1
1
  import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
2
2
  import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
3
3
  import { createDebugger } from "@modern-js/utils";
4
- export var debug = createDebugger("prod-server");
5
- export var mergeExtension = function(users) {
4
+ var debug = createDebugger("prod-server");
5
+ var mergeExtension = function(users) {
6
6
  var output = [];
7
7
  return {
8
8
  middleware: output.concat(users)
9
9
  };
10
10
  };
11
- export var noop = function() {
11
+ var noop = function() {
12
12
  };
13
- export var createErrorDocument = function(status, text) {
13
+ var createErrorDocument = function(status, text) {
14
14
  var title = "".concat(status, ": ").concat(text);
15
15
  return '<!DOCTYPE html>\n <html lang="en">\n <head>\n <meta charset="utf-8">\n <meta name="viewport" content="width=device-width">\n <title>'.concat(title, '</title>\n <style>\n html,body {\n margin: 0;\n }\n\n .page-container {\n color: #000;\n background: #fff;\n height: 100vh;\n text-align: center;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n </style>\n </head>\n <body>\n <div class="page-container">\n <h1>').concat(status, "</h1>\n <div>").concat(text, "</div>\n </body>\n </html>\n ");
16
16
  };
17
- export var createMiddlewareCollecter = function() {
17
+ var createMiddlewareCollecter = function() {
18
18
  var webMiddlewares = [];
19
19
  var apiMiddlewares = [];
20
20
  var addWebMiddleware = function(input) {
@@ -30,12 +30,12 @@ export var createMiddlewareCollecter = function() {
30
30
  };
31
31
  };
32
32
  return {
33
- getMiddlewares: getMiddlewares,
34
- addWebMiddleware: addWebMiddleware,
35
- addAPIMiddleware: addAPIMiddleware
33
+ getMiddlewares,
34
+ addWebMiddleware,
35
+ addAPIMiddleware
36
36
  };
37
37
  };
38
- export var getStaticReg = function() {
38
+ var getStaticReg = function() {
39
39
  var output = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, html = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, prefix = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "/";
40
40
  var tmp = output.distPath, _ref = tmp === void 0 ? {} : tmp, cssPath = _ref.css, jsPath = _ref.js, mediaPath = _ref.media;
41
41
  var favicon = html.favicon, faviconByEntries = html.faviconByEntries;
@@ -59,7 +59,7 @@ export var getStaticReg = function() {
59
59
  var staticPathRegExp = new RegExp("^".concat(regPrefix, "(").concat(_to_consumable_array(staticReg).concat(_to_consumable_array(iconReg)).join("|"), ")"));
60
60
  return staticPathRegExp;
61
61
  };
62
- export var prepareFavicons = function(favicon, faviconByEntries) {
62
+ var prepareFavicons = function(favicon, faviconByEntries) {
63
63
  var faviconNames = [];
64
64
  if (favicon) {
65
65
  faviconNames.push(favicon.substring(favicon.lastIndexOf("/") + 1));
@@ -74,7 +74,7 @@ export var prepareFavicons = function(favicon, faviconByEntries) {
74
74
  }
75
75
  return faviconNames;
76
76
  };
77
- export var headersWithoutCookie = function(headers) {
77
+ var headersWithoutCookie = function(headers) {
78
78
  if (typeof headers.cookie !== "undefined") {
79
79
  var safeHeaders = _object_spread({}, headers);
80
80
  delete safeHeaders.cookie;
@@ -82,7 +82,7 @@ export var headersWithoutCookie = function(headers) {
82
82
  }
83
83
  return headers;
84
84
  };
85
- export var isRedirect = function(code) {
85
+ var isRedirect = function(code) {
86
86
  return [
87
87
  301,
88
88
  302,
@@ -90,3 +90,14 @@ export var isRedirect = function(code) {
90
90
  308
91
91
  ].includes(code);
92
92
  };
93
+ export {
94
+ createErrorDocument,
95
+ createMiddlewareCollecter,
96
+ debug,
97
+ getStaticReg,
98
+ headersWithoutCookie,
99
+ isRedirect,
100
+ mergeExtension,
101
+ noop,
102
+ prepareFavicons
103
+ };
@@ -5,12 +5,12 @@ import { _ as _define_property } from "@swc/helpers/_/_define_property";
5
5
  import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
6
6
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
7
7
  import { createAsyncPipeline } from "@modern-js/plugin";
8
+ import { createLogger } from "@modern-js/utils/logger";
8
9
  import { createAfterMatchContext, createAfterRenderContext, createMiddlewareContext } from "./libs/hook-api/index.worker";
9
- import { Logger } from "./libs/logger";
10
10
  import { RouteMatchManager } from "./libs/route";
11
11
  import { metrics as defaultMetrics } from "./libs/metrics";
12
12
  import { defaultReporter } from "./libs/reporter";
13
- export var ReturnResponse = /* @__PURE__ */ function() {
13
+ var ReturnResponse = /* @__PURE__ */ function() {
14
14
  "use strict";
15
15
  function ReturnResponse2(body, status) {
16
16
  var headers = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
@@ -86,13 +86,13 @@ var checkIsSent = function(context) {
86
86
  return false;
87
87
  };
88
88
  var middlewarePipeline = createAsyncPipeline();
89
- export var createHandler = function(manifest) {
89
+ var createHandler = function(manifest) {
90
90
  var routeMgr = new RouteMatchManager();
91
91
  var pages = manifest.pages, routes = manifest.routes;
92
92
  routeMgr.reset(routes);
93
93
  return function() {
94
94
  var _ref = _async_to_generator(function(options) {
95
- var _page_serverHooks_afterMatch, _page_serverHooks, _page, request, loadableStats, routeManifest, url, pageMatch, entryName, page, logger, metrics, reporter, hookContext, afterMatchHookContext, _page_serverHooks1, _page_serverHooks_afterRender, _page_serverHooks2, middlewarsHookContext, responseLike, params, baseUrl, serverRenderContext, body, afterRenderHookContext, e;
95
+ var _page_serverHooks_afterMatch, _page_serverHooks, request, loadableStats, routeManifest, url, pageMatch, entryName, page, logger, metrics, reporter, hookContext, afterMatchHookContext, _page_serverHooks1, _page_serverHooks_afterRender, _page_serverHooks2, middlewarsHookContext, responseLike, params, baseUrl, serverRenderContext, body, afterRenderHookContext, e;
96
96
  function createServerRequest(url2, baseUrl2, request2, params2) {
97
97
  var pathname = url2.pathname, host = url2.host, searchParams = url2.searchParams;
98
98
  var rawHeaders = request2.headers;
@@ -104,11 +104,11 @@ export var createHandler = function(manifest) {
104
104
  return {
105
105
  url: url2.href,
106
106
  baseUrl: baseUrl2,
107
- pathname: pathname,
108
- host: host,
109
- headers: headers,
107
+ pathname,
108
+ host,
109
+ headers,
110
110
  params: params2,
111
- query: query
111
+ query
112
112
  };
113
113
  }
114
114
  return _ts_generator(this, function(_state) {
@@ -125,14 +125,14 @@ export var createHandler = function(manifest) {
125
125
  }
126
126
  entryName = pageMatch.spec.urlPath;
127
127
  page = pages[entryName];
128
- logger = new Logger({
128
+ logger = createLogger({
129
129
  level: "warn"
130
130
  });
131
131
  metrics = defaultMetrics;
132
132
  reporter = defaultReporter;
133
133
  hookContext = createWorkerHookContext(request.url, logger, metrics, reporter);
134
134
  afterMatchHookContext = createAfterMatchContext(hookContext, entryName);
135
- (_page = page) === null || _page === void 0 ? void 0 : (_page_serverHooks = _page.serverHooks) === null || _page_serverHooks === void 0 ? void 0 : (_page_serverHooks_afterMatch = _page_serverHooks.afterMatch) === null || _page_serverHooks_afterMatch === void 0 ? void 0 : _page_serverHooks_afterMatch.call(_page_serverHooks, afterMatchHookContext, function() {
135
+ page === null || page === void 0 ? void 0 : (_page_serverHooks = page.serverHooks) === null || _page_serverHooks === void 0 ? void 0 : (_page_serverHooks_afterMatch = _page_serverHooks.afterMatch) === null || _page_serverHooks_afterMatch === void 0 ? void 0 : _page_serverHooks_afterMatch.call(_page_serverHooks, afterMatchHookContext, function() {
136
136
  return void 0;
137
137
  });
138
138
  if (checkIsSent(hookContext)) {
@@ -178,22 +178,21 @@ export var createHandler = function(manifest) {
178
178
  serverRenderContext = {
179
179
  request: createServerRequest(url, baseUrl, request, params),
180
180
  response: responseLike,
181
- loadableStats: loadableStats,
182
- routeManifest: routeManifest,
181
+ loadableStats,
182
+ routeManifest,
183
183
  redirection: {},
184
184
  template: page.template,
185
185
  entryName: page.entryName,
186
- logger: logger,
186
+ logger,
187
187
  reporter: defaultReporter,
188
- metrics: metrics,
189
- // FIXME: pass correctly req & res
188
+ metrics,
190
189
  req: request,
190
+ res: responseLike,
191
191
  serverTiming: {
192
192
  addServeTiming: function addServeTiming() {
193
193
  return this;
194
194
  }
195
- },
196
- res: responseLike
195
+ }
197
196
  };
198
197
  return [
199
198
  4,
@@ -255,11 +254,11 @@ function createWorkerHookContext(url, logger, metrics, reporter) {
255
254
  new Request(url)
256
255
  ], res = _ref[0], req = _ref[1];
257
256
  return {
258
- res: res,
259
- req: req,
260
- logger: logger,
261
- metrics: metrics,
262
- reporter: reporter
257
+ res,
258
+ req,
259
+ logger,
260
+ metrics,
261
+ reporter
263
262
  };
264
263
  }
265
264
  function applyMiddlewares(ctx, middleware) {
@@ -283,3 +282,7 @@ function applyMiddlewares(ctx, middleware) {
283
282
  });
284
283
  }
285
284
  }
285
+ export {
286
+ ReturnResponse,
287
+ createHandler
288
+ };
@@ -1,16 +1,16 @@
1
- export const AGGRED_DIR = {
1
+ const AGGRED_DIR = {
2
2
  mock: "config/mock",
3
3
  server: "server",
4
4
  api: "api",
5
5
  shared: "shared",
6
6
  lambda: "lambda"
7
7
  };
8
- export var ApiServerMode;
8
+ var ApiServerMode;
9
9
  (function(ApiServerMode2) {
10
10
  ApiServerMode2["func"] = "function";
11
11
  ApiServerMode2["frame"] = "framework";
12
12
  })(ApiServerMode || (ApiServerMode = {}));
13
- export const ERROR_DIGEST = {
13
+ const ERROR_DIGEST = {
14
14
  INIT: "Server init error",
15
15
  ENOTF: "Page could not be found",
16
16
  WARMUP: "SSR warmup failed",
@@ -18,18 +18,26 @@ export const ERROR_DIGEST = {
18
18
  ERENDER: "SSR render failed",
19
19
  EMICROINJ: "Get micro-frontend info failed"
20
20
  };
21
- export const ERROR_PAGE_TEXT = {
21
+ const ERROR_PAGE_TEXT = {
22
22
  404: "This page could not be found.",
23
23
  500: "Internal Server Error."
24
24
  };
25
- export const RUN_MODE = {
25
+ const RUN_MODE = {
26
26
  FULL: "full",
27
27
  TYPE: "type"
28
28
  };
29
- export var ServerReportTimings;
29
+ var ServerReportTimings;
30
30
  (function(ServerReportTimings2) {
31
31
  ServerReportTimings2["SERVER_HANDLE_REQUEST"] = "server-handle-request";
32
32
  ServerReportTimings2["SERVER_MIDDLEWARE"] = "server-middleware";
33
33
  ServerReportTimings2["SERVER_HOOK_AFTER_RENDER"] = "server-hook-after-render";
34
34
  ServerReportTimings2["SERVER_HOOK_AFTER_MATCH"] = "server-hook-after-match";
35
35
  })(ServerReportTimings || (ServerReportTimings = {}));
36
+ export {
37
+ AGGRED_DIR,
38
+ ApiServerMode,
39
+ ERROR_DIGEST,
40
+ ERROR_PAGE_TEXT,
41
+ RUN_MODE,
42
+ ServerReportTimings
43
+ };
@@ -1,14 +1,20 @@
1
1
  import { Server } from "./server";
2
- export { Server };
3
- export { ModernServer } from "./server/modernServer";
4
- export { createProxyHandler } from "./libs/proxy";
2
+ import { ModernServer } from "./server/modernServer";
3
+ import { createProxyHandler } from "./libs/proxy";
5
4
  export * from "./type";
6
5
  export * from "./constants";
7
- export { createRenderHandler } from "./libs/render";
8
- export default (options) => {
6
+ import { createRenderHandler } from "./libs/render";
7
+ var src_default = (options) => {
9
8
  if (options == null) {
10
9
  throw new Error("can not start mserver without options");
11
10
  }
12
11
  const server = new Server(options);
13
12
  return server.init();
14
13
  };
14
+ export {
15
+ ModernServer,
16
+ Server,
17
+ createProxyHandler,
18
+ createRenderHandler,
19
+ src_default as default
20
+ };
@@ -1,3 +1,6 @@
1
+ import { _ as _class_private_field_get } from "@swc/helpers/_/_class_private_field_get";
2
+ import { _ as _class_private_field_init } from "@swc/helpers/_/_class_private_field_init";
3
+ import { _ as _class_private_field_set } from "@swc/helpers/_/_class_private_field_set";
1
4
  import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
5
  import { URL } from "url";
3
6
  import qs from "querystring";
@@ -9,7 +12,8 @@ import { ServerTiming } from "../serverTiming";
9
12
  import { defaultReporter } from "../reporter";
10
13
  import { headersWithoutCookie } from "../../utils";
11
14
  const MOCK_URL_BASE = "https://modernjs.dev/";
12
- export class ModernServerContext {
15
+ var _urls = /* @__PURE__ */ new WeakMap(), _queries = /* @__PURE__ */ new WeakMap();
16
+ class ModernServerContext {
13
17
  get logger() {
14
18
  return this.req.logger;
15
19
  }
@@ -18,7 +22,12 @@ export class ModernServerContext {
18
22
  }
19
23
  get parsedURL() {
20
24
  try {
21
- return new URL(this.req.url, MOCK_URL_BASE);
25
+ let url = _class_private_field_get(this, _urls).get(this.req.url);
26
+ if (!url) {
27
+ url = new URL(this.req.url, MOCK_URL_BASE);
28
+ _class_private_field_get(this, _urls).set(this.req.url, url);
29
+ }
30
+ return url;
22
31
  } catch (e) {
23
32
  this.logger.error("Parse URL error", e.stack || e.message);
24
33
  return new URL("/_modern_mock_path", MOCK_URL_BASE);
@@ -107,7 +116,8 @@ export class ModernServerContext {
107
116
  if (!host) {
108
117
  host = this.getReqHeader("Host");
109
118
  }
110
- return host.split(/\s*,\s*/, 1)[0] || "undefined";
119
+ host = host.split(/\s*,\s*/, 1)[0] || "undefined";
120
+ return host;
111
121
  }
112
122
  get protocol() {
113
123
  if (this.req.socket.encrypted) {
@@ -142,7 +152,12 @@ export class ModernServerContext {
142
152
  }
143
153
  get query() {
144
154
  const str = this.querystring;
145
- return qs.parse(str);
155
+ let query = _class_private_field_get(this, _queries).get(str);
156
+ if (!query) {
157
+ query = qs.parse(str);
158
+ _class_private_field_get(this, _queries).set(str, query);
159
+ }
160
+ return query;
146
161
  }
147
162
  /* response property */
148
163
  get status() {
@@ -161,7 +176,6 @@ export class ModernServerContext {
161
176
  this.logger.error(`Web Server Error - ${dig}, error = %s, req.url = %s, req.headers = %o`, e instanceof Error ? e.stack || e.message : e, this.path, headersWithoutCookie(this.headers));
162
177
  }
163
178
  constructor(req, res, options) {
164
- var _options;
165
179
  _define_property(this, "req", void 0);
166
180
  _define_property(this, "res", void 0);
167
181
  _define_property(this, "params", {});
@@ -169,10 +183,23 @@ export class ModernServerContext {
169
183
  _define_property(this, "serverTiming", void 0);
170
184
  _define_property(this, "serverData", {});
171
185
  _define_property(this, "options", {});
186
+ _class_private_field_init(this, _urls, {
187
+ writable: true,
188
+ value: void 0
189
+ });
190
+ _class_private_field_init(this, _queries, {
191
+ writable: true,
192
+ value: void 0
193
+ });
172
194
  this.req = req;
173
195
  this.res = res;
174
196
  this.options = options || {};
175
197
  this.bind();
176
- this.serverTiming = new ServerTiming(this.res, cutNameByHyphen(((_options = options) === null || _options === void 0 ? void 0 : _options.metaName) || "modern-js"));
198
+ _class_private_field_set(this, _urls, /* @__PURE__ */ new Map());
199
+ _class_private_field_set(this, _queries, /* @__PURE__ */ new Map());
200
+ this.serverTiming = new ServerTiming(this.res, cutNameByHyphen((options === null || options === void 0 ? void 0 : options.metaName) || "modern-js"));
177
201
  }
178
202
  }
203
+ export {
204
+ ModernServerContext
205
+ };
@@ -1,3 +1,6 @@
1
1
  import { ModernServerContext } from "./context";
2
- export const createContext = (req, res, options) => new ModernServerContext(req, res, options);
3
- export { ModernServerContext };
2
+ const createContext = (req, res, options) => new ModernServerContext(req, res, options);
3
+ export {
4
+ ModernServerContext,
5
+ createContext
6
+ };