21 lines
570 B
JavaScript
21 lines
570 B
JavaScript
'use strict';
|
|
var getBuiltIn = require('../internals/get-built-in');
|
|
var isCallable = require('../internals/is-callable');
|
|
var isIterable = require('../internals/is-iterable');
|
|
var isObject = require('../internals/is-object');
|
|
|
|
var Set = getBuiltIn('Set');
|
|
|
|
var isSetLike = function (it) {
|
|
return isObject(it)
|
|
&& typeof it.size == 'number'
|
|
&& isCallable(it.has)
|
|
&& isCallable(it.keys);
|
|
};
|
|
|
|
// fallback old -> new set methods proposal arguments
|
|
module.exports = function (it) {
|
|
if (isSetLike(it)) return it;
|
|
return isIterable(it) ? new Set(it) : it;
|
|
};
|