date.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { setResponseValueAndErrors } from "../errorMessages.js";
  2. export function parseDateDef(def, refs, overrideDateStrategy) {
  3. const strategy = overrideDateStrategy ?? refs.dateStrategy;
  4. if (Array.isArray(strategy)) {
  5. return {
  6. anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)),
  7. };
  8. }
  9. switch (strategy) {
  10. case "string":
  11. case "format:date-time":
  12. return {
  13. type: "string",
  14. format: "date-time",
  15. };
  16. case "format:date":
  17. return {
  18. type: "string",
  19. format: "date",
  20. };
  21. case "integer":
  22. return integerDateParser(def, refs);
  23. }
  24. }
  25. const integerDateParser = (def, refs) => {
  26. const res = {
  27. type: "integer",
  28. format: "unix-time",
  29. };
  30. if (refs.target === "openApi3") {
  31. return res;
  32. }
  33. for (const check of def.checks) {
  34. switch (check.kind) {
  35. case "min":
  36. setResponseValueAndErrors(res, "minimum", check.value, // This is in milliseconds
  37. check.message, refs);
  38. break;
  39. case "max":
  40. setResponseValueAndErrors(res, "maximum", check.value, // This is in milliseconds
  41. check.message, refs);
  42. break;
  43. }
  44. }
  45. return res;
  46. };