@kubb/plugin-faker 5.0.0-beta.56 → 5.0.0-beta.64
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/{Faker-A5UuxwJj.d.ts → Faker-BA4l8DTe.d.ts} +2 -2
- package/dist/{Faker-CHh0JtBG.js → Faker-DUx7jvCo.js} +8 -11
- package/dist/Faker-DUx7jvCo.js.map +1 -0
- package/dist/{Faker-CcGjn5ZM.cjs → Faker-Ds2xP2-k.cjs} +7 -10
- package/dist/Faker-Ds2xP2-k.cjs.map +1 -0
- package/dist/components.cjs +1 -1
- package/dist/components.d.ts +1 -1
- package/dist/components.js +1 -1
- package/dist/{fakerGenerator-KKVr-CA2.d.ts → fakerGenerator-BNysC6rh.d.ts} +2 -2
- package/dist/{fakerGenerator-DrwGWYwv.cjs → fakerGenerator-BeKRKYuy.cjs} +11 -11
- package/dist/fakerGenerator-BeKRKYuy.cjs.map +1 -0
- package/dist/{fakerGenerator-DDNsdbH2.js → fakerGenerator-D5Bcy5WY.js} +12 -12
- package/dist/fakerGenerator-D5Bcy5WY.js.map +1 -0
- package/dist/generators.cjs +1 -1
- package/dist/generators.d.ts +1 -1
- package/dist/generators.js +1 -1
- package/dist/index.cjs +4 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/{printerFaker-CMCJT3FB.d.ts → printerFaker-BzEB43Jz.d.ts} +3 -3
- package/package.json +6 -7
- package/dist/Faker-CHh0JtBG.js.map +0 -1
- package/dist/Faker-CcGjn5ZM.cjs.map +0 -1
- package/dist/fakerGenerator-DDNsdbH2.js.map +0 -1
- package/dist/fakerGenerator-DrwGWYwv.cjs.map +0 -1
- package/src/components/Faker.tsx +0 -139
- package/src/components/index.ts +0 -1
- package/src/generators/fakerGenerator.tsx +0 -307
- package/src/generators/index.ts +0 -1
- package/src/index.ts +0 -7
- package/src/plugin.ts +0 -92
- package/src/printers/printerFaker.ts +0 -403
- package/src/resolvers/resolverFaker.ts +0 -84
- package/src/types.ts +0 -181
- package/src/utils.ts +0 -257
|
@@ -1,307 +0,0 @@
|
|
|
1
|
-
import { getPerContentTypeName, resolveContentTypeVariants } from '@internals/shared'
|
|
2
|
-
import { aliasConflictingImports, filterUsedImports, rewriteAliasedImports } from '@internals/utils'
|
|
3
|
-
import { ast, defineGenerator } from '@kubb/core'
|
|
4
|
-
import { pluginTsName } from '@kubb/plugin-ts'
|
|
5
|
-
import { File, jsxRenderer } from '@kubb/renderer-jsx'
|
|
6
|
-
import { Faker } from '../components/Faker.tsx'
|
|
7
|
-
import { printerFaker } from '../printers/printerFaker.ts'
|
|
8
|
-
import type { PluginFaker } from '../types.ts'
|
|
9
|
-
import { buildResponseUnionSchema, canOverrideSchema, localeToFakerImport, resolveParamNameByLocation, resolveTypeReference } from '../utils.ts'
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Built-in generator for `@kubb/plugin-faker`. Emits one `createX` factory
|
|
13
|
-
* per schema in the spec plus per-operation request/response factories. Each
|
|
14
|
-
* factory returns a value matching the corresponding TypeScript type from
|
|
15
|
-
* `@kubb/plugin-ts`.
|
|
16
|
-
*/
|
|
17
|
-
export const fakerGenerator = defineGenerator<PluginFaker>({
|
|
18
|
-
name: 'faker',
|
|
19
|
-
renderer: jsxRenderer,
|
|
20
|
-
schema(node, ctx) {
|
|
21
|
-
const { adapter, config, resolver, root } = ctx
|
|
22
|
-
const { output, group, dateParser, regexGenerator, mapper, seed, locale, printer } = ctx.options
|
|
23
|
-
const pluginTs = ctx.driver.getPlugin(pluginTsName)
|
|
24
|
-
|
|
25
|
-
if (!node.name || !pluginTs) {
|
|
26
|
-
return
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const tsResolver = ctx.driver.getResolver(pluginTsName)
|
|
30
|
-
|
|
31
|
-
const schemaName = node.name
|
|
32
|
-
const isEnumSchema = !!ast.narrowSchema(node, ast.schemaTypes.enum)
|
|
33
|
-
const tsEnumType = pluginTs.options?.enum?.type
|
|
34
|
-
const tsEnumTypeSuffix = pluginTs.options?.enum?.typeSuffix ?? 'Key'
|
|
35
|
-
const schemaTypeName =
|
|
36
|
-
isEnumSchema && tsEnumType === 'asConst' ? tsResolver.resolveEnumKeyName({ name: schemaName }, tsEnumTypeSuffix) : tsResolver.resolveTypeName(schemaName)
|
|
37
|
-
const meta = {
|
|
38
|
-
name: resolver.resolveName(schemaName),
|
|
39
|
-
file: resolver.resolveFile({ name: schemaName, extname: '.ts' }, { root, output, group: group ?? undefined }),
|
|
40
|
-
typeName: schemaTypeName,
|
|
41
|
-
typeFile: tsResolver.resolveFile(
|
|
42
|
-
{ name: schemaName, extname: '.ts' },
|
|
43
|
-
{ root, output: pluginTs.options?.output ?? output, group: pluginTs.options?.group ?? undefined },
|
|
44
|
-
),
|
|
45
|
-
} as const
|
|
46
|
-
const canOverride = canOverrideSchema(node)
|
|
47
|
-
const cyclicSchemas = new Set<string>(ctx.meta.circularNames)
|
|
48
|
-
const printerInstance = printerFaker({
|
|
49
|
-
resolver,
|
|
50
|
-
schemaName,
|
|
51
|
-
typeName: meta.typeName,
|
|
52
|
-
dateParser,
|
|
53
|
-
regexGenerator,
|
|
54
|
-
mapper,
|
|
55
|
-
nodes: printer?.nodes,
|
|
56
|
-
cyclicSchemas,
|
|
57
|
-
})
|
|
58
|
-
const fakerText = printerInstance.print(node) ?? 'undefined'
|
|
59
|
-
const typeReference = resolveTypeReference({
|
|
60
|
-
node,
|
|
61
|
-
canOverride,
|
|
62
|
-
name: meta.name,
|
|
63
|
-
typeName: meta.typeName,
|
|
64
|
-
filePath: meta.file.path,
|
|
65
|
-
typeFilePath: meta.typeFile.path,
|
|
66
|
-
})
|
|
67
|
-
|
|
68
|
-
const imports = adapter.getImports(node, (schemaName) => ({
|
|
69
|
-
name: resolver.resolveName(schemaName),
|
|
70
|
-
path: resolver.resolveFile({ name: schemaName, extname: '.ts' }, { root, output, group: group ?? undefined }).path,
|
|
71
|
-
}))
|
|
72
|
-
const usedImports = filterUsedImports(imports, fakerText)
|
|
73
|
-
|
|
74
|
-
return (
|
|
75
|
-
<File
|
|
76
|
-
baseName={meta.file.baseName}
|
|
77
|
-
path={meta.file.path}
|
|
78
|
-
meta={meta.file.meta}
|
|
79
|
-
banner={resolver.resolveBanner(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}
|
|
80
|
-
footer={resolver.resolveFooter(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}
|
|
81
|
-
>
|
|
82
|
-
<File.Import name={locale ? [{ propertyName: localeToFakerImport(locale), name: 'faker' }] : ['faker']} path="@faker-js/faker" />
|
|
83
|
-
{regexGenerator === 'randexp' && <File.Import name={'RandExp'} path={'randexp'} />}
|
|
84
|
-
{dateParser !== 'faker' && <File.Import path={dateParser} name={dateParser} />}
|
|
85
|
-
{typeReference.importPath && <File.Import isTypeOnly root={meta.file.path} path={typeReference.importPath} name={[meta.typeName]} />}
|
|
86
|
-
{usedImports.map((imp) => (
|
|
87
|
-
<File.Import key={[schemaName, imp.path, imp.name].join('-')} root={meta.file.path} path={imp.path} name={imp.name} />
|
|
88
|
-
))}
|
|
89
|
-
<Faker
|
|
90
|
-
name={meta.name}
|
|
91
|
-
typeName={typeReference.typeName}
|
|
92
|
-
description={node.description}
|
|
93
|
-
node={node}
|
|
94
|
-
printer={printerInstance}
|
|
95
|
-
seed={seed}
|
|
96
|
-
canOverride={canOverride}
|
|
97
|
-
/>
|
|
98
|
-
</File>
|
|
99
|
-
)
|
|
100
|
-
},
|
|
101
|
-
operation(node, ctx) {
|
|
102
|
-
const { adapter, config, resolver, root } = ctx
|
|
103
|
-
const { output, group, paramsCasing, dateParser, regexGenerator, mapper, seed, locale, printer } = ctx.options
|
|
104
|
-
const pluginTs = ctx.driver.getPlugin(pluginTsName)
|
|
105
|
-
|
|
106
|
-
if (!pluginTs) {
|
|
107
|
-
return
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
const tsResolver = ctx.driver.getResolver(pluginTsName)
|
|
111
|
-
|
|
112
|
-
const params = ast.caseParams(node.parameters, paramsCasing)
|
|
113
|
-
const paramEntries = params.map((param) => ({
|
|
114
|
-
param,
|
|
115
|
-
name: resolveParamNameByLocation(resolver, node, param),
|
|
116
|
-
typeName: resolveParamNameByLocation(tsResolver, node, param),
|
|
117
|
-
}))
|
|
118
|
-
type RenderUnit = { schema: ast.SchemaNode | null; name: string; typeName: string; description?: string; skipImportNames: Array<string> }
|
|
119
|
-
|
|
120
|
-
// Expands a content array into render units: one faker per content type plus a union faker
|
|
121
|
-
// (named `baseName`) when more than one content type carries a schema, else a single faker.
|
|
122
|
-
function expandContentUnits(
|
|
123
|
-
entries: Array<{ contentType: string; schema?: ast.SchemaNode | null }>,
|
|
124
|
-
baseName: string,
|
|
125
|
-
tsBaseName: string,
|
|
126
|
-
description: string | undefined,
|
|
127
|
-
decorate?: (schema: ast.SchemaNode) => ast.SchemaNode,
|
|
128
|
-
): Array<RenderUnit> {
|
|
129
|
-
const withSchema = entries.filter((entry) => entry.schema)
|
|
130
|
-
if (withSchema.length <= 1) {
|
|
131
|
-
const primary = withSchema[0] ?? entries[0]
|
|
132
|
-
if (!primary?.schema) return []
|
|
133
|
-
return [{ schema: decorate ? decorate(primary.schema) : primary.schema, name: baseName, typeName: tsBaseName, description, skipImportNames: [] }]
|
|
134
|
-
}
|
|
135
|
-
const variants = resolveContentTypeVariants(entries, baseName)
|
|
136
|
-
const unionSchema = ast.createSchema({ type: 'union', members: variants.map((variant) => ast.createSchema({ type: 'ref', name: variant.name })) })
|
|
137
|
-
return [
|
|
138
|
-
...variants.map((variant) => ({
|
|
139
|
-
schema: decorate ? decorate(variant.schema) : variant.schema,
|
|
140
|
-
name: variant.name,
|
|
141
|
-
typeName: getPerContentTypeName(tsBaseName, variant.suffix),
|
|
142
|
-
description,
|
|
143
|
-
skipImportNames: [],
|
|
144
|
-
})),
|
|
145
|
-
{ schema: unionSchema, name: baseName, typeName: tsBaseName, description, skipImportNames: variants.map((variant) => variant.name) },
|
|
146
|
-
]
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
const responseUnits = node.responses.flatMap((response) =>
|
|
150
|
-
expandContentUnits(
|
|
151
|
-
response.content ?? [],
|
|
152
|
-
resolver.resolveResponseStatusName(node, response.statusCode),
|
|
153
|
-
tsResolver.resolveResponseStatusName(node, response.statusCode),
|
|
154
|
-
response.description,
|
|
155
|
-
),
|
|
156
|
-
)
|
|
157
|
-
const dataUnits = expandContentUnits(
|
|
158
|
-
node.requestBody?.content ?? [],
|
|
159
|
-
resolver.resolveDataName(node),
|
|
160
|
-
tsResolver.resolveDataName(node),
|
|
161
|
-
node.requestBody?.description,
|
|
162
|
-
(schema) => ({ ...schema, description: node.requestBody?.description ?? schema.description }),
|
|
163
|
-
)
|
|
164
|
-
const responseName = resolver.resolveResponseName(node)
|
|
165
|
-
const localHelperNames = new Set([
|
|
166
|
-
...paramEntries.map((entry) => entry.name),
|
|
167
|
-
...responseUnits.map((unit) => unit.name),
|
|
168
|
-
...dataUnits.map((unit) => unit.name),
|
|
169
|
-
responseName,
|
|
170
|
-
])
|
|
171
|
-
const cyclicSchemas = new Set<string>(ctx.meta.circularNames)
|
|
172
|
-
|
|
173
|
-
const meta = {
|
|
174
|
-
file: resolver.resolveFile(
|
|
175
|
-
{ name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path },
|
|
176
|
-
{ root, output, group: group ?? undefined },
|
|
177
|
-
),
|
|
178
|
-
typeFile: tsResolver.resolveFile(
|
|
179
|
-
{
|
|
180
|
-
name: node.operationId,
|
|
181
|
-
extname: '.ts',
|
|
182
|
-
tag: node.tags[0] ?? 'default',
|
|
183
|
-
path: node.path,
|
|
184
|
-
},
|
|
185
|
-
{
|
|
186
|
-
root,
|
|
187
|
-
output: pluginTs.options?.output ?? output,
|
|
188
|
-
group: pluginTs.options?.group ?? undefined,
|
|
189
|
-
},
|
|
190
|
-
),
|
|
191
|
-
} as const
|
|
192
|
-
|
|
193
|
-
function resolveMockImports(schema: ast.SchemaNode) {
|
|
194
|
-
return adapter
|
|
195
|
-
.getImports(schema, (schemaName) => ({
|
|
196
|
-
name: resolver.resolveName(schemaName),
|
|
197
|
-
path: resolver.resolveFile({ name: schemaName, extname: '.ts' }, { root, output, group: group ?? undefined }).path,
|
|
198
|
-
}))
|
|
199
|
-
.filter((entry) => entry.path !== meta.file.path)
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
function renderEntry({
|
|
203
|
-
schema,
|
|
204
|
-
name,
|
|
205
|
-
typeName,
|
|
206
|
-
description,
|
|
207
|
-
skipImportNames = [],
|
|
208
|
-
}: {
|
|
209
|
-
schema: ast.SchemaNode | null
|
|
210
|
-
name: string
|
|
211
|
-
typeName: string
|
|
212
|
-
description?: string
|
|
213
|
-
skipImportNames?: Array<string>
|
|
214
|
-
}) {
|
|
215
|
-
if (!schema) {
|
|
216
|
-
return null
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
const canOverride = canOverrideSchema(schema)
|
|
220
|
-
const printerInstance = printerFaker({
|
|
221
|
-
resolver,
|
|
222
|
-
schemaName: name,
|
|
223
|
-
typeName,
|
|
224
|
-
dateParser,
|
|
225
|
-
regexGenerator,
|
|
226
|
-
mapper,
|
|
227
|
-
nodes: printer?.nodes,
|
|
228
|
-
cyclicSchemas,
|
|
229
|
-
})
|
|
230
|
-
const fakerText = printerInstance.print(schema) ?? 'undefined'
|
|
231
|
-
const usedImports = filterUsedImports(resolveMockImports(schema), fakerText, skipImportNames)
|
|
232
|
-
const { imports, aliases } = aliasConflictingImports(usedImports, localHelperNames)
|
|
233
|
-
const rewrittenFakerText = rewriteAliasedImports(fakerText, aliases)
|
|
234
|
-
const typeReference = resolveTypeReference({
|
|
235
|
-
node: schema,
|
|
236
|
-
canOverride,
|
|
237
|
-
name,
|
|
238
|
-
typeName,
|
|
239
|
-
filePath: meta.file.path,
|
|
240
|
-
typeFilePath: meta.typeFile.path,
|
|
241
|
-
})
|
|
242
|
-
|
|
243
|
-
return (
|
|
244
|
-
<>
|
|
245
|
-
{typeReference.importPath && <File.Import isTypeOnly root={meta.file.path} path={typeReference.importPath} name={[typeName]} />}
|
|
246
|
-
{imports.map((imp) => (
|
|
247
|
-
<File.Import key={[name, imp.path, imp.name].join('-')} root={meta.file.path} path={imp.path} name={imp.name} />
|
|
248
|
-
))}
|
|
249
|
-
<Faker
|
|
250
|
-
name={name}
|
|
251
|
-
typeName={typeReference.typeName}
|
|
252
|
-
description={description}
|
|
253
|
-
node={schema}
|
|
254
|
-
printer={{ ...printerInstance, print: () => rewrittenFakerText }}
|
|
255
|
-
seed={seed}
|
|
256
|
-
canOverride={canOverride}
|
|
257
|
-
/>
|
|
258
|
-
</>
|
|
259
|
-
)
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
return (
|
|
263
|
-
<File
|
|
264
|
-
baseName={meta.file.baseName}
|
|
265
|
-
path={meta.file.path}
|
|
266
|
-
meta={meta.file.meta}
|
|
267
|
-
banner={resolver.resolveBanner(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}
|
|
268
|
-
footer={resolver.resolveFooter(ctx.meta, { output, config, file: { path: meta.file.path, baseName: meta.file.baseName } })}
|
|
269
|
-
>
|
|
270
|
-
<File.Import name={locale ? [{ propertyName: localeToFakerImport(locale), name: 'faker' }] : ['faker']} path="@faker-js/faker" />
|
|
271
|
-
{regexGenerator === 'randexp' && <File.Import name={'RandExp'} path={'randexp'} />}
|
|
272
|
-
{dateParser !== 'faker' && <File.Import path={dateParser} name={dateParser} />}
|
|
273
|
-
{paramEntries.map(({ param, name, typeName }) =>
|
|
274
|
-
renderEntry({
|
|
275
|
-
schema: param.schema,
|
|
276
|
-
name,
|
|
277
|
-
typeName,
|
|
278
|
-
}),
|
|
279
|
-
)}
|
|
280
|
-
{responseUnits.map((unit) =>
|
|
281
|
-
renderEntry({
|
|
282
|
-
schema: unit.schema,
|
|
283
|
-
name: unit.name,
|
|
284
|
-
typeName: unit.typeName,
|
|
285
|
-
description: unit.description,
|
|
286
|
-
skipImportNames: unit.skipImportNames,
|
|
287
|
-
}),
|
|
288
|
-
)}
|
|
289
|
-
{dataUnits.map((unit) =>
|
|
290
|
-
renderEntry({
|
|
291
|
-
schema: unit.schema,
|
|
292
|
-
name: unit.name,
|
|
293
|
-
typeName: unit.typeName,
|
|
294
|
-
description: unit.description,
|
|
295
|
-
skipImportNames: unit.skipImportNames,
|
|
296
|
-
}),
|
|
297
|
-
)}
|
|
298
|
-
{renderEntry({
|
|
299
|
-
schema: buildResponseUnionSchema(node, resolver),
|
|
300
|
-
name: responseName,
|
|
301
|
-
typeName: tsResolver.resolveResponseName(node),
|
|
302
|
-
skipImportNames: responseUnits.map((unit) => unit.name),
|
|
303
|
-
})}
|
|
304
|
-
</File>
|
|
305
|
-
)
|
|
306
|
-
},
|
|
307
|
-
})
|
package/src/generators/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { fakerGenerator } from './fakerGenerator.tsx'
|
package/src/index.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { Faker } from './components/Faker.tsx'
|
|
2
|
-
export { fakerGenerator } from './generators/fakerGenerator.tsx'
|
|
3
|
-
export { default, pluginFaker, pluginFakerName } from './plugin.ts'
|
|
4
|
-
export type { PrinterFakerFactory, PrinterFakerNodes, PrinterFakerOptions } from './printers/printerFaker.ts'
|
|
5
|
-
export { printerFaker } from './printers/printerFaker.ts'
|
|
6
|
-
export { resolverFaker } from './resolvers/resolverFaker.ts'
|
|
7
|
-
export type { PluginFaker, ResolverFaker } from './types.ts'
|
package/src/plugin.ts
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { createGroupConfig } from '@internals/shared'
|
|
2
|
-
import { definePlugin } from '@kubb/core'
|
|
3
|
-
import { pluginTsName } from '@kubb/plugin-ts'
|
|
4
|
-
import { fakerGenerator } from './generators/fakerGenerator.tsx'
|
|
5
|
-
import { resolverFaker } from './resolvers/resolverFaker.ts'
|
|
6
|
-
import type { PluginFaker } from './types.ts'
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Canonical plugin name for `@kubb/plugin-faker`. Used for driver lookups and
|
|
10
|
-
* cross-plugin dependency references.
|
|
11
|
-
*/
|
|
12
|
-
export const pluginFakerName = 'plugin-faker' satisfies PluginFaker['name']
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Generates one mock-data factory per OpenAPI schema using Faker.js. Call
|
|
16
|
-
* `createPet()` to get a realistic `Pet` object. Useful for tests, Storybook,
|
|
17
|
-
* and local development without a running backend.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```ts
|
|
21
|
-
* import { defineConfig } from 'kubb'
|
|
22
|
-
* import { pluginTs } from '@kubb/plugin-ts'
|
|
23
|
-
* import { pluginFaker } from '@kubb/plugin-faker'
|
|
24
|
-
*
|
|
25
|
-
* export default defineConfig({
|
|
26
|
-
* input: { path: './petStore.yaml' },
|
|
27
|
-
* output: { path: './src/gen' },
|
|
28
|
-
* plugins: [
|
|
29
|
-
* pluginTs(),
|
|
30
|
-
* pluginFaker({
|
|
31
|
-
* output: { path: './mocks' },
|
|
32
|
-
* seed: [100],
|
|
33
|
-
* }),
|
|
34
|
-
* ],
|
|
35
|
-
* })
|
|
36
|
-
* ```
|
|
37
|
-
*/
|
|
38
|
-
export const pluginFaker = definePlugin<PluginFaker>((options) => {
|
|
39
|
-
const {
|
|
40
|
-
output = { path: 'mocks', barrel: { type: 'named' } },
|
|
41
|
-
seed,
|
|
42
|
-
locale = 'en',
|
|
43
|
-
group,
|
|
44
|
-
exclude = [],
|
|
45
|
-
include,
|
|
46
|
-
override = [],
|
|
47
|
-
mapper = {},
|
|
48
|
-
dateParser = 'faker',
|
|
49
|
-
generators: userGenerators = [],
|
|
50
|
-
regexGenerator = 'faker',
|
|
51
|
-
paramsCasing,
|
|
52
|
-
printer,
|
|
53
|
-
resolver: userResolver,
|
|
54
|
-
transformer: userTransformer,
|
|
55
|
-
} = options
|
|
56
|
-
|
|
57
|
-
const groupConfig = createGroupConfig(group)
|
|
58
|
-
|
|
59
|
-
return {
|
|
60
|
-
name: pluginFakerName,
|
|
61
|
-
options,
|
|
62
|
-
dependencies: [pluginTsName],
|
|
63
|
-
hooks: {
|
|
64
|
-
'kubb:plugin:setup'(ctx) {
|
|
65
|
-
ctx.setOptions({
|
|
66
|
-
output,
|
|
67
|
-
seed,
|
|
68
|
-
locale,
|
|
69
|
-
exclude,
|
|
70
|
-
include,
|
|
71
|
-
override,
|
|
72
|
-
group: groupConfig,
|
|
73
|
-
mapper,
|
|
74
|
-
dateParser,
|
|
75
|
-
regexGenerator,
|
|
76
|
-
paramsCasing,
|
|
77
|
-
printer,
|
|
78
|
-
})
|
|
79
|
-
ctx.setResolver(userResolver ? { ...resolverFaker, ...userResolver } : resolverFaker)
|
|
80
|
-
if (userTransformer) {
|
|
81
|
-
ctx.setTransformer(userTransformer)
|
|
82
|
-
}
|
|
83
|
-
ctx.addGenerator(fakerGenerator)
|
|
84
|
-
for (const generator of userGenerators) {
|
|
85
|
-
ctx.addGenerator(generator)
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
},
|
|
89
|
-
}
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
export default pluginFaker
|