blob: f8ea5641baba914a95f50c119c131d327d72dd19 [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001'use strict';
2
3var isString = require('is-string');
4var isNumber = require('is-number-object');
5var isBoolean = require('is-boolean-object');
6var isSymbol = require('is-symbol');
7var isBigInt = require('is-bigint');
8
9// eslint-disable-next-line consistent-return
10module.exports = function whichBoxedPrimitive(value) {
11 // eslint-disable-next-line eqeqeq
12 if (value == null || (typeof value !== 'object' && typeof value !== 'function')) {
13 return null;
14 }
15 if (isString(value)) {
16 return 'String';
17 }
18 if (isNumber(value)) {
19 return 'Number';
20 }
21 if (isBoolean(value)) {
22 return 'Boolean';
23 }
24 if (isSymbol(value)) {
25 return 'Symbol';
26 }
27 if (isBigInt(value)) {
28 return 'BigInt';
29 }
30};