vite-plugin-mock-dev-server 1.1.3 → 1.1.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/README.md +7 -6
- package/README.zh-CN.md +6 -5
- package/dist/index.cjs +21 -12
- package/dist/index.d.ts +3 -4
- package/dist/index.js +21 -12
- package/package.json +5 -7
package/README.md
CHANGED
|
@@ -30,18 +30,19 @@
|
|
|
30
30
|
- 🧲 Not injection-based, non-intrusive to client code.
|
|
31
31
|
- 💡 ESModule/commonjs.
|
|
32
32
|
- 🦾 Typescript.
|
|
33
|
+
- 🔥 HMR
|
|
33
34
|
- 🏷 Support `json` / `json5`.
|
|
34
35
|
- 📦 Auto import mock file.
|
|
35
36
|
- 🎨 Support any lib,like `mockjs`,or not use it.
|
|
36
37
|
- 📥 Path rule matching, request parameter matching.
|
|
37
38
|
- ⚙️ Support Enabled/Disabled any one of api mock
|
|
38
|
-
-
|
|
39
|
+
- 📀 Supports response body content type such as `text/json/buffer/stream`.
|
|
39
40
|
- ⚖️ Use `server.proxy`
|
|
40
41
|
- 🍕 Support `viteConfig.define` in mock file.
|
|
41
|
-
- ⚓️ Support `resolve.alias` in mock file.
|
|
42
|
+
- ⚓️ Support `viteConfig.resolve.alias` in mock file.
|
|
43
|
+
- 🌈 Support `vite preview` mode.
|
|
42
44
|
- 📤 Support `multipart` content-type,mock upload file.
|
|
43
|
-
-
|
|
44
|
-
- 🌈 Support `vite preview` mode
|
|
45
|
+
- 📥 Support mock download file.
|
|
45
46
|
- 🗂 Support building small independent deployable mock services.
|
|
46
47
|
|
|
47
48
|
|
|
@@ -513,7 +514,7 @@ export default defineMock({
|
|
|
513
514
|
```ts
|
|
514
515
|
export default defineMock({
|
|
515
516
|
url: '/api/test',
|
|
516
|
-
status:
|
|
517
|
+
status: 502,
|
|
517
518
|
statusText: 'Bad Gateway'
|
|
518
519
|
})
|
|
519
520
|
```
|
|
@@ -561,7 +562,7 @@ export default defineMock({
|
|
|
561
562
|
url: '/api/download',
|
|
562
563
|
// When you are unsure of the type, you can pass in the file name for internal parsing by the plugin.
|
|
563
564
|
type: 'my-app.dmg',
|
|
564
|
-
body: createReadStream('./my-app.dmg')
|
|
565
|
+
body: () => createReadStream('./my-app.dmg')
|
|
565
566
|
})
|
|
566
567
|
```
|
|
567
568
|
```html
|
package/README.zh-CN.md
CHANGED
|
@@ -31,18 +31,19 @@
|
|
|
31
31
|
- 🧲 非注入式,对客户端代码无侵入
|
|
32
32
|
- 💡 ESModule/commonjs
|
|
33
33
|
- 🦾 Typescript
|
|
34
|
+
- 🔥 热更新
|
|
34
35
|
- 🏷 支持 `json` / `json5` 编写 mock 数据
|
|
35
36
|
- 📦 自动加载 mock 文件
|
|
36
37
|
- 🎨 可选择你喜欢的任意用于生成mock数据库,如 `mockjs`,或者不使用其他库
|
|
37
38
|
- 📥 路径规则匹配,请求参数匹配
|
|
38
39
|
- ⚙️ 随意开启或关闭对某个接口的 mock配置
|
|
39
|
-
-
|
|
40
|
+
- - 📀 支持多种响应体数据类型,包括 `text/json/buffer/stream`.
|
|
40
41
|
- ⚖️ 使用 `server.proxy` 配置
|
|
41
42
|
- 🍕 支持在 mock文件中使用 `viteConfig.define`配置字段
|
|
42
|
-
- ⚓️
|
|
43
|
-
- 📤 支持 multipart 类型,模拟文件上传
|
|
44
|
-
- 🍪 支持 cookies
|
|
43
|
+
- ⚓️ 支持在 mock文件中使用 `viteConfig.resolve.alias` 路径别名
|
|
45
44
|
- 🌈 支持 `vite preview` 模式
|
|
45
|
+
- 📤 支持 multipart 类型,模拟文件上传
|
|
46
|
+
- 📥 支持模拟文件下载
|
|
46
47
|
- 🗂 支持构建可独立部署的小型mock服务
|
|
47
48
|
|
|
48
49
|
|
|
@@ -557,7 +558,7 @@ export default defineMock({
|
|
|
557
558
|
url: '/api/download',
|
|
558
559
|
// 当你不确定类型,可传入文件名由插件内部进行解析
|
|
559
560
|
type: 'my-app.dmg',
|
|
560
|
-
body: createReadStream('./my-app.dmg')
|
|
561
|
+
body: () => createReadStream('./my-app.dmg')
|
|
561
562
|
})
|
|
562
563
|
```
|
|
563
564
|
```html
|
package/dist/index.cjs
CHANGED
|
@@ -54,7 +54,7 @@ var import_vite = require("vite");
|
|
|
54
54
|
|
|
55
55
|
// package.json
|
|
56
56
|
var name = "vite-plugin-mock-dev-server";
|
|
57
|
-
var version = "1.1.
|
|
57
|
+
var version = "1.1.4";
|
|
58
58
|
|
|
59
59
|
// src/esbuildPlugin.ts
|
|
60
60
|
var import_promises = __toESM(require("fs/promises"), 1);
|
|
@@ -444,24 +444,30 @@ function baseMiddleware(mockLoader, { formidableOptions = {}, proxies, cookiesOp
|
|
|
444
444
|
return next();
|
|
445
445
|
const { query: refererQuery } = (0, import_node_url2.parse)(req.headers.referer || "", true);
|
|
446
446
|
const reqBody = await parseReqBody(req, formidableOptions);
|
|
447
|
+
const cookies = new import_cookies.default(req, res, cookiesOptions);
|
|
448
|
+
const getCookie = cookies.get.bind(cookies);
|
|
447
449
|
const method = req.method.toUpperCase();
|
|
448
|
-
const mock = fineMock(mockData[mockUrl],
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
450
|
+
const mock = fineMock(mockData[mockUrl], {
|
|
451
|
+
pathname,
|
|
452
|
+
method,
|
|
453
|
+
request: {
|
|
454
|
+
query,
|
|
455
|
+
refererQuery,
|
|
456
|
+
body: reqBody,
|
|
457
|
+
headers: req.headers,
|
|
458
|
+
getCookie
|
|
459
|
+
}
|
|
453
460
|
});
|
|
454
461
|
if (!mock)
|
|
455
462
|
return next();
|
|
456
463
|
debug("middleware: ", method, pathname);
|
|
457
|
-
const cookies = new import_cookies.default(req, res, cookiesOptions);
|
|
458
464
|
const request = req;
|
|
459
465
|
const response = res;
|
|
460
466
|
request.body = reqBody;
|
|
461
467
|
request.query = query;
|
|
462
468
|
request.refererQuery = refererQuery;
|
|
463
469
|
request.params = parseParams(mock.url, pathname);
|
|
464
|
-
request.getCookie =
|
|
470
|
+
request.getCookie = getCookie;
|
|
465
471
|
response.setCookie = cookies.set.bind(cookies);
|
|
466
472
|
const {
|
|
467
473
|
body,
|
|
@@ -502,7 +508,11 @@ function baseMiddleware(mockLoader, { formidableOptions = {}, proxies, cookiesOp
|
|
|
502
508
|
res.end("");
|
|
503
509
|
};
|
|
504
510
|
}
|
|
505
|
-
function fineMock(mockList,
|
|
511
|
+
function fineMock(mockList, {
|
|
512
|
+
pathname,
|
|
513
|
+
method,
|
|
514
|
+
request
|
|
515
|
+
}) {
|
|
506
516
|
return mockList.find((mock) => {
|
|
507
517
|
if (!pathname || !mock || !mock.url)
|
|
508
518
|
return false;
|
|
@@ -512,11 +522,10 @@ function fineMock(mockList, pathname, method, request) {
|
|
|
512
522
|
const hasMock = (0, import_path_to_regexp2.pathToRegexp)(mock.url).test(pathname);
|
|
513
523
|
if (hasMock && mock.validator) {
|
|
514
524
|
const params = parseParams(mock.url, pathname);
|
|
515
|
-
const extraRequest = { params, ...request };
|
|
516
525
|
if (isFunction(mock.validator)) {
|
|
517
|
-
return mock.validator(
|
|
526
|
+
return mock.validator({ params, ...request });
|
|
518
527
|
} else {
|
|
519
|
-
return validate(
|
|
528
|
+
return validate({ params, ...request }, mock.validator);
|
|
520
529
|
}
|
|
521
530
|
}
|
|
522
531
|
return hasMock;
|
package/dist/index.d.ts
CHANGED
|
@@ -111,13 +111,12 @@ interface ExtraRequest {
|
|
|
111
111
|
* 请求体中 headers
|
|
112
112
|
*/
|
|
113
113
|
headers: Headers;
|
|
114
|
-
}
|
|
115
|
-
type MockRequest = Connect.IncomingMessage & ExtraRequest & {
|
|
116
114
|
/**
|
|
117
115
|
* @see [cookies](https://github.com/pillarjs/cookies#cookiesgetname--options)
|
|
118
116
|
*/
|
|
119
117
|
getCookie: (name: string, option?: Cookies.GetOption) => string | undefined;
|
|
120
|
-
}
|
|
118
|
+
}
|
|
119
|
+
type MockRequest = Connect.IncomingMessage & ExtraRequest;
|
|
121
120
|
type MockResponse = http.ServerResponse<http.IncomingMessage> & {
|
|
122
121
|
/**
|
|
123
122
|
* @see [cookies](https://github.com/pillarjs/cookies#cookiessetname--values--options)
|
|
@@ -330,7 +329,7 @@ interface MockOptionsItem {
|
|
|
330
329
|
* }
|
|
331
330
|
* ```
|
|
332
331
|
*/
|
|
333
|
-
validator?: Partial<ExtraRequest
|
|
332
|
+
validator?: Partial<Omit<ExtraRequest, 'getCookie'>> | ((request: ExtraRequest) => boolean);
|
|
334
333
|
}
|
|
335
334
|
type MockOptions = MockOptionsItem[];
|
|
336
335
|
type FormidableFile = formidable.File | formidable.File[];
|
package/dist/index.js
CHANGED
|
@@ -9,7 +9,7 @@ import { createFilter, normalizePath } from "vite";
|
|
|
9
9
|
|
|
10
10
|
// package.json
|
|
11
11
|
var name = "vite-plugin-mock-dev-server";
|
|
12
|
-
var version = "1.1.
|
|
12
|
+
var version = "1.1.4";
|
|
13
13
|
|
|
14
14
|
// src/esbuildPlugin.ts
|
|
15
15
|
import fsp from "fs/promises";
|
|
@@ -399,24 +399,30 @@ function baseMiddleware(mockLoader, { formidableOptions = {}, proxies, cookiesOp
|
|
|
399
399
|
return next();
|
|
400
400
|
const { query: refererQuery } = urlParse(req.headers.referer || "", true);
|
|
401
401
|
const reqBody = await parseReqBody(req, formidableOptions);
|
|
402
|
+
const cookies = new Cookies(req, res, cookiesOptions);
|
|
403
|
+
const getCookie = cookies.get.bind(cookies);
|
|
402
404
|
const method = req.method.toUpperCase();
|
|
403
|
-
const mock = fineMock(mockData[mockUrl],
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
405
|
+
const mock = fineMock(mockData[mockUrl], {
|
|
406
|
+
pathname,
|
|
407
|
+
method,
|
|
408
|
+
request: {
|
|
409
|
+
query,
|
|
410
|
+
refererQuery,
|
|
411
|
+
body: reqBody,
|
|
412
|
+
headers: req.headers,
|
|
413
|
+
getCookie
|
|
414
|
+
}
|
|
408
415
|
});
|
|
409
416
|
if (!mock)
|
|
410
417
|
return next();
|
|
411
418
|
debug("middleware: ", method, pathname);
|
|
412
|
-
const cookies = new Cookies(req, res, cookiesOptions);
|
|
413
419
|
const request = req;
|
|
414
420
|
const response = res;
|
|
415
421
|
request.body = reqBody;
|
|
416
422
|
request.query = query;
|
|
417
423
|
request.refererQuery = refererQuery;
|
|
418
424
|
request.params = parseParams(mock.url, pathname);
|
|
419
|
-
request.getCookie =
|
|
425
|
+
request.getCookie = getCookie;
|
|
420
426
|
response.setCookie = cookies.set.bind(cookies);
|
|
421
427
|
const {
|
|
422
428
|
body,
|
|
@@ -457,7 +463,11 @@ function baseMiddleware(mockLoader, { formidableOptions = {}, proxies, cookiesOp
|
|
|
457
463
|
res.end("");
|
|
458
464
|
};
|
|
459
465
|
}
|
|
460
|
-
function fineMock(mockList,
|
|
466
|
+
function fineMock(mockList, {
|
|
467
|
+
pathname,
|
|
468
|
+
method,
|
|
469
|
+
request
|
|
470
|
+
}) {
|
|
461
471
|
return mockList.find((mock) => {
|
|
462
472
|
if (!pathname || !mock || !mock.url)
|
|
463
473
|
return false;
|
|
@@ -467,11 +477,10 @@ function fineMock(mockList, pathname, method, request) {
|
|
|
467
477
|
const hasMock = pathToRegexp(mock.url).test(pathname);
|
|
468
478
|
if (hasMock && mock.validator) {
|
|
469
479
|
const params = parseParams(mock.url, pathname);
|
|
470
|
-
const extraRequest = { params, ...request };
|
|
471
480
|
if (isFunction(mock.validator)) {
|
|
472
|
-
return mock.validator(
|
|
481
|
+
return mock.validator({ params, ...request });
|
|
473
482
|
} else {
|
|
474
|
-
return validate(
|
|
483
|
+
return validate({ params, ...request }, mock.validator);
|
|
475
484
|
}
|
|
476
485
|
}
|
|
477
486
|
return hasMock;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vite-plugin-mock-dev-server",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"vite",
|
|
6
6
|
"plugin",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"co-body": "^6.1.0",
|
|
35
35
|
"cookies": "^0.8.0",
|
|
36
36
|
"debug": "^4.3.4",
|
|
37
|
-
"esbuild": "^0.17.
|
|
37
|
+
"esbuild": "^0.17.18",
|
|
38
38
|
"fast-glob": "^3.2.12",
|
|
39
39
|
"formidable": "^2.1.1",
|
|
40
40
|
"http-status": "^1.6.2",
|
|
@@ -53,17 +53,15 @@
|
|
|
53
53
|
"@types/formidable": "^2.0.5",
|
|
54
54
|
"@types/is-core-module": "^2.2.0",
|
|
55
55
|
"@types/mime-types": "^2.1.1",
|
|
56
|
-
"@types/node": "^18.
|
|
56
|
+
"@types/node": "^18.16.0",
|
|
57
57
|
"bumpp": "^9.1.0",
|
|
58
58
|
"conventional-changelog-cli": "^2.2.2",
|
|
59
59
|
"eslint": "^8.39.0",
|
|
60
60
|
"mockjs": "^1.1.0",
|
|
61
|
-
"prettier": "^2.8.
|
|
61
|
+
"prettier": "^2.8.8",
|
|
62
62
|
"tsup": "^6.7.0",
|
|
63
63
|
"typescript": "^5.0.4",
|
|
64
|
-
"
|
|
65
|
-
"vitepress": "1.0.0-alpha.73",
|
|
66
|
-
"vue": "^3.2.47"
|
|
64
|
+
"vitepress": "1.0.0-alpha.74"
|
|
67
65
|
},
|
|
68
66
|
"peerDependencies": {
|
|
69
67
|
"vite": ">=3.0.0"
|