@hebcal/rest-api 4.5.1 → 4.5.3

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/dist/bundle.js CHANGED
@@ -1,11 +1,11 @@
1
- /*! @hebcal/rest-api v4.5.1 */
1
+ /*! @hebcal/rest-api v4.5.3 */
2
2
  var hebcal__rest_api = (function (exports, core, leyning, triennial) {
3
3
  'use strict';
4
4
 
5
5
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
6
6
 
7
7
  var check = function (it) {
8
- return it && it.Math == Math && it;
8
+ return it && it.Math === Math && it;
9
9
  };
10
10
 
11
11
  // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
@@ -34,7 +34,7 @@ var fails$g = fails$h;
34
34
  // Detect IE8's incomplete defineProperty implementation
35
35
  var descriptors = !fails$g(function () {
36
36
  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
37
- return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;
37
+ return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;
38
38
  });
39
39
 
40
40
  var fails$f = fails$h;
@@ -113,7 +113,7 @@ var indexedObject = fails$e(function () {
113
113
  // eslint-disable-next-line no-prototype-builtins -- safe
114
114
  return !$Object$4('z').propertyIsEnumerable(0);
115
115
  }) ? function (it) {
116
- return classof$6(it) == 'String' ? split$3(it, '') : $Object$4(it);
116
+ return classof$6(it) === 'String' ? split$3(it, '') : $Object$4(it);
117
117
  } : $Object$4;
118
118
 
119
119
  // we can't use just `it == null` since of `document.all` special case
@@ -221,7 +221,6 @@ if (!version && userAgent) {
221
221
  var engineV8Version = version;
222
222
 
223
223
  /* eslint-disable es/no-symbol -- required for testing */
224
-
225
224
  var V8_VERSION = engineV8Version;
226
225
  var fails$d = fails$h;
227
226
  var global$e = global$h;
@@ -230,7 +229,7 @@ var $String$5 = global$e.String;
230
229
 
231
230
  // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
232
231
  var symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails$d(function () {
233
- var symbol = Symbol();
232
+ var symbol = Symbol('symbol detection');
234
233
  // Chrome 38 Symbol has incorrect toString conversion
235
234
  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
236
235
  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,
@@ -241,7 +240,6 @@ var symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails$d(func
241
240
  });
242
241
 
243
242
  /* eslint-disable es/no-symbol -- required for testing */
244
-
245
243
  var NATIVE_SYMBOL$1 = symbolConstructorDetection;
246
244
 
247
245
  var useSymbolAsUid = NATIVE_SYMBOL$1
@@ -339,10 +337,10 @@ var store$2 = sharedStore;
339
337
  (shared$4.exports = function (key, value) {
340
338
  return store$2[key] || (store$2[key] = value !== undefined ? value : {});
341
339
  })('versions', []).push({
342
- version: '3.30.2',
340
+ version: '3.32.2',
343
341
  mode: 'global',
344
342
  copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',
345
- license: 'https://github.com/zloirock/core-js/blob/v3.30.2/LICENSE',
343
+ license: 'https://github.com/zloirock/core-js/blob/v3.32.2/LICENSE',
346
344
  source: 'https://github.com/zloirock/core-js'
347
345
  });
348
346
 
@@ -455,7 +453,7 @@ var ie8DomDefine = !DESCRIPTORS$c && !fails$c(function () {
455
453
  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
456
454
  return Object.defineProperty(createElement('div'), 'a', {
457
455
  get: function () { return 7; }
458
- }).a != 7;
456
+ }).a !== 7;
459
457
  });
460
458
 
461
459
  var DESCRIPTORS$b = descriptors;
@@ -493,7 +491,7 @@ var v8PrototypeDefineBug = DESCRIPTORS$a && fails$b(function () {
493
491
  return Object.defineProperty(function () { /* empty */ }, 'prototype', {
494
492
  value: 42,
495
493
  writable: false
496
- }).prototype != 42;
494
+ }).prototype !== 42;
497
495
  });
498
496
 
499
497
  var isObject$4 = isObject$8;
@@ -838,10 +836,10 @@ var createMethod$1 = function (IS_INCLUDES) {
838
836
  var value;
839
837
  // Array#includes uses SameValueZero equality algorithm
840
838
  // eslint-disable-next-line no-self-compare -- NaN check
841
- if (IS_INCLUDES && el != el) while (length > index) {
839
+ if (IS_INCLUDES && el !== el) while (length > index) {
842
840
  value = O[index++];
843
841
  // eslint-disable-next-line no-self-compare -- NaN check
844
- if (value != value) return true;
842
+ if (value !== value) return true;
845
843
  // Array#indexOf ignores holes, Array#includes - not
846
844
  } else for (;length > index; index++) {
847
845
  if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
@@ -946,8 +944,8 @@ var replacement = /#|\.prototype\./;
946
944
 
947
945
  var isForced$1 = function (feature, detection) {
948
946
  var value = data[normalize(feature)];
949
- return value == POLYFILL ? true
950
- : value == NATIVE ? false
947
+ return value === POLYFILL ? true
948
+ : value === NATIVE ? false
951
949
  : isCallable$7(detection) ? fails$9(detection)
952
950
  : !!detection;
953
951
  };
@@ -1035,7 +1033,7 @@ var TO_STRING_TAG$2 = wellKnownSymbol$b('toStringTag');
1035
1033
  var $Object$1 = Object;
1036
1034
 
1037
1035
  // ES3 wrong here
1038
- var CORRECT_ARGUMENTS = classofRaw$1(function () { return arguments; }()) == 'Arguments';
1036
+ var CORRECT_ARGUMENTS = classofRaw$1(function () { return arguments; }()) === 'Arguments';
1039
1037
 
1040
1038
  // fallback for IE11 Script Access Denied error
1041
1039
  var tryGet = function (it, key) {
@@ -1053,7 +1051,7 @@ var classof$5 = TO_STRING_TAG_SUPPORT ? classofRaw$1 : function (it) {
1053
1051
  // builtinTag case
1054
1052
  : CORRECT_ARGUMENTS ? classofRaw$1(O)
1055
1053
  // ES3 arguments fallback
1056
- : (result = classofRaw$1(O)) == 'Object' && isCallable$6(O.callee) ? 'Arguments' : result;
1054
+ : (result = classofRaw$1(O)) === 'Object' && isCallable$6(O.callee) ? 'Arguments' : result;
1057
1055
  };
1058
1056
 
1059
1057
  var classof$4 = classof$5;
@@ -1092,7 +1090,7 @@ var $RegExp$2 = global$6.RegExp;
1092
1090
  var UNSUPPORTED_Y$1 = fails$8(function () {
1093
1091
  var re = $RegExp$2('a', 'y');
1094
1092
  re.lastIndex = 2;
1095
- return re.exec('abcd') != null;
1093
+ return re.exec('abcd') !== null;
1096
1094
  });
1097
1095
 
1098
1096
  // UC Browser bug
@@ -1105,7 +1103,7 @@ var BROKEN_CARET = UNSUPPORTED_Y$1 || fails$8(function () {
1105
1103
  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687
1106
1104
  var re = $RegExp$2('^r', 'gy');
1107
1105
  re.lastIndex = 2;
1108
- return re.exec('str') != null;
1106
+ return re.exec('str') !== null;
1109
1107
  });
1110
1108
 
1111
1109
  var regexpStickyHelpers = {
@@ -1152,7 +1150,6 @@ var getBuiltIn$1 = getBuiltIn$4;
1152
1150
  var html$1 = getBuiltIn$1('document', 'documentElement');
1153
1151
 
1154
1152
  /* global ActiveXObject -- old IE, WSH */
1155
-
1156
1153
  var anObject$6 = anObject$b;
1157
1154
  var definePropertiesModule = objectDefineProperties;
1158
1155
  var enumBugKeys = enumBugKeys$3;
@@ -1438,7 +1435,7 @@ var ArrayPrototype$1 = Array.prototype;
1438
1435
 
1439
1436
  // Array.prototype[@@unscopables]
1440
1437
  // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
1441
- if (ArrayPrototype$1[UNSCOPABLES] == undefined) {
1438
+ if (ArrayPrototype$1[UNSCOPABLES] === undefined) {
1442
1439
  defineProperty$4(ArrayPrototype$1, UNSCOPABLES, {
1443
1440
  configurable: true,
1444
1441
  value: create$2(null)
@@ -1579,7 +1576,6 @@ var aPossiblePrototype$1 = function (argument) {
1579
1576
  };
1580
1577
 
1581
1578
  /* eslint-disable no-proto -- safe */
1582
-
1583
1579
  var uncurryThisAccessor = functionUncurryThisAccessor;
1584
1580
  var anObject$5 = anObject$b;
1585
1581
  var aPossiblePrototype = aPossiblePrototype$1;
@@ -1636,12 +1632,15 @@ var iteratorDefine = function (Iterable, NAME, IteratorConstructor, next, DEFAUL
1636
1632
 
1637
1633
  var getIterationMethod = function (KIND) {
1638
1634
  if (KIND === DEFAULT && defaultIterator) return defaultIterator;
1639
- if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];
1635
+ if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND];
1636
+
1640
1637
  switch (KIND) {
1641
1638
  case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };
1642
1639
  case VALUES: return function values() { return new IteratorConstructor(this, KIND); };
1643
1640
  case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };
1644
- } return function () { return new IteratorConstructor(this); };
1641
+ }
1642
+
1643
+ return function () { return new IteratorConstructor(this); };
1645
1644
  };
1646
1645
 
1647
1646
  var TO_STRING_TAG = NAME + ' Iterator';
@@ -1651,7 +1650,7 @@ var iteratorDefine = function (Iterable, NAME, IteratorConstructor, next, DEFAUL
1651
1650
  || IterablePrototype['@@iterator']
1652
1651
  || DEFAULT && IterablePrototype[DEFAULT];
1653
1652
  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
1654
- var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;
1653
+ var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;
1655
1654
  var CurrentIteratorPrototype, methods, KEY;
1656
1655
 
1657
1656
  // fix native
@@ -1671,7 +1670,7 @@ var iteratorDefine = function (Iterable, NAME, IteratorConstructor, next, DEFAUL
1671
1670
  }
1672
1671
 
1673
1672
  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF
1674
- if (PROPER_FUNCTION_NAME$1 && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
1673
+ if (PROPER_FUNCTION_NAME$1 && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) {
1675
1674
  if (CONFIGURABLE_FUNCTION_NAME) {
1676
1675
  createNonEnumerableProperty$1(IterablePrototype, 'name', VALUES);
1677
1676
  } else {
@@ -1750,9 +1749,10 @@ var es_array_iterator = defineIterator$1(Array, 'Array', function (iterated, kin
1750
1749
  state.target = undefined;
1751
1750
  return createIterResultObject$1(undefined, true);
1752
1751
  }
1753
- if (kind == 'keys') return createIterResultObject$1(index, false);
1754
- if (kind == 'values') return createIterResultObject$1(target[index], false);
1755
- return createIterResultObject$1([index, target[index]], false);
1752
+ switch (kind) {
1753
+ case 'keys': return createIterResultObject$1(index, false);
1754
+ case 'values': return createIterResultObject$1(target[index], false);
1755
+ } return createIterResultObject$1([index, target[index]], false);
1756
1756
  }, 'values');
1757
1757
 
1758
1758
  // argumentsList[@@iterator] is %ArrayProto_values%
@@ -1887,20 +1887,25 @@ var ITERATOR$3 = wellKnownSymbol$5('iterator');
1887
1887
  var urlConstructorDetection = !fails$3(function () {
1888
1888
  // eslint-disable-next-line unicorn/relative-url-style -- required for testing
1889
1889
  var url = new URL('b?a=1&b=2&c=3', 'http://a');
1890
- var searchParams = url.searchParams;
1890
+ var params = url.searchParams;
1891
+ var params2 = new URLSearchParams('a=1&a=2&b=3');
1891
1892
  var result = '';
1892
1893
  url.pathname = 'c%20d';
1893
- searchParams.forEach(function (value, key) {
1894
- searchParams['delete']('b');
1894
+ params.forEach(function (value, key) {
1895
+ params['delete']('b');
1895
1896
  result += key + value;
1896
1897
  });
1897
- return (IS_PURE && !url.toJSON)
1898
- || (!searchParams.size && (IS_PURE || !DESCRIPTORS$3))
1899
- || !searchParams.sort
1898
+ params2['delete']('a', 2);
1899
+ // `undefined` case is a Chromium 117 bug
1900
+ // https://bugs.chromium.org/p/v8/issues/detail?id=14222
1901
+ params2['delete']('b', undefined);
1902
+ return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))
1903
+ || (!params.size && (IS_PURE || !DESCRIPTORS$3))
1904
+ || !params.sort
1900
1905
  || url.href !== 'http://a/c%20d?a=1&c=3'
1901
- || searchParams.get('c') !== '3'
1906
+ || params.get('c') !== '3'
1902
1907
  || String(new URLSearchParams('?a=1')) !== 'a=1'
1903
- || !searchParams[ITERATOR$3]
1908
+ || !params[ITERATOR$3]
1904
1909
  // throws in Edge
1905
1910
  || new URL('https://a@b').username !== 'a'
1906
1911
  || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'
@@ -1989,11 +1994,11 @@ var objectAssign = !$assign || fails$2(function () {
1989
1994
  var A = {};
1990
1995
  var B = {};
1991
1996
  // eslint-disable-next-line es/no-symbol -- safe
1992
- var symbol = Symbol();
1997
+ var symbol = Symbol('assign detection');
1993
1998
  var alphabet = 'abcdefghijklmnopqrst';
1994
1999
  A[symbol] = 7;
1995
2000
  alphabet.split('').forEach(function (chr) { B[chr] = chr; });
1996
- return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;
2001
+ return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet;
1997
2002
  }) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`
1998
2003
  var T = toObject$1(target);
1999
2004
  var argumentsLength = arguments.length;
@@ -2209,7 +2214,8 @@ var arraySliceSimple = function (O, start, end) {
2209
2214
  var k = toAbsoluteIndex(start, length);
2210
2215
  var fin = toAbsoluteIndex(end === undefined ? length : end, length);
2211
2216
  var result = $Array(max(fin - k, 0));
2212
- for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);
2217
+ var n = 0;
2218
+ for (; k < fin; k++, n++) createProperty(result, n, O[k]);
2213
2219
  result.length = n;
2214
2220
  return result;
2215
2221
  };
@@ -2258,7 +2264,7 @@ var ucs2decode = function (string) {
2258
2264
  if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
2259
2265
  // It's a high surrogate, and there is a next character.
2260
2266
  var extra = charCodeAt(string, counter++);
2261
- if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.
2267
+ if ((extra & 0xFC00) === 0xDC00) { // Low surrogate.
2262
2268
  push$2(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
2263
2269
  } else {
2264
2270
  // It's an unmatched surrogate; only append this code unit, in case the
@@ -2357,12 +2363,12 @@ var encode = function (input) {
2357
2363
  if (currentValue < n && ++delta > maxInt) {
2358
2364
  throw $RangeError(OVERFLOW_ERROR);
2359
2365
  }
2360
- if (currentValue == n) {
2366
+ if (currentValue === n) {
2361
2367
  // Represent delta as a generalized variable-length integer.
2362
2368
  var q = delta;
2363
2369
  var k = base;
2364
2370
  while (true) {
2365
- var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
2371
+ var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
2366
2372
  if (q < t) break;
2367
2373
  var qMinusT = q - t;
2368
2374
  var baseMinusT = base - t;
@@ -2372,7 +2378,7 @@ var encode = function (input) {
2372
2378
  }
2373
2379
 
2374
2380
  push$2(output, fromCharCode(digitToBasic(q)));
2375
- bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
2381
+ bias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);
2376
2382
  delta = 0;
2377
2383
  handledCPCount++;
2378
2384
  }
@@ -2660,7 +2666,7 @@ var URLSearchParamsConstructor = function URLSearchParams(/* init */) {
2660
2666
  anInstance$1(this, URLSearchParamsPrototype);
2661
2667
  var init = arguments.length > 0 ? arguments[0] : undefined;
2662
2668
  var state = setInternalState$1(this, new URLSearchParamsState(init));
2663
- if (!DESCRIPTORS$1) this.length = state.entries.length;
2669
+ if (!DESCRIPTORS$1) this.size = state.entries.length;
2664
2670
  };
2665
2671
 
2666
2672
  var URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;
@@ -2669,32 +2675,37 @@ defineBuiltIns(URLSearchParamsPrototype, {
2669
2675
  // `URLSearchParams.prototype.append` method
2670
2676
  // https://url.spec.whatwg.org/#dom-urlsearchparams-append
2671
2677
  append: function append(name, value) {
2672
- validateArgumentsLength$1(arguments.length, 2);
2673
2678
  var state = getInternalParamsState(this);
2679
+ validateArgumentsLength$1(arguments.length, 2);
2674
2680
  push$1(state.entries, { key: $toString$2(name), value: $toString$2(value) });
2675
2681
  if (!DESCRIPTORS$1) this.length++;
2676
2682
  state.updateURL();
2677
2683
  },
2678
2684
  // `URLSearchParams.prototype.delete` method
2679
2685
  // https://url.spec.whatwg.org/#dom-urlsearchparams-delete
2680
- 'delete': function (name) {
2681
- validateArgumentsLength$1(arguments.length, 1);
2686
+ 'delete': function (name /* , value */) {
2682
2687
  var state = getInternalParamsState(this);
2688
+ var length = validateArgumentsLength$1(arguments.length, 1);
2683
2689
  var entries = state.entries;
2684
2690
  var key = $toString$2(name);
2691
+ var $value = length < 2 ? undefined : arguments[1];
2692
+ var value = $value === undefined ? $value : $toString$2($value);
2685
2693
  var index = 0;
2686
2694
  while (index < entries.length) {
2687
- if (entries[index].key === key) splice(entries, index, 1);
2688
- else index++;
2695
+ var entry = entries[index];
2696
+ if (entry.key === key && (value === undefined || entry.value === value)) {
2697
+ splice(entries, index, 1);
2698
+ if (value !== undefined) break;
2699
+ } else index++;
2689
2700
  }
2690
- if (!DESCRIPTORS$1) this.length = entries.length;
2701
+ if (!DESCRIPTORS$1) this.size = entries.length;
2691
2702
  state.updateURL();
2692
2703
  },
2693
2704
  // `URLSearchParams.prototype.get` method
2694
2705
  // https://url.spec.whatwg.org/#dom-urlsearchparams-get
2695
2706
  get: function get(name) {
2696
- validateArgumentsLength$1(arguments.length, 1);
2697
2707
  var entries = getInternalParamsState(this).entries;
2708
+ validateArgumentsLength$1(arguments.length, 1);
2698
2709
  var key = $toString$2(name);
2699
2710
  var index = 0;
2700
2711
  for (; index < entries.length; index++) {
@@ -2705,8 +2716,8 @@ defineBuiltIns(URLSearchParamsPrototype, {
2705
2716
  // `URLSearchParams.prototype.getAll` method
2706
2717
  // https://url.spec.whatwg.org/#dom-urlsearchparams-getall
2707
2718
  getAll: function getAll(name) {
2708
- validateArgumentsLength$1(arguments.length, 1);
2709
2719
  var entries = getInternalParamsState(this).entries;
2720
+ validateArgumentsLength$1(arguments.length, 1);
2710
2721
  var key = $toString$2(name);
2711
2722
  var result = [];
2712
2723
  var index = 0;
@@ -2717,21 +2728,24 @@ defineBuiltIns(URLSearchParamsPrototype, {
2717
2728
  },
2718
2729
  // `URLSearchParams.prototype.has` method
2719
2730
  // https://url.spec.whatwg.org/#dom-urlsearchparams-has
2720
- has: function has(name) {
2721
- validateArgumentsLength$1(arguments.length, 1);
2731
+ has: function has(name /* , value */) {
2722
2732
  var entries = getInternalParamsState(this).entries;
2733
+ var length = validateArgumentsLength$1(arguments.length, 1);
2723
2734
  var key = $toString$2(name);
2735
+ var $value = length < 2 ? undefined : arguments[1];
2736
+ var value = $value === undefined ? $value : $toString$2($value);
2724
2737
  var index = 0;
2725
2738
  while (index < entries.length) {
2726
- if (entries[index++].key === key) return true;
2739
+ var entry = entries[index++];
2740
+ if (entry.key === key && (value === undefined || entry.value === value)) return true;
2727
2741
  }
2728
2742
  return false;
2729
2743
  },
2730
2744
  // `URLSearchParams.prototype.set` method
2731
2745
  // https://url.spec.whatwg.org/#dom-urlsearchparams-set
2732
2746
  set: function set(name, value) {
2733
- validateArgumentsLength$1(arguments.length, 1);
2734
2747
  var state = getInternalParamsState(this);
2748
+ validateArgumentsLength$1(arguments.length, 1);
2735
2749
  var entries = state.entries;
2736
2750
  var found = false;
2737
2751
  var key = $toString$2(name);
@@ -2749,7 +2763,7 @@ defineBuiltIns(URLSearchParamsPrototype, {
2749
2763
  }
2750
2764
  }
2751
2765
  if (!found) push$1(entries, { key: key, value: val });
2752
- if (!DESCRIPTORS$1) this.length = entries.length;
2766
+ if (!DESCRIPTORS$1) this.size = entries.length;
2753
2767
  state.updateURL();
2754
2768
  },
2755
2769
  // `URLSearchParams.prototype.sort` method
@@ -2933,7 +2947,7 @@ var EOF;
2933
2947
  var parseIPv4 = function (input) {
2934
2948
  var parts = split(input, '.');
2935
2949
  var partsLength, numbers, index, part, radix, number, ipv4;
2936
- if (parts.length && parts[parts.length - 1] == '') {
2950
+ if (parts.length && parts[parts.length - 1] === '') {
2937
2951
  parts.length--;
2938
2952
  }
2939
2953
  partsLength = parts.length;
@@ -2941,23 +2955,23 @@ var parseIPv4 = function (input) {
2941
2955
  numbers = [];
2942
2956
  for (index = 0; index < partsLength; index++) {
2943
2957
  part = parts[index];
2944
- if (part == '') return input;
2958
+ if (part === '') return input;
2945
2959
  radix = 10;
2946
- if (part.length > 1 && charAt(part, 0) == '0') {
2960
+ if (part.length > 1 && charAt(part, 0) === '0') {
2947
2961
  radix = exec(HEX_START, part) ? 16 : 8;
2948
- part = stringSlice$1(part, radix == 8 ? 1 : 2);
2962
+ part = stringSlice$1(part, radix === 8 ? 1 : 2);
2949
2963
  }
2950
2964
  if (part === '') {
2951
2965
  number = 0;
2952
2966
  } else {
2953
- if (!exec(radix == 10 ? DEC : radix == 8 ? OCT : HEX, part)) return input;
2967
+ if (!exec(radix === 10 ? DEC : radix === 8 ? OCT : HEX, part)) return input;
2954
2968
  number = parseInt(part, radix);
2955
2969
  }
2956
2970
  push(numbers, number);
2957
2971
  }
2958
2972
  for (index = 0; index < partsLength; index++) {
2959
2973
  number = numbers[index];
2960
- if (index == partsLength - 1) {
2974
+ if (index === partsLength - 1) {
2961
2975
  if (number >= pow(256, 5 - partsLength)) return null;
2962
2976
  } else if (number > 255) return null;
2963
2977
  }
@@ -2981,15 +2995,15 @@ var parseIPv6 = function (input) {
2981
2995
  return charAt(input, pointer);
2982
2996
  };
2983
2997
 
2984
- if (chr() == ':') {
2985
- if (charAt(input, 1) != ':') return;
2998
+ if (chr() === ':') {
2999
+ if (charAt(input, 1) !== ':') return;
2986
3000
  pointer += 2;
2987
3001
  pieceIndex++;
2988
3002
  compress = pieceIndex;
2989
3003
  }
2990
3004
  while (chr()) {
2991
- if (pieceIndex == 8) return;
2992
- if (chr() == ':') {
3005
+ if (pieceIndex === 8) return;
3006
+ if (chr() === ':') {
2993
3007
  if (compress !== null) return;
2994
3008
  pointer++;
2995
3009
  pieceIndex++;
@@ -3002,33 +3016,33 @@ var parseIPv6 = function (input) {
3002
3016
  pointer++;
3003
3017
  length++;
3004
3018
  }
3005
- if (chr() == '.') {
3006
- if (length == 0) return;
3019
+ if (chr() === '.') {
3020
+ if (length === 0) return;
3007
3021
  pointer -= length;
3008
3022
  if (pieceIndex > 6) return;
3009
3023
  numbersSeen = 0;
3010
3024
  while (chr()) {
3011
3025
  ipv4Piece = null;
3012
3026
  if (numbersSeen > 0) {
3013
- if (chr() == '.' && numbersSeen < 4) pointer++;
3027
+ if (chr() === '.' && numbersSeen < 4) pointer++;
3014
3028
  else return;
3015
3029
  }
3016
3030
  if (!exec(DIGIT, chr())) return;
3017
3031
  while (exec(DIGIT, chr())) {
3018
3032
  number = parseInt(chr(), 10);
3019
3033
  if (ipv4Piece === null) ipv4Piece = number;
3020
- else if (ipv4Piece == 0) return;
3034
+ else if (ipv4Piece === 0) return;
3021
3035
  else ipv4Piece = ipv4Piece * 10 + number;
3022
3036
  if (ipv4Piece > 255) return;
3023
3037
  pointer++;
3024
3038
  }
3025
3039
  address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;
3026
3040
  numbersSeen++;
3027
- if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;
3041
+ if (numbersSeen === 2 || numbersSeen === 4) pieceIndex++;
3028
3042
  }
3029
- if (numbersSeen != 4) return;
3043
+ if (numbersSeen !== 4) return;
3030
3044
  break;
3031
- } else if (chr() == ':') {
3045
+ } else if (chr() === ':') {
3032
3046
  pointer++;
3033
3047
  if (!chr()) return;
3034
3048
  } else if (chr()) return;
@@ -3037,12 +3051,12 @@ var parseIPv6 = function (input) {
3037
3051
  if (compress !== null) {
3038
3052
  swaps = pieceIndex - compress;
3039
3053
  pieceIndex = 7;
3040
- while (pieceIndex != 0 && swaps > 0) {
3054
+ while (pieceIndex !== 0 && swaps > 0) {
3041
3055
  swap = address[pieceIndex];
3042
3056
  address[pieceIndex--] = address[compress + swaps - 1];
3043
3057
  address[compress + --swaps] = swap;
3044
3058
  }
3045
- } else if (pieceIndex != 8) return;
3059
+ } else if (pieceIndex !== 8) return;
3046
3060
  return address;
3047
3061
  };
3048
3062
 
@@ -3130,15 +3144,15 @@ var specialSchemes = {
3130
3144
  // https://url.spec.whatwg.org/#windows-drive-letter
3131
3145
  var isWindowsDriveLetter = function (string, normalized) {
3132
3146
  var second;
3133
- return string.length == 2 && exec(ALPHA, charAt(string, 0))
3134
- && ((second = charAt(string, 1)) == ':' || (!normalized && second == '|'));
3147
+ return string.length === 2 && exec(ALPHA, charAt(string, 0))
3148
+ && ((second = charAt(string, 1)) === ':' || (!normalized && second === '|'));
3135
3149
  };
3136
3150
 
3137
3151
  // https://url.spec.whatwg.org/#start-with-a-windows-drive-letter
3138
3152
  var startsWithWindowsDriveLetter = function (string) {
3139
3153
  var third;
3140
3154
  return string.length > 1 && isWindowsDriveLetter(stringSlice$1(string, 0, 2)) && (
3141
- string.length == 2 ||
3155
+ string.length === 2 ||
3142
3156
  ((third = charAt(string, 2)) === '/' || third === '\\' || third === '?' || third === '#')
3143
3157
  );
3144
3158
  };
@@ -3242,27 +3256,27 @@ URLState.prototype = {
3242
3256
  break;
3243
3257
 
3244
3258
  case SCHEME:
3245
- if (chr && (exec(ALPHANUMERIC, chr) || chr == '+' || chr == '-' || chr == '.')) {
3259
+ if (chr && (exec(ALPHANUMERIC, chr) || chr === '+' || chr === '-' || chr === '.')) {
3246
3260
  buffer += toLowerCase(chr);
3247
- } else if (chr == ':') {
3261
+ } else if (chr === ':') {
3248
3262
  if (stateOverride && (
3249
- (url.isSpecial() != hasOwn$1(specialSchemes, buffer)) ||
3250
- (buffer == 'file' && (url.includesCredentials() || url.port !== null)) ||
3251
- (url.scheme == 'file' && !url.host)
3263
+ (url.isSpecial() !== hasOwn$1(specialSchemes, buffer)) ||
3264
+ (buffer === 'file' && (url.includesCredentials() || url.port !== null)) ||
3265
+ (url.scheme === 'file' && !url.host)
3252
3266
  )) return;
3253
3267
  url.scheme = buffer;
3254
3268
  if (stateOverride) {
3255
- if (url.isSpecial() && specialSchemes[url.scheme] == url.port) url.port = null;
3269
+ if (url.isSpecial() && specialSchemes[url.scheme] === url.port) url.port = null;
3256
3270
  return;
3257
3271
  }
3258
3272
  buffer = '';
3259
- if (url.scheme == 'file') {
3273
+ if (url.scheme === 'file') {
3260
3274
  state = FILE;
3261
- } else if (url.isSpecial() && base && base.scheme == url.scheme) {
3275
+ } else if (url.isSpecial() && base && base.scheme === url.scheme) {
3262
3276
  state = SPECIAL_RELATIVE_OR_AUTHORITY;
3263
3277
  } else if (url.isSpecial()) {
3264
3278
  state = SPECIAL_AUTHORITY_SLASHES;
3265
- } else if (codePoints[pointer + 1] == '/') {
3279
+ } else if (codePoints[pointer + 1] === '/') {
3266
3280
  state = PATH_OR_AUTHORITY;
3267
3281
  pointer++;
3268
3282
  } else {
@@ -3279,8 +3293,8 @@ URLState.prototype = {
3279
3293
  break;
3280
3294
 
3281
3295
  case NO_SCHEME:
3282
- if (!base || (base.cannotBeABaseURL && chr != '#')) return INVALID_SCHEME;
3283
- if (base.cannotBeABaseURL && chr == '#') {
3296
+ if (!base || (base.cannotBeABaseURL && chr !== '#')) return INVALID_SCHEME;
3297
+ if (base.cannotBeABaseURL && chr === '#') {
3284
3298
  url.scheme = base.scheme;
3285
3299
  url.path = arraySlice(base.path);
3286
3300
  url.query = base.query;
@@ -3289,11 +3303,11 @@ URLState.prototype = {
3289
3303
  state = FRAGMENT;
3290
3304
  break;
3291
3305
  }
3292
- state = base.scheme == 'file' ? FILE : RELATIVE;
3306
+ state = base.scheme === 'file' ? FILE : RELATIVE;
3293
3307
  continue;
3294
3308
 
3295
3309
  case SPECIAL_RELATIVE_OR_AUTHORITY:
3296
- if (chr == '/' && codePoints[pointer + 1] == '/') {
3310
+ if (chr === '/' && codePoints[pointer + 1] === '/') {
3297
3311
  state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
3298
3312
  pointer++;
3299
3313
  } else {
@@ -3302,7 +3316,7 @@ URLState.prototype = {
3302
3316
  } break;
3303
3317
 
3304
3318
  case PATH_OR_AUTHORITY:
3305
- if (chr == '/') {
3319
+ if (chr === '/') {
3306
3320
  state = AUTHORITY;
3307
3321
  break;
3308
3322
  } else {
@@ -3312,16 +3326,16 @@ URLState.prototype = {
3312
3326
 
3313
3327
  case RELATIVE:
3314
3328
  url.scheme = base.scheme;
3315
- if (chr == EOF) {
3329
+ if (chr === EOF) {
3316
3330
  url.username = base.username;
3317
3331
  url.password = base.password;
3318
3332
  url.host = base.host;
3319
3333
  url.port = base.port;
3320
3334
  url.path = arraySlice(base.path);
3321
3335
  url.query = base.query;
3322
- } else if (chr == '/' || (chr == '\\' && url.isSpecial())) {
3336
+ } else if (chr === '/' || (chr === '\\' && url.isSpecial())) {
3323
3337
  state = RELATIVE_SLASH;
3324
- } else if (chr == '?') {
3338
+ } else if (chr === '?') {
3325
3339
  url.username = base.username;
3326
3340
  url.password = base.password;
3327
3341
  url.host = base.host;
@@ -3329,7 +3343,7 @@ URLState.prototype = {
3329
3343
  url.path = arraySlice(base.path);
3330
3344
  url.query = '';
3331
3345
  state = QUERY;
3332
- } else if (chr == '#') {
3346
+ } else if (chr === '#') {
3333
3347
  url.username = base.username;
3334
3348
  url.password = base.password;
3335
3349
  url.host = base.host;
@@ -3350,9 +3364,9 @@ URLState.prototype = {
3350
3364
  } break;
3351
3365
 
3352
3366
  case RELATIVE_SLASH:
3353
- if (url.isSpecial() && (chr == '/' || chr == '\\')) {
3367
+ if (url.isSpecial() && (chr === '/' || chr === '\\')) {
3354
3368
  state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
3355
- } else if (chr == '/') {
3369
+ } else if (chr === '/') {
3356
3370
  state = AUTHORITY;
3357
3371
  } else {
3358
3372
  url.username = base.username;
@@ -3365,24 +3379,24 @@ URLState.prototype = {
3365
3379
 
3366
3380
  case SPECIAL_AUTHORITY_SLASHES:
3367
3381
  state = SPECIAL_AUTHORITY_IGNORE_SLASHES;
3368
- if (chr != '/' || charAt(buffer, pointer + 1) != '/') continue;
3382
+ if (chr !== '/' || charAt(buffer, pointer + 1) !== '/') continue;
3369
3383
  pointer++;
3370
3384
  break;
3371
3385
 
3372
3386
  case SPECIAL_AUTHORITY_IGNORE_SLASHES:
3373
- if (chr != '/' && chr != '\\') {
3387
+ if (chr !== '/' && chr !== '\\') {
3374
3388
  state = AUTHORITY;
3375
3389
  continue;
3376
3390
  } break;
3377
3391
 
3378
3392
  case AUTHORITY:
3379
- if (chr == '@') {
3393
+ if (chr === '@') {
3380
3394
  if (seenAt) buffer = '%40' + buffer;
3381
3395
  seenAt = true;
3382
3396
  bufferCodePoints = arrayFrom(buffer);
3383
3397
  for (var i = 0; i < bufferCodePoints.length; i++) {
3384
3398
  var codePoint = bufferCodePoints[i];
3385
- if (codePoint == ':' && !seenPasswordToken) {
3399
+ if (codePoint === ':' && !seenPasswordToken) {
3386
3400
  seenPasswordToken = true;
3387
3401
  continue;
3388
3402
  }
@@ -3392,10 +3406,10 @@ URLState.prototype = {
3392
3406
  }
3393
3407
  buffer = '';
3394
3408
  } else if (
3395
- chr == EOF || chr == '/' || chr == '?' || chr == '#' ||
3396
- (chr == '\\' && url.isSpecial())
3409
+ chr === EOF || chr === '/' || chr === '?' || chr === '#' ||
3410
+ (chr === '\\' && url.isSpecial())
3397
3411
  ) {
3398
- if (seenAt && buffer == '') return INVALID_AUTHORITY;
3412
+ if (seenAt && buffer === '') return INVALID_AUTHORITY;
3399
3413
  pointer -= arrayFrom(buffer).length + 1;
3400
3414
  buffer = '';
3401
3415
  state = HOST;
@@ -3404,22 +3418,22 @@ URLState.prototype = {
3404
3418
 
3405
3419
  case HOST:
3406
3420
  case HOSTNAME:
3407
- if (stateOverride && url.scheme == 'file') {
3421
+ if (stateOverride && url.scheme === 'file') {
3408
3422
  state = FILE_HOST;
3409
3423
  continue;
3410
- } else if (chr == ':' && !seenBracket) {
3411
- if (buffer == '') return INVALID_HOST;
3424
+ } else if (chr === ':' && !seenBracket) {
3425
+ if (buffer === '') return INVALID_HOST;
3412
3426
  failure = url.parseHost(buffer);
3413
3427
  if (failure) return failure;
3414
3428
  buffer = '';
3415
3429
  state = PORT;
3416
- if (stateOverride == HOSTNAME) return;
3430
+ if (stateOverride === HOSTNAME) return;
3417
3431
  } else if (
3418
- chr == EOF || chr == '/' || chr == '?' || chr == '#' ||
3419
- (chr == '\\' && url.isSpecial())
3432
+ chr === EOF || chr === '/' || chr === '?' || chr === '#' ||
3433
+ (chr === '\\' && url.isSpecial())
3420
3434
  ) {
3421
- if (url.isSpecial() && buffer == '') return INVALID_HOST;
3422
- if (stateOverride && buffer == '' && (url.includesCredentials() || url.port !== null)) return;
3435
+ if (url.isSpecial() && buffer === '') return INVALID_HOST;
3436
+ if (stateOverride && buffer === '' && (url.includesCredentials() || url.port !== null)) return;
3423
3437
  failure = url.parseHost(buffer);
3424
3438
  if (failure) return failure;
3425
3439
  buffer = '';
@@ -3427,8 +3441,8 @@ URLState.prototype = {
3427
3441
  if (stateOverride) return;
3428
3442
  continue;
3429
3443
  } else {
3430
- if (chr == '[') seenBracket = true;
3431
- else if (chr == ']') seenBracket = false;
3444
+ if (chr === '[') seenBracket = true;
3445
+ else if (chr === ']') seenBracket = false;
3432
3446
  buffer += chr;
3433
3447
  } break;
3434
3448
 
@@ -3436,11 +3450,11 @@ URLState.prototype = {
3436
3450
  if (exec(DIGIT, chr)) {
3437
3451
  buffer += chr;
3438
3452
  } else if (
3439
- chr == EOF || chr == '/' || chr == '?' || chr == '#' ||
3440
- (chr == '\\' && url.isSpecial()) ||
3453
+ chr === EOF || chr === '/' || chr === '?' || chr === '#' ||
3454
+ (chr === '\\' && url.isSpecial()) ||
3441
3455
  stateOverride
3442
3456
  ) {
3443
- if (buffer != '') {
3457
+ if (buffer !== '') {
3444
3458
  var port = parseInt(buffer, 10);
3445
3459
  if (port > 0xFFFF) return INVALID_PORT;
3446
3460
  url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;
@@ -3454,31 +3468,35 @@ URLState.prototype = {
3454
3468
 
3455
3469
  case FILE:
3456
3470
  url.scheme = 'file';
3457
- if (chr == '/' || chr == '\\') state = FILE_SLASH;
3458
- else if (base && base.scheme == 'file') {
3459
- if (chr == EOF) {
3460
- url.host = base.host;
3461
- url.path = arraySlice(base.path);
3462
- url.query = base.query;
3463
- } else if (chr == '?') {
3464
- url.host = base.host;
3465
- url.path = arraySlice(base.path);
3466
- url.query = '';
3467
- state = QUERY;
3468
- } else if (chr == '#') {
3469
- url.host = base.host;
3470
- url.path = arraySlice(base.path);
3471
- url.query = base.query;
3472
- url.fragment = '';
3473
- state = FRAGMENT;
3474
- } else {
3475
- if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {
3471
+ if (chr === '/' || chr === '\\') state = FILE_SLASH;
3472
+ else if (base && base.scheme === 'file') {
3473
+ switch (chr) {
3474
+ case EOF:
3476
3475
  url.host = base.host;
3477
3476
  url.path = arraySlice(base.path);
3478
- url.shortenPath();
3479
- }
3480
- state = PATH;
3481
- continue;
3477
+ url.query = base.query;
3478
+ break;
3479
+ case '?':
3480
+ url.host = base.host;
3481
+ url.path = arraySlice(base.path);
3482
+ url.query = '';
3483
+ state = QUERY;
3484
+ break;
3485
+ case '#':
3486
+ url.host = base.host;
3487
+ url.path = arraySlice(base.path);
3488
+ url.query = base.query;
3489
+ url.fragment = '';
3490
+ state = FRAGMENT;
3491
+ break;
3492
+ default:
3493
+ if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {
3494
+ url.host = base.host;
3495
+ url.path = arraySlice(base.path);
3496
+ url.shortenPath();
3497
+ }
3498
+ state = PATH;
3499
+ continue;
3482
3500
  }
3483
3501
  } else {
3484
3502
  state = PATH;
@@ -3486,11 +3504,11 @@ URLState.prototype = {
3486
3504
  } break;
3487
3505
 
3488
3506
  case FILE_SLASH:
3489
- if (chr == '/' || chr == '\\') {
3507
+ if (chr === '/' || chr === '\\') {
3490
3508
  state = FILE_HOST;
3491
3509
  break;
3492
3510
  }
3493
- if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {
3511
+ if (base && base.scheme === 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {
3494
3512
  if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);
3495
3513
  else url.host = base.host;
3496
3514
  }
@@ -3498,17 +3516,17 @@ URLState.prototype = {
3498
3516
  continue;
3499
3517
 
3500
3518
  case FILE_HOST:
3501
- if (chr == EOF || chr == '/' || chr == '\\' || chr == '?' || chr == '#') {
3519
+ if (chr === EOF || chr === '/' || chr === '\\' || chr === '?' || chr === '#') {
3502
3520
  if (!stateOverride && isWindowsDriveLetter(buffer)) {
3503
3521
  state = PATH;
3504
- } else if (buffer == '') {
3522
+ } else if (buffer === '') {
3505
3523
  url.host = '';
3506
3524
  if (stateOverride) return;
3507
3525
  state = PATH_START;
3508
3526
  } else {
3509
3527
  failure = url.parseHost(buffer);
3510
3528
  if (failure) return failure;
3511
- if (url.host == 'localhost') url.host = '';
3529
+ if (url.host === 'localhost') url.host = '';
3512
3530
  if (stateOverride) return;
3513
3531
  buffer = '';
3514
3532
  state = PATH_START;
@@ -3519,50 +3537,50 @@ URLState.prototype = {
3519
3537
  case PATH_START:
3520
3538
  if (url.isSpecial()) {
3521
3539
  state = PATH;
3522
- if (chr != '/' && chr != '\\') continue;
3523
- } else if (!stateOverride && chr == '?') {
3540
+ if (chr !== '/' && chr !== '\\') continue;
3541
+ } else if (!stateOverride && chr === '?') {
3524
3542
  url.query = '';
3525
3543
  state = QUERY;
3526
- } else if (!stateOverride && chr == '#') {
3544
+ } else if (!stateOverride && chr === '#') {
3527
3545
  url.fragment = '';
3528
3546
  state = FRAGMENT;
3529
- } else if (chr != EOF) {
3547
+ } else if (chr !== EOF) {
3530
3548
  state = PATH;
3531
- if (chr != '/') continue;
3549
+ if (chr !== '/') continue;
3532
3550
  } break;
3533
3551
 
3534
3552
  case PATH:
3535
3553
  if (
3536
- chr == EOF || chr == '/' ||
3537
- (chr == '\\' && url.isSpecial()) ||
3538
- (!stateOverride && (chr == '?' || chr == '#'))
3554
+ chr === EOF || chr === '/' ||
3555
+ (chr === '\\' && url.isSpecial()) ||
3556
+ (!stateOverride && (chr === '?' || chr === '#'))
3539
3557
  ) {
3540
3558
  if (isDoubleDot(buffer)) {
3541
3559
  url.shortenPath();
3542
- if (chr != '/' && !(chr == '\\' && url.isSpecial())) {
3560
+ if (chr !== '/' && !(chr === '\\' && url.isSpecial())) {
3543
3561
  push(url.path, '');
3544
3562
  }
3545
3563
  } else if (isSingleDot(buffer)) {
3546
- if (chr != '/' && !(chr == '\\' && url.isSpecial())) {
3564
+ if (chr !== '/' && !(chr === '\\' && url.isSpecial())) {
3547
3565
  push(url.path, '');
3548
3566
  }
3549
3567
  } else {
3550
- if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {
3568
+ if (url.scheme === 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {
3551
3569
  if (url.host) url.host = '';
3552
3570
  buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter
3553
3571
  }
3554
3572
  push(url.path, buffer);
3555
3573
  }
3556
3574
  buffer = '';
3557
- if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) {
3575
+ if (url.scheme === 'file' && (chr === EOF || chr === '?' || chr === '#')) {
3558
3576
  while (url.path.length > 1 && url.path[0] === '') {
3559
3577
  shift(url.path);
3560
3578
  }
3561
3579
  }
3562
- if (chr == '?') {
3580
+ if (chr === '?') {
3563
3581
  url.query = '';
3564
3582
  state = QUERY;
3565
- } else if (chr == '#') {
3583
+ } else if (chr === '#') {
3566
3584
  url.fragment = '';
3567
3585
  state = FRAGMENT;
3568
3586
  }
@@ -3571,28 +3589,28 @@ URLState.prototype = {
3571
3589
  } break;
3572
3590
 
3573
3591
  case CANNOT_BE_A_BASE_URL_PATH:
3574
- if (chr == '?') {
3592
+ if (chr === '?') {
3575
3593
  url.query = '';
3576
3594
  state = QUERY;
3577
- } else if (chr == '#') {
3595
+ } else if (chr === '#') {
3578
3596
  url.fragment = '';
3579
3597
  state = FRAGMENT;
3580
- } else if (chr != EOF) {
3598
+ } else if (chr !== EOF) {
3581
3599
  url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);
3582
3600
  } break;
3583
3601
 
3584
3602
  case QUERY:
3585
- if (!stateOverride && chr == '#') {
3603
+ if (!stateOverride && chr === '#') {
3586
3604
  url.fragment = '';
3587
3605
  state = FRAGMENT;
3588
- } else if (chr != EOF) {
3589
- if (chr == "'" && url.isSpecial()) url.query += '%27';
3590
- else if (chr == '#') url.query += '%23';
3606
+ } else if (chr !== EOF) {
3607
+ if (chr === "'" && url.isSpecial()) url.query += '%27';
3608
+ else if (chr === '#') url.query += '%23';
3591
3609
  else url.query += percentEncode(chr, C0ControlPercentEncodeSet);
3592
3610
  } break;
3593
3611
 
3594
3612
  case FRAGMENT:
3595
- if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);
3613
+ if (chr !== EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);
3596
3614
  break;
3597
3615
  }
3598
3616
 
@@ -3602,8 +3620,8 @@ URLState.prototype = {
3602
3620
  // https://url.spec.whatwg.org/#host-parsing
3603
3621
  parseHost: function (input) {
3604
3622
  var result, codePoints, index;
3605
- if (charAt(input, 0) == '[') {
3606
- if (charAt(input, input.length - 1) != ']') return INVALID_HOST;
3623
+ if (charAt(input, 0) === '[') {
3624
+ if (charAt(input, input.length - 1) !== ']') return INVALID_HOST;
3607
3625
  result = parseIPv6(stringSlice$1(input, 1, -1));
3608
3626
  if (!result) return INVALID_HOST;
3609
3627
  this.host = result;
@@ -3626,11 +3644,11 @@ URLState.prototype = {
3626
3644
  },
3627
3645
  // https://url.spec.whatwg.org/#cannot-have-a-username-password-port
3628
3646
  cannotHaveUsernamePasswordPort: function () {
3629
- return !this.host || this.cannotBeABaseURL || this.scheme == 'file';
3647
+ return !this.host || this.cannotBeABaseURL || this.scheme === 'file';
3630
3648
  },
3631
3649
  // https://url.spec.whatwg.org/#include-credentials
3632
3650
  includesCredentials: function () {
3633
- return this.username != '' || this.password != '';
3651
+ return this.username !== '' || this.password !== '';
3634
3652
  },
3635
3653
  // https://url.spec.whatwg.org/#is-special
3636
3654
  isSpecial: function () {
@@ -3640,7 +3658,7 @@ URLState.prototype = {
3640
3658
  shortenPath: function () {
3641
3659
  var path = this.path;
3642
3660
  var pathSize = path.length;
3643
- if (pathSize && (this.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {
3661
+ if (pathSize && (this.scheme !== 'file' || pathSize !== 1 || !isWindowsDriveLetter(path[0], true))) {
3644
3662
  path.length--;
3645
3663
  }
3646
3664
  },
@@ -3663,7 +3681,7 @@ URLState.prototype = {
3663
3681
  }
3664
3682
  output += serializeHost(host);
3665
3683
  if (port !== null) output += ':' + port;
3666
- } else if (scheme == 'file') output += '//';
3684
+ } else if (scheme === 'file') output += '//';
3667
3685
  output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';
3668
3686
  if (query !== null) output += '?' + query;
3669
3687
  if (fragment !== null) output += '#' + fragment;
@@ -3679,12 +3697,12 @@ URLState.prototype = {
3679
3697
  getOrigin: function () {
3680
3698
  var scheme = this.scheme;
3681
3699
  var port = this.port;
3682
- if (scheme == 'blob') try {
3700
+ if (scheme === 'blob') try {
3683
3701
  return new URLConstructor(scheme.path[0]).origin;
3684
3702
  } catch (error) {
3685
3703
  return 'null';
3686
3704
  }
3687
- if (scheme == 'file' || !this.isSpecial()) return 'null';
3705
+ if (scheme === 'file' || !this.isSpecial()) return 'null';
3688
3706
  return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');
3689
3707
  },
3690
3708
  // https://url.spec.whatwg.org/#dom-url-protocol
@@ -3747,7 +3765,7 @@ URLState.prototype = {
3747
3765
  setPort: function (port) {
3748
3766
  if (this.cannotHaveUsernamePasswordPort()) return;
3749
3767
  port = $toString$1(port);
3750
- if (port == '') this.port = null;
3768
+ if (port === '') this.port = null;
3751
3769
  else this.parse(port, PORT);
3752
3770
  },
3753
3771
  // https://url.spec.whatwg.org/#dom-url-pathname
@@ -3767,10 +3785,10 @@ URLState.prototype = {
3767
3785
  },
3768
3786
  setSearch: function (search) {
3769
3787
  search = $toString$1(search);
3770
- if (search == '') {
3788
+ if (search === '') {
3771
3789
  this.query = null;
3772
3790
  } else {
3773
- if ('?' == charAt(search, 0)) search = stringSlice$1(search, 1);
3791
+ if (charAt(search, 0) === '?') search = stringSlice$1(search, 1);
3774
3792
  this.query = '';
3775
3793
  this.parse(search, QUERY);
3776
3794
  }
@@ -3787,11 +3805,11 @@ URLState.prototype = {
3787
3805
  },
3788
3806
  setHash: function (hash) {
3789
3807
  hash = $toString$1(hash);
3790
- if (hash == '') {
3808
+ if (hash === '') {
3791
3809
  this.fragment = null;
3792
3810
  return;
3793
3811
  }
3794
- if ('#' == charAt(hash, 0)) hash = stringSlice$1(hash, 1);
3812
+ if (charAt(hash, 0) === '#') hash = stringSlice$1(hash, 1);
3795
3813
  this.fragment = '';
3796
3814
  this.parse(hash, FRAGMENT);
3797
3815
  },
@@ -3915,7 +3933,7 @@ var MATCH$1 = wellKnownSymbol$1('match');
3915
3933
  // https://tc39.es/ecma262/#sec-isregexp
3916
3934
  var isRegexp = function (it) {
3917
3935
  var isRegExp;
3918
- return isObject(it) && ((isRegExp = it[MATCH$1]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');
3936
+ return isObject(it) && ((isRegExp = it[MATCH$1]) !== undefined ? !!isRegExp : classof(it) === 'RegExp');
3919
3937
  };
3920
3938
 
3921
3939
  var isRegExp = isRegexp;
@@ -4003,9 +4021,9 @@ var TO_STRING = 'toString';
4003
4021
  var RegExpPrototype = RegExp.prototype;
4004
4022
  var nativeToString = RegExpPrototype[TO_STRING];
4005
4023
 
4006
- var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });
4024
+ var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; });
4007
4025
  // FF44- RegExp#toString has a wrong name
4008
- var INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name != TO_STRING;
4026
+ var INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING;
4009
4027
 
4010
4028
  // `RegExp.prototype.toString` method
4011
4029
  // https://tc39.es/ecma262/#sec-regexp.prototype.tostring
@@ -4018,13 +4036,33 @@ if (NOT_GENERIC || INCORRECT_NAME) {
4018
4036
  }, { unsafe: true });
4019
4037
  }
4020
4038
 
4021
- var Chanukah="Hanukkah, the Jewish festival of rededication. Also known as the Festival of Lights, the eight-day festival is observed by lighting the candles of a hanukkiah (menorah)";var Pesach="Passover, the Feast of Unleavened Bread. Also called Chag HaMatzot (the Festival of Matzah), it commemorates the Exodus and freedom of the Israelites from ancient Egypt";var Purim="Celebration of Jewish deliverance as told by Megilat Esther. It commemorates a time when the Jewish people living in Persia were saved from extermination";var Shavuot="Festival of Weeks. Commemorates the giving of the Torah at Mount Sinai";var Sigd="Ethiopian Jewish holiday occurring 50 days after Yom Kippur";var Sukkot="Feast of Booths. Also called the Feast of Tabernacles, the seven-day holiday is one of the Three Pilgrimage Festivals (Hebrew: שלוש רגלים, shalosh regalim)";var holidayDescription = {"Asara B'Tevet":"Fast commemorating the siege of Jerusalem","Ben-Gurion Day":"Commemorates the life and vision of Israel's first Prime Minister David Ben-Gurion","Birkat Hachamah":"A rare Jewish blessing recited once every 28 years thanking G-d for creating the sun","Chag HaBanot":"North African Chanukah festival of daughters. Called Eid al-Banat in Arabic, the holiday was most preserved in Tunisia",Chanukah:Chanukah,"Days of the Omer":"7 weeks from the second night of Pesach to the day before Shavuot. Also called Sefirat HaOmer, it is a practice that consists of a verbal counting of each of the forty-nine days between the two holidays","Family Day":"Yom HaMishpacha, a day to honor the family unit","Herzl Day":"Commemorates the life and vision of Zionist leader Theodor Herzl","Jabotinsky Day":"Commemorates the life and vision of Zionist leader Ze'ev Jabotinsky","Lag BaOmer":"33rd day of counting the Omer. The holiday is a temporary break from the semi-mourning period the counting of the Omer. Practices include lighting bonfires, getting haircuts, and Jewish weddings","Leil Selichot":"Prayers for forgiveness in preparation for the High Holidays","Pesach Sheni":"Second Passover, one month after Passover",Pesach:Pesach,"Purim Katan":"Minor Purim celebration during Adar I on leap years",Purim:Purim,"Purim Meshulash":"Triple Purim, spanning 3 days in Jerusalem and walled cities. It occurs when the 15th of Adar coincides with Shabbat","Rosh Chodesh Nisan":"Start of month of Nisan on the Hebrew calendar. נִיסָן (transliterated Nisan or Nissan) is the 1st month of the Hebrew year, has 30 days, and corresponds to March or April on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Iyyar":"Start of month of Iyyar on the Hebrew calendar. אִיָיר (transliterated Iyyar or Iyar) is the 2nd month of the Hebrew year, has 29 days, and corresponds to April or May on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Sivan":"Start of month of Sivan on the Hebrew calendar. Sivan (סִיוָן) is the 3rd month of the Hebrew year, has 30 days, and corresponds to May or June on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Tamuz":"Start of month of Tamuz on the Hebrew calendar. תַּמּוּז (transliterated Tamuz or Tammuz) is the 4th month of the Hebrew year, has 29 days, and corresponds to June or July on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Av":"Start of month of Av on the Hebrew calendar. Av (אָב) is the 5th month of the Hebrew year, has 30 days, and corresponds to July or August on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Elul":"Start of month of Elul on the Hebrew calendar. Elul (אֱלוּל) is the 6th month of the Hebrew year, has 29 days, and corresponds to August or September on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Cheshvan":"Start of month of Cheshvan on the Hebrew calendar. חֶשְׁוָן (transliterated Cheshvan or Heshvan) is the 8th month of the Hebrew year, has 29 or 30 days, and corresponds to October or November on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Kislev":"Start of month of Kislev on the Hebrew calendar. Kislev (כִּסְלֵו) is the 9th month of the Hebrew year, has 30 or 29 days, and corresponds to November or December on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Tevet":"Start of month of Tevet on the Hebrew calendar. Tevet (טֵבֵת) is the 10th month of the Hebrew year, has 29 days, and corresponds to December or January on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Sh'vat":"Start of month of Sh'vat on the Hebrew calendar. שְׁבָט (transliterated Sh'vat or Shevat) is the 11th month of the Hebrew year, has 30 days, and corresponds to January or February on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Adar":"Start of month of Adar on the Hebrew calendar. Adar (אַדָר) is the 12th month of the Hebrew year, has 29 days, and corresponds to February or March on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Adar I":"Start of month of Adar I (on leap years) on the Hebrew calendar. Adar I (אַדָר א׳) is the 12th month of the Hebrew year, occurs only on leap years, has 30 days, and corresponds to February or March on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Adar II":"Start of month of Adar II (on leap years) on the Hebrew calendar. Adar II (אַדָר ב׳), sometimes \"Adar Bet\" or \"Adar Sheni\", is the 13th month of the Hebrew year, has 29 days, occurs only on leap years, and corresponds to February or March on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Hashana":"The Jewish New Year. Also spelled Rosh Hashanah","Rosh Hashana LaBehemot":"New Year for Tithing Animals","Shabbat Chazon":"Shabbat of Prophecy/Shabbat of Vision. Shabbat before Tish'a B'Av","Shabbat HaChodesh":"Shabbat before Rosh Chodesh Nissan","Shabbat HaGadol":"Shabbat before Pesach","Shabbat Machar Chodesh":"When Shabbat falls the day before Rosh Chodesh","Shabbat Nachamu":"Shabbat after Tish'a B'Av (Shabbat of Consolation). The first of seven Shabbatot leading up to Rosh Hashanah. Named after the Haftarah (from Isaiah 40) which begins with the verse נַחֲמוּ נַחֲמוּ, עַמִּי (\"Comfort, oh comfort my people\")","Shabbat Parah":"Shabbat of the Red Heifer","Shabbat Rosh Chodesh":"When Shabbat falls on Rosh Chodesh","Shabbat Shekalim":"Shabbat before Rosh Chodesh Adar","Shabbat Shirah":"Shabbat of Song","Shabbat Shuva":"Shabbat that falls between Rosh Hashanah and Yom Kippur (Shabbat of Returning)","Shabbat Zachor":"Shabbat before Purim",Shavuot:Shavuot,"Shmini Atzeret":"Eighth Day of Assembly. Immediately following Sukkot, it is observed as a separate holiday in the Diaspora and is combined with Simchat Torah in Israel","Shushan Purim":"Purim celebrated in Jerusalem and walled cities","Shushan Purim Katan":"Minor Purim celebration during Adar I on leap years in Jerusalem and walled cities",Sigd:Sigd,"Simchat Torah":"Day of Celebrating the Torah. Celebration marking the conclusion of the annual cycle of public Torah readings, and the beginning of a new cycle",Sukkot:Sukkot,"Ta'anit Bechorot":"Fast of the First Born","Ta'anit Esther":"Fast of Esther","Tish'a B'Av":"The Ninth of Av. Fast commemorating the destruction of the two Temples","Tu B'Av":"Minor Jewish holiday of love. Observed on the 15th day of the Hebrew month of Av","Tu BiShvat":"New Year for Trees. Tu BiShvat is one of four “New Years” mentioned in the Mishnah","Tzom Gedaliah":"Fast of the Seventh Month. Commemorates the assassination of the Jewish governor of Judah","Tzom Tammuz":"Fast commemorating breaching of the walls of Jerusalem before the destruction of the Second Temple","Yitzhak Rabin Memorial Day":"Commemorates the life of Israeli Prime Minister Yitzhak Rabin","Yom HaAliyah":"Recognizes Aliyah, immigration to the Jewish State of Israel","Yom HaAliyah School Observance":"Aliyah Day observed in Israeli schools","Yom HaAtzma'ut":"Israeli Independence Day. Commemorates the declaration of independence of Israel in 1948. Although Yom HaAtzma'ut is normally observed on the 5th of Iyyar, it may be moved earlier or postponed if observance of the holiday (or Yom HaZikaron, which always precedes it) would conflict with Shabbat","Yom HaShoah":"Holocaust Memorial Day","Yom HaZikaron":"Israeli Memorial Day. Remembers those who died in the War of Independence and other wars in Israel. The full name of the holiday is Yom HaZikaron LeHalalei Ma'arakhot Yisrael ul'Nifge'ei Pe'ulot HaEivah (Hebrew: יוֹם הזִּכָּרוֹן לְחַלְלֵי מַעֲרָכוֹת יִשְׂרָאֵל וּלְנִפְגְעֵי פְּעֻלּוֹת הָאֵיבָה), Memorial Day for the Fallen Soldiers of the Wars of Israel and Victims of Actions of Terrorism. Although Yom Hazikaron is normally observed on the 4th of Iyyar, it may be moved earlier or postponed if observance of the holiday (or Yom HaAtzma'ut, which always follows it) would conflict with Shabbat","Yom Kippur":"Day of Atonement. The holiest day of the year in Judaism, traditionally observed with a 25-hour period of fasting and intensive prayer","Yom Kippur Katan":"Minor day of atonement occurring monthly on the day preceeding each Rosh Chodesh","Yom Yerushalayim":"Jerusalem Day. Commemorates the re-unification of Jerusalem in 1967"};
4039
+ var Chanukah="Hanukkah, the Jewish festival of rededication. Also known as the Festival of Lights, the eight-day festival is observed by lighting the candles of a hanukkiah (menorah)";var Pesach="Passover, the Feast of Unleavened Bread. Also called Chag HaMatzot (the Festival of Matzah), it commemorates the Exodus and freedom of the Israelites from ancient Egypt";var Purim="Celebration of Jewish deliverance as told by Megilat Esther. It commemorates a time when the Jewish people living in Persia were saved from extermination";var Shavuot="Festival of Weeks. Commemorates the giving of the Torah at Mount Sinai";var Sigd="Ethiopian Jewish holiday occurring 50 days after Yom Kippur";var Sukkot="Feast of Booths. Also called the Feast of Tabernacles, the seven-day holiday is one of the Three Pilgrimage Festivals (Hebrew: שלוש רגלים, shalosh regalim)";var holidayDescription = {"Asara B'Tevet":"Fast commemorating the siege of Jerusalem","Ben-Gurion Day":"Commemorates the life and vision of Israel's first Prime Minister David Ben-Gurion","Birkat Hachamah":"A rare Jewish blessing recited once every 28 years thanking G-d for creating the sun","Chag HaBanot":"North African Chanukah festival of daughters. Called Eid al-Banat in Arabic, the holiday was most preserved in Tunisia",Chanukah:Chanukah,"Days of the Omer":"7 weeks from the second night of Pesach to the day before Shavuot. Also called Sefirat HaOmer, it is a practice that consists of a verbal counting of each of the forty-nine days between the two holidays","Family Day":"Yom HaMishpacha, a day to honor the family unit","Herzl Day":"Commemorates the life and vision of Zionist leader Theodor Herzl","Jabotinsky Day":"Commemorates the life and vision of Zionist leader Ze'ev Jabotinsky","Lag BaOmer":"33rd day of counting the Omer. The holiday is a temporary break from the semi-mourning period the counting of the Omer. Practices include lighting bonfires, getting haircuts, and Jewish weddings","Leil Selichot":"Prayers for forgiveness in preparation for the High Holidays","Pesach Sheni":"Second Passover, one month after Passover",Pesach:Pesach,"Purim Katan":"Minor Purim celebration during Adar I on leap years",Purim:Purim,"Purim Meshulash":"Triple Purim, spanning 3 days in Jerusalem and walled cities. It occurs when the 15th of Adar coincides with Shabbat","Rosh Chodesh Nisan":"Start of month of Nisan on the Hebrew calendar. נִיסָן (transliterated Nisan or Nissan) is the 1st month of the Hebrew year, has 30 days, and corresponds to March or April on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Iyyar":"Start of month of Iyyar on the Hebrew calendar. אִיָיר (transliterated Iyyar or Iyar) is the 2nd month of the Hebrew year, has 29 days, and corresponds to April or May on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Sivan":"Start of month of Sivan on the Hebrew calendar. Sivan (סִיוָן) is the 3rd month of the Hebrew year, has 30 days, and corresponds to May or June on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Tamuz":"Start of month of Tamuz on the Hebrew calendar. תַּמּוּז (transliterated Tamuz or Tammuz) is the 4th month of the Hebrew year, has 29 days, and corresponds to June or July on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Av":"Start of month of Av on the Hebrew calendar. Av (אָב) is the 5th month of the Hebrew year, has 30 days, and corresponds to July or August on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Elul":"Start of month of Elul on the Hebrew calendar. Elul (אֱלוּל) is the 6th month of the Hebrew year, has 29 days, and corresponds to August or September on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Cheshvan":"Start of month of Cheshvan on the Hebrew calendar. חֶשְׁוָן (transliterated Cheshvan or Heshvan) is the 8th month of the Hebrew year, has 29 or 30 days, and corresponds to October or November on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Kislev":"Start of month of Kislev on the Hebrew calendar. Kislev (כִּסְלֵו) is the 9th month of the Hebrew year, has 30 or 29 days, and corresponds to November or December on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Tevet":"Start of month of Tevet on the Hebrew calendar. Tevet (טֵבֵת) is the 10th month of the Hebrew year, has 29 days, and corresponds to December or January on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Sh'vat":"Start of month of Sh'vat on the Hebrew calendar. שְׁבָט (transliterated Sh'vat or Shevat) is the 11th month of the Hebrew year, has 30 days, and corresponds to January or February on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Adar":"Start of month of Adar on the Hebrew calendar. Adar (אַדָר) is the 12th month of the Hebrew year, has 29 days, and corresponds to February or March on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Adar I":"Start of month of Adar I (on leap years) on the Hebrew calendar. Adar I (אַדָר א׳) is the 12th month of the Hebrew year, occurs only on leap years, has 30 days, and corresponds to February or March on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Chodesh Adar II":"Start of month of Adar II (on leap years) on the Hebrew calendar. Adar II (אַדָר ב׳), sometimes \"Adar Bet\" or \"Adar Sheni\", is the 13th month of the Hebrew year, has 29 days, occurs only on leap years, and corresponds to February or March on the Gregorian calendar. רֹאשׁ חוֹדֶשׁ, transliterated Rosh Chodesh or Rosh Hodesh, is a minor holiday that occurs at the beginning of every month in the Hebrew calendar. It is marked by the birth of a new moon","Rosh Hashana":"The Jewish New Year. Also spelled Rosh Hashanah","Rosh Hashana LaBehemot":"New Year for Tithing Animals","Shabbat Chazon":"Shabbat of Prophecy/Shabbat of Vision. Shabbat before Tish'a B'Av","Shabbat HaChodesh":"Shabbat before Rosh Chodesh Nissan","Shabbat HaGadol":"Shabbat before Pesach","Shabbat Machar Chodesh":"When Shabbat falls the day before Rosh Chodesh","Shabbat Nachamu":"Shabbat after Tish'a B'Av (Shabbat of Consolation). The first of seven Shabbatot leading up to Rosh Hashanah. Named after the Haftarah (from Isaiah 40) which begins with the verse נַחֲמוּ נַחֲמוּ, עַמִּי (\"Comfort, oh comfort my people\")","Shabbat Parah":"Shabbat of the Red Heifer","Shabbat Rosh Chodesh":"When Shabbat falls on Rosh Chodesh","Shabbat Shekalim":"Shabbat before Rosh Chodesh Adar","Shabbat Shirah":"Shabbat of Song","Shabbat Shuva":"Shabbat that falls between Rosh Hashanah and Yom Kippur (Shabbat of Returning)","Shabbat Zachor":"Shabbat before Purim",Shavuot:Shavuot,"Shmini Atzeret":"Eighth Day of Assembly. Immediately following Sukkot, it is observed as a separate holiday in the Diaspora and is combined with Simchat Torah in Israel","Shushan Purim":"Purim celebrated in Jerusalem and walled cities","Shushan Purim Katan":"Minor Purim celebration during Adar I on leap years in Jerusalem and walled cities",Sigd:Sigd,"Simchat Torah":"Day of Celebrating the Torah. Celebration marking the conclusion of the annual cycle of public Torah readings, and the beginning of a new cycle",Sukkot:Sukkot,"Ta'anit Bechorot":"Fast of the First Born","Ta'anit Esther":"Fast of Esther","Tish'a B'Av":"The Ninth of Av. Fast commemorating the destruction of the two Temples","Tu B'Av":"Minor Jewish holiday of love. Observed on the 15th day of the Hebrew month of Av","Tu BiShvat":"New Year for Trees. Tu BiShvat is one of four “New Years” mentioned in the Mishnah","Tzom Gedaliah":"Fast of the Seventh Month. Commemorates the assassination of the Jewish governor of Judah","Tzom Tammuz":"Fast commemorating breaching of the walls of Jerusalem before the destruction of the Second Temple","Yitzhak Rabin Memorial Day":"Commemorates the life of Israeli Prime Minister Yitzhak Rabin","Yom HaAliyah":"Recognizes Aliyah, immigration to the Jewish State of Israel","Yom HaAliyah School Observance":"Aliyah Day observed in Israeli schools","Yom HaAtzma'ut":"Israeli Independence Day. Commemorates the declaration of independence of Israel in 1948. Although Yom HaAtzma'ut is normally observed on the 5th of Iyyar, it may be moved earlier or postponed if observance of the holiday (or Yom HaZikaron, which always precedes it) would conflict with Shabbat","Yom HaShoah":"Holocaust Memorial Day","Yom HaZikaron":"Israeli Memorial Day. Remembers those who died in the War of Independence and other wars in Israel. The full name of the holiday is Yom HaZikaron LeHalalei Ma'arakhot Yisrael ul'Nifge'ei Pe'ulot HaEivah (Hebrew: יוֹם הזִּכָּרוֹן לְחַלְלֵי מַעֲרָכוֹת יִשְׂרָאֵל וּלְנִפְגְעֵי פְּעֻלּוֹת הָאֵיבָה), Memorial Day for the Fallen Soldiers of the Wars of Israel and Victims of Actions of Terrorism. Although Yom Hazikaron is normally observed on the 4th of Iyyar, it may be moved earlier or postponed if observance of the holiday (or Yom HaAtzma'ut, which always follows it) would conflict with Shabbat","Yom Kippur":"Day of Atonement. The holiest day of the year in Judaism, traditionally observed with a 25-hour period of fasting and intensive prayer","Yom Kippur Katan":"Minor day of atonement occurring monthly on the day preceeding each Rosh Chodesh","Yom Yerushalayim":"Jerusalem Day. Commemorates the re-unification of Jerusalem in 1967"};
4022
4040
 
4023
4041
  var AD="Andorra";var AE="United Arab Emirates";var AF="Afghanistan";var AI="Anguilla";var AL="Albania";var AM="Armenia";var AO="Angola";var AR="Argentina";var AS="American Samoa";var AT="Austria";var AU="Australia";var AW="Aruba";var AZ="Azerbaijan";var BA="Bosnia and Herzegovina";var BB="Barbados";var BD="Bangladesh";var BE="Belgium";var BF="Burkina Faso";var BG="Bulgaria";var BH="Bahrain";var BI="Burundi";var BJ="Benin";var BM="Bermuda";var BN="Brunei";var BO="Bolivia";var BR="Brazil";var BS="Bahamas";var BT="Bhutan";var BW="Botswana";var BY="Belarus";var BZ="Belize";var CA="Canada";var CD="Democratic Republic of the Congo";var CF="Central African Republic";var CG="Republic of the Congo";var CH="Switzerland";var CI="Ivory Coast";var CK="Cook Islands";var CL="Chile";var CM="Cameroon";var CN="China";var CO="Colombia";var CR="Costa Rica";var CU="Cuba";var CV="Cape Verde";var CW="Curacao";var CY="Cyprus";var CZ="Czech Republic";var DE="Germany";var DK="Denmark";var DM="Dominica";var DO="Dominican Republic";var DZ="Algeria";var EC="Ecuador";var EE="Estonia";var EG="Egypt";var ER="Eritrea";var ES="Spain";var ET="Ethiopia";var FI="Finland";var FJ="Fiji";var FK="Falkland Islands";var FO="Faroe Islands";var FR="France";var GA="Gabon";var GB="United Kingdom";var GE="Georgia";var GH="Ghana";var GI="Gibraltar";var GL="Greenland";var GM="Gambia";var GN="Guinea";var GQ="Equatorial Guinea";var GR="Greece";var GT="Guatemala";var GW="Guinea-Bissau";var GY="Guyana";var HK="Hong Kong";var HN="Honduras";var HR="Croatia";var HT="Haiti";var HU="Hungary";var ID="Indonesia";var IE="Ireland";var IL="Israel";var IM="Isle of Man";var IN="India";var IQ="Iraq";var IR="Iran";var IS="Iceland";var IT="Italy";var JM="Jamaica";var JO="Jordan";var JP="Japan";var KE="Kenya";var KG="Kyrgyzstan";var KH="Cambodia";var KM="Comoros";var KN="Saint Kitts and Nevis";var KP="North Korea";var KR="South Korea";var KW="Kuwait";var KY="Cayman Islands";var KZ="Kazakhstan";var LA="Laos";var LB="Lebanon";var LC="Saint Lucia";var LI="Liechtenstein";var LR="Liberia";var LS="Lesotho";var LT="Lithuania";var LU="Luxembourg";var LV="Latvia";var LY="Libya";var MA="Morocco";var MD="Moldova";var ME="Montenegro";var MG="Madagascar";var MK="Macedonia";var ML="Mali";var MM="Myanmar";var MN="Mongolia";var MP="Northern Mariana Islands";var MR="Mauritania";var MS="Montserrat";var MT="Malta";var MU="Mauritius";var MW="Malawi";var MX="Mexico";var MY="Malaysia";var MZ="Mozambique";var NA="Namibia";var NC="New Caledonia";var NE="Niger";var NG="Nigeria";var NI="Nicaragua";var NL="Netherlands";var NO="Norway";var NP="Nepal";var NU="Niue";var NZ="New Zealand";var OM="Oman";var PA="Panama";var PE="Peru";var PF="French Polynesia";var PG="Papua New Guinea";var PH="Philippines";var PK="Pakistan";var PL="Poland";var PR="Puerto Rico";var PT="Portugal";var PY="Paraguay";var QA="Qatar";var RO="Romania";var RS="Serbia";var RU="Russia";var RW="Rwanda";var SA="Saudi Arabia";var SB="Solomon Islands";var SC="Seychelles";var SD="Sudan";var SE="Sweden";var SG="Singapore";var SH="Saint Helena";var SI="Slovenia";var SK="Slovakia";var SL="Sierra Leone";var SN="Senegal";var SO="Somalia";var SR="Suriname";var ST="Sao Tome and Principe";var SV="El Salvador";var SY="Syria";var SZ="Swaziland";var TC="Turks and Caicos Islands";var TD="Chad";var TG="Togo";var TH="Thailand";var TJ="Tajikistan";var TM="Turkmenistan";var TN="Tunisia";var TR="Turkey";var TV="Tuvalu";var TW="Taiwan";var TZ="Tanzania";var UA="Ukraine";var UG="Uganda";var US="United States";var UY="Uruguay";var UZ="Uzbekistan";var VC="Saint Vincent and the Grenadines";var VE="Venezuela";var VG="British Virgin Islands";var VN="Vietnam";var WS="Samoa";var YE="Yemen";var YT="Mayotte";var ZA="South Africa";var ZM="Zambia";var ZW="Zimbabwe";var countryNames = {AD:AD,AE:AE,AF:AF,AI:AI,AL:AL,AM:AM,AO:AO,AR:AR,AS:AS,AT:AT,AU:AU,AW:AW,AZ:AZ,BA:BA,BB:BB,BD:BD,BE:BE,BF:BF,BG:BG,BH:BH,BI:BI,BJ:BJ,BM:BM,BN:BN,BO:BO,BR:BR,BS:BS,BT:BT,BW:BW,BY:BY,BZ:BZ,CA:CA,CD:CD,CF:CF,CG:CG,CH:CH,CI:CI,CK:CK,CL:CL,CM:CM,CN:CN,CO:CO,CR:CR,CU:CU,CV:CV,CW:CW,CY:CY,CZ:CZ,DE:DE,DK:DK,DM:DM,DO:DO,DZ:DZ,EC:EC,EE:EE,EG:EG,ER:ER,ES:ES,ET:ET,FI:FI,FJ:FJ,FK:FK,FO:FO,FR:FR,GA:GA,GB:GB,GE:GE,GH:GH,GI:GI,GL:GL,GM:GM,GN:GN,GQ:GQ,GR:GR,GT:GT,GW:GW,GY:GY,HK:HK,HN:HN,HR:HR,HT:HT,HU:HU,ID:ID,IE:IE,IL:IL,IM:IM,IN:IN,IQ:IQ,IR:IR,IS:IS,IT:IT,JM:JM,JO:JO,JP:JP,KE:KE,KG:KG,KH:KH,KM:KM,KN:KN,KP:KP,KR:KR,KW:KW,KY:KY,KZ:KZ,LA:LA,LB:LB,LC:LC,LI:LI,LR:LR,LS:LS,LT:LT,LU:LU,LV:LV,LY:LY,MA:MA,MD:MD,ME:ME,MG:MG,MK:MK,ML:ML,MM:MM,MN:MN,MP:MP,MR:MR,MS:MS,MT:MT,MU:MU,MW:MW,MX:MX,MY:MY,MZ:MZ,NA:NA,NC:NC,NE:NE,NG:NG,NI:NI,NL:NL,NO:NO,NP:NP,NU:NU,NZ:NZ,OM:OM,PA:PA,PE:PE,PF:PF,PG:PG,PH:PH,PK:PK,PL:PL,PR:PR,PT:PT,PY:PY,QA:QA,RO:RO,RS:RS,RU:RU,RW:RW,SA:SA,SB:SB,SC:SC,SD:SD,SE:SE,SG:SG,SH:SH,SI:SI,SK:SK,SL:SL,SN:SN,SO:SO,SR:SR,ST:ST,SV:SV,SY:SY,SZ:SZ,TC:TC,TD:TD,TG:TG,TH:TH,TJ:TJ,TM:TM,TN:TN,TR:TR,TV:TV,TW:TW,TZ:TZ,UA:UA,UG:UG,US:US,UY:UY,UZ:UZ,VC:VC,VE:VE,VG:VG,VN:VN,WS:WS,YE:YE,YT:YT,ZA:ZA,ZM:ZM,ZW:ZW};
4024
4042
 
4025
4043
  /**
4044
+ * Location information
4045
+ * @typedef {Object} LocationPlainObj
4046
+ * @property {string} title
4047
+ * @property {string} city
4048
+ * @property {string} tzid
4049
+ * @property {number} latitude
4050
+ * @property {number} longitude
4051
+ * @property {string} cc
4052
+ * @property {string} country
4053
+ * @property {string} admin1
4054
+ * @property {string} asciiname
4055
+ * @property {string} geo
4056
+ * @property {string} zip
4057
+ * @property {string} state
4058
+ * @property {string} stateName
4059
+ * @property {number} geonameid
4060
+ */
4061
+
4062
+ /**
4063
+ * Converts a @hebcal/core `Location` to a plain JS object.
4026
4064
  * @param {Location} location
4027
- * @return {string}
4065
+ * @return {LocationPlainObj}
4028
4066
  */
4029
4067
  function locationToPlainObj(location) {
4030
4068
  if (typeof location === 'object' && location !== null && typeof location.name === 'string') {
@@ -4207,7 +4245,8 @@ function getCalendarTitle(events, options) {
4207
4245
  */
4208
4246
  function getHolidayDescription(ev) {
4209
4247
  let firstSentence = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
4210
- const str = holidayDescription[ev.getDesc()] || holidayDescription[ev.basename()] || '';
4248
+ const str0 = holidayDescription[ev.getDesc()] || holidayDescription[ev.basename()] || '';
4249
+ const str = str0.normalize();
4211
4250
  if (firstSentence && str) {
4212
4251
  const dot = str.indexOf('.');
4213
4252
  if (dot != -1) {
@@ -4568,8 +4607,8 @@ function eventToClassicApiObject(ev, options) {
4568
4607
  };
4569
4608
  }
4570
4609
  const memo = ev.memo || holidayDescription[ev.basename()];
4571
- if (memo) {
4572
- result.memo = memo;
4610
+ if (typeof memo === 'string' && memo.length !== 0) {
4611
+ result.memo = memo.normalize();
4573
4612
  } else if (typeof ev.linkedEvent !== 'undefined') {
4574
4613
  result.memo = ev.linkedEvent.render(options.locale);
4575
4614
  }