tuple.mjs 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. import { parseDef } from "../parseDef.mjs";
  2. export function parseTupleDef(def, refs) {
  3. if (def.rest) {
  4. return {
  5. type: 'array',
  6. minItems: def.items.length,
  7. items: def.items
  8. .map((x, i) => parseDef(x._def, {
  9. ...refs,
  10. currentPath: [...refs.currentPath, 'items', `${i}`],
  11. }))
  12. .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),
  13. additionalItems: parseDef(def.rest._def, {
  14. ...refs,
  15. currentPath: [...refs.currentPath, 'additionalItems'],
  16. }),
  17. };
  18. }
  19. else {
  20. return {
  21. type: 'array',
  22. minItems: def.items.length,
  23. maxItems: def.items.length,
  24. items: def.items
  25. .map((x, i) => parseDef(x._def, {
  26. ...refs,
  27. currentPath: [...refs.currentPath, 'items', `${i}`],
  28. }))
  29. .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),
  30. };
  31. }
  32. }
  33. //# sourceMappingURL=tuple.mjs.map