From 89a516c013ca63f5166417e29bd5c9efa753b4fc Mon Sep 17 00:00:00 2001 From: Themba Dube Date: Sat, 22 May 2021 16:43:43 -0400 Subject: [PATCH] Move miniKindOf out of if scope to fix ES5 compatibility issue Fixes reduxjs/redux#4089 --- src/utils/kindOf.js | 112 ++++++++++++++++++++++---------------------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/src/utils/kindOf.js b/src/utils/kindOf.js index c5395a1df6..9c5a0ae727 100644 --- a/src/utils/kindOf.js +++ b/src/utils/kindOf.js @@ -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) }