UNPKG

@sanity/validation

Version:

Validation and warning infrastructure for Sanity projects

24 lines (19 loc) 882 B
// this file was adapted from a previous dependency `type-of-is` // https://github.com/stephenhandley/type-of-is/blob/7138a7e79f5af7c286bf8123f60843a91aaebf38/index.js const _toString = {}.toString const builtIns = [Object, Function, Array, String, Boolean, Number, Date, RegExp, Error] function isBuiltIn(_constructor: unknown) { for (let i = 0; i < builtIns.length; i++) { if (builtIns[i] === _constructor) return true } return false } export default function typeString(obj: unknown): string { // [object Blah] -> Blah const stringType = _toString.call(obj).slice(8, -1) if (obj === null || obj === undefined) return stringType.toLowerCase() // eslint-disable-next-line @typescript-eslint/ban-types const constructorType = (obj as object).constructor if (constructorType && !isBuiltIn(constructorType)) return constructorType.name return stringType }