Ramda Adjunct 3.0.0

isSafeInteger.js

  1. import { bind, curryN } from 'ramda';
  2. import isFunction from './isFunction';
  3. import ponyfill from './internal/ponyfills/Number.isSafeInteger';
  4. export const isSafeIntegerPonyfill = curryN(1, ponyfill);
  5. /**
  6. * Checks whether the passed value is a safe `integer`.
  7. *
  8. * @func isSafeInteger
  9. * @memberOf RA
  10. * @since {@link https://char0n.github.io/ramda-adjunct/2.22.0|v2.22.0}
  11. * @category Type
  12. * @sig * -> Boolean
  13. * @param {*} val The value to test
  14. * @return {boolean}
  15. * @example
  16. *
  17. * RA.isSafeInteger(3); //=> true
  18. * RA.isSafeInteger(Math.pow(2, 53)) //=> false
  19. * RA.isSafeInteger(Math.pow(2, 53) - 1); //=> true
  20. * RA.isSafeInteger(NaN); //=> false
  21. * RA.isSafeInteger(Infinity); //=> false
  22. * RA.isSafeInteger('3') //=> false
  23. * RA.isSafeInteger(3.1); //=> false
  24. * RA.isSafeInteger(3.0); //=> true
  25. * RA.isSafeInteger('string'); //=> false
  26. * RA.isSafeInteger(null); //=> false
  27. * RA.isSafeInteger(undefined); //=> false
  28. * RA.isSafeInteger({}); //=> false
  29. * RA.isSafeInteger(() => { }); //=> false
  30. * RA.isSafeInteger(true); //=> false
  31. */
  32. const isSafeInteger = isFunction(Number.isSafeInteger)
  33. ? curryN(1, bind(Number.isSafeInteger, Number))
  34. : isSafeIntegerPonyfill;
  35. export default isSafeInteger;