-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
index.js
41 lines (37 loc) · 844 Bytes
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
'use strict';
var hasBigInts = require('has-bigints')();
if (hasBigInts) {
var bigIntValueOf = BigInt.prototype.valueOf;
/** @type {(value: object) => value is BigInt} */
var tryBigInt = function tryBigIntObject(value) {
try {
bigIntValueOf.call(value);
return true;
} catch (e) {
}
return false;
};
/** @type {import('.')} */
module.exports = function isBigInt(value) {
if (
value === null
|| typeof value === 'undefined'
|| typeof value === 'boolean'
|| typeof value === 'string'
|| typeof value === 'number'
|| typeof value === 'symbol'
|| typeof value === 'function'
) {
return false;
}
if (typeof value === 'bigint') {
return true;
}
return tryBigInt(value);
};
} else {
/** @type {import('.')} */
module.exports = function isBigInt(value) {
return false && value;
};
}