Skip to content

Commit

Permalink
Move miniKindOf out of if scope to fix ES5 compatibility issue
Browse files Browse the repository at this point in the history
Fixes #4089
  • Loading branch information
embeddedt committed May 22, 2021
1 parent 97a7798 commit 89a516c
Showing 1 changed file with 56 additions and 56 deletions.
112 changes: 56 additions & 56 deletions src/utils/kindOf.js
Original file line number Diff line number Diff line change
@@ -1,68 +1,68 @@
export function kindOf(val) {
let typeOfVal = typeof val
// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of
function miniKindOf(val) {
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) {
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
}
default:
break
}

const type = typeof val
switch (type) {
case 'boolean':
case 'string':
case 'number':
case 'symbol':
case 'function': {
return type
}
default:
break
}
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
default:
break
}

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

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

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

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

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

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

Expand Down

0 comments on commit 89a516c

Please sign in to comment.