Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

skava / exotic   js

Repository URL to install this package:

Version: 2.0.8 

/ src / types / @omni / presets / isFlattenable.ts

import toBoolean from '../../primitive/boolean/cast/toBoolean'
import { isArguments } from '../../NATIVE/builtin'
import { isArray } from '../../array/check/isArray'

/**
 * Checks if `value` is a flattenable `arguments` object or array.
 *
 * @since 5.0.0-beta.5
 * @alias isConcatSpreadable
 * @alias isSpreadable
 *
 * @param {*} value The value to check.
 * @return {boolean} Returns `true` if `value` is flattenable, else `false`.
 *
 * @example
 *
 *    (function() {
 *      isFlattenable(arguments) //=> true
 *    })([0, 1, 2])
 *
 * @example
 *
 *    isFlattenable([[0], [1]])
 *    //=> true
 *
 * @example
 *    const obj = {}
 *    obj[Symbol.isConcatSpreadable] = true
 *    isFlattenable(obj)
 *    //=> true
 *
 */
function isFlattenable(value: any) {
  return (
    isArray(value) ||
    isArguments(value) ||
    toBoolean(
      Symbol.isConcatSpreadable && value && value[Symbol.isConcatSpreadable]
    )
  )
}

export default isFlattenable