Skip to content

Commit

Permalink
Backport kindOf fix from #4090
Browse files Browse the repository at this point in the history
  • Loading branch information
timdorr committed Aug 3, 2021
1 parent 9d8f68e commit ca9463d
Showing 1 changed file with 52 additions and 52 deletions.
104 changes: 52 additions & 52 deletions src/utils/kindOf.ts
@@ -1,64 +1,64 @@
export function kindOf(val: any): string {
let typeOfVal: string = typeof val
// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of
export function miniKindOf(val: any): string {
if (val === void 0) return 'undefined'
if (val === null) return 'null'

if (process.env.NODE_ENV !== 'production') {
// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of
function miniKindOf(val: any) {
if (val === void 0) return 'undefined'
if (val === null) return 'null'
const type = typeof val
switch (type) {
case 'boolean':
case 'string':
case 'number':
case 'symbol':
case 'function': {
return type
}
}

const type = typeof val
switch (type) {
case 'boolean':
case 'string':
case 'number':
case 'symbol':
case 'function': {
return type
}
}
if (Array.isArray(val)) return 'array'
if (isDate(val)) return 'date'
if (isError(val)) return 'error'

if (Array.isArray(val)) return 'array'
if (isDate(val)) return 'date'
if (isError(val)) return 'error'
const constructorName = ctorName(val)
switch (constructorName) {
case 'Symbol':
case 'Promise':
case 'WeakMap':
case 'WeakSet':
case 'Map':
case 'Set':
return constructorName
}

const constructorName = ctorName(val)
switch (constructorName) {
case 'Symbol':
case 'Promise':
case 'WeakMap':
case 'WeakSet':
case 'Map':
case 'Set':
return constructorName
}
// other
return type.slice(8, -1).toLowerCase().replace(/\s/g, '')
}

// other
return type.slice(8, -1).toLowerCase().replace(/\s/g, '')
}
function ctorName(val: any): string | null {
return typeof val.constructor === 'function' ? val.constructor.name : null
}

function ctorName(val: any): string | null {
return typeof val.constructor === 'function' ? val.constructor.name : null
}
function isError(val: any) {
return (
val instanceof Error ||
(typeof val.message === 'string' &&
val.constructor &&
typeof val.constructor.stackTraceLimit === 'number')
)
}

function isError(val: any) {
return (
val instanceof Error ||
(typeof val.message === 'string' &&
val.constructor &&
typeof val.constructor.stackTraceLimit === 'number')
)
}
function isDate(val: any) {
if (val instanceof Date) return true
return (
typeof val.toDateString === 'function' &&
typeof val.getDate === 'function' &&
typeof val.setDate === 'function'
)
}

function isDate(val: any) {
if (val instanceof Date) return true
return (
typeof val.toDateString === 'function' &&
typeof val.getDate === 'function' &&
typeof val.setDate === 'function'
)
}
export function kindOf(val: any) {
let typeOfVal: string = typeof val

if (process.env.NODE_ENV !== 'production') {
typeOfVal = miniKindOf(val)
}

Expand Down

0 comments on commit ca9463d

Please sign in to comment.