UNPKG

set.prototype.difference

Version:

An ESnext spec-compliant `Set.prototype.difference` shim/polyfill/replacement that works as far down as ES3

29 lines (23 loc) 564 B
'use strict'; var Set = require('es-set/polyfill')(); var implementation = require('./implementation'); module.exports = function getPolyfill() { if (typeof Set.prototype.difference === 'function') { var called = false; var setLike = { size: Infinity, has: function () {}, keys: function () { called = true; return [].values(); } }; new Set([1]).difference(setLike); setLike.size = 2147483648; // 2 ** 31 new Set([1]).difference(setLike); if (!called) { return Set.prototype.difference; } } return implementation; };