@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.
- package/CHANGELOG.md +148 -0
- package/dist/js/modern/constants.js +10 -9
- package/dist/js/modern/dev-tools/dev-middleware/dev-server-plugin.js +14 -20
- package/dist/js/modern/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +14 -19
- package/dist/js/modern/dev-tools/dev-middleware/hmr-client/index.js +134 -184
- package/dist/js/modern/dev-tools/dev-middleware/hmr-client/types.d.js +0 -0
- package/dist/js/modern/dev-tools/dev-middleware/index.js +65 -60
- package/dist/js/modern/dev-tools/dev-middleware/socket-server.js +33 -59
- package/dist/js/modern/dev-tools/https/global.d.js +0 -0
- package/dist/js/modern/dev-tools/https/index.js +28 -5
- package/dist/js/modern/dev-tools/mock/getMockData.js +71 -45
- package/dist/js/modern/dev-tools/mock/index.js +34 -15
- package/dist/js/modern/dev-tools/register/index.js +71 -55
- package/dist/js/modern/dev-tools/watcher/dependency-tree.js +25 -34
- package/dist/js/modern/dev-tools/watcher/index.js +51 -33
- package/dist/js/modern/dev-tools/watcher/stats-cache.js +13 -20
- package/dist/js/modern/index.js +7 -4
- package/dist/js/modern/server/dev-server.js +194 -216
- package/dist/js/modern/server/index.js +7 -4
- package/dist/js/node/constants.js +27 -14
- package/dist/js/node/dev-tools/dev-middleware/dev-server-plugin.js +36 -24
- package/dist/js/node/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +31 -24
- package/dist/js/node/dev-tools/dev-middleware/hmr-client/index.js +56 -98
- package/dist/js/node/dev-tools/dev-middleware/hmr-client/types.d.js +0 -0
- package/dist/js/node/dev-tools/dev-middleware/index.js +94 -72
- package/dist/js/node/dev-tools/dev-middleware/socket-server.js +57 -66
- package/dist/js/node/dev-tools/https/global.d.js +0 -0
- package/dist/js/node/dev-tools/https/index.js +52 -13
- package/dist/js/node/dev-tools/mock/getMockData.js +88 -51
- package/dist/js/node/dev-tools/mock/index.js +62 -28
- package/dist/js/node/dev-tools/register/index.js +98 -65
- package/dist/js/node/dev-tools/watcher/dependency-tree.js +50 -43
- package/dist/js/node/dev-tools/watcher/index.js +79 -47
- package/dist/js/node/dev-tools/watcher/stats-cache.js +40 -30
- package/dist/js/node/index.js +25 -15
- package/dist/js/node/server/dev-server.js +235 -236
- package/dist/js/node/server/index.js +26 -11
- package/dist/js/treeshaking/constants.js +21 -0
- package/dist/js/treeshaking/dev-tools/dev-middleware/dev-server-plugin.js +74 -0
- package/dist/js/treeshaking/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +51 -0
- package/dist/js/treeshaking/dev-tools/dev-middleware/hmr-client/index.js +157 -0
- package/dist/js/treeshaking/dev-tools/dev-middleware/hmr-client/types.d.js +1 -0
- package/dist/js/treeshaking/dev-tools/dev-middleware/index.js +363 -0
- package/dist/js/treeshaking/dev-tools/dev-middleware/socket-server.js +209 -0
- package/dist/js/treeshaking/dev-tools/https/global.d.js +1 -0
- package/dist/js/treeshaking/dev-tools/https/index.js +161 -0
- package/dist/js/treeshaking/dev-tools/mock/getMockData.js +327 -0
- package/dist/js/treeshaking/dev-tools/mock/index.js +191 -0
- package/dist/js/treeshaking/dev-tools/register/index.js +153 -0
- package/dist/js/treeshaking/dev-tools/watcher/dependency-tree.js +150 -0
- package/dist/js/treeshaking/dev-tools/watcher/index.js +200 -0
- package/dist/js/treeshaking/dev-tools/watcher/stats-cache.js +128 -0
- package/dist/js/treeshaking/index.js +9 -0
- package/dist/js/treeshaking/server/dev-server.js +800 -0
- package/dist/js/treeshaking/server/index.js +92 -0
- package/dist/js/treeshaking/types.js +1 -0
- package/dist/types/dev-tools/mock/getMockData.d.ts +2 -0
- package/dist/types/dev-tools/watcher/dependency-tree.d.ts +2 -0
- package/dist/types/dev-tools/watcher/index.d.ts +1 -17
- package/dist/types/index.d.ts +2 -0
- package/package.json +19 -16
- 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 };
|