UNPKG

@technobuddha/library

Version:
53 lines (52 loc) 1.94 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.toPrimitive = void 0; var isPrimitive_1 = __importDefault(require("../isPrimitive")); var isNull_1 = __importDefault(require("lodash/isNull")); var isUndefined_1 = __importDefault(require("lodash/isUndefined")); /** * Convert an object into its primitive (string, number, etc.) value * * @param input the object * @param hint A "hint" as to what the type should be. "string", "number" or "default" * @returns primitive value */ function toPrimitive(input, hint) { if (hint === void 0) { hint = 'default'; } var wrapper = input; if (isPrimitive_1.default(input)) { if (isNull_1.default(input) || isUndefined_1.default(input)) return input; if (typeof (input) === 'string') wrapper = String.prototype; else if (typeof (input) === 'number') wrapper = Number.prototype; else if (typeof (input) === 'bigint') wrapper = BigInt.prototype; else if (typeof (input) === 'boolean') wrapper = Boolean.prototype; else wrapper = Symbol.prototype; } if (Symbol.toPrimitive in wrapper) { return wrapper[Symbol.toPrimitive].call(input, hint); } else if (hint === 'string') { if ('toString' in wrapper) return wrapper.toString.call(input); else if ('valueOf' in wrapper) return wrapper.valueOf.call(input); } else if ('valueOf' in wrapper) { return wrapper.valueOf.call(input); } else if ('toString' in wrapper) { return wrapper.toString.call(input); } throw new TypeError('Cannot convert object to a primitive value'); } exports.toPrimitive = toPrimitive; exports.default = toPrimitive;