date.mjs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { setResponseValueAndErrors } from "../errorMessages.mjs";
  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. };
  47. //# sourceMappingURL=date.mjs.map