UNPKG

core-js

Version:
59 lines (55 loc) 1.34 kB
'use strict'; var getBuiltIn = require('../internals/get-built-in'); var createSetLike = function (size) { return { size: size, has: function () { return false; }, keys: function () { return { next: function () { return { done: true }; } }; } }; }; var createSetLikeWithInfinitySize = function (size) { return { size: size, has: function () { return true; }, keys: function () { throw new Error('e'); } }; }; module.exports = function (name, callback) { var Set = getBuiltIn('Set'); try { new Set()[name](createSetLike(0)); try { // late spec change, early WebKit ~ Safari 17.0 beta implementation does not pass it // https://github.com/tc39/proposal-set-methods/pull/88 new Set()[name](createSetLike(-1)); return false; } catch (error2) { if (!callback) return true; // early V8 implementation bug // https://issues.chromium.org/issues/351332634 try { new Set()[name](createSetLikeWithInfinitySize(-Infinity)); return false; } catch (error) { var set = new Set(); set.add(1); set.add(2); return callback(set[name](createSetLikeWithInfinitySize(Infinity))); } } } catch (error) { return false; } };