@fairys/create-mock-data 0.0.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/README.md +8 -0
- package/esm/index.d.ts +60 -0
- package/esm/index.js +54 -0
- package/package.json +31 -0
- package/src/index.ts +94 -0
package/README.md
ADDED
package/esm/index.d.ts
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export interface MockerItem {
|
|
2
|
+
/**该接口允许的 请求方法,默认同时支持 GET 和 POST*/
|
|
3
|
+
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
|
|
4
|
+
/**状态码*/
|
|
5
|
+
status: string;
|
|
6
|
+
delay: number | [number, number];
|
|
7
|
+
/**响应体(可以自定义返回格式)*/
|
|
8
|
+
body: any;
|
|
9
|
+
/**接口地址*/
|
|
10
|
+
url: string;
|
|
11
|
+
/**列表数据条数(仅 list 格式有效)*/
|
|
12
|
+
listCount: number;
|
|
13
|
+
}
|
|
14
|
+
export type DefineMockList = MockerItem[];
|
|
15
|
+
/**创建 Mock 数据
|
|
16
|
+
*/
|
|
17
|
+
export declare function createMockItemData(item: MockerItem): {
|
|
18
|
+
body: any;
|
|
19
|
+
delay: number;
|
|
20
|
+
/**该接口允许的 请求方法,默认同时支持 GET 和 POST*/
|
|
21
|
+
method: "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD" | "OPTIONS";
|
|
22
|
+
/**状态码*/
|
|
23
|
+
status: string;
|
|
24
|
+
/**接口地址*/
|
|
25
|
+
url: string;
|
|
26
|
+
/**列表数据条数(仅 list 格式有效)*/
|
|
27
|
+
listCount: number;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* 创建 Mock 数据
|
|
31
|
+
*/
|
|
32
|
+
export declare function createMockData(mockList: MockerItem[]): {
|
|
33
|
+
body: any;
|
|
34
|
+
delay: number;
|
|
35
|
+
/**该接口允许的 请求方法,默认同时支持 GET 和 POST*/
|
|
36
|
+
method: "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD" | "OPTIONS";
|
|
37
|
+
/**状态码*/
|
|
38
|
+
status: string;
|
|
39
|
+
/**接口地址*/
|
|
40
|
+
url: string;
|
|
41
|
+
/**列表数据条数(仅 list 格式有效)*/
|
|
42
|
+
listCount: number;
|
|
43
|
+
}[];
|
|
44
|
+
export default createMockData;
|
|
45
|
+
/**
|
|
46
|
+
* 代理配置参数
|
|
47
|
+
*/
|
|
48
|
+
export type ProxyItem = {
|
|
49
|
+
/**代理路径*/
|
|
50
|
+
path: string;
|
|
51
|
+
/**转发地址*/
|
|
52
|
+
target: string;
|
|
53
|
+
/**路径重写*/
|
|
54
|
+
pathRewrite?: Record<string, string>;
|
|
55
|
+
/**是否开启ws*/
|
|
56
|
+
ws?: boolean;
|
|
57
|
+
};
|
|
58
|
+
export type ProxyList = ProxyItem[];
|
|
59
|
+
/**创建代理数据*/
|
|
60
|
+
export declare const createProxyData: (proxyList: ProxyList) => Record<string, Omit<ProxyItem, "path">>;
|
package/esm/index.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import mockjs from "mockjs";
|
|
2
|
+
function createMockItemData(item) {
|
|
3
|
+
let mockBody;
|
|
4
|
+
let { data, ...listBody } = {
|
|
5
|
+
...item.body
|
|
6
|
+
};
|
|
7
|
+
const saveData = {};
|
|
8
|
+
const objectKeys = Object.keys(data);
|
|
9
|
+
const listCount = item.listCount || 20;
|
|
10
|
+
for(let index = 0; index < objectKeys.length; index++){
|
|
11
|
+
const key = objectKeys[index];
|
|
12
|
+
const itemConfig = data[key];
|
|
13
|
+
if (/^(\_\|)/.test(key)) {
|
|
14
|
+
const [_, _key, count] = key.split('|');
|
|
15
|
+
const _count = `${count || ''}`.trim();
|
|
16
|
+
if (itemConfig) saveData[_key] = Array.from({
|
|
17
|
+
length: _count ? Number(_count) : listCount
|
|
18
|
+
}, ()=>mockjs.mock(itemConfig));
|
|
19
|
+
} else {
|
|
20
|
+
const valueMock = mockjs.mock({
|
|
21
|
+
[key]: itemConfig
|
|
22
|
+
});
|
|
23
|
+
Object.assign(saveData, valueMock);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
listBody.data = saveData;
|
|
27
|
+
mockBody = listBody;
|
|
28
|
+
let delay = 0;
|
|
29
|
+
if (Array.isArray(item.delay)) {
|
|
30
|
+
const [min, max] = item.delay;
|
|
31
|
+
delay = Math.floor(Math.random() * (max - min + 1)) + min;
|
|
32
|
+
} else delay = item.delay;
|
|
33
|
+
return {
|
|
34
|
+
...item,
|
|
35
|
+
body: mockBody,
|
|
36
|
+
delay
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function createMockData(mockList) {
|
|
40
|
+
const processedList = mockList.map((item)=>createMockItemData(item));
|
|
41
|
+
return processedList;
|
|
42
|
+
}
|
|
43
|
+
const src = createMockData;
|
|
44
|
+
const createProxyData = (proxyList)=>proxyList.reduce((pre, next)=>{
|
|
45
|
+
const { path, ..._item } = {
|
|
46
|
+
...next
|
|
47
|
+
};
|
|
48
|
+
return {
|
|
49
|
+
...pre,
|
|
50
|
+
[path]: _item
|
|
51
|
+
};
|
|
52
|
+
}, {});
|
|
53
|
+
export default src;
|
|
54
|
+
export { createMockData, createMockItemData, createProxyData };
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@fairys/create-mock-data",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Fairys Create Mock Data",
|
|
5
|
+
"author": "SunLxy <1011771396@qq.com>",
|
|
6
|
+
"homepage": "https://github.com/autumn-fairy-tales/fairys-mocker",
|
|
7
|
+
"main": "esm/index.js",
|
|
8
|
+
"types": "esm/index.d.ts",
|
|
9
|
+
"module": "esm/index.js",
|
|
10
|
+
"license": "ISC",
|
|
11
|
+
"type": "module",
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "carefrees-rslib build --node --esm",
|
|
14
|
+
"watch": "carefrees-rslib build --watch --node --esm"
|
|
15
|
+
},
|
|
16
|
+
"publishConfig": {
|
|
17
|
+
"access": "public"
|
|
18
|
+
},
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+https://github.com/autumn-fairy-tales/fairys-mocker.git",
|
|
22
|
+
"directory": "packages/create-mock-data"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"mockjs": "~1.1.0"
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"src",
|
|
29
|
+
"esm"
|
|
30
|
+
]
|
|
31
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import Mock from "mockjs"
|
|
2
|
+
|
|
3
|
+
export interface MockerItem {
|
|
4
|
+
/**该接口允许的 请求方法,默认同时支持 GET 和 POST*/
|
|
5
|
+
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
|
|
6
|
+
/**状态码*/
|
|
7
|
+
status: string;
|
|
8
|
+
//配置响应延迟时间, 如果传入的是一个数组,则代表延迟时间的范围
|
|
9
|
+
delay: number | [number, number];
|
|
10
|
+
/**响应体(可以自定义返回格式)*/
|
|
11
|
+
body: any;
|
|
12
|
+
/**接口地址*/
|
|
13
|
+
url: string;
|
|
14
|
+
/**列表数据条数(仅 list 格式有效)*/
|
|
15
|
+
listCount: number;
|
|
16
|
+
}
|
|
17
|
+
export type DefineMockList = MockerItem[];
|
|
18
|
+
|
|
19
|
+
/**创建 Mock 数据
|
|
20
|
+
*/
|
|
21
|
+
export function createMockItemData(item: MockerItem) {
|
|
22
|
+
// 生成 Mock 数据
|
|
23
|
+
let mockBody;
|
|
24
|
+
// 为列表格式生成指定数量的数据
|
|
25
|
+
let { data, ...listBody } = { ...item.body };
|
|
26
|
+
const saveData: Record<string, any> = {}
|
|
27
|
+
const objectKeys = Object.keys(data);
|
|
28
|
+
const listCount = item.listCount || 20;
|
|
29
|
+
for (let index = 0; index < objectKeys.length; index++) {
|
|
30
|
+
const key = objectKeys[index];
|
|
31
|
+
const itemConfig = data[key];
|
|
32
|
+
// 处理数组对象数据
|
|
33
|
+
if (/^(\_\|)/.test(key)) {
|
|
34
|
+
/**数组的时候,判断字段是否有 个数 字段*/
|
|
35
|
+
const [_, _key, count] = key.split('|');
|
|
36
|
+
const _count = `${count || ''}`.trim();
|
|
37
|
+
if (itemConfig) {
|
|
38
|
+
saveData[_key] = Array.from({ length: _count ? Number(_count) : listCount }, () => Mock.mock(itemConfig));
|
|
39
|
+
}
|
|
40
|
+
} else {
|
|
41
|
+
const valueMock = Mock.mock({ [key]: itemConfig });
|
|
42
|
+
Object.assign(saveData, valueMock);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
listBody.data = saveData;
|
|
46
|
+
mockBody = listBody;
|
|
47
|
+
// 处理延迟
|
|
48
|
+
let delay = 0;
|
|
49
|
+
if (Array.isArray(item.delay)) {
|
|
50
|
+
const [min, max] = item.delay;
|
|
51
|
+
delay = Math.floor(Math.random() * (max - min + 1)) + min;
|
|
52
|
+
} else {
|
|
53
|
+
delay = item.delay;
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
...item,
|
|
57
|
+
body: mockBody,
|
|
58
|
+
delay,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* 创建 Mock 数据
|
|
64
|
+
*/
|
|
65
|
+
export function createMockData(mockList: MockerItem[]) {
|
|
66
|
+
// 处理每个 Mocker 配置
|
|
67
|
+
const processedList = mockList.map(item => createMockItemData(item));
|
|
68
|
+
return processedList;
|
|
69
|
+
}
|
|
70
|
+
export default createMockData;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* 代理配置参数
|
|
74
|
+
*/
|
|
75
|
+
export type ProxyItem = {
|
|
76
|
+
/**代理路径*/
|
|
77
|
+
path: string,
|
|
78
|
+
/**转发地址*/
|
|
79
|
+
target: string,
|
|
80
|
+
/**路径重写*/
|
|
81
|
+
pathRewrite?: Record<string, string>,
|
|
82
|
+
/**是否开启ws*/
|
|
83
|
+
ws?: boolean
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export type ProxyList = ProxyItem[];
|
|
87
|
+
|
|
88
|
+
/**创建代理数据*/
|
|
89
|
+
export const createProxyData = (proxyList: ProxyList) => {
|
|
90
|
+
return proxyList.reduce((pre, next) => {
|
|
91
|
+
const { path, ..._item } = { ...next }
|
|
92
|
+
return { ...pre, [path]: _item }
|
|
93
|
+
}, {} as Record<string, Omit<ProxyItem, 'path'>>)
|
|
94
|
+
}
|