to-set-like.js 554 B

12345678910111213141516171819
  1. var getBuiltIn = require('../internals/get-built-in');
  2. var isCallable = require('../internals/is-callable');
  3. var isIterable = require('../internals/is-iterable');
  4. var isObject = require('../internals/is-object');
  5. var Set = getBuiltIn('Set');
  6. var isSetLike = function (it) {
  7. return isObject(it)
  8. && typeof it.size == 'number'
  9. && isCallable(it.has)
  10. && isCallable(it.keys);
  11. };
  12. // fallback old -> new set methods proposal arguments
  13. module.exports = function (it) {
  14. if (isSetLike(it)) return it;
  15. if (isIterable(it)) return new Set(it);
  16. };