jscrewit 2.37.0 → 2.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/jscrewit.js CHANGED
@@ -1,4 +1,4 @@
1
- // JScrewIt 2.37.0 – https://jscrew.it
1
+ // JScrewIt 2.39.0 – https://jscrew.it
2
2
 
3
3
  (function () {
4
4
  'use strict';
@@ -281,36 +281,35 @@
281
281
  // ~feature-hub – https://github.com/fasttime/JScrewIt/tree/master/packages/~feature-hub
282
282
 
283
283
 
284
- var BIN_POW_31 = 2147483648;
285
- var BIN_POW_32 = 4294967296;
286
- var BIN_POW_51 = 2251799813685248;
287
- var BIT_MASK_31 = 2147483647;
288
- var EMPTY_MASK = 0;
284
+ var LO_INDEX = 0;
285
+ var HI_INDEX = 1;
286
+ var freezeMask = function (_LoHi) { return Object.freeze(_LoHi); };
287
+ /** An empty mask. */
288
+ var MASK_EMPTY = freezeMask([0, 0]);
289
289
  /** Determines whether two specified masks are equal. */
290
290
  function maskAreEqual(mask1, mask2) {
291
- return mask1 === mask2;
291
+ var _LoHi1 = mask1;
292
+ var _LoHi2 = mask2;
293
+ return _LoHi1[LO_INDEX] === _LoHi2[LO_INDEX] && _LoHi1[HI_INDEX] === _LoHi2[HI_INDEX];
292
294
  }
293
295
  /** Determines whether a specified mask includes another one. */
294
296
  function maskIncludes(includingMask, includedMask) {
297
+ var includingLoHi = includingMask;
298
+ var includedLoHi = includedMask;
295
299
  var includedLoValue;
296
300
  var includedHiValue;
297
- var returnValue = (includingMask &
298
- (includedLoValue = includedMask | 0)) ===
299
- includedLoValue &&
300
- (includingMask / BIN_POW_32 &
301
- (includedHiValue = includedMask / BIN_POW_32 | 0)) ===
302
- includedHiValue;
301
+ var returnValue = (includedLoValue = includedLoHi[LO_INDEX]) === (includedLoValue & includingLoHi[LO_INDEX]) &&
302
+ (includedHiValue = includedLoHi[HI_INDEX]) === (includedHiValue & includingLoHi[HI_INDEX]);
303
303
  return returnValue;
304
304
  }
305
305
  /** Returns a new mask that is the intersection of two specified masks. */
306
306
  function maskIntersection(mask1, mask2) {
307
- var intersectionMask = ((mask1 & mask2 & BIT_MASK_31) +
308
- (mask1 / BIN_POW_31 & mask2 / BIN_POW_31) * BIN_POW_31);
309
- return intersectionMask;
310
- }
311
- /** Returns a new empty mask. */
312
- function maskNew() {
313
- return EMPTY_MASK;
307
+ var _LoHi1 = mask1;
308
+ var _LoHi2 = mask2;
309
+ var intersectionLo = _LoHi1[LO_INDEX] & _LoHi2[LO_INDEX];
310
+ var intersectionHi = _LoHi1[HI_INDEX] & _LoHi2[HI_INDEX];
311
+ var intersectionLoHi = [intersectionLo, intersectionHi];
312
+ return freezeMask(intersectionLoHi);
314
313
  }
315
314
  /**
316
315
  * Returns a new non-empty mask that does not intersect the specified mask.
@@ -318,18 +317,24 @@
318
317
  * @throws If the specified mask is full, a `RangeError` is thrown.
319
318
  */
320
319
  function maskNext(mask) {
321
- var nextValue = 1;
322
- for (var checkValue = mask; checkValue & 1; checkValue /= 2)
323
- nextValue *= 2;
324
- if (nextValue > BIN_POW_51)
325
- throw RangeError('Mask full');
326
- return nextValue;
320
+ var _LoHi = mask;
321
+ var bitIndex = 0;
322
+ for (; _LoHi[bitIndex >> 5] & 1 << (bitIndex & 0x1F); bitIndex++) {
323
+ if (bitIndex === 63)
324
+ throw RangeError('Mask full');
325
+ }
326
+ var nextLoHi = [0, 0];
327
+ nextLoHi[bitIndex >> 5] = 1 << (bitIndex & 0x1F);
328
+ return freezeMask(nextLoHi);
327
329
  }
328
330
  /** Returns a new mask that is the union of two specified masks. */
329
331
  function maskUnion(mask1, mask2) {
330
- var unionMask = (((mask1 | mask2) & BIT_MASK_31) +
331
- (mask1 / BIN_POW_31 | mask2 / BIN_POW_31) * BIN_POW_31);
332
- return unionMask;
332
+ var _LoHi1 = mask1;
333
+ var _LoHi2 = mask2;
334
+ var unionLo = _LoHi1[LO_INDEX] | _LoHi2[LO_INDEX];
335
+ var unionHi = _LoHi1[HI_INDEX] | _LoHi2[HI_INDEX];
336
+ var unionLoHi = [unionLo, unionHi];
337
+ return freezeMask(unionLoHi);
333
338
  }
334
339
 
335
340
  var keyFor = function (mask) { return "_".concat(mask); };
@@ -430,7 +435,7 @@
430
435
  for (var _i = 0; _i < arguments.length; _i++) {
431
436
  features[_i] = arguments[_i];
432
437
  }
433
- var mask = maskNew();
438
+ var mask = MASK_EMPTY;
434
439
  for (var _a = 0, features_1 = features; _a < features_1.length; _a++) {
435
440
  var feature = features_1[_a];
436
441
  var otherMask = validMaskFromArrayOrStringOrFeature(feature);
@@ -444,7 +449,7 @@
444
449
  }
445
450
  function _fromMask(mask) {
446
451
  if (isMaskCompatible(mask)) {
447
- var includedMask = maskNew();
452
+ var includedMask = MASK_EMPTY;
448
453
  for (var _i = 0, ELEMENTARY_1 = ELEMENTARY; _i < ELEMENTARY_1.length; _i++) {
449
454
  var featureMask = ELEMENTARY_1[_i].mask;
450
455
  if (maskIncludes(mask, featureMask))
@@ -458,7 +463,7 @@
458
463
  return null;
459
464
  }
460
465
  function _getMask(feature) {
461
- var mask = feature !== undefined ? validMaskFromArrayOrStringOrFeature(feature) : maskNew();
466
+ var mask = feature !== undefined ? validMaskFromArrayOrStringOrFeature(feature) : MASK_EMPTY;
462
467
  return mask;
463
468
  }
464
469
  function areCompatible() {
@@ -528,7 +533,7 @@
528
533
  return description;
529
534
  }
530
535
  function featureArrayLikeToMask(features) {
531
- var mask = maskNew();
536
+ var mask = MASK_EMPTY;
532
537
  var length = features.length;
533
538
  for (var index = 0; index < length; ++index) {
534
539
  var feature = features[index];
@@ -608,11 +613,9 @@
608
613
  }
609
614
  var utilInspect;
610
615
  try {
611
- /* eslint-disable
612
- @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */
616
+ /* eslint-disable @typescript-eslint/no-require-imports */
613
617
  utilInspect = require('util').inspect;
614
- /* eslint-enable
615
- @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */
618
+ /* eslint-enable @typescript-eslint/no-require-imports */
616
619
  }
617
620
  catch (_a) { }
618
621
  {
@@ -620,7 +623,7 @@
620
623
  get canonicalNames() {
621
624
  var mask = this.mask;
622
625
  var names = [];
623
- var includedMask = maskNew();
626
+ var includedMask = MASK_EMPTY;
624
627
  for (var index = PRISTINE_ELEMENTARY.length; index--;) {
625
628
  var featureObj = PRISTINE_ELEMENTARY[index];
626
629
  var featureMask = featureObj.mask;
@@ -723,7 +726,7 @@
723
726
  wrappedCheck = wrapCheck(check);
724
727
  }
725
728
  else {
726
- mask = maskNew();
729
+ mask = MASK_EMPTY;
727
730
  wrappedCheck = null;
728
731
  }
729
732
  {
@@ -845,7 +848,7 @@
845
848
  var featureNames = _Object_keys(featureInfos);
846
849
  var includeSetMap = createMap();
847
850
  var familiesMap = createMap();
848
- var unionMask = maskNew();
851
+ var unionMask = MASK_EMPTY;
849
852
  featureNames.forEach(completeFeature);
850
853
  completeExclusions();
851
854
  PRISTINE_ELEMENTARY = ELEMENTARY.slice();
@@ -868,7 +871,7 @@
868
871
  return str;
869
872
  }
870
873
  function featuresToMask(featureObjs) {
871
- var mask = featureObjs.reduce(function (mask, featureObj) { return maskUnion(mask, featureObj.mask); }, maskNew());
874
+ var mask = featureObjs.reduce(function (mask, featureObj) { return maskUnion(mask, featureObj.mask); }, MASK_EMPTY);
872
875
  return mask;
873
876
  }
874
877
  function indent(text) {
@@ -919,21 +922,6 @@
919
922
  return returnValue;
920
923
  }
921
924
 
922
- function checkSelfFeature()
923
- {
924
- // self + '' throws an error inside a web worker in Safari 8 and 9.
925
- try
926
- {
927
- var str = self + '';
928
- }
929
- catch (error)
930
- {
931
- return false;
932
- }
933
- var available = this(str);
934
- return available;
935
- }
936
-
937
925
  function describeEngine(engine)
938
926
  {
939
927
  var description = 'Features available in ' + engine + '.';
@@ -959,6 +947,26 @@
959
947
  return returnValue;
960
948
  }
961
949
 
950
+ function makeSelfFeatureCheck(regExp)
951
+ {
952
+ function check()
953
+ {
954
+ // self + '' throws an error inside a web worker in Safari 8 and 9.
955
+ try
956
+ {
957
+ var str = self + '';
958
+ }
959
+ catch (error)
960
+ {
961
+ return false;
962
+ }
963
+ var available = regExp.test(str);
964
+ return available;
965
+ }
966
+
967
+ return check;
968
+ }
969
+
962
970
  function restrict(environment, engineFeatureObjs)
963
971
  {
964
972
  var restrictionCache = createEmpty();
@@ -1010,15 +1018,7 @@
1010
1018
  description:
1011
1019
  'Existence of the global object self whose string representation starts with "[object " ' +
1012
1020
  'and ends with "Window]".',
1013
- check:
1014
- checkSelfFeature.bind
1015
- (
1016
- function (str)
1017
- {
1018
- var available = /^\[object [\S\s]*Window]$/.test(str);
1019
- return available;
1020
- }
1021
- ),
1021
+ check: makeSelfFeatureCheck(/^\[object [\S\s]*Window]$/),
1022
1022
  includes: ['SELF_OBJ'],
1023
1023
  attributes: { 'web-worker': 'web-worker-restriction' },
1024
1024
  },
@@ -1035,6 +1035,21 @@
1035
1035
  return available;
1036
1036
  },
1037
1037
  },
1038
+ ASYNC_FUNCTION:
1039
+ {
1040
+ description: 'Support for async functions, which return Promise object.',
1041
+ check:
1042
+ function ()
1043
+ {
1044
+ try
1045
+ {
1046
+ Function('return async function(){}');
1047
+ return true;
1048
+ }
1049
+ catch (error)
1050
+ { }
1051
+ },
1052
+ },
1038
1053
  ARROW:
1039
1054
  {
1040
1055
  description: 'Support for arrow functions.',
@@ -1084,6 +1099,23 @@
1084
1099
  },
1085
1100
  attributes: { 'web-worker': 'web-worker-restriction' },
1086
1101
  },
1102
+ CALL_ON_GLOBAL:
1103
+ {
1104
+ description:
1105
+ 'The ability to call a function on the global object when invoking ' +
1106
+ 'Function.prototype.call without binding.',
1107
+ check:
1108
+ function ()
1109
+ {
1110
+ try
1111
+ {
1112
+ if ([].concat.call()[0])
1113
+ return true;
1114
+ }
1115
+ catch (error)
1116
+ { }
1117
+ },
1118
+ },
1087
1119
  CAPITAL_HTML:
1088
1120
  {
1089
1121
  description:
@@ -1119,6 +1151,11 @@
1119
1151
  },
1120
1152
  attributes: { 'web-worker': 'no-console-in-web-worker' },
1121
1153
  },
1154
+ CREATE_ELEMENT:
1155
+ {
1156
+ description: 'Existence of the function document.createElement.',
1157
+ aliasFor: 'ANY_DOCUMENT',
1158
+ },
1122
1159
  DOCUMENT:
1123
1160
  {
1124
1161
  description:
@@ -1131,7 +1168,6 @@
1131
1168
  return available;
1132
1169
  },
1133
1170
  includes: ['ANY_DOCUMENT'],
1134
- excludes: ['HTMLDOCUMENT'],
1135
1171
  attributes: { 'web-worker': 'web-worker-restriction' },
1136
1172
  },
1137
1173
  DOMWINDOW:
@@ -1139,17 +1175,9 @@
1139
1175
  description:
1140
1176
  'Existence of the global object self having the string representation "[object ' +
1141
1177
  'DOMWindow]".',
1142
- check:
1143
- checkSelfFeature.bind
1144
- (
1145
- function (str)
1146
- {
1147
- var available = str === '[object DOMWindow]';
1148
- return available;
1149
- }
1150
- ),
1178
+ check: makeSelfFeatureCheck(/^\[object DOMWindow]$/),
1151
1179
  includes: ['ANY_WINDOW'],
1152
- excludes: ['WINDOW'],
1180
+ excludes: ['OBJECT_W_SELF'],
1153
1181
  attributes: { 'web-worker': 'web-worker-restriction' },
1154
1182
  },
1155
1183
  ESC_HTML_ALL:
@@ -1247,6 +1275,13 @@
1247
1275
  return available;
1248
1276
  },
1249
1277
  },
1278
+ FORMS:
1279
+ {
1280
+ description:
1281
+ 'Existence of the object document.forms with string representation "[object ' +
1282
+ 'HTMLCollection]".',
1283
+ aliasFor: 'ANY_DOCUMENT',
1284
+ },
1250
1285
  FROM_CODE_POINT:
1251
1286
  {
1252
1287
  description: 'Existence of the function String.fromCodePoint.',
@@ -1353,22 +1388,6 @@
1353
1388
  includes: ['NO_IE_SRC'],
1354
1389
  attributes: { 'web-worker': 'web-worker-restriction' },
1355
1390
  },
1356
- HTMLDOCUMENT:
1357
- {
1358
- description:
1359
- 'Existence of the global object document having the string representation "[object ' +
1360
- 'HTMLDocument]".',
1361
- check:
1362
- function ()
1363
- {
1364
- var available =
1365
- typeof document === 'object' && document + '' === '[object HTMLDocument]';
1366
- return available;
1367
- },
1368
- includes: ['ANY_DOCUMENT'],
1369
- excludes: ['DOCUMENT'],
1370
- attributes: { 'web-worker': 'web-worker-restriction' },
1371
- },
1372
1391
  IE_SRC:
1373
1392
  {
1374
1393
  description:
@@ -1402,6 +1421,26 @@
1402
1421
  return available;
1403
1422
  },
1404
1423
  },
1424
+ ITERATOR_HELPER:
1425
+ {
1426
+ description: 'Availability of iterator helpers.',
1427
+ check:
1428
+ function ()
1429
+ {
1430
+ var available = typeof Iterator === 'function';
1431
+ return available;
1432
+ },
1433
+ },
1434
+ JAPANESE_INFINITY:
1435
+ {
1436
+ description: 'Japanese string representation of Infinity ending with "∞".',
1437
+ check:
1438
+ function ()
1439
+ {
1440
+ var available = /∞$/.test(Infinity.toLocaleString('ja'));
1441
+ return available;
1442
+ },
1443
+ },
1405
1444
  LOCALE_INFINITY:
1406
1445
  {
1407
1446
  description: 'Language sensitive string representation of Infinity as "∞".',
@@ -1423,7 +1462,6 @@
1423
1462
  function ()
1424
1463
  {
1425
1464
  var available =
1426
- Number.prototype.toLocaleString &&
1427
1465
  checkLocaleNumeral('ar', NaN, /^ليس/) &&
1428
1466
  checkLocaleNumeral('ar-td', 234567890.1, /^٢٣٤٬?٥٦٧٬?٨٩٠٫١/) &&
1429
1467
  checkLocaleNumeral('fa', 1234567890, /^۱٬۲۳۴٬۵۶۷٬۸۹۰/);
@@ -1442,7 +1480,6 @@
1442
1480
  function ()
1443
1481
  {
1444
1482
  var available =
1445
- Number.prototype.toLocaleString &&
1446
1483
  checkLocaleNumeral('ar', NaN, /^ليس.رقم/) &&
1447
1484
  checkLocaleNumeral('ar-td', 234567890.1, /^٢٣٤٬?٥٦٧٬?٨٩٠٫١/) &&
1448
1485
  checkLocaleNumeral('bn', 1234567890, /^১,২৩,৪৫,৬৭,৮৯০/) &&
@@ -1468,6 +1505,18 @@
1468
1505
  return available;
1469
1506
  },
1470
1507
  },
1508
+ MOZILLA:
1509
+ {
1510
+ description:
1511
+ 'Existence of user agent string navigator.userAgent that starts with "Mozilla".',
1512
+ check:
1513
+ function ()
1514
+ {
1515
+ var available =
1516
+ typeof navigator === 'object' && /^Mozilla/.test(navigator.userAgent);
1517
+ return available;
1518
+ },
1519
+ },
1471
1520
  NAME:
1472
1521
  {
1473
1522
  description: 'Existence of the name property for functions.',
@@ -1491,6 +1540,12 @@
1491
1540
  },
1492
1541
  attributes: { 'web-worker': 'web-worker-restriction' },
1493
1542
  },
1543
+ NODE_NAME:
1544
+ {
1545
+ description:
1546
+ 'Existence of the string document.nodeName that starts with a number sign ("#").',
1547
+ aliasFor: 'ANY_DOCUMENT',
1548
+ },
1494
1549
  NO_FF_SRC:
1495
1550
  {
1496
1551
  description:
@@ -1589,18 +1644,15 @@
1589
1644
  },
1590
1645
  includes: ['UNDEFINED'],
1591
1646
  },
1592
- OBJECT_W_CTOR:
1647
+ OBJECT_W_SELF:
1593
1648
  {
1594
1649
  description:
1595
- 'The property that the string representation of the global object constructor starts ' +
1650
+ 'The property that the string representation of the global object self starts ' +
1596
1651
  'with "[object W".',
1597
- check:
1598
- function ()
1599
- {
1600
- var available = /^\[object W/.test(constructor);
1601
- return available;
1602
- },
1603
- attributes: { 'web-worker': 'old-safari-restriction' },
1652
+ check: makeSelfFeatureCheck(/^\[object W/),
1653
+ includes: ['SELF_OBJ'],
1654
+ excludes: ['DOMWINDOW'],
1655
+ attributes: { 'web-worker': 'non-ie-restriction' },
1604
1656
  },
1605
1657
  OLD_SAFARI_LOCATION_CTOR:
1606
1658
  {
@@ -1647,15 +1699,7 @@
1647
1699
  {
1648
1700
  description:
1649
1701
  'Existence of the global object self whose string representation starts with "[object ".',
1650
- check:
1651
- checkSelfFeature.bind
1652
- (
1653
- function (str)
1654
- {
1655
- var available = /^\[object /.test(str);
1656
- return available;
1657
- }
1658
- ),
1702
+ check: makeSelfFeatureCheck(/^\[object /),
1659
1703
  attributes: { 'web-worker': 'safari-bug-21820506' },
1660
1704
  },
1661
1705
  SHORT_LOCALES:
@@ -1713,17 +1757,8 @@
1713
1757
  {
1714
1758
  description:
1715
1759
  'Existence of the global object self having the string representation "[object Window]".',
1716
- check:
1717
- checkSelfFeature.bind
1718
- (
1719
- function (str)
1720
- {
1721
- var available = str === '[object Window]';
1722
- return available;
1723
- }
1724
- ),
1725
- includes: ['ANY_WINDOW'],
1726
- excludes: ['DOMWINDOW'],
1760
+ check: makeSelfFeatureCheck(/^\[object Window]$/),
1761
+ includes: ['ANY_WINDOW', 'OBJECT_W_SELF'],
1727
1762
  attributes: { 'web-worker': 'web-worker-restriction' },
1728
1763
  },
1729
1764
 
@@ -1737,7 +1772,7 @@
1737
1772
  description:
1738
1773
  'Features available in all browsers.\n' +
1739
1774
  'No support for Node.js.',
1740
- includes: ['ANY_DOCUMENT', 'ANY_WINDOW', 'HISTORY', 'INCR_CHAR', 'STATUS'],
1775
+ includes: ['ANY_DOCUMENT', 'ANY_WINDOW', 'HISTORY', 'INCR_CHAR', 'MOZILLA', 'STATUS'],
1741
1776
  attributes:
1742
1777
  {
1743
1778
  'char-increment-restriction': null,
@@ -1753,7 +1788,9 @@
1753
1788
  'Android Browser.',
1754
1789
  includes:
1755
1790
  [
1791
+ 'ANY_DOCUMENT',
1756
1792
  'ARROW',
1793
+ 'ASYNC_FUNCTION',
1757
1794
  'AT',
1758
1795
  'ATOB',
1759
1796
  'BARPROP',
@@ -1768,12 +1805,13 @@
1768
1805
  'GLOBAL_UNDEFINED',
1769
1806
  'GMT',
1770
1807
  'HISTORY',
1771
- 'HTMLDOCUMENT',
1772
1808
  'INCR_CHAR',
1773
1809
  'INTL',
1810
+ 'JAPANESE_INFINITY',
1774
1811
  'LOCALE_INFINITY',
1775
1812
  'LOCALE_NUMERALS_EXT',
1776
1813
  'LOCATION',
1814
+ 'MOZILLA',
1777
1815
  'NAME',
1778
1816
  'NO_IE_SRC',
1779
1817
  'NO_OLD_SAFARI_ARRAY_ITERATOR',
@@ -1781,7 +1819,12 @@
1781
1819
  'STATUS',
1782
1820
  'WINDOW',
1783
1821
  ],
1784
- attributes: { 'char-increment-restriction': null, 'web-worker-restriction': null },
1822
+ attributes:
1823
+ {
1824
+ 'char-increment-restriction': null,
1825
+ 'non-ie-restriction': null,
1826
+ 'web-worker-restriction': null,
1827
+ },
1785
1828
  },
1786
1829
  ANDRO_4_0:
1787
1830
  {
@@ -1789,16 +1832,18 @@
1789
1832
  versions: ['4.0'],
1790
1833
  includes:
1791
1834
  [
1835
+ 'ANY_DOCUMENT',
1792
1836
  'ATOB',
1837
+ 'CALL_ON_GLOBAL',
1793
1838
  'CONSOLE',
1794
1839
  'DOMWINDOW',
1795
1840
  'ESC_HTML_ALL',
1796
1841
  'FUNCTION_22_LF',
1797
1842
  'GMT',
1798
1843
  'HISTORY',
1799
- 'HTMLDOCUMENT',
1800
1844
  'INCR_CHAR',
1801
1845
  'LOCATION',
1846
+ 'MOZILLA',
1802
1847
  'NAME',
1803
1848
  'STATUS',
1804
1849
  'V8_SRC',
@@ -1808,7 +1853,7 @@
1808
1853
  {
1809
1854
  inherits: 'ANDRO_4_0',
1810
1855
  versions: [['4.1',, '4.3']],
1811
- includes: { GENERIC_ARRAY_TO_STRING: true, OBJECT_UNDEFINED: true },
1856
+ includes: { CALL_ON_GLOBAL: false, GENERIC_ARRAY_TO_STRING: true, OBJECT_UNDEFINED: true },
1812
1857
  },
1813
1858
  ANDRO_4_4:
1814
1859
  {
@@ -1819,13 +1864,19 @@
1819
1864
  BARPROP: true,
1820
1865
  DOMWINDOW: false,
1821
1866
  HTMLAUDIOELEMENT: true,
1867
+ JAPANESE_INFINITY: true,
1822
1868
  LOCALE_INFINITY: true,
1823
1869
  LOCALE_NUMERALS_EXT: true,
1824
1870
  PLAIN_INTL: true,
1825
1871
  SHORT_LOCALES: true,
1826
1872
  WINDOW: true,
1827
1873
  },
1828
- attributes: { 'no-console-in-web-worker': null, 'web-worker-restriction': null },
1874
+ attributes:
1875
+ {
1876
+ 'no-console-in-web-worker': null,
1877
+ 'non-ie-restriction': null,
1878
+ 'web-worker-restriction': null,
1879
+ },
1829
1880
  },
1830
1881
  CHROME_PREV:
1831
1882
  {
@@ -1843,7 +1894,9 @@
1843
1894
  versions: [['122'], ['122'], ['108']],
1844
1895
  includes:
1845
1896
  [
1897
+ 'ANY_DOCUMENT',
1846
1898
  'ARROW',
1899
+ 'ASYNC_FUNCTION',
1847
1900
  'AT',
1848
1901
  'ATOB',
1849
1902
  'BARPROP',
@@ -1858,12 +1911,14 @@
1858
1911
  'GLOBAL_UNDEFINED',
1859
1912
  'GMT',
1860
1913
  'HISTORY',
1861
- 'HTMLDOCUMENT',
1862
1914
  'INCR_CHAR',
1863
1915
  'INTL',
1916
+ 'ITERATOR_HELPER',
1917
+ 'JAPANESE_INFINITY',
1864
1918
  'LOCALE_INFINITY',
1865
1919
  'LOCALE_NUMERALS_EXT',
1866
1920
  'LOCATION',
1921
+ 'MOZILLA',
1867
1922
  'NAME',
1868
1923
  'NO_OLD_SAFARI_ARRAY_ITERATOR',
1869
1924
  'REGEXP_STRING_ITERATOR',
@@ -1872,7 +1927,12 @@
1872
1927
  'WINDOW',
1873
1928
  ],
1874
1929
  attributes:
1875
- { 'char-increment-restriction': null, 'unstable': null, 'web-worker-restriction': null },
1930
+ {
1931
+ 'char-increment-restriction': null,
1932
+ 'non-ie-restriction': null,
1933
+ 'unstable': null,
1934
+ 'web-worker-restriction': null,
1935
+ },
1876
1936
  },
1877
1937
  FF_ESR:
1878
1938
  {
@@ -1887,15 +1947,17 @@
1887
1947
  FF:
1888
1948
  {
1889
1949
  description: describeEngine('the current stable version of Firefox'),
1890
- aliasFor: 'FF_90',
1950
+ aliasFor: 'FF_131',
1891
1951
  },
1892
1952
  FF_90:
1893
1953
  {
1894
1954
  families: ['Firefox'],
1895
- versions: [['90']],
1955
+ versions: [['90',, '130']],
1896
1956
  includes:
1897
1957
  [
1958
+ 'ANY_DOCUMENT',
1898
1959
  'ARROW',
1960
+ 'ASYNC_FUNCTION',
1899
1961
  'AT',
1900
1962
  'ATOB',
1901
1963
  'BARPROP',
@@ -1911,12 +1973,13 @@
1911
1973
  'GLOBAL_UNDEFINED',
1912
1974
  'GMT',
1913
1975
  'HISTORY',
1914
- 'HTMLDOCUMENT',
1915
1976
  'INCR_CHAR',
1916
1977
  'INTL',
1978
+ 'JAPANESE_INFINITY',
1917
1979
  'LOCALE_INFINITY',
1918
1980
  'LOCALE_NUMERALS_EXT',
1919
1981
  'LOCATION',
1982
+ 'MOZILLA',
1920
1983
  'NAME',
1921
1984
  'NO_OLD_SAFARI_ARRAY_ITERATOR',
1922
1985
  'OBJECT_ARRAY_ENTRIES_CTOR',
@@ -1926,7 +1989,18 @@
1926
1989
  'WINDOW',
1927
1990
  ],
1928
1991
  attributes:
1929
- { 'char-increment-restriction': null, 'unstable': null, 'web-worker-restriction': null },
1992
+ {
1993
+ 'char-increment-restriction': null,
1994
+ 'non-ie-restriction': null,
1995
+ 'unstable': null,
1996
+ 'web-worker-restriction': null,
1997
+ },
1998
+ },
1999
+ FF_131:
2000
+ {
2001
+ inherits: 'FF_90',
2002
+ versions: [['131']],
2003
+ includes: { ITERATOR_HELPER: true, OBJECT_ARRAY_ENTRIES_CTOR: false },
1930
2004
  },
1931
2005
  IE_9:
1932
2006
  {
@@ -1943,8 +2017,8 @@
1943
2017
  'HISTORY',
1944
2018
  'IE_SRC',
1945
2019
  'INCR_CHAR',
2020
+ 'MOZILLA',
1946
2021
  'OBJECT_L_LOCATION_CTOR',
1947
- 'OBJECT_W_CTOR',
1948
2022
  'STATUS',
1949
2023
  'UNDEFINED',
1950
2024
  'WINDOW',
@@ -1963,9 +2037,10 @@
1963
2037
  versions: ['11'],
1964
2038
  includes:
1965
2039
  {
2040
+ ANY_DOCUMENT: true,
1966
2041
  DOCUMENT: false,
1967
2042
  GMT: true,
1968
- HTMLDOCUMENT: true,
2043
+ JAPANESE_INFINITY: true,
1969
2044
  LOCALE_NUMERALS: true,
1970
2045
  PLAIN_INTL: true,
1971
2046
  SHORT_LOCALES: true,
@@ -2004,6 +2079,7 @@
2004
2079
  {
2005
2080
  ESC_HTML_ALL: false,
2006
2081
  ESC_HTML_QUOT_ONLY: true,
2082
+ JAPANESE_INFINITY: true,
2007
2083
  LOCALE_INFINITY: true,
2008
2084
  NO_OLD_SAFARI_ARRAY_ITERATOR: true,
2009
2085
  OBJECT_ARRAY_ENTRIES_CTOR: true,
@@ -2019,12 +2095,18 @@
2019
2095
  NODE_5:
2020
2096
  {
2021
2097
  inherits: 'NODE_4',
2022
- versions: [['5',, '9']],
2098
+ versions: [['5',, '7.5']],
2023
2099
  attributes: { 'char-increment-restriction': null },
2024
2100
  },
2025
- NODE_10:
2101
+ NODE_7_6:
2026
2102
  {
2027
2103
  inherits: 'NODE_5',
2104
+ versions: [['7.6',, '9']],
2105
+ includes: { ASYNC_FUNCTION: true },
2106
+ },
2107
+ NODE_10:
2108
+ {
2109
+ inherits: 'NODE_7_6',
2028
2110
  versions: ['10'],
2029
2111
  includes: { FUNCTION_19_LF: true, FUNCTION_22_LF: false },
2030
2112
  },
@@ -2068,7 +2150,7 @@
2068
2150
  {
2069
2151
  inherits: 'NODE_16_6',
2070
2152
  versions: [['22']],
2071
- includes: { OBJECT_ARRAY_ENTRIES_CTOR: false },
2153
+ includes: { ITERATOR_HELPER: true, OBJECT_ARRAY_ENTRIES_CTOR: false },
2072
2154
  },
2073
2155
  SAFARI_7_0:
2074
2156
  {
@@ -2076,6 +2158,7 @@
2076
2158
  versions: ['7.0'],
2077
2159
  includes:
2078
2160
  [
2161
+ 'ANY_DOCUMENT',
2079
2162
  'ATOB',
2080
2163
  'BARPROP',
2081
2164
  'CONSOLE',
@@ -2087,13 +2170,12 @@
2087
2170
  'GLOBAL_UNDEFINED',
2088
2171
  'GMT',
2089
2172
  'HISTORY',
2090
- 'HTMLDOCUMENT',
2091
2173
  'INCR_CHAR',
2092
2174
  'LOCATION',
2175
+ 'MOZILLA',
2093
2176
  'NAME',
2094
2177
  'NODECONSTRUCTOR',
2095
2178
  'OBJECT_L_LOCATION_CTOR',
2096
- 'OBJECT_W_CTOR',
2097
2179
  'OLD_SAFARI_LOCATION_CTOR',
2098
2180
  'STATUS',
2099
2181
  'WINDOW',
@@ -2102,6 +2184,7 @@
2102
2184
  {
2103
2185
  'char-increment-restriction': null,
2104
2186
  'no-console-in-web-worker': null,
2187
+ 'non-ie-restriction': null,
2105
2188
  'old-safari-restriction': null,
2106
2189
  'web-worker-restriction': null,
2107
2190
  },
@@ -2126,27 +2209,33 @@
2126
2209
  OBJECT_ARRAY_ENTRIES_CTOR: true,
2127
2210
  },
2128
2211
  },
2129
- SAFARI_10:
2212
+ SAFARI_10_0:
2130
2213
  {
2131
2214
  inherits: 'SAFARI_9',
2132
- versions: [['10', '11']],
2215
+ versions: ['10.0'],
2133
2216
  includes:
2134
2217
  {
2135
2218
  ARROW: true,
2219
+ JAPANESE_INFINITY: true,
2136
2220
  LOCALE_INFINITY: true,
2137
2221
  LOCALE_NUMERALS_EXT: true,
2138
2222
  NODECONSTRUCTOR: false,
2139
2223
  OBJECT_L_LOCATION_CTOR: false,
2140
- OBJECT_W_CTOR: false,
2141
2224
  OLD_SAFARI_LOCATION_CTOR: false,
2142
2225
  PLAIN_INTL: true,
2143
2226
  SHORT_LOCALES: true,
2144
2227
  },
2145
2228
  attributes: { 'old-safari-restriction': undefined, 'safari-bug-21820506': undefined },
2146
2229
  },
2230
+ SAFARI_10_1:
2231
+ {
2232
+ inherits: 'SAFARI_10_0',
2233
+ versions: [['10.1', '11']],
2234
+ includes: { ASYNC_FUNCTION: true },
2235
+ },
2147
2236
  SAFARI_12:
2148
2237
  {
2149
- inherits: 'SAFARI_10',
2238
+ inherits: 'SAFARI_10_1',
2150
2239
  versions: ['12'],
2151
2240
  includes: { FLAT: true },
2152
2241
  },
@@ -2174,16 +2263,22 @@
2174
2263
  versions: [['15.4',, '17.3']],
2175
2264
  includes: { AT: true },
2176
2265
  },
2266
+ SAFARI_17_4:
2267
+ {
2268
+ inherits: 'SAFARI_15_4',
2269
+ versions: [['17.4',, '17.6']],
2270
+ includes: { FUNCTION_19_LF: true, FUNCTION_22_LF: false },
2271
+ },
2177
2272
  SAFARI:
2178
2273
  {
2179
2274
  description: describeEngine('the current stable version of Safari'),
2180
- aliasFor: 'SAFARI_17_4',
2275
+ aliasFor: 'SAFARI_18',
2181
2276
  },
2182
- SAFARI_17_4:
2277
+ SAFARI_18:
2183
2278
  {
2184
- inherits: 'SAFARI_15_4',
2185
- versions: [['17.4']],
2186
- includes: { FUNCTION_19_LF: true, FUNCTION_22_LF: false },
2279
+ inherits: 'SAFARI_17_4',
2280
+ versions: [['18']],
2281
+ includes: { SHORT_LOCALES: false },
2187
2282
  },
2188
2283
  };
2189
2284
  (function ()
@@ -3101,11 +3196,14 @@
3101
3196
  var ANY_WINDOW = Feature.ANY_WINDOW;
3102
3197
  var ARRAY_ITERATOR = Feature.ARRAY_ITERATOR;
3103
3198
  var ARROW = Feature.ARROW;
3199
+ var ASYNC_FUNCTION = Feature.ASYNC_FUNCTION;
3104
3200
  var AT = Feature.AT;
3105
3201
  var ATOB = Feature.ATOB;
3106
3202
  var BARPROP = Feature.BARPROP;
3203
+ var CALL_ON_GLOBAL = Feature.CALL_ON_GLOBAL;
3107
3204
  var CAPITAL_HTML = Feature.CAPITAL_HTML;
3108
3205
  var CONSOLE = Feature.CONSOLE;
3206
+ var CREATE_ELEMENT = Feature.CREATE_ELEMENT;
3109
3207
  var DOCUMENT = Feature.DOCUMENT;
3110
3208
  var DOMWINDOW = Feature.DOMWINDOW;
3111
3209
  var ESC_HTML_ALL = Feature.ESC_HTML_ALL;
@@ -3116,6 +3214,7 @@
3116
3214
  var FF_SRC = Feature.FF_SRC;
3117
3215
  var FILL = Feature.FILL;
3118
3216
  var FLAT = Feature.FLAT;
3217
+ var FORMS = Feature.FORMS;
3119
3218
  var FROM_CODE_POINT = Feature.FROM_CODE_POINT;
3120
3219
  var FUNCTION_19_LF = Feature.FUNCTION_19_LF;
3121
3220
  var FUNCTION_22_LF = Feature.FUNCTION_22_LF;
@@ -3124,16 +3223,19 @@
3124
3223
  var GMT = Feature.GMT;
3125
3224
  var HISTORY = Feature.HISTORY;
3126
3225
  var HTMLAUDIOELEMENT = Feature.HTMLAUDIOELEMENT;
3127
- var HTMLDOCUMENT = Feature.HTMLDOCUMENT;
3128
3226
  var IE_SRC = Feature.IE_SRC;
3129
3227
  var INCR_CHAR = Feature.INCR_CHAR;
3130
3228
  var INTL = Feature.INTL;
3229
+ var ITERATOR_HELPER = Feature.ITERATOR_HELPER;
3230
+ var JAPANESE_INFINITY = Feature.JAPANESE_INFINITY;
3131
3231
  var LOCALE_INFINITY = Feature.LOCALE_INFINITY;
3132
3232
  var LOCALE_NUMERALS = Feature.LOCALE_NUMERALS;
3133
3233
  var LOCALE_NUMERALS_EXT = Feature.LOCALE_NUMERALS_EXT;
3134
3234
  var LOCATION = Feature.LOCATION;
3235
+ var MOZILLA = Feature.MOZILLA;
3135
3236
  var NAME = Feature.NAME;
3136
3237
  var NODECONSTRUCTOR = Feature.NODECONSTRUCTOR;
3238
+ var NODE_NAME = Feature.NODE_NAME;
3137
3239
  var NO_FF_SRC = Feature.NO_FF_SRC;
3138
3240
  var NO_IE_SRC = Feature.NO_IE_SRC;
3139
3241
  var NO_OLD_SAFARI_ARRAY_ITERATOR = Feature.NO_OLD_SAFARI_ARRAY_ITERATOR;
@@ -3141,7 +3243,7 @@
3141
3243
  var OBJECT_ARRAY_ENTRIES_CTOR = Feature.OBJECT_ARRAY_ENTRIES_CTOR;
3142
3244
  var OBJECT_L_LOCATION_CTOR = Feature.OBJECT_L_LOCATION_CTOR;
3143
3245
  var OBJECT_UNDEFINED = Feature.OBJECT_UNDEFINED;
3144
- var OBJECT_W_CTOR = Feature.OBJECT_W_CTOR;
3246
+ var OBJECT_W_SELF = Feature.OBJECT_W_SELF;
3145
3247
  var OLD_SAFARI_LOCATION_CTOR = Feature.OLD_SAFARI_LOCATION_CTOR;
3146
3248
  var PLAIN_INTL = Feature.PLAIN_INTL;
3147
3249
  var REGEXP_STRING_ITERATOR = Feature.REGEXP_STRING_ITERATOR;
@@ -3323,12 +3425,29 @@
3323
3425
 
3324
3426
  BASE64_ALPHABET_HI_4 =
3325
3427
  [
3326
- [define('A'), define('C', CAPITAL_HTML), define('A', ARRAY_ITERATOR)],
3327
- 'F',
3428
+ [
3429
+ define('A'),
3430
+ define('D', CALL_ON_GLOBAL, DOMWINDOW),
3431
+ define('C', CAPITAL_HTML),
3432
+ define('A', ARRAY_ITERATOR, CAPITAL_HTML),
3433
+ define('A', ARRAY_ITERATOR, CALL_ON_GLOBAL, DOMWINDOW),
3434
+ ],
3435
+ [
3436
+ define('F'),
3437
+ define('H', ITERATOR_HELPER),
3438
+ define('F', AT, CAPITAL_HTML, IE_SRC),
3439
+ define('F', AT, CAPITAL_HTML, NO_IE_SRC),
3440
+ ],
3328
3441
  'Infinity',
3329
3442
  'NaNfalse',
3330
3443
  [define('S'), define('R', CAPITAL_HTML), define('S', ARRAY_ITERATOR)],
3331
- [define('W'), define('U', CAPITAL_HTML)],
3444
+ [
3445
+ define('W'),
3446
+ define('U', CAPITAL_HTML),
3447
+ define('W', CALL_ON_GLOBAL, DOMWINDOW),
3448
+ define('W', CALL_ON_GLOBAL, OBJECT_W_SELF),
3449
+ define('U', ARRAY_ITERATOR, CAPITAL_HTML),
3450
+ ],
3332
3451
  'a',
3333
3452
  'false',
3334
3453
  'i',
@@ -3500,7 +3619,7 @@
3500
3619
  ],
3501
3620
  '#':
3502
3621
  [
3503
- define('document.nodeName[0]', ANY_DOCUMENT),
3622
+ define('document.nodeName[0]', NODE_NAME),
3504
3623
  defineCharDefault(),
3505
3624
  ],
3506
3625
  // '$'
@@ -3613,7 +3732,6 @@
3613
3732
  ('escape((NaN + [+("10" + [(RP_6_S + FILL)[40]] + "000")] + FILL)[40])[2]', FILL),
3614
3733
  define // *
3615
3734
  ('escape((NaN + [+("10" + [(RP_6_S + FLAT)[40]] + "000")] + FLAT)[40])[2]', FLAT),
3616
- define('(RP_0_S + document)[12]', HTMLDOCUMENT),
3617
3735
  define('escape(ARRAY_ITERATOR)[30]', NO_OLD_SAFARI_ARRAY_ITERATOR),
3618
3736
  define('escape(FILTER)[50]', V8_SRC),
3619
3737
  define('(document + [RP_1_WA]).at("-10")', ANY_DOCUMENT, AT),
@@ -3645,13 +3763,14 @@
3645
3763
  ],
3646
3764
  'H':
3647
3765
  [
3648
- define('(RP_3_WA + document.createElement(false))[11]', ANY_DOCUMENT),
3649
3766
  define('btoa(true)[1]', ATOB),
3650
3767
  define('"".link()[3]', CAPITAL_HTML),
3768
+ define('(RP_3_WA + document.forms)[11]', FORMS),
3651
3769
  define
3652
3770
  ({ expr: '(RP_3_WA + Function("return history")())[11]', optimize: true }, HISTORY),
3653
3771
  define('(RP_1_WA + Audio)[10]', HTMLAUDIOELEMENT),
3654
- define('(RP_3_WA + document)[11]', HTMLDOCUMENT),
3772
+ define('(RP_4_A + [].entries().filter(ANY_FUNCTION))[21]', ITERATOR_HELPER),
3773
+ define({ expr: '(RP_3_WA + self.history)[11]', optimize: true }, HISTORY, SELF_OBJ),
3655
3774
  ],
3656
3775
  'I': '"Infinity"[0]',
3657
3776
  'J':
@@ -3667,11 +3786,10 @@
3667
3786
  ],
3668
3787
  'L':
3669
3788
  [
3670
- define('(RP_0_S + document.createElement(false))[11]', ANY_DOCUMENT),
3671
3789
  define('btoa(".")[0]', ATOB),
3672
3790
  define('(RP_3_WA + "".fontcolor())[11]', CAPITAL_HTML),
3791
+ define('(RP_0_S + document.forms)[11]', FORMS),
3673
3792
  define('(RP_0_S + Audio)[12]', HTMLAUDIOELEMENT),
3674
- define('(RP_0_S + document)[11]', HTMLDOCUMENT),
3675
3793
  define
3676
3794
  (
3677
3795
  {
@@ -3705,22 +3823,25 @@
3705
3823
  LOCATION
3706
3824
  ),
3707
3825
  define
3826
+ ('self[TO_STRING].call(location)[SLICE_OR_SUBSTR]("-10")[1]', LOCATION, SELF_OBJ),
3827
+ define
3708
3828
  (
3709
3829
  '([][TO_STRING].call(location) + RP_1_WA).at("-10")',
3710
3830
  AT,
3711
3831
  GENERIC_ARRAY_TO_STRING,
3712
3832
  LOCATION
3713
3833
  ),
3834
+ define('(self[TO_STRING].call(location) + RP_1_WA).at("-10")', AT, LOCATION, SELF_OBJ),
3714
3835
  ],
3715
3836
  'M':
3716
3837
  [
3717
- define('(RP_0_S + document.createElement(false))[10]', ANY_DOCUMENT),
3718
3838
  define('btoa(0)[0]', ATOB),
3719
3839
  define('"".small()[2]', CAPITAL_HTML),
3720
3840
  define('(RP_0_S + self)[10]', DOMWINDOW),
3841
+ define('(RP_0_S + document.forms)[10]', FORMS),
3721
3842
  define('(RP_4_A + Date())[30]', GMT),
3722
3843
  define('(RP_0_S + Audio)[11]', HTMLAUDIOELEMENT),
3723
- define('(RP_0_S + document)[10]', HTMLDOCUMENT),
3844
+ define('USER_AGENT[0]', MOZILLA),
3724
3845
  ],
3725
3846
  'N': '"NaN"[0]',
3726
3847
  'O':
@@ -3735,10 +3856,12 @@
3735
3856
  'P':
3736
3857
  [
3737
3858
  define('String.fromCharCode("80")'),
3859
+ define('(RP_3_WA + Function("return async function(){}")()())[11]', ASYNC_FUNCTION),
3738
3860
  define('atob("01A")[1]', ATOB),
3739
3861
  define('btoa("".italics())[0]', ATOB),
3740
3862
  define('(RP_0_S + Function("return statusbar")())[11]', BARPROP),
3741
3863
  define('"0".sup()[10]', CAPITAL_HTML),
3864
+ define('(RP_0_S + self.statusbar)[11]', BARPROP, SELF_OBJ),
3742
3865
  defineCharDefault({ atob: false, charCode: false }),
3743
3866
  ],
3744
3867
  'Q':
@@ -3772,9 +3895,9 @@
3772
3895
  ),
3773
3896
  define('btoa(NaN)[0]', ATOB),
3774
3897
  define('"".fontcolor([])[20]', CAPITAL_HTML),
3898
+ define('(RP_1_WA + document.forms)[10]', FORMS),
3775
3899
  define('(RP_3_WA + Date())[30]', GMT),
3776
3900
  define('(RP_0_S + Audio)[10]', HTMLAUDIOELEMENT),
3777
- define('(RP_1_WA + document)[10]', HTMLDOCUMENT),
3778
3901
  defineCharDefault({ atob: false }),
3779
3902
  ],
3780
3903
  'U':
@@ -3804,8 +3927,8 @@
3804
3927
  'V':
3805
3928
  [
3806
3929
  define('"v"[TO_UPPER_CASE]()'),
3807
- define('(RP_0_S + document.createElement("video"))[12]', ANY_DOCUMENT),
3808
3930
  define('btoa(undefined)[10]', ATOB),
3931
+ define('(RP_0_S + document.createElement("video"))[12]', CREATE_ELEMENT),
3809
3932
  defineCharDefault({ atob: false }),
3810
3933
  ],
3811
3934
  'W':
@@ -3814,8 +3937,7 @@
3814
3937
  define('(self + RP_4_A)[SLICE_OR_SUBSTR]("-11")[0]', ANY_WINDOW),
3815
3938
  define('btoa(undefined)[1]', ATOB),
3816
3939
  define('(RP_0_S + self)[11]', DOMWINDOW),
3817
- define('(RP_3_WA + Function("return constructor")())[11]', OBJECT_W_CTOR),
3818
- define('(RP_3_WA + self)[11]', WINDOW),
3940
+ define('(RP_3_WA + self)[11]', OBJECT_W_SELF),
3819
3941
  define('(self + RP_4_A).at("-11")', ANY_WINDOW, AT),
3820
3942
  defineCharDefault({ atob: false }),
3821
3943
  ],
@@ -3911,6 +4033,7 @@
3911
4033
  [
3912
4034
  define('211[TO_STRING]("31")[1]'),
3913
4035
  define('(RP_3_WA + btoa(undefined))[10]', ATOB),
4036
+ define('(RP_0_S + [].entries().filter(ANY_FUNCTION))[20]', ITERATOR_HELPER),
3914
4037
  ],
3915
4038
  'q':
3916
4039
  [
@@ -4043,6 +4166,8 @@
4043
4166
  '∞':
4044
4167
  [
4045
4168
  define('Infinity[TO_LOCALE_STRING]()', LOCALE_INFINITY),
4169
+ define('Infinity[TO_LOCALE_STRING]("ja")[SLICE_OR_SUBSTR]("-1")', JAPANESE_INFINITY),
4170
+ define('Infinity[TO_LOCALE_STRING]("ja").at("-1")', JAPANESE_INFINITY, AT),
4046
4171
  defineCharDefault(),
4047
4172
  ],
4048
4173
  });
@@ -4071,6 +4196,7 @@
4071
4196
  Audio:
4072
4197
  [
4073
4198
  define('Function("return Audio")()', HTMLAUDIOELEMENT),
4199
+ define('self.Audio', HTMLAUDIOELEMENT, SELF_OBJ),
4074
4200
  ],
4075
4201
  Boolean:
4076
4202
  [
@@ -4079,6 +4205,7 @@
4079
4205
  Date:
4080
4206
  [
4081
4207
  define('Function("return Date")()'),
4208
+ define('self.Date', SELF_OBJ),
4082
4209
  ],
4083
4210
  Function:
4084
4211
  [
@@ -4087,10 +4214,12 @@
4087
4214
  Intl:
4088
4215
  [
4089
4216
  define('Function("return Intl")()', INTL),
4217
+ define('self.Intl', INTL, SELF_OBJ),
4090
4218
  ],
4091
4219
  Node:
4092
4220
  [
4093
4221
  define('Function("return Node")()', NODECONSTRUCTOR),
4222
+ define('self.Node', NODECONSTRUCTOR, SELF_OBJ),
4094
4223
  ],
4095
4224
  Number:
4096
4225
  [
@@ -4113,30 +4242,37 @@
4113
4242
  atob:
4114
4243
  [
4115
4244
  define('Function("return atob")()', ATOB),
4245
+ define('self.atob', ATOB, SELF_OBJ),
4116
4246
  ],
4117
4247
  btoa:
4118
4248
  [
4119
4249
  define('Function("return btoa")()', ATOB),
4250
+ define('self.btoa', ATOB, SELF_OBJ),
4120
4251
  ],
4121
4252
  document:
4122
4253
  [
4123
4254
  define({ expr: 'Function("return document")()', optimize: true }, ANY_DOCUMENT),
4255
+ define({ expr: 'self.document', optimize: true }, ANY_DOCUMENT, SELF_OBJ),
4124
4256
  ],
4125
4257
  escape:
4126
4258
  [
4127
4259
  define({ expr: 'Function("return escape")()', optimize: true }),
4260
+ define({ expr: 'self.escape', optimize: true }, SELF_OBJ),
4128
4261
  ],
4129
4262
  location:
4130
4263
  [
4131
4264
  define('Function("return location")()', LOCATION),
4265
+ define('self.location', LOCATION, SELF_OBJ),
4132
4266
  ],
4133
4267
  self:
4134
4268
  [
4135
4269
  define('Function("return self")()', SELF_OBJ),
4270
+ define('[].concat.call()[0]', CALL_ON_GLOBAL, SELF_OBJ),
4136
4271
  ],
4137
4272
  unescape:
4138
4273
  [
4139
4274
  define({ expr: 'Function("return unescape")()', optimize: true }),
4275
+ define({ expr: 'self.unescape', optimize: true }, SELF_OBJ),
4140
4276
  ],
4141
4277
 
4142
4278
  // Custom definitions
@@ -4285,6 +4421,8 @@
4285
4421
  [
4286
4422
  define('Function("return location")().constructor', OBJECT_L_LOCATION_CTOR),
4287
4423
  define('Function("return location")().constructor', OLD_SAFARI_LOCATION_CTOR),
4424
+ define('self.location.constructor', OBJECT_L_LOCATION_CTOR, SELF_OBJ),
4425
+ define('self.location.constructor', OLD_SAFARI_LOCATION_CTOR, SELF_OBJ),
4288
4426
  ],
4289
4427
  PLAIN_OBJECT:
4290
4428
  [
@@ -4331,6 +4469,23 @@
4331
4469
  define
4332
4470
  ({ expr: '"toUpperCase"', optimize: true, solutionType: SolutionType.COMBINED_STRING }),
4333
4471
  ],
4472
+ USER_AGENT:
4473
+ [
4474
+ define
4475
+ (
4476
+ {
4477
+ expr: 'Function("return navigator")().userAgent',
4478
+ solutionType: SolutionType.STRING,
4479
+ },
4480
+ MOZILLA
4481
+ ),
4482
+ define
4483
+ (
4484
+ { expr: 'self.navigator.userAgent', solutionType: SolutionType.STRING },
4485
+ MOZILLA,
4486
+ SELF_OBJ
4487
+ ),
4488
+ ],
4334
4489
 
4335
4490
  // Function body extra padding blocks: prepended to a function to align the function's body
4336
4491
  // at the same position in different engines, assuming that the function header is aligned.
@@ -4555,10 +4710,558 @@
4555
4710
  [define('fromCharCode'), define('fromCodePoint', FROM_CODE_POINT)],
4556
4711
  [
4557
4712
  define(0),
4713
+ define(1, ASYNC_FUNCTION),
4558
4714
  define(1, ATOB),
4559
- define(1, BARPROP),
4715
+ define
4716
+ (
4717
+ 0,
4718
+ ASYNC_FUNCTION,
4719
+ CALL_ON_GLOBAL,
4720
+ FROM_CODE_POINT,
4721
+ INCR_CHAR,
4722
+ NAME,
4723
+ NODECONSTRUCTOR,
4724
+ SELF_OBJ
4725
+ ),
4726
+ define(1, ASYNC_FUNCTION, NO_FF_SRC),
4727
+ define(1, ASYNC_FUNCTION, NO_V8_SRC),
4728
+ define(0, ARRAY_ITERATOR, ASYNC_FUNCTION, FROM_CODE_POINT, NAME),
4729
+ define(1, ARRAY_ITERATOR, ASYNC_FUNCTION, AT, NAME),
4730
+ define(1, ARRAY_ITERATOR, ASYNC_FUNCTION, FILL, NAME),
4731
+ define(1, ARRAY_ITERATOR, ASYNC_FUNCTION, FLAT, NAME),
4732
+ define(1, ARRAY_ITERATOR, ASYNC_FUNCTION, NAME, NO_IE_SRC),
4733
+ define(1, ARRAY_ITERATOR, ASYNC_FUNCTION, NAME, NO_V8_SRC),
4734
+ define(0, ARRAY_ITERATOR, ATOB, FROM_CODE_POINT, IE_SRC, ITERATOR_HELPER),
4735
+ define
4736
+ (
4737
+ 0,
4738
+ ASYNC_FUNCTION,
4739
+ AT,
4740
+ CALL_ON_GLOBAL,
4741
+ FROM_CODE_POINT,
4742
+ NAME,
4743
+ NODECONSTRUCTOR,
4744
+ SELF_OBJ
4745
+ ),
4746
+ define(1, ARRAY_ITERATOR, AT, ATOB, IE_SRC, ITERATOR_HELPER),
4747
+ define
4748
+ (
4749
+ 0,
4750
+ ASYNC_FUNCTION,
4751
+ CALL_ON_GLOBAL,
4752
+ FLAT,
4753
+ FROM_CODE_POINT,
4754
+ NAME,
4755
+ NODECONSTRUCTOR,
4756
+ SELF_OBJ
4757
+ ),
4758
+ define
4759
+ (1, ASYNC_FUNCTION, AT, CALL_ON_GLOBAL, NAME, NODECONSTRUCTOR, NO_FF_SRC, SELF_OBJ),
4760
+ define
4761
+ (1, ASYNC_FUNCTION, AT, CALL_ON_GLOBAL, NAME, NODECONSTRUCTOR, NO_V8_SRC, SELF_OBJ),
4762
+ define
4763
+ (1, ASYNC_FUNCTION, CALL_ON_GLOBAL, FLAT, NAME, NODECONSTRUCTOR, NO_FF_SRC, SELF_OBJ),
4764
+ define
4765
+ (1, ASYNC_FUNCTION, CALL_ON_GLOBAL, FLAT, NAME, NODECONSTRUCTOR, NO_V8_SRC, SELF_OBJ),
4766
+ define(0, ATOB, FROM_CODE_POINT, INTL, ITERATOR_HELPER),
4767
+ define(1, ATOB, FILL, INTL, ITERATOR_HELPER),
4768
+ define(1, ATOB, IE_SRC, INTL, ITERATOR_HELPER),
4769
+ define(1, ATOB, INTL, ITERATOR_HELPER, NO_IE_SRC),
4770
+ define
4771
+ (0, ASYNC_FUNCTION, CALL_ON_GLOBAL, FROM_CODE_POINT, IE_SRC, NODECONSTRUCTOR, SELF_OBJ),
4772
+ define(1, ASYNC_FUNCTION, AT, CALL_ON_GLOBAL, IE_SRC, NODECONSTRUCTOR, SELF_OBJ),
4773
+ define(1, ASYNC_FUNCTION, CALL_ON_GLOBAL, FILL, IE_SRC, NODECONSTRUCTOR, SELF_OBJ),
4774
+ define(1, ASYNC_FUNCTION, CALL_ON_GLOBAL, FLAT, IE_SRC, NODECONSTRUCTOR, SELF_OBJ),
4775
+ define(0, ARRAY_ITERATOR, ATOB, FROM_CODE_POINT, ITERATOR_HELPER, NO_IE_SRC),
4776
+ define
4777
+ (
4778
+ 0,
4779
+ ASYNC_FUNCTION,
4780
+ CALL_ON_GLOBAL,
4781
+ FLAT,
4782
+ FROM_CODE_POINT,
4783
+ IE_SRC,
4784
+ NAME,
4785
+ NODECONSTRUCTOR,
4786
+ SELF_OBJ
4787
+ ),
4788
+ define(1, ARRAY_ITERATOR, AT, ATOB, ITERATOR_HELPER, NO_IE_SRC),
4789
+ define
4790
+ (
4791
+ 0,
4792
+ ASYNC_FUNCTION,
4793
+ CALL_ON_GLOBAL,
4794
+ FILL,
4795
+ FROM_CODE_POINT,
4796
+ NAME,
4797
+ NODECONSTRUCTOR,
4798
+ SELF_OBJ
4799
+ ),
4800
+ define
4801
+ (1, ASYNC_FUNCTION, CALL_ON_GLOBAL, FILL, NAME, NODECONSTRUCTOR, NO_FF_SRC, SELF_OBJ),
4802
+ define
4803
+ (1, ASYNC_FUNCTION, CALL_ON_GLOBAL, FILL, NAME, NODECONSTRUCTOR, NO_V8_SRC, SELF_OBJ),
4804
+ define
4805
+ (
4806
+ 0,
4807
+ ASYNC_FUNCTION,
4808
+ CALL_ON_GLOBAL,
4809
+ FILL,
4810
+ FROM_CODE_POINT,
4811
+ IE_SRC,
4812
+ NAME,
4813
+ NODECONSTRUCTOR,
4814
+ SELF_OBJ
4815
+ ),
4816
+ define(1, AT, ATOB, INTL, ITERATOR_HELPER),
4817
+ define(0, ATOB, FROM_CODE_POINT, ITERATOR_HELPER, SELF_OBJ),
4818
+ define(1, ARRAY_ITERATOR, ATOB, ITERATOR_HELPER, SELF_OBJ),
4819
+ define(1, ATOB, FILL, ITERATOR_HELPER, SELF_OBJ),
4820
+ define(1, ATOB, FLAT, INTL, ITERATOR_HELPER),
4821
+ define(1, ATOB, FLAT, ITERATOR_HELPER, SELF_OBJ),
4822
+ define
4823
+ (
4824
+ 0,
4825
+ ARRAY_ITERATOR,
4826
+ ASYNC_FUNCTION,
4827
+ CALL_ON_GLOBAL,
4828
+ FROM_CODE_POINT,
4829
+ NODECONSTRUCTOR,
4830
+ SELF_OBJ
4831
+ ),
4832
+ define
4833
+ (1, ARRAY_ITERATOR, ASYNC_FUNCTION, AT, CALL_ON_GLOBAL, NODECONSTRUCTOR, SELF_OBJ),
4834
+ define
4835
+ (1, ARRAY_ITERATOR, ASYNC_FUNCTION, CALL_ON_GLOBAL, FLAT, NODECONSTRUCTOR, SELF_OBJ),
4836
+ define
4837
+ (
4838
+ 1,
4839
+ ARRAY_ITERATOR,
4840
+ ASYNC_FUNCTION,
4841
+ CALL_ON_GLOBAL,
4842
+ FILL,
4843
+ INCR_CHAR,
4844
+ NODECONSTRUCTOR,
4845
+ SELF_OBJ
4846
+ ),
4847
+ define
4848
+ (
4849
+ 1,
4850
+ ARRAY_ITERATOR,
4851
+ ASYNC_FUNCTION,
4852
+ CALL_ON_GLOBAL,
4853
+ FILL,
4854
+ NODECONSTRUCTOR,
4855
+ NO_FF_SRC,
4856
+ SELF_OBJ
4857
+ ),
4858
+ define
4859
+ (
4860
+ 0,
4861
+ ARRAY_ITERATOR,
4862
+ ASYNC_FUNCTION,
4863
+ CALL_ON_GLOBAL,
4864
+ FROM_CODE_POINT,
4865
+ NAME,
4866
+ NODECONSTRUCTOR,
4867
+ SELF_OBJ
4868
+ ),
4869
+ define
4870
+ (
4871
+ 1,
4872
+ ARRAY_ITERATOR,
4873
+ ASYNC_FUNCTION,
4874
+ CALL_ON_GLOBAL,
4875
+ FLAT,
4876
+ NAME,
4877
+ NODECONSTRUCTOR,
4878
+ NO_FF_SRC,
4879
+ SELF_OBJ
4880
+ ),
4881
+ define
4882
+ (
4883
+ 1,
4884
+ ARRAY_ITERATOR,
4885
+ ASYNC_FUNCTION,
4886
+ CALL_ON_GLOBAL,
4887
+ FLAT,
4888
+ NAME,
4889
+ NODECONSTRUCTOR,
4890
+ NO_V8_SRC,
4891
+ SELF_OBJ
4892
+ ),
4893
+ define
4894
+ (
4895
+ 0,
4896
+ ARRAY_ITERATOR,
4897
+ ASYNC_FUNCTION,
4898
+ CALL_ON_GLOBAL,
4899
+ FLAT,
4900
+ FROM_CODE_POINT,
4901
+ IE_SRC,
4902
+ NAME,
4903
+ NODECONSTRUCTOR,
4904
+ SELF_OBJ
4905
+ ),
4906
+ define
4907
+ (
4908
+ 1,
4909
+ ARRAY_ITERATOR,
4910
+ ASYNC_FUNCTION,
4911
+ CALL_ON_GLOBAL,
4912
+ FILL,
4913
+ NODECONSTRUCTOR,
4914
+ NO_V8_SRC,
4915
+ SELF_OBJ
4916
+ ),
4917
+ define
4918
+ (
4919
+ 0,
4920
+ ARRAY_ITERATOR,
4921
+ ASYNC_FUNCTION,
4922
+ CALL_ON_GLOBAL,
4923
+ FILL,
4924
+ FROM_CODE_POINT,
4925
+ IE_SRC,
4926
+ NAME,
4927
+ NODECONSTRUCTOR,
4928
+ SELF_OBJ
4929
+ ),
4930
+ define
4931
+ (
4932
+ 1,
4933
+ ARRAY_ITERATOR,
4934
+ ASYNC_FUNCTION,
4935
+ AT,
4936
+ CALL_ON_GLOBAL,
4937
+ NAME,
4938
+ NODECONSTRUCTOR,
4939
+ NO_FF_SRC,
4940
+ SELF_OBJ
4941
+ ),
4942
+ define
4943
+ (
4944
+ 1,
4945
+ ARRAY_ITERATOR,
4946
+ ASYNC_FUNCTION,
4947
+ AT,
4948
+ CALL_ON_GLOBAL,
4949
+ NAME,
4950
+ NODECONSTRUCTOR,
4951
+ NO_V8_SRC,
4952
+ SELF_OBJ
4953
+ ),
4954
+ define(0, ASYNC_FUNCTION, FROM_CODE_POINT, ITERATOR_HELPER),
4955
+ define(1, ASYNC_FUNCTION, FLAT, ITERATOR_HELPER),
4956
+ define(1, ASYNC_FUNCTION, ITERATOR_HELPER, NO_V8_SRC),
4957
+ define(0, ASYNC_FUNCTION, FROM_CODE_POINT, INTL, ITERATOR_HELPER),
4958
+ define(1, ASYNC_FUNCTION, IE_SRC, INTL, ITERATOR_HELPER),
4959
+ define(1, ASYNC_FUNCTION, FLAT, INTL, ITERATOR_HELPER, NO_V8_SRC),
4960
+ define(0, ASYNC_FUNCTION, FROM_CODE_POINT, ITERATOR_HELPER, NODECONSTRUCTOR, NO_V8_SRC),
4961
+ define(1, ASYNC_FUNCTION, FILL, ITERATOR_HELPER, NODECONSTRUCTOR, NO_V8_SRC),
4962
+ define
4963
+ (0, ASYNC_FUNCTION, FROM_CODE_POINT, INTL, ITERATOR_HELPER, NODECONSTRUCTOR, NO_V8_SRC),
4964
+ define(1, ASYNC_FUNCTION, IE_SRC, ITERATOR_HELPER, NODECONSTRUCTOR),
4965
+ define(1, ASYNC_FUNCTION, FLAT, ITERATOR_HELPER, NODECONSTRUCTOR, NO_V8_SRC),
4966
+ define(0, ASYNC_FUNCTION, FLAT, FROM_CODE_POINT, ITERATOR_HELPER, SELF_OBJ),
4967
+ define(0, ASYNC_FUNCTION, FROM_CODE_POINT, ITERATOR_HELPER, NO_V8_SRC, SELF_OBJ),
4968
+ define(1, ASYNC_FUNCTION, IE_SRC, ITERATOR_HELPER, SELF_OBJ),
4969
+ define(1, ASYNC_FUNCTION, FLAT, ITERATOR_HELPER, NO_V8_SRC, SELF_OBJ),
4970
+ define
4971
+ (
4972
+ 0,
4973
+ ASYNC_FUNCTION,
4974
+ CALL_ON_GLOBAL,
4975
+ FROM_CODE_POINT,
4976
+ ITERATOR_HELPER,
4977
+ NO_V8_SRC,
4978
+ SELF_OBJ
4979
+ ),
4980
+ define(1, ASYNC_FUNCTION, ITERATOR_HELPER, NO_IE_SRC),
4981
+ define(0, ASYNC_FUNCTION, FROM_CODE_POINT, INTL, ITERATOR_HELPER, NO_IE_SRC),
4982
+ define(0, ASYNC_FUNCTION, FROM_CODE_POINT, ITERATOR_HELPER, NO_IE_SRC, SELF_OBJ),
4983
+ define(1, ASYNC_FUNCTION, ITERATOR_HELPER, V8_SRC),
4984
+ define(1, ASYNC_FUNCTION, FF_SRC, INTL, ITERATOR_HELPER),
4985
+ define(1, ASYNC_FUNCTION, FILL, INTL, ITERATOR_HELPER, NO_IE_SRC),
4986
+ define(1, ASYNC_FUNCTION, FLAT, INTL, ITERATOR_HELPER, NO_IE_SRC),
4987
+ define
4988
+ (0, ASYNC_FUNCTION, FROM_CODE_POINT, ITERATOR_HELPER, NAME, NODECONSTRUCTOR, NO_IE_SRC),
4989
+ define(1, ASYNC_FUNCTION, FF_SRC, ITERATOR_HELPER, SELF_OBJ),
4990
+ define(1, ASYNC_FUNCTION, FILL, ITERATOR_HELPER, NO_IE_SRC, SELF_OBJ),
4991
+ define(1, ASYNC_FUNCTION, FLAT, ITERATOR_HELPER, NO_IE_SRC, SELF_OBJ),
4992
+ define(1, ASYNC_FUNCTION, ITERATOR_HELPER, NAME, NODECONSTRUCTOR, V8_SRC),
4993
+ define(1, ASYNC_FUNCTION, FILL, ITERATOR_HELPER, NAME, NODECONSTRUCTOR, NO_IE_SRC),
4994
+ define(0, ASYNC_FUNCTION, FLAT, FROM_CODE_POINT, ITERATOR_HELPER, NAME),
4995
+ define
4996
+ (0, ASYNC_FUNCTION, CALL_ON_GLOBAL, FF_SRC, FROM_CODE_POINT, ITERATOR_HELPER, SELF_OBJ),
4997
+ define
4998
+ (0, ASYNC_FUNCTION, CALL_ON_GLOBAL, FROM_CODE_POINT, ITERATOR_HELPER, SELF_OBJ, V8_SRC),
4999
+ define
5000
+ (
5001
+ 0,
5002
+ ASYNC_FUNCTION,
5003
+ CALL_ON_GLOBAL,
5004
+ FILL,
5005
+ FROM_CODE_POINT,
5006
+ ITERATOR_HELPER,
5007
+ NO_IE_SRC,
5008
+ SELF_OBJ
5009
+ ),
5010
+ define
5011
+ (
5012
+ 0,
5013
+ ASYNC_FUNCTION,
5014
+ CALL_ON_GLOBAL,
5015
+ FLAT,
5016
+ FROM_CODE_POINT,
5017
+ ITERATOR_HELPER,
5018
+ NO_IE_SRC,
5019
+ SELF_OBJ
5020
+ ),
5021
+ define(1, ASYNC_FUNCTION, FLAT, ITERATOR_HELPER, NAME, NO_IE_SRC),
5022
+ define(0, ATOB, FROM_CODE_POINT, ITERATOR_HELPER, NAME),
5023
+ define
5024
+ (
5025
+ 0,
5026
+ ASYNC_FUNCTION,
5027
+ CALL_ON_GLOBAL,
5028
+ FLAT,
5029
+ FROM_CODE_POINT,
5030
+ ITERATOR_HELPER,
5031
+ NAME,
5032
+ SELF_OBJ
5033
+ ),
5034
+ define(1, ATOB, ITERATOR_HELPER, NAME, NO_V8_SRC),
5035
+ define(0, ATOB, FROM_CODE_POINT, ITERATOR_HELPER, NAME, NODECONSTRUCTOR),
5036
+ define(1, ATOB, INCR_CHAR, ITERATOR_HELPER, NAME),
5037
+ define(0, ATOB, FROM_CODE_POINT, INCR_CHAR, INTL, ITERATOR_HELPER, NAME),
5038
+ define(0, ATOB, FROM_CODE_POINT, INCR_CHAR, ITERATOR_HELPER, NAME, NODECONSTRUCTOR),
5039
+ define(0, ATOB, FROM_CODE_POINT, INCR_CHAR, ITERATOR_HELPER, NAME, NO_FF_SRC),
5040
+ define(0, ATOB, FROM_CODE_POINT, INCR_CHAR, ITERATOR_HELPER, NAME, SELF_OBJ),
5041
+ define(0, ATOB, FROM_CODE_POINT, INTL, ITERATOR_HELPER, NAME, NO_V8_SRC),
5042
+ define(1, ATOB, FILL, ITERATOR_HELPER, NAME),
5043
+ define(1, ATOB, IE_SRC, INTL, ITERATOR_HELPER, NAME),
5044
+ define(0, ATOB, FILL, FROM_CODE_POINT, INTL, ITERATOR_HELPER, NAME),
5045
+ define(1, ATOB, FILL, IE_SRC, ITERATOR_HELPER, NAME),
5046
+ define(0, ARRAY_ITERATOR, ATOB, FROM_CODE_POINT, INCR_CHAR, ITERATOR_HELPER, NAME),
5047
+ define(0, ATOB, FILL, FROM_CODE_POINT, ITERATOR_HELPER, NAME, SELF_OBJ),
5048
+ define(0, ATOB, FROM_CODE_POINT, ITERATOR_HELPER, NAME, NO_V8_SRC, SELF_OBJ),
5049
+ define(1, ATOB, IE_SRC, ITERATOR_HELPER, NAME, NODECONSTRUCTOR),
5050
+ define(0, ARRAY_ITERATOR, ATOB, FROM_CODE_POINT, ITERATOR_HELPER, NAME, NO_V8_SRC),
5051
+ define(1, ATOB, FLAT, ITERATOR_HELPER, NAME),
5052
+ define(0, ARRAY_ITERATOR, ATOB, FILL, FROM_CODE_POINT, ITERATOR_HELPER),
5053
+ define(1, ARRAY_ITERATOR, ATOB, FILL, ITERATOR_HELPER, NO_V8_SRC),
5054
+ define(1, ARRAY_ITERATOR, ATOB, CALL_ON_GLOBAL, FILL, ITERATOR_HELPER, SELF_OBJ),
5055
+ define
5056
+ (0, ARRAY_ITERATOR, ATOB, FILL, FROM_CODE_POINT, ITERATOR_HELPER, NAME, NO_V8_SRC),
5057
+ define(1, ARRAY_ITERATOR, ATOB, FILL, IE_SRC, ITERATOR_HELPER),
5058
+ define
5059
+ (
5060
+ 0,
5061
+ ASYNC_FUNCTION,
5062
+ CALL_ON_GLOBAL,
5063
+ FROM_CODE_POINT,
5064
+ NODECONSTRUCTOR,
5065
+ NO_IE_SRC,
5066
+ SELF_OBJ
5067
+ ),
5068
+ define(1, ASYNC_FUNCTION, CALL_ON_GLOBAL, FF_SRC, FLAT, NODECONSTRUCTOR, SELF_OBJ),
5069
+ define(1, ASYNC_FUNCTION, CALL_ON_GLOBAL, FLAT, NODECONSTRUCTOR, SELF_OBJ, V8_SRC),
5070
+ define
5071
+ (
5072
+ 0,
5073
+ ASYNC_FUNCTION,
5074
+ CALL_ON_GLOBAL,
5075
+ FROM_CODE_POINT,
5076
+ ITERATOR_HELPER,
5077
+ NODECONSTRUCTOR,
5078
+ NO_IE_SRC,
5079
+ SELF_OBJ
5080
+ ),
5081
+ define
5082
+ (
5083
+ 0,
5084
+ ASYNC_FUNCTION,
5085
+ CALL_ON_GLOBAL,
5086
+ FROM_CODE_POINT,
5087
+ NAME,
5088
+ NODECONSTRUCTOR,
5089
+ NO_IE_SRC,
5090
+ SELF_OBJ
5091
+ ),
5092
+ define(1, ASYNC_FUNCTION, AT, CALL_ON_GLOBAL, FF_SRC, NODECONSTRUCTOR, SELF_OBJ),
5093
+ define(1, ASYNC_FUNCTION, AT, CALL_ON_GLOBAL, NODECONSTRUCTOR, SELF_OBJ, V8_SRC),
5094
+ define(0, ARRAY_ITERATOR, ASYNC_FUNCTION, FLAT, FROM_CODE_POINT, ITERATOR_HELPER),
5095
+ define(0, ATOB, CALL_ON_GLOBAL, FLAT, FROM_CODE_POINT, ITERATOR_HELPER, NAME, SELF_OBJ),
5096
+ define(1, ATOB, IE_SRC, ITERATOR_HELPER, SELF_OBJ),
5097
+ define(0, ARRAY_ITERATOR, ATOB, FROM_CODE_POINT, IE_SRC, ITERATOR_HELPER, SELF_OBJ),
5098
+ define(1, ASYNC_FUNCTION, AT, ITERATOR_HELPER),
5099
+ define(1, ARRAY_ITERATOR, AT, ATOB, FILL, ITERATOR_HELPER),
5100
+ define(1, ARRAY_ITERATOR, ATOB, FILL, ITERATOR_HELPER, NO_IE_SRC),
5101
+ define(1, ATOB, CALL_ON_GLOBAL, IE_SRC, ITERATOR_HELPER, SELF_OBJ),
5102
+ define(1, ATOB, FILL, IE_SRC, ITERATOR_HELPER, SELF_OBJ),
5103
+ define
5104
+ (0, ASYNC_FUNCTION, AT, CALL_ON_GLOBAL, FROM_CODE_POINT, ITERATOR_HELPER, SELF_OBJ),
5105
+ define(1, ASYNC_FUNCTION, AT, IE_SRC, ITERATOR_HELPER),
5106
+ define(1, ASYNC_FUNCTION, AT, ITERATOR_HELPER, NO_IE_SRC),
5107
+ define
5108
+ (
5109
+ 0,
5110
+ ASYNC_FUNCTION,
5111
+ AT,
5112
+ CALL_ON_GLOBAL,
5113
+ FROM_CODE_POINT,
5114
+ ITERATOR_HELPER,
5115
+ NODECONSTRUCTOR,
5116
+ NO_IE_SRC,
5117
+ SELF_OBJ
5118
+ ),
5119
+ define(1, ASYNC_FUNCTION, AT, CALL_ON_GLOBAL, FF_SRC, ITERATOR_HELPER, SELF_OBJ),
5120
+ define(1, ASYNC_FUNCTION, AT, CALL_ON_GLOBAL, ITERATOR_HELPER, SELF_OBJ, V8_SRC),
5121
+ define(0, ARRAY_ITERATOR, ASYNC_FUNCTION, FROM_CODE_POINT, ITERATOR_HELPER, NO_IE_SRC),
5122
+ define(0, ASYNC_FUNCTION, FROM_CODE_POINT, ITERATOR_HELPER, NAME, NO_V8_SRC),
5123
+ define(1, ASYNC_FUNCTION, FILL, INCR_CHAR, ITERATOR_HELPER, NAME, NO_V8_SRC),
5124
+ define(0, ASYNC_FUNCTION, FROM_CODE_POINT, INTL, ITERATOR_HELPER, NAME, NO_V8_SRC),
5125
+ define(1, ASYNC_FUNCTION, FLAT, ITERATOR_HELPER, NAME, NO_V8_SRC),
5126
+ define
5127
+ (0, ASYNC_FUNCTION, FLAT, FROM_CODE_POINT, INTL, ITERATOR_HELPER, NAME, NO_V8_SRC),
5128
+ define
5129
+ (
5130
+ 0,
5131
+ ASYNC_FUNCTION,
5132
+ FILL,
5133
+ FROM_CODE_POINT,
5134
+ INCR_CHAR,
5135
+ ITERATOR_HELPER,
5136
+ NAME,
5137
+ NODECONSTRUCTOR,
5138
+ NO_V8_SRC
5139
+ ),
5140
+ define
5141
+ (
5142
+ 0,
5143
+ ASYNC_FUNCTION,
5144
+ FILL,
5145
+ FROM_CODE_POINT,
5146
+ INCR_CHAR,
5147
+ ITERATOR_HELPER,
5148
+ NAME,
5149
+ NO_V8_SRC,
5150
+ SELF_OBJ
5151
+ ),
5152
+ define(1, ASYNC_FUNCTION, IE_SRC, ITERATOR_HELPER, NAME),
5153
+ define(1, ASYNC_FUNCTION, AT, ITERATOR_HELPER, NAME, NO_V8_SRC),
5154
+ define
5155
+ (
5156
+ 0,
5157
+ ASYNC_FUNCTION,
5158
+ CALL_ON_GLOBAL,
5159
+ FROM_CODE_POINT,
5160
+ IE_SRC,
5161
+ ITERATOR_HELPER,
5162
+ NAME,
5163
+ SELF_OBJ
5164
+ ),
5165
+ define(1, ASYNC_FUNCTION, FF_SRC, ITERATOR_HELPER, NAME),
5166
+ define
5167
+ (
5168
+ 0,
5169
+ ASYNC_FUNCTION,
5170
+ CALL_ON_GLOBAL,
5171
+ FF_SRC,
5172
+ FROM_CODE_POINT,
5173
+ ITERATOR_HELPER,
5174
+ NAME,
5175
+ SELF_OBJ
5176
+ ),
5177
+ define
5178
+ (0, ASYNC_FUNCTION, FLAT, FROM_CODE_POINT, ITERATOR_HELPER, NAME, NO_V8_SRC, SELF_OBJ),
5179
+ define(1, ASYNC_FUNCTION, FLAT, IE_SRC, ITERATOR_HELPER, NAME, SELF_OBJ),
5180
+ define(1, ASYNC_FUNCTION, AT, FLAT, ITERATOR_HELPER, NAME, NO_V8_SRC, SELF_OBJ),
5181
+ define
5182
+ (
5183
+ 0,
5184
+ ASYNC_FUNCTION,
5185
+ CALL_ON_GLOBAL,
5186
+ FLAT,
5187
+ FROM_CODE_POINT,
5188
+ IE_SRC,
5189
+ ITERATOR_HELPER,
5190
+ NAME,
5191
+ SELF_OBJ
5192
+ ),
5193
+ define(1, ASYNC_FUNCTION, FF_SRC, FLAT, ITERATOR_HELPER, NAME, SELF_OBJ),
5194
+ define
5195
+ (
5196
+ 0,
5197
+ ASYNC_FUNCTION,
5198
+ AT,
5199
+ CALL_ON_GLOBAL,
5200
+ FROM_CODE_POINT,
5201
+ ITERATOR_HELPER,
5202
+ NAME,
5203
+ NO_V8_SRC,
5204
+ SELF_OBJ
5205
+ ),
5206
+ define
5207
+ (
5208
+ 0,
5209
+ ASYNC_FUNCTION,
5210
+ CALL_ON_GLOBAL,
5211
+ FF_SRC,
5212
+ FLAT,
5213
+ FROM_CODE_POINT,
5214
+ ITERATOR_HELPER,
5215
+ NAME,
5216
+ SELF_OBJ
5217
+ ),
5218
+ define(1, ASYNC_FUNCTION, AT, CALL_ON_GLOBAL, FF_SRC, ITERATOR_HELPER, NAME, SELF_OBJ),
5219
+ define(1, ASYNC_FUNCTION, AT, CALL_ON_GLOBAL, IE_SRC, ITERATOR_HELPER, NAME, SELF_OBJ),
5220
+ define(0, ARRAY_ITERATOR, ATOB, FLAT, FROM_CODE_POINT, ITERATOR_HELPER),
5221
+ define(1, ARRAY_ITERATOR, ATOB, FLAT, ITERATOR_HELPER, NO_V8_SRC),
5222
+ define
5223
+ (1, ARRAY_ITERATOR, ATOB, CALL_ON_GLOBAL, FLAT, INCR_CHAR, ITERATOR_HELPER, SELF_OBJ),
5224
+ define
5225
+ (0, ARRAY_ITERATOR, ATOB, FLAT, FROM_CODE_POINT, ITERATOR_HELPER, NAME, NO_V8_SRC),
5226
+ define(1, ATOB, ITERATOR_HELPER, NO_IE_SRC, SELF_OBJ),
5227
+ define(1, ARRAY_ITERATOR, AT, ATOB, FLAT, ITERATOR_HELPER),
5228
+ define(1, ARRAY_ITERATOR, ATOB, FLAT, IE_SRC, ITERATOR_HELPER),
5229
+ define(0, ARRAY_ITERATOR, ATOB, FROM_CODE_POINT, ITERATOR_HELPER, NO_IE_SRC, SELF_OBJ),
5230
+ define(1, ARRAY_ITERATOR, ATOB, FLAT, ITERATOR_HELPER, NO_IE_SRC),
5231
+ define(1, ATOB, CALL_ON_GLOBAL, ITERATOR_HELPER, NO_IE_SRC, SELF_OBJ),
5232
+ define(1, ATOB, FILL, ITERATOR_HELPER, NO_IE_SRC, SELF_OBJ),
5233
+ define(0, ARRAY_ITERATOR, ASYNC_FUNCTION, AT, FROM_CODE_POINT, ITERATOR_HELPER),
5234
+ define(1, ATOB, ITERATOR_HELPER, NAME, NO_IE_SRC),
5235
+ define(0, ARRAY_ITERATOR, ATOB, FROM_CODE_POINT, ITERATOR_HELPER, NAME, NO_IE_SRC),
5236
+ define(1, ATOB, FILL, ITERATOR_HELPER, NAME, NO_IE_SRC),
5237
+ define(1, ATOB, FLAT, ITERATOR_HELPER, NAME, NO_IE_SRC),
5238
+ define(1, ARRAY_ITERATOR, ATOB, CALL_ON_GLOBAL, ITERATOR_HELPER, NAME, SELF_OBJ),
5239
+ define
5240
+ (
5241
+ 0,
5242
+ ARRAY_ITERATOR,
5243
+ ATOB,
5244
+ CALL_ON_GLOBAL,
5245
+ FLAT,
5246
+ FROM_CODE_POINT,
5247
+ ITERATOR_HELPER,
5248
+ NAME,
5249
+ SELF_OBJ
5250
+ ),
5251
+ define
5252
+ (1, ARRAY_ITERATOR, ATOB, CALL_ON_GLOBAL, IE_SRC, ITERATOR_HELPER, NAME, SELF_OBJ),
5253
+ define
5254
+ (1, ARRAY_ITERATOR, ATOB, CALL_ON_GLOBAL, INCR_CHAR, ITERATOR_HELPER, NAME, SELF_OBJ),
5255
+ define
5256
+ (1, ARRAY_ITERATOR, ATOB, CALL_ON_GLOBAL, ITERATOR_HELPER, NAME, NO_IE_SRC, SELF_OBJ),
5257
+ define(0, ARRAY_ITERATOR, ASYNC_FUNCTION, FROM_CODE_POINT, ITERATOR_HELPER, NO_V8_SRC),
4560
5258
  define(1, CAPITAL_HTML),
5259
+ define(1, AT, ATOB, ITERATOR_HELPER, SELF_OBJ),
4561
5260
  define(0, ARRAY_ITERATOR, ATOB, CAPITAL_HTML, FROM_CODE_POINT),
5261
+ define(1, BARPROP),
5262
+ define(1, CAPITAL_HTML, ITERATOR_HELPER),
5263
+ define(1, AT, ATOB, ITERATOR_HELPER, NAME),
5264
+ define(0, ARRAY_ITERATOR, ATOB, BARPROP, CAPITAL_HTML, FROM_CODE_POINT),
4562
5265
  ]
4563
5266
  );
4564
5267
 
@@ -4689,15 +5392,24 @@
4689
5392
  define(0, NO_FF_SRC),
4690
5393
  define(0, NO_V8_SRC),
4691
5394
  define(1, ARRAY_ITERATOR, CAPITAL_HTML),
4692
- define(0, ARRAY_ITERATOR, AT, ATOB),
4693
- define(0, ARRAY_ITERATOR, AT, CAPITAL_HTML),
5395
+ define(1, ARRAY_ITERATOR, ATOB, CALL_ON_GLOBAL, SELF_OBJ),
4694
5396
  define(0, ARRAY_ITERATOR, ATOB, FILL),
4695
- define(0, ARRAY_ITERATOR, ATOB, FLAT),
4696
- define(0, ARRAY_ITERATOR, ATOB, NO_IE_SRC),
4697
5397
  define(0, ARRAY_ITERATOR, CAPITAL_HTML, FILL),
4698
- define(0, ARRAY_ITERATOR, CAPITAL_HTML, FLAT),
4699
5398
  define(0, ARRAY_ITERATOR, CAPITAL_HTML, IE_SRC),
5399
+ define(0, ARRAY_ITERATOR, ATOB, CALL_ON_GLOBAL, IE_SRC, SELF_OBJ),
5400
+ define(1, ARRAY_ITERATOR, ATOB, CALL_ON_GLOBAL, FILL, SELF_OBJ),
5401
+ define(0, ARRAY_ITERATOR, ATOB, NO_IE_SRC),
4700
5402
  define(0, ARRAY_ITERATOR, CAPITAL_HTML, NO_IE_SRC),
5403
+ define(0, ARRAY_ITERATOR, ATOB, FILL, IE_SRC),
5404
+ define(0, ARRAY_ITERATOR, ATOB, FILL, INCR_CHAR, NO_V8_SRC),
5405
+ define(1, ARRAY_ITERATOR, ATOB, CALL_ON_GLOBAL, NO_IE_SRC, SELF_OBJ),
5406
+ define(0, ARRAY_ITERATOR, AT, ATOB),
5407
+ define(0, ARRAY_ITERATOR, AT, CAPITAL_HTML),
5408
+ define(0, ARRAY_ITERATOR, ATOB, FF_SRC),
5409
+ define(0, ARRAY_ITERATOR, ATOB, FLAT),
5410
+ define(0, ARRAY_ITERATOR, ATOB, V8_SRC),
5411
+ define(0, ARRAY_ITERATOR, CAPITAL_HTML, FLAT),
5412
+ define(0, ARRAY_ITERATOR, ATOB, FILL, NO_IE_SRC),
4701
5413
  define(2),
4702
5414
  ]
4703
5415
  );
@@ -4717,9 +5429,11 @@
4717
5429
  [
4718
5430
  define(0),
4719
5431
  define(1, AT),
5432
+ define(0, FLAT),
4720
5433
  define(1, FILL, IE_SRC),
4721
5434
  define(1, FILL, NO_IE_SRC),
4722
- define(0, FLAT),
5435
+ define(0, FILL, FLAT, IE_SRC),
5436
+ define(0, FILL, FLAT, NO_IE_SRC),
4723
5437
  ]
4724
5438
  );
4725
5439
 
@@ -5837,7 +6551,7 @@
5837
6551
 
5838
6552
  var STATIC_CHAR_CACHE = createEmpty();
5839
6553
  var STATIC_CONST_CACHE = createEmpty();
5840
- var STATIC_ENCODER = new Encoder(maskNew());
6554
+ var STATIC_ENCODER = new Encoder(MASK_EMPTY);
5841
6555
 
5842
6556
  var BOND_STRENGTH_NONE = 0;
5843
6557
  var BOND_STRENGTH_WEAK = 1;
@@ -6111,7 +6825,9 @@
6111
6825
  function (str, index)
6112
6826
  {
6113
6827
  regExp.lastIndex = index;
6114
- var match = str.match(regExp);
6828
+ // String.prototype.match doesn't work well with sticky regular expressions in Node.js <
6829
+ // 6.5.
6830
+ var match = regExp.exec(str);
6115
6831
  if (match)
6116
6832
  return match[0];
6117
6833
  };
@@ -7242,7 +7958,7 @@
7242
7958
  var output = this._encodeByCodePoints(inputData, 4, maxLength);
7243
7959
  return output;
7244
7960
  },
7245
- 38,
7961
+ 30,
7246
7962
  undefined,
7247
7963
  Feature.FROM_CODE_POINT
7248
7964
  ),
@@ -7321,7 +8037,7 @@
7321
8037
  var output = this._encodeByDict(inputData, 3, 1, maxLength);
7322
8038
  return output;
7323
8039
  },
7324
- 153
8040
+ 136
7325
8041
  ),
7326
8042
 
7327
8043
  /* -------------------------------------------------------------------------------------- *\
@@ -7417,7 +8133,7 @@
7417
8133
  var output = this._encodeByDict(inputData, 4, 2, maxLength);
7418
8134
  return output;
7419
8135
  },
7420
- 279
8136
+ 263
7421
8137
  ),
7422
8138
 
7423
8139
  /* -------------------------------------------------------------------------------------- *\
@@ -7486,7 +8202,7 @@
7486
8202
  var output = this._encodeByDict(inputData, 5, 3, maxLength);
7487
8203
  return output;
7488
8204
  },
7489
- 602
8205
+ 570
7490
8206
  ),
7491
8207
 
7492
8208
  /* -------------------------------------------------------------------------------------- *\
@@ -8836,13 +9552,19 @@
8836
9552
  if (inputEntries)
8837
9553
  {
8838
9554
  if (_Array_isArray$1(inputEntries))
8839
- outputEntries = inputEntries.map(clone);
9555
+ outputEntries = inputEntries.map(cloneEntry);
8840
9556
  else
8841
- outputEntries = [createEntryClone(inputEntries, EMPTY_MASK)];
9557
+ outputEntries = [createEntryClone(inputEntries, MASK_EMPTY)];
8842
9558
  }
8843
9559
  return outputEntries;
8844
9560
  }
8845
9561
 
9562
+ function cloneEntry(inputEntry)
9563
+ {
9564
+ var outputEntry = createEntryClone(inputEntry.definition, inputEntry.mask);
9565
+ return outputEntry;
9566
+ }
9567
+
8846
9568
  function createEncoder(features)
8847
9569
  {
8848
9570
  var mask = getFeatureMask(features);
@@ -8889,7 +9611,7 @@
8889
9611
 
8890
9612
  function getComplexEntry(complex)
8891
9613
  {
8892
- var entry = clone(COMPLEX[complex]);
9614
+ var entry = cloneEntry(COMPLEX[complex]);
8893
9615
  return entry;
8894
9616
  }
8895
9617
 
@@ -8923,15 +9645,15 @@
8923
9645
  return STRATEGIES;
8924
9646
  }
8925
9647
 
8926
- var EMPTY_MASK = maskNew();
8927
-
8928
9648
  // Miscellaneous entries
8929
9649
  var ENTRIES = createEmpty();
8930
- ENTRIES['BASE64_ALPHABET_HI_4:0'] = BASE64_ALPHABET_HI_4[0];
8931
- ENTRIES['BASE64_ALPHABET_HI_4:4'] = BASE64_ALPHABET_HI_4[4];
8932
- ENTRIES['BASE64_ALPHABET_HI_4:5'] = BASE64_ALPHABET_HI_4[5];
8933
- ENTRIES['BASE64_ALPHABET_LO_4:1'] = BASE64_ALPHABET_LO_4[1];
8934
- ENTRIES['BASE64_ALPHABET_LO_4:3'] = BASE64_ALPHABET_LO_4[3];
9650
+
9651
+ ENTRIES['BASE64_ALPHABET_HI_4:0'] = BASE64_ALPHABET_HI_4[0];
9652
+ ENTRIES['BASE64_ALPHABET_HI_4:1'] = BASE64_ALPHABET_HI_4[1];
9653
+ ENTRIES['BASE64_ALPHABET_HI_4:4'] = BASE64_ALPHABET_HI_4[4];
9654
+ ENTRIES['BASE64_ALPHABET_HI_4:5'] = BASE64_ALPHABET_HI_4[5];
9655
+ ENTRIES['BASE64_ALPHABET_LO_4:1'] = BASE64_ALPHABET_LO_4[1];
9656
+ ENTRIES['BASE64_ALPHABET_LO_4:3'] = BASE64_ALPHABET_LO_4[3];
8935
9657
 
8936
9658
  var featureFromMask = Feature._fromMask;
8937
9659
  var getFeatureMask = Feature._getMask;