selectParser.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import { ZodFirstPartyTypeKind } from "zod";
  2. import { parseAnyDef } from "./parsers/any.js";
  3. import { parseArrayDef } from "./parsers/array.js";
  4. import { parseBigintDef } from "./parsers/bigint.js";
  5. import { parseBooleanDef } from "./parsers/boolean.js";
  6. import { parseBrandedDef } from "./parsers/branded.js";
  7. import { parseCatchDef } from "./parsers/catch.js";
  8. import { parseDateDef } from "./parsers/date.js";
  9. import { parseDefaultDef } from "./parsers/default.js";
  10. import { parseEffectsDef } from "./parsers/effects.js";
  11. import { parseEnumDef } from "./parsers/enum.js";
  12. import { parseIntersectionDef } from "./parsers/intersection.js";
  13. import { parseLiteralDef } from "./parsers/literal.js";
  14. import { parseMapDef } from "./parsers/map.js";
  15. import { parseNativeEnumDef } from "./parsers/nativeEnum.js";
  16. import { parseNeverDef } from "./parsers/never.js";
  17. import { parseNullDef } from "./parsers/null.js";
  18. import { parseNullableDef } from "./parsers/nullable.js";
  19. import { parseNumberDef } from "./parsers/number.js";
  20. import { parseObjectDef } from "./parsers/object.js";
  21. import { parseOptionalDef } from "./parsers/optional.js";
  22. import { parsePipelineDef } from "./parsers/pipeline.js";
  23. import { parsePromiseDef } from "./parsers/promise.js";
  24. import { parseRecordDef } from "./parsers/record.js";
  25. import { parseSetDef } from "./parsers/set.js";
  26. import { parseStringDef } from "./parsers/string.js";
  27. import { parseTupleDef } from "./parsers/tuple.js";
  28. import { parseUndefinedDef } from "./parsers/undefined.js";
  29. import { parseUnionDef } from "./parsers/union.js";
  30. import { parseUnknownDef } from "./parsers/unknown.js";
  31. import { parseReadonlyDef } from "./parsers/readonly.js";
  32. export const selectParser = (def, typeName, refs) => {
  33. switch (typeName) {
  34. case ZodFirstPartyTypeKind.ZodString:
  35. return parseStringDef(def, refs);
  36. case ZodFirstPartyTypeKind.ZodNumber:
  37. return parseNumberDef(def, refs);
  38. case ZodFirstPartyTypeKind.ZodObject:
  39. return parseObjectDef(def, refs);
  40. case ZodFirstPartyTypeKind.ZodBigInt:
  41. return parseBigintDef(def, refs);
  42. case ZodFirstPartyTypeKind.ZodBoolean:
  43. return parseBooleanDef();
  44. case ZodFirstPartyTypeKind.ZodDate:
  45. return parseDateDef(def, refs);
  46. case ZodFirstPartyTypeKind.ZodUndefined:
  47. return parseUndefinedDef();
  48. case ZodFirstPartyTypeKind.ZodNull:
  49. return parseNullDef(refs);
  50. case ZodFirstPartyTypeKind.ZodArray:
  51. return parseArrayDef(def, refs);
  52. case ZodFirstPartyTypeKind.ZodUnion:
  53. case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:
  54. return parseUnionDef(def, refs);
  55. case ZodFirstPartyTypeKind.ZodIntersection:
  56. return parseIntersectionDef(def, refs);
  57. case ZodFirstPartyTypeKind.ZodTuple:
  58. return parseTupleDef(def, refs);
  59. case ZodFirstPartyTypeKind.ZodRecord:
  60. return parseRecordDef(def, refs);
  61. case ZodFirstPartyTypeKind.ZodLiteral:
  62. return parseLiteralDef(def, refs);
  63. case ZodFirstPartyTypeKind.ZodEnum:
  64. return parseEnumDef(def);
  65. case ZodFirstPartyTypeKind.ZodNativeEnum:
  66. return parseNativeEnumDef(def);
  67. case ZodFirstPartyTypeKind.ZodNullable:
  68. return parseNullableDef(def, refs);
  69. case ZodFirstPartyTypeKind.ZodOptional:
  70. return parseOptionalDef(def, refs);
  71. case ZodFirstPartyTypeKind.ZodMap:
  72. return parseMapDef(def, refs);
  73. case ZodFirstPartyTypeKind.ZodSet:
  74. return parseSetDef(def, refs);
  75. case ZodFirstPartyTypeKind.ZodLazy:
  76. return () => def.getter()._def;
  77. case ZodFirstPartyTypeKind.ZodPromise:
  78. return parsePromiseDef(def, refs);
  79. case ZodFirstPartyTypeKind.ZodNaN:
  80. case ZodFirstPartyTypeKind.ZodNever:
  81. return parseNeverDef();
  82. case ZodFirstPartyTypeKind.ZodEffects:
  83. return parseEffectsDef(def, refs);
  84. case ZodFirstPartyTypeKind.ZodAny:
  85. return parseAnyDef();
  86. case ZodFirstPartyTypeKind.ZodUnknown:
  87. return parseUnknownDef();
  88. case ZodFirstPartyTypeKind.ZodDefault:
  89. return parseDefaultDef(def, refs);
  90. case ZodFirstPartyTypeKind.ZodBranded:
  91. return parseBrandedDef(def, refs);
  92. case ZodFirstPartyTypeKind.ZodReadonly:
  93. return parseReadonlyDef(def, refs);
  94. case ZodFirstPartyTypeKind.ZodCatch:
  95. return parseCatchDef(def, refs);
  96. case ZodFirstPartyTypeKind.ZodPipeline:
  97. return parsePipelineDef(def, refs);
  98. case ZodFirstPartyTypeKind.ZodFunction:
  99. case ZodFirstPartyTypeKind.ZodVoid:
  100. case ZodFirstPartyTypeKind.ZodSymbol:
  101. return undefined;
  102. default:
  103. /* c8 ignore next */
  104. return ((_) => undefined)(typeName);
  105. }
  106. };