@kubb/plugin-faker 5.1.0-canary.20261008T204013 → 5.1.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/index.cjs +16 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +10 -1
- package/dist/index.js +16 -11
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
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,7 +613,9 @@ function Faker({ node, description, name, typeName, printer, canOverride }) {
|
|
|
613
613
|
})
|
|
614
614
|
});
|
|
615
615
|
}
|
|
616
|
-
const
|
|
616
|
+
const jsdoc = description ? `/**\n * @description ${jsStringEscape(description)}\n */\n ` : "";
|
|
617
|
+
const functionSignature = typeMode === "schema" ? `${jsdoc}export function ${name}(data?: Partial<${typeName}>): ${typeName}` : `${jsdoc}export function ${name}<TData extends Partial<${typeName}> = object>(data?: TData)`;
|
|
618
|
+
const returnType = typeMode === "schema" ? typeName : "Omit<typeof defaultFakeData, keyof NoInfer<TData>> & NoInfer<TData>";
|
|
617
619
|
const { cyclicSchemas, schemaName } = printer.options;
|
|
618
620
|
const functionBody = node.type === "object" && !!cyclicSchemas && (node.properties ?? []).some((p) => (0, kubb_kit.containsCircularRef)(p.schema, {
|
|
619
621
|
circularSchemas: cyclicSchemas,
|
|
@@ -625,13 +627,13 @@ function Faker({ node, description, name, typeName, printer, canOverride }) {
|
|
|
625
627
|
Object.defineProperty(defaultFakeData, key, { value, configurable: true, writable: true, enumerable: true })
|
|
626
628
|
}
|
|
627
629
|
}
|
|
628
|
-
return defaultFakeData as
|
|
630
|
+
return defaultFakeData as ${returnType}
|
|
629
631
|
}` : `{
|
|
630
632
|
const defaultFakeData = ${fakerText}
|
|
631
633
|
return {
|
|
632
634
|
...defaultFakeData,
|
|
633
635
|
...(data || {}),
|
|
634
|
-
} as
|
|
636
|
+
} as ${returnType}
|
|
635
637
|
}`;
|
|
636
638
|
return /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsxs)(kubb_jsx.File.Source, {
|
|
637
639
|
name,
|
|
@@ -1150,7 +1152,7 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
|
|
|
1150
1152
|
renderer: kubb_jsx.jsxRenderer,
|
|
1151
1153
|
schema(node, ctx) {
|
|
1152
1154
|
const { config, resolver, root } = ctx;
|
|
1153
|
-
const { output, group, dateParser, regexGenerator, seed, locale, printer } = ctx.options;
|
|
1155
|
+
const { output, group, dateParser, regexGenerator, seed, locale, printer, typeMode } = ctx.options;
|
|
1154
1156
|
const pluginTs = ctx.driver.getPlugin(_kubb_plugin_ts.pluginTsName);
|
|
1155
1157
|
if (!node.name || !pluginTs) return;
|
|
1156
1158
|
const tsResolver = ctx.driver.getResolver(_kubb_plugin_ts.pluginTsName);
|
|
@@ -1264,14 +1266,15 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
|
|
|
1264
1266
|
description: node.description,
|
|
1265
1267
|
node,
|
|
1266
1268
|
printer: printerInstance,
|
|
1267
|
-
canOverride
|
|
1269
|
+
canOverride,
|
|
1270
|
+
typeMode
|
|
1268
1271
|
})
|
|
1269
1272
|
]
|
|
1270
1273
|
});
|
|
1271
1274
|
},
|
|
1272
1275
|
operation(node, ctx) {
|
|
1273
1276
|
const { config, resolver, root } = ctx;
|
|
1274
|
-
const { output, group, dateParser, regexGenerator, seed, locale, printer } = ctx.options;
|
|
1277
|
+
const { output, group, dateParser, regexGenerator, seed, locale, printer, typeMode } = ctx.options;
|
|
1275
1278
|
const pluginTs = ctx.driver.getPlugin(_kubb_plugin_ts.pluginTsName);
|
|
1276
1279
|
if (!pluginTs) return;
|
|
1277
1280
|
const tsResolver = ctx.driver.getResolver(_kubb_plugin_ts.pluginTsName);
|
|
@@ -1422,7 +1425,8 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
|
|
|
1422
1425
|
...printerInstance,
|
|
1423
1426
|
print: () => rewrittenFakerText
|
|
1424
1427
|
},
|
|
1425
|
-
canOverride
|
|
1428
|
+
canOverride,
|
|
1429
|
+
typeMode
|
|
1426
1430
|
})
|
|
1427
1431
|
] });
|
|
1428
1432
|
}
|
|
@@ -1549,7 +1553,7 @@ const pluginFaker = (0, kubb_kit.definePlugin)((options) => {
|
|
|
1549
1553
|
const { output = {
|
|
1550
1554
|
path: "mocks",
|
|
1551
1555
|
barrel: { type: "named" }
|
|
1552
|
-
}, seed, locale = "en", group, exclude = [], include, override = [], dateParser = "faker", regexGenerator = "faker", printer, resolver: userResolver, macros: userMacros } = options;
|
|
1556
|
+
}, seed, locale = "en", group, exclude = [], include, override = [], typeMode = "inferred", dateParser = "faker", regexGenerator = "faker", printer, resolver: userResolver, macros: userMacros } = options;
|
|
1553
1557
|
const groupConfig = createGroupConfig(group);
|
|
1554
1558
|
return {
|
|
1555
1559
|
name: pluginFakerName,
|
|
@@ -1563,6 +1567,7 @@ const pluginFaker = (0, kubb_kit.definePlugin)((options) => {
|
|
|
1563
1567
|
exclude,
|
|
1564
1568
|
include,
|
|
1565
1569
|
override,
|
|
1570
|
+
typeMode,
|
|
1566
1571
|
group: groupConfig,
|
|
1567
1572
|
dateParser,
|
|
1568
1573
|
regexGenerator,
|