@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 ADDED
@@ -0,0 +1,8 @@
1
+ # create-mock-data
2
+
3
+
4
+ ## 安装
5
+
6
+ ```bash
7
+ npm install @fairys/create-mock-data -D # pnpm install @fairys/create-mock-data -D # yarn add @fairys/create-mock-data -D
8
+ ```
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
+ }