map.js 789 B

1234567891011121314151617181920212223242526
  1. import { parseDef } from "../parseDef.js";
  2. import { parseRecordDef } from "./record.js";
  3. import { parseAnyDef } from "./any.js";
  4. export function parseMapDef(def, refs) {
  5. if (refs.mapStrategy === "record") {
  6. return parseRecordDef(def, refs);
  7. }
  8. const keys = parseDef(def.keyType._def, {
  9. ...refs,
  10. currentPath: [...refs.currentPath, "items", "items", "0"],
  11. }) || parseAnyDef(refs);
  12. const values = parseDef(def.valueType._def, {
  13. ...refs,
  14. currentPath: [...refs.currentPath, "items", "items", "1"],
  15. }) || parseAnyDef(refs);
  16. return {
  17. type: "array",
  18. maxItems: 125,
  19. items: {
  20. type: "array",
  21. items: [keys, values],
  22. minItems: 2,
  23. maxItems: 2,
  24. },
  25. };
  26. }