foop
Version:
interfaces that describe their intentions.
55 lines (52 loc) • 3.29 kB
JavaScript
var toS = require('./toS')
/**
* Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
* `SyntaxError`, `TypeError`, or `URIError` object.
*
* @version 3.0.0 <- adding .message prop check
* @version 2.0.0 <- just string tag
* @version 1.0.0 <- was instanceof
* @since 4.0.0
* @memberOf is
*
* @param {*} x value
* @return {boolean} isError
*
* @name isError
* @func
*
* {@link https://nodejs.org/api/util.html#util_util_iserror_object node-util-iserror}
* @see {@link node-util-iserror}
*
* @example
*
* isError(new Error())
* //=> true
* isError(new Error().stack)
* //=> false
* isError(1)
* //=> false
* isError('')
* //=> false
*
* @example
*
* const e = {}
* eh[Symbol.toStringTag] = '[Object Error]'
* isError(eh)
* //=> true
*
* @example
*
* class Eh extends Error()
* isError(new Eh())
* //=> true
*
*/
module.exports = function isError(x) {
return toS(x) === '[object Error]'
// return tag == '[object Error]' || tag == '[object DOMException]' ||
// (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value))
// x instanceof Error ||
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJzb3VyY2VzIjpbImVycm9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHRvUyA9IHJlcXVpcmUoJy4vdG9TJylcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBgRXJyb3JgLCBgRXZhbEVycm9yYCwgYFJhbmdlRXJyb3JgLCBgUmVmZXJlbmNlRXJyb3JgLFxuICogYFN5bnRheEVycm9yYCwgYFR5cGVFcnJvcmAsIG9yIGBVUklFcnJvcmAgb2JqZWN0LlxuICpcbiAqIEB2ZXJzaW9uIDMuMC4wIDwtIGFkZGluZyAubWVzc2FnZSBwcm9wIGNoZWNrXG4gKiBAdmVyc2lvbiAyLjAuMCA8LSBqdXN0IHN0cmluZyB0YWdcbiAqIEB2ZXJzaW9uIDEuMC4wIDwtIHdhcyBpbnN0YW5jZW9mXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBtZW1iZXJPZiBpc1xuICpcbiAqIEBwYXJhbSAgeyp9IHggdmFsdWVcbiAqIEByZXR1cm4ge2Jvb2xlYW59IGlzRXJyb3JcbiAqXG4gKiBAbmFtZSBpc0Vycm9yXG4gKiBAZnVuYyBcbiAqIFxuICoge0BsaW5rIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvdXRpbC5odG1sI3V0aWxfdXRpbF9pc2Vycm9yX29iamVjdCBub2RlLXV0aWwtaXNlcnJvcn1cbiAqIEBzZWUge0BsaW5rIG5vZGUtdXRpbC1pc2Vycm9yfVxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogIGlzRXJyb3IobmV3IEVycm9yKCkpXG4gKiAgLy89PiB0cnVlXG4gKiAgaXNFcnJvcihuZXcgRXJyb3IoKS5zdGFjaylcbiAqICAvLz0+IGZhbHNlXG4gKiAgaXNFcnJvcigxKVxuICogIC8vPT4gZmFsc2VcbiAqICBpc0Vycm9yKCcnKVxuICogIC8vPT4gZmFsc2VcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICBjb25zdCBlID0ge31cbiAqICBlaFtTeW1ib2wudG9TdHJpbmdUYWddID0gJ1tPYmplY3QgRXJyb3JdJ1xuICogIGlzRXJyb3IoZWgpXG4gKiAgLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgY2xhc3MgRWggZXh0ZW5kcyBFcnJvcigpXG4gKiAgaXNFcnJvcihuZXcgRWgoKSlcbiAqICAvLz0+IHRydWVcbiAqXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNFcnJvcih4KSB7XG4gIHJldHVybiB0b1MoeCkgPT09ICdbb2JqZWN0IEVycm9yXSdcbiAgLy8gIHJldHVybiB0YWcgPT0gJ1tvYmplY3QgRXJyb3JdJyB8fCB0YWcgPT0gJ1tvYmplY3QgRE9NRXhjZXB0aW9uXScgfHxcbiAgLy8gKHR5cGVvZiB2YWx1ZS5tZXNzYWdlID09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZS5uYW1lID09ICdzdHJpbmcnICYmICFpc1BsYWluT2JqZWN0KHZhbHVlKSlcblxuICAvLyB4IGluc3RhbmNlb2YgRXJyb3IgfHxcbn1cbiJdLCJuYW1lcyI6WyJjb25zdCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThDNUIsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLE9BQU8sQ0FBQyxDQUFDLEVBQUU7RUFDbkMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssZ0JBQWdCOzs7OztDQUtuQzsifQ==