1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-core-js

Клонировать/Скачать
tests.js 68 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Sergey Nechaev Отправлено 20.05.2025 20:18 beedffc
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207
'use strict';
/* eslint-disable prefer-regex-literals, radix, unicorn/prefer-global-this -- required for testing */
/* eslint-disable regexp/no-empty-capturing-group, regexp/no-lazy-ends, regexp/no-useless-quantifier -- required for testing */
var GLOBAL = typeof global != 'undefined' ? global : Function('return this')();
var WHITESPACES = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002' +
'\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
var NOT_WHITESPACES = '\u200B\u0085\u180E';
var USERAGENT = GLOBAL.navigator && GLOBAL.navigator.userAgent || '';
var process = GLOBAL.process;
var Bun = GLOBAL.Bun;
var Deno = GLOBAL.Deno;
var versions = process && process.versions || Deno && Deno.version;
var v8 = versions && versions.v8;
var match, V8_VERSION;
if (v8) {
match = v8.split('.');
// in old Chrome, versions of V8 isn't V8 = Chrome / 10
// but their correct versions are not interesting for us
V8_VERSION = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);
}
// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`
// so check `userAgent` even if `.v8` exists, but 0
if (!V8_VERSION && USERAGENT) {
match = USERAGENT.match(/Edge\/(\d+)/);
if (!match || match[1] >= 74) {
match = USERAGENT.match(/Chrome\/(\d+)/);
if (match) V8_VERSION = +match[1];
}
}
var IS_BROWSER = typeof window == 'object' && typeof Deno != 'object';
var IS_BUN = typeof Bun == 'function' && Bun && typeof Bun.version == 'string';
var IS_DENO = typeof Deno == 'object' && Deno && typeof Deno.version == 'object';
// var IS_NODE = Object.prototype.toString.call(process) == '[object process]';
var WEBKIT_STRING_PAD_BUG = /Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(USERAGENT);
var DESCRIPTORS_SUPPORT = function () {
return Object.defineProperty({}, 'a', {
get: function () { return 7; }
}).a === 7;
};
var V8_PROTOTYPE_DEFINE_BUG = function () {
return Object.defineProperty(function () { /* empty */ }, 'prototype', {
value: 42,
writable: false
}).prototype === 42;
};
var PROMISES_SUPPORT = function () {
var promise = new Promise(function (resolve) { resolve(1); });
var empty = function () { /* empty */ };
var FakePromise = (promise.constructor = {})[Symbol.species] = function (exec) {
exec(empty, empty);
};
return promise.then(empty) instanceof FakePromise
&& V8_VERSION !== 66
&& (!(IS_BROWSER || IS_DENO) || typeof PromiseRejectionEvent == 'function');
};
var PROMISE_STATICS_ITERATION = function () {
var ITERATION_SUPPORT = false;
try {
var object = {};
object[Symbol.iterator] = function () {
return {
next: function () {
return { done: ITERATION_SUPPORT = true };
}
};
};
Promise.all(object).then(undefined, function () { /* empty */ });
} catch (error) { /* empty */ }
return ITERATION_SUPPORT;
};
var SYMBOLS_SUPPORT = function () {
return Object.getOwnPropertySymbols && String(Symbol('symbol detection')) && !(V8_VERSION && V8_VERSION < 41);
};
var SYMBOL_REGISTRY = [SYMBOLS_SUPPORT, function () {
return Symbol['for'] && Symbol.keyFor;
}];
var URL_AND_URL_SEARCH_PARAMS_SUPPORT = function () {
// eslint-disable-next-line unicorn/relative-url-style -- required for testing
var url = new URL('b?a=1&b=2&c=3', 'https://a');
var searchParams = url.searchParams;
var result = '';
url.pathname = 'c%20d';
searchParams.forEach(function (value, key) {
searchParams['delete']('b');
result += key + value;
});
return searchParams.sort
&& url.href === 'https://a/c%20d?a=1&c=3'
&& searchParams.get('c') === '3'
&& String(new URLSearchParams('?a=1')) === 'a=1'
&& searchParams[Symbol.iterator]
&& new URL('https://a@b').username === 'a'
&& new URLSearchParams(new URLSearchParams('a=b')).get('a') === 'b'
&& new URL('https://тест').host === 'xn--e1aybc'
&& new URL('https://a#б').hash === '#%D0%B1'
&& result === 'a1c3'
&& new URL('https://x', undefined).host === 'x';
};
// eslint-disable-next-line no-proto -- safe
var PROTOTYPE_SETTING_AVAILABLE = Object.setPrototypeOf || ({}).__proto__;
var OBJECT_PROTOTYPE_ACCESSORS_SUPPORT = function () {
try {
Object.prototype.__defineSetter__.call(null, Math.random(), function () { /* empty */ });
} catch (error) {
return Object.prototype.__defineSetter__;
}
};
var SAFE_ITERATION_CLOSING_SUPPORT = function () {
var SAFE_CLOSING = false;
try {
var called = 0;
var iteratorWithReturn = {
next: function () {
return { done: !!called++ };
},
'return': function () {
SAFE_CLOSING = true;
}
};
iteratorWithReturn[Symbol.iterator] = function () {
return this;
};
Array.from(iteratorWithReturn, function () { throw new Error('close'); });
} catch (error) {
return SAFE_CLOSING;
}
};
var ARRAY_BUFFER_SUPPORT = function () {
return ArrayBuffer && DataView;
};
var TYPED_ARRAY_CONSTRUCTORS_LIST = {
Int8Array: 1,
Uint8Array: 1,
Uint8ClampedArray: 1,
Int16Array: 2,
Uint16Array: 2,
Int32Array: 4,
Uint32Array: 4,
Float32Array: 4,
Float64Array: 8
};
var ARRAY_BUFFER_VIEWS_SUPPORT = function () {
for (var constructor in TYPED_ARRAY_CONSTRUCTORS_LIST) if (!GLOBAL[constructor]) return false;
return ARRAY_BUFFER_SUPPORT();
};
var TYPED_ARRAY_CONSTRUCTORS_NOT_REQUIRES_WRAPPERS = function () {
try {
return !Int8Array(1);
} catch (error) { /* empty */ }
try {
return !new Int8Array(-1);
} catch (error) { /* empty */ }
new Int8Array();
new Int8Array(null);
new Int8Array(1.5);
var called = 0;
var iterable = {
next: function () {
return { done: !!called++, value: 1 };
}
};
iterable[Symbol.iterator] = function () {
return this;
};
return new Int8Array(iterable)[0] === 1
&& new Int8Array(new ArrayBuffer(2), 1, undefined).length === 1;
};
function NCG_SUPPORT() {
var re = RegExp('(?<a>b)');
return re.exec('b').groups.a === 'b' &&
'b'.replace(re, '$<a>c') === 'bc';
}
function createIsRegExpLogicTest(name) {
return function () {
var regexp = /./;
try {
'/./'[name](regexp);
} catch (error1) {
try {
regexp[Symbol.match] = false;
return '/./'[name](regexp);
} catch (error2) { /* empty */ }
} return false;
};
}
function createStringHTMLMethodTest(METHOD_NAME) {
return function () {
var test = ''[METHOD_NAME]('"');
return test === test.toLowerCase() && test.split('"').length <= 3;
};
}
function createStringTrimMethodTest(METHOD_NAME) {
return function () {
return !WHITESPACES[METHOD_NAME]()
&& NOT_WHITESPACES[METHOD_NAME]() === NOT_WHITESPACES
&& WHITESPACES[METHOD_NAME].name === METHOD_NAME;
};
}
function createSetLike(size) {
return {
size: size,
has: function () {
return false;
},
keys: function () {
return {
next: function () {
return { done: true };
}
};
}
};
}
function createSetLikeWithInfinitySize(size) {
return {
size: size,
has: function () {
return true;
},
keys: function () {
throw new Error('e');
}
};
}
function createSetMethodTest(METHOD_NAME, callback) {
return function () {
try {
new Set()[METHOD_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()[METHOD_NAME](createSetLike(-1));
return false;
} catch (error2) {
if (!callback) return true;
// early V8 implementation bug
// https://issues.chromium.org/issues/351332634
try {
new Set()[METHOD_NAME](createSetLikeWithInfinitySize(-Infinity));
return false;
} catch (error) {
var set = new Set();
set.add(1);
set.add(2);
return callback(set[METHOD_NAME](createSetLikeWithInfinitySize(Infinity)));
}
}
} catch (error) {
return false;
}
};
}
function createSetMethodTestShouldGetKeysBeforeCloning(METHOD_NAME) {
return function () {
var baseSet = new Set();
var setLike = {
size: 0,
has: function () { return true; },
keys: function () {
return Object.defineProperty({}, 'next', {
get: function () {
baseSet.clear();
baseSet.add(4);
return function () {
return { done: true };
};
}
});
}
};
var result = baseSet[METHOD_NAME](setLike);
return result.size === 1 && result.values().next().value === 4;
};
}
function NATIVE_RAW_JSON() {
var unsafeInt = '9007199254740993';
var raw = JSON.rawJSON(unsafeInt);
return JSON.isRawJSON(raw) && JSON.stringify(raw) === unsafeInt;
}
function IMMEDIATE() {
return setImmediate && clearImmediate && !(IS_BUN && (function () {
var version = Bun.version.split('.');
return version.length < 3 || version[0] === '0' && (version[1] < 3 || version[1] === '3' && version[2] === '0');
})());
}
function TIMERS() {
return !(/MSIE .\./.test(USERAGENT) || IS_BUN && (function () {
var version = Bun.version.split('.');
return version.length < 3 || version[0] === '0' && (version[1] < 3 || version[1] === '3' && version[2] === '0');
})());
}
// https://github.com/tc39/ecma262/pull/3467
function checkIteratorClosingOnEarlyError(METHOD_NAME, ExpectedError) {
return function () {
var CLOSED = false;
try {
Iterator.prototype[METHOD_NAME].call({
next: function () { return { done: true }; },
'return': function () { CLOSED = true; }
}, -1);
} catch (error) {
// https://bugs.webkit.org/show_bug.cgi?id=291195
if (!(error instanceof ExpectedError)) return;
}
return CLOSED;
};
}
// https://issues.chromium.org/issues/336839115
function iteratorHelperThrowsErrorOnInvalidIterator(methodName, argument) {
return function () {
if (typeof Iterator == 'function' && Iterator.prototype[methodName]) try {
Iterator.prototype[methodName].call({ next: null }, argument).next();
} catch (error) {
return true;
}
};
}
GLOBAL.tests = {
// TODO: Remove this module from `core-js@4` since it's split to modules listed below
'es.symbol': [SYMBOLS_SUPPORT, function () {
var symbol = Symbol('stringify detection');
return Object.getOwnPropertySymbols('qwe')
&& Symbol['for']
&& Symbol.keyFor
&& JSON.stringify([symbol]) === '[null]'
&& JSON.stringify({ a: symbol }) === '{}'
&& JSON.stringify(Object(symbol)) === '{}'
&& Symbol.prototype[Symbol.toPrimitive]
&& Symbol.prototype[Symbol.toStringTag];
}],
'es.symbol.constructor': SYMBOLS_SUPPORT,
'es.symbol.description': function () {
// eslint-disable-next-line symbol-description -- required for testing
return Symbol('description detection').description === 'description detection' && Symbol().description === undefined;
},
'es.symbol.async-iterator': function () {
return Symbol.asyncIterator;
},
'es.symbol.for': SYMBOL_REGISTRY,
'es.symbol.has-instance': [SYMBOLS_SUPPORT, function () {
return Symbol.hasInstance;
}],
'es.symbol.is-concat-spreadable': [SYMBOLS_SUPPORT, function () {
return Symbol.isConcatSpreadable;
}],
'es.symbol.iterator': [SYMBOLS_SUPPORT, function () {
return Symbol.iterator;
}],
'es.symbol.key-for': SYMBOL_REGISTRY,
'es.symbol.match': [SYMBOLS_SUPPORT, function () {
return Symbol.match;
}],
'es.symbol.match-all': [SYMBOLS_SUPPORT, function () {
return Symbol.matchAll;
}],
'es.symbol.replace': [SYMBOLS_SUPPORT, function () {
return Symbol.replace;
}],
'es.symbol.search': [SYMBOLS_SUPPORT, function () {
return Symbol.search;
}],
'es.symbol.species': [SYMBOLS_SUPPORT, function () {
return Symbol.species;
}],
'es.symbol.split': [SYMBOLS_SUPPORT, function () {
return Symbol.split;
}],
'es.symbol.to-primitive': [SYMBOLS_SUPPORT, function () {
return Symbol.toPrimitive && Symbol.prototype[Symbol.toPrimitive];
}],
'es.symbol.to-string-tag': [SYMBOLS_SUPPORT, function () {
return Symbol.toStringTag && Symbol.prototype[Symbol.toStringTag];
}],
'es.symbol.unscopables': [SYMBOLS_SUPPORT, function () {
return Symbol.unscopables;
}],
'es.error.cause': function () {
return new Error('e', { cause: 7 }).cause === 7
&& !('cause' in Error.prototype);
},
'es.error.to-string': function () {
if (DESCRIPTORS_SUPPORT) {
// Chrome 32- incorrectly call accessor
var object = Object.create(Object.defineProperty({}, 'name', { get: function () {
return this === object;
} }));
if (Error.prototype.toString.call(object) !== 'true') return false;
}
// FF10- does not properly handle non-strings
return Error.prototype.toString.call({ message: 1, name: 2 }) === '2: 1'
// IE8 does not properly handle defaults
&& Error.prototype.toString.call({}) === 'Error';
},
'es.aggregate-error.constructor': function () {
return typeof AggregateError == 'function';
},
'es.aggregate-error.cause': function () {
return new AggregateError([1], 'e', { cause: 7 }).cause === 7
&& !('cause' in AggregateError.prototype);
},
'es.array.at': function () {
return [].at;
},
'es.array.concat': function () {
var array1 = [];
array1[Symbol.isConcatSpreadable] = false;
var array2 = [];
var constructor = array2.constructor = {};
constructor[Symbol.species] = function () {
return { foo: 1 };
};
// eslint-disable-next-line es/no-nonstandard-array-prototype-properties -- @@species
return array1.concat()[0] === array1 && array2.concat().foo === 1;
},
'es.array.copy-within': function () {
return Array.prototype.copyWithin && Array.prototype[Symbol.unscopables].copyWithin;
},
'es.array.every': function () {
try {
Array.prototype.every.call(null, function () { /* empty */ });
return false;
} catch (error) { /* empty */ }
return Array.prototype.every;
},
'es.array.fill': function () {
return Array.prototype.fill && Array.prototype[Symbol.unscopables].fill;
},
'es.array.filter': function () {
var array = [];
var constructor = array.constructor = {};
constructor[Symbol.species] = function () {
return { foo: 1 };
};
// eslint-disable-next-line es/no-nonstandard-array-prototype-properties -- @@species
return array.filter(Boolean).foo === 1;
},
'es.array.find': function () {
var SKIPS_HOLES = true;
Array(1).find(function () { return SKIPS_HOLES = false; });
return !SKIPS_HOLES && Array.prototype[Symbol.unscopables].find;
},
'es.array.find-index': function () {
var SKIPS_HOLES = true;
Array(1).findIndex(function () { return SKIPS_HOLES = false; });
return !SKIPS_HOLES && Array.prototype[Symbol.unscopables].findIndex;
},
'es.array.find-last': function () {
return [].findLast;
},
'es.array.find-last-index': function () {
return [].findLastIndex;
},
'es.array.flat': function () {
return Array.prototype.flat;
},
'es.array.flat-map': function () {
return Array.prototype.flatMap;
},
'es.array.for-each': function () {
try {
Array.prototype.forEach.call(null, function () { /* empty */ });
return false;
} catch (error) { /* empty */ }
return Array.prototype.forEach;
},
'es.array.from': SAFE_ITERATION_CLOSING_SUPPORT,
'es.array.includes': function () {
return Array(1).includes()
&& Array.prototype[Symbol.unscopables].includes;
},
'es.array.index-of': function () {
try {
[].indexOf.call(null);
} catch (error) {
return 1 / [1].indexOf(1, -0) > 0;
}
},
'es.array.is-array': function () {
return Array.isArray;
},
'es.array.iterator': [SYMBOLS_SUPPORT, function () {
return [][Symbol.iterator] === [].values
&& [][Symbol.iterator].name === 'values'
&& [].entries()[Symbol.toStringTag] === 'Array Iterator'
&& [].keys().next()
&& [][Symbol.unscopables].keys
&& [][Symbol.unscopables].values
&& [][Symbol.unscopables].entries;
}],
'es.array.join': function () {
try {
if (!Object.prototype.propertyIsEnumerable.call(Object('z'), 0)) return false;
} catch (error) {
return false;
}
try {
Array.prototype.join.call(null, '');
return false;
} catch (error) { /* empty */ }
return true;
},
'es.array.last-index-of': function () {
try {
[].lastIndexOf.call(null);
} catch (error) {
return 1 / [1].lastIndexOf(1, -0) > 0;
}
},
'es.array.map': function () {
var array = [];
var constructor = array.constructor = {};
constructor[Symbol.species] = function () {
return { foo: 1 };
};
// eslint-disable-next-line es/no-nonstandard-array-prototype-properties -- @@species
return array.map(function () { return true; }).foo === 1;
},
'es.array.of': function () {
function F() { /* empty */ }
return Array.of.call(F) instanceof F;
},
'es.array.push': function () {
if ([].push.call({ length: 0x100000000 }, 1) !== 4294967297) return false;
try {
Object.defineProperty([], 'length', { writable: false }).push();
} catch (error) {
return error instanceof TypeError;
}
},
'es.array.reduce': function () {
try {
Array.prototype.reduce.call(null, function () { /* empty */ }, 1);
} catch (error) {
return Array.prototype.reduce;
}
},
'es.array.reduce-right': function () {
try {
Array.prototype.reduceRight.call(null, function () { /* empty */ }, 1);
} catch (error) {
return Array.prototype.reduceRight;
}
},
'es.array.reverse': function () {
var test = [1, 2];
return String(test) !== String(test.reverse());
},
'es.array.slice': function () {
var array = [];
var constructor = array.constructor = {};
constructor[Symbol.species] = function () {
return { foo: 1 };
};
// eslint-disable-next-line es/no-nonstandard-array-prototype-properties -- @@species
return array.slice().foo === 1;
},
'es.array.some': function () {
try {
Array.prototype.some.call(null, function () { /* empty */ });
} catch (error) {
return Array.prototype.some;
}
},
'es.array.sort': function () {
try {
Array.prototype.sort.call(null);
} catch (error1) {
try {
[1, 2, 3].sort(null);
} catch (error2) {
[1, 2, 3].sort(undefined);
// stable sort
var array = [];
var result = '';
var code, chr, value, index;
// generate an array with more 512 elements (Chakra and old V8 fails only in this case)
for (code = 65; code < 76; code++) {
chr = String.fromCharCode(code);
switch (code) {
case 66: case 69: case 70: case 72: value = 3; break;
case 68: case 71: value = 4; break;
default: value = 2;
}
for (index = 0; index < 47; index++) {
array.push({ k: chr + index, v: value });
}
}
array.sort(function (a, b) { return b.v - a.v; });
for (index = 0; index < array.length; index++) {
chr = array[index].k.charAt(0);
if (result.charAt(result.length - 1) !== chr) result += chr;
}
return result === 'DGBEFHACIJK';
}
}
},
'es.array.species': [SYMBOLS_SUPPORT, function () {
return Array[Symbol.species];
}],
'es.array.splice': function () {
var array = [];
var constructor = array.constructor = {};
constructor[Symbol.species] = function () {
return { foo: 1 };
};
// eslint-disable-next-line es/no-nonstandard-array-prototype-properties -- @@species
return array.splice().foo === 1;
},
'es.array.to-reversed': function () {
return [].toReversed;
},
'es.array.to-sorted': function () {
return [].toSorted;
},
'es.array.to-spliced': function () {
return [].toSpliced;
},
'es.array.unscopables.flat': function () {
return Array.prototype[Symbol.unscopables].flat;
},
'es.array.unscopables.flat-map': function () {
return Array.prototype[Symbol.unscopables].flatMap;
},
'es.array.unshift': function () {
if ([].unshift(0) !== 1) return false;
try {
Object.defineProperty([], 'length', { writable: false }).unshift();
} catch (error) {
return error instanceof TypeError;
}
},
'es.array.with': function () {
// Incorrect exception thrown when index coercion fails in Firefox
try {
[]['with']({ valueOf: function () { throw 4; } }, null);
} catch (error) {
return error === 4;
}
},
'es.array-buffer.constructor': [ARRAY_BUFFER_SUPPORT, function () {
try {
return !ArrayBuffer(1);
} catch (error) { /* empty */ }
try {
return !new ArrayBuffer(-1);
} catch (error) { /* empty */ }
new ArrayBuffer();
new ArrayBuffer(1.5);
new ArrayBuffer(NaN);
return ArrayBuffer.length === 1 && ArrayBuffer.name === 'ArrayBuffer';
}],
'es.array-buffer.is-view': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
return ArrayBuffer.isView;
}],
'es.array-buffer.slice': [ARRAY_BUFFER_SUPPORT, function () {
return new ArrayBuffer(2).slice(1, undefined).byteLength;
}],
'es.array-buffer.detached': function () {
return 'detached' in ArrayBuffer.prototype;
},
'es.array-buffer.transfer': function () {
return ArrayBuffer.prototype.transfer;
},
'es.array-buffer.transfer-to-fixed-length': function () {
return ArrayBuffer.prototype.transferToFixedLength;
},
'es.data-view.constructor': ARRAY_BUFFER_SUPPORT,
'es.data-view.get-float16': [ARRAY_BUFFER_SUPPORT, function () {
return DataView.prototype.getFloat16;
}],
'es.data-view.set-float16': [ARRAY_BUFFER_SUPPORT, function () {
return DataView.prototype.setFloat16;
}],
'es.date.get-year': function () {
return new Date(16e11).getYear() === 120;
},
// TODO: Remove from `core-js@4`
'es.date.now': function () {
return Date.now;
},
'es.date.set-year': function () {
return Date.prototype.setYear;
},
'es.date.to-gmt-string': function () {
return Date.prototype.toGMTString;
},
'es.date.to-iso-string': function () {
try {
new Date(NaN).toISOString();
} catch (error) {
return new Date(-5e13 - 1).toISOString() === '0385-07-25T07:06:39.999Z';
}
},
'es.date.to-json': function () {
return new Date(NaN).toJSON() === null
&& Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) === 1;
},
'es.date.to-primitive': [SYMBOLS_SUPPORT, function () {
return Date.prototype[Symbol.toPrimitive];
}],
// TODO: Remove from `core-js@4`
'es.date.to-string': function () {
return new Date(NaN).toString() === 'Invalid Date';
},
'es.escape': function () {
return escape;
},
'es.function.bind': function () {
var test = (function () { /* empty */ }).bind();
// eslint-disable-next-line no-prototype-builtins -- safe
return typeof test == 'function' && !test.hasOwnProperty('prototype');
},
'es.function.has-instance': [SYMBOLS_SUPPORT, function () {
return Symbol.hasInstance in Function.prototype;
}],
'es.function.name': function () {
return 'name' in Function.prototype;
},
'es.global-this': function () {
return globalThis;
},
'es.iterator.constructor': function () {
try {
Iterator({});
} catch (error) {
return typeof Iterator == 'function'
&& Iterator.prototype === Object.getPrototypeOf(Object.getPrototypeOf([].values()));
}
},
'es.iterator.drop': [
iteratorHelperThrowsErrorOnInvalidIterator('drop', 0),
checkIteratorClosingOnEarlyError('drop', RangeError)
],
'es.iterator.every': checkIteratorClosingOnEarlyError('every', TypeError),
'es.iterator.filter': [
iteratorHelperThrowsErrorOnInvalidIterator('filter', function () { /* empty */ }),
checkIteratorClosingOnEarlyError('filter', TypeError)
],
'es.iterator.find': checkIteratorClosingOnEarlyError('find', TypeError),
'es.iterator.flat-map': [
iteratorHelperThrowsErrorOnInvalidIterator('flatMap', function () { /* empty */ }),
checkIteratorClosingOnEarlyError('flatMap', TypeError)
],
'es.iterator.for-each': checkIteratorClosingOnEarlyError('forEach', TypeError),
'es.iterator.from': function () {
Iterator.from({ 'return': null })['return']();
return true;
},
'es.iterator.map': [
iteratorHelperThrowsErrorOnInvalidIterator('map', function () { /* empty */ }),
checkIteratorClosingOnEarlyError('map', TypeError)
],
'es.iterator.reduce': [checkIteratorClosingOnEarlyError('reduce', TypeError), function () {
// fails on undefined initial parameter
// https://bugs.webkit.org/show_bug.cgi?id=291651
[].keys().reduce(function () { /* empty */ }, undefined);
return true;
}],
'es.iterator.some': checkIteratorClosingOnEarlyError('some', TypeError),
'es.iterator.take': checkIteratorClosingOnEarlyError('take', RangeError),
'es.iterator.to-array': function () {
return Iterator.prototype.toArray;
},
'es.json.stringify': [SYMBOLS_SUPPORT, function () {
var symbol = Symbol('stringify detection');
return JSON.stringify([symbol]) === '[null]'
&& JSON.stringify({ a: symbol }) === '{}'
&& JSON.stringify(Object(symbol)) === '{}'
&& JSON.stringify('\uDF06\uD834') === '"\\udf06\\ud834"'
&& JSON.stringify('\uDEAD') === '"\\udead"';
}],
'es.json.to-string-tag': [SYMBOLS_SUPPORT, function () {
return JSON[Symbol.toStringTag];
}],
'es.map.constructor': [SAFE_ITERATION_CLOSING_SUPPORT, function () {
var called = 0;
var iterable = {
next: function () {
return { done: !!called++, value: [1, 2] };
}
};
iterable[Symbol.iterator] = function () {
return this;
};
var map = new Map(iterable);
return map.forEach
&& map[Symbol.iterator]().next()
&& map.get(1) === 2
&& map.set(-0, 3) === map
&& map.has(0)
&& map[Symbol.toStringTag];
}],
'es.map.group-by': function () {
// https://bugs.webkit.org/show_bug.cgi?id=271524
return Map.groupBy('ab', function (it) {
return it;
}).get('a').length === 1;
},
'es.math.acosh': function () {
// V8 bug: https://code.google.com/p/v8/issues/detail?id=3509
return Math.floor(Math.acosh(Number.MAX_VALUE)) === 710
// Tor Browser bug: Math.acosh(Infinity) -> NaN
&& Math.acosh(Infinity) === Infinity;
},
'es.math.asinh': function () {
return 1 / Math.asinh(0) > 0;
},
'es.math.atanh': function () {
return 1 / Math.atanh(-0) < 0;
},
'es.math.cbrt': function () {
return Math.cbrt;
},
'es.math.clz32': function () {
return Math.clz32;
},
'es.math.cosh': function () {
return Math.cosh(710) !== Infinity;
},
'es.math.expm1': function () {
// Old FF bug
// eslint-disable-next-line no-loss-of-precision -- required for old engines
return Math.expm1(10) <= 22025.465794806719 && Math.expm1(10) >= 22025.4657948067165168
// Tor Browser bug
&& Math.expm1(-2e-17) === -2e-17;
},
'es.math.fround': function () {
return Math.fround;
},
'es.math.f16round': function () {
return Math.f16round;
},
'es.math.hypot': function () {
return Math.hypot && Math.hypot(Infinity, NaN) === Infinity;
},
'es.math.imul': function () {
return Math.imul(0xFFFFFFFF, 5) === -5 && Math.imul.length === 2;
},
'es.math.log10': function () {
return Math.log10;
},
'es.math.log1p': function () {
return Math.log1p;
},
'es.math.log2': function () {
return Math.log2;
},
'es.math.sign': function () {
return Math.sign;
},
'es.math.sinh': function () {
return Math.sinh(-2e-17) === -2e-17;
},
'es.math.tanh': function () {
return Math.tanh;
},
'es.math.to-string-tag': function () {
return Math[Symbol.toStringTag];
},
'es.math.trunc': function () {
return Math.trunc;
},
'es.number.constructor': function () {
// eslint-disable-next-line math/no-static-nan-calculations -- feature detection
return Number(' 0o1') && Number('0b1') && !Number('+0x1');
},
'es.number.epsilon': function () {
return Number.EPSILON;
},
'es.number.is-finite': function () {
return Number.isFinite;
},
'es.number.is-integer': function () {
return Number.isInteger;
},
'es.number.is-nan': function () {
return Number.isNaN;
},
'es.number.is-safe-integer': function () {
return Number.isSafeInteger;
},
'es.number.max-safe-integer': function () {
return Number.MAX_SAFE_INTEGER;
},
'es.number.min-safe-integer': function () {
return Number.MIN_SAFE_INTEGER;
},
'es.number.parse-float': function () {
try {
parseFloat(Object(Symbol.iterator));
} catch (error) {
return Number.parseFloat === parseFloat
&& 1 / parseFloat(WHITESPACES + '-0') === -Infinity;
}
},
'es.number.parse-int': function () {
try {
parseInt(Object(Symbol.iterator));
} catch (error) {
return Number.parseInt === parseInt
&& parseInt(WHITESPACES + '08') === 8
&& parseInt(WHITESPACES + '0x16') === 22;
}
},
'es.number.to-exponential': function () {
try {
1.0.toExponential(Infinity);
} catch (error) {
try {
1.0.toExponential(-Infinity);
} catch (error2) {
Infinity.toExponential(Infinity);
NaN.toExponential(Infinity);
return (-6.9e-11).toExponential(4) === '-6.9000e-11'
&& 1.255.toExponential(2) === '1.25e+0';
// && 25.0.toExponential(0) === '3e+1';
}
}
},
'es.number.to-fixed': function () {
try {
Number.prototype.toFixed.call({});
} catch (error) {
return 0.00008.toFixed(3) === '0.000'
&& 0.9.toFixed(0) === '1'
&& 1.255.toFixed(2) === '1.25'
&& 1000000000000000128.0.toFixed(0) === '1000000000000000128';
}
},
'es.number.to-precision': function () {
try {
Number.prototype.toPrecision.call({});
} catch (error) {
return 1.0.toPrecision(undefined) === '1';
}
},
'es.object.assign': function () {
if (DESCRIPTORS_SUPPORT && Object.assign({ b: 1 }, Object.assign(Object.defineProperty({}, 'a', {
enumerable: true,
get: function () {
Object.defineProperty(this, 'b', {
value: 3,
enumerable: false
});
}
}), { b: 2 })).b !== 1) return false;
var A = {};
var B = {};
var symbol = Symbol('assign detection');
var alphabet = 'abcdefghijklmnopqrst';
A[symbol] = 7;
alphabet.split('').forEach(function (chr) { B[chr] = chr; });
return Object.assign({}, A)[symbol] === 7 && Object.keys(Object.assign({}, B)).join('') === alphabet;
},
// TODO: Remove from `core-js@4`
'es.object.create': function () {
return Object.create;
},
'es.object.define-getter': OBJECT_PROTOTYPE_ACCESSORS_SUPPORT,
'es.object.define-properties': [DESCRIPTORS_SUPPORT, V8_PROTOTYPE_DEFINE_BUG, function () {
return Object.defineProperties;
}],
'es.object.define-property': [DESCRIPTORS_SUPPORT, V8_PROTOTYPE_DEFINE_BUG],
'es.object.define-setter': OBJECT_PROTOTYPE_ACCESSORS_SUPPORT,
'es.object.entries': function () {
return Object.entries;
},
'es.object.freeze': function () {
return Object.freeze(true);
},
'es.object.from-entries': function () {
return Object.fromEntries;
},
'es.object.get-own-property-descriptor': [DESCRIPTORS_SUPPORT, function () {
return Object.getOwnPropertyDescriptor('qwe', '0');
}],
'es.object.get-own-property-descriptors': function () {
return Object.getOwnPropertyDescriptors;
},
'es.object.get-own-property-names': function () {
return Object.getOwnPropertyNames('qwe');
},
'es.object.get-own-property-symbols': [SYMBOLS_SUPPORT, function () {
return Object.getOwnPropertySymbols('qwe');
}],
'es.object.get-prototype-of': function () {
return Object.getPrototypeOf('qwe');
},
'es.object.group-by': function () {
// https://bugs.webkit.org/show_bug.cgi?id=271524
return Object.groupBy('ab', function (it) {
return it;
}).a.length === 1;
},
'es.object.has-own': function () {
return Object.hasOwn;
},
'es.object.is': function () {
return Object.is;
},
'es.object.is-extensible': function () {
return !Object.isExtensible('qwe');
},
'es.object.is-frozen': function () {
return Object.isFrozen('qwe');
},
'es.object.is-sealed': function () {
return Object.isSealed('qwe');
},
'es.object.keys': function () {
return Object.keys('qwe');
},
'es.object.lookup-getter': OBJECT_PROTOTYPE_ACCESSORS_SUPPORT,
'es.object.lookup-setter': OBJECT_PROTOTYPE_ACCESSORS_SUPPORT,
'es.object.prevent-extensions': function () {
return Object.preventExtensions(true);
},
'es.object.proto': function () {
return '__proto__' in Object.prototype;
},
'es.object.seal': function () {
return Object.seal(true);
},
'es.object.set-prototype-of': function () {
return Object.setPrototypeOf;
},
'es.object.to-string': [SYMBOLS_SUPPORT, function () {
var O = {};
O[Symbol.toStringTag] = 'foo';
return String(O) === '[object foo]';
}],
'es.object.values': function () {
return Object.values;
},
'es.parse-float': function () {
try {
parseFloat(Object(Symbol.iterator));
} catch (error) {
return 1 / parseFloat(WHITESPACES + '-0') === -Infinity;
}
},
'es.parse-int': function () {
try {
parseInt(Object(Symbol.iterator));
} catch (error) {
return parseInt(WHITESPACES + '08') === 8
&& parseInt(WHITESPACES + '0x16') === 22;
}
},
// TODO: Remove this module from `core-js@4` since it's split to modules listed below
'es.promise': PROMISES_SUPPORT,
'es.promise.constructor': PROMISES_SUPPORT,
'es.promise.all': [PROMISES_SUPPORT, SAFE_ITERATION_CLOSING_SUPPORT, PROMISE_STATICS_ITERATION, function () {
return Promise.all;
}],
'es.promise.all-settled': [PROMISES_SUPPORT, SAFE_ITERATION_CLOSING_SUPPORT, PROMISE_STATICS_ITERATION, function () {
return Promise.allSettled;
}],
'es.promise.any': [PROMISES_SUPPORT, SAFE_ITERATION_CLOSING_SUPPORT, PROMISE_STATICS_ITERATION, function () {
return Promise.any;
}],
'es.promise.catch': PROMISES_SUPPORT,
'es.promise.finally': [PROMISES_SUPPORT, function () {
// eslint-disable-next-line unicorn/no-thenable -- required for testing
return Promise.prototype['finally'].call({ then: function () { return this; } }, function () { /* empty */ });
}],
'es.promise.race': [PROMISES_SUPPORT, SAFE_ITERATION_CLOSING_SUPPORT, PROMISE_STATICS_ITERATION, function () {
return Promise.race;
}],
'es.promise.reject': PROMISES_SUPPORT,
'es.promise.resolve': PROMISES_SUPPORT,
'es.promise.try': [PROMISES_SUPPORT, function () {
var ACCEPT_ARGUMENTS = false;
Promise['try'](function (argument) {
ACCEPT_ARGUMENTS = argument === 8;
}, 8);
return ACCEPT_ARGUMENTS;
}],
'es.promise.with-resolvers': [PROMISES_SUPPORT, function () {
return Promise.withResolvers;
}],
'es.reflect.apply': function () {
try {
return Reflect.apply(function () {
return false;
});
} catch (error) {
return Reflect.apply(function () {
return true;
}, null, []);
}
},
'es.reflect.construct': function () {
try {
return !Reflect.construct(function () { /* empty */ });
} catch (error) { /* empty */ }
function F() { /* empty */ }
return Reflect.construct(function () { /* empty */ }, [], F) instanceof F;
},
'es.reflect.define-property': function () {
return !Reflect.defineProperty(Object.defineProperty({}, 1, { value: 1 }), 1, { value: 2 });
},
'es.reflect.delete-property': function () {
return Reflect.deleteProperty;
},
'es.reflect.get': function () {
return Reflect.get;
},
'es.reflect.get-own-property-descriptor': function () {
return Reflect.getOwnPropertyDescriptor;
},
'es.reflect.get-prototype-of': function () {
return Reflect.getPrototypeOf;
},
'es.reflect.has': function () {
return Reflect.has;
},
'es.reflect.is-extensible': function () {
return Reflect.isExtensible;
},
'es.reflect.own-keys': function () {
return Reflect.ownKeys;
},
'es.reflect.prevent-extensions': function () {
return Reflect.preventExtensions;
},
'es.reflect.set': function () {
var object = Object.defineProperty({}, 'a', { configurable: true });
return Reflect.set(Object.getPrototypeOf(object), 'a', 1, object) === false;
},
'es.reflect.set-prototype-of': function () {
return Reflect.setPrototypeOf;
},
'es.reflect.to-string-tag': function () {
return Reflect[Symbol.toStringTag];
},
'es.regexp.constructor': [NCG_SUPPORT, function () {
var re1 = /a/g;
var re2 = /a/g;
re2[Symbol.match] = false;
// eslint-disable-next-line no-constant-binary-expression -- required for testing
return new RegExp(re1) !== re1
&& RegExp(re1) === re1
&& RegExp(re2) !== re2
&& String(RegExp(re1, 'i')) === '/a/i'
&& new RegExp('a', 'y') // just check that it doesn't throw
&& RegExp('.', 's').exec('\n')
&& RegExp[Symbol.species];
}],
'es.regexp.escape': function () {
return RegExp.escape('ab') === '\\x61b';
},
'es.regexp.dot-all': function () {
return RegExp('.', 's').dotAll;
},
'es.regexp.exec': [NCG_SUPPORT, function () {
var re1 = /a/;
var re2 = /b*/g;
var reSticky = new RegExp('a', 'y');
var reStickyAnchored = new RegExp('^a', 'y');
re1.exec('a');
re2.exec('a');
return re1.lastIndex === 0 && re2.lastIndex === 0
// eslint-disable-next-line regexp/no-empty-group -- required for testing
&& /()??/.exec('')[1] === undefined
&& reSticky.exec('abc')[0] === 'a'
&& reSticky.exec('abc') === null
&& (reSticky.lastIndex = 1)
&& reSticky.exec('bac')[0] === 'a'
&& (reStickyAnchored.lastIndex = 2)
&& reStickyAnchored.exec('cba') === null
&& RegExp('.', 's').exec('\n');
}],
'es.regexp.flags': function () {
var INDICES_SUPPORT = true;
try {
RegExp('.', 'd');
} catch (error) {
INDICES_SUPPORT = false;
}
var O = {};
// modern V8 bug
var calls = '';
var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';
var addGetter = function (key, chr) {
Object.defineProperty(O, key, { get: function () {
calls += chr;
return true;
} });
};
var pairs = {
dotAll: 's',
global: 'g',
ignoreCase: 'i',
multiline: 'm',
sticky: 'y'
};
if (INDICES_SUPPORT) pairs.hasIndices = 'd';
for (var key in pairs) addGetter(key, pairs[key]);
var result = Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get.call(O);
return result === expected && calls === expected;
},
'es.regexp.sticky': function () {
return new RegExp('a', 'y').sticky === true;
},
'es.regexp.test': function () {
var execCalled = false;
var re = /[ac]/;
re.exec = function () {
execCalled = true;
return /./.exec.apply(this, arguments);
};
return re.test('abc') === true && execCalled;
},
'es.regexp.to-string': function () {
return RegExp.prototype.toString.call({ source: 'a', flags: 'b' }) === '/a/b'
&& RegExp.prototype.toString.name === 'toString';
},
'es.set.constructor': [SAFE_ITERATION_CLOSING_SUPPORT, function () {
var called = 0;
var iterable = {
next: function () {
return { done: !!called++, value: 1 };
}
};
iterable[Symbol.iterator] = function () {
return this;
};
var set = new Set(iterable);
return set.forEach
&& set[Symbol.iterator]().next()
&& set.has(1)
&& set.add(-0) === set
&& set.has(0)
&& set[Symbol.toStringTag];
}],
'es.set.difference.v2': [createSetMethodTest('difference', function (result) {
return result.size === 0;
}), function () {
// A WebKit bug occurs when `this` is updated while Set.prototype.difference is being executed
// https://bugs.webkit.org/show_bug.cgi?id=288595
var setLike = {
size: 1,
has: function () { return true; },
keys: function () {
var index = 0;
return {
next: function () {
var done = index++ > 1;
if (baseSet.has(1)) baseSet.clear();
return { done: done, value: 2 };
}
};
}
};
var baseSet = new Set([1, 2, 3, 4]);
return baseSet.difference(setLike).size === 3;
}],
'es.set.intersection.v2': [createSetMethodTest('intersection', function (result) {
return result.size === 2 && result.has(1) && result.has(2);
}), function () {
return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) === '3,2';
}],
'es.set.is-disjoint-from.v2': createSetMethodTest('isDisjointFrom', function (result) {
return !result;
}),
'es.set.is-subset-of.v2': createSetMethodTest('isSubsetOf', function (result) {
return result;
}),
'es.set.is-superset-of.v2': createSetMethodTest('isSupersetOf', function (result) {
return !result;
}),
'es.set.symmetric-difference.v2': [
createSetMethodTest('symmetricDifference'),
createSetMethodTestShouldGetKeysBeforeCloning('symmetricDifference')
],
'es.set.union.v2': [
createSetMethodTest('union'),
createSetMethodTestShouldGetKeysBeforeCloning('union')
],
'es.string.at-alternative': function () {
return '𠮷'.at(-2) === '\uD842';
},
'es.string.code-point-at': function () {
return String.prototype.codePointAt;
},
'es.string.ends-with': createIsRegExpLogicTest('endsWith'),
'es.string.from-code-point': function () {
return String.fromCodePoint;
},
'es.string.includes': createIsRegExpLogicTest('includes'),
'es.string.is-well-formed': function () {
return String.prototype.isWellFormed;
},
'es.string.iterator': [SYMBOLS_SUPPORT, function () {
return ''[Symbol.iterator];
}],
'es.string.match': function () {
var O = {};
O[Symbol.match] = function () { return 7; };
var execCalled = false;
var re = /a/;
re.exec = function () {
execCalled = true;
return null;
};
re[Symbol.match]('');
// eslint-disable-next-line regexp/prefer-regexp-exec -- required for testing
return ''.match(O) === 7 && execCalled;
},
'es.string.match-all': function () {
try {
// eslint-disable-next-line regexp/no-missing-g-flag -- required for testing
'a'.matchAll(/./);
} catch (error) {
return 'a'.matchAll(/./g);
}
},
'es.string.pad-end': function () {
return String.prototype.padEnd && !WEBKIT_STRING_PAD_BUG;
},
'es.string.pad-start': function () {
return String.prototype.padStart && !WEBKIT_STRING_PAD_BUG;
},
'es.string.raw': function () {
return String.raw;
},
'es.string.repeat': function () {
return String.prototype.repeat;
},
'es.string.replace': function () {
var O = {};
O[Symbol.replace] = function () { return 7; };
var execCalled = false;
var re = /a/;
re.exec = function () {
execCalled = true;
return null;
};
re[Symbol.replace]('');
var re2 = /./;
re2.exec = function () {
var result = [];
result.groups = { a: '7' };
return result;
};
return ''.replace(O) === 7
&& execCalled
// eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive
&& ''.replace(re2, '$<a>') === '7'
// eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing
&& 'a'.replace(/./, '$0') === '$0'
&& /./[Symbol.replace]('a', '$0') === '$0';
},
'es.string.replace-all': function () {
return String.prototype.replaceAll;
},
'es.string.search': function () {
var O = {};
O[Symbol.search] = function () { return 7; };
var execCalled = false;
var re = /a/;
re.exec = function () {
execCalled = true;
return null;
};
re[Symbol.search]('');
return ''.search(O) === 7 && execCalled;
},
'es.string.split': function () {
var O = {};
O[Symbol.split] = function () { return 7; };
var execCalled = false;
var re = /a/;
re.exec = function () {
execCalled = true;
return null;
};
re.constructor = {};
re.constructor[Symbol.species] = function () { return re; };
re[Symbol.split]('');
// eslint-disable-next-line regexp/no-empty-group -- required for testing
var re2 = /(?:)/;
var originalExec = re2.exec;
re2.exec = function () { return originalExec.apply(this, arguments); };
var result = 'ab'.split(re2);
return ''.split(O) === 7 && execCalled && result.length === 2 && result[0] === 'a' && result[1] === 'b';
},
'es.string.starts-with': createIsRegExpLogicTest('startsWith'),
'es.string.substr': function () {
return 'ab'.substr(-1) === 'b';
},
'es.string.to-well-formed': function () {
// Safari ToString conversion bug
// https://bugs.webkit.org/show_bug.cgi?id=251757
return String.prototype.toWellFormed.call(1) === '1';
},
'es.string.trim': createStringTrimMethodTest('trim'),
'es.string.trim-end': [createStringTrimMethodTest('trimEnd'), function () {
return String.prototype.trimRight === String.prototype.trimEnd;
}],
'es.string.trim-left': [createStringTrimMethodTest('trimStart'), function () {
return String.prototype.trimLeft === String.prototype.trimStart;
}],
'es.string.trim-right': [createStringTrimMethodTest('trimEnd'), function () {
return String.prototype.trimRight === String.prototype.trimEnd;
}],
'es.string.trim-start': [createStringTrimMethodTest('trimStart'), function () {
return String.prototype.trimLeft === String.prototype.trimStart;
}],
'es.string.anchor': createStringHTMLMethodTest('anchor'),
'es.string.big': createStringHTMLMethodTest('big'),
'es.string.blink': createStringHTMLMethodTest('blink'),
'es.string.bold': createStringHTMLMethodTest('bold'),
'es.string.fixed': createStringHTMLMethodTest('fixed'),
'es.string.fontcolor': createStringHTMLMethodTest('fontcolor'),
'es.string.fontsize': createStringHTMLMethodTest('fontsize'),
'es.string.italics': createStringHTMLMethodTest('italics'),
'es.string.link': createStringHTMLMethodTest('link'),
'es.string.small': createStringHTMLMethodTest('small'),
'es.string.strike': createStringHTMLMethodTest('strike'),
'es.string.sub': createStringHTMLMethodTest('sub'),
'es.string.sup': createStringHTMLMethodTest('sup'),
'es.typed-array.float32-array': [
ARRAY_BUFFER_VIEWS_SUPPORT,
TYPED_ARRAY_CONSTRUCTORS_NOT_REQUIRES_WRAPPERS
],
'es.typed-array.float64-array': [
ARRAY_BUFFER_VIEWS_SUPPORT,
TYPED_ARRAY_CONSTRUCTORS_NOT_REQUIRES_WRAPPERS
],
'es.typed-array.int8-array': [
ARRAY_BUFFER_VIEWS_SUPPORT,
TYPED_ARRAY_CONSTRUCTORS_NOT_REQUIRES_WRAPPERS
],
'es.typed-array.int16-array': [
ARRAY_BUFFER_VIEWS_SUPPORT,
TYPED_ARRAY_CONSTRUCTORS_NOT_REQUIRES_WRAPPERS
],
'es.typed-array.int32-array': [
ARRAY_BUFFER_VIEWS_SUPPORT,
TYPED_ARRAY_CONSTRUCTORS_NOT_REQUIRES_WRAPPERS
],
'es.typed-array.uint8-array': [
ARRAY_BUFFER_VIEWS_SUPPORT,
TYPED_ARRAY_CONSTRUCTORS_NOT_REQUIRES_WRAPPERS
],
'es.typed-array.uint8-clamped-array': [
ARRAY_BUFFER_VIEWS_SUPPORT,
TYPED_ARRAY_CONSTRUCTORS_NOT_REQUIRES_WRAPPERS
],
'es.typed-array.uint16-array': [
ARRAY_BUFFER_VIEWS_SUPPORT,
TYPED_ARRAY_CONSTRUCTORS_NOT_REQUIRES_WRAPPERS
],
'es.typed-array.uint32-array': [
ARRAY_BUFFER_VIEWS_SUPPORT,
TYPED_ARRAY_CONSTRUCTORS_NOT_REQUIRES_WRAPPERS
],
'es.typed-array.at': function () {
return Int8Array.prototype.at;
},
'es.typed-array.copy-within': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
return Int8Array.prototype.copyWithin;
}],
'es.typed-array.every': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
return Int8Array.prototype.every;
}],
'es.typed-array.fill': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
var count = 0;
new Int8Array(2).fill({ valueOf: function () { return count++; } });
return count === 1;
}],
'es.typed-array.filter': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
return Int8Array.prototype.filter;
}],
'es.typed-array.find': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
return Int8Array.prototype.find;
}],
'es.typed-array.find-index': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
return Int8Array.prototype.findIndex;
}],
'es.typed-array.find-last': function () {
return Int8Array.prototype.findLast;
},
'es.typed-array.find-last-index': function () {
return Int8Array.prototype.findLastIndex;
},
'es.typed-array.for-each': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
return Int8Array.prototype.forEach;
}],
'es.typed-array.from': [
ARRAY_BUFFER_VIEWS_SUPPORT,
TYPED_ARRAY_CONSTRUCTORS_NOT_REQUIRES_WRAPPERS,
function () {
return Int8Array.from;
}
],
'es.typed-array.includes': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
return Int8Array.prototype.includes;
}],
'es.typed-array.index-of': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
return Int8Array.prototype.indexOf;
}],
'es.typed-array.iterator': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
try {
Int8Array.prototype[Symbol.iterator].call([1]);
} catch (error) {
return Int8Array.prototype[Symbol.iterator].name === 'values'
&& Int8Array.prototype[Symbol.iterator] === Int8Array.prototype.values
&& Int8Array.prototype.keys
&& Int8Array.prototype.entries;
}
}],
'es.typed-array.join': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
return Int8Array.prototype.join;
}],
'es.typed-array.last-index-of': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
return Int8Array.prototype.lastIndexOf;
}],
'es.typed-array.map': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
return Int8Array.prototype.map;
}],
'es.typed-array.of': [
ARRAY_BUFFER_VIEWS_SUPPORT,
TYPED_ARRAY_CONSTRUCTORS_NOT_REQUIRES_WRAPPERS,
function () {
return Int8Array.of;
}
],
'es.typed-array.reduce': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
return Int8Array.prototype.reduce;
}],
'es.typed-array.reduce-right': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
return Int8Array.prototype.reduceRight;
}],
'es.typed-array.reverse': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
return Int8Array.prototype.reverse;
}],
'es.typed-array.set': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
var array = new Uint8ClampedArray(3);
array.set(1);
array.set('2', 1);
Int8Array.prototype.set.call(array, { length: 1, 0: 3 }, 2);
return array[0] === 0 && array[1] === 2 && array[2] === 3;
}],
'es.typed-array.slice': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
return new Int8Array(1).slice();
}],
'es.typed-array.some': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
return Int8Array.prototype.some;
}],
'es.typed-array.sort': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
try {
new Uint16Array(1).sort(null);
new Uint16Array(1).sort({});
return false;
} catch (error) { /* empty */ }
// stable sort
var array = new Uint16Array(516);
var expected = Array(516);
var index, mod;
for (index = 0; index < 516; index++) {
mod = index % 4;
array[index] = 515 - index;
expected[index] = index - 2 * mod + 3;
}
array.sort(function (a, b) {
return (a / 4 | 0) - (b / 4 | 0);
});
for (index = 0; index < 516; index++) {
if (array[index] !== expected[index]) return;
} return true;
}],
'es.typed-array.subarray': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
return Int8Array.prototype.subarray;
}],
'es.typed-array.to-locale-string': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
try {
Int8Array.prototype.toLocaleString.call([1, 2]);
} catch (error) {
return [1, 2].toLocaleString() === new Int8Array([1, 2]).toLocaleString();
}
}],
'es.typed-array.to-string': [ARRAY_BUFFER_VIEWS_SUPPORT, function () {
return Int8Array.prototype.toString === Array.prototype.toString;
}],
'es.typed-array.to-reversed': function () {
return Int8Array.prototype.toReversed;
},
'es.typed-array.to-sorted': function () {
return Int8Array.prototype.toSorted;
},
'es.typed-array.with': [function () {
try {
new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });
} catch (error) {
return error === 8;
}
}, function () {
// WebKit doesn't handle this correctly. It should truncate a negative fractional index to zero, but instead throws an error
// Copyright (C) 2025 André Bargull. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
// https://github.com/tc39/test262/pull/4477/commits/bd47071722d914036280cdd795a6ac6046d1c6f9
var ta = new Int8Array(1);
var result = ta['with'](-0.5, 1);
return result[0] === 1;
}],
'es.unescape': function () {
return unescape;
},
'es.weak-map.constructor': [SAFE_ITERATION_CLOSING_SUPPORT, function () {
var key = Object.freeze([]);
var called = 0;
var iterable = {
next: function () {
return { done: !!called++, value: [key, 1] };
}
};
iterable[Symbol.iterator] = function () {
return this;
};
var map = new WeakMap(iterable);
// MS IE bug
return map.get(key) === 1
&& map.get(null) === undefined
&& map.set({}, 2) === map
&& map[Symbol.toStringTag]
// MS Edge bug
&& Object.isFrozen(key);
}],
'es.weak-set.constructor': [SAFE_ITERATION_CLOSING_SUPPORT, function () {
var key = {};
var called = 0;
var iterable = {
next: function () {
return { done: !!called++, value: key };
}
};
iterable[Symbol.iterator] = function () {
return this;
};
var set = new WeakSet(iterable);
return set.has(key)
&& !set.has(null)
&& set.add({}) === set
&& set[Symbol.toStringTag];
}],
'esnext.suppressed-error.constructor': function () {
return typeof SuppressedError == 'function'
&& SuppressedError.length === 3
&& new SuppressedError(1, 2, 3, { cause: 4 }).cause !== 4;
},
'esnext.array.from-async': function () {
// https://bugs.webkit.org/show_bug.cgi?id=271703
var counter = 0;
Array.fromAsync.call(function () {
counter++;
return [];
}, { length: 0 });
return counter === 1;
},
'esnext.array.filter-reject': function () {
return [].filterReject;
},
'esnext.array.is-template-object': function () {
return Array.isTemplateObject;
},
'esnext.array.unique-by': function () {
return [].uniqueBy;
},
'esnext.async-disposable-stack.constructor': function () {
// https://github.com/tc39/proposal-explicit-resource-management/issues/256
// can't be detected synchronously
if (V8_VERSION && V8_VERSION < 136) return;
return typeof AsyncDisposableStack == 'function';
},
'esnext.async-iterator.constructor': function () {
return typeof AsyncIterator == 'function';
},
'esnext.async-iterator.async-dispose': function () {
return AsyncIterator.prototype[Symbol.asyncDispose];
},
'esnext.async-iterator.drop': function () {
return AsyncIterator.prototype.drop;
},
'esnext.async-iterator.every': function () {
return AsyncIterator.prototype.every;
},
'esnext.async-iterator.filter': function () {
return AsyncIterator.prototype.filter;
},
'esnext.async-iterator.find': function () {
return AsyncIterator.prototype.find;
},
'esnext.async-iterator.flat-map': function () {
return AsyncIterator.prototype.flatMap;
},
'esnext.async-iterator.for-each': function () {
return AsyncIterator.prototype.forEach;
},
'esnext.async-iterator.from': function () {
return AsyncIterator.from;
},
'esnext.async-iterator.map': function () {
return AsyncIterator.prototype.map;
},
'esnext.async-iterator.reduce': function () {
return AsyncIterator.prototype.reduce;
},
'esnext.async-iterator.some': function () {
return AsyncIterator.prototype.some;
},
'esnext.async-iterator.take': function () {
return AsyncIterator.prototype.take;
},
'esnext.async-iterator.to-array': function () {
return AsyncIterator.prototype.toArray;
},
'esnext.composite-key': function () {
return compositeKey;
},
'esnext.composite-symbol': function () {
return compositeSymbol;
},
'esnext.data-view.get-uint8-clamped': [ARRAY_BUFFER_SUPPORT, function () {
return DataView.prototype.getUint8Clamped;
}],
'esnext.data-view.set-uint8-clamped': [ARRAY_BUFFER_SUPPORT, function () {
return DataView.prototype.setUint8Clamped;
}],
'esnext.disposable-stack.constructor': function () {
return typeof DisposableStack == 'function';
},
'esnext.error.is-error': function () {
return PROTOTYPE_SETTING_AVAILABLE &&
(typeof DOMException != 'function' || Error.isError(new DOMException('DOMException'))) &&
Error.isError(new Error('Error', { cause: function () { /* empty */ } })) &&
!Error.isError(Object.create(Error.prototype));
},
'esnext.function.demethodize': function () {
return Function.prototype.demethodize;
},
'esnext.function.is-callable': function () {
return Function.isCallable;
},
'esnext.function.is-constructor': function () {
return Function.isConstructor;
},
'esnext.function.metadata': function () {
return Function.prototype[Symbol.metadata] === null;
},
'esnext.iterator.concat': function () {
return Iterator.concat;
},
'esnext.iterator.dispose': function () {
return [].keys()[Symbol.dispose];
},
'esnext.iterator.range': function () {
return Iterator.range;
},
'esnext.iterator.to-async': function () {
return Iterator.prototype.toAsync;
},
'esnext.json.is-raw-json': NATIVE_RAW_JSON,
'esnext.json.parse': function () {
var unsafeInt = '9007199254740993';
var source;
JSON.parse(unsafeInt, function (key, value, context) {
source = context.source;
});
return source === unsafeInt;
},
'esnext.json.raw-json': NATIVE_RAW_JSON,
'esnext.map.delete-all': function () {
return Map.prototype.deleteAll;
},
'esnext.map.every': function () {
return Map.prototype.every;
},
'esnext.map.filter': function () {
return Map.prototype.filter;
},
'esnext.map.find': function () {
return Map.prototype.find;
},
'esnext.map.find-key': function () {
return Map.prototype.findKey;
},
'esnext.map.from': function () {
return Map.from;
},
'esnext.map.get-or-insert': function () {
return Map.prototype.getOrInsert;
},
'esnext.map.get-or-insert-computed': function () {
return Map.prototype.getOrInsertComputed;
},
'esnext.map.includes': function () {
return Map.prototype.includes;
},
'esnext.map.key-by': function () {
return Map.keyBy;
},
'esnext.map.key-of': function () {
return Map.prototype.keyOf;
},
'esnext.map.map-keys': function () {
return Map.prototype.mapKeys;
},
'esnext.map.map-values': function () {
return Map.prototype.mapValues;
},
'esnext.map.merge': function () {
return Map.prototype.merge;
},
'esnext.map.of': function () {
return Map.of;
},
'esnext.map.reduce': function () {
return Map.prototype.reduce;
},
'esnext.map.some': function () {
return Map.prototype.some;
},
'esnext.map.update': function () {
return Map.prototype.update;
},
'esnext.math.clamp': function () {
return Math.clamp;
},
'esnext.math.deg-per-rad': function () {
return Math.DEG_PER_RAD;
},
'esnext.math.degrees': function () {
return Math.degrees;
},
'esnext.math.fscale': function () {
return Math.fscale;
},
'esnext.math.rad-per-deg': function () {
return Math.RAD_PER_DEG;
},
'esnext.math.radians': function () {
return Math.radians;
},
'esnext.math.scale': function () {
return Math.scale;
},
'esnext.math.signbit': function () {
return Math.signbit;
},
'esnext.math.sum-precise': function () {
return Math.sumPrecise;
},
'esnext.number.from-string': function () {
return Number.fromString;
},
'esnext.set.add-all': function () {
return Set.prototype.addAll;
},
'esnext.set.delete-all': function () {
return Set.prototype.deleteAll;
},
'esnext.set.every': function () {
return Set.prototype.every;
},
'esnext.set.filter': function () {
return Set.prototype.filter;
},
'esnext.set.find': function () {
return Set.prototype.find;
},
'esnext.set.from': function () {
return Set.from;
},
'esnext.set.join': function () {
return Set.prototype.join;
},
'esnext.set.map': function () {
return Set.prototype.map;
},
'esnext.set.of': function () {
return Set.of;
},
'esnext.set.reduce': function () {
return Set.prototype.reduce;
},
'esnext.set.some': function () {
return Set.prototype.some;
},
'esnext.string.code-points': function () {
return String.prototype.codePoints;
},
'esnext.string.cooked': function () {
return String.cooked;
},
'esnext.string.dedent': function () {
return String.dedent;
},
'esnext.symbol.async-dispose': function () {
var descriptor = Object.getOwnPropertyDescriptor(Symbol, 'asyncDispose');
return descriptor.value && !descriptor.enumerable && !descriptor.configurable && !descriptor.writable;
},
'esnext.symbol.custom-matcher': function () {
return Symbol.customMatcher;
},
'esnext.symbol.dispose': function () {
var descriptor = Object.getOwnPropertyDescriptor(Symbol, 'dispose');
return descriptor.value && !descriptor.enumerable && !descriptor.configurable && !descriptor.writable;
},
'esnext.symbol.is-registered-symbol': function () {
return Symbol.isRegisteredSymbol;
},
'esnext.symbol.is-well-known-symbol': function () {
return Symbol.isWellKnownSymbol;
},
'esnext.symbol.metadata': function () {
return Symbol.metadata;
},
'esnext.symbol.observable': function () {
return Symbol.observable;
},
'esnext.typed-array.filter-reject': function () {
return Int8Array.prototype.filterReject;
},
'esnext.typed-array.unique-by': function () {
return Int8Array.prototype.uniqueBy;
},
'esnext.uint8-array.from-base64': function () {
return Uint8Array.fromBase64;
},
'esnext.uint8-array.from-hex': function () {
return Uint8Array.fromHex;
},
'esnext.uint8-array.set-from-base64': function () {
var target = new Uint8Array([255, 255, 255, 255, 255]);
try {
target.setFromBase64('MjYyZg===');
} catch (error) {
return target[0] === 50 && target[1] === 54 && target[2] === 50 && target[3] === 255 && target[4] === 255;
}
},
'esnext.uint8-array.set-from-hex': function () {
return Uint8Array.prototype.setFromHex;
},
'esnext.uint8-array.to-base64': function () {
return Uint8Array.prototype.toBase64;
},
'esnext.uint8-array.to-hex': function () {
return Uint8Array.prototype.toHex;
},
'esnext.weak-map.delete-all': function () {
return WeakMap.prototype.deleteAll;
},
'esnext.weak-map.get-or-insert': function () {
return WeakMap.prototype.getOrInsert;
},
'esnext.weak-map.get-or-insert-computed': function () {
return WeakMap.prototype.getOrInsertComputed;
},
'esnext.weak-map.from': function () {
return WeakMap.from;
},
'esnext.weak-map.of': function () {
return WeakMap.of;
},
'esnext.weak-set.add-all': function () {
return WeakSet.prototype.addAll;
},
'esnext.weak-set.delete-all': function () {
return WeakSet.prototype.deleteAll;
},
'esnext.weak-set.from': function () {
return WeakSet.from;
},
'esnext.weak-set.of': function () {
return WeakSet.of;
},
'web.atob': function () {
try {
atob();
} catch (error1) {
try {
atob('a');
} catch (error2) {
return atob(' ') === '';
}
}
},
'web.btoa': function () {
try {
btoa();
} catch (error) {
return typeof btoa == 'function';
}
},
'web.clear-immediate': function () {
return setImmediate && clearImmediate;
},
'web.dom-collections.for-each': function () {
return (!GLOBAL.NodeList || (NodeList.prototype.forEach && NodeList.prototype.forEach === [].forEach))
&& (!GLOBAL.DOMTokenList || (DOMTokenList.prototype.forEach && DOMTokenList.prototype.forEach === [].forEach));
},
'web.dom-collections.iterator': function () {
var DOMIterables = {
CSSRuleList: 0,
CSSStyleDeclaration: 0,
CSSValueList: 0,
ClientRectList: 0,
DOMRectList: 0,
DOMStringList: 0,
DOMTokenList: 1,
DataTransferItemList: 0,
FileList: 0,
HTMLAllCollection: 0,
HTMLCollection: 0,
HTMLFormElement: 0,
HTMLSelectElement: 0,
MediaList: 0,
MimeTypeArray: 0,
NamedNodeMap: 0,
NodeList: 1,
PaintRequestList: 0,
Plugin: 0,
PluginArray: 0,
SVGLengthList: 0,
SVGNumberList: 0,
SVGPathSegList: 0,
SVGPointList: 0,
SVGStringList: 0,
SVGTransformList: 0,
SourceBufferList: 0,
StyleSheetList: 0,
TextTrackCueList: 0,
TextTrackList: 0,
TouchList: 0
};
for (var collection in DOMIterables) {
if (GLOBAL[collection]) {
if (
!GLOBAL[collection].prototype[Symbol.iterator] ||
GLOBAL[collection].prototype[Symbol.iterator] !== [].values
) return false;
if (DOMIterables[collection] && (
!GLOBAL[collection].prototype.keys ||
!GLOBAL[collection].prototype.values ||
!GLOBAL[collection].prototype.entries
)) return false;
}
}
return true;
},
'web.dom-exception.constructor': function () {
return new DOMException() instanceof Error
&& new DOMException(1, 'DataCloneError').code === 25
&& String(new DOMException(1, 2)) === '2: 1'
&& DOMException.DATA_CLONE_ERR === 25
&& DOMException.prototype.DATA_CLONE_ERR === 25;
},
'web.dom-exception.stack': function () {
return !('stack' in new Error('1')) || 'stack' in new DOMException();
},
'web.dom-exception.to-string-tag': function () {
return typeof DOMException == 'function'
&& DOMException.prototype[Symbol.toStringTag] === 'DOMException';
},
// TODO: Remove this module from `core-js@4` since it's split to submodules
'web.immediate': IMMEDIATE,
'web.queue-microtask': function () {
return Object.getOwnPropertyDescriptor(GLOBAL, 'queueMicrotask').value.length === 1;
},
'web.self': function () {
// eslint-disable-next-line no-restricted-globals -- safe
if (self !== GLOBAL) return false;
if (!DESCRIPTORS_SUPPORT) return true;
var descriptor = Object.getOwnPropertyDescriptor(GLOBAL, 'self');
return descriptor.get && descriptor.enumerable;
},
'web.set-immediate': IMMEDIATE,
'web.set-interval': TIMERS,
'web.set-timeout': TIMERS,
'web.structured-clone': function () {
function checkErrorsCloning(structuredCloneImplementation, $Error) {
var error = new $Error();
var test = structuredCloneImplementation({ a: error, b: error });
return test && test.a === test.b && test.a instanceof $Error && test.a.stack === error.stack;
}
function checkNewErrorsCloningSemantic(structuredCloneImplementation) {
var test = structuredCloneImplementation(new AggregateError([1], 'message', { cause: 3 }));
return test.name === 'AggregateError' && test.errors[0] === 1 && test.message === 'message' && test.cause === 3;
}
return checkErrorsCloning(structuredClone, Error)
&& checkErrorsCloning(structuredClone, DOMException)
&& checkNewErrorsCloningSemantic(structuredClone);
},
// TODO: Remove this module from `core-js@4` since it's split to submodules
'web.timers': TIMERS,
'web.url.constructor': URL_AND_URL_SEARCH_PARAMS_SUPPORT,
'web.url.can-parse': [URL_AND_URL_SEARCH_PARAMS_SUPPORT, function () {
try {
URL.canParse();
} catch (error) {
return URL.canParse.length === 1;
}
}],
'web.url.parse': [URL_AND_URL_SEARCH_PARAMS_SUPPORT, function () {
return URL.parse;
}],
'web.url.to-json': [URL_AND_URL_SEARCH_PARAMS_SUPPORT, function () {
return URL.prototype.toJSON;
}],
'web.url-search-params.constructor': URL_AND_URL_SEARCH_PARAMS_SUPPORT,
'web.url-search-params.delete': [URL_AND_URL_SEARCH_PARAMS_SUPPORT, function () {
var params = new URLSearchParams('a=1&a=2&b=3');
params['delete']('a', 1);
// `undefined` case is a Chromium 117 bug
// https://bugs.chromium.org/p/v8/issues/detail?id=14222
params['delete']('b', undefined);
return params + '' === 'a=2';
}],
'web.url-search-params.has': [URL_AND_URL_SEARCH_PARAMS_SUPPORT, function () {
var params = new URLSearchParams('a=1');
// `undefined` case is a Chromium 117 bug
// https://bugs.chromium.org/p/v8/issues/detail?id=14222
return params.has('a', 1) && !params.has('a', 2) && params.has('a', undefined);
}],
'web.url-search-params.size': [URL_AND_URL_SEARCH_PARAMS_SUPPORT, function () {
return 'size' in URLSearchParams.prototype;
}]
};

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-core-js.git
git@api.gitlife.ru:oschina-mirror/mirrors-core-js.git
oschina-mirror
mirrors-core-js
mirrors-core-js
master