nullable.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.parseNullableDef = void 0;
  4. const parseDef_js_1 = require("../parseDef.js");
  5. const union_js_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") {
  10. return {
  11. type: union_js_1.primitiveMappings[def.innerType._def.typeName],
  12. nullable: true,
  13. };
  14. }
  15. return {
  16. type: [
  17. union_js_1.primitiveMappings[def.innerType._def.typeName],
  18. "null",
  19. ],
  20. };
  21. }
  22. if (refs.target === "openApi3") {
  23. const base = (0, parseDef_js_1.parseDef)(def.innerType._def, {
  24. ...refs,
  25. currentPath: [...refs.currentPath],
  26. });
  27. if (base && "$ref" in base)
  28. return { allOf: [base], nullable: true };
  29. return base && { ...base, nullable: true };
  30. }
  31. const base = (0, parseDef_js_1.parseDef)(def.innerType._def, {
  32. ...refs,
  33. currentPath: [...refs.currentPath, "anyOf", "0"],
  34. });
  35. return base && { anyOf: [base, { type: "null" }] };
  36. }
  37. exports.parseNullableDef = parseNullableDef;