jscrewit 2.34.0 → 2.35.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.34.0 – https://jscrew.it
1
+ // JScrewIt 2.35.0 – https://jscrew.it
2
2
 
3
3
  (function () {
4
4
  'use strict';
@@ -231,6 +231,22 @@
231
231
  return plan;
232
232
  }
233
233
 
234
+ /******************************************************************************
235
+ Copyright (c) Microsoft Corporation.
236
+
237
+ Permission to use, copy, modify, and/or distribute this software for any
238
+ purpose with or without fee is hereby granted.
239
+
240
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
241
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
242
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
243
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
244
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
245
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
246
+ PERFORMANCE OF THIS SOFTWARE.
247
+ ***************************************************************************** */
248
+
249
+
234
250
  var extendStatics = function(d, b) {
235
251
  extendStatics = Object.setPrototypeOf ||
236
252
  ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
@@ -682,8 +698,7 @@
682
698
  var aliasFor = esToString(info_1.aliasFor);
683
699
  mask = completeFeature(aliasFor);
684
700
  featureObj = ALL[aliasFor];
685
- if (description == null)
686
- description = DESCRIPTION_MAP[aliasFor];
701
+ description !== null && description !== void 0 ? description : (description = DESCRIPTION_MAP[aliasFor]);
687
702
  }
688
703
  else {
689
704
  var inherits = getInfoStringField('inherits');
@@ -760,8 +775,7 @@
760
775
  familyCompatibilities.push(compatibility);
761
776
  return compatibility;
762
777
  });
763
- if (description == null)
764
- description = formatEngineDescription === null || formatEngineDescription === void 0 ? void 0 : formatEngineDescription(compatibilities);
778
+ description !== null && description !== void 0 ? description : (description = formatEngineDescription === null || formatEngineDescription === void 0 ? void 0 : formatEngineDescription(compatibilities));
765
779
  }
766
780
  var attributes = createMap();
767
781
  if (inherits != null) {
@@ -995,7 +1009,7 @@
995
1009
  return available;
996
1010
  }
997
1011
  ),
998
- includes: ['SELF_OBJ'],
1012
+ includes: ['SELF_OBJ'],
999
1013
  attributes: { 'web-worker': 'web-worker-restriction' },
1000
1014
  },
1001
1015
  ARRAY_ITERATOR:
@@ -1038,14 +1052,14 @@
1038
1052
  },
1039
1053
  ATOB:
1040
1054
  {
1041
- description: 'Existence of the global functions atob and btoa.',
1055
+ description: 'Existence of the global functions atob and btoa.',
1042
1056
  check:
1043
1057
  function ()
1044
1058
  {
1045
1059
  var available = typeof atob === 'function' && typeof btoa === 'function';
1046
1060
  return available;
1047
1061
  },
1048
- attributes: { 'web-worker': 'old-safari-restriction' },
1062
+ attributes: { 'web-worker': 'old-safari-restriction' },
1049
1063
  },
1050
1064
  BARPROP:
1051
1065
  {
@@ -1106,8 +1120,8 @@
1106
1120
  var available = typeof document === 'object' && document + '' === '[object Document]';
1107
1121
  return available;
1108
1122
  },
1109
- includes: ['ANY_DOCUMENT'],
1110
- excludes: ['HTMLDOCUMENT'],
1123
+ includes: ['ANY_DOCUMENT'],
1124
+ excludes: ['HTMLDOCUMENT'],
1111
1125
  attributes: { 'web-worker': 'web-worker-restriction' },
1112
1126
  },
1113
1127
  DOMWINDOW:
@@ -1124,8 +1138,8 @@
1124
1138
  return available;
1125
1139
  }
1126
1140
  ),
1127
- includes: ['ANY_WINDOW'],
1128
- excludes: ['WINDOW'],
1141
+ includes: ['ANY_WINDOW'],
1142
+ excludes: ['WINDOW'],
1129
1143
  attributes: { 'web-worker': 'web-worker-restriction' },
1130
1144
  },
1131
1145
  ESC_HTML_ALL:
@@ -1326,7 +1340,7 @@
1326
1340
  typeof Audio !== 'undefined' && /^function HTMLAudioElement/.test(Audio);
1327
1341
  return available;
1328
1342
  },
1329
- includes: ['NO_IE_SRC'],
1343
+ includes: ['NO_IE_SRC'],
1330
1344
  attributes: { 'web-worker': 'web-worker-restriction' },
1331
1345
  },
1332
1346
  HTMLDOCUMENT:
@@ -1341,8 +1355,8 @@
1341
1355
  typeof document === 'object' && document + '' === '[object HTMLDocument]';
1342
1356
  return available;
1343
1357
  },
1344
- includes: ['ANY_DOCUMENT'],
1345
- excludes: ['DOCUMENT'],
1358
+ includes: ['ANY_DOCUMENT'],
1359
+ excludes: ['DOCUMENT'],
1346
1360
  attributes: { 'web-worker': 'web-worker-restriction' },
1347
1361
  },
1348
1362
  IE_SRC:
@@ -1610,7 +1624,8 @@
1610
1624
  return available;
1611
1625
  },
1612
1626
  },
1613
- SELF: { aliasFor: 'ANY_WINDOW' },
1627
+ SELF:
1628
+ { aliasFor: 'ANY_WINDOW' },
1614
1629
  SELF_OBJ:
1615
1630
  {
1616
1631
  description:
@@ -1645,14 +1660,14 @@
1645
1660
  },
1646
1661
  STATUS:
1647
1662
  {
1648
- description: 'Existence of the global string status.',
1663
+ description: 'Existence of the global string status.',
1649
1664
  check:
1650
1665
  function ()
1651
1666
  {
1652
1667
  var available = typeof status === 'string';
1653
1668
  return available;
1654
1669
  },
1655
- attributes: { 'web-worker': 'web-worker-restriction' },
1670
+ attributes: { 'web-worker': 'web-worker-restriction' },
1656
1671
  },
1657
1672
  UNDEFINED:
1658
1673
  {
@@ -1690,8 +1705,8 @@
1690
1705
  return available;
1691
1706
  }
1692
1707
  ),
1693
- includes: ['ANY_WINDOW'],
1694
- excludes: ['DOMWINDOW'],
1708
+ includes: ['ANY_WINDOW'],
1709
+ excludes: ['DOMWINDOW'],
1695
1710
  attributes: { 'web-worker': 'web-worker-restriction' },
1696
1711
  },
1697
1712
 
@@ -1779,8 +1794,8 @@
1779
1794
  },
1780
1795
  ANDRO_4_4:
1781
1796
  {
1782
- inherits: 'ANDRO_4_1',
1783
- versions: ['4.4'],
1797
+ inherits: 'ANDRO_4_1',
1798
+ versions: ['4.4'],
1784
1799
  includes:
1785
1800
  {
1786
1801
  BARPROP: true,
@@ -1796,13 +1811,13 @@
1796
1811
  },
1797
1812
  CHROME_PREV:
1798
1813
  {
1799
- description: describeEngine('the previous to current versions of Chrome and Edge'),
1800
- aliasFor: 'CHROME_92',
1814
+ description: describeEngine('the previous to current versions of Chrome and Edge'),
1815
+ aliasFor: 'CHROME_92',
1801
1816
  },
1802
1817
  CHROME:
1803
1818
  {
1804
- description: describeEngine('the current stable versions of Chrome, Edge and Opera'),
1805
- aliasFor: 'CHROME_92',
1819
+ description: describeEngine('the current stable versions of Chrome, Edge and Opera'),
1820
+ aliasFor: 'CHROME_92',
1806
1821
  },
1807
1822
  CHROME_92:
1808
1823
  {
@@ -1843,18 +1858,18 @@
1843
1858
  },
1844
1859
  FF_ESR:
1845
1860
  {
1846
- description: describeEngine('the current version of Firefox ESR'),
1847
- aliasFor: 'FF_90',
1861
+ description: describeEngine('the current version of Firefox ESR'),
1862
+ aliasFor: 'FF_90',
1848
1863
  },
1849
1864
  FF_PREV:
1850
1865
  {
1851
- description: describeEngine('the previous to current version of Firefox'),
1852
- aliasFor: 'FF_90',
1866
+ description: describeEngine('the previous to current version of Firefox'),
1867
+ aliasFor: 'FF_90',
1853
1868
  },
1854
1869
  FF:
1855
1870
  {
1856
- description: describeEngine('the current stable version of Firefox'),
1857
- aliasFor: 'FF_90',
1871
+ description: describeEngine('the current stable version of Firefox'),
1872
+ aliasFor: 'FF_90',
1858
1873
  },
1859
1874
  FF_90:
1860
1875
  {
@@ -1918,9 +1933,9 @@
1918
1933
  },
1919
1934
  IE_10:
1920
1935
  {
1921
- inherits: 'IE_9',
1922
- versions: ['10'],
1923
- includes: { ATOB: true, CONSOLE: true, OBJECT_UNDEFINED: true, UNDEFINED: false },
1936
+ inherits: 'IE_9',
1937
+ versions: ['10'],
1938
+ includes: { ATOB: true, CONSOLE: true, OBJECT_UNDEFINED: true, UNDEFINED: false },
1924
1939
  attributes: { 'char-increment-restriction': null, 'web-worker-restriction': null },
1925
1940
  },
1926
1941
  IE_11:
@@ -1939,11 +1954,12 @@
1939
1954
  },
1940
1955
  IE_11_WIN_10:
1941
1956
  {
1942
- inherits: 'IE_11',
1943
- versions: ['11'],
1944
- compatibilityTag: 'on Windows 10',
1945
- compatibilityShortTag: 'W10',
1946
- includes: { LOCALE_INFINITY: true, LOCALE_NUMERALS: false, LOCALE_NUMERALS_EXT: true },
1957
+ inherits: 'IE_11',
1958
+ versions: ['11'],
1959
+ compatibilityTag: 'on Windows 10',
1960
+ compatibilityShortTag: 'W10',
1961
+ includes:
1962
+ { LOCALE_INFINITY: true, LOCALE_NUMERALS: false, LOCALE_NUMERALS_EXT: true },
1947
1963
  },
1948
1964
  NODE_0_10:
1949
1965
  {
@@ -1982,8 +1998,8 @@
1982
1998
  },
1983
1999
  NODE_5:
1984
2000
  {
1985
- inherits: 'NODE_4',
1986
- versions: [['5',, '9']],
2001
+ inherits: 'NODE_4',
2002
+ versions: [['5',, '9']],
1987
2003
  attributes: { 'char-increment-restriction': null },
1988
2004
  },
1989
2005
  NODE_10:
@@ -2066,9 +2082,9 @@
2066
2082
  },
2067
2083
  SAFARI_7_1:
2068
2084
  {
2069
- inherits: 'SAFARI_7_0',
2070
- versions: [['7.1', '8']],
2071
- includes: { ARRAY_ITERATOR: true, FILL: true },
2085
+ inherits: 'SAFARI_7_0',
2086
+ versions: [['7.1', '8']],
2087
+ includes: { ARRAY_ITERATOR: true, FILL: true },
2072
2088
  attributes: { 'no-console-in-web-worker': undefined, 'safari-bug-21820506': null },
2073
2089
  },
2074
2090
  SAFARI_9:
@@ -2085,8 +2101,8 @@
2085
2101
  },
2086
2102
  SAFARI_10:
2087
2103
  {
2088
- inherits: 'SAFARI_9',
2089
- versions: [['10', '11']],
2104
+ inherits: 'SAFARI_9',
2105
+ versions: [['10', '11']],
2090
2106
  includes:
2091
2107
  {
2092
2108
  ARROW: true,
@@ -2127,8 +2143,8 @@
2127
2143
  },
2128
2144
  SAFARI:
2129
2145
  {
2130
- description: describeEngine('the current stable version of Safari'),
2131
- aliasFor: 'SAFARI_15_4',
2146
+ description: describeEngine('the current stable version of Safari'),
2147
+ aliasFor: 'SAFARI_15_4',
2132
2148
  },
2133
2149
  SAFARI_15_4:
2134
2150
  {
@@ -2186,8 +2202,8 @@
2186
2202
  );
2187
2203
  featureInfos.AUTO =
2188
2204
  {
2189
- description: describeEngine('the current environment'),
2190
- includes: autoIncludes,
2205
+ description: describeEngine('the current environment'),
2206
+ includes: autoIncludes,
2191
2207
  };
2192
2208
  Feature = createFeatureClass(featureInfos, formatEngineDescription);
2193
2209
  ELEMENTARY = Feature.ELEMENTARY;
@@ -2575,7 +2591,7 @@
2575
2591
  Object.defineProperty(DynamicSolution.prototype, "replacement", {
2576
2592
  get: function () {
2577
2593
  var _a;
2578
- var replacement = (_a = this._replacement) !== null && _a !== void 0 ? _a : (this._replacement = calculateReplacement(this._solutions));
2594
+ var replacement = (_a = this._replacement) !== null && _a !== void 0 ? _a : (this._replacement = this._replacement = calculateReplacement(this._solutions));
2579
2595
  return replacement;
2580
2596
  },
2581
2597
  enumerable: false,
@@ -2765,40 +2781,40 @@
2765
2781
  return otherArgName;
2766
2782
  }
2767
2783
 
2768
- function createCharAtFnPosDefinition(expr, index, paddingEntries)
2784
+ function createCharDefinitionInFn(expr, index, paddingEntries)
2769
2785
  {
2770
- function definitionFX(char)
2786
+ function charDefinitionInFn(char)
2771
2787
  {
2772
2788
  var solution =
2773
2789
  this._resolveCharInExpr(char, expr, index, paddingEntries, FH_R_PADDING_SHIFTS);
2774
2790
  return solution;
2775
2791
  }
2776
2792
 
2777
- return definitionFX;
2793
+ return charDefinitionInFn;
2778
2794
  }
2779
2795
 
2780
- function createCharInFBDefinition(offset)
2796
+ function createCharDefinitionInFnBody(offset)
2781
2797
  {
2782
- function definitionFB(char)
2798
+ function charDefinitionInFnBody(char)
2783
2799
  {
2784
2800
  var solution =
2785
2801
  this._resolveCharInNativeFunction(char, offset, getFBPaddingEntries, FB_R_PADDING_SHIFTS);
2786
2802
  return solution;
2787
2803
  }
2788
2804
 
2789
- return definitionFB;
2805
+ return charDefinitionInFnBody;
2790
2806
  }
2791
2807
 
2792
- function createCharInFHDefinition(offset)
2808
+ function createCharDefinitionInFnHead(offset)
2793
2809
  {
2794
- function definitionFH(char)
2810
+ function charDefinitionInFnHead(char)
2795
2811
  {
2796
2812
  var solution =
2797
2813
  this._resolveCharInNativeFunction(char, offset, getFHPaddingEntries, FH_R_PADDING_SHIFTS);
2798
2814
  return solution;
2799
2815
  }
2800
2816
 
2801
- return definitionFH;
2817
+ return charDefinitionInFnHead;
2802
2818
  }
2803
2819
 
2804
2820
  function createLazySolution(source, expr, type)
@@ -3115,14 +3131,6 @@
3115
3131
  return charDefaultDefinition;
3116
3132
  }
3117
3133
 
3118
- function defineCharAtFnPos(expr, index)
3119
- {
3120
- var paddingEntries = getFHPaddingEntries(index);
3121
- var definition = createCharAtFnPosDefinition(expr, index, paddingEntries);
3122
- var entry = define._callWithFeatures(definition, arguments, 2);
3123
- return entry;
3124
- }
3125
-
3126
3134
  function defineCharDefault(opts)
3127
3135
  {
3128
3136
  function checkOpt(optName)
@@ -3140,16 +3148,78 @@
3140
3148
  return entry;
3141
3149
  }
3142
3150
 
3143
- function defineCharInFB(offset)
3151
+ /**
3152
+ * Defines a character at a specified position in the string representation of a specified
3153
+ * native function.
3154
+ * Engine-dependent padding/shifting is used to account for spacing characters inserted before
3155
+ * the function head by specific engines.
3156
+ *
3157
+ * @param {string} expr
3158
+ * An expression that resolves to a native function.
3159
+ *
3160
+ * @param {number} index
3161
+ * The index of the character to be extracted in engines that do not insert any spacing
3162
+ * characters before the function head, e.g. V8.
3163
+ *
3164
+ * @param ...
3165
+ * Required features for the definition.
3166
+ *
3167
+ * @returns
3168
+ * A definition entry for the specified character.
3169
+ */
3170
+ function defineCharInFn(expr, index)
3144
3171
  {
3145
- var definition = createCharInFBDefinition(offset);
3172
+ var paddingEntries = getFHPaddingEntries(index);
3173
+ var definition = createCharDefinitionInFn(expr, index, paddingEntries);
3174
+ var entry = define._callWithFeatures(definition, arguments, 2);
3175
+ return entry;
3176
+ }
3177
+
3178
+ /**
3179
+ * Defines a character at a specified position in the string representation of an arbitrary
3180
+ * native function.
3181
+ * Engine-dependent padding/shifting is used to account for spacing characters inserted before
3182
+ * the function head and body by specific engines.
3183
+ *
3184
+ * @param {string} expr
3185
+ * An expression that resolves to a native function.
3186
+ *
3187
+ * @param {number} index
3188
+ * The index of the character to be extracted in engines that do not insert any spacing
3189
+ * characters before the function head and body, e.g. V8.
3190
+ *
3191
+ * @returns
3192
+ * A definition entry for the specified character.
3193
+ */
3194
+ function defineCharInFnBody(offset)
3195
+ {
3196
+ var definition = createCharDefinitionInFnBody(offset);
3146
3197
  var entry = define(definition);
3147
3198
  return entry;
3148
3199
  }
3149
3200
 
3150
- function defineCharInFH(offset)
3201
+ /**
3202
+ * Defines a character at a specified position in the string representation of an arbitrary
3203
+ * native function.
3204
+ * Engine-dependent padding/shifting is used to account for spacing characters inserted before
3205
+ * the function head by specific engines.
3206
+ *
3207
+ * @param {string} expr
3208
+ * An expression that resolves to a native function.
3209
+ *
3210
+ * @param {number} index
3211
+ * The index of the character to be extracted in engines that do not insert any spacing
3212
+ * characters before the function head, e.g. V8.
3213
+ *
3214
+ * @param ...
3215
+ * Required features for the definition.
3216
+ *
3217
+ * @returns
3218
+ * A definition entry for the specified character.
3219
+ */
3220
+ function defineCharInFnHead(offset)
3151
3221
  {
3152
- var definition = createCharInFHDefinition(offset);
3222
+ var definition = createCharDefinitionInFnHead(offset);
3153
3223
  var entry = define._callWithFeatures(definition, arguments, 1);
3154
3224
  return entry;
3155
3225
  }
@@ -3330,6 +3400,12 @@
3330
3400
  CHARACTERS =
3331
3401
  noProto
3332
3402
  ({
3403
+ // '\0'…'\x07'
3404
+ '\b':
3405
+ [
3406
+ define('Function("return\\"" + ESCAPING_BACKSLASH + "b\\"")()[0]'),
3407
+ defineCharDefault({ escSeq: false }),
3408
+ ],
3333
3409
  '\t':
3334
3410
  [
3335
3411
  define('Function("return\\"" + ESCAPING_BACKSLASH + "true\\"")()[0]'),
@@ -3341,9 +3417,13 @@
3341
3417
  define('(RP_1_WA + Function())[20]', FUNCTION_19_LF),
3342
3418
  define('(RP_0_S + Function())[22]', FUNCTION_22_LF),
3343
3419
  define('(RP_0_S + ANY_FUNCTION)[0]', IE_SRC),
3344
- defineCharInFH(13, NO_V8_SRC),
3420
+ defineCharInFnHead(13, NO_V8_SRC),
3421
+ ],
3422
+ '\v':
3423
+ [
3424
+ define('Function("return\\"" + ESCAPING_BACKSLASH + "v\\"")()[0]'),
3425
+ defineCharDefault({ escSeq: false }),
3345
3426
  ],
3346
-
3347
3427
  '\f':
3348
3428
  [
3349
3429
  define('Function("return\\"" + ESCAPING_BACKSLASH + "false\\"")()[0]'),
@@ -3354,15 +3434,15 @@
3354
3434
  define('Function("return\\"" + ESCAPING_BACKSLASH + "r\\"")()'),
3355
3435
  defineCharDefault({ escSeq: false }),
3356
3436
  ],
3357
-
3437
+ // '\x0e'…'\x1d'
3358
3438
  '\x1e':
3359
3439
  [
3360
3440
  define('(RP_5_A + atob("NaNfalse"))[10]', ATOB),
3361
3441
  ],
3362
-
3442
+ // '\x1f'
3363
3443
  ' ':
3364
3444
  [
3365
- defineCharAtFnPos('ANY_FUNCTION', 8),
3445
+ defineCharInFn('ANY_FUNCTION', 8),
3366
3446
  define('(RP_3_WA + ARRAY_ITERATOR)[10]', ARRAY_ITERATOR),
3367
3447
  define('(RP_0_S + FILTER)[20]', FF_SRC),
3368
3448
  define('(+(RP_0_S + FILTER)[0] + FILTER)[22]', NO_FF_SRC),
@@ -3377,7 +3457,7 @@
3377
3457
  define('(RP_5_A + FLAT)[20]', FLAT, NO_IE_SRC),
3378
3458
  define('(RP_0_S + FLAT)[20]', FLAT, NO_V8_SRC),
3379
3459
  ],
3380
- // '!': ,
3460
+ // '!'
3381
3461
  '"':
3382
3462
  [
3383
3463
  define('"".fontcolor()[12]'),
@@ -3387,7 +3467,7 @@
3387
3467
  define('document.nodeName[0]', ANY_DOCUMENT),
3388
3468
  defineCharDefault(),
3389
3469
  ],
3390
- // '$': ,
3470
+ // '$'
3391
3471
  '%':
3392
3472
  [
3393
3473
  define('escape(FILTER)[20]'),
@@ -3405,16 +3485,16 @@
3405
3485
  define('"".fontcolor("".fontcolor([]))[31]', ESC_HTML_QUOT_ONLY),
3406
3486
  defineCharDefault(),
3407
3487
  ],
3408
- // '\'': ,
3488
+ // '\''
3409
3489
  '(':
3410
3490
  [
3411
- defineCharInFH(9),
3491
+ defineCharInFnHead(9),
3412
3492
  ],
3413
3493
  ')':
3414
3494
  [
3415
- defineCharInFH(10),
3495
+ defineCharInFnHead(10),
3416
3496
  ],
3417
- // '*': ,
3497
+ // '*'
3418
3498
  '+': '(1e100 + [])[2]',
3419
3499
  ',':
3420
3500
  [
@@ -3428,7 +3508,7 @@
3428
3508
  define('"0false".italics()[10]'),
3429
3509
  define('"true".sub()[10]'),
3430
3510
  ],
3431
- // '0'…'9':
3511
+ // '0'…'9'
3432
3512
  ':':
3433
3513
  [
3434
3514
  define('(RP_0_S + RegExp())[3]'),
@@ -3461,15 +3541,15 @@
3461
3541
  define('(RP_0_S + RegExp())[2]'),
3462
3542
  defineCharDefault(),
3463
3543
  ],
3464
- // '@': ,
3544
+ // '@'
3465
3545
  'A':
3466
3546
  [
3467
- defineCharAtFnPos('Array', 9),
3547
+ defineCharInFn('Array', 9),
3468
3548
  define('(RP_3_WA + ARRAY_ITERATOR)[11]', ARRAY_ITERATOR),
3469
3549
  ],
3470
3550
  'B':
3471
3551
  [
3472
- defineCharAtFnPos('Boolean', 9),
3552
+ defineCharInFn('Boolean', 9),
3473
3553
  define('"0".sub()[10]', CAPITAL_HTML),
3474
3554
  ],
3475
3555
  'C':
@@ -3484,7 +3564,7 @@
3484
3564
  ],
3485
3565
  'D':
3486
3566
  [
3487
- // The escaped character may be either "]" or "}".
3567
+ // * The escaped character may be either "]" or "}".
3488
3568
  define('escape((+("1000" + (RP_5_A + FILTER + 0)[40] + 0) + FILTER)[40])[2]'), // *
3489
3569
  define('escape("]")[2]'),
3490
3570
  define('escape("}")[2]'),
@@ -3510,7 +3590,7 @@
3510
3590
  ],
3511
3591
  'E':
3512
3592
  [
3513
- defineCharAtFnPos('RegExp', 12),
3593
+ defineCharInFn('RegExp', 12),
3514
3594
  define('btoa("0NaN")[1]', ATOB),
3515
3595
  define('(RP_5_A + "".link())[10]', CAPITAL_HTML),
3516
3596
  define('(RP_3_WA + Audio)[21]', HTMLAUDIOELEMENT),
@@ -3518,7 +3598,7 @@
3518
3598
  ],
3519
3599
  'F':
3520
3600
  [
3521
- defineCharAtFnPos('Function', 9),
3601
+ defineCharInFn('Function', 9),
3522
3602
  define('"".fontcolor()[1]', CAPITAL_HTML),
3523
3603
  ],
3524
3604
  'G':
@@ -3529,6 +3609,7 @@
3529
3609
  ],
3530
3610
  'H':
3531
3611
  [
3612
+ define('(RP_3_WA + document.createElement(false))[11]', ANY_DOCUMENT),
3532
3613
  define('btoa(true)[1]', ATOB),
3533
3614
  define('"".link()[3]', CAPITAL_HTML),
3534
3615
  define
@@ -3550,6 +3631,7 @@
3550
3631
  ],
3551
3632
  'L':
3552
3633
  [
3634
+ define('(RP_0_S + document.createElement(false))[11]', ANY_DOCUMENT),
3553
3635
  define('btoa(".")[0]', ATOB),
3554
3636
  define('(RP_3_WA + "".fontcolor())[11]', CAPITAL_HTML),
3555
3637
  define('(RP_0_S + Audio)[12]', HTMLAUDIOELEMENT),
@@ -3557,7 +3639,8 @@
3557
3639
  define
3558
3640
  (
3559
3641
  {
3560
- expr: 'Function("return toString.call(location)")()[SLICE_OR_SUBSTR]("-10")[1]',
3642
+ expr:
3643
+ 'Function("return toString.call(location)")()[SLICE_OR_SUBSTR]("-10")[1]',
3561
3644
  optimize: true,
3562
3645
  },
3563
3646
  LOCATION
@@ -3571,7 +3654,8 @@
3571
3654
  define
3572
3655
  (
3573
3656
  {
3574
- expr: '(Function("return toString.call(location)")() + RP_1_WA).at("-10")',
3657
+ expr:
3658
+ '(Function("return toString.call(location)")() + RP_1_WA).at("-10")',
3575
3659
  optimize: true,
3576
3660
  },
3577
3661
  AT,
@@ -3594,6 +3678,7 @@
3594
3678
  ],
3595
3679
  'M':
3596
3680
  [
3681
+ define('(RP_0_S + document.createElement(false))[10]', ANY_DOCUMENT),
3597
3682
  define('btoa(0)[0]', ATOB),
3598
3683
  define('"".small()[2]', CAPITAL_HTML),
3599
3684
  define('(RP_0_S + self)[10]', DOMWINDOW),
@@ -3604,7 +3689,7 @@
3604
3689
  'N': '"NaN"[0]',
3605
3690
  'O':
3606
3691
  [
3607
- defineCharAtFnPos('Object', 9),
3692
+ defineCharInFn('Object', 9),
3608
3693
  define('(RP_3_WA + PLAIN_OBJECT)[11]'),
3609
3694
  define('btoa(NaN)[3]', ATOB),
3610
3695
  define('"".fontcolor()[2]', CAPITAL_HTML),
@@ -3628,14 +3713,14 @@
3628
3713
  ],
3629
3714
  'R':
3630
3715
  [
3631
- defineCharAtFnPos('RegExp', 9),
3716
+ defineCharInFn('RegExp', 9),
3632
3717
  define('btoa("0true")[2]', ATOB),
3633
3718
  define('"".fontcolor()[10]', CAPITAL_HTML),
3634
3719
  define('(RP_3_WA + REGEXP_STRING_ITERATOR)[11]', REGEXP_STRING_ITERATOR),
3635
3720
  ],
3636
3721
  'S':
3637
3722
  [
3638
- defineCharAtFnPos('String', 9),
3723
+ defineCharInFn('String', 9),
3639
3724
  define('"".sub()[1]', CAPITAL_HTML),
3640
3725
  ],
3641
3726
  'T':
@@ -3717,7 +3802,7 @@
3717
3802
  ],
3718
3803
  '[':
3719
3804
  [
3720
- defineCharInFB(14),
3805
+ defineCharInFnBody(14),
3721
3806
  define('(RP_0_S + ARRAY_ITERATOR)[0]', ARRAY_ITERATOR),
3722
3807
  ],
3723
3808
  '\\':
@@ -3727,24 +3812,24 @@
3727
3812
  ],
3728
3813
  ']':
3729
3814
  [
3730
- defineCharInFB(26),
3815
+ defineCharInFnBody(26),
3731
3816
  define('(RP_0_S + ARRAY_ITERATOR)[22]', NO_OLD_SAFARI_ARRAY_ITERATOR),
3732
3817
  ],
3733
3818
  '^':
3734
3819
  [
3735
3820
  define('atob("undefined0")[2]', ATOB),
3736
3821
  ],
3737
- // '_': ,
3738
- // '`': ,
3822
+ // '_'
3823
+ // '`'
3739
3824
  'a': '"false"[1]',
3740
3825
  'b':
3741
3826
  [
3742
- defineCharAtFnPos('Number', 12),
3827
+ defineCharInFn('Number', 12),
3743
3828
  define('(RP_0_S + ARRAY_ITERATOR)[2]', ARRAY_ITERATOR),
3744
3829
  ],
3745
3830
  'c':
3746
3831
  [
3747
- defineCharAtFnPos('ANY_FUNCTION', 3),
3832
+ defineCharInFn('ANY_FUNCTION', 3),
3748
3833
  define('(RP_5_A + ARRAY_ITERATOR)[10]', ARRAY_ITERATOR),
3749
3834
  ],
3750
3835
  'd': '"undefined"[2]',
@@ -3752,7 +3837,7 @@
3752
3837
  'f': '"false"[0]',
3753
3838
  'g':
3754
3839
  [
3755
- defineCharAtFnPos('String', 14),
3840
+ defineCharInFn('String', 14),
3756
3841
  ],
3757
3842
  'h':
3758
3843
  [
@@ -3777,13 +3862,13 @@
3777
3862
  'l': '"false"[2]',
3778
3863
  'm':
3779
3864
  [
3780
- defineCharAtFnPos('Number', 11),
3865
+ defineCharInFn('Number', 11),
3781
3866
  define('(RP_6_S + Function())[20]'),
3782
3867
  ],
3783
3868
  'n': '"undefined"[1]',
3784
3869
  'o':
3785
3870
  [
3786
- defineCharAtFnPos('ANY_FUNCTION', 6),
3871
+ defineCharInFn('ANY_FUNCTION', 6),
3787
3872
  define('(RP_0_S + ARRAY_ITERATOR)[1]', ARRAY_ITERATOR),
3788
3873
  ],
3789
3874
  'p':
@@ -3805,7 +3890,7 @@
3805
3890
  'u': '"undefined"[0]',
3806
3891
  'v':
3807
3892
  [
3808
- defineCharInFB(19),
3893
+ defineCharInFnBody(19),
3809
3894
  ],
3810
3895
  'w':
3811
3896
  [
@@ -3829,14 +3914,15 @@
3829
3914
  ],
3830
3915
  '{':
3831
3916
  [
3832
- defineCharInFH(12),
3917
+ defineCharInFnHead(12),
3833
3918
  ],
3834
- // '|': ,
3919
+ // '|'
3835
3920
  '}':
3836
3921
  [
3837
- defineCharInFB(28),
3922
+ defineCharInFnBody(28),
3838
3923
  ],
3839
- // '~': ,
3924
+ // '~'
3925
+ // '\x7f'
3840
3926
 
3841
3927
  '\x8a':
3842
3928
  [
@@ -4080,8 +4166,8 @@
4080
4166
  define
4081
4167
  (
4082
4168
  {
4083
- expr: '(+(RP_0_S + FILTER)[0] + RegExp(FILTER))[23]',
4084
- solutionType: SolutionType.STRING,
4169
+ expr: '(+(RP_0_S + FILTER)[0] + RegExp(FILTER))[23]',
4170
+ solutionType: SolutionType.STRING,
4085
4171
  },
4086
4172
  ESC_REGEXP_LF,
4087
4173
  NO_V8_SRC
@@ -4096,8 +4182,8 @@
4096
4182
  define
4097
4183
  (
4098
4184
  {
4099
- expr: '(RP_1_WA + [+(RP_0_S + AT)[0]] + RegExp(AT))[20]',
4100
- solutionType: SolutionType.STRING,
4185
+ expr: '(RP_1_WA + [+(RP_0_S + AT)[0]] + RegExp(AT))[20]',
4186
+ solutionType: SolutionType.STRING,
4101
4187
  },
4102
4188
  AT,
4103
4189
  ESC_REGEXP_LF,
@@ -4120,8 +4206,8 @@
4120
4206
  define
4121
4207
  (
4122
4208
  {
4123
- expr: '(+(RP_0_S + FILL)[0] + RegExp(FILL))[21]',
4124
- solutionType: SolutionType.STRING,
4209
+ expr: '(+(RP_0_S + FILL)[0] + RegExp(FILL))[21]',
4210
+ solutionType: SolutionType.STRING,
4125
4211
  },
4126
4212
  ESC_REGEXP_LF,
4127
4213
  FILL,
@@ -4130,8 +4216,8 @@
4130
4216
  define
4131
4217
  (
4132
4218
  {
4133
- expr: '(+(RP_0_S + FLAT)[0] + RegExp(FLAT))[21]',
4134
- solutionType: SolutionType.STRING,
4219
+ expr: '(+(RP_0_S + FLAT)[0] + RegExp(FLAT))[21]',
4220
+ solutionType: SolutionType.STRING,
4135
4221
  },
4136
4222
  ESC_REGEXP_LF,
4137
4223
  FLAT,
@@ -4187,9 +4273,9 @@
4187
4273
  define
4188
4274
  (
4189
4275
  {
4190
- expr: '"toLocaleString"',
4191
- optimize: true,
4192
- solutionType: SolutionType.COMBINED_STRING,
4276
+ expr: '"toLocaleString"',
4277
+ optimize: true,
4278
+ solutionType: SolutionType.COMBINED_STRING,
4193
4279
  }
4194
4280
  ),
4195
4281
  ],
@@ -4198,22 +4284,16 @@
4198
4284
  define
4199
4285
  (
4200
4286
  {
4201
- expr: '"toString"',
4202
- optimize: { toStringOpt: false },
4203
- solutionType: SolutionType.COMBINED_STRING,
4287
+ expr: '"toString"',
4288
+ optimize: { toStringOpt: false },
4289
+ solutionType: SolutionType.COMBINED_STRING,
4204
4290
  }
4205
4291
  ),
4206
4292
  ],
4207
4293
  TO_UPPER_CASE:
4208
4294
  [
4209
4295
  define
4210
- (
4211
- {
4212
- expr: '"toUpperCase"',
4213
- optimize: true,
4214
- solutionType: SolutionType.COMBINED_STRING,
4215
- }
4216
- ),
4296
+ ({ expr: '"toUpperCase"', optimize: true, solutionType: SolutionType.COMBINED_STRING }),
4217
4297
  ],
4218
4298
 
4219
4299
  // Function body extra padding blocks: prepended to a function to align the function's body
@@ -4264,31 +4344,31 @@
4264
4344
  define
4265
4345
  (
4266
4346
  {
4267
- expr: '+("10" + [(RP_4_A + FILTER)[40]] + "00000")',
4268
- solutionType: SolutionType.WEAK_ALGEBRAIC,
4347
+ expr: '+("10" + [(RP_4_A + FILTER)[40]] + "00000")',
4348
+ solutionType: SolutionType.WEAK_ALGEBRAIC,
4269
4349
  }
4270
4350
  ),
4271
4351
  define
4272
4352
  (
4273
4353
  {
4274
- expr: '+("10" + [(RP_0_S + AT)[32]] + "00000")',
4275
- solutionType: SolutionType.WEAK_ALGEBRAIC,
4354
+ expr: '+("10" + [(RP_0_S + AT)[32]] + "00000")',
4355
+ solutionType: SolutionType.WEAK_ALGEBRAIC,
4276
4356
  },
4277
4357
  AT
4278
4358
  ),
4279
4359
  define
4280
4360
  (
4281
4361
  {
4282
- expr: '+("10" + [(RP_6_S + FILL)[40]] + "00000")',
4283
- solutionType: SolutionType.WEAK_ALGEBRAIC,
4362
+ expr: '+("10" + [(RP_6_S + FILL)[40]] + "00000")',
4363
+ solutionType: SolutionType.WEAK_ALGEBRAIC,
4284
4364
  },
4285
4365
  FILL
4286
4366
  ),
4287
4367
  define
4288
4368
  (
4289
4369
  {
4290
- expr: '+("10" + [(RP_6_S + FLAT)[40]] + "00000")',
4291
- solutionType: SolutionType.WEAK_ALGEBRAIC,
4370
+ expr: '+("10" + [(RP_6_S + FLAT)[40]] + "00000")',
4371
+ solutionType: SolutionType.WEAK_ALGEBRAIC,
4292
4372
  },
4293
4373
  FLAT
4294
4374
  ),
@@ -4298,31 +4378,31 @@
4298
4378
  define
4299
4379
  (
4300
4380
  {
4301
- expr: '+("1000" + (RP_5_A + FILTER + 0)[40] + "000")',
4302
- solutionType: SolutionType.WEAK_ALGEBRAIC,
4381
+ expr: '+("1000" + (RP_5_A + FILTER + 0)[40] + "000")',
4382
+ solutionType: SolutionType.WEAK_ALGEBRAIC,
4303
4383
  }
4304
4384
  ),
4305
4385
  define
4306
4386
  (
4307
4387
  {
4308
- expr: '+("1000" + (AT + 0)[31] + "000")',
4309
- solutionType: SolutionType.WEAK_ALGEBRAIC,
4388
+ expr: '+("1000" + (AT + 0)[31] + "000")',
4389
+ solutionType: SolutionType.WEAK_ALGEBRAIC,
4310
4390
  },
4311
4391
  AT
4312
4392
  ),
4313
4393
  define
4314
4394
  (
4315
4395
  {
4316
- expr: '+("1000" + (FILL + 0)[33] + "000")',
4317
- solutionType: SolutionType.WEAK_ALGEBRAIC,
4396
+ expr: '+("1000" + (FILL + 0)[33] + "000")',
4397
+ solutionType: SolutionType.WEAK_ALGEBRAIC,
4318
4398
  },
4319
4399
  FILL
4320
4400
  ),
4321
4401
  define
4322
4402
  (
4323
4403
  {
4324
- expr: '+("1000" + (FLAT + 0)[33] + "000")',
4325
- solutionType: SolutionType.WEAK_ALGEBRAIC,
4404
+ expr: '+("1000" + (FLAT + 0)[33] + "000")',
4405
+ solutionType: SolutionType.WEAK_ALGEBRAIC,
4326
4406
  },
4327
4407
  FLAT
4328
4408
  ),
@@ -4332,8 +4412,8 @@
4332
4412
  define
4333
4413
  (
4334
4414
  {
4335
- expr: '[true][+(RP_0_S + ANY_FUNCTION)[0]]',
4336
- solutionType: SolutionType.UNDEFINED,
4415
+ expr: '[true][+(RP_0_S + ANY_FUNCTION)[0]]',
4416
+ solutionType: SolutionType.UNDEFINED,
4337
4417
  },
4338
4418
  NO_FF_SRC
4339
4419
  ),
@@ -4368,15 +4448,15 @@
4368
4448
  define
4369
4449
  (
4370
4450
  {
4371
- expr: '+(1 + [+(RP_0_S + ANY_FUNCTION)[0]])',
4372
- solutionType: SolutionType.WEAK_ALGEBRAIC,
4451
+ expr: '+(1 + [+(RP_0_S + ANY_FUNCTION)[0]])',
4452
+ solutionType: SolutionType.WEAK_ALGEBRAIC,
4373
4453
  }
4374
4454
  ),
4375
4455
  define
4376
4456
  (
4377
4457
  {
4378
- expr: '+(++(RP_0_S + ANY_FUNCTION)[0] + [0])',
4379
- solutionType: SolutionType.WEAK_ALGEBRAIC,
4458
+ expr: '+(++(RP_0_S + ANY_FUNCTION)[0] + [0])',
4459
+ solutionType: SolutionType.WEAK_ALGEBRAIC,
4380
4460
  },
4381
4461
  INCR_CHAR
4382
4462
  ),
@@ -4398,8 +4478,8 @@
4398
4478
  define
4399
4479
  (
4400
4480
  {
4401
- expr: '!![[]][+(RP_0_S + ANY_FUNCTION)[0]]',
4402
- solutionType: SolutionType.ALGEBRAIC,
4481
+ expr: '!![[]][+(RP_0_S + ANY_FUNCTION)[0]]',
4482
+ solutionType: SolutionType.ALGEBRAIC,
4403
4483
  }
4404
4484
  ),
4405
4485
  define
@@ -6067,11 +6147,11 @@
6067
6147
  throwSyntaxError(this, 'Undefined regular padding block with length ' + length);
6068
6148
  },
6069
6149
 
6070
- _replaceCharByAtob: replaceCharByAtob,
6150
+ _replaceCharByAtob: replaceCharByAtob,
6071
6151
 
6072
6152
  _replaceCharByCharCode: replaceCharByCharCode,
6073
6153
 
6074
- _replaceCharByEscSeq: replaceCharByEscSeq,
6154
+ _replaceCharByEscSeq: replaceCharByEscSeq,
6075
6155
 
6076
6156
  _replaceCharByUnescape: replaceCharByUnescape,
6077
6157
 
@@ -6177,9 +6257,9 @@
6177
6257
  return solution;
6178
6258
  },
6179
6259
 
6180
- constantDefinitions: CONSTANTS,
6260
+ constantDefinitions: CONSTANTS,
6181
6261
 
6182
- findDefinition: findDefinition,
6262
+ findDefinition: findDefinition,
6183
6263
 
6184
6264
  hasFeatures:
6185
6265
  function (mask)
@@ -6198,7 +6278,7 @@
6198
6278
  // Internet Explorer on Windows Phone occasionally failed the extreme decoding test in a
6199
6279
  // non-reproducible manner, although the issue seems to be related to the output size rather
6200
6280
  // than the grouping threshold setting.
6201
- maxGroupThreshold: 1800,
6281
+ maxGroupThreshold: 1800,
6202
6282
 
6203
6283
  replaceExpr:
6204
6284
  function (expr, optimize)
@@ -6277,7 +6357,6 @@
6277
6357
  * @returns {string|undefined}
6278
6358
  * The replacement string or `undefined`.
6279
6359
  */
6280
-
6281
6360
  replaceString:
6282
6361
  function (str, options)
6283
6362
  {
@@ -7716,7 +7795,6 @@
7716
7795
  * @returns {string|undefined}
7717
7796
  * The replacement string or `undefined`.
7718
7797
  */
7719
-
7720
7798
  replaceStringArray:
7721
7799
  function (array, insertions, substitutions, forceString, maxLength)
7722
7800
  {