@kubb/plugin-faker 5.0.5 → 5.0.7
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 +15 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +15 -12
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -463,10 +463,14 @@ function buildResponseUnionSchema(node, resolver) {
|
|
|
463
463
|
}
|
|
464
464
|
return ast.factory.createSchema({
|
|
465
465
|
type: "union",
|
|
466
|
-
members: responses.map((response) =>
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
466
|
+
members: responses.map((response) => {
|
|
467
|
+
const schema = (response.content?.length ?? 0) === 1 ? response.content?.[0]?.schema : void 0;
|
|
468
|
+
return ast.factory.createSchema({
|
|
469
|
+
type: "ref",
|
|
470
|
+
name: resolver.response.status(node, response.statusCode),
|
|
471
|
+
schema
|
|
472
|
+
});
|
|
473
|
+
})
|
|
470
474
|
});
|
|
471
475
|
}
|
|
472
476
|
const SCALAR_TYPES$1 = /* @__PURE__ */ new Set([
|
|
@@ -528,11 +532,8 @@ function getScalarType(node, typeName) {
|
|
|
528
532
|
* Determines the data type, return type, and whether it uses the type name.
|
|
529
533
|
*/
|
|
530
534
|
function resolveFakerTypeUsage(node, typeName, canOverride) {
|
|
531
|
-
const isArray = node.type === "array";
|
|
532
|
-
const isTuple = node.type === "tuple";
|
|
533
535
|
const isScalar = SCALAR_TYPES$1.has(node.type);
|
|
534
536
|
let dataType = `Partial<${typeName}>`;
|
|
535
|
-
if (isArray || isTuple || node.type === "union" || node.type === "enum") dataType = typeName;
|
|
536
537
|
if (isScalar) dataType = getScalarType(node, typeName);
|
|
537
538
|
let returnType = canOverride ? typeName : null;
|
|
538
539
|
if (isScalar) returnType = getScalarType(node, typeName);
|
|
@@ -567,11 +568,12 @@ function Faker({ node, description, name, typeName, printer, canOverride }) {
|
|
|
567
568
|
const isObject = OBJECT_TYPES.has(node.type);
|
|
568
569
|
const isTuple = node.type === "tuple";
|
|
569
570
|
const isScalar = SCALAR_TYPES.has(node.type);
|
|
571
|
+
const isUnion = node.type === "union";
|
|
570
572
|
const useGenericOverride = canOverride && isObject;
|
|
571
573
|
const fakerTextWithOverride = (() => {
|
|
572
|
-
if (canOverride &&
|
|
573
|
-
if (canOverride && isArray) return `[\n ...${fakerText},\n ...(data || [])
|
|
574
|
-
if (canOverride && isScalar) return `data ?? ${fakerText}`;
|
|
574
|
+
if (canOverride && node.type === "tuple") return `data && data.length === ${node.items?.length ?? 0} && !data.includes(undefined) ? data : ${fakerText}`;
|
|
575
|
+
if (canOverride && isArray) return `[\n ...${fakerText},\n ...(data || []).filter((item) => item !== undefined),\n]`;
|
|
576
|
+
if (canOverride && (isScalar || isUnion)) return `data ?? ${fakerText}`;
|
|
575
577
|
return fakerText;
|
|
576
578
|
})();
|
|
577
579
|
const { dataType, returnType: resolvedReturnType } = resolveFakerTypeUsage(node, typeName, canOverride);
|
|
@@ -584,7 +586,7 @@ function Faker({ node, description, name, typeName, printer, canOverride }) {
|
|
|
584
586
|
})] });
|
|
585
587
|
const paramsSignature = declarationPrinter.print(params) ?? "";
|
|
586
588
|
const returnType = resolvedReturnType;
|
|
587
|
-
const returnExpression = node.type === "ref"
|
|
589
|
+
const returnExpression = canOverride && !!returnType && (node.type === "ref" || isArray || isTuple || isUnion) ? `${isTuple || isUnion ? `(${fakerTextWithOverride})` : fakerTextWithOverride} as ${returnType}` : fakerTextWithOverride;
|
|
588
590
|
return /* @__PURE__ */ jsx(File.Source, {
|
|
589
591
|
name,
|
|
590
592
|
isExportable: true,
|
|
@@ -1287,7 +1289,8 @@ const fakerGenerator = defineGenerator({
|
|
|
1287
1289
|
type: "union",
|
|
1288
1290
|
members: variants.map((variant) => ast.factory.createSchema({
|
|
1289
1291
|
type: "ref",
|
|
1290
|
-
name: variant.name
|
|
1292
|
+
name: variant.name,
|
|
1293
|
+
schema: variant.schema
|
|
1291
1294
|
}))
|
|
1292
1295
|
});
|
|
1293
1296
|
return [...variants.map((variant) => ({
|