number.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { addErrorMessage, setResponseValueAndErrors, } from "../errorMessages.js";
  2. export function parseNumberDef(def, refs) {
  3. const res = {
  4. type: "number",
  5. };
  6. if (!def.checks)
  7. return res;
  8. for (const check of def.checks) {
  9. switch (check.kind) {
  10. case "int":
  11. res.type = "integer";
  12. addErrorMessage(res, "type", check.message, refs);
  13. break;
  14. case "min":
  15. if (refs.target === "jsonSchema7") {
  16. if (check.inclusive) {
  17. setResponseValueAndErrors(res, "minimum", check.value, check.message, refs);
  18. }
  19. else {
  20. setResponseValueAndErrors(res, "exclusiveMinimum", check.value, check.message, refs);
  21. }
  22. }
  23. else {
  24. if (!check.inclusive) {
  25. res.exclusiveMinimum = true;
  26. }
  27. setResponseValueAndErrors(res, "minimum", check.value, check.message, refs);
  28. }
  29. break;
  30. case "max":
  31. if (refs.target === "jsonSchema7") {
  32. if (check.inclusive) {
  33. setResponseValueAndErrors(res, "maximum", check.value, check.message, refs);
  34. }
  35. else {
  36. setResponseValueAndErrors(res, "exclusiveMaximum", check.value, check.message, refs);
  37. }
  38. }
  39. else {
  40. if (!check.inclusive) {
  41. res.exclusiveMaximum = true;
  42. }
  43. setResponseValueAndErrors(res, "maximum", check.value, check.message, refs);
  44. }
  45. break;
  46. case "multipleOf":
  47. setResponseValueAndErrors(res, "multipleOf", check.value, check.message, refs);
  48. break;
  49. }
  50. }
  51. return res;
  52. }