data-faker-plus 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 +584 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.esm.js +1 -0
- package/dist/index.umd.js +1 -0
- package/dist/types/common/ClassDecoratorStateManager.d.ts +47 -0
- package/dist/types/common/ClassDecoratorValidator.d.ts +28 -0
- package/dist/types/common/DecoratorValidator.d.ts +14 -0
- package/dist/types/common/PropertyDecoraotrValidator.d.ts +30 -0
- package/dist/types/constants/DataFakerConstants.d.ts +2 -0
- package/dist/types/constants/DecoratorConstants.d.ts +5 -0
- package/dist/types/constants/MetaDataConstants.d.ts +4 -0
- package/dist/types/core/DataFaker.d.ts +43 -0
- package/dist/types/core/DataFieldDecoratorFactory.d.ts +38 -0
- package/dist/types/core/DataModel.d.ts +39 -0
- package/dist/types/core/DataModelDecoratorFactory.d.ts +48 -0
- package/dist/types/core/DecoratorInfo.d.ts +37 -0
- package/dist/types/core/LocaleParser.d.ts +16 -0
- package/dist/types/core/ModelManager.d.ts +53 -0
- package/dist/types/core/ModelParser.d.ts +62 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/types/decorator.d.ts +70 -0
- package/dist/types/types/faker.d.ts +238 -0
- package/dist/types/types/index.d.ts +2 -0
- package/dist/types/types/index.ts +2 -0
- package/dist/types/utils/IdUtils.d.ts +13 -0
- package/dist/types/utils/ObjectUtils.d.ts +9 -0
- package/package.json +58 -0
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { COUNT, DEEP } from '../constant/DataFakerConstants';
|
|
2
|
+
import { Faker, allFakers, LocaleDefinition } from '@faker-js/faker';
|
|
3
|
+
import { DModel } from '../core/DataModel';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* faker模块联合类型
|
|
7
|
+
*/
|
|
8
|
+
type FakerModule = keyof Faker;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* faker 模块.方法联合类型路径字符串
|
|
12
|
+
* @example book.title,animal.name
|
|
13
|
+
*/
|
|
14
|
+
type FakerMethodPath<M extends FakerModule = FakerModule> = M extends M
|
|
15
|
+
? keyof Faker[M] extends string
|
|
16
|
+
? `${M}.${keyof Faker[M]}`
|
|
17
|
+
: never
|
|
18
|
+
: never;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* faker方法
|
|
22
|
+
* @description 根据方法路径推断方法类型
|
|
23
|
+
*/
|
|
24
|
+
type FakerMethod<P extends string> = P extends `${infer M extends FakerModule}.${infer F}`
|
|
25
|
+
? F extends keyof Faker[M]
|
|
26
|
+
? Faker[M][F] extends (...args: any) => any
|
|
27
|
+
? Faker[M][F]
|
|
28
|
+
: never
|
|
29
|
+
: never
|
|
30
|
+
: never;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* faker方法参数类型
|
|
34
|
+
*/
|
|
35
|
+
/* type FakerMethodParamsType<P extends string> = FakerMethod<P> extends (args: infer A) => any ? A :never; */
|
|
36
|
+
type FakerMethodParamsType<P extends FakerMethodPath> = P extends `${infer M}.${infer F}`
|
|
37
|
+
? M extends FakerModule
|
|
38
|
+
? F extends keyof Faker[M]
|
|
39
|
+
? Faker[M][F] extends (...args: infer A) => any
|
|
40
|
+
? A extends [any?]
|
|
41
|
+
? A[0]
|
|
42
|
+
: never
|
|
43
|
+
: never
|
|
44
|
+
: never
|
|
45
|
+
: never
|
|
46
|
+
: never;
|
|
47
|
+
/**
|
|
48
|
+
* 自定义数据生成器
|
|
49
|
+
*/
|
|
50
|
+
type CustomGenerator = (ctx: Record<string | symbol, any>) => any;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* 引用模型选项
|
|
54
|
+
*/
|
|
55
|
+
type RefModelOptions = {
|
|
56
|
+
/**
|
|
57
|
+
* 所引用的模型
|
|
58
|
+
*/
|
|
59
|
+
refModel: DModel | string | symbol;
|
|
60
|
+
/**
|
|
61
|
+
* 生成数量
|
|
62
|
+
*/
|
|
63
|
+
count?: number;
|
|
64
|
+
/**
|
|
65
|
+
* 引用自身时的递归深度
|
|
66
|
+
*/
|
|
67
|
+
deep?: number;
|
|
68
|
+
/**
|
|
69
|
+
* 保留最后一项,并使用null显示
|
|
70
|
+
*/
|
|
71
|
+
//remain?: boolean;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* 引用模型配置
|
|
75
|
+
*/
|
|
76
|
+
type RefModel = RefModelOptions | DModel;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* 数据字段类型
|
|
80
|
+
*/
|
|
81
|
+
type DataFieldType<P extends FakerMethodPath = FakerMethodPath> =
|
|
82
|
+
| CustomGenerator
|
|
83
|
+
| RefModel
|
|
84
|
+
| FakerMethodPath
|
|
85
|
+
| [P, FakerMethodParamsType<P>];
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* 字段装饰器配置类型
|
|
89
|
+
*/
|
|
90
|
+
type DataFieldDecoratorOptions<P extends FakerMethodPath> = DataFieldType<P>;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* 模型字段结构
|
|
94
|
+
*/
|
|
95
|
+
type DataField = {
|
|
96
|
+
/**
|
|
97
|
+
* 类型
|
|
98
|
+
*/
|
|
99
|
+
fieldSchema: FakerMethodPath | CustomGenerator | RefModel;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* 参数
|
|
103
|
+
*/
|
|
104
|
+
args?: any;
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* 模型数据结构
|
|
109
|
+
*/
|
|
110
|
+
type ModelSchema = Record<string | symbol, DataFieldType>;
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* 所有Fakers联合类型
|
|
114
|
+
*/
|
|
115
|
+
export type AllFakers = keyof typeof allFakers;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* 语言环境类型
|
|
119
|
+
*/
|
|
120
|
+
type LocaleType = AllFakers | Array<LocaleDefinition | AllFakers> | Faker;
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Fake数据规则
|
|
124
|
+
*/
|
|
125
|
+
type RefModelRule = {
|
|
126
|
+
/**
|
|
127
|
+
* 生成数量
|
|
128
|
+
*/
|
|
129
|
+
[COUNT]?: number;
|
|
130
|
+
/**
|
|
131
|
+
* 引用自身时的递归深度
|
|
132
|
+
*/
|
|
133
|
+
[DEEP]?: number;
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* 结构递归
|
|
137
|
+
*/
|
|
138
|
+
[key: string | symbol]: number | RefModelRule | [number, number];
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* schema类型
|
|
142
|
+
*/
|
|
143
|
+
type SchemaType = 'function' | 'object' | 'array' | 'string';
|
|
144
|
+
/**
|
|
145
|
+
* beforeEachCbs的上下文对象
|
|
146
|
+
*/
|
|
147
|
+
type BeforeEachContext = {
|
|
148
|
+
/**
|
|
149
|
+
* 每次循环的key
|
|
150
|
+
*/
|
|
151
|
+
key: string | symbol;
|
|
152
|
+
/**
|
|
153
|
+
* schema
|
|
154
|
+
*/
|
|
155
|
+
schema: DataFieldType;
|
|
156
|
+
/**
|
|
157
|
+
* 模板schema的类型
|
|
158
|
+
*/
|
|
159
|
+
type: SchemaType;
|
|
160
|
+
/**
|
|
161
|
+
* 所属对象
|
|
162
|
+
*/
|
|
163
|
+
belongTo: string | symbol;
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* afterEachCbs的上下文对象
|
|
168
|
+
*/
|
|
169
|
+
type AfterEachContext = {
|
|
170
|
+
/**
|
|
171
|
+
* 每次循环的key
|
|
172
|
+
*/
|
|
173
|
+
key: string | symbol;
|
|
174
|
+
/**
|
|
175
|
+
* 每次循环后的value
|
|
176
|
+
*/
|
|
177
|
+
value: any;
|
|
178
|
+
/**
|
|
179
|
+
* 已经生成的数据结果
|
|
180
|
+
*/
|
|
181
|
+
result: any;
|
|
182
|
+
/**
|
|
183
|
+
* 模板schema的类型
|
|
184
|
+
*/
|
|
185
|
+
type: SchemaType;
|
|
186
|
+
/**
|
|
187
|
+
* 所属对象
|
|
188
|
+
*/
|
|
189
|
+
belongTo: string | symbol;
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* 数据生成钩子
|
|
194
|
+
*/
|
|
195
|
+
type DataFakeHook = {
|
|
196
|
+
/**
|
|
197
|
+
* 数据生成前的钩子
|
|
198
|
+
*/
|
|
199
|
+
beforeAllCbs?: DataFakeCb<ModelSchema>;
|
|
200
|
+
/**
|
|
201
|
+
* 数据生成之后的钩子
|
|
202
|
+
*/
|
|
203
|
+
afterAllCbs?: DataFakeCb;
|
|
204
|
+
/**
|
|
205
|
+
* 每次循环之前的钩子
|
|
206
|
+
*/
|
|
207
|
+
beforeEachCbs?: DataFakeCb<BeforeEachContext>;
|
|
208
|
+
/**
|
|
209
|
+
* 每次循环生成数据之后的钩子
|
|
210
|
+
*/
|
|
211
|
+
afterEachCbs?: DataFakeCb<AfterEachContext>;
|
|
212
|
+
};
|
|
213
|
+
/**
|
|
214
|
+
* 使用模型配置
|
|
215
|
+
*/
|
|
216
|
+
type DataFakeOptions = {
|
|
217
|
+
/**
|
|
218
|
+
* 生成数量
|
|
219
|
+
*/
|
|
220
|
+
count?: number;
|
|
221
|
+
/**
|
|
222
|
+
* 对于引用类型的规则
|
|
223
|
+
*/
|
|
224
|
+
refRules?: RefModelRule;
|
|
225
|
+
/**
|
|
226
|
+
* 钩子函数
|
|
227
|
+
*/
|
|
228
|
+
hooks?: DataFakeHook;
|
|
229
|
+
/**
|
|
230
|
+
* 语言环境
|
|
231
|
+
*/
|
|
232
|
+
locale?: LocaleType;
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* 数据生成后的回调函数类型
|
|
237
|
+
*/
|
|
238
|
+
type DataFakeCb<T = any> = ((data: T) => T) | Array<(data: T) => T>;
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "data-faker-plus",
|
|
3
|
+
"private": false,
|
|
4
|
+
"version": "0.0.1",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.esm.js",
|
|
7
|
+
"module": "dist/index.esm.js",
|
|
8
|
+
"types": "dist/types/index.d.ts",
|
|
9
|
+
"files": [
|
|
10
|
+
"dist"
|
|
11
|
+
],
|
|
12
|
+
"keywords": [
|
|
13
|
+
"faker",
|
|
14
|
+
"mock",
|
|
15
|
+
"mock data"
|
|
16
|
+
],
|
|
17
|
+
"engines": {
|
|
18
|
+
"node": ">=18"
|
|
19
|
+
},
|
|
20
|
+
"description": "A data faker library based on @faker-js/faker",
|
|
21
|
+
"author": "SWUST-LMH <1357526355@qq.com>",
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "https://github.com/bloom-lmh/data-faker.git"
|
|
26
|
+
},
|
|
27
|
+
"homepage": "https://yourname.github.io/repo",
|
|
28
|
+
"bugs": {
|
|
29
|
+
"url": "https://github.com/bloom-lmh/data-faker/issues"
|
|
30
|
+
},
|
|
31
|
+
"scripts": {
|
|
32
|
+
"build": "cross-env NODE_ENV=production rollup -c rollup.config.js",
|
|
33
|
+
"dev": "rollup -c rollup.config.js --watch",
|
|
34
|
+
"clean": "rimraf dist",
|
|
35
|
+
"build:clean": "npm run clean && npm run build",
|
|
36
|
+
"test": "vitest"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@rollup/plugin-alias": "^5.1.1",
|
|
40
|
+
"@rollup/plugin-babel": "^6.0.4",
|
|
41
|
+
"@rollup/plugin-commonjs": "^28.0.6",
|
|
42
|
+
"@rollup/plugin-node-resolve": "^16.0.1",
|
|
43
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
44
|
+
"@rollup/plugin-typescript": "^12.1.4",
|
|
45
|
+
"cross-env": "^10.1.0",
|
|
46
|
+
"rimraf": "^6.0.1",
|
|
47
|
+
"rollup": "^4.52.3",
|
|
48
|
+
"rollup-plugin-copy": "^3.5.0",
|
|
49
|
+
"rollup-plugin-dts": "^6.2.3",
|
|
50
|
+
"tslib": "^2.8.1",
|
|
51
|
+
"typescript": "~5.8.3",
|
|
52
|
+
"vitest": "^3.2.4"
|
|
53
|
+
},
|
|
54
|
+
"dependencies": {
|
|
55
|
+
"@faker-js/faker": "^10.0.0",
|
|
56
|
+
"reflect-metadata": "^0.2.2"
|
|
57
|
+
}
|
|
58
|
+
}
|