@kubb/plugin-faker 5.1.10 → 5.1.11
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 +20 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +21 -22
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.cjs
CHANGED
|
@@ -400,6 +400,12 @@ const NON_INLINABLE_RESPONSE_TYPES = /* @__PURE__ */ new Set([
|
|
|
400
400
|
function canOverrideSchema(node) {
|
|
401
401
|
return !NON_OVERRIDABLE_TYPES.has(node.type);
|
|
402
402
|
}
|
|
403
|
+
/**
|
|
404
|
+
* Follows a ref, including alias chains, to the schema it resolves to. Unresolved refs are returned as is.
|
|
405
|
+
*/
|
|
406
|
+
function resolveRefTarget(node) {
|
|
407
|
+
return node.type === "ref" && node.schema ? resolveRefTarget(node.schema) : node;
|
|
408
|
+
}
|
|
403
409
|
function shouldInlineSingleResponseSchema(schema) {
|
|
404
410
|
return !NON_INLINABLE_RESPONSE_TYPES.has(schema.type);
|
|
405
411
|
}
|
|
@@ -490,7 +496,7 @@ function resolveFakerTypeUsage(node, typeName, canOverride) {
|
|
|
490
496
|
return {
|
|
491
497
|
dataType,
|
|
492
498
|
returnType,
|
|
493
|
-
usesTypeName: dataType.includes(typeName) || Boolean(returnType?.includes(typeName))
|
|
499
|
+
usesTypeName: canOverride && dataType.includes(typeName) || Boolean(returnType?.includes(typeName))
|
|
494
500
|
};
|
|
495
501
|
}
|
|
496
502
|
//#endregion
|
|
@@ -894,18 +900,22 @@ function parseEnumValue(value) {
|
|
|
894
900
|
return value;
|
|
895
901
|
}
|
|
896
902
|
/**
|
|
897
|
-
* Reads the discriminator literal off a variant,
|
|
903
|
+
* Reads the discriminator literal off a variant, with whether its property is required, or
|
|
904
|
+
* `undefined` when it can't be determined.
|
|
898
905
|
*
|
|
899
906
|
* A variant carries exactly one discriminator value, so a property resolving to several literals
|
|
900
907
|
* (a `ref` to the enum shared by every branch, say) identifies no branch and narrows nothing.
|
|
901
908
|
*/
|
|
902
|
-
function
|
|
909
|
+
function getDiscriminator(member, discriminatorPropertyName) {
|
|
903
910
|
for (const property of kubb_kit.ast.resolveSchemaProperties({
|
|
904
911
|
node: member,
|
|
905
912
|
propertyName: discriminatorPropertyName
|
|
906
913
|
})) {
|
|
907
914
|
const values = kubb_kit.ast.getSchemaLiteralValues(property.schema);
|
|
908
|
-
if (values.length === 1) return
|
|
915
|
+
if (values.length === 1) return {
|
|
916
|
+
value: values[0],
|
|
917
|
+
required: property.required
|
|
918
|
+
};
|
|
909
919
|
}
|
|
910
920
|
}
|
|
911
921
|
/**
|
|
@@ -977,7 +987,7 @@ const printerFaker = kubb_kit.ast.createPrinter((options) => {
|
|
|
977
987
|
});
|
|
978
988
|
if (this.options.schemaName && refName === this.options.schemaName) return this.options.typeName ? `undefined as unknown as ${this.options.typeName}` : "undefined as unknown";
|
|
979
989
|
const resolvedName = node.ref ? this.options.resolver.name(refName) : refName;
|
|
980
|
-
if (!this.options.nestedInObject) return `${resolvedName}(data)`;
|
|
990
|
+
if (!this.options.nestedInObject && canOverrideSchema(resolveRefTarget(node))) return `${resolvedName}(data)`;
|
|
981
991
|
return `${resolvedName}()`;
|
|
982
992
|
},
|
|
983
993
|
enum(node) {
|
|
@@ -988,9 +998,10 @@ const printerFaker = kubb_kit.ast.createPrinter((options) => {
|
|
|
988
998
|
const { discriminatorPropertyName } = node;
|
|
989
999
|
const baseTypeName = this.options.typeName;
|
|
990
1000
|
return `faker.helpers.arrayElement([${mapSchemaMembers(node, (member) => {
|
|
991
|
-
const
|
|
992
|
-
if (baseTypeName &&
|
|
993
|
-
const
|
|
1001
|
+
const discriminator = discriminatorPropertyName ? getDiscriminator(member, discriminatorPropertyName) : void 0;
|
|
1002
|
+
if (baseTypeName && discriminator) {
|
|
1003
|
+
const key = `${JSON.stringify(discriminatorPropertyName)}${discriminator.required ? "" : "?"}`;
|
|
1004
|
+
const typeName = `Extract<NonNullable<${baseTypeName}>, { ${key}: ${parseEnumValue(discriminator.value)} }>`;
|
|
994
1005
|
return printNested(member, {
|
|
995
1006
|
typeName,
|
|
996
1007
|
nestedInObject: true,
|
|
@@ -1400,7 +1411,7 @@ var compatibility = {
|
|
|
1400
1411
|
};
|
|
1401
1412
|
//#endregion
|
|
1402
1413
|
//#region package.json
|
|
1403
|
-
var version = "5.1.
|
|
1414
|
+
var version = "5.1.11";
|
|
1404
1415
|
//#endregion
|
|
1405
1416
|
//#region src/resolvers/resolverFaker.ts
|
|
1406
1417
|
/**
|
|
@@ -1468,18 +1479,6 @@ const pluginFaker = (0, kubb_kit.defineExtension)({
|
|
|
1468
1479
|
path: "mocks",
|
|
1469
1480
|
barrel: { type: "named" }
|
|
1470
1481
|
}, seed, locale = "en", group, exclude = [], include, override = [], typeMode = "inferred", dateParser = "faker", regexGenerator = "faker", printer, resolver: userResolver, macros: userMacros } = options;
|
|
1471
|
-
(0, kubb_kit.assertPluginOption)({
|
|
1472
|
-
plugin: pluginFakerName,
|
|
1473
|
-
option: "typeMode",
|
|
1474
|
-
value: typeMode,
|
|
1475
|
-
allowed: ["inferred", "schema"]
|
|
1476
|
-
});
|
|
1477
|
-
(0, kubb_kit.assertPluginOption)({
|
|
1478
|
-
plugin: pluginFakerName,
|
|
1479
|
-
option: "regexGenerator",
|
|
1480
|
-
value: regexGenerator,
|
|
1481
|
-
allowed: ["faker", "randexp"]
|
|
1482
|
-
});
|
|
1483
1482
|
(0, kubb_kit.setResolver)(userResolver ? kubb_kit.Resolver.merge(resolverFaker, userResolver) : resolverFaker);
|
|
1484
1483
|
if (userMacros?.length) (0, kubb_kit.setMacros)(userMacros);
|
|
1485
1484
|
(0, kubb_kit.addGenerator)(fakerGenerator);
|