Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
exotic / src / types / collection / isMap.ts
Size: Mime:
// !!!!! this one has to be cautious
// import { isObservableMap } from 'xmobx/mobx'
import { isObservableMap } from '../../mobx'
import { toStringTag } from '../kind'

/**
 * @desc Checks if `value` is classified as a `Map` object.
 * @since 3.0.0
 * @memberOf is
 *
 * @param  {*} x value
 * @return {boolean} isMap
 *
 * @func
 * @name isMap
 *
 * {@link https://github.com/mobxjs/mobx/blob/master/src/utils/utils.ts#L210 mobx-is-map}
 * {@link https://github.com/jonschlinkert/kind-of kind-of}
 * @see {@link kind-of}
 * @see {@link mobx-is-map}
 *
 * @example
 *
 *  isMap(new Map())
 *  //=> true
 *  isMap(new Map.entries())
 *  //=> false
 *  isMap(new Set())
 *  //=> false
 *  isMap({})
 *  //=> false
 *  isMap('')
 *  //=> false
 *  isMap(1)
 *  //=> false
 *  isMap(new WeakMap)
 *  //=> false
 *
 * @example
 *
 *  const e = {}
 *  eh[Symbol.toStringTag] = '[object Map]'
 *  isMap(eh)
 *
 * @example
 *
 *  class Eh extends Map()
 *  isMap(new Eh())
 *  //=> true
 *
 */
function isMap(x: any): x is Map<any, any> {
  // return x instanceof Map ||
  return toStringTag(x) === '[object Map]' || isObservableMap(x)
}

export { isMap }
export default isMap