secs.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. const minute = 60;
  4. const hour = minute * 60;
  5. const day = hour * 24;
  6. const week = day * 7;
  7. const year = day * 365.25;
  8. const REGEX = /^(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i;
  9. exports.default = (str) => {
  10. const matched = REGEX.exec(str);
  11. if (!matched) {
  12. throw new TypeError('Invalid time period format');
  13. }
  14. const value = parseFloat(matched[1]);
  15. const unit = matched[2].toLowerCase();
  16. switch (unit) {
  17. case 'sec':
  18. case 'secs':
  19. case 'second':
  20. case 'seconds':
  21. case 's':
  22. return Math.round(value);
  23. case 'minute':
  24. case 'minutes':
  25. case 'min':
  26. case 'mins':
  27. case 'm':
  28. return Math.round(value * minute);
  29. case 'hour':
  30. case 'hours':
  31. case 'hr':
  32. case 'hrs':
  33. case 'h':
  34. return Math.round(value * hour);
  35. case 'day':
  36. case 'days':
  37. case 'd':
  38. return Math.round(value * day);
  39. case 'week':
  40. case 'weeks':
  41. case 'w':
  42. return Math.round(value * week);
  43. default:
  44. return Math.round(value * year);
  45. }
  46. };