vite-plugin-mock-dev-server 1.8.7 → 1.9.1
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/dist/dist-CAA1v47s.js +204 -0
- package/dist/dist-DrfpZ4UT.cjs +323 -0
- package/dist/{helper-PQrLL5uH.cjs → helper-CCVedLL0.cjs} +10 -11
- package/dist/{helper-L9yYYkP2.js → helper-DhHU-YoO.js} +4 -3
- package/dist/{helper-Di4IZQHq.d.cts → helper-iVHsUTZ6.d.cts} +4 -45
- package/dist/{helper-6T1vILP_.d.ts → helper-r_bW1AY8.d.ts} +5 -46
- package/dist/helper.cjs +6 -5
- package/dist/helper.d.cts +2 -2
- package/dist/helper.d.ts +2 -2
- package/dist/helper.js +2 -1
- package/dist/index.cjs +50 -49
- package/dist/index.d.cts +6 -5
- package/dist/index.d.ts +6 -5
- package/dist/index.js +13 -10
- package/dist/{server-CAGUKvhH.d.cts → server-B5Ua2cmP.d.cts} +1 -7
- package/dist/{server-03xFMgug.cjs → server-BwOfV_62.cjs} +69 -62
- package/dist/{server-C258ATX8.js → server-C-u7jwot.js} +19 -10
- package/dist/{server-CXqFaG_J.d.ts → server-DgmHgcvl.d.ts} +2 -8
- package/dist/server.cjs +9 -8
- package/dist/server.d.cts +2 -2
- package/dist/server.d.ts +2 -2
- package/dist/server.js +2 -1
- package/dist/{types-BdGI944Z.d.cts → types-BbbTJG0b.d.ts} +8 -11
- package/dist/{types-CxzZg47I.d.ts → types-DpbHkRjL.d.cts} +8 -11
- package/package.json +6 -6
- package/dist/chunk-BCwAaXi7.cjs +0 -31
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const formidable = require_chunk.__toESM(require("formidable"));
|
|
18
|
-
const ws = require_chunk.__toESM(require("ws"));
|
|
1
|
+
const require_dist = require('./dist-DrfpZ4UT.cjs');
|
|
2
|
+
const picocolors = require_dist.__toESM(require("picocolors"));
|
|
3
|
+
const node_fs = require_dist.__toESM(require("node:fs"));
|
|
4
|
+
const node_path = require_dist.__toESM(require("node:path"));
|
|
5
|
+
const node_url = require_dist.__toESM(require("node:url"));
|
|
6
|
+
const node_os = require_dist.__toESM(require("node:os"));
|
|
7
|
+
const node_querystring = require_dist.__toESM(require("node:querystring"));
|
|
8
|
+
const debug = require_dist.__toESM(require("debug"));
|
|
9
|
+
const path_to_regexp = require_dist.__toESM(require("path-to-regexp"));
|
|
10
|
+
const node_buffer = require_dist.__toESM(require("node:buffer"));
|
|
11
|
+
const cookies = require_dist.__toESM(require("cookies"));
|
|
12
|
+
const http_status = require_dist.__toESM(require("http-status"));
|
|
13
|
+
const mime_types = require_dist.__toESM(require("mime-types"));
|
|
14
|
+
const co_body = require_dist.__toESM(require("co-body"));
|
|
15
|
+
const formidable = require_dist.__toESM(require("formidable"));
|
|
16
|
+
const ws = require_dist.__toESM(require("ws"));
|
|
19
17
|
|
|
20
18
|
//#region src/core/utils.ts
|
|
21
19
|
function isStream(stream) {
|
|
@@ -85,7 +83,7 @@ function getTokens(rule) {
|
|
|
85
83
|
if (tokensCache[rule]) return tokensCache[rule];
|
|
86
84
|
const tks = (0, path_to_regexp.parse)(rule);
|
|
87
85
|
const tokens = [];
|
|
88
|
-
for (const tk of tks) if (!
|
|
86
|
+
for (const tk of tks) if (!require_dist.isString(tk)) tokens.push(tk);
|
|
89
87
|
else {
|
|
90
88
|
const hasPrefix = tk[0] === "/";
|
|
91
89
|
const subTks = hasPrefix ? tk.slice(1).split("/") : tk.split("/");
|
|
@@ -104,7 +102,7 @@ function sortFn(rule) {
|
|
|
104
102
|
let w = 0;
|
|
105
103
|
for (let i = 0; i < tokens.length; i++) {
|
|
106
104
|
const token = tokens[i];
|
|
107
|
-
if (!
|
|
105
|
+
if (!require_dist.isString(token)) w += 10 ** (i + 1);
|
|
108
106
|
w += 10 ** (i + 1);
|
|
109
107
|
}
|
|
110
108
|
return w;
|
|
@@ -118,12 +116,12 @@ function preSort(rules) {
|
|
|
118
116
|
if (!preMatch[len]) preMatch[len] = [];
|
|
119
117
|
preMatch[len].push(rule);
|
|
120
118
|
}
|
|
121
|
-
for (const match$1 of preMatch.filter((v) => v && v.length > 0)) matched = [...matched, ...
|
|
119
|
+
for (const match$1 of preMatch.filter((v) => v && v.length > 0)) matched = [...matched, ...require_dist.sortBy(match$1, sortFn).reverse()];
|
|
122
120
|
return matched;
|
|
123
121
|
}
|
|
124
122
|
function defaultPriority(rules) {
|
|
125
123
|
const highest = getHighest(rules);
|
|
126
|
-
return
|
|
124
|
+
return require_dist.sortBy(rules, (rule) => {
|
|
127
125
|
const tokens = getTokens(rule);
|
|
128
126
|
const dym = tokens.filter((token) => typeof token !== "string");
|
|
129
127
|
if (dym.length === 0) return 0;
|
|
@@ -131,11 +129,11 @@ function defaultPriority(rules) {
|
|
|
131
129
|
let exp = 0;
|
|
132
130
|
for (let i = 0; i < tokens.length; i++) {
|
|
133
131
|
const token = tokens[i];
|
|
134
|
-
const isDynamic = !
|
|
132
|
+
const isDynamic = !require_dist.isString(token);
|
|
135
133
|
const { pattern = "", modifier, prefix, name } = isDynamic ? token : {};
|
|
136
134
|
const isGlob = pattern && pattern.includes(".*");
|
|
137
135
|
const isSlash = prefix === "/";
|
|
138
|
-
const isNamed =
|
|
136
|
+
const isNamed = require_dist.isString(name);
|
|
139
137
|
exp += isDynamic && isSlash ? 1 : 0;
|
|
140
138
|
if (i === tokens.length - 1 && isGlob) weight += 5 * 10 ** (tokens.length === 1 ? highest + 1 : highest);
|
|
141
139
|
else if (isGlob) weight += 3 * 10 ** (highest - 1);
|
|
@@ -151,24 +149,24 @@ function defaultPriority(rules) {
|
|
|
151
149
|
function matchingWeight(rules, url, priority) {
|
|
152
150
|
let matched = defaultPriority(preSort(rules.filter((rule) => (0, path_to_regexp.pathToRegexp)(rule).test(url))));
|
|
153
151
|
const { global = [], special = {} } = priority;
|
|
154
|
-
if (global.length === 0 &&
|
|
152
|
+
if (global.length === 0 && require_dist.isEmptyObject(special) || matched.length === 0) return matched;
|
|
155
153
|
const [statics, dynamics] = twoPartMatch(matched);
|
|
156
154
|
const globalMatch = global.filter((rule) => dynamics.includes(rule));
|
|
157
|
-
if (globalMatch.length > 0) matched =
|
|
155
|
+
if (globalMatch.length > 0) matched = require_dist.uniq([
|
|
158
156
|
...statics,
|
|
159
157
|
...globalMatch,
|
|
160
158
|
...dynamics
|
|
161
159
|
]);
|
|
162
|
-
if (
|
|
160
|
+
if (require_dist.isEmptyObject(special)) return matched;
|
|
163
161
|
const specialRule = Object.keys(special).filter((rule) => matched.includes(rule))[0];
|
|
164
162
|
if (!specialRule) return matched;
|
|
165
163
|
const options = special[specialRule];
|
|
166
|
-
const { rules: lowerRules, when } =
|
|
164
|
+
const { rules: lowerRules, when } = require_dist.isArray(options) ? {
|
|
167
165
|
rules: options,
|
|
168
166
|
when: []
|
|
169
167
|
} : options;
|
|
170
168
|
if (lowerRules.includes(matched[0])) {
|
|
171
|
-
if (when.length === 0 || when.some((path$1) => (0, path_to_regexp.pathToRegexp)(path$1).test(url))) matched =
|
|
169
|
+
if (when.length === 0 || when.some((path$1) => (0, path_to_regexp.pathToRegexp)(path$1).test(url))) matched = require_dist.uniq([specialRule, ...matched]);
|
|
172
170
|
}
|
|
173
171
|
return matched;
|
|
174
172
|
}
|
|
@@ -186,6 +184,12 @@ function twoPartMatch(rules) {
|
|
|
186
184
|
|
|
187
185
|
//#endregion
|
|
188
186
|
//#region src/core/parseReqBody.ts
|
|
187
|
+
const DEFAULT_FORMIDABLE_OPTIONS = {
|
|
188
|
+
keepExtensions: true,
|
|
189
|
+
filename(name, ext, part) {
|
|
190
|
+
return part?.originalFilename || `${name}.${Date.now()}${ext ? `.${ext}` : ""}`;
|
|
191
|
+
}
|
|
192
|
+
};
|
|
189
193
|
async function parseReqBody(req, formidableOptions, bodyParserOptions = {}) {
|
|
190
194
|
const method = req.method.toUpperCase();
|
|
191
195
|
if (["HEAD", "OPTIONS"].includes(method)) return void 0;
|
|
@@ -211,7 +215,10 @@ async function parseReqBody(req, formidableOptions, bodyParserOptions = {}) {
|
|
|
211
215
|
return void 0;
|
|
212
216
|
}
|
|
213
217
|
async function parseMultipart(req, options) {
|
|
214
|
-
const form = (0, formidable.default)(
|
|
218
|
+
const form = (0, formidable.default)({
|
|
219
|
+
...DEFAULT_FORMIDABLE_OPTIONS,
|
|
220
|
+
...options
|
|
221
|
+
});
|
|
215
222
|
return new Promise((resolve, reject) => {
|
|
216
223
|
form.parse(req, (error, fields, files) => {
|
|
217
224
|
if (error) {
|
|
@@ -228,7 +235,7 @@ async function parseMultipart(req, options) {
|
|
|
228
235
|
|
|
229
236
|
//#endregion
|
|
230
237
|
//#region src/core/requestRecovery.ts
|
|
231
|
-
const cache = new WeakMap();
|
|
238
|
+
const cache = /* @__PURE__ */ new WeakMap();
|
|
232
239
|
function collectRequest(req) {
|
|
233
240
|
const chunks = [];
|
|
234
241
|
req.addListener("data", (chunk) => {
|
|
@@ -289,8 +296,8 @@ function isObjectSubset(source, target) {
|
|
|
289
296
|
return true;
|
|
290
297
|
}
|
|
291
298
|
function isIncluded(source, target) {
|
|
292
|
-
if (
|
|
293
|
-
const seen = new Set();
|
|
299
|
+
if (require_dist.isArray(source) && require_dist.isArray(target)) {
|
|
300
|
+
const seen = /* @__PURE__ */ new Set();
|
|
294
301
|
return target.every((ti) => source.some((si, i) => {
|
|
295
302
|
if (seen.has(i)) return false;
|
|
296
303
|
const included = isIncluded(si, ti);
|
|
@@ -298,7 +305,7 @@ function isIncluded(source, target) {
|
|
|
298
305
|
return included;
|
|
299
306
|
}));
|
|
300
307
|
}
|
|
301
|
-
if (
|
|
308
|
+
if (require_dist.isPlainObject(source) && require_dist.isPlainObject(target)) return isObjectSubset(source, target);
|
|
302
309
|
return Object.is(source, target);
|
|
303
310
|
}
|
|
304
311
|
|
|
@@ -306,7 +313,7 @@ function isIncluded(source, target) {
|
|
|
306
313
|
//#region src/core/baseMiddleware.ts
|
|
307
314
|
function baseMiddleware(compiler, { formidableOptions = {}, bodyParserOptions = {}, proxies, cookiesOptions, logger, priority = {} }) {
|
|
308
315
|
return async function(req, res, next) {
|
|
309
|
-
const startTime =
|
|
316
|
+
const startTime = require_dist.timestamp();
|
|
310
317
|
const { query, pathname } = urlParse(req.url);
|
|
311
318
|
if (!pathname || proxies.length === 0 || !proxies.some((context) => doesProxyContextMatchUrl(context, req.url))) return next();
|
|
312
319
|
const mockData = compiler.mockData;
|
|
@@ -358,7 +365,7 @@ function baseMiddleware(compiler, { formidableOptions = {}, bodyParserOptions =
|
|
|
358
365
|
logger.debug(`${picocolors.default.magenta("DEBUG")} ${picocolors.default.underline(pathname)} matches: [ ${mockUrls.map((m) => m === _mockUrl ? picocolors.default.underline(picocolors.default.bold(m)) : picocolors.default.dim(m)).join(", ")} ]\n`);
|
|
359
366
|
if (body) {
|
|
360
367
|
try {
|
|
361
|
-
const content =
|
|
368
|
+
const content = require_dist.isFunction(body) ? await body(request) : body;
|
|
362
369
|
await realDelay(startTime, delay);
|
|
363
370
|
sendData(response, content, type);
|
|
364
371
|
} catch (e) {
|
|
@@ -385,12 +392,12 @@ function baseMiddleware(compiler, { formidableOptions = {}, bodyParserOptions =
|
|
|
385
392
|
function fineMock(mockList, logger, { pathname, method, request }) {
|
|
386
393
|
return mockList.find((mock) => {
|
|
387
394
|
if (!pathname || !mock || !mock.url || mock.ws === true) return false;
|
|
388
|
-
const methods = mock.method ?
|
|
395
|
+
const methods = mock.method ? require_dist.isArray(mock.method) ? mock.method : [mock.method] : ["GET", "POST"];
|
|
389
396
|
if (!methods.includes(method)) return false;
|
|
390
397
|
const hasMock = (0, path_to_regexp.pathToRegexp)(mock.url).test(pathname);
|
|
391
398
|
if (hasMock && mock.validator) {
|
|
392
399
|
const params = parseParams(mock.url, pathname);
|
|
393
|
-
if (
|
|
400
|
+
if (require_dist.isFunction(mock.validator)) return mock.validator({
|
|
394
401
|
params,
|
|
395
402
|
...request
|
|
396
403
|
});
|
|
@@ -422,7 +429,7 @@ async function provideHeaders(req, res, mock, logger) {
|
|
|
422
429
|
if (filepath) res.setHeader("X-File-Path", filepath);
|
|
423
430
|
if (!headers) return;
|
|
424
431
|
try {
|
|
425
|
-
const raw =
|
|
432
|
+
const raw = require_dist.isFunction(headers) ? await headers(req) : headers;
|
|
426
433
|
Object.keys(raw).forEach((key) => {
|
|
427
434
|
res.setHeader(key, raw[key]);
|
|
428
435
|
});
|
|
@@ -435,10 +442,10 @@ async function provideCookies(req, res, mock, logger) {
|
|
|
435
442
|
const filepath = mock.__filepath__;
|
|
436
443
|
if (!cookies$1) return;
|
|
437
444
|
try {
|
|
438
|
-
const raw =
|
|
445
|
+
const raw = require_dist.isFunction(cookies$1) ? await cookies$1(req) : cookies$1;
|
|
439
446
|
Object.keys(raw).forEach((key) => {
|
|
440
447
|
const cookie = raw[key];
|
|
441
|
-
if (
|
|
448
|
+
if (require_dist.isArray(cookie)) {
|
|
442
449
|
const [value, options] = cookie;
|
|
443
450
|
res.setCookie(key, value, options);
|
|
444
451
|
} else res.setCookie(key, cookie);
|
|
@@ -456,13 +463,13 @@ function sendData(res, raw, type) {
|
|
|
456
463
|
}
|
|
457
464
|
}
|
|
458
465
|
async function realDelay(startTime, delay) {
|
|
459
|
-
if (!delay || typeof delay === "number" && delay <= 0 ||
|
|
466
|
+
if (!delay || typeof delay === "number" && delay <= 0 || require_dist.isArray(delay) && delay.length !== 2) return;
|
|
460
467
|
let realDelay$1 = 0;
|
|
461
|
-
if (
|
|
468
|
+
if (require_dist.isArray(delay)) {
|
|
462
469
|
const [min, max] = delay;
|
|
463
|
-
realDelay$1 =
|
|
464
|
-
} else realDelay$1 = delay - (
|
|
465
|
-
if (realDelay$1 > 0) await
|
|
470
|
+
realDelay$1 = require_dist.random(min, max);
|
|
471
|
+
} else realDelay$1 = delay - (require_dist.timestamp() - startTime);
|
|
472
|
+
if (realDelay$1 > 0) await require_dist.sleep(realDelay$1);
|
|
466
473
|
}
|
|
467
474
|
function getHTTPStatusText(status) {
|
|
468
475
|
return http_status.default[status] || "Unknown";
|
|
@@ -472,7 +479,7 @@ function requestLog(request, filepath) {
|
|
|
472
479
|
let { pathname } = new URL(url, "http://example.com");
|
|
473
480
|
pathname = picocolors.default.green(decodeURIComponent(pathname));
|
|
474
481
|
const format = (prefix, data) => {
|
|
475
|
-
return !data ||
|
|
482
|
+
return !data || require_dist.isEmptyObject(data) ? "" : ` ${picocolors.default.gray(`${prefix}:`)}${JSON.stringify(data)}`;
|
|
476
483
|
};
|
|
477
484
|
const ms = picocolors.default.magenta(picocolors.default.bold(method));
|
|
478
485
|
const qs = format("query", query);
|
|
@@ -486,7 +493,7 @@ function requestLog(request, filepath) {
|
|
|
486
493
|
//#region src/core/transform.ts
|
|
487
494
|
function transformRawData(raw, __filepath__) {
|
|
488
495
|
let mockConfig;
|
|
489
|
-
if (
|
|
496
|
+
if (require_dist.isArray(raw)) mockConfig = raw.map((item) => ({
|
|
490
497
|
...item,
|
|
491
498
|
__filepath__
|
|
492
499
|
}));
|
|
@@ -498,7 +505,7 @@ function transformRawData(raw, __filepath__) {
|
|
|
498
505
|
mockConfig = [];
|
|
499
506
|
Object.keys(raw).forEach((key) => {
|
|
500
507
|
const data = raw[key];
|
|
501
|
-
if (
|
|
508
|
+
if (require_dist.isArray(data)) mockConfig.push(...data.map((item) => ({
|
|
502
509
|
...item,
|
|
503
510
|
__filepath__
|
|
504
511
|
})));
|
|
@@ -512,9 +519,9 @@ function transformRawData(raw, __filepath__) {
|
|
|
512
519
|
}
|
|
513
520
|
function transformMockData(mockList) {
|
|
514
521
|
const list = [];
|
|
515
|
-
for (const [, handle] of mockList.entries()) if (handle) list.push(...
|
|
522
|
+
for (const [, handle] of mockList.entries()) if (handle) list.push(...require_dist.toArray(handle));
|
|
516
523
|
const mocks = {};
|
|
517
|
-
list.filter((mock) =>
|
|
524
|
+
list.filter((mock) => require_dist.isPlainObject(mock) && mock.enabled !== false && mock.url).forEach((mock) => {
|
|
518
525
|
const { pathname, query } = urlParse(mock.url);
|
|
519
526
|
const list$1 = mocks[pathname] ??= [];
|
|
520
527
|
const current = {
|
|
@@ -523,7 +530,7 @@ function transformMockData(mockList) {
|
|
|
523
530
|
};
|
|
524
531
|
if (current.ws !== true) {
|
|
525
532
|
const validator = current.validator;
|
|
526
|
-
if (!
|
|
533
|
+
if (!require_dist.isEmptyObject(query)) if (require_dist.isFunction(validator)) current.validator = function(request) {
|
|
527
534
|
return isObjectSubset(request.query, query) && validator(request);
|
|
528
535
|
};
|
|
529
536
|
else if (validator) {
|
|
@@ -542,11 +549,11 @@ function transformMockData(mockList) {
|
|
|
542
549
|
return mocks;
|
|
543
550
|
}
|
|
544
551
|
function sortByValidator(mocks) {
|
|
545
|
-
return
|
|
552
|
+
return require_dist.sortBy(mocks, (item) => {
|
|
546
553
|
if (item.ws === true) return 0;
|
|
547
554
|
const { validator } = item;
|
|
548
|
-
if (!validator ||
|
|
549
|
-
if (
|
|
555
|
+
if (!validator || require_dist.isEmptyObject(validator)) return 2;
|
|
556
|
+
if (require_dist.isFunction(validator)) return 0;
|
|
550
557
|
const count = Object.keys(validator).reduce((prev, key) => prev + keysCount(validator[key]), 0);
|
|
551
558
|
return 1 / count;
|
|
552
559
|
});
|
|
@@ -562,12 +569,12 @@ function keysCount(obj) {
|
|
|
562
569
|
* mock websocket
|
|
563
570
|
*/
|
|
564
571
|
function mockWebSocket(compiler, server, { wsProxies: proxies, cookiesOptions, logger }) {
|
|
565
|
-
const hmrMap = new Map();
|
|
566
|
-
const poolMap = new Map();
|
|
567
|
-
const wssContextMap = new WeakMap();
|
|
572
|
+
const hmrMap = /* @__PURE__ */ new Map();
|
|
573
|
+
const poolMap = /* @__PURE__ */ new Map();
|
|
574
|
+
const wssContextMap = /* @__PURE__ */ new WeakMap();
|
|
568
575
|
const getWssMap = (mockUrl) => {
|
|
569
576
|
let wssMap = poolMap.get(mockUrl);
|
|
570
|
-
if (!wssMap) poolMap.set(mockUrl, wssMap = new Map());
|
|
577
|
+
if (!wssMap) poolMap.set(mockUrl, wssMap = /* @__PURE__ */ new Map());
|
|
571
578
|
return wssMap;
|
|
572
579
|
};
|
|
573
580
|
const getWss = (wssMap, pathname) => {
|
|
@@ -577,7 +584,7 @@ function mockWebSocket(compiler, server, { wsProxies: proxies, cookiesOptions, l
|
|
|
577
584
|
};
|
|
578
585
|
const addHmr = (filepath, mockUrl) => {
|
|
579
586
|
let urlList = hmrMap.get(filepath);
|
|
580
|
-
if (!urlList) hmrMap.set(filepath, urlList = new Set());
|
|
587
|
+
if (!urlList) hmrMap.set(filepath, urlList = /* @__PURE__ */ new Set());
|
|
581
588
|
urlList.add(mockUrl);
|
|
582
589
|
};
|
|
583
590
|
const setupWss = (wssMap, wss, mock, context, pathname, filepath) => {
|
|
@@ -690,12 +697,12 @@ const logLevels = {
|
|
|
690
697
|
function createLogger(prefix, defaultLevel = "info") {
|
|
691
698
|
prefix = `[${prefix}]`;
|
|
692
699
|
function output(type, msg, level) {
|
|
693
|
-
level =
|
|
700
|
+
level = require_dist.isBoolean(level) ? level ? defaultLevel : "error" : level;
|
|
694
701
|
const thresh = logLevels[level];
|
|
695
702
|
if (thresh >= logLevels[type]) {
|
|
696
703
|
const method = type === "info" || type === "debug" ? "log" : type;
|
|
697
704
|
const tag = type === "debug" ? picocolors.default.magenta(picocolors.default.bold(prefix)) : type === "info" ? picocolors.default.cyan(picocolors.default.bold(prefix)) : type === "warn" ? picocolors.default.yellow(picocolors.default.bold(prefix)) : picocolors.default.red(picocolors.default.bold(prefix));
|
|
698
|
-
const format = `${picocolors.default.dim(new Date().toLocaleTimeString())} ${tag} ${msg}`;
|
|
705
|
+
const format = `${picocolors.default.dim((/* @__PURE__ */ new Date()).toLocaleTimeString())} ${tag} ${msg}`;
|
|
699
706
|
console[method](format);
|
|
700
707
|
}
|
|
701
708
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isArray, isBoolean, isEmptyObject, isFunction, isPlainObject, isString, random, sleep, sortBy, timestamp, toArray, uniq } from "
|
|
1
|
+
import { isArray, isBoolean, isEmptyObject, isFunction, isPlainObject, isString, random, sleep, sortBy, timestamp, toArray, uniq } from "./dist-CAA1v47s.js";
|
|
2
2
|
import pc from "picocolors";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
@@ -184,6 +184,12 @@ function twoPartMatch(rules) {
|
|
|
184
184
|
|
|
185
185
|
//#endregion
|
|
186
186
|
//#region src/core/parseReqBody.ts
|
|
187
|
+
const DEFAULT_FORMIDABLE_OPTIONS = {
|
|
188
|
+
keepExtensions: true,
|
|
189
|
+
filename(name, ext, part) {
|
|
190
|
+
return part?.originalFilename || `${name}.${Date.now()}${ext ? `.${ext}` : ""}`;
|
|
191
|
+
}
|
|
192
|
+
};
|
|
187
193
|
async function parseReqBody(req, formidableOptions, bodyParserOptions = {}) {
|
|
188
194
|
const method = req.method.toUpperCase();
|
|
189
195
|
if (["HEAD", "OPTIONS"].includes(method)) return void 0;
|
|
@@ -209,7 +215,10 @@ async function parseReqBody(req, formidableOptions, bodyParserOptions = {}) {
|
|
|
209
215
|
return void 0;
|
|
210
216
|
}
|
|
211
217
|
async function parseMultipart(req, options) {
|
|
212
|
-
const form = formidable(
|
|
218
|
+
const form = formidable({
|
|
219
|
+
...DEFAULT_FORMIDABLE_OPTIONS,
|
|
220
|
+
...options
|
|
221
|
+
});
|
|
213
222
|
return new Promise((resolve, reject) => {
|
|
214
223
|
form.parse(req, (error, fields, files) => {
|
|
215
224
|
if (error) {
|
|
@@ -226,7 +235,7 @@ async function parseMultipart(req, options) {
|
|
|
226
235
|
|
|
227
236
|
//#endregion
|
|
228
237
|
//#region src/core/requestRecovery.ts
|
|
229
|
-
const cache = new WeakMap();
|
|
238
|
+
const cache = /* @__PURE__ */ new WeakMap();
|
|
230
239
|
function collectRequest(req) {
|
|
231
240
|
const chunks = [];
|
|
232
241
|
req.addListener("data", (chunk) => {
|
|
@@ -288,7 +297,7 @@ function isObjectSubset(source, target) {
|
|
|
288
297
|
}
|
|
289
298
|
function isIncluded(source, target) {
|
|
290
299
|
if (isArray(source) && isArray(target)) {
|
|
291
|
-
const seen = new Set();
|
|
300
|
+
const seen = /* @__PURE__ */ new Set();
|
|
292
301
|
return target.every((ti) => source.some((si, i) => {
|
|
293
302
|
if (seen.has(i)) return false;
|
|
294
303
|
const included = isIncluded(si, ti);
|
|
@@ -560,12 +569,12 @@ function keysCount(obj) {
|
|
|
560
569
|
* mock websocket
|
|
561
570
|
*/
|
|
562
571
|
function mockWebSocket(compiler, server, { wsProxies: proxies, cookiesOptions, logger }) {
|
|
563
|
-
const hmrMap = new Map();
|
|
564
|
-
const poolMap = new Map();
|
|
565
|
-
const wssContextMap = new WeakMap();
|
|
572
|
+
const hmrMap = /* @__PURE__ */ new Map();
|
|
573
|
+
const poolMap = /* @__PURE__ */ new Map();
|
|
574
|
+
const wssContextMap = /* @__PURE__ */ new WeakMap();
|
|
566
575
|
const getWssMap = (mockUrl) => {
|
|
567
576
|
let wssMap = poolMap.get(mockUrl);
|
|
568
|
-
if (!wssMap) poolMap.set(mockUrl, wssMap = new Map());
|
|
577
|
+
if (!wssMap) poolMap.set(mockUrl, wssMap = /* @__PURE__ */ new Map());
|
|
569
578
|
return wssMap;
|
|
570
579
|
};
|
|
571
580
|
const getWss = (wssMap, pathname) => {
|
|
@@ -575,7 +584,7 @@ function mockWebSocket(compiler, server, { wsProxies: proxies, cookiesOptions, l
|
|
|
575
584
|
};
|
|
576
585
|
const addHmr = (filepath, mockUrl) => {
|
|
577
586
|
let urlList = hmrMap.get(filepath);
|
|
578
|
-
if (!urlList) hmrMap.set(filepath, urlList = new Set());
|
|
587
|
+
if (!urlList) hmrMap.set(filepath, urlList = /* @__PURE__ */ new Set());
|
|
579
588
|
urlList.add(mockUrl);
|
|
580
589
|
};
|
|
581
590
|
const setupWss = (wssMap, wss, mock, context, pathname, filepath) => {
|
|
@@ -693,7 +702,7 @@ function createLogger(prefix, defaultLevel = "info") {
|
|
|
693
702
|
if (thresh >= logLevels[type]) {
|
|
694
703
|
const method = type === "info" || type === "debug" ? "log" : type;
|
|
695
704
|
const tag = type === "debug" ? pc.magenta(pc.bold(prefix)) : type === "info" ? pc.cyan(pc.bold(prefix)) : type === "warn" ? pc.yellow(pc.bold(prefix)) : pc.red(pc.bold(prefix));
|
|
696
|
-
const format = `${pc.dim(new Date().toLocaleTimeString())} ${tag} ${msg}`;
|
|
705
|
+
const format = `${pc.dim((/* @__PURE__ */ new Date()).toLocaleTimeString())} ${tag} ${msg}`;
|
|
697
706
|
console[method](format);
|
|
698
707
|
}
|
|
699
708
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LogLevel, MockHttpItem, MockOptions, MockServerPluginOptions, MockWebsocketItem, ServerBuildOption } from "./types-
|
|
1
|
+
import { LogLevel, MockHttpItem, MockOptions, MockServerPluginOptions, MockWebsocketItem, ServerBuildOption } from "./types-BbbTJG0b.js";
|
|
2
2
|
import { CorsOptions } from "cors";
|
|
3
3
|
import EventEmitter from "node:events";
|
|
4
4
|
import { FSWatcher } from "chokidar";
|
|
@@ -15,7 +15,6 @@ interface Logger {
|
|
|
15
15
|
}
|
|
16
16
|
declare const logLevels: Record<LogLevel, number>;
|
|
17
17
|
declare function createLogger(prefix: string, defaultLevel?: LogLevel): Logger;
|
|
18
|
-
|
|
19
18
|
//#endregion
|
|
20
19
|
//#region src/core/resolvePluginOptions.d.ts
|
|
21
20
|
type ResolvedMockServerPluginOptions = Required<Omit<MockServerPluginOptions, "build" | "cors" | "wsPrefix" | "prefix">> & {
|
|
@@ -28,7 +27,6 @@ type ResolvedMockServerPluginOptions = Required<Omit<MockServerPluginOptions, "b
|
|
|
28
27
|
build: false | ServerBuildOption;
|
|
29
28
|
cors: false | CorsOptions;
|
|
30
29
|
};
|
|
31
|
-
|
|
32
30
|
//#endregion
|
|
33
31
|
//#region src/core/mockCompiler.d.ts
|
|
34
32
|
/**
|
|
@@ -57,7 +55,6 @@ declare class MockCompiler extends EventEmitter {
|
|
|
57
55
|
private updateModuleDeps;
|
|
58
56
|
private loadMock;
|
|
59
57
|
}
|
|
60
|
-
|
|
61
58
|
//#endregion
|
|
62
59
|
//#region src/core/baseMiddleware.d.ts
|
|
63
60
|
interface BaseMiddlewareOptions {
|
|
@@ -76,14 +73,12 @@ declare function baseMiddleware(compiler: MockCompiler, {
|
|
|
76
73
|
logger,
|
|
77
74
|
priority
|
|
78
75
|
}: BaseMiddlewareOptions): Connect.NextHandleFunction;
|
|
79
|
-
|
|
80
76
|
//#endregion
|
|
81
77
|
//#region src/core/transform.d.ts
|
|
82
78
|
type MockRawData = MockOptions | MockHttpItem | MockWebsocketItem | Record<string, MockOptions | MockHttpItem | MockWebsocketItem>;
|
|
83
79
|
declare function transformRawData(raw: MockRawData, __filepath__: string): MockOptions | MockHttpItem | MockWebsocketItem;
|
|
84
80
|
declare function transformMockData(mockList: Map<string, MockHttpItem | MockWebsocketItem | MockOptions> | (MockHttpItem | MockWebsocketItem | MockOptions)[]): Record<string, MockOptions>;
|
|
85
81
|
declare function sortByValidator(mocks: MockOptions): (MockHttpItem | MockWebsocketItem)[];
|
|
86
|
-
|
|
87
82
|
//#endregion
|
|
88
83
|
//#region src/core/ws.d.ts
|
|
89
84
|
/**
|
|
@@ -94,6 +89,5 @@ declare function mockWebSocket(compiler: MockCompiler, server: Server | Http2Sec
|
|
|
94
89
|
cookiesOptions,
|
|
95
90
|
logger
|
|
96
91
|
}: ResolvedMockServerPluginOptions): void;
|
|
97
|
-
|
|
98
92
|
//#endregion
|
|
99
|
-
export { BaseMiddlewareOptions, Logger, baseMiddleware
|
|
93
|
+
export { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData };
|
package/dist/server.cjs
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
require('./dist-DrfpZ4UT.cjs');
|
|
2
|
+
const require_server = require('./server-BwOfV_62.cjs');
|
|
2
3
|
|
|
3
|
-
exports.baseMiddleware = require_server.baseMiddleware
|
|
4
|
-
exports.createLogger = require_server.createLogger
|
|
5
|
-
exports.logLevels = require_server.logLevels
|
|
6
|
-
exports.mockWebSocket = require_server.mockWebSocket
|
|
7
|
-
exports.sortByValidator = require_server.sortByValidator
|
|
8
|
-
exports.transformMockData = require_server.transformMockData
|
|
9
|
-
exports.transformRawData = require_server.transformRawData
|
|
4
|
+
exports.baseMiddleware = require_server.baseMiddleware;
|
|
5
|
+
exports.createLogger = require_server.createLogger;
|
|
6
|
+
exports.logLevels = require_server.logLevels;
|
|
7
|
+
exports.mockWebSocket = require_server.mockWebSocket;
|
|
8
|
+
exports.sortByValidator = require_server.sortByValidator;
|
|
9
|
+
exports.transformMockData = require_server.transformMockData;
|
|
10
|
+
exports.transformRawData = require_server.transformRawData;
|
package/dist/server.d.cts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import "./types-
|
|
2
|
-
import { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData } from "./server-
|
|
1
|
+
import "./types-DpbHkRjL.cjs";
|
|
2
|
+
import { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData } from "./server-B5Ua2cmP.cjs";
|
|
3
3
|
export { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData };
|
package/dist/server.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import "./types-
|
|
2
|
-
import { BaseMiddlewareOptions, Logger, baseMiddleware
|
|
1
|
+
import "./types-BbbTJG0b.js";
|
|
2
|
+
import { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData } from "./server-DgmHgcvl.js";
|
|
3
3
|
export { BaseMiddlewareOptions, Logger, baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData };
|
package/dist/server.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import "./dist-CAA1v47s.js";
|
|
2
|
+
import { baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData } from "./server-C-u7jwot.js";
|
|
2
3
|
|
|
3
4
|
export { baseMiddleware, createLogger, logLevels, mockWebSocket, sortByValidator, transformMockData, transformRawData };
|
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import Cookies from "cookies";
|
|
1
|
+
import { Readable } from "node:stream";
|
|
3
2
|
import { CorsOptions } from "cors";
|
|
4
|
-
import formidable from "formidable";
|
|
5
3
|
import { Buffer } from "node:buffer";
|
|
4
|
+
import Cookies from "cookies";
|
|
5
|
+
import { Options } from "co-body";
|
|
6
|
+
import formidable from "formidable";
|
|
7
|
+
import { WebSocketServer } from "ws";
|
|
6
8
|
import http from "node:http";
|
|
7
|
-
import { Readable } from "node:stream";
|
|
8
9
|
import { Connect } from "vite";
|
|
9
|
-
import { WebSocketServer } from "ws";
|
|
10
10
|
|
|
11
11
|
//#region src/types.d.ts
|
|
12
|
-
|
|
13
|
-
* Configure plugin
|
|
14
|
-
*
|
|
15
|
-
* 插件配置项
|
|
16
|
-
*/
|
|
12
|
+
|
|
17
13
|
/**
|
|
18
14
|
* Configure plugin
|
|
19
15
|
*
|
|
@@ -572,5 +568,6 @@ interface WebSocketSetupContext {
|
|
|
572
568
|
type MockOptions = (MockHttpItem | MockWebsocketItem)[];
|
|
573
569
|
type FormidableFile = formidable.File | formidable.File[];
|
|
574
570
|
type LogType = "info" | "warn" | "error" | "debug";
|
|
575
|
-
type LogLevel = LogType | "silent";
|
|
571
|
+
type LogLevel = LogType | "silent";
|
|
572
|
+
//#endregion
|
|
576
573
|
export { FormidableFile, LogLevel, MockHttpItem, MockOptions, MockRequest, MockServerPluginOptions, MockWebsocketItem, ServerBuildOption };
|
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
import { Readable } from "node:stream";
|
|
2
|
-
import { CorsOptions } from "cors";
|
|
3
|
-
import { Buffer } from "node:buffer";
|
|
4
|
-
import Cookies from "cookies";
|
|
5
1
|
import { Options } from "co-body";
|
|
2
|
+
import Cookies from "cookies";
|
|
3
|
+
import { CorsOptions } from "cors";
|
|
6
4
|
import formidable from "formidable";
|
|
7
|
-
import {
|
|
5
|
+
import { Buffer } from "node:buffer";
|
|
8
6
|
import http from "node:http";
|
|
7
|
+
import { Readable } from "node:stream";
|
|
9
8
|
import { Connect } from "vite";
|
|
9
|
+
import { WebSocketServer } from "ws";
|
|
10
10
|
|
|
11
11
|
//#region src/types.d.ts
|
|
12
|
-
|
|
13
|
-
* Configure plugin
|
|
14
|
-
*
|
|
15
|
-
* 插件配置项
|
|
16
|
-
*/
|
|
12
|
+
|
|
17
13
|
/**
|
|
18
14
|
* Configure plugin
|
|
19
15
|
*
|
|
@@ -572,5 +568,6 @@ interface WebSocketSetupContext {
|
|
|
572
568
|
type MockOptions = (MockHttpItem | MockWebsocketItem)[];
|
|
573
569
|
type FormidableFile = formidable.File | formidable.File[];
|
|
574
570
|
type LogType = "info" | "warn" | "error" | "debug";
|
|
575
|
-
type LogLevel = LogType | "silent";
|
|
571
|
+
type LogLevel = LogType | "silent";
|
|
572
|
+
//#endregion
|
|
576
573
|
export { FormidableFile, LogLevel, MockHttpItem, MockOptions, MockRequest, MockServerPluginOptions, MockWebsocketItem, ServerBuildOption };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vite-plugin-mock-dev-server",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.9.1",
|
|
5
5
|
"author": "pengzhanbo <q942450674@outlook.com> (https://github.com/pengzhanbo)",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://vite-plugin-mock-dev-server.netlify.app",
|
|
@@ -68,15 +68,14 @@
|
|
|
68
68
|
}
|
|
69
69
|
},
|
|
70
70
|
"dependencies": {
|
|
71
|
-
"@
|
|
72
|
-
"@rollup/pluginutils": "^5.1.4",
|
|
71
|
+
"@rollup/pluginutils": "^5.2.0",
|
|
73
72
|
"chokidar": "3.6.0",
|
|
74
73
|
"co-body": "^6.2.0",
|
|
75
74
|
"cookies": "^0.9.1",
|
|
76
75
|
"cors": "^2.8.5",
|
|
77
|
-
"debug": "^4.4.
|
|
76
|
+
"debug": "^4.4.1",
|
|
78
77
|
"fast-glob": "^3.3.3",
|
|
79
|
-
"formidable": "
|
|
78
|
+
"formidable": "3.5.4",
|
|
80
79
|
"http-status": "^2.1.0",
|
|
81
80
|
"is-core-module": "^2.16.1",
|
|
82
81
|
"json5": "^2.2.3",
|
|
@@ -86,7 +85,8 @@
|
|
|
86
85
|
"ws": "^8.18.2"
|
|
87
86
|
},
|
|
88
87
|
"devDependencies": {
|
|
89
|
-
"
|
|
88
|
+
"@pengzhanbo/utils": "^2.1.0",
|
|
89
|
+
"esbuild": "^0.25.5",
|
|
90
90
|
"vite": "^6.3.5"
|
|
91
91
|
},
|
|
92
92
|
"publishConfig": {
|
package/dist/chunk-BCwAaXi7.cjs
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
//#region rolldown:runtime
|
|
3
|
-
var __create = Object.create;
|
|
4
|
-
var __defProp = Object.defineProperty;
|
|
5
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
11
|
-
key = keys[i];
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
13
|
-
get: ((k) => from[k]).bind(null, key),
|
|
14
|
-
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
20
|
-
value: mod,
|
|
21
|
-
enumerable: true
|
|
22
|
-
}) : target, mod));
|
|
23
|
-
|
|
24
|
-
//#endregion
|
|
25
|
-
|
|
26
|
-
Object.defineProperty(exports, '__toESM', {
|
|
27
|
-
enumerable: true,
|
|
28
|
-
get: function () {
|
|
29
|
-
return __toESM;
|
|
30
|
-
}
|
|
31
|
-
});
|