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