@kubb/plugin-faker 4.10.1 → 4.11.0
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/{components-BP20Parg.cjs → components-B3zDIwzO.cjs} +182 -128
- package/dist/components-B3zDIwzO.cjs.map +1 -0
- package/dist/components-C4bJ99o9.js +358 -0
- package/dist/components-C4bJ99o9.js.map +1 -0
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/{fakerGenerator-APLVZFNv.cjs → fakerGenerator-D3S-ziEj.cjs} +2 -2
- package/dist/{fakerGenerator-APLVZFNv.cjs.map → fakerGenerator-D3S-ziEj.cjs.map} +1 -1
- package/dist/{fakerGenerator-CgXklxYJ.js → fakerGenerator-D4hR3u-d.js} +2 -2
- package/dist/{fakerGenerator-CgXklxYJ.js.map → fakerGenerator-D4hR3u-d.js.map} +1 -1
- package/dist/generators.cjs +1 -1
- package/dist/generators.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/package.json +6 -6
- package/src/parser.ts +211 -180
- package/dist/components-BP20Parg.cjs.map +0 -1
- package/dist/components-DUQvu8JV.js +0 -304
- package/dist/components-DUQvu8JV.js.map +0 -1
|
@@ -133,135 +133,189 @@ function joinItems(items) {
|
|
|
133
133
|
default: return fakerKeywordMapper.union(items);
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
current
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
return
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
136
|
+
const parse = (0, __kubb_plugin_oas.createParser)({
|
|
137
|
+
mapper: fakerKeywordMapper,
|
|
138
|
+
handlers: {
|
|
139
|
+
union(tree, options) {
|
|
140
|
+
const { current, schema, name, siblings } = tree;
|
|
141
|
+
if (!(0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.union)) return void 0;
|
|
142
|
+
if (Array.isArray(current.args) && !current.args.length) return "";
|
|
143
|
+
return fakerKeywordMapper.union(current.args.map((it) => this.parse({
|
|
144
|
+
schema,
|
|
145
|
+
parent: current,
|
|
146
|
+
name,
|
|
147
|
+
current: it,
|
|
148
|
+
siblings
|
|
149
|
+
}, {
|
|
150
|
+
...options,
|
|
151
|
+
canOverride: false
|
|
152
|
+
})).filter(Boolean));
|
|
153
|
+
},
|
|
154
|
+
and(tree, options) {
|
|
155
|
+
const { current, schema, siblings } = tree;
|
|
156
|
+
if (!(0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.and)) return void 0;
|
|
157
|
+
return fakerKeywordMapper.and(current.args.map((it) => this.parse({
|
|
158
|
+
schema,
|
|
159
|
+
parent: current,
|
|
160
|
+
current: it,
|
|
161
|
+
siblings
|
|
162
|
+
}, {
|
|
163
|
+
...options,
|
|
164
|
+
canOverride: false
|
|
165
|
+
})).filter(Boolean));
|
|
166
|
+
},
|
|
167
|
+
array(tree, options) {
|
|
168
|
+
const { current, schema } = tree;
|
|
169
|
+
if (!(0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.array)) return void 0;
|
|
170
|
+
return fakerKeywordMapper.array(current.args.items.map((it) => this.parse({
|
|
171
|
+
schema,
|
|
172
|
+
parent: current,
|
|
173
|
+
current: it,
|
|
174
|
+
siblings: current.args.items
|
|
175
|
+
}, {
|
|
176
|
+
...options,
|
|
177
|
+
typeName: `NonNullable<${options.typeName}>[number]`,
|
|
178
|
+
canOverride: false
|
|
179
|
+
})).filter(Boolean), current.args.min, current.args.max);
|
|
180
|
+
},
|
|
181
|
+
enum(tree, options) {
|
|
182
|
+
const { current, parent, name } = tree;
|
|
183
|
+
if (!(0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.enum)) return void 0;
|
|
184
|
+
if (parent ? (0, __kubb_plugin_oas.isKeyword)(parent, __kubb_plugin_oas.schemaKeywords.tuple) : false) return fakerKeywordMapper.enum(current.args.items.map((schema) => {
|
|
185
|
+
if (schema.format === "number") return schema.value;
|
|
186
|
+
if (schema.format === "boolean") return schema.value;
|
|
187
|
+
return __kubb_core_transformers.default.stringify(schema.value);
|
|
188
|
+
}));
|
|
189
|
+
return fakerKeywordMapper.enum(current.args.items.map((schema) => {
|
|
190
|
+
if (schema.format === "number") return schema.value;
|
|
191
|
+
if (schema.format === "boolean") return schema.value;
|
|
192
|
+
return __kubb_core_transformers.default.stringify(schema.value);
|
|
193
|
+
}), name ? options.typeName : void 0);
|
|
194
|
+
},
|
|
195
|
+
ref(tree, options) {
|
|
196
|
+
const { current } = tree;
|
|
197
|
+
if (!(0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.ref)) return void 0;
|
|
198
|
+
if (!current.args?.name) throw new Error(`Name not defined for keyword ${current.keyword}`);
|
|
199
|
+
if (options.canOverride) return `${current.args.name}(data)`;
|
|
200
|
+
return `${current.args.name}()`;
|
|
201
|
+
},
|
|
202
|
+
object(tree, options) {
|
|
203
|
+
const { current, schema } = tree;
|
|
204
|
+
if (!(0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.object)) return void 0;
|
|
205
|
+
return `{${Object.entries(current.args?.properties || {}).filter((item) => {
|
|
206
|
+
const schema$1 = item[1];
|
|
207
|
+
return schema$1 && typeof schema$1.map === "function";
|
|
208
|
+
}).map(([name, schemas]) => {
|
|
209
|
+
const mappedName = schemas.find((schema$1) => schema$1.keyword === __kubb_plugin_oas.schemaKeywords.name)?.args || name;
|
|
210
|
+
if (options.mapper?.[mappedName]) return `"${name}": ${options.mapper?.[mappedName]}`;
|
|
211
|
+
return `"${name}": ${joinItems(schemas.sort(schemaKeywordSorter).map((it) => this.parse({
|
|
212
|
+
schema,
|
|
213
|
+
name,
|
|
214
|
+
parent: current,
|
|
215
|
+
current: it,
|
|
216
|
+
siblings: schemas
|
|
217
|
+
}, {
|
|
218
|
+
...options,
|
|
219
|
+
typeName: `NonNullable<${options.typeName}>[${JSON.stringify(name)}]`,
|
|
220
|
+
canOverride: false
|
|
221
|
+
})).filter(Boolean))}`;
|
|
222
|
+
}).join(",")}}`;
|
|
223
|
+
},
|
|
224
|
+
tuple(tree, options) {
|
|
225
|
+
const { current, schema, siblings } = tree;
|
|
226
|
+
if (!(0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.tuple)) return void 0;
|
|
227
|
+
if (Array.isArray(current.args.items)) return fakerKeywordMapper.tuple(current.args.items.map((it) => this.parse({
|
|
228
|
+
schema,
|
|
229
|
+
parent: current,
|
|
230
|
+
current: it,
|
|
231
|
+
siblings
|
|
232
|
+
}, {
|
|
233
|
+
...options,
|
|
234
|
+
canOverride: false
|
|
235
|
+
})).filter(Boolean));
|
|
236
|
+
return this.parse({
|
|
237
|
+
schema,
|
|
238
|
+
parent: current,
|
|
239
|
+
current: current.args.items,
|
|
240
|
+
siblings
|
|
241
|
+
}, {
|
|
242
|
+
...options,
|
|
243
|
+
canOverride: false
|
|
244
|
+
});
|
|
245
|
+
},
|
|
246
|
+
const(tree, _options) {
|
|
247
|
+
const { current } = tree;
|
|
248
|
+
if (!(0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.const)) return void 0;
|
|
249
|
+
if (current.args.format === "number" && current.args.name !== void 0) return fakerKeywordMapper.const(current.args.name?.toString());
|
|
250
|
+
return fakerKeywordMapper.const(__kubb_core_transformers.default.stringify(current.args.value));
|
|
251
|
+
},
|
|
252
|
+
matches(tree, options) {
|
|
253
|
+
const { current } = tree;
|
|
254
|
+
if (!(0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.matches)) return void 0;
|
|
255
|
+
if (current.args) return fakerKeywordMapper.matches(current.args, options.regexGenerator);
|
|
256
|
+
},
|
|
257
|
+
null(tree) {
|
|
258
|
+
const { current } = tree;
|
|
259
|
+
if (!(0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.null)) return void 0;
|
|
260
|
+
return fakerKeywordMapper.null();
|
|
261
|
+
},
|
|
262
|
+
undefined(tree) {
|
|
263
|
+
const { current } = tree;
|
|
264
|
+
if (!(0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.undefined)) return void 0;
|
|
265
|
+
return fakerKeywordMapper.undefined();
|
|
266
|
+
},
|
|
267
|
+
any(tree) {
|
|
268
|
+
const { current } = tree;
|
|
269
|
+
if (!(0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.any)) return void 0;
|
|
270
|
+
return fakerKeywordMapper.any();
|
|
271
|
+
},
|
|
272
|
+
string(tree, _options) {
|
|
273
|
+
const { current, siblings } = tree;
|
|
274
|
+
if (!(0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.string)) return void 0;
|
|
275
|
+
if (siblings) {
|
|
276
|
+
const minSchema = (0, __kubb_plugin_oas.findSchemaKeyword)(siblings, "min");
|
|
277
|
+
const maxSchema = (0, __kubb_plugin_oas.findSchemaKeyword)(siblings, "max");
|
|
278
|
+
return fakerKeywordMapper.string(minSchema?.args, maxSchema?.args);
|
|
279
|
+
}
|
|
280
|
+
return fakerKeywordMapper.string();
|
|
281
|
+
},
|
|
282
|
+
number(tree, _options) {
|
|
283
|
+
const { current, siblings } = tree;
|
|
284
|
+
if (!(0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.number)) return void 0;
|
|
285
|
+
if (siblings) {
|
|
286
|
+
const minSchema = (0, __kubb_plugin_oas.findSchemaKeyword)(siblings, "min");
|
|
287
|
+
const maxSchema = (0, __kubb_plugin_oas.findSchemaKeyword)(siblings, "max");
|
|
288
|
+
return fakerKeywordMapper.number(minSchema?.args, maxSchema?.args);
|
|
289
|
+
}
|
|
290
|
+
return fakerKeywordMapper.number();
|
|
291
|
+
},
|
|
292
|
+
integer(tree, _options) {
|
|
293
|
+
const { current, siblings } = tree;
|
|
294
|
+
if (!(0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.integer)) return void 0;
|
|
295
|
+
if (siblings) {
|
|
296
|
+
const minSchema = (0, __kubb_plugin_oas.findSchemaKeyword)(siblings, "min");
|
|
297
|
+
const maxSchema = (0, __kubb_plugin_oas.findSchemaKeyword)(siblings, "max");
|
|
298
|
+
return fakerKeywordMapper.integer(minSchema?.args, maxSchema?.args);
|
|
299
|
+
}
|
|
300
|
+
return fakerKeywordMapper.integer();
|
|
301
|
+
},
|
|
302
|
+
datetime(tree) {
|
|
303
|
+
const { current } = tree;
|
|
304
|
+
if (!(0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.datetime)) return void 0;
|
|
305
|
+
return fakerKeywordMapper.datetime();
|
|
306
|
+
},
|
|
307
|
+
date(tree, options) {
|
|
308
|
+
const { current } = tree;
|
|
309
|
+
if (!(0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.date)) return void 0;
|
|
310
|
+
return fakerKeywordMapper.date(current.args.type, options.dateParser);
|
|
311
|
+
},
|
|
312
|
+
time(tree, options) {
|
|
313
|
+
const { current } = tree;
|
|
314
|
+
if (!(0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.time)) return void 0;
|
|
315
|
+
return fakerKeywordMapper.time(current.args.type, options.dateParser);
|
|
253
316
|
}
|
|
254
|
-
return fakerKeywordMapper.integer();
|
|
255
|
-
}
|
|
256
|
-
if ((0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.datetime)) return fakerKeywordMapper.datetime();
|
|
257
|
-
if ((0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.date)) return fakerKeywordMapper.date(current.args.type, options.dateParser);
|
|
258
|
-
if ((0, __kubb_plugin_oas.isKeyword)(current, __kubb_plugin_oas.schemaKeywords.time)) return fakerKeywordMapper.time(current.args.type, options.dateParser);
|
|
259
|
-
if (current.keyword in fakerKeywordMapper && "args" in current) {
|
|
260
|
-
const value$1 = fakerKeywordMapper[current.keyword];
|
|
261
|
-
return value$1(JSON.stringify(current.args));
|
|
262
317
|
}
|
|
263
|
-
|
|
264
|
-
}
|
|
318
|
+
});
|
|
265
319
|
|
|
266
320
|
//#endregion
|
|
267
321
|
//#region src/components/Faker.tsx
|
|
@@ -340,4 +394,4 @@ Object.defineProperty(exports, '__toESM', {
|
|
|
340
394
|
return __toESM;
|
|
341
395
|
}
|
|
342
396
|
});
|
|
343
|
-
//# sourceMappingURL=components-
|
|
397
|
+
//# sourceMappingURL=components-B3zDIwzO.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components-B3zDIwzO.cjs","names":["transformers","schemaKeywords","schema","parserFaker.joinItems","parserFaker.parse","FunctionParams","File","Function","transformers"],"sources":["../src/parser.ts","../src/components/Faker.tsx"],"sourcesContent":["import transformers from '@kubb/core/transformers'\nimport type { Schema, SchemaKeywordMapper, SchemaMapper } from '@kubb/plugin-oas'\nimport { createParser, findSchemaKeyword, isKeyword, schemaKeywords } from '@kubb/plugin-oas'\nimport type { Options } from './types.ts'\n\nconst fakerKeywordMapper = {\n any: () => 'undefined',\n unknown: () => 'undefined',\n void: () => 'undefined',\n number: (min?: number, max?: number) => {\n if (max !== undefined && min !== undefined) {\n return `faker.number.float({ min: ${min}, max: ${max} })`\n }\n\n if (max !== undefined) {\n return `faker.number.float({ max: ${max} })`\n }\n\n if (min !== undefined) {\n return `faker.number.float({ min: ${min} })`\n }\n\n return 'faker.number.float()'\n },\n integer: (min?: number, max?: number) => {\n if (max !== undefined && min !== undefined) {\n return `faker.number.int({ min: ${min}, max: ${max} })`\n }\n\n if (max !== undefined) {\n return `faker.number.int({ max: ${max} })`\n }\n\n if (min !== undefined) {\n return `faker.number.int({ min: ${min} })`\n }\n\n return 'faker.number.int()'\n },\n string: (min?: number, max?: number) => {\n if (max !== undefined && min !== undefined) {\n return `faker.string.alpha({ length: { min: ${min}, max: ${max} } })`\n }\n\n if (max !== undefined) {\n return `faker.string.alpha({ length: ${max} })`\n }\n\n if (min !== undefined) {\n return `faker.string.alpha({ length: ${min} })`\n }\n\n return 'faker.string.alpha()'\n },\n boolean: () => 'faker.datatype.boolean()',\n undefined: () => 'undefined',\n null: () => 'null',\n array: (items: string[] = [], min?: number, max?: number) => {\n if (items.length > 1) {\n return `faker.helpers.arrayElements([${items.join(', ')}])`\n }\n const item = items.at(0)\n\n if (min !== undefined && max !== undefined) {\n return `faker.helpers.multiple(() => (${item}), { count: { min: ${min}, max: ${max} }})`\n }\n if (min !== undefined) {\n return `faker.helpers.multiple(() => (${item}), { count: ${min} })`\n }\n if (max !== undefined) {\n return `faker.helpers.multiple(() => (${item}), { count: { min: 0, max: ${max} }})`\n }\n\n return `faker.helpers.multiple(() => (${item}))`\n },\n tuple: (items: string[] = []) => `[${items.join(', ')}]`,\n enum: (items: Array<string | number | boolean | undefined> = [], type = 'any') => `faker.helpers.arrayElement<${type}>([${items.join(', ')}])`,\n union: (items: string[] = []) => `faker.helpers.arrayElement<any>([${items.join(', ')}])`,\n /**\n * ISO 8601\n */\n datetime: () => 'faker.date.anytime().toISOString()',\n /**\n * Type `'date'` Date\n * Type `'string'` ISO date format (YYYY-MM-DD)\n * @default ISO date format (YYYY-MM-DD)\n */\n date: (type: 'date' | 'string' = 'string', parser: Options['dateParser'] = 'faker') => {\n if (type === 'string') {\n if (parser !== 'faker') {\n return `${parser}(faker.date.anytime()).format(\"YYYY-MM-DD\")`\n }\n return 'faker.date.anytime().toISOString().substring(0, 10)'\n }\n\n if (parser !== 'faker') {\n throw new Error(`type '${type}' and parser '${parser}' can not work together`)\n }\n\n return 'faker.date.anytime()'\n },\n /**\n * Type `'date'` Date\n * Type `'string'` ISO time format (HH:mm:ss[.SSSSSS])\n * @default ISO time format (HH:mm:ss[.SSSSSS])\n */\n time: (type: 'date' | 'string' = 'string', parser: Options['dateParser'] = 'faker') => {\n if (type === 'string') {\n if (parser !== 'faker') {\n return `${parser}(faker.date.anytime()).format(\"HH:mm:ss\")`\n }\n return 'faker.date.anytime().toISOString().substring(11, 19)'\n }\n\n if (parser !== 'faker') {\n throw new Error(`type '${type}' and parser '${parser}' can not work together`)\n }\n\n return 'faker.date.anytime()'\n },\n uuid: () => 'faker.string.uuid()',\n url: () => 'faker.internet.url()',\n and: (items: string[] = []) => `Object.assign({}, ${items.join(', ')})`,\n object: () => 'object',\n ref: () => 'ref',\n matches: (value = '', regexGenerator: 'faker' | 'randexp' = 'faker') => {\n if (regexGenerator === 'randexp') {\n return `${transformers.toRegExpString(value, 'RandExp')}.gen()`\n }\n return `faker.helpers.fromRegExp(\"${value}\")`\n },\n email: () => 'faker.internet.email()',\n firstName: () => 'faker.person.firstName()',\n lastName: () => 'faker.person.lastName()',\n password: () => 'faker.internet.password()',\n phone: () => 'faker.phone.number()',\n blob: () => 'faker.image.url() as unknown as Blob',\n default: undefined,\n describe: undefined,\n const: (value?: string | number) => (value as string) ?? '',\n max: undefined,\n min: undefined,\n nullable: undefined,\n nullish: undefined,\n optional: undefined,\n readOnly: undefined,\n writeOnly: undefined,\n deprecated: undefined,\n example: undefined,\n schema: undefined,\n catchall: undefined,\n name: undefined,\n interface: undefined,\n exclusiveMaximum: undefined,\n exclusiveMinimum: undefined,\n} satisfies SchemaMapper<string | null | undefined>\n\n/**\n * @link based on https://github.com/cellular/oazapfts/blob/7ba226ebb15374e8483cc53e7532f1663179a22c/src/codegen/generate.ts#L398\n */\n\nfunction schemaKeywordSorter(_a: Schema, b: Schema) {\n if (b.keyword === 'null') {\n return -1\n }\n\n return 0\n}\n\nexport function joinItems(items: string[]): string {\n switch (items.length) {\n case 0:\n return 'undefined'\n case 1:\n return items[0]!\n default:\n return fakerKeywordMapper.union(items)\n }\n}\n\ntype ParserOptions = {\n typeName?: string\n regexGenerator?: 'faker' | 'randexp'\n canOverride?: boolean\n dateParser?: Options['dateParser']\n mapper?: Record<string, string>\n}\n\nexport const parse = createParser<string, ParserOptions>({\n mapper: fakerKeywordMapper,\n handlers: {\n union(tree, options) {\n const { current, schema, name, siblings } = tree\n if (!isKeyword(current, schemaKeywords.union)) return undefined\n\n if (Array.isArray(current.args) && !current.args.length) {\n return ''\n }\n\n return fakerKeywordMapper.union(\n current.args.map((it) => this.parse({ schema, parent: current, name, current: it, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n },\n and(tree, options) {\n const { current, schema, siblings } = tree\n if (!isKeyword(current, schemaKeywords.and)) return undefined\n\n return fakerKeywordMapper.and(\n current.args.map((it) => this.parse({ schema, parent: current, current: it, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n },\n array(tree, options) {\n const { current, schema } = tree\n if (!isKeyword(current, schemaKeywords.array)) return undefined\n\n return fakerKeywordMapper.array(\n current.args.items\n .map((it) =>\n this.parse(\n { schema, parent: current, current: it, siblings: current.args.items },\n {\n ...options,\n typeName: `NonNullable<${options.typeName}>[number]`,\n canOverride: false,\n },\n ),\n )\n .filter(Boolean),\n current.args.min,\n current.args.max,\n )\n },\n enum(tree, options) {\n const { current, parent, name } = tree\n if (!isKeyword(current, schemaKeywords.enum)) return undefined\n\n const isParentTuple = parent ? isKeyword(parent, schemaKeywords.tuple) : false\n\n if (isParentTuple) {\n return fakerKeywordMapper.enum(\n current.args.items.map((schema) => {\n if (schema.format === 'number') {\n return schema.value\n }\n\n if (schema.format === 'boolean') {\n return schema.value\n }\n return transformers.stringify(schema.value)\n }),\n )\n }\n\n return fakerKeywordMapper.enum(\n current.args.items.map((schema) => {\n if (schema.format === 'number') {\n return schema.value\n }\n if (schema.format === 'boolean') {\n return schema.value\n }\n return transformers.stringify(schema.value)\n }),\n // TODO replace this with getEnumNameFromSchema\n name ? options.typeName : undefined,\n )\n },\n ref(tree, options) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.ref)) return undefined\n\n if (!current.args?.name) {\n throw new Error(`Name not defined for keyword ${current.keyword}`)\n }\n\n if (options.canOverride) {\n return `${current.args.name}(data)`\n }\n\n return `${current.args.name}()`\n },\n object(tree, options) {\n const { current, schema } = tree\n if (!isKeyword(current, schemaKeywords.object)) return undefined\n\n const argsObject = Object.entries(current.args?.properties || {})\n .filter((item) => {\n const schema = item[1]\n return schema && typeof schema.map === 'function'\n })\n .map(([name, schemas]) => {\n const nameSchema = schemas.find((schema) => schema.keyword === schemaKeywords.name) as SchemaKeywordMapper['name']\n const mappedName = nameSchema?.args || name\n\n // custom mapper(pluginOptions)\n if (options.mapper?.[mappedName]) {\n return `\"${name}\": ${options.mapper?.[mappedName]}`\n }\n\n return `\"${name}\": ${joinItems(\n schemas\n .sort(schemaKeywordSorter)\n .map((it) =>\n this.parse(\n { schema, name, parent: current, current: it, siblings: schemas },\n {\n ...options,\n typeName: `NonNullable<${options.typeName}>[${JSON.stringify(name)}]`,\n canOverride: false,\n },\n ),\n )\n .filter(Boolean),\n )}`\n })\n .join(',')\n\n return `{${argsObject}}`\n },\n tuple(tree, options) {\n const { current, schema, siblings } = tree\n if (!isKeyword(current, schemaKeywords.tuple)) return undefined\n\n if (Array.isArray(current.args.items)) {\n return fakerKeywordMapper.tuple(\n current.args.items.map((it) => this.parse({ schema, parent: current, current: it, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n }\n\n return this.parse({ schema, parent: current, current: current.args.items, siblings }, { ...options, canOverride: false })\n },\n const(tree, _options) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.const)) return undefined\n\n if (current.args.format === 'number' && current.args.name !== undefined) {\n return fakerKeywordMapper.const(current.args.name?.toString())\n }\n return fakerKeywordMapper.const(transformers.stringify(current.args.value))\n },\n matches(tree, options) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.matches)) return undefined\n\n if (current.args) {\n return fakerKeywordMapper.matches(current.args, options.regexGenerator)\n }\n return undefined\n },\n null(tree) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.null)) return undefined\n\n return fakerKeywordMapper.null()\n },\n undefined(tree) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.undefined)) return undefined\n\n return fakerKeywordMapper.undefined()\n },\n any(tree) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.any)) return undefined\n\n return fakerKeywordMapper.any()\n },\n string(tree, _options) {\n const { current, siblings } = tree\n if (!isKeyword(current, schemaKeywords.string)) return undefined\n\n if (siblings) {\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return fakerKeywordMapper.string(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.string()\n },\n number(tree, _options) {\n const { current, siblings } = tree\n if (!isKeyword(current, schemaKeywords.number)) return undefined\n\n if (siblings) {\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return fakerKeywordMapper.number(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.number()\n },\n integer(tree, _options) {\n const { current, siblings } = tree\n if (!isKeyword(current, schemaKeywords.integer)) return undefined\n\n if (siblings) {\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return fakerKeywordMapper.integer(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.integer()\n },\n datetime(tree) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.datetime)) return undefined\n\n return fakerKeywordMapper.datetime()\n },\n date(tree, options) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.date)) return undefined\n\n return fakerKeywordMapper.date(current.args.type, options.dateParser)\n },\n time(tree, options) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.time)) return undefined\n\n return fakerKeywordMapper.time(current.args.type, options.dateParser)\n },\n },\n})\n","import transformers from '@kubb/core/transformers'\nimport type { Schema } from '@kubb/plugin-oas'\nimport { File, Function, FunctionParams } from '@kubb/react-fabric'\nimport type { KubbNode } from '@kubb/react-fabric/types'\nimport * as parserFaker from '../parser.ts'\nimport type { PluginFaker } from '../types.ts'\n\ntype Props = {\n name: string\n typeName: string\n tree: Array<Schema>\n seed?: PluginFaker['options']['seed']\n description?: string\n regexGenerator?: PluginFaker['options']['regexGenerator']\n mapper?: PluginFaker['options']['mapper']\n dateParser?: PluginFaker['options']['dateParser']\n canOverride: boolean\n}\n\nexport function Faker({ tree, description, name, typeName, seed, regexGenerator, canOverride, mapper, dateParser }: Props): KubbNode {\n const fakerText = parserFaker.joinItems(\n tree\n .map((schema, _index, siblings) =>\n parserFaker.parse(\n { name, schema, parent: undefined, current: schema, siblings },\n {\n typeName,\n regexGenerator,\n mapper,\n canOverride,\n dateParser,\n },\n ),\n )\n .filter(Boolean),\n )\n\n const isArray = fakerText.startsWith('faker.helpers.arrayElements') || fakerText.startsWith('faker.helpers.multiple')\n const isObject = fakerText.startsWith('{')\n const isTuple = fakerText.startsWith('faker.helpers.arrayElement')\n\n const isSimpleString = name === 'string'\n const isSimpleInt = name === 'integer'\n const isSimpleFloat = name === 'float'\n\n let fakerTextWithOverride = fakerText\n\n if (canOverride && isObject) {\n fakerTextWithOverride = `{\n ...${fakerText},\n ...data || {}\n}`\n }\n\n if (canOverride && isTuple) {\n fakerTextWithOverride = `data || ${fakerText}`\n }\n\n if (canOverride && isArray) {\n fakerTextWithOverride = `[\n ...${fakerText},\n ...data || []\n ]`\n }\n\n if (canOverride && isSimpleString) {\n fakerTextWithOverride = 'data ?? faker.string.alpha()'\n }\n\n if (canOverride && isSimpleInt) {\n fakerTextWithOverride = 'data ?? faker.number.int()'\n }\n\n if (canOverride && isSimpleFloat) {\n fakerTextWithOverride = 'data ?? faker.number.float()'\n }\n\n let type = `Partial<${typeName}>`\n\n if (isArray) type = typeName\n else if (isSimpleString) type = name\n else if (isSimpleInt || isSimpleFloat) type = 'number'\n\n const params = FunctionParams.factory({\n data: {\n // making a partial out of an array does not make sense\n type,\n optional: true,\n },\n })\n\n let returnType = canOverride ? typeName : undefined\n\n if (isSimpleString || isSimpleInt || isSimpleFloat) returnType = type\n\n return (\n <File.Source name={name} isExportable isIndexable>\n <Function\n export\n name={name}\n JSDoc={{ comments: [description ? `@description ${transformers.jsStringEscape(description)}` : undefined].filter(Boolean) }}\n params={canOverride ? params.toConstructor() : undefined}\n returnType={returnType}\n >\n {seed ? `faker.seed(${JSON.stringify(seed)})` : undefined}\n <br />\n {`return ${fakerTextWithOverride}`}\n </Function>\n </File.Source>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAM,qBAAqB;CACzB,WAAW;CACX,eAAe;CACf,YAAY;CACZ,SAAS,KAAc,QAAiB;AACtC,MAAI,QAAQ,UAAa,QAAQ,OAC/B,QAAO,6BAA6B,IAAI,SAAS,IAAI;AAGvD,MAAI,QAAQ,OACV,QAAO,6BAA6B,IAAI;AAG1C,MAAI,QAAQ,OACV,QAAO,6BAA6B,IAAI;AAG1C,SAAO;;CAET,UAAU,KAAc,QAAiB;AACvC,MAAI,QAAQ,UAAa,QAAQ,OAC/B,QAAO,2BAA2B,IAAI,SAAS,IAAI;AAGrD,MAAI,QAAQ,OACV,QAAO,2BAA2B,IAAI;AAGxC,MAAI,QAAQ,OACV,QAAO,2BAA2B,IAAI;AAGxC,SAAO;;CAET,SAAS,KAAc,QAAiB;AACtC,MAAI,QAAQ,UAAa,QAAQ,OAC/B,QAAO,uCAAuC,IAAI,SAAS,IAAI;AAGjE,MAAI,QAAQ,OACV,QAAO,gCAAgC,IAAI;AAG7C,MAAI,QAAQ,OACV,QAAO,gCAAgC,IAAI;AAG7C,SAAO;;CAET,eAAe;CACf,iBAAiB;CACjB,YAAY;CACZ,QAAQ,QAAkB,EAAE,EAAE,KAAc,QAAiB;AAC3D,MAAI,MAAM,SAAS,EACjB,QAAO,gCAAgC,MAAM,KAAK,KAAK,CAAC;EAE1D,MAAM,OAAO,MAAM,GAAG,EAAE;AAExB,MAAI,QAAQ,UAAa,QAAQ,OAC/B,QAAO,iCAAiC,KAAK,qBAAqB,IAAI,SAAS,IAAI;AAErF,MAAI,QAAQ,OACV,QAAO,iCAAiC,KAAK,cAAc,IAAI;AAEjE,MAAI,QAAQ,OACV,QAAO,iCAAiC,KAAK,6BAA6B,IAAI;AAGhF,SAAO,iCAAiC,KAAK;;CAE/C,QAAQ,QAAkB,EAAE,KAAK,IAAI,MAAM,KAAK,KAAK,CAAC;CACtD,OAAO,QAAsD,EAAE,EAAE,OAAO,UAAU,8BAA8B,KAAK,KAAK,MAAM,KAAK,KAAK,CAAC;CAC3I,QAAQ,QAAkB,EAAE,KAAK,oCAAoC,MAAM,KAAK,KAAK,CAAC;CAItF,gBAAgB;CAMhB,OAAO,OAA0B,UAAU,SAAgC,YAAY;AACrF,MAAI,SAAS,UAAU;AACrB,OAAI,WAAW,QACb,QAAO,GAAG,OAAO;AAEnB,UAAO;;AAGT,MAAI,WAAW,QACb,OAAM,IAAI,MAAM,SAAS,KAAK,gBAAgB,OAAO,yBAAyB;AAGhF,SAAO;;CAOT,OAAO,OAA0B,UAAU,SAAgC,YAAY;AACrF,MAAI,SAAS,UAAU;AACrB,OAAI,WAAW,QACb,QAAO,GAAG,OAAO;AAEnB,UAAO;;AAGT,MAAI,WAAW,QACb,OAAM,IAAI,MAAM,SAAS,KAAK,gBAAgB,OAAO,yBAAyB;AAGhF,SAAO;;CAET,YAAY;CACZ,WAAW;CACX,MAAM,QAAkB,EAAE,KAAK,qBAAqB,MAAM,KAAK,KAAK,CAAC;CACrE,cAAc;CACd,WAAW;CACX,UAAU,QAAQ,IAAI,iBAAsC,YAAY;AACtE,MAAI,mBAAmB,UACrB,QAAO,GAAGA,iCAAa,eAAe,OAAO,UAAU,CAAC;AAE1D,SAAO,6BAA6B,MAAM;;CAE5C,aAAa;CACb,iBAAiB;CACjB,gBAAgB;CAChB,gBAAgB;CAChB,aAAa;CACb,YAAY;CACZ,SAAS;CACT,UAAU;CACV,QAAQ,UAA6B,SAAoB;CACzD,KAAK;CACL,KAAK;CACL,UAAU;CACV,SAAS;CACT,UAAU;CACV,UAAU;CACV,WAAW;CACX,YAAY;CACZ,SAAS;CACT,QAAQ;CACR,UAAU;CACV,MAAM;CACN,WAAW;CACX,kBAAkB;CAClB,kBAAkB;CACnB;;;;AAMD,SAAS,oBAAoB,IAAY,GAAW;AAClD,KAAI,EAAE,YAAY,OAChB,QAAO;AAGT,QAAO;;AAGT,SAAgB,UAAU,OAAyB;AACjD,SAAQ,MAAM,QAAd;EACE,KAAK,EACH,QAAO;EACT,KAAK,EACH,QAAO,MAAM;EACf,QACE,QAAO,mBAAmB,MAAM,MAAM;;;AAY5C,MAAa,4CAA4C;CACvD,QAAQ;CACR,UAAU;EACR,MAAM,MAAM,SAAS;GACnB,MAAM,EAAE,SAAS,QAAQ,MAAM,aAAa;AAC5C,OAAI,kCAAW,SAASC,iCAAe,MAAM,CAAE,QAAO;AAEtD,OAAI,MAAM,QAAQ,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,OAC/C,QAAO;AAGT,UAAO,mBAAmB,MACxB,QAAQ,KAAK,KAAK,OAAO,KAAK,MAAM;IAAE;IAAQ,QAAQ;IAAS;IAAM,SAAS;IAAI;IAAU,EAAE;IAAE,GAAG;IAAS,aAAa;IAAO,CAAC,CAAC,CAAC,OAAO,QAAQ,CACnJ;;EAEH,IAAI,MAAM,SAAS;GACjB,MAAM,EAAE,SAAS,QAAQ,aAAa;AACtC,OAAI,kCAAW,SAASA,iCAAe,IAAI,CAAE,QAAO;AAEpD,UAAO,mBAAmB,IACxB,QAAQ,KAAK,KAAK,OAAO,KAAK,MAAM;IAAE;IAAQ,QAAQ;IAAS,SAAS;IAAI;IAAU,EAAE;IAAE,GAAG;IAAS,aAAa;IAAO,CAAC,CAAC,CAAC,OAAO,QAAQ,CAC7I;;EAEH,MAAM,MAAM,SAAS;GACnB,MAAM,EAAE,SAAS,WAAW;AAC5B,OAAI,kCAAW,SAASA,iCAAe,MAAM,CAAE,QAAO;AAEtD,UAAO,mBAAmB,MACxB,QAAQ,KAAK,MACV,KAAK,OACJ,KAAK,MACH;IAAE;IAAQ,QAAQ;IAAS,SAAS;IAAI,UAAU,QAAQ,KAAK;IAAO,EACtE;IACE,GAAG;IACH,UAAU,eAAe,QAAQ,SAAS;IAC1C,aAAa;IACd,CACF,CACF,CACA,OAAO,QAAQ,EAClB,QAAQ,KAAK,KACb,QAAQ,KAAK,IACd;;EAEH,KAAK,MAAM,SAAS;GAClB,MAAM,EAAE,SAAS,QAAQ,SAAS;AAClC,OAAI,kCAAW,SAASA,iCAAe,KAAK,CAAE,QAAO;AAIrD,OAFsB,0CAAmB,QAAQA,iCAAe,MAAM,GAAG,MAGvE,QAAO,mBAAmB,KACxB,QAAQ,KAAK,MAAM,KAAK,WAAW;AACjC,QAAI,OAAO,WAAW,SACpB,QAAO,OAAO;AAGhB,QAAI,OAAO,WAAW,UACpB,QAAO,OAAO;AAEhB,WAAOD,iCAAa,UAAU,OAAO,MAAM;KAC3C,CACH;AAGH,UAAO,mBAAmB,KACxB,QAAQ,KAAK,MAAM,KAAK,WAAW;AACjC,QAAI,OAAO,WAAW,SACpB,QAAO,OAAO;AAEhB,QAAI,OAAO,WAAW,UACpB,QAAO,OAAO;AAEhB,WAAOA,iCAAa,UAAU,OAAO,MAAM;KAC3C,EAEF,OAAO,QAAQ,WAAW,OAC3B;;EAEH,IAAI,MAAM,SAAS;GACjB,MAAM,EAAE,YAAY;AACpB,OAAI,kCAAW,SAASC,iCAAe,IAAI,CAAE,QAAO;AAEpD,OAAI,CAAC,QAAQ,MAAM,KACjB,OAAM,IAAI,MAAM,gCAAgC,QAAQ,UAAU;AAGpE,OAAI,QAAQ,YACV,QAAO,GAAG,QAAQ,KAAK,KAAK;AAG9B,UAAO,GAAG,QAAQ,KAAK,KAAK;;EAE9B,OAAO,MAAM,SAAS;GACpB,MAAM,EAAE,SAAS,WAAW;AAC5B,OAAI,kCAAW,SAASA,iCAAe,OAAO,CAAE,QAAO;AAkCvD,UAAO,IAhCY,OAAO,QAAQ,QAAQ,MAAM,cAAc,EAAE,CAAC,CAC9D,QAAQ,SAAS;IAChB,MAAMC,WAAS,KAAK;AACpB,WAAOA,YAAU,OAAOA,SAAO,QAAQ;KACvC,CACD,KAAK,CAAC,MAAM,aAAa;IAExB,MAAM,aADa,QAAQ,MAAM,aAAWA,SAAO,YAAYD,iCAAe,KAAK,EACpD,QAAQ;AAGvC,QAAI,QAAQ,SAAS,YACnB,QAAO,IAAI,KAAK,KAAK,QAAQ,SAAS;AAGxC,WAAO,IAAI,KAAK,KAAK,UACnB,QACG,KAAK,oBAAoB,CACzB,KAAK,OACJ,KAAK,MACH;KAAE;KAAQ;KAAM,QAAQ;KAAS,SAAS;KAAI,UAAU;KAAS,EACjE;KACE,GAAG;KACH,UAAU,eAAe,QAAQ,SAAS,IAAI,KAAK,UAAU,KAAK,CAAC;KACnE,aAAa;KACd,CACF,CACF,CACA,OAAO,QAAQ,CACnB;KACD,CACD,KAAK,IAAI,CAEU;;EAExB,MAAM,MAAM,SAAS;GACnB,MAAM,EAAE,SAAS,QAAQ,aAAa;AACtC,OAAI,kCAAW,SAASA,iCAAe,MAAM,CAAE,QAAO;AAEtD,OAAI,MAAM,QAAQ,QAAQ,KAAK,MAAM,CACnC,QAAO,mBAAmB,MACxB,QAAQ,KAAK,MAAM,KAAK,OAAO,KAAK,MAAM;IAAE;IAAQ,QAAQ;IAAS,SAAS;IAAI;IAAU,EAAE;IAAE,GAAG;IAAS,aAAa;IAAO,CAAC,CAAC,CAAC,OAAO,QAAQ,CACnJ;AAGH,UAAO,KAAK,MAAM;IAAE;IAAQ,QAAQ;IAAS,SAAS,QAAQ,KAAK;IAAO;IAAU,EAAE;IAAE,GAAG;IAAS,aAAa;IAAO,CAAC;;EAE3H,MAAM,MAAM,UAAU;GACpB,MAAM,EAAE,YAAY;AACpB,OAAI,kCAAW,SAASA,iCAAe,MAAM,CAAE,QAAO;AAEtD,OAAI,QAAQ,KAAK,WAAW,YAAY,QAAQ,KAAK,SAAS,OAC5D,QAAO,mBAAmB,MAAM,QAAQ,KAAK,MAAM,UAAU,CAAC;AAEhE,UAAO,mBAAmB,MAAMD,iCAAa,UAAU,QAAQ,KAAK,MAAM,CAAC;;EAE7E,QAAQ,MAAM,SAAS;GACrB,MAAM,EAAE,YAAY;AACpB,OAAI,kCAAW,SAASC,iCAAe,QAAQ,CAAE,QAAO;AAExD,OAAI,QAAQ,KACV,QAAO,mBAAmB,QAAQ,QAAQ,MAAM,QAAQ,eAAe;;EAI3E,KAAK,MAAM;GACT,MAAM,EAAE,YAAY;AACpB,OAAI,kCAAW,SAASA,iCAAe,KAAK,CAAE,QAAO;AAErD,UAAO,mBAAmB,MAAM;;EAElC,UAAU,MAAM;GACd,MAAM,EAAE,YAAY;AACpB,OAAI,kCAAW,SAASA,iCAAe,UAAU,CAAE,QAAO;AAE1D,UAAO,mBAAmB,WAAW;;EAEvC,IAAI,MAAM;GACR,MAAM,EAAE,YAAY;AACpB,OAAI,kCAAW,SAASA,iCAAe,IAAI,CAAE,QAAO;AAEpD,UAAO,mBAAmB,KAAK;;EAEjC,OAAO,MAAM,UAAU;GACrB,MAAM,EAAE,SAAS,aAAa;AAC9B,OAAI,kCAAW,SAASA,iCAAe,OAAO,CAAE,QAAO;AAEvD,OAAI,UAAU;IACZ,MAAM,qDAA8B,UAAU,MAAM;IACpD,MAAM,qDAA8B,UAAU,MAAM;AAEpD,WAAO,mBAAmB,OAAO,WAAW,MAAM,WAAW,KAAK;;AAGpE,UAAO,mBAAmB,QAAQ;;EAEpC,OAAO,MAAM,UAAU;GACrB,MAAM,EAAE,SAAS,aAAa;AAC9B,OAAI,kCAAW,SAASA,iCAAe,OAAO,CAAE,QAAO;AAEvD,OAAI,UAAU;IACZ,MAAM,qDAA8B,UAAU,MAAM;IACpD,MAAM,qDAA8B,UAAU,MAAM;AAEpD,WAAO,mBAAmB,OAAO,WAAW,MAAM,WAAW,KAAK;;AAGpE,UAAO,mBAAmB,QAAQ;;EAEpC,QAAQ,MAAM,UAAU;GACtB,MAAM,EAAE,SAAS,aAAa;AAC9B,OAAI,kCAAW,SAASA,iCAAe,QAAQ,CAAE,QAAO;AAExD,OAAI,UAAU;IACZ,MAAM,qDAA8B,UAAU,MAAM;IACpD,MAAM,qDAA8B,UAAU,MAAM;AAEpD,WAAO,mBAAmB,QAAQ,WAAW,MAAM,WAAW,KAAK;;AAGrE,UAAO,mBAAmB,SAAS;;EAErC,SAAS,MAAM;GACb,MAAM,EAAE,YAAY;AACpB,OAAI,kCAAW,SAASA,iCAAe,SAAS,CAAE,QAAO;AAEzD,UAAO,mBAAmB,UAAU;;EAEtC,KAAK,MAAM,SAAS;GAClB,MAAM,EAAE,YAAY;AACpB,OAAI,kCAAW,SAASA,iCAAe,KAAK,CAAE,QAAO;AAErD,UAAO,mBAAmB,KAAK,QAAQ,KAAK,MAAM,QAAQ,WAAW;;EAEvE,KAAK,MAAM,SAAS;GAClB,MAAM,EAAE,YAAY;AACpB,OAAI,kCAAW,SAASA,iCAAe,KAAK,CAAE,QAAO;AAErD,UAAO,mBAAmB,KAAK,QAAQ,KAAK,MAAM,QAAQ,WAAW;;EAExE;CACF,CAAC;;;;ACtZF,SAAgB,MAAM,EAAE,MAAM,aAAa,MAAM,UAAU,MAAM,gBAAgB,aAAa,QAAQ,cAA+B;CACnI,MAAM,YAAYE,UAChB,KACG,KAAK,QAAQ,QAAQ,aACpBC,MACE;EAAE;EAAM;EAAQ,QAAQ;EAAW,SAAS;EAAQ;EAAU,EAC9D;EACE;EACA;EACA;EACA;EACA;EACD,CACF,CACF,CACA,OAAO,QAAQ,CACnB;CAED,MAAM,UAAU,UAAU,WAAW,8BAA8B,IAAI,UAAU,WAAW,yBAAyB;CACrH,MAAM,WAAW,UAAU,WAAW,IAAI;CAC1C,MAAM,UAAU,UAAU,WAAW,6BAA6B;CAElE,MAAM,iBAAiB,SAAS;CAChC,MAAM,cAAc,SAAS;CAC7B,MAAM,gBAAgB,SAAS;CAE/B,IAAI,wBAAwB;AAE5B,KAAI,eAAe,SACjB,yBAAwB;OACrB,UAAU;;;AAKf,KAAI,eAAe,QACjB,yBAAwB,WAAW;AAGrC,KAAI,eAAe,QACjB,yBAAwB;WACjB,UAAU;;;AAKnB,KAAI,eAAe,eACjB,yBAAwB;AAG1B,KAAI,eAAe,YACjB,yBAAwB;AAG1B,KAAI,eAAe,cACjB,yBAAwB;CAG1B,IAAI,OAAO,WAAW,SAAS;AAE/B,KAAI,QAAS,QAAO;UACX,eAAgB,QAAO;UACvB,eAAe,cAAe,QAAO;CAE9C,MAAM,SAASC,mCAAe,QAAQ,EACpC,MAAM;EAEJ;EACA,UAAU;EACX,EACF,CAAC;CAEF,IAAI,aAAa,cAAc,WAAW;AAE1C,KAAI,kBAAkB,eAAe,cAAe,cAAa;AAEjE,QACE,yDAACC,yBAAK;EAAa;EAAM;EAAa;YACpC,0DAACC;GACC;GACM;GACN,OAAO,EAAE,UAAU,CAAC,cAAc,gBAAgBC,iCAAa,eAAe,YAAY,KAAK,OAAU,CAAC,OAAO,QAAQ,EAAE;GAC3H,QAAQ,cAAc,OAAO,eAAe,GAAG;GACnC;;IAEX,OAAO,cAAc,KAAK,UAAU,KAAK,CAAC,KAAK;IAChD,yDAAC,SAAK;IACL,UAAU;;IACF;GACC"}
|