params.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /**
  2. * Frontend route parameter validation helpers (RHL-021).
  3. *
  4. * Goals:
  5. * - Catch obviously invalid params early (before any API calls / UI rendering).
  6. * - Keep helpers pure and easily testable.
  7. *
  8. * Conventions:
  9. * - branch: "NL01" (strict, uppercase)
  10. * - year: "YYYY"
  11. * - month: "MM" (01-12)
  12. * - day: "DD" (01-31)
  13. */
  14. const BRANCH_RE = /^NL\d{2}$/;
  15. const YEAR_RE = /^\d{4}$/;
  16. const MONTH_RE = /^(0[1-9]|1[0-2])$/;
  17. const DAY_RE = /^(0[1-9]|[12]\d|3[01])$/;
  18. /**
  19. * @param {unknown} value
  20. * @returns {boolean}
  21. */
  22. export function isValidBranchParam(value) {
  23. return typeof value === "string" && BRANCH_RE.test(value);
  24. }
  25. /**
  26. * @param {unknown} value
  27. * @returns {boolean}
  28. */
  29. export function isValidYearParam(value) {
  30. return typeof value === "string" && YEAR_RE.test(value);
  31. }
  32. /**
  33. * @param {unknown} value
  34. * @returns {boolean}
  35. */
  36. export function isValidMonthParam(value) {
  37. return typeof value === "string" && MONTH_RE.test(value);
  38. }
  39. /**
  40. * @param {unknown} value
  41. * @returns {boolean}
  42. */
  43. export function isValidDayParam(value) {
  44. return typeof value === "string" && DAY_RE.test(value);
  45. }