@modern-js/prod-server 2.15.0 → 2.16.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 (122) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/constants.js +15 -31
  3. package/dist/cjs/index.js +35 -37
  4. package/dist/cjs/libs/context/context.js +53 -66
  5. package/dist/cjs/libs/context/index.js +15 -28
  6. package/dist/cjs/libs/hook-api/index.js +59 -54
  7. package/dist/cjs/libs/hook-api/route.js +28 -30
  8. package/dist/cjs/libs/hook-api/template.js +30 -34
  9. package/dist/cjs/libs/loadConfig.js +74 -65
  10. package/dist/cjs/libs/logger.js +46 -37
  11. package/dist/cjs/libs/metrics.js +7 -25
  12. package/dist/cjs/libs/proxy.js +29 -46
  13. package/dist/cjs/libs/render/cache/__tests__/cache.fun.test.js +48 -64
  14. package/dist/cjs/libs/render/cache/__tests__/cache.test.js +53 -37
  15. package/dist/cjs/libs/render/cache/__tests__/cacheable.js +38 -34
  16. package/dist/cjs/libs/render/cache/__tests__/error-configuration.js +22 -30
  17. package/dist/cjs/libs/render/cache/__tests__/matched-cache.js +86 -46
  18. package/dist/cjs/libs/render/cache/index.js +17 -37
  19. package/dist/cjs/libs/render/cache/page-caches/index.js +12 -28
  20. package/dist/cjs/libs/render/cache/page-caches/lru.js +32 -40
  21. package/dist/cjs/libs/render/cache/spr.js +104 -111
  22. package/dist/cjs/libs/render/cache/type.js +4 -15
  23. package/dist/cjs/libs/render/cache/util.js +29 -53
  24. package/dist/cjs/libs/render/index.js +75 -73
  25. package/dist/cjs/libs/render/measure.js +19 -34
  26. package/dist/cjs/libs/render/reader.js +52 -61
  27. package/dist/cjs/libs/render/ssr.js +34 -66
  28. package/dist/cjs/libs/render/static.js +22 -45
  29. package/dist/cjs/libs/render/type.js +10 -28
  30. package/dist/cjs/libs/render/utils.js +17 -38
  31. package/dist/cjs/libs/route/index.js +32 -31
  32. package/dist/cjs/libs/route/matcher.js +38 -38
  33. package/dist/cjs/libs/route/route.js +29 -26
  34. package/dist/cjs/libs/serveFile.js +23 -41
  35. package/dist/cjs/server/index.js +101 -107
  36. package/dist/cjs/server/modernServer.js +191 -171
  37. package/dist/cjs/server/modernServerSplit.js +12 -30
  38. package/dist/cjs/type.js +4 -15
  39. package/dist/cjs/utils.js +50 -50
  40. package/dist/cjs/workerServer.js +26 -36
  41. package/dist/esm/constants.js +24 -25
  42. package/dist/esm/index.js +11 -10
  43. package/dist/esm/libs/context/context.js +271 -264
  44. package/dist/esm/libs/context/index.js +3 -3
  45. package/dist/esm/libs/hook-api/index.js +237 -223
  46. package/dist/esm/libs/hook-api/route.js +62 -60
  47. package/dist/esm/libs/hook-api/template.js +117 -115
  48. package/dist/esm/libs/loadConfig.js +68 -69
  49. package/dist/esm/libs/logger.js +188 -174
  50. package/dist/esm/libs/metrics.js +6 -3
  51. package/dist/esm/libs/proxy.js +236 -221
  52. package/dist/esm/libs/render/cache/__tests__/cache.fun.test.js +286 -267
  53. package/dist/esm/libs/render/cache/__tests__/cache.test.js +765 -745
  54. package/dist/esm/libs/render/cache/__tests__/cacheable.js +62 -63
  55. package/dist/esm/libs/render/cache/__tests__/error-configuration.js +42 -43
  56. package/dist/esm/libs/render/cache/__tests__/matched-cache.js +134 -135
  57. package/dist/esm/libs/render/cache/index.js +337 -326
  58. package/dist/esm/libs/render/cache/page-caches/index.js +147 -141
  59. package/dist/esm/libs/render/cache/page-caches/lru.js +78 -76
  60. package/dist/esm/libs/render/cache/spr.js +465 -456
  61. package/dist/esm/libs/render/cache/type.js +1 -1
  62. package/dist/esm/libs/render/cache/util.js +266 -246
  63. package/dist/esm/libs/render/index.js +226 -218
  64. package/dist/esm/libs/render/measure.js +136 -128
  65. package/dist/esm/libs/render/reader.js +315 -304
  66. package/dist/esm/libs/render/ssr.js +214 -209
  67. package/dist/esm/libs/render/static.js +208 -198
  68. package/dist/esm/libs/render/type.js +6 -7
  69. package/dist/esm/libs/render/utils.js +8 -9
  70. package/dist/esm/libs/route/index.js +134 -123
  71. package/dist/esm/libs/route/matcher.js +140 -130
  72. package/dist/esm/libs/route/route.js +36 -37
  73. package/dist/esm/libs/serveFile.js +177 -168
  74. package/dist/esm/server/index.js +578 -549
  75. package/dist/esm/server/modernServer.js +1137 -1074
  76. package/dist/esm/server/modernServerSplit.js +344 -328
  77. package/dist/esm/type.js +1 -1
  78. package/dist/esm/utils.js +133 -124
  79. package/dist/esm/workerServer.js +226 -220
  80. package/dist/esm-node/constants.js +7 -14
  81. package/dist/esm-node/index.js +4 -9
  82. package/dist/esm-node/libs/context/context.js +32 -25
  83. package/dist/esm-node/libs/context/index.js +2 -5
  84. package/dist/esm-node/libs/hook-api/index.js +40 -21
  85. package/dist/esm-node/libs/hook-api/route.js +21 -8
  86. package/dist/esm-node/libs/hook-api/template.js +19 -14
  87. package/dist/esm-node/libs/loadConfig.js +11 -28
  88. package/dist/esm-node/libs/logger.js +37 -17
  89. package/dist/esm-node/libs/metrics.js +1 -3
  90. package/dist/esm-node/libs/proxy.js +14 -22
  91. package/dist/esm-node/libs/render/cache/__tests__/cache.fun.test.js +25 -36
  92. package/dist/esm-node/libs/render/cache/__tests__/cache.test.js +23 -11
  93. package/dist/esm-node/libs/render/cache/__tests__/cacheable.js +32 -13
  94. package/dist/esm-node/libs/render/cache/__tests__/error-configuration.js +16 -9
  95. package/dist/esm-node/libs/render/cache/__tests__/matched-cache.js +80 -25
  96. package/dist/esm-node/libs/render/cache/index.js +3 -10
  97. package/dist/esm-node/libs/render/cache/page-caches/index.js +4 -5
  98. package/dist/esm-node/libs/render/cache/page-caches/lru.js +20 -8
  99. package/dist/esm-node/libs/render/cache/spr.js +79 -80
  100. package/dist/esm-node/libs/render/cache/type.js +1 -0
  101. package/dist/esm-node/libs/render/cache/util.js +13 -23
  102. package/dist/esm-node/libs/render/index.js +10 -28
  103. package/dist/esm-node/libs/render/measure.js +7 -13
  104. package/dist/esm-node/libs/render/reader.js +31 -26
  105. package/dist/esm-node/libs/render/ssr.js +5 -21
  106. package/dist/esm-node/libs/render/static.js +1 -4
  107. package/dist/esm-node/libs/render/type.js +3 -6
  108. package/dist/esm-node/libs/render/utils.js +6 -18
  109. package/dist/esm-node/libs/route/index.js +20 -9
  110. package/dist/esm-node/libs/route/matcher.js +28 -17
  111. package/dist/esm-node/libs/route/route.js +23 -5
  112. package/dist/esm-node/libs/serveFile.js +2 -6
  113. package/dist/esm-node/server/index.js +72 -75
  114. package/dist/esm-node/server/modernServer.js +102 -130
  115. package/dist/esm-node/server/modernServerSplit.js +1 -4
  116. package/dist/esm-node/type.js +1 -0
  117. package/dist/esm-node/utils.js +41 -32
  118. package/dist/esm-node/workerServer.js +9 -10
  119. package/dist/types/libs/context/context.d.ts +1 -1
  120. package/dist/types/server/modernServer.d.ts +1 -1
  121. package/dist/types/utils.d.ts +1 -1
  122. package/package.json +12 -8
@@ -1,222 +1,241 @@
1
- function _arrayLikeToArray(arr, len) {
2
- if (len == null || len > arr.length) len = arr.length;
3
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
- return arr2;
1
+ function _array_like_to_array(arr, len) {
2
+ if (len == null || len > arr.length)
3
+ len = arr.length;
4
+ for (var i = 0, arr2 = new Array(len); i < len; i++)
5
+ arr2[i] = arr[i];
6
+ return arr2;
5
7
  }
6
- function _arrayWithoutHoles(arr) {
7
- if (Array.isArray(arr)) return _arrayLikeToArray(arr);
8
+ function _array_without_holes(arr) {
9
+ if (Array.isArray(arr))
10
+ return _array_like_to_array(arr);
8
11
  }
9
12
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
10
- try {
11
- var info = gen[key](arg);
12
- var value = info.value;
13
- } catch (error) {
14
- reject(error);
15
- return;
16
- }
17
- if (info.done) {
18
- resolve(value);
19
- } else {
20
- Promise.resolve(value).then(_next, _throw);
21
- }
13
+ try {
14
+ var info = gen[key](arg);
15
+ var value = info.value;
16
+ } catch (error) {
17
+ reject(error);
18
+ return;
19
+ }
20
+ if (info.done) {
21
+ resolve(value);
22
+ } else {
23
+ Promise.resolve(value).then(_next, _throw);
24
+ }
22
25
  }
23
- function _asyncToGenerator(fn) {
24
- return function() {
25
- var self = this, args = arguments;
26
- return new Promise(function(resolve, reject) {
27
- var gen = fn.apply(self, args);
28
- function _next(value) {
29
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
30
- }
31
- function _throw(err) {
32
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
33
- }
34
- _next(undefined);
35
- });
36
- };
26
+ function _async_to_generator(fn) {
27
+ return function() {
28
+ var self = this, args = arguments;
29
+ return new Promise(function(resolve, reject) {
30
+ var gen = fn.apply(self, args);
31
+ function _next(value) {
32
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
33
+ }
34
+ function _throw(err) {
35
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
36
+ }
37
+ _next(void 0);
38
+ });
39
+ };
37
40
  }
38
- function _classCallCheck(instance, Constructor) {
39
- if (!(instance instanceof Constructor)) {
40
- throw new TypeError("Cannot call a class as a function");
41
- }
41
+ function _class_call_check(instance, Constructor) {
42
+ if (!(instance instanceof Constructor)) {
43
+ throw new TypeError("Cannot call a class as a function");
44
+ }
42
45
  }
43
46
  function _defineProperties(target, props) {
44
- for(var i = 0; i < props.length; i++){
45
- var descriptor = props[i];
46
- descriptor.enumerable = descriptor.enumerable || false;
47
- descriptor.configurable = true;
48
- if ("value" in descriptor) descriptor.writable = true;
49
- Object.defineProperty(target, descriptor.key, descriptor);
50
- }
47
+ for (var i = 0; i < props.length; i++) {
48
+ var descriptor = props[i];
49
+ descriptor.enumerable = descriptor.enumerable || false;
50
+ descriptor.configurable = true;
51
+ if ("value" in descriptor)
52
+ descriptor.writable = true;
53
+ Object.defineProperty(target, descriptor.key, descriptor);
54
+ }
51
55
  }
52
- function _createClass(Constructor, protoProps, staticProps) {
53
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
54
- if (staticProps) _defineProperties(Constructor, staticProps);
55
- return Constructor;
56
+ function _create_class(Constructor, protoProps, staticProps) {
57
+ if (protoProps)
58
+ _defineProperties(Constructor.prototype, protoProps);
59
+ if (staticProps)
60
+ _defineProperties(Constructor, staticProps);
61
+ return Constructor;
56
62
  }
57
- function _defineProperty(obj, key, value) {
58
- if (key in obj) {
59
- Object.defineProperty(obj, key, {
60
- value: value,
61
- enumerable: true,
62
- configurable: true,
63
- writable: true
64
- });
65
- } else {
66
- obj[key] = value;
67
- }
68
- return obj;
63
+ function _define_property(obj, key, value) {
64
+ if (key in obj) {
65
+ Object.defineProperty(obj, key, {
66
+ value,
67
+ enumerable: true,
68
+ configurable: true,
69
+ writable: true
70
+ });
71
+ } else {
72
+ obj[key] = value;
73
+ }
74
+ return obj;
69
75
  }
70
- function _iterableToArray(iter) {
71
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
76
+ function _iterable_to_array(iter) {
77
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null)
78
+ return Array.from(iter);
72
79
  }
73
- function _nonIterableSpread() {
74
- throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
80
+ function _non_iterable_spread() {
81
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
75
82
  }
76
- function _objectSpread(target) {
77
- for(var i = 1; i < arguments.length; i++){
78
- var source = arguments[i] != null ? arguments[i] : {};
79
- var ownKeys = Object.keys(source);
80
- if (typeof Object.getOwnPropertySymbols === "function") {
81
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
82
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
83
- }));
84
- }
85
- ownKeys.forEach(function(key) {
86
- _defineProperty(target, key, source[key]);
87
- });
83
+ function _object_spread(target) {
84
+ for (var i = 1; i < arguments.length; i++) {
85
+ var source = arguments[i] != null ? arguments[i] : {};
86
+ var ownKeys2 = Object.keys(source);
87
+ if (typeof Object.getOwnPropertySymbols === "function") {
88
+ ownKeys2 = ownKeys2.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
89
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
90
+ }));
88
91
  }
89
- return target;
92
+ ownKeys2.forEach(function(key) {
93
+ _define_property(target, key, source[key]);
94
+ });
95
+ }
96
+ return target;
90
97
  }
91
98
  function ownKeys(object, enumerableOnly) {
92
- var keys = Object.keys(object);
93
- if (Object.getOwnPropertySymbols) {
94
- var symbols = Object.getOwnPropertySymbols(object);
95
- if (enumerableOnly) {
96
- symbols = symbols.filter(function(sym) {
97
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
98
- });
99
- }
100
- keys.push.apply(keys, symbols);
99
+ var keys = Object.keys(object);
100
+ if (Object.getOwnPropertySymbols) {
101
+ var symbols = Object.getOwnPropertySymbols(object);
102
+ if (enumerableOnly) {
103
+ symbols = symbols.filter(function(sym) {
104
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
105
+ });
101
106
  }
102
- return keys;
107
+ keys.push.apply(keys, symbols);
108
+ }
109
+ return keys;
103
110
  }
104
- function _objectSpreadProps(target, source) {
105
- source = source != null ? source : {};
106
- if (Object.getOwnPropertyDescriptors) {
107
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
108
- } else {
109
- ownKeys(Object(source)).forEach(function(key) {
110
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
111
- });
112
- }
113
- return target;
111
+ function _object_spread_props(target, source) {
112
+ source = source != null ? source : {};
113
+ if (Object.getOwnPropertyDescriptors) {
114
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
115
+ } else {
116
+ ownKeys(Object(source)).forEach(function(key) {
117
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
118
+ });
119
+ }
120
+ return target;
114
121
  }
115
- function _toConsumableArray(arr) {
116
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
122
+ function _to_consumable_array(arr) {
123
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
117
124
  }
118
- function _unsupportedIterableToArray(o, minLen) {
119
- if (!o) return;
120
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
121
- var n = Object.prototype.toString.call(o).slice(8, -1);
122
- if (n === "Object" && o.constructor) n = o.constructor.name;
123
- if (n === "Map" || n === "Set") return Array.from(n);
124
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
125
+ function _unsupported_iterable_to_array(o, minLen) {
126
+ if (!o)
127
+ return;
128
+ if (typeof o === "string")
129
+ return _array_like_to_array(o, minLen);
130
+ var n = Object.prototype.toString.call(o).slice(8, -1);
131
+ if (n === "Object" && o.constructor)
132
+ n = o.constructor.name;
133
+ if (n === "Map" || n === "Set")
134
+ return Array.from(n);
135
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
136
+ return _array_like_to_array(o, minLen);
125
137
  }
126
- var __generator = this && this.__generator || function(thisArg, body) {
127
- var f, y, t, g, _ = {
128
- label: 0,
129
- sent: function() {
130
- if (t[0] & 1) throw t[1];
131
- return t[1];
132
- },
133
- trys: [],
134
- ops: []
138
+ var __generator = function(thisArg, body) {
139
+ var f, y, t, g, _ = {
140
+ label: 0,
141
+ sent: function() {
142
+ if (t[0] & 1)
143
+ throw t[1];
144
+ return t[1];
145
+ },
146
+ trys: [],
147
+ ops: []
148
+ };
149
+ return g = {
150
+ next: verb(0),
151
+ "throw": verb(1),
152
+ "return": verb(2)
153
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
154
+ return this;
155
+ }), g;
156
+ function verb(n) {
157
+ return function(v) {
158
+ return step([
159
+ n,
160
+ v
161
+ ]);
135
162
  };
136
- return g = {
137
- next: verb(0),
138
- "throw": verb(1),
139
- "return": verb(2)
140
- }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
141
- return this;
142
- }), g;
143
- function verb(n) {
144
- return function(v) {
145
- return step([
146
- n,
147
- v
148
- ]);
149
- };
150
- }
151
- function step(op) {
152
- if (f) throw new TypeError("Generator is already executing.");
153
- while(_)try {
154
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
155
- if (y = 0, t) op = [
156
- op[0] & 2,
157
- t.value
158
- ];
159
- switch(op[0]){
160
- case 0:
161
- case 1:
162
- t = op;
163
- break;
164
- case 4:
165
- _.label++;
166
- return {
167
- value: op[1],
168
- done: false
169
- };
170
- case 5:
171
- _.label++;
172
- y = op[1];
173
- op = [
174
- 0
175
- ];
176
- continue;
177
- case 7:
178
- op = _.ops.pop();
179
- _.trys.pop();
180
- continue;
181
- default:
182
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
183
- _ = 0;
184
- continue;
185
- }
186
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
187
- _.label = op[1];
188
- break;
189
- }
190
- if (op[0] === 6 && _.label < t[1]) {
191
- _.label = t[1];
192
- t = op;
193
- break;
194
- }
195
- if (t && _.label < t[2]) {
196
- _.label = t[2];
197
- _.ops.push(op);
198
- break;
199
- }
200
- if (t[2]) _.ops.pop();
201
- _.trys.pop();
202
- continue;
203
- }
204
- op = body.call(thisArg, _);
205
- } catch (e) {
163
+ }
164
+ function step(op) {
165
+ if (f)
166
+ throw new TypeError("Generator is already executing.");
167
+ while (_)
168
+ try {
169
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
170
+ return t;
171
+ if (y = 0, t)
172
+ op = [
173
+ op[0] & 2,
174
+ t.value
175
+ ];
176
+ switch (op[0]) {
177
+ case 0:
178
+ case 1:
179
+ t = op;
180
+ break;
181
+ case 4:
182
+ _.label++;
183
+ return {
184
+ value: op[1],
185
+ done: false
186
+ };
187
+ case 5:
188
+ _.label++;
189
+ y = op[1];
206
190
  op = [
207
- 6,
208
- e
191
+ 0
209
192
  ];
210
- y = 0;
211
- } finally{
212
- f = t = 0;
193
+ continue;
194
+ case 7:
195
+ op = _.ops.pop();
196
+ _.trys.pop();
197
+ continue;
198
+ default:
199
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
200
+ _ = 0;
201
+ continue;
202
+ }
203
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
204
+ _.label = op[1];
205
+ break;
206
+ }
207
+ if (op[0] === 6 && _.label < t[1]) {
208
+ _.label = t[1];
209
+ t = op;
210
+ break;
211
+ }
212
+ if (t && _.label < t[2]) {
213
+ _.label = t[2];
214
+ _.ops.push(op);
215
+ break;
216
+ }
217
+ if (t[2])
218
+ _.ops.pop();
219
+ _.trys.pop();
220
+ continue;
213
221
  }
214
- if (op[0] & 5) throw op[1];
215
- return {
216
- value: op[0] ? op[1] : void 0,
217
- done: true
218
- };
219
- }
222
+ op = body.call(thisArg, _);
223
+ } catch (e) {
224
+ op = [
225
+ 6,
226
+ e
227
+ ];
228
+ y = 0;
229
+ } finally {
230
+ f = t = 0;
231
+ }
232
+ if (op[0] & 5)
233
+ throw op[1];
234
+ return {
235
+ value: op[0] ? op[1] : void 0,
236
+ done: true
237
+ };
238
+ }
220
239
  };
221
240
  import path from "path";
222
241
  import { fs, Logger, SHARED_DIR, OUTPUT_CONFIG_FILE, dotenv, dotenvExpand, INTERNAL_SERVER_PLUGINS } from "@modern-js/utils";
@@ -225,361 +244,371 @@ import { metrics as defaultMetrics } from "../libs/metrics";
225
244
  import { loadConfig, getServerConfigPath, requireConfig } from "../libs/loadConfig";
226
245
  import { debug } from "../utils";
227
246
  import { createProdServer } from "./modernServerSplit";
228
- var Server = /*#__PURE__*/ function() {
229
- "use strict";
230
- function Server(options) {
231
- _classCallCheck(this, Server);
232
- _defineProperty(this, "options", void 0);
233
- _defineProperty(this, "serverImpl", createProdServer);
234
- _defineProperty(this, "server", void 0);
235
- _defineProperty(this, "app", void 0);
236
- _defineProperty(this, "runner", void 0);
237
- _defineProperty(this, "serverConfig", void 0);
238
- options.logger = options.logger || new Logger({
239
- level: "warn"
240
- });
241
- options.metrics = options.metrics || defaultMetrics;
242
- this.options = options;
243
- this.serverConfig = {};
244
- }
245
- _createClass(Server, [
246
- {
247
- key: "init",
248
- value: /**
249
- * 初始化顺序
250
- * - 读取 .env.{process.env.MODERN_ENV} 文件,加载环境变量
251
- * - 获取 server runtime config
252
- * - 设置 context
253
- * - 创建 hooksRunner
254
- * - 合并插件,内置插件和 serverConfig 中配置的插件
255
- * - 执行 config hook
256
- * - 获取最终的配置
257
- * - 设置配置到 context
258
- * - 初始化 server
259
- * - 执行 prepare hook
260
- * - 执行 server init
261
- */ function init() {
262
- var _this = this;
263
- return _asyncToGenerator(function() {
264
- var options;
265
- return __generator(this, function(_state) {
266
- switch(_state.label){
267
- case 0:
268
- options = _this.options;
269
- return [
270
- 4,
271
- _this.loadServerEnv(options)
272
- ];
273
- case 1:
274
- _state.sent();
275
- _this.initServerConfig(options);
276
- return [
277
- 4,
278
- _this.injectContext(_this.runner, options)
279
- ];
280
- case 2:
281
- _state.sent();
282
- return [
283
- 4,
284
- _this.createHookRunner()
285
- ];
286
- case 3:
287
- _this.runner = _state.sent();
288
- return [
289
- 4,
290
- _this.initConfig(_this.runner, options)
291
- ];
292
- case 4:
293
- _state.sent();
294
- return [
295
- 4,
296
- _this.injectContext(_this.runner, options)
297
- ];
298
- case 5:
299
- _state.sent();
300
- _this.server = _this.serverImpl(options);
301
- return [
302
- 4,
303
- _this.runPrepareHook(_this.runner)
304
- ];
305
- case 6:
306
- _state.sent();
307
- return [
308
- 4,
309
- _this.server.createHTTPServer(_this.getRequestHandler())
310
- ];
311
- case 7:
312
- _this.app = _state.sent();
313
- return [
314
- 4,
315
- _this.server.onInit(_this.runner, _this.app)
316
- ];
317
- case 8:
318
- _state.sent();
319
- return [
320
- 2,
321
- _this
322
- ];
323
- }
324
- });
325
- })();
326
- }
327
- },
328
- {
329
- /**
330
- * Execute config hooks
331
- * @param runner
332
- * @param options
333
- */ key: "runConfigHook",
334
- value: function runConfigHook(runner, serverConfig) {
335
- var newServerConfig = runner.config(serverConfig || {});
336
- return newServerConfig;
337
- }
338
- },
339
- {
340
- key: "runPrepareHook",
341
- value: function runPrepareHook(runner) {
342
- return _asyncToGenerator(function() {
343
- return __generator(this, function(_state) {
344
- runner.prepare();
345
- return [
346
- 2
347
- ];
348
- });
349
- })();
350
- }
351
- },
352
- {
353
- key: "initServerConfig",
354
- value: function initServerConfig(options) {
355
- var pwd = options.pwd, serverConfigFile = options.serverConfigFile;
356
- var distDirectory = path.join(pwd, options.config.output.path || "dist");
357
- var serverConfigPath = getServerConfigPath(distDirectory, serverConfigFile);
358
- var serverConfig = requireConfig(serverConfigPath);
359
- this.serverConfig = serverConfig;
360
- }
361
- },
362
- {
363
- key: "initConfig",
364
- value: /**
365
- *
366
- * merge cliConfig and serverConfig
367
- */ function initConfig(runner, options) {
368
- var _this = this;
369
- return _asyncToGenerator(function() {
370
- var pwd, config, serverConfig, finalServerConfig, resolvedConfigPath;
371
- return __generator(this, function(_state) {
372
- pwd = options.pwd, config = options.config;
373
- serverConfig = _this.serverConfig;
374
- finalServerConfig = _this.runConfigHook(runner, serverConfig);
375
- resolvedConfigPath = path.join(pwd, config.output.path || "dist", OUTPUT_CONFIG_FILE);
376
- options.config = loadConfig({
377
- cliConfig: config,
378
- serverConfig: finalServerConfig,
379
- resolvedConfigPath: resolvedConfigPath
380
- });
381
- return [
382
- 2
383
- ];
384
- });
385
- })();
386
- }
387
- },
388
- {
389
- key: "close",
390
- value: function close() {
391
- var _this = this;
392
- return _asyncToGenerator(function() {
393
- return __generator(this, function(_state) {
394
- _this.app.close();
395
- return [
396
- 2
397
- ];
398
- });
399
- })();
400
- }
401
- },
402
- {
403
- key: "listen",
404
- value: function listen(options, listener) {
405
- var callback = function() {
406
- listener === null || listener === void 0 ? void 0 : listener();
407
- };
408
- if (typeof options === "object") {
409
- if (process.env.PORT) {
410
- Object.assign(options, {
411
- port: process.env.PORT
412
- });
413
- }
414
- this.app.listen(options, callback);
415
- } else {
416
- this.app.listen(process.env.PORT || options || 8080, callback);
417
- }
418
- }
419
- },
420
- {
421
- key: "getRequestHandler",
422
- value: function getRequestHandler() {
423
- var _this = this;
424
- return function(req, res, next) {
425
- var requestHandler = _this.server.getRequestHandler();
426
- return requestHandler(req, res, next);
427
- };
428
- }
429
- },
430
- {
431
- key: "render",
432
- value: function render(req, res, url) {
433
- var _this = this;
434
- return _asyncToGenerator(function() {
435
- return __generator(this, function(_state) {
436
- return [
437
- 2,
438
- _this.server.render(req, res, url)
439
- ];
440
- });
441
- })();
442
- }
443
- },
444
- {
445
- key: "createHookRunner",
446
- value: function createHookRunner() {
447
- var _this = this;
448
- return _asyncToGenerator(function() {
449
- var options, _options_internalPlugins, internalPlugins, pwd, _options_plugins, plugins, serverPlugins, loadedPlugins, hooksRunner;
450
- return __generator(this, function(_state) {
451
- switch(_state.label){
452
- case 0:
453
- serverManager.clear();
454
- options = _this.options;
455
- _options_internalPlugins = options.internalPlugins, internalPlugins = _options_internalPlugins === void 0 ? INTERNAL_SERVER_PLUGINS : _options_internalPlugins, pwd = options.pwd, _options_plugins = options.plugins, plugins = _options_plugins === void 0 ? [] : _options_plugins;
456
- serverPlugins = _this.serverConfig.plugins || [];
457
- loadedPlugins = loadPlugins(pwd, _toConsumableArray(serverPlugins).concat(_toConsumableArray(plugins)), {
458
- internalPlugins: internalPlugins
459
- });
460
- debug("plugins", loadedPlugins);
461
- loadedPlugins.forEach(function(p) {
462
- serverManager.usePlugin(p);
463
- });
464
- return [
465
- 4,
466
- serverManager.init()
467
- ];
468
- case 1:
469
- hooksRunner = _state.sent();
470
- return [
471
- 2,
472
- hooksRunner
473
- ];
474
- }
475
- });
476
- })();
477
- }
478
- },
479
- {
480
- key: "injectContext",
481
- value: function injectContext(runner, options) {
482
- var _this = this;
483
- return _asyncToGenerator(function() {
484
- var appContext, config, pwd;
485
- return __generator(this, function(_state) {
486
- appContext = _this.initAppContext();
487
- config = options.config, pwd = options.pwd;
488
- ConfigContext.set(config);
489
- AppContext.set(_objectSpreadProps(_objectSpread({}, appContext), {
490
- distDirectory: path.join(pwd, config.output.path || "dist")
491
- }));
492
- return [
493
- 2
494
- ];
495
- });
496
- })();
497
- }
498
- },
499
- {
500
- key: "initAppContext",
501
- value: function initAppContext() {
502
- var options = this.options;
503
- var appDirectory = options.pwd, _options_plugins = options.plugins, plugins = _options_plugins === void 0 ? [] : _options_plugins, config = options.config, appContext = options.appContext;
504
- var serverPlugins = plugins.map(function(p) {
505
- return {
506
- server: p
507
- };
247
+ export var Server = /* @__PURE__ */ function() {
248
+ "use strict";
249
+ function Server2(options) {
250
+ _class_call_check(this, Server2);
251
+ _define_property(this, "options", void 0);
252
+ _define_property(this, "serverImpl", createProdServer);
253
+ _define_property(this, "server", void 0);
254
+ _define_property(this, "app", void 0);
255
+ _define_property(this, "runner", void 0);
256
+ _define_property(this, "serverConfig", void 0);
257
+ options.logger = options.logger || new Logger({
258
+ level: "warn"
259
+ });
260
+ options.metrics = options.metrics || defaultMetrics;
261
+ this.options = options;
262
+ this.serverConfig = {};
263
+ }
264
+ _create_class(Server2, [
265
+ {
266
+ key: "init",
267
+ value: (
268
+ /**
269
+ * 初始化顺序
270
+ * - 读取 .env.{process.env.MODERN_ENV} 文件,加载环境变量
271
+ * - 获取 server runtime config
272
+ * - 设置 context
273
+ * - 创建 hooksRunner
274
+ * - 合并插件,内置插件和 serverConfig 中配置的插件
275
+ * - 执行 config hook
276
+ * - 获取最终的配置
277
+ * - 设置配置到 context
278
+ * - 初始化 server
279
+ * - 执行 prepare hook
280
+ * - 执行 server init
281
+ */
282
+ function init() {
283
+ var _this = this;
284
+ return _async_to_generator(function() {
285
+ var options;
286
+ return __generator(this, function(_state) {
287
+ switch (_state.label) {
288
+ case 0:
289
+ options = _this.options;
290
+ return [
291
+ 4,
292
+ _this.loadServerEnv(options)
293
+ ];
294
+ case 1:
295
+ _state.sent();
296
+ _this.initServerConfig(options);
297
+ return [
298
+ 4,
299
+ _this.injectContext(_this.runner, options)
300
+ ];
301
+ case 2:
302
+ _state.sent();
303
+ return [
304
+ 4,
305
+ _this.createHookRunner()
306
+ ];
307
+ case 3:
308
+ _this.runner = _state.sent();
309
+ return [
310
+ 4,
311
+ _this.initConfig(_this.runner, options)
312
+ ];
313
+ case 4:
314
+ _state.sent();
315
+ return [
316
+ 4,
317
+ _this.injectContext(_this.runner, options)
318
+ ];
319
+ case 5:
320
+ _state.sent();
321
+ _this.server = _this.serverImpl(options);
322
+ return [
323
+ 4,
324
+ _this.runPrepareHook(_this.runner)
325
+ ];
326
+ case 6:
327
+ _state.sent();
328
+ return [
329
+ 4,
330
+ _this.server.createHTTPServer(_this.getRequestHandler())
331
+ ];
332
+ case 7:
333
+ _this.app = _state.sent();
334
+ return [
335
+ 4,
336
+ _this.server.onInit(_this.runner, _this.app)
337
+ ];
338
+ case 8:
339
+ _state.sent();
340
+ return [
341
+ 2,
342
+ _this
343
+ ];
344
+ }
345
+ });
346
+ })();
347
+ }
348
+ )
349
+ },
350
+ {
351
+ key: "runConfigHook",
352
+ value: (
353
+ /**
354
+ * Execute config hooks
355
+ * @param runner
356
+ * @param options
357
+ */
358
+ function runConfigHook(runner, serverConfig) {
359
+ var newServerConfig = runner.config(serverConfig || {});
360
+ return newServerConfig;
361
+ }
362
+ )
363
+ },
364
+ {
365
+ key: "runPrepareHook",
366
+ value: function runPrepareHook(runner) {
367
+ return _async_to_generator(function() {
368
+ return __generator(this, function(_state) {
369
+ runner.prepare();
370
+ return [
371
+ 2
372
+ ];
373
+ });
374
+ })();
375
+ }
376
+ },
377
+ {
378
+ key: "initServerConfig",
379
+ value: function initServerConfig(options) {
380
+ var pwd = options.pwd, serverConfigFile = options.serverConfigFile;
381
+ var distDirectory = path.join(pwd, options.config.output.path || "dist");
382
+ var serverConfigPath = getServerConfigPath(distDirectory, serverConfigFile);
383
+ var serverConfig = requireConfig(serverConfigPath);
384
+ this.serverConfig = serverConfig;
385
+ }
386
+ },
387
+ {
388
+ key: "initConfig",
389
+ value: (
390
+ /**
391
+ *
392
+ * merge cliConfig and serverConfig
393
+ */
394
+ function initConfig(runner, options) {
395
+ var _this = this;
396
+ return _async_to_generator(function() {
397
+ var pwd, config, serverConfig, finalServerConfig, resolvedConfigPath;
398
+ return __generator(this, function(_state) {
399
+ pwd = options.pwd, config = options.config;
400
+ serverConfig = _this.serverConfig;
401
+ finalServerConfig = _this.runConfigHook(runner, serverConfig);
402
+ resolvedConfigPath = path.join(pwd, config.output.path || "dist", OUTPUT_CONFIG_FILE);
403
+ options.config = loadConfig({
404
+ cliConfig: config,
405
+ serverConfig: finalServerConfig,
406
+ resolvedConfigPath
407
+ });
408
+ return [
409
+ 2
410
+ ];
411
+ });
412
+ })();
413
+ }
414
+ )
415
+ },
416
+ {
417
+ key: "close",
418
+ value: function close() {
419
+ var _this = this;
420
+ return _async_to_generator(function() {
421
+ return __generator(this, function(_state) {
422
+ _this.app.close();
423
+ return [
424
+ 2
425
+ ];
426
+ });
427
+ })();
428
+ }
429
+ },
430
+ {
431
+ key: "listen",
432
+ value: function listen(options, listener) {
433
+ var callback = function() {
434
+ listener === null || listener === void 0 ? void 0 : listener();
435
+ };
436
+ if (typeof options === "object") {
437
+ if (process.env.PORT) {
438
+ Object.assign(options, {
439
+ port: process.env.PORT
440
+ });
441
+ }
442
+ this.app.listen(options, callback);
443
+ } else {
444
+ this.app.listen(process.env.PORT || options || 8080, callback);
445
+ }
446
+ }
447
+ },
448
+ {
449
+ key: "getRequestHandler",
450
+ value: function getRequestHandler() {
451
+ var _this = this;
452
+ return function(req, res, next) {
453
+ var requestHandler = _this.server.getRequestHandler();
454
+ return requestHandler(req, res, next);
455
+ };
456
+ }
457
+ },
458
+ {
459
+ key: "render",
460
+ value: function render(req, res, url) {
461
+ var _this = this;
462
+ return _async_to_generator(function() {
463
+ return __generator(this, function(_state) {
464
+ return [
465
+ 2,
466
+ _this.server.render(req, res, url)
467
+ ];
468
+ });
469
+ })();
470
+ }
471
+ },
472
+ {
473
+ key: "createHookRunner",
474
+ value: function createHookRunner() {
475
+ var _this = this;
476
+ return _async_to_generator(function() {
477
+ var options, _options_internalPlugins, internalPlugins, pwd, _options_plugins, plugins, serverPlugins, loadedPlugins, hooksRunner;
478
+ return __generator(this, function(_state) {
479
+ switch (_state.label) {
480
+ case 0:
481
+ serverManager.clear();
482
+ options = _this.options;
483
+ _options_internalPlugins = options.internalPlugins, internalPlugins = _options_internalPlugins === void 0 ? INTERNAL_SERVER_PLUGINS : _options_internalPlugins, pwd = options.pwd, _options_plugins = options.plugins, plugins = _options_plugins === void 0 ? [] : _options_plugins;
484
+ serverPlugins = _this.serverConfig.plugins || [];
485
+ loadedPlugins = loadPlugins(pwd, _to_consumable_array(serverPlugins).concat(_to_consumable_array(plugins)), {
486
+ internalPlugins
508
487
  });
509
- return {
510
- appDirectory: appDirectory,
511
- apiDirectory: appContext === null || appContext === void 0 ? void 0 : appContext.apiDirectory,
512
- lambdaDirectory: appContext === null || appContext === void 0 ? void 0 : appContext.lambdaDirectory,
513
- sharedDirectory: (appContext === null || appContext === void 0 ? void 0 : appContext.sharedDirectory) || path.resolve(appDirectory, SHARED_DIR),
514
- distDirectory: path.join(appDirectory, config.output.path || "dist"),
515
- plugins: serverPlugins
516
- };
488
+ debug("plugins", loadedPlugins);
489
+ loadedPlugins.forEach(function(p) {
490
+ serverManager.usePlugin(p);
491
+ });
492
+ return [
493
+ 4,
494
+ serverManager.init()
495
+ ];
496
+ case 1:
497
+ hooksRunner = _state.sent();
498
+ return [
499
+ 2,
500
+ hooksRunner
501
+ ];
517
502
  }
518
- },
519
- {
520
- key: "loadServerEnv",
521
- value: function loadServerEnv(options) {
522
- return _asyncToGenerator(function() {
523
- var appDirectory, serverEnv, defaultEnvPath, serverEnvPath, _i, _iter, envPath, _tmp, envConfig;
524
- return __generator(this, function(_state) {
525
- switch(_state.label){
526
- case 0:
527
- appDirectory = options.pwd;
528
- serverEnv = process.env.MODERN_ENV;
529
- defaultEnvPath = path.resolve(appDirectory, ".env");
530
- serverEnvPath = path.resolve(appDirectory, ".env.".concat(serverEnv));
531
- _i = 0, _iter = [
532
- serverEnvPath,
533
- defaultEnvPath
534
- ];
535
- _state.label = 1;
536
- case 1:
537
- if (!(_i < _iter.length)) return [
538
- 3,
539
- 6
540
- ];
541
- envPath = _iter[_i];
542
- return [
543
- 4,
544
- fs.pathExists(envPath)
545
- ];
546
- case 2:
547
- _tmp = _state.sent();
548
- if (!_tmp) return [
549
- 3,
550
- 4
551
- ];
552
- return [
553
- 4,
554
- fs.stat(envPath)
555
- ];
556
- case 3:
557
- _tmp = !_state.sent().isDirectory();
558
- _state.label = 4;
559
- case 4:
560
- if (_tmp) {
561
- envConfig = dotenv.config({
562
- path: envPath
563
- });
564
- dotenvExpand(envConfig);
565
- }
566
- _state.label = 5;
567
- case 5:
568
- _i++;
569
- return [
570
- 3,
571
- 1
572
- ];
573
- case 6:
574
- return [
575
- 2
576
- ];
577
- }
578
- });
579
- })();
503
+ });
504
+ })();
505
+ }
506
+ },
507
+ {
508
+ key: "injectContext",
509
+ value: function injectContext(runner, options) {
510
+ var _this = this;
511
+ return _async_to_generator(function() {
512
+ var appContext, config, pwd;
513
+ return __generator(this, function(_state) {
514
+ appContext = _this.initAppContext();
515
+ config = options.config, pwd = options.pwd;
516
+ ConfigContext.set(config);
517
+ AppContext.set(_object_spread_props(_object_spread({}, appContext), {
518
+ distDirectory: path.join(pwd, config.output.path || "dist")
519
+ }));
520
+ return [
521
+ 2
522
+ ];
523
+ });
524
+ })();
525
+ }
526
+ },
527
+ {
528
+ key: "initAppContext",
529
+ value: function initAppContext() {
530
+ var options = this.options;
531
+ var appDirectory = options.pwd, _options_plugins = options.plugins, plugins = _options_plugins === void 0 ? [] : _options_plugins, config = options.config, appContext = options.appContext;
532
+ var serverPlugins = plugins.map(function(p) {
533
+ return {
534
+ server: p
535
+ };
536
+ });
537
+ return {
538
+ appDirectory,
539
+ apiDirectory: appContext === null || appContext === void 0 ? void 0 : appContext.apiDirectory,
540
+ lambdaDirectory: appContext === null || appContext === void 0 ? void 0 : appContext.lambdaDirectory,
541
+ sharedDirectory: (appContext === null || appContext === void 0 ? void 0 : appContext.sharedDirectory) || path.resolve(appDirectory, SHARED_DIR),
542
+ distDirectory: path.join(appDirectory, config.output.path || "dist"),
543
+ plugins: serverPlugins
544
+ };
545
+ }
546
+ },
547
+ {
548
+ key: "loadServerEnv",
549
+ value: function loadServerEnv(options) {
550
+ return _async_to_generator(function() {
551
+ var appDirectory, serverEnv, defaultEnvPath, serverEnvPath, _i, _iter, envPath, _tmp, envConfig;
552
+ return __generator(this, function(_state) {
553
+ switch (_state.label) {
554
+ case 0:
555
+ appDirectory = options.pwd;
556
+ serverEnv = process.env.MODERN_ENV;
557
+ defaultEnvPath = path.resolve(appDirectory, ".env");
558
+ serverEnvPath = path.resolve(appDirectory, ".env.".concat(serverEnv));
559
+ _i = 0, _iter = [
560
+ serverEnvPath,
561
+ defaultEnvPath
562
+ ];
563
+ _state.label = 1;
564
+ case 1:
565
+ if (!(_i < _iter.length))
566
+ return [
567
+ 3,
568
+ 6
569
+ ];
570
+ envPath = _iter[_i];
571
+ return [
572
+ 4,
573
+ fs.pathExists(envPath)
574
+ ];
575
+ case 2:
576
+ _tmp = _state.sent();
577
+ if (!_tmp)
578
+ return [
579
+ 3,
580
+ 4
581
+ ];
582
+ return [
583
+ 4,
584
+ fs.stat(envPath)
585
+ ];
586
+ case 3:
587
+ _tmp = !_state.sent().isDirectory();
588
+ _state.label = 4;
589
+ case 4:
590
+ if (_tmp) {
591
+ envConfig = dotenv.config({
592
+ path: envPath
593
+ });
594
+ dotenvExpand(envConfig);
595
+ }
596
+ _state.label = 5;
597
+ case 5:
598
+ _i++;
599
+ return [
600
+ 3,
601
+ 1
602
+ ];
603
+ case 6:
604
+ return [
605
+ 2
606
+ ];
580
607
  }
581
- }
582
- ]);
583
- return Server;
608
+ });
609
+ })();
610
+ }
611
+ }
612
+ ]);
613
+ return Server2;
584
614
  }();
585
- export { Server };