You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
21 lines
570 B
21 lines
570 B
4 weeks ago
|
'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;
|
||
|
};
|