foop
Version:
interfaces that describe their intentions.
43 lines (40 loc) • 3.02 kB
JavaScript
var spreadableSymbol = require('../symbols/spreadable')
var toBoolean = require('../cast/toBoolean')
// is
var isArguments = require('./arguments')
var isArray = require('./array')
/**
* 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) {
return isArray(value) ||
isArguments(value) ||
toBoolean(spreadableSymbol && value && value[spreadableSymbol])
}
module.exports = isFlattenable
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHRlbmFibGUuanMiLCJzb3VyY2VzIjpbImZsYXR0ZW5hYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHNwcmVhZGFibGVTeW1ib2wgPSByZXF1aXJlKCcuLi9zeW1ib2xzL3NwcmVhZGFibGUnKVxuY29uc3QgdG9Cb29sZWFuID0gcmVxdWlyZSgnLi4vY2FzdC90b0Jvb2xlYW4nKVxuLy8gaXNcbmNvbnN0IGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9hcmd1bWVudHMnKVxuY29uc3QgaXNBcnJheSA9IHJlcXVpcmUoJy4vYXJyYXknKVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgZmxhdHRlbmFibGUgYGFyZ3VtZW50c2Agb2JqZWN0IG9yIGFycmF5LlxuICpcbiAqIEBzaW5jZSA1LjAuMC1iZXRhLjVcbiAqIEBhbGlhcyBpc0NvbmNhdFNwcmVhZGFibGVcbiAqIEBhbGlhcyBpc1NwcmVhZGFibGVcbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZmxhdHRlbmFibGUsIGVsc2UgYGZhbHNlYC5cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgIChmdW5jdGlvbigpIHtcbiAqICAgICAgaXNGbGF0dGVuYWJsZShhcmd1bWVudHMpIC8vPT4gdHJ1ZVxuICogICAgfSkoWzAsIDEsIDJdKVxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogICAgaXNGbGF0dGVuYWJsZShbWzBdLCBbMV1dKVxuICogICAgLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqICAgIGNvbnN0IG9iaiA9IHt9XG4gKiAgICBvYmpbU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZV0gPSB0cnVlXG4gKiAgICBpc0ZsYXR0ZW5hYmxlKG9iailcbiAqICAgIC8vPT4gdHJ1ZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNGbGF0dGVuYWJsZSh2YWx1ZSkge1xuICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgfHxcbiAgICBpc0FyZ3VtZW50cyh2YWx1ZSkgfHxcbiAgICB0b0Jvb2xlYW4oc3ByZWFkYWJsZVN5bWJvbCAmJiB2YWx1ZSAmJiB2YWx1ZVtzcHJlYWRhYmxlU3ltYm9sXSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZsYXR0ZW5hYmxlXG4iXSwibmFtZXMiOlsiY29uc3QiXSwibWFwcGluZ3MiOiJBQUFBQSxHQUFLLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDO0FBQ3pEQSxHQUFLLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQzs7QUFFOUNBLEdBQUssQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztBQUMxQ0EsR0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE4QmxDLFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRTtFQUM1QixPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDbkIsV0FBVyxDQUFDLEtBQUssQ0FBQztJQUNsQixTQUFTLENBQUMsZ0JBQWdCLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0NBQ2xFOztBQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsYUFBYTsifQ==