@kubb/plugin-faker 5.1.0-canary.20261008T204013 → 5.1.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/dist/index.cjs +36 -29
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +10 -1
- package/dist/index.js +36 -29
- package/dist/index.js.map +1 -1
- package/package.json +7 -10
package/dist/index.cjs
CHANGED
|
@@ -574,14 +574,14 @@ const SCALAR_TYPES = /* @__PURE__ */ new Set([
|
|
|
574
574
|
"enum"
|
|
575
575
|
]);
|
|
576
576
|
const declarationPrinter = (0, _kubb_plugin_ts.functionPrinter)({ mode: "declaration" });
|
|
577
|
-
function Faker({ node, description, name, typeName, printer, canOverride }) {
|
|
577
|
+
function Faker({ node, description, name, typeName, printer, canOverride, typeMode = "inferred" }) {
|
|
578
578
|
const fakerText = printer.print(node) ?? "undefined";
|
|
579
579
|
const isArray = node.type === "array";
|
|
580
580
|
const isObject = OBJECT_TYPES.has(node.type);
|
|
581
581
|
const isTuple = node.type === "tuple";
|
|
582
582
|
const isScalar = SCALAR_TYPES.has(node.type);
|
|
583
583
|
const isUnion = node.type === "union";
|
|
584
|
-
const
|
|
584
|
+
const useObjectOverride = canOverride && isObject;
|
|
585
585
|
const fakerTextWithOverride = (() => {
|
|
586
586
|
if (canOverride && node.type === "tuple") return `data && data.length === ${node.items?.length ?? 0} && !data.includes(undefined) ? data : ${fakerText}`;
|
|
587
587
|
if (canOverride && isArray) return `[\n ...${fakerText},\n ...(data || []).filter((item) => item !== undefined),\n]`;
|
|
@@ -589,7 +589,7 @@ function Faker({ node, description, name, typeName, printer, canOverride }) {
|
|
|
589
589
|
return fakerText;
|
|
590
590
|
})();
|
|
591
591
|
const { dataType, returnType: resolvedReturnType } = resolveFakerTypeUsage(node, typeName, canOverride);
|
|
592
|
-
if (!
|
|
592
|
+
if (!useObjectOverride) {
|
|
593
593
|
const dataParamName = /\bdata\b/.test(fakerTextWithOverride) ? "data" : "_data";
|
|
594
594
|
const params = (0, _kubb_plugin_ts.createFunctionParameters)({ params: [(0, _kubb_plugin_ts.createFunctionParameter)({
|
|
595
595
|
name: dataParamName,
|
|
@@ -613,31 +613,35 @@ function Faker({ node, description, name, typeName, printer, canOverride }) {
|
|
|
613
613
|
})
|
|
614
614
|
});
|
|
615
615
|
}
|
|
616
|
-
const
|
|
616
|
+
const returnType = typeMode === "schema" ? typeName : "Omit<typeof defaultFakeData, keyof NoInfer<TData>> & NoInfer<TData>";
|
|
617
617
|
const { cyclicSchemas, schemaName } = printer.options;
|
|
618
618
|
const functionBody = node.type === "object" && !!cyclicSchemas && (node.properties ?? []).some((p) => (0, kubb_kit.containsCircularRef)(p.schema, {
|
|
619
619
|
circularSchemas: cyclicSchemas,
|
|
620
620
|
excludeName: schemaName
|
|
621
|
-
})) ? `{
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
Object.defineProperty(defaultFakeData, key, { value, configurable: true, writable: true, enumerable: true })
|
|
626
|
-
}
|
|
621
|
+
})) ? `const defaultFakeData = ${fakerText}
|
|
622
|
+
if (data) {
|
|
623
|
+
for (const [key, value] of Object.entries(data)) {
|
|
624
|
+
Object.defineProperty(defaultFakeData, key, { value, configurable: true, writable: true, enumerable: true })
|
|
627
625
|
}
|
|
628
|
-
|
|
629
|
-
}` : `{
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
}`;
|
|
636
|
-
return /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsxs)(kubb_jsx.File.Source, {
|
|
626
|
+
}
|
|
627
|
+
return defaultFakeData as ${returnType}` : `const defaultFakeData = ${fakerText}
|
|
628
|
+
return {
|
|
629
|
+
...defaultFakeData,
|
|
630
|
+
...(data || {}),
|
|
631
|
+
} as ${returnType}`;
|
|
632
|
+
return /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.File.Source, {
|
|
637
633
|
name,
|
|
638
634
|
isExportable: true,
|
|
639
635
|
isIndexable: true,
|
|
640
|
-
children:
|
|
636
|
+
children: /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.Function, {
|
|
637
|
+
export: true,
|
|
638
|
+
name,
|
|
639
|
+
JSDoc: { comments: description ? [`@description ${jsStringEscape(description)}`] : [] },
|
|
640
|
+
generics: typeMode === "schema" ? void 0 : `TData extends Partial<${typeName}> = object`,
|
|
641
|
+
params: typeMode === "schema" ? `data?: Partial<${typeName}>` : "data?: TData",
|
|
642
|
+
returnType: typeMode === "schema" ? typeName : void 0,
|
|
643
|
+
children: functionBody
|
|
644
|
+
})
|
|
641
645
|
});
|
|
642
646
|
}
|
|
643
647
|
//#endregion
|
|
@@ -1150,9 +1154,9 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
|
|
|
1150
1154
|
renderer: kubb_jsx.jsxRenderer,
|
|
1151
1155
|
schema(node, ctx) {
|
|
1152
1156
|
const { config, resolver, root } = ctx;
|
|
1153
|
-
const { output, group, dateParser, regexGenerator, seed, locale, printer } = ctx.options;
|
|
1154
|
-
const pluginTs = ctx.
|
|
1155
|
-
if (!node.name
|
|
1157
|
+
const { output, group, dateParser, regexGenerator, seed, locale, printer, typeMode } = ctx.options;
|
|
1158
|
+
const pluginTs = ctx.requirePlugin(_kubb_plugin_ts.pluginTsName);
|
|
1159
|
+
if (!node.name) return;
|
|
1156
1160
|
const tsResolver = ctx.driver.getResolver(_kubb_plugin_ts.pluginTsName);
|
|
1157
1161
|
const schemaName = node.name;
|
|
1158
1162
|
const isEnumSchema = !!kubb_kit.ast.narrowSchema(node, kubb_kit.ast.schemaTypes.enum);
|
|
@@ -1264,16 +1268,16 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
|
|
|
1264
1268
|
description: node.description,
|
|
1265
1269
|
node,
|
|
1266
1270
|
printer: printerInstance,
|
|
1267
|
-
canOverride
|
|
1271
|
+
canOverride,
|
|
1272
|
+
typeMode
|
|
1268
1273
|
})
|
|
1269
1274
|
]
|
|
1270
1275
|
});
|
|
1271
1276
|
},
|
|
1272
1277
|
operation(node, ctx) {
|
|
1273
1278
|
const { config, resolver, root } = ctx;
|
|
1274
|
-
const { output, group, dateParser, regexGenerator, seed, locale, printer } = ctx.options;
|
|
1275
|
-
const pluginTs = ctx.
|
|
1276
|
-
if (!pluginTs) return;
|
|
1279
|
+
const { output, group, dateParser, regexGenerator, seed, locale, printer, typeMode } = ctx.options;
|
|
1280
|
+
const pluginTs = ctx.requirePlugin(_kubb_plugin_ts.pluginTsName);
|
|
1277
1281
|
const tsResolver = ctx.driver.getResolver(_kubb_plugin_ts.pluginTsName);
|
|
1278
1282
|
const { path: pathParams, query: queryParams, header: headerParams } = getOperationParameters(node);
|
|
1279
1283
|
const paramGroups = [
|
|
@@ -1422,7 +1426,8 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
|
|
|
1422
1426
|
...printerInstance,
|
|
1423
1427
|
print: () => rewrittenFakerText
|
|
1424
1428
|
},
|
|
1425
|
-
canOverride
|
|
1429
|
+
canOverride,
|
|
1430
|
+
typeMode
|
|
1426
1431
|
})
|
|
1427
1432
|
] });
|
|
1428
1433
|
}
|
|
@@ -1549,13 +1554,14 @@ const pluginFaker = (0, kubb_kit.definePlugin)((options) => {
|
|
|
1549
1554
|
const { output = {
|
|
1550
1555
|
path: "mocks",
|
|
1551
1556
|
barrel: { type: "named" }
|
|
1552
|
-
}, seed, locale = "en", group, exclude = [], include, override = [], dateParser = "faker", regexGenerator = "faker", printer, resolver: userResolver, macros: userMacros } = options;
|
|
1557
|
+
}, seed, locale = "en", group, exclude = [], include, override = [], typeMode = "inferred", dateParser = "faker", regexGenerator = "faker", printer, resolver: userResolver, macros: userMacros } = options;
|
|
1553
1558
|
const groupConfig = createGroupConfig(group);
|
|
1554
1559
|
return {
|
|
1555
1560
|
name: pluginFakerName,
|
|
1556
1561
|
options,
|
|
1557
1562
|
dependencies: [_kubb_plugin_ts.pluginTsName],
|
|
1558
1563
|
hooks: { "kubb:plugin:setup"(ctx) {
|
|
1564
|
+
ctx.requirePlugin(_kubb_plugin_ts.pluginTsName);
|
|
1559
1565
|
ctx.setOptions({
|
|
1560
1566
|
output,
|
|
1561
1567
|
seed,
|
|
@@ -1563,6 +1569,7 @@ const pluginFaker = (0, kubb_kit.definePlugin)((options) => {
|
|
|
1563
1569
|
exclude,
|
|
1564
1570
|
include,
|
|
1565
1571
|
override,
|
|
1572
|
+
typeMode,
|
|
1566
1573
|
group: groupConfig,
|
|
1567
1574
|
dateParser,
|
|
1568
1575
|
regexGenerator,
|