@modern-js/server 2.0.0-beta.2 → 2.0.0-beta.4

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 (62) hide show
  1. package/CHANGELOG.md +148 -0
  2. package/dist/js/modern/constants.js +10 -9
  3. package/dist/js/modern/dev-tools/dev-middleware/dev-server-plugin.js +14 -20
  4. package/dist/js/modern/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +14 -19
  5. package/dist/js/modern/dev-tools/dev-middleware/hmr-client/index.js +134 -184
  6. package/dist/js/modern/dev-tools/dev-middleware/hmr-client/types.d.js +0 -0
  7. package/dist/js/modern/dev-tools/dev-middleware/index.js +65 -60
  8. package/dist/js/modern/dev-tools/dev-middleware/socket-server.js +33 -59
  9. package/dist/js/modern/dev-tools/https/global.d.js +0 -0
  10. package/dist/js/modern/dev-tools/https/index.js +28 -5
  11. package/dist/js/modern/dev-tools/mock/getMockData.js +71 -45
  12. package/dist/js/modern/dev-tools/mock/index.js +34 -15
  13. package/dist/js/modern/dev-tools/register/index.js +71 -55
  14. package/dist/js/modern/dev-tools/watcher/dependency-tree.js +25 -34
  15. package/dist/js/modern/dev-tools/watcher/index.js +51 -33
  16. package/dist/js/modern/dev-tools/watcher/stats-cache.js +13 -20
  17. package/dist/js/modern/index.js +7 -4
  18. package/dist/js/modern/server/dev-server.js +194 -216
  19. package/dist/js/modern/server/index.js +7 -4
  20. package/dist/js/node/constants.js +27 -14
  21. package/dist/js/node/dev-tools/dev-middleware/dev-server-plugin.js +36 -24
  22. package/dist/js/node/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +31 -24
  23. package/dist/js/node/dev-tools/dev-middleware/hmr-client/index.js +56 -98
  24. package/dist/js/node/dev-tools/dev-middleware/hmr-client/types.d.js +0 -0
  25. package/dist/js/node/dev-tools/dev-middleware/index.js +94 -72
  26. package/dist/js/node/dev-tools/dev-middleware/socket-server.js +57 -66
  27. package/dist/js/node/dev-tools/https/global.d.js +0 -0
  28. package/dist/js/node/dev-tools/https/index.js +52 -13
  29. package/dist/js/node/dev-tools/mock/getMockData.js +88 -51
  30. package/dist/js/node/dev-tools/mock/index.js +62 -28
  31. package/dist/js/node/dev-tools/register/index.js +98 -65
  32. package/dist/js/node/dev-tools/watcher/dependency-tree.js +50 -43
  33. package/dist/js/node/dev-tools/watcher/index.js +79 -47
  34. package/dist/js/node/dev-tools/watcher/stats-cache.js +40 -30
  35. package/dist/js/node/index.js +25 -15
  36. package/dist/js/node/server/dev-server.js +235 -236
  37. package/dist/js/node/server/index.js +26 -11
  38. package/dist/js/treeshaking/constants.js +21 -0
  39. package/dist/js/treeshaking/dev-tools/dev-middleware/dev-server-plugin.js +74 -0
  40. package/dist/js/treeshaking/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +51 -0
  41. package/dist/js/treeshaking/dev-tools/dev-middleware/hmr-client/index.js +157 -0
  42. package/dist/js/treeshaking/dev-tools/dev-middleware/hmr-client/types.d.js +1 -0
  43. package/dist/js/treeshaking/dev-tools/dev-middleware/index.js +363 -0
  44. package/dist/js/treeshaking/dev-tools/dev-middleware/socket-server.js +209 -0
  45. package/dist/js/treeshaking/dev-tools/https/global.d.js +1 -0
  46. package/dist/js/treeshaking/dev-tools/https/index.js +161 -0
  47. package/dist/js/treeshaking/dev-tools/mock/getMockData.js +327 -0
  48. package/dist/js/treeshaking/dev-tools/mock/index.js +191 -0
  49. package/dist/js/treeshaking/dev-tools/register/index.js +153 -0
  50. package/dist/js/treeshaking/dev-tools/watcher/dependency-tree.js +150 -0
  51. package/dist/js/treeshaking/dev-tools/watcher/index.js +200 -0
  52. package/dist/js/treeshaking/dev-tools/watcher/stats-cache.js +128 -0
  53. package/dist/js/treeshaking/index.js +9 -0
  54. package/dist/js/treeshaking/server/dev-server.js +800 -0
  55. package/dist/js/treeshaking/server/index.js +92 -0
  56. package/dist/js/treeshaking/types.js +1 -0
  57. package/dist/types/dev-tools/mock/getMockData.d.ts +2 -0
  58. package/dist/types/dev-tools/watcher/dependency-tree.d.ts +2 -0
  59. package/dist/types/dev-tools/watcher/index.d.ts +1 -17
  60. package/dist/types/index.d.ts +2 -0
  61. package/package.json +19 -16
  62. package/temp-fix-hmr.js +483 -0
@@ -0,0 +1,209 @@
1
+ function _classCallCheck(instance, Constructor) {
2
+ if (!(instance instanceof Constructor)) {
3
+ throw new TypeError("Cannot call a class as a function");
4
+ }
5
+ }
6
+ function _defineProperties(target, props) {
7
+ for(var i = 0; i < props.length; i++){
8
+ var descriptor = props[i];
9
+ descriptor.enumerable = descriptor.enumerable || false;
10
+ descriptor.configurable = true;
11
+ if ("value" in descriptor) descriptor.writable = true;
12
+ Object.defineProperty(target, descriptor.key, descriptor);
13
+ }
14
+ }
15
+ function _createClass(Constructor, protoProps, staticProps) {
16
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
17
+ if (staticProps) _defineProperties(Constructor, staticProps);
18
+ return Constructor;
19
+ }
20
+ function _defineProperty(obj, key, value) {
21
+ if (key in obj) {
22
+ Object.defineProperty(obj, key, {
23
+ value: value,
24
+ enumerable: true,
25
+ configurable: true,
26
+ writable: true
27
+ });
28
+ } else {
29
+ obj[key] = value;
30
+ }
31
+ return obj;
32
+ }
33
+ import ws from "ws";
34
+ import { logger } from "@modern-js/utils";
35
+ var SocketServer = /*#__PURE__*/ function() {
36
+ "use strict";
37
+ function SocketServer(options) {
38
+ _classCallCheck(this, SocketServer);
39
+ _defineProperty(this, "wsServer", void 0);
40
+ _defineProperty(this, "sockets", []);
41
+ _defineProperty(this, "options", void 0);
42
+ _defineProperty(this, "app", void 0);
43
+ _defineProperty(this, "stats", void 0);
44
+ _defineProperty(this, "timer", null);
45
+ this.options = options;
46
+ }
47
+ _createClass(SocketServer, [
48
+ {
49
+ key: "prepare",
50
+ value: function prepare(app) {
51
+ var _this = this;
52
+ var ref;
53
+ this.app = app;
54
+ this.wsServer = new ws.Server({
55
+ noServer: true,
56
+ path: (ref = this.options.client) === null || ref === void 0 ? void 0 : ref.path
57
+ });
58
+ this.app.on("upgrade", function(req, sock, head) {
59
+ if (!_this.wsServer.shouldHandle(req)) {
60
+ return;
61
+ }
62
+ _this.wsServer.handleUpgrade(req, sock, head, function(connection) {
63
+ _this.wsServer.emit("connection", connection, req);
64
+ });
65
+ });
66
+ this.wsServer.on("error", function(err) {
67
+ logger.error(err);
68
+ });
69
+ this.timer = setInterval(function() {
70
+ _this.wsServer.clients.forEach(function(socket) {
71
+ var extWs = socket;
72
+ if (!extWs.isAlive) {
73
+ extWs.terminate();
74
+ } else {
75
+ extWs.isAlive = false;
76
+ extWs.ping(function() {});
77
+ }
78
+ });
79
+ }, 3e4);
80
+ this.wsServer.on("connection", function(socket) {
81
+ _this.onConnect(socket);
82
+ });
83
+ }
84
+ },
85
+ {
86
+ key: "updateStats",
87
+ value: function updateStats(stats) {
88
+ this.stats = stats;
89
+ this.sendStats();
90
+ }
91
+ },
92
+ {
93
+ key: "sockWrite",
94
+ value: function sockWrite(type, data) {
95
+ var _this = this;
96
+ this.sockets.forEach(function(socket) {
97
+ _this.send(socket, JSON.stringify({
98
+ type: type,
99
+ data: data
100
+ }));
101
+ });
102
+ }
103
+ },
104
+ {
105
+ key: "singleWrite",
106
+ value: function singleWrite(socket, type, data) {
107
+ this.send(socket, JSON.stringify({
108
+ type: type,
109
+ data: data
110
+ }));
111
+ }
112
+ },
113
+ {
114
+ key: "close",
115
+ value: function close() {
116
+ this.sockets.forEach(function(socket) {
117
+ socket.close();
118
+ });
119
+ if (this.timer) {
120
+ clearInterval(this.timer);
121
+ this.timer = null;
122
+ }
123
+ }
124
+ },
125
+ {
126
+ key: "onConnect",
127
+ value: function onConnect(socket) {
128
+ var _this = this;
129
+ var connection = socket;
130
+ connection.isAlive = true;
131
+ connection.on("pong", function() {
132
+ connection.isAlive = true;
133
+ });
134
+ if (!connection) {
135
+ return;
136
+ }
137
+ this.sockets.push(connection);
138
+ connection.on("close", function() {
139
+ var idx = _this.sockets.indexOf(connection);
140
+ if (idx >= 0) {
141
+ _this.sockets.splice(idx, 1);
142
+ }
143
+ });
144
+ if (this.options.hot || this.options.hot === "only") {
145
+ this.singleWrite(connection, "hot");
146
+ }
147
+ if (this.options.liveReload) {
148
+ this.singleWrite(connection, "liveReload");
149
+ }
150
+ if (this.stats) {
151
+ this.sendStats(true);
152
+ }
153
+ }
154
+ },
155
+ {
156
+ key: "getStats",
157
+ value: function getStats() {
158
+ var curStats = this.stats;
159
+ if (!curStats) {
160
+ return null;
161
+ }
162
+ var defaultStats = {
163
+ all: false,
164
+ hash: true,
165
+ assets: true,
166
+ warnings: true,
167
+ errors: true,
168
+ errorDetails: false
169
+ };
170
+ return curStats.toJson(defaultStats);
171
+ }
172
+ },
173
+ {
174
+ key: "sendStats",
175
+ value: function sendStats() {
176
+ var force = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;
177
+ var stats = this.getStats();
178
+ if (!stats) {
179
+ return null;
180
+ }
181
+ var shouldEmit = !force && stats && (!stats.errors || stats.errors.length === 0) && stats.assets && stats.assets.every(function(asset) {
182
+ return !asset.emitted;
183
+ });
184
+ if (shouldEmit) {
185
+ return this.sockWrite("still-ok");
186
+ }
187
+ this.sockWrite("hash", stats.hash);
188
+ if (stats.errors && stats.errors.length > 0) {
189
+ return this.sockWrite("errors", stats.errors);
190
+ } else if (stats.warnings && stats.warnings.length > 0) {
191
+ return this.sockWrite("warnings", stats.warnings);
192
+ } else {
193
+ return this.sockWrite("ok");
194
+ }
195
+ }
196
+ },
197
+ {
198
+ key: "send",
199
+ value: function send(connection, message) {
200
+ if (connection.readyState !== 1) {
201
+ return;
202
+ }
203
+ connection.send(message);
204
+ }
205
+ }
206
+ ]);
207
+ return SocketServer;
208
+ }();
209
+ export { SocketServer as default };
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,161 @@
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
+ try {
3
+ var info = gen[key](arg);
4
+ var value = info.value;
5
+ } catch (error) {
6
+ reject(error);
7
+ return;
8
+ }
9
+ if (info.done) {
10
+ resolve(value);
11
+ } else {
12
+ Promise.resolve(value).then(_next, _throw);
13
+ }
14
+ }
15
+ function _asyncToGenerator(fn) {
16
+ return function() {
17
+ var self = this, args = arguments;
18
+ return new Promise(function(resolve, reject) {
19
+ var gen = fn.apply(self, args);
20
+ function _next(value) {
21
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
22
+ }
23
+ function _throw(err) {
24
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
25
+ }
26
+ _next(undefined);
27
+ });
28
+ };
29
+ }
30
+ var __generator = this && this.__generator || function(thisArg, body) {
31
+ var f, y, t, g, _ = {
32
+ label: 0,
33
+ sent: function() {
34
+ if (t[0] & 1) throw t[1];
35
+ return t[1];
36
+ },
37
+ trys: [],
38
+ ops: []
39
+ };
40
+ return(g = {
41
+ next: verb(0),
42
+ "throw": verb(1),
43
+ "return": verb(2)
44
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
45
+ return this;
46
+ }), g);
47
+ function verb(n) {
48
+ return function(v) {
49
+ return step([
50
+ n,
51
+ v
52
+ ]);
53
+ };
54
+ }
55
+ function step(op) {
56
+ if (f) throw new TypeError("Generator is already executing.");
57
+ while(_)try {
58
+ 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;
59
+ if (y = 0, t) op = [
60
+ op[0] & 2,
61
+ t.value
62
+ ];
63
+ switch(op[0]){
64
+ case 0:
65
+ case 1:
66
+ t = op;
67
+ break;
68
+ case 4:
69
+ _.label++;
70
+ return {
71
+ value: op[1],
72
+ done: false
73
+ };
74
+ case 5:
75
+ _.label++;
76
+ y = op[1];
77
+ op = [
78
+ 0
79
+ ];
80
+ continue;
81
+ case 7:
82
+ op = _.ops.pop();
83
+ _.trys.pop();
84
+ continue;
85
+ default:
86
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
87
+ _ = 0;
88
+ continue;
89
+ }
90
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
91
+ _.label = op[1];
92
+ break;
93
+ }
94
+ if (op[0] === 6 && _.label < t[1]) {
95
+ _.label = t[1];
96
+ t = op;
97
+ break;
98
+ }
99
+ if (t && _.label < t[2]) {
100
+ _.label = t[2];
101
+ _.ops.push(op);
102
+ break;
103
+ }
104
+ if (t[2]) _.ops.pop();
105
+ _.trys.pop();
106
+ continue;
107
+ }
108
+ op = body.call(thisArg, _);
109
+ } catch (e) {
110
+ op = [
111
+ 6,
112
+ e
113
+ ];
114
+ y = 0;
115
+ } finally{
116
+ f = t = 0;
117
+ }
118
+ if (op[0] & 5) throw op[1];
119
+ return {
120
+ value: op[0] ? op[1] : void 0,
121
+ done: true
122
+ };
123
+ }
124
+ };
125
+ import * as devcert from "devcert";
126
+ var genHttpsOptions = function() {
127
+ var _ref = _asyncToGenerator(function(userOptions) {
128
+ var httpsOptions, selfsign;
129
+ return __generator(this, function(_state) {
130
+ switch(_state.label){
131
+ case 0:
132
+ httpsOptions = typeof userOptions === "boolean" ? {} : userOptions;
133
+ if (!(!httpsOptions.key || !httpsOptions.cert)) return [
134
+ 3,
135
+ 2
136
+ ];
137
+ return [
138
+ 4,
139
+ devcert.certificateFor([
140
+ "localhost"
141
+ ])
142
+ ];
143
+ case 1:
144
+ selfsign = _state.sent();
145
+ return [
146
+ 2,
147
+ selfsign
148
+ ];
149
+ case 2:
150
+ return [
151
+ 2,
152
+ httpsOptions
153
+ ];
154
+ }
155
+ });
156
+ });
157
+ return function genHttpsOptions(userOptions) {
158
+ return _ref.apply(this, arguments);
159
+ };
160
+ }();
161
+ export { genHttpsOptions };
@@ -0,0 +1,327 @@
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;
5
+ }
6
+ function _arrayWithHoles(arr) {
7
+ if (Array.isArray(arr)) return arr;
8
+ }
9
+ 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
+ }
22
+ }
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
+ };
37
+ }
38
+ function _defineProperty(obj, key, value) {
39
+ if (key in obj) {
40
+ Object.defineProperty(obj, key, {
41
+ value: value,
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true
45
+ });
46
+ } else {
47
+ obj[key] = value;
48
+ }
49
+ return obj;
50
+ }
51
+ function _iterableToArrayLimit(arr, i) {
52
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
53
+ if (_i == null) return;
54
+ var _arr = [];
55
+ var _n = true;
56
+ var _d = false;
57
+ var _s, _e;
58
+ try {
59
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
60
+ _arr.push(_s.value);
61
+ if (i && _arr.length === i) break;
62
+ }
63
+ } catch (err) {
64
+ _d = true;
65
+ _e = err;
66
+ } finally{
67
+ try {
68
+ if (!_n && _i["return"] != null) _i["return"]();
69
+ } finally{
70
+ if (_d) throw _e;
71
+ }
72
+ }
73
+ return _arr;
74
+ }
75
+ function _nonIterableRest() {
76
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
77
+ }
78
+ function _objectSpread(target) {
79
+ for(var i = 1; i < arguments.length; i++){
80
+ var source = arguments[i] != null ? arguments[i] : {};
81
+ var ownKeys = Object.keys(source);
82
+ if (typeof Object.getOwnPropertySymbols === "function") {
83
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
84
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
85
+ }));
86
+ }
87
+ ownKeys.forEach(function(key) {
88
+ _defineProperty(target, key, source[key]);
89
+ });
90
+ }
91
+ return target;
92
+ }
93
+ function ownKeys(object, enumerableOnly) {
94
+ var keys = Object.keys(object);
95
+ if (Object.getOwnPropertySymbols) {
96
+ var symbols = Object.getOwnPropertySymbols(object);
97
+ if (enumerableOnly) {
98
+ symbols = symbols.filter(function(sym) {
99
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
100
+ });
101
+ }
102
+ keys.push.apply(keys, symbols);
103
+ }
104
+ return keys;
105
+ }
106
+ function _objectSpreadProps(target, source) {
107
+ source = source != null ? source : {};
108
+ if (Object.getOwnPropertyDescriptors) {
109
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
110
+ } else {
111
+ ownKeys(Object(source)).forEach(function(key) {
112
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
113
+ });
114
+ }
115
+ return target;
116
+ }
117
+ function _slicedToArray(arr, i) {
118
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
119
+ }
120
+ var _typeof = function(obj) {
121
+ "@swc/helpers - typeof";
122
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
123
+ };
124
+ function _unsupportedIterableToArray(o, minLen) {
125
+ if (!o) return;
126
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
127
+ var n = Object.prototype.toString.call(o).slice(8, -1);
128
+ if (n === "Object" && o.constructor) n = o.constructor.name;
129
+ if (n === "Map" || n === "Set") return Array.from(n);
130
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
131
+ }
132
+ var __generator = this && this.__generator || function(thisArg, body) {
133
+ var f, y, t, g, _ = {
134
+ label: 0,
135
+ sent: function() {
136
+ if (t[0] & 1) throw t[1];
137
+ return t[1];
138
+ },
139
+ trys: [],
140
+ ops: []
141
+ };
142
+ return(g = {
143
+ next: verb(0),
144
+ "throw": verb(1),
145
+ "return": verb(2)
146
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
147
+ return this;
148
+ }), g);
149
+ function verb(n) {
150
+ return function(v) {
151
+ return step([
152
+ n,
153
+ v
154
+ ]);
155
+ };
156
+ }
157
+ function step(op) {
158
+ if (f) throw new TypeError("Generator is already executing.");
159
+ while(_)try {
160
+ 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;
161
+ if (y = 0, t) op = [
162
+ op[0] & 2,
163
+ t.value
164
+ ];
165
+ switch(op[0]){
166
+ case 0:
167
+ case 1:
168
+ t = op;
169
+ break;
170
+ case 4:
171
+ _.label++;
172
+ return {
173
+ value: op[1],
174
+ done: false
175
+ };
176
+ case 5:
177
+ _.label++;
178
+ y = op[1];
179
+ op = [
180
+ 0
181
+ ];
182
+ continue;
183
+ case 7:
184
+ op = _.ops.pop();
185
+ _.trys.pop();
186
+ continue;
187
+ default:
188
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
189
+ _ = 0;
190
+ continue;
191
+ }
192
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
193
+ _.label = op[1];
194
+ break;
195
+ }
196
+ if (op[0] === 6 && _.label < t[1]) {
197
+ _.label = t[1];
198
+ t = op;
199
+ break;
200
+ }
201
+ if (t && _.label < t[2]) {
202
+ _.label = t[2];
203
+ _.ops.push(op);
204
+ break;
205
+ }
206
+ if (t[2]) _.ops.pop();
207
+ _.trys.pop();
208
+ continue;
209
+ }
210
+ op = body.call(thisArg, _);
211
+ } catch (e) {
212
+ op = [
213
+ 6,
214
+ e
215
+ ];
216
+ y = 0;
217
+ } finally{
218
+ f = t = 0;
219
+ }
220
+ if (op[0] & 5) throw op[1];
221
+ return {
222
+ value: op[0] ? op[1] : void 0,
223
+ done: true
224
+ };
225
+ }
226
+ };
227
+ import { compatRequire } from "@modern-js/utils";
228
+ import { match } from "path-to-regexp";
229
+ var VALID_METHODS = [
230
+ "get",
231
+ "post",
232
+ "put",
233
+ "delete",
234
+ "patch"
235
+ ];
236
+ var BODY_PARSED_METHODS = [
237
+ "post",
238
+ "put",
239
+ "delete",
240
+ "patch"
241
+ ];
242
+ var createFunctionDataHandler = function(method, handler) {
243
+ return function() {
244
+ var _ref = _asyncToGenerator(function(context, next) {
245
+ var req, res;
246
+ return __generator(this, function(_state) {
247
+ req = context.req, res = context.res;
248
+ return [
249
+ 2,
250
+ handler(req, res, next)
251
+ ];
252
+ });
253
+ });
254
+ return function(context, next) {
255
+ return _ref.apply(this, arguments);
256
+ };
257
+ }();
258
+ };
259
+ var createStaticDataHandler = function(method, handler) {
260
+ return function(context) {
261
+ var res = context.res;
262
+ res.setHeader("Content-Type", "application/json");
263
+ res.end(JSON.stringify(handler));
264
+ };
265
+ };
266
+ var allowTypes = [
267
+ "object",
268
+ "function"
269
+ ];
270
+ var normalizeConfig = function(mockConfig) {
271
+ return Object.keys(mockConfig).reduce(function(acc, key) {
272
+ var handler = mockConfig[key];
273
+ var type = typeof handler === "undefined" ? "undefined" : _typeof(handler);
274
+ if (!allowTypes.includes(type)) {
275
+ throw new Error("mock value of ".concat(key, " should be object or function, but got ").concat(type));
276
+ }
277
+ var meta = parseKey(key);
278
+ if (type === "object") {
279
+ acc.push(_objectSpreadProps(_objectSpread({}, meta), {
280
+ handler: createStaticDataHandler(meta.method, handler)
281
+ }));
282
+ } else {
283
+ acc.push(_objectSpreadProps(_objectSpread({}, meta), {
284
+ handler: createFunctionDataHandler(meta.method, handler)
285
+ }));
286
+ }
287
+ return acc;
288
+ }, []);
289
+ };
290
+ var _blank = " ";
291
+ var parseKey = function(key) {
292
+ var splitted = key.split(_blank).filter(Boolean);
293
+ if (splitted.length > 1) {
294
+ var _splitted = _slicedToArray(splitted, 2), method = _splitted[0], pathname = _splitted[1];
295
+ return {
296
+ method: method.toLowerCase(),
297
+ path: pathname
298
+ };
299
+ }
300
+ return {
301
+ method: "get",
302
+ path: key
303
+ };
304
+ };
305
+ var getMockData_default = function(filepath) {
306
+ var mockModule = compatRequire(filepath);
307
+ if (!mockModule) {
308
+ throw new Error("Mock file ".concat(filepath, " parsed failed!"));
309
+ }
310
+ var data = normalizeConfig(mockModule);
311
+ return data;
312
+ };
313
+ var getMatched = function(context, mockApiList) {
314
+ var targetPathname = context.path, targetMethod = context.method;
315
+ var matched = mockApiList.find(function(mockApi) {
316
+ var method = mockApi.method, pathname = mockApi.path;
317
+ if (method.toLowerCase() === targetMethod.toLowerCase()) {
318
+ return match(pathname, {
319
+ encode: encodeURI,
320
+ decode: decodeURIComponent
321
+ })(targetPathname);
322
+ }
323
+ return false;
324
+ });
325
+ return matched;
326
+ };
327
+ export { getMockData_default as default, getMatched };