nullable.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.parseNullableDef = void 0;
  4. const parseDef_1 = require("../parseDef.js");
  5. const union_1 = require("./union.js");
  6. function parseNullableDef(def, refs) {
  7. if (['ZodString', 'ZodNumber', 'ZodBigInt', 'ZodBoolean', 'ZodNull'].includes(def.innerType._def.typeName) &&
  8. (!def.innerType._def.checks || !def.innerType._def.checks.length)) {
  9. if (refs.target === 'openApi3' || refs.nullableStrategy === 'property') {
  10. return {
  11. type: union_1.primitiveMappings[def.innerType._def.typeName],
  12. nullable: true,
  13. };
  14. }
  15. return {
  16. type: [union_1.primitiveMappings[def.innerType._def.typeName], 'null'],
  17. };
  18. }
  19. if (refs.target === 'openApi3') {
  20. const base = (0, parseDef_1.parseDef)(def.innerType._def, {
  21. ...refs,
  22. currentPath: [...refs.currentPath],
  23. });
  24. if (base && '$ref' in base)
  25. return { allOf: [base], nullable: true };
  26. return base && { ...base, nullable: true };
  27. }
  28. const base = (0, parseDef_1.parseDef)(def.innerType._def, {
  29. ...refs,
  30. currentPath: [...refs.currentPath, 'anyOf', '0'],
  31. });
  32. return base && { anyOf: [base, { type: 'null' }] };
  33. }
  34. exports.parseNullableDef = parseNullableDef;
  35. //# sourceMappingURL=nullable.js.map