@hebcal/core 6.6.0 → 6.8.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.
Files changed (152) hide show
  1. package/README.md +4 -4
  2. package/dist/bundle.js +224 -95
  3. package/dist/bundle.js.map +1 -1
  4. package/dist/bundle.min.js +18 -18
  5. package/dist/bundle.min.js.map +1 -1
  6. package/dist/esm/CalOptions.d.ts +15 -3
  7. package/dist/esm/DailyLearning.js +1 -1
  8. package/dist/esm/HebrewDateEvent.js +1 -1
  9. package/dist/esm/HolidayEvent.d.ts +2 -2
  10. package/dist/esm/HolidayEvent.js +3 -5
  11. package/dist/esm/HolidayEvent.js.map +1 -1
  12. package/dist/esm/MevarchimChodeshEvent.js +1 -1
  13. package/dist/esm/ParshaEvent.js +16 -6
  14. package/dist/esm/ParshaEvent.js.map +1 -1
  15. package/dist/esm/TimedEvent.js +1 -1
  16. package/dist/esm/TimedEvent.js.map +1 -1
  17. package/dist/esm/YomKippurKatanEvent.js +1 -1
  18. package/dist/esm/ashkenazi.po.js +2 -2
  19. package/dist/esm/ashkenazi.po.js.map +1 -1
  20. package/dist/esm/calendar.js +17 -23
  21. package/dist/esm/calendar.js.map +1 -1
  22. package/dist/esm/candles.d.ts +8 -3
  23. package/dist/esm/candles.js +65 -11
  24. package/dist/esm/candles.js.map +1 -1
  25. package/dist/esm/cities.json.js +1 -1
  26. package/dist/esm/event.js +2 -2
  27. package/dist/esm/event.js.map +1 -1
  28. package/dist/esm/getStartAndEnd.js +8 -6
  29. package/dist/esm/getStartAndEnd.js.map +1 -1
  30. package/dist/esm/hallel.js +1 -1
  31. package/dist/esm/he-x-NoNikud.po.js +1 -1
  32. package/dist/esm/he.po.js +1 -1
  33. package/dist/esm/hebcal.js +1 -1
  34. package/dist/esm/holidays.js +6 -5
  35. package/dist/esm/holidays.js.map +1 -1
  36. package/dist/esm/index.js +1 -1
  37. package/dist/esm/isAssurBemlacha.js +1 -1
  38. package/dist/esm/isAveilut.js +1 -1
  39. package/dist/esm/isFastDay.js +1 -1
  40. package/dist/esm/locale.js +1 -1
  41. package/dist/esm/location.js +12 -13
  42. package/dist/esm/location.js.map +1 -1
  43. package/dist/esm/modern.js +1 -1
  44. package/dist/esm/molad.js +5 -5
  45. package/dist/esm/molad.js.map +1 -1
  46. package/dist/esm/moladBase.js +1 -1
  47. package/dist/esm/moladDate.js +1 -1
  48. package/dist/esm/moladDate.js.map +1 -1
  49. package/dist/esm/omer.js +1 -1
  50. package/dist/esm/parshaName.js +1 -1
  51. package/dist/esm/parshaYear.js +1 -1
  52. package/dist/esm/pkgVersion.d.ts +1 -1
  53. package/dist/esm/pkgVersion.js +2 -2
  54. package/dist/esm/pkgVersion.js.map +1 -1
  55. package/dist/esm/reformatTimeStr.js +1 -1
  56. package/dist/esm/reformatTimeStr.js.map +1 -1
  57. package/dist/esm/sedra.d.ts +14 -0
  58. package/dist/esm/sedra.js +70 -13
  59. package/dist/esm/sedra.js.map +1 -1
  60. package/dist/esm/sefira.json.js +1 -1
  61. package/dist/esm/staticHolidays.js +1 -1
  62. package/dist/esm/string.js +1 -1
  63. package/dist/esm/tachanun.js +1 -1
  64. package/dist/esm/tachanun.js.map +1 -1
  65. package/dist/esm/zmanim.js +2 -3
  66. package/dist/esm/zmanim.js.map +1 -1
  67. package/package.json +14 -17
  68. package/po/ashkenazi.po +1 -12
  69. package/dist/eslint.config.d.mts +0 -83
  70. package/dist/eslint.config.mjs +0 -29
  71. package/dist/po2json.d.ts +0 -1
  72. package/dist/po2json.js +0 -40
  73. package/dist/src/CalOptions.d.ts +0 -171
  74. package/dist/src/CalOptions.js +0 -1
  75. package/dist/src/DailyLearning.d.ts +0 -69
  76. package/dist/src/DailyLearning.js +0 -92
  77. package/dist/src/HebrewDateEvent.d.ts +0 -37
  78. package/dist/src/HebrewDateEvent.js +0 -72
  79. package/dist/src/HolidayEvent.d.ts +0 -117
  80. package/dist/src/HolidayEvent.js +0 -236
  81. package/dist/src/MevarchimChodeshEvent.d.ts +0 -26
  82. package/dist/src/MevarchimChodeshEvent.js +0 -52
  83. package/dist/src/ParshaEvent.d.ts +0 -24
  84. package/dist/src/ParshaEvent.js +0 -50
  85. package/dist/src/TimedEvent.d.ts +0 -76
  86. package/dist/src/TimedEvent.js +0 -134
  87. package/dist/src/YomKippurKatanEvent.d.ts +0 -23
  88. package/dist/src/YomKippurKatanEvent.js +0 -40
  89. package/dist/src/ashkenazi.po.d.ts +0 -84
  90. package/dist/src/ashkenazi.po.js +0 -1
  91. package/dist/src/calendar.d.ts +0 -112
  92. package/dist/src/calendar.js +0 -721
  93. package/dist/src/candles.d.ts +0 -57
  94. package/dist/src/candles.js +0 -185
  95. package/dist/src/cities.json +0 -67
  96. package/dist/src/event.d.ts +0 -233
  97. package/dist/src/event.js +0 -295
  98. package/dist/src/getStartAndEnd.d.ts +0 -6
  99. package/dist/src/getStartAndEnd.js +0 -105
  100. package/dist/src/hallel.d.ts +0 -6
  101. package/dist/src/hallel.js +0 -39
  102. package/dist/src/he-x-NoNikud.po.d.ts +0 -28
  103. package/dist/src/he-x-NoNikud.po.js +0 -1
  104. package/dist/src/he.po.d.ts +0 -217
  105. package/dist/src/he.po.js +0 -1
  106. package/dist/src/hebcal.d.ts +0 -338
  107. package/dist/src/hebcal.js +0 -413
  108. package/dist/src/holidays.d.ts +0 -41
  109. package/dist/src/holidays.js +0 -324
  110. package/dist/src/index.d.ts +0 -30
  111. package/dist/src/index.js +0 -29
  112. package/dist/src/isAssurBemlacha.d.ts +0 -29
  113. package/dist/src/isAssurBemlacha.js +0 -82
  114. package/dist/src/isAveilut.d.ts +0 -22
  115. package/dist/src/isAveilut.js +0 -48
  116. package/dist/src/isFastDay.d.ts +0 -21
  117. package/dist/src/isFastDay.js +0 -31
  118. package/dist/src/locale.d.ts +0 -1
  119. package/dist/src/locale.js +0 -11
  120. package/dist/src/location.d.ts +0 -167
  121. package/dist/src/location.js +0 -342
  122. package/dist/src/modern.d.ts +0 -18
  123. package/dist/src/modern.js +0 -59
  124. package/dist/src/molad.d.ts +0 -164
  125. package/dist/src/molad.js +0 -298
  126. package/dist/src/moladBase.d.ts +0 -15
  127. package/dist/src/moladBase.js +0 -78
  128. package/dist/src/moladDate.d.ts +0 -12
  129. package/dist/src/moladDate.js +0 -58
  130. package/dist/src/omer.d.ts +0 -128
  131. package/dist/src/omer.js +0 -385
  132. package/dist/src/parshaName.d.ts +0 -2
  133. package/dist/src/parshaName.js +0 -13
  134. package/dist/src/parshaYear.d.ts +0 -20
  135. package/dist/src/parshaYear.js +0 -35
  136. package/dist/src/pkgVersion.d.ts +0 -2
  137. package/dist/src/pkgVersion.js +0 -2
  138. package/dist/src/reformatTimeStr.d.ts +0 -8
  139. package/dist/src/reformatTimeStr.js +0 -47
  140. package/dist/src/sedra.d.ts +0 -175
  141. package/dist/src/sedra.js +0 -563
  142. package/dist/src/sefira.json +0 -63
  143. package/dist/src/staticHolidays.d.ts +0 -192
  144. package/dist/src/staticHolidays.js +0 -637
  145. package/dist/src/string.d.ts +0 -2
  146. package/dist/src/string.js +0 -6
  147. package/dist/src/tachanun.d.ts +0 -29
  148. package/dist/src/tachanun.js +0 -120
  149. package/dist/src/zmanim.d.ts +0 -620
  150. package/dist/src/zmanim.js +0 -1003
  151. package/dist/version.d.ts +0 -1
  152. package/dist/version.js +0 -8
package/dist/bundle.js CHANGED
@@ -1,11 +1,11 @@
1
- /*! @hebcal/core v6.6.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.8.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  var hebcal = (function (exports) {
3
3
  'use strict';
4
4
 
5
5
  /** DO NOT EDIT THIS AUTO-GENERATED FILE! */
6
- const version = '6.6.0';
6
+ const version = '6.8.0';
7
7
 
8
- /*! @hebcal/hdate v0.22.4, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
8
+ /*! @hebcal/hdate v0.22.5, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
9
9
  /** @private */
10
10
  const lengths = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
11
11
  /** @private */
@@ -161,7 +161,7 @@ function abs2greg(abs) {
161
161
  return dt;
162
162
  }
163
163
 
164
- /*! @hebcal/hdate v0.22.4, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
164
+ /*! @hebcal/hdate v0.22.5, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
165
165
 
166
166
  /* eslint-disable @typescript-eslint/no-namespace */
167
167
  /**
@@ -176,7 +176,7 @@ exports.greg.greg2abs = greg2abs;
176
176
  exports.greg.isDate = isDate;
177
177
  exports.greg.isLeapYear = isGregLeapYear;
178
178
 
179
- /*! @hebcal/hdate v0.22.4, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
179
+ /*! @hebcal/hdate v0.22.5, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
180
180
  /**
181
181
  * Removes niqqud from Hebrew string
182
182
  * @example
@@ -184,12 +184,15 @@ exports.greg.isLeapYear = isGregLeapYear;
184
184
  * hebrewStripNikkud('חֶשְׁוָן'); // 'חשון'
185
185
  */
186
186
  function hebrewStripNikkud(str) {
187
+ if (typeof str !== 'string') {
188
+ throw new TypeError(`bad nikkud str: ${str}`);
189
+ }
187
190
  const a = str.normalize();
188
191
  // now strip out niqqud and trope
189
192
  return a.replace(/[\u0590-\u05bd]/g, '').replace(/[\u05bf-\u05c7]/g, '');
190
193
  }
191
194
 
192
- /*! @hebcal/hdate v0.22.4, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
195
+ /*! @hebcal/hdate v0.22.5, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
193
196
 
194
197
  /*
195
198
  * More minimal HDate
@@ -509,6 +512,9 @@ function monthFromName(monthName) {
509
512
  }
510
513
  return monthName;
511
514
  }
515
+ if (typeof monthName !== 'string') {
516
+ throw new TypeError(`bad monthName: ${monthName}`);
517
+ }
512
518
  let c = monthName.trim().toLowerCase();
513
519
  // remove all niqud and trailing gershayim (for Adar Alef/Bet)
514
520
  c = hebrewStripNikkud(c).replace(/׳$/, '');
@@ -617,7 +623,7 @@ function monthFromName(monthName) {
617
623
  throw new RangeError(`bad monthName: ${monthName}`);
618
624
  }
619
625
 
620
- /*! @hebcal/hdate v0.22.4, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
626
+ /*! @hebcal/hdate v0.22.5, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
621
627
 
622
628
  const NISAN$4 = months.NISAN;
623
629
  const CHESHVAN$1 = months.CHESHVAN;
@@ -769,7 +775,7 @@ function getBirthdayHD(hyear, date) {
769
775
  return { yy: hyear, mm: month, dd: day };
770
776
  }
771
777
 
772
- /*! @hebcal/hdate v0.22.4, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
778
+ /*! @hebcal/hdate v0.22.5, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
773
779
  const GERESH = '׳';
774
780
  const GERSHAYIM = '״';
775
781
  const heb2num = {
@@ -869,6 +875,9 @@ function gematriya(num) {
869
875
  * gematriyaStrToNum('ג׳תשס״א'); // 3761 (thousands prefix)
870
876
  */
871
877
  function gematriyaStrToNum(str) {
878
+ if (typeof str !== 'string') {
879
+ throw new TypeError(`bad gematriya str: ${str}`);
880
+ }
872
881
  let num = 0;
873
882
  const gereshIdx = str.indexOf(GERESH);
874
883
  if (gereshIdx !== -1 && gereshIdx !== str.length - 1) {
@@ -885,7 +894,7 @@ function gematriyaStrToNum(str) {
885
894
  return num;
886
895
  }
887
896
 
888
- /*! @hebcal/hdate v0.22.4, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
897
+ /*! @hebcal/hdate v0.22.5, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
889
898
  /**
890
899
  * Formats a number with leading zeros so the resulting string is 4 digits long.
891
900
  * Similar to `string.padStart(4, '0')` but will also format
@@ -925,7 +934,7 @@ function pad2(num) {
925
934
  return String(num);
926
935
  }
927
936
 
928
- /*! @hebcal/hdate v0.22.4, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
937
+ /*! @hebcal/hdate v0.22.5, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
929
938
 
930
939
  const _formatters = new Map();
931
940
  /**
@@ -1007,13 +1016,13 @@ function isoDateString(dt) {
1007
1016
  pad2(dt.getDate()));
1008
1017
  }
1009
1018
 
1010
- /*! @hebcal/hdate v0.22.4, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1019
+ /*! @hebcal/hdate v0.22.5, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1011
1020
  var poAshkenazi$1 = { "headers": { "plural-forms": "nplurals=2; plural=(n > 1);", "language": "und-x-ashkenaz" }, "contexts": { "": { "Tevet": ["Teves"] } } };
1012
1021
 
1013
- /*! @hebcal/hdate v0.22.4, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1022
+ /*! @hebcal/hdate v0.22.5, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1014
1023
  var poHe$1 = { "headers": { "plural-forms": "nplurals=2; plural=(n > 1);", "language": "he" }, "contexts": { "": { "Adar": ["אֲדָר"], "Adar I": ["אֲדָר א׳"], "Adar II": ["אֲדָר ב׳"], "Av": ["אָב"], "Cheshvan": ["חֶשְׁוָן"], "Elul": ["אֱלוּל"], "Iyyar": ["אִיָּיר"], "Kislev": ["כִּסְלֵו"], "Nisan": ["נִיסָן"], "Sh'vat": ["שְׁבָט"], "Sivan": ["סִיוָן"], "Tamuz": ["תַּמּוּז"], "Tammuz": ["תַּמּוּז"], "Tevet": ["טֵבֵת"], "Tishrei": ["תִּשְׁרֵי"] } } };
1015
1024
 
1016
- /*! @hebcal/hdate v0.22.4, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1025
+ /*! @hebcal/hdate v0.22.5, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1017
1026
 
1018
1027
  const noopLocale = {
1019
1028
  headers: { 'plural-forms': 'nplurals=2; plural=(n!=1);' },
@@ -1250,7 +1259,7 @@ Locale.addLocale('he', poHe$1);
1250
1259
  const poHeNoNikud$1 = Locale.copyLocaleNoNikud(poHe$1);
1251
1260
  Locale.addLocale('he-x-NoNikud', poHeNoNikud$1);
1252
1261
 
1253
- /*! @hebcal/hdate v0.22.4, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1262
+ /*! @hebcal/hdate v0.22.5, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1254
1263
 
1255
1264
  /*
1256
1265
  Hebcal - A Jewish Calendar Generator
@@ -1812,6 +1821,9 @@ class HDate {
1812
1821
  }
1813
1822
  return month;
1814
1823
  }
1824
+ if (typeof month !== 'string') {
1825
+ throw new TypeError(`bad monthNum: ${month}`);
1826
+ }
1815
1827
  return month.charCodeAt(0) >= 48 && month.charCodeAt(0) <= 57 /* number */
1816
1828
  ? parseInt(month, 10)
1817
1829
  : monthFromName(month);
@@ -1899,6 +1911,9 @@ class HDate {
1899
1911
  * HDate.fromGematriyaString('ה׳ אִיָיר תש״ח') // 5 Iyyar 5708
1900
1912
  */
1901
1913
  static fromGematriyaString(str, currentThousands = 5000) {
1914
+ if (typeof str !== 'string') {
1915
+ throw new TypeError(`bad gematriya str: ${str}`);
1916
+ }
1902
1917
  const parts = str.split(' ').filter(x => x.length !== 0);
1903
1918
  const numParts = parts.length;
1904
1919
  if (numParts !== 3 && numParts !== 4) {
@@ -2019,7 +2034,7 @@ function onOrBefore(day, t, offset) {
2019
2034
  return new HDate(HDate.dayOnOrBefore(day, t.abs() + offset));
2020
2035
  }
2021
2036
 
2022
- var poAshkenazi = { "headers": { "plural-forms": "nplurals=2; plural=(n > 1);", "language": "en_CA@ashkenazi" }, "contexts": { "": { "Shabbat": ["Shabbos"], "Achrei Mot": ["Achrei Mos"], "Bechukotai": ["Bechukosai"], "Beha'alotcha": ["Beha’aloscha"], "Bereshit": ["Bereshis"], "Chukat": ["Chukas"], "Erev Shavuot": ["Erev Shavuos"], "Erev Sukkot": ["Erev Sukkos"], "Ki Tavo": ["Ki Savo"], "Ki Teitzei": ["Ki Seitzei"], "Ki Tisa": ["Ki Sisa"], "Matot": ["Matos"], "Pesach Shabbat Chol ha-Moed": ["Pesach Shabbos Chol ha-Moed"], "Purim Katan": ["Purim Koton"], "Rosh Hashana LaBehemot": ["Rosh Hashana LaBeheimos"], "Shabbat Chazon": ["Shabbos Chazon"], "Shabbat HaChodesh": ["Shabbos HaChodesh"], "Shabbat HaGadol": ["Shabbos HaGadol"], "Shabbat Nachamu": ["Shabbos Nachamu"], "Shabbat Parah": ["Shabbos Parah"], "Shabbat Shekalim": ["Shabbos Shekalim"], "Shabbat Shuva": ["Shabbos Shuvah"], "Shabbat Zachor": ["Shabbos Zachor"], "Shavuot": ["Shavuos"], "Shavuot I": ["Shavuos I"], "Shavuot II": ["Shavuos II"], "Shemot": ["Shemos"], "Shmini Atzeret": ["Shmini Atzeres"], "Simchat Torah": ["Simchas Torah"], "Sukkot": ["Sukkos"], "Sukkot I": ["Sukkos I"], "Sukkot II": ["Sukkos II"], "Sukkot II (CH''M)": ["Sukkos II (CH’’M)"], "Sukkot III (CH''M)": ["Sukkos III (CH’’M)"], "Sukkot IV (CH''M)": ["Sukkos IV (CH’’M)"], "Sukkot V (CH''M)": ["Sukkos V (CH’’M)"], "Sukkot VI (CH''M)": ["Sukkos VI (CH’’M)"], "Sukkot VII (Hoshana Raba)": ["Sukkos VII (Hoshana Raba)"], "Sukkot Shabbat Chol ha-Moed": ["Sukkos Shabbos Chol ha-Moed"], "Ta'anit Bechorot": ["Ta’anis Bechoros"], "Ta'anit BeHaB": ["Ta’anis BeHaB"], "Ta'anit Esther": ["Ta’anis Esther"], "Toldot": ["Toldos"], "Vaetchanan": ["Vaeschanan"], "Yitro": ["Yisro"], "Vezot Haberakhah": ["Vezos Haberakhah"], "Parashat": ["Parshas"], "Leil Selichot": ["Leil Selichos"], "Shabbat Mevarchim Chodesh": ["Shabbos Mevorchim Chodesh"], "Shabbat Shirah": ["Shabbos Shirah"], "Asara B'Tevet": ["Asara B’Teves"], "Birkat Hachamah": ["Birkas HaChamah"], "Birkat HaChamah": ["Birkas HaChamah"], "Shushan Purim Katan": ["Shushan Purim Koton"], "Alot HaShachar": ["Alos HaShachar"], "Misheyakir": ["Misheyakir"], "Misheyakir Machmir": ["Misheyakir Machmir"], "Sunrise": ["Sunrise"], "Kriat Shema, sof zeman": ["Krias Shema, sof zman"], "Tefilah, sof zeman": ["Tefilah, sof zman"], "Kriat Shema, sof zeman (MGA)": ["Krias Shema, sof zman (MGA)"], "Kriat Shema, sof zeman (GRA)": ["Krias Shema, sof zman (GRA)"], "Tefilah, sof zeman (MGA)": ["Tefilah, sof zman (MGA)"], "Tefilah, sof zeman (GRA)": ["Tefilah, sof zman (GRA)"], "Chatzot HaLailah": ["Chatzos HaLailah"], "Chatzot HaYom": ["Chatzos"], "Chatzot hayom": ["Chatzos"], "Mincha Gedolah": ["Mincha Gedolah"], "Mincha Ketanah": ["Mincha Ketanah"], "Plag HaMincha": ["Plag HaMincha"], "Sunset": ["Sunset"], "Bein HaShemashot": ["Bein HaShemashos"], "Tzeit HaKochavim": ["Tzeis HaKochavim"] } } };
2037
+ var poAshkenazi = { "headers": { "plural-forms": "nplurals=2; plural=(n > 1);", "language": "und-x-ashkenaz" }, "contexts": { "": { "Shabbat": ["Shabbos"], "Achrei Mot": ["Achrei Mos"], "Bechukotai": ["Bechukosai"], "Beha'alotcha": ["Beha’aloscha"], "Bereshit": ["Bereshis"], "Chukat": ["Chukas"], "Erev Shavuot": ["Erev Shavuos"], "Erev Sukkot": ["Erev Sukkos"], "Ki Tavo": ["Ki Savo"], "Ki Teitzei": ["Ki Seitzei"], "Ki Tisa": ["Ki Sisa"], "Matot": ["Matos"], "Pesach Shabbat Chol ha-Moed": ["Pesach Shabbos Chol ha-Moed"], "Purim Katan": ["Purim Koton"], "Rosh Hashana LaBehemot": ["Rosh Hashana LaBeheimos"], "Shabbat Chazon": ["Shabbos Chazon"], "Shabbat HaChodesh": ["Shabbos HaChodesh"], "Shabbat HaGadol": ["Shabbos HaGadol"], "Shabbat Nachamu": ["Shabbos Nachamu"], "Shabbat Parah": ["Shabbos Parah"], "Shabbat Shekalim": ["Shabbos Shekalim"], "Shabbat Shuva": ["Shabbos Shuvah"], "Shabbat Zachor": ["Shabbos Zachor"], "Shavuot": ["Shavuos"], "Shavuot I": ["Shavuos I"], "Shavuot II": ["Shavuos II"], "Shemot": ["Shemos"], "Shmini Atzeret": ["Shmini Atzeres"], "Simchat Torah": ["Simchas Torah"], "Sukkot": ["Sukkos"], "Sukkot I": ["Sukkos I"], "Sukkot II": ["Sukkos II"], "Sukkot II (CH''M)": ["Sukkos II (CH’’M)"], "Sukkot III (CH''M)": ["Sukkos III (CH’’M)"], "Sukkot IV (CH''M)": ["Sukkos IV (CH’’M)"], "Sukkot V (CH''M)": ["Sukkos V (CH’’M)"], "Sukkot VI (CH''M)": ["Sukkos VI (CH’’M)"], "Sukkot VII (Hoshana Raba)": ["Sukkos VII (Hoshana Raba)"], "Sukkot Shabbat Chol ha-Moed": ["Sukkos Shabbos Chol ha-Moed"], "Ta'anit Bechorot": ["Ta’anis Bechoros"], "Ta'anit BeHaB": ["Ta’anis BeHaB"], "Ta'anit Esther": ["Ta’anis Esther"], "Toldot": ["Toldos"], "Vaetchanan": ["Vaeschanan"], "Yitro": ["Yisro"], "Vezot Haberakhah": ["Vezos Haberakhah"], "Parashat": ["Parshas"], "Leil Selichot": ["Leil Selichos"], "Shabbat Mevarchim Chodesh": ["Shabbos Mevorchim Chodesh"], "Shabbat Shirah": ["Shabbos Shirah"], "Asara B'Tevet": ["Asara B’Teves"], "Birkat Hachamah": ["Birkas HaChamah"], "Birkat HaChamah": ["Birkas HaChamah"], "Shushan Purim Katan": ["Shushan Purim Koton"], "Alot HaShachar": ["Alos HaShachar"], "Misheyakir": ["Misheyakir"], "Misheyakir Machmir": ["Misheyakir Machmir"], "Sunrise": ["Sunrise"], "Kriat Shema, sof zeman": ["Krias Shema, sof zman"], "Tefilah, sof zeman": ["Tefilah, sof zman"], "Kriat Shema, sof zeman (MGA)": ["Krias Shema, sof zman (MGA)"], "Kriat Shema, sof zeman (GRA)": ["Krias Shema, sof zman (GRA)"], "Tefilah, sof zeman (MGA)": ["Tefilah, sof zman (MGA)"], "Tefilah, sof zeman (GRA)": ["Tefilah, sof zman (GRA)"], "Chatzot HaLailah": ["Chatzos HaLailah"], "Chatzot HaYom": ["Chatzos"], "Chatzot hayom": ["Chatzos"], "Mincha Gedolah": ["Mincha Gedolah"], "Mincha Ketanah": ["Mincha Ketanah"], "Plag HaMincha": ["Plag HaMincha"], "Sunset": ["Sunset"], "Bein HaShemashot": ["Bein HaShemashos"], "Tzeit HaKochavim": ["Tzeis HaKochavim"] } } };
2023
2038
 
2024
2039
  var poHe = { "headers": { "plural-forms": "nplurals=2; plural=(n > 1);", "language": "he_IL" }, "contexts": { "": { "Shabbat": ["שַׁבָּת"], "Parashat": ["פָּרָשַׁת"], "Achrei Mot": ["אַחֲרֵי מוֹת"], "Balak": ["בָּלָק"], "Bamidbar": ["בְּמִדְבַּר"], "Bechukotai": ["בְּחֻקֹּתַי"], "Beha'alotcha": ["בְּהַעֲלֹתְךָ"], "Behar": ["בְּהַר"], "Bereshit": ["בְּרֵאשִׁית"], "Beshalach": ["בְּשַׁלַּח"], "Bo": ["בֹּא"], "Chayei Sara": ["חַיֵּי שָֹרָה"], "Chukat": ["חֻקַּת"], "Devarim": ["דְּבָרִים"], "Eikev": ["עֵקֶב"], "Emor": ["אֱמוֹר"], "Ha'azinu": ["הַאֲזִינוּ"], "Kedoshim": ["קְדֹשִׁים"], "Ki Tavo": ["כִּי־תָבוֹא"], "Ki Teitzei": ["כִּי־תֵצֵא"], "Ki Tisa": ["כִּי תִשָּׂא"], "Korach": ["קֹרַח"], "Lech-Lecha": ["לֶךְ־לְךָ"], "Masei": ["מַסְעֵי"], "Matot": ["מַטּוֹת"], "Metzora": ["מְצֹרָע"], "Miketz": ["מִקֵּץ"], "Mishpatim": ["מִשְׁפָּטִים"], "Nasso": ["נָשׂא"], "Nitzavim": ["נִצָּבִים"], "Noach": ["נֹחַ"], "Pekudei": ["פְקוּדֵי"], "Pinchas": ["פִּינְחָס"], "Re'eh": ["רְאֵה"], "Sh'lach": ["שְׁלַח־לְךָ"], "Shemot": ["שְׁמוֹת"], "Shmini": ["שְּׁמִינִי"], "Shoftim": ["שׁוֹפְטִים"], "Tazria": ["תַזְרִיעַ"], "Terumah": ["תְּרוּמָה"], "Tetzaveh": ["תְּצַוֶּה"], "Toldot": ["תּוֹלְדוֹת"], "Tzav": ["צַו"], "Vaera": ["וָאֵרָא"], "Vaetchanan": ["וָאֶתְחַנַּן"], "Vayakhel": ["וַיַּקְהֵל"], "Vayechi": ["וַיְחִי"], "Vayeilech": ["וַיֵּלֶךְ"], "Vayera": ["וַיֵּרָא"], "Vayeshev": ["וַיֵּשֶׁב"], "Vayetzei": ["וַיֵּצֵא"], "Vayigash": ["וַיִּגַּשׁ"], "Vayikra": ["וַיִּקְרָא"], "Vayishlach": ["וַיִּשְׁלַח"], "Vezot Haberakhah": ["וְזֹאת הַבְּרָכָה"], "Yitro": ["יִתְרוֹ"], "Asara B'Tevet": ["עֲשָׂרָה בְּטֵבֵת"], "Candle lighting": ["הַדְלָקַת נֵרוֹת"], "Chanukah": ["חֲנוּכָּה"], "Chanukah: 1 Candle": ["חֲנוּכָּה: א׳ נֵר"], "Chanukah: 2 Candles": ["חֲנוּכָּה: ב׳ נֵרוֹת"], "Chanukah: 3 Candles": ["חֲנוּכָּה: ג׳ נֵרוֹת"], "Chanukah: 4 Candles": ["חֲנוּכָּה: ד׳ נֵרוֹת"], "Chanukah: 5 Candles": ["חֲנוּכָּה: ה׳ נֵרוֹת"], "Chanukah: 6 Candles": ["חֲנוּכָּה: ו׳ נֵרוֹת"], "Chanukah: 7 Candles": ["חֲנוּכָּה: ז׳ נֵרוֹת"], "Chanukah: 8 Candles": ["חֲנוּכָּה: ח׳ נֵרוֹת"], "Chanukah: 8th Day": ["חֲנוּכָּה: יוֹם ח׳"], "Days of the Omer": ["סְפִירַת הָעוֹמֶר"], "Omer": ["עוֹמֶר"], "day of the Omer": ["בָּעוֹמֶר"], "Erev Pesach": ["עֶרֶב פֶּסַח"], "Erev Purim": ["עֶרֶב פּוּרִים"], "Erev Rosh Hashana": ["עֶרֶב רֹאשׁ הַשָּׁנָה"], "Erev Shavuot": ["עֶרֶב שָׁבוּעוֹת"], "Erev Simchat Torah": ["עֶרֶב שִׂמְחַת תּוֹרָה"], "Erev Sukkot": ["עֶרֶב סֻכּוֹת"], "Erev Tish'a B'Av": ["עֶרֶב תִּשְׁעָה בְּאָב"], "Erev Yom Kippur": ["עֶרֶב יוֹם כִּפּוּר"], "Havdalah": ["הַבְדָּלָה"], "Lag BaOmer": ["ל״ג בָּעוֹמֶר"], "Leil Selichot": ["סְלִיחוֹת"], "Pesach": ["פֶּסַח"], "Pesach I": ["פֶּסַח א׳"], "Pesach II": ["פֶּסַח ב׳"], "Pesach II (CH''M)": ["פֶּסַח ב׳ (חוה״מ)"], "Pesach III (CH''M)": ["פֶּסַח ג׳ (חוה״מ)"], "Pesach IV (CH''M)": ["פֶּסַח ד׳ (חוה״מ)"], "Pesach Sheni": ["פֶּסַח שֵׁנִי"], "Pesach V (CH''M)": ["פֶּסַח ה׳ (חוה״מ)"], "Pesach VI (CH''M)": ["פֶּסַח ו׳ (חוה״מ)"], "Pesach VII": ["פֶּסַח ז׳"], "Pesach VIII": ["פֶּסַח ח׳"], "Pesach Shabbat Chol ha-Moed": ["פֶּסַח שַׁבָּת חֹל הַמּוֹעֵד"], "Purim": ["פּוּרִים"], "Purim Katan": ["פּוּרִים קָטָן"], "Rosh Chodesh": ["רֹאשׁ חוֹדֶשׁ"], "Rosh Hashana": ["רֹאשׁ הַשָּׁנָה"], "Rosh Hashana I": ["רֹאשׁ הַשָּׁנָה א׳"], "Rosh Hashana II": ["רֹאשׁ הַשָּׁנָה ב׳"], "Shabbat Chazon": ["שַׁבַּת חֲזוֹן"], "Shabbat HaChodesh": ["שַׁבַּת הַחֹדֶשׁ"], "Shabbat HaGadol": ["שַׁבַּת הַגָּדוֹל"], "Shabbat Nachamu": ["שַׁבַּת נַחֲמוּ"], "Shabbat Parah": ["שַׁבַּת פָּרָה"], "Shabbat Shekalim": ["שַׁבַּת שְׁקָלִים"], "Shabbat Shuva": ["שַׁבַּת שׁוּבָה"], "Shabbat Zachor": ["שַׁבַּת זָכוֹר"], "Shavuot": ["שָׁבוּעוֹת"], "Shavuot I": ["שָׁבוּעוֹת א׳"], "Shavuot II": ["שָׁבוּעוֹת ב׳"], "Shmini Atzeret": ["שְׁמִינִי עֲצֶרֶת"], "Shushan Purim": ["שׁוּשָׁן פּוּרִים"], "Sigd": ["חַג הַסִּיגְד"], "Simchat Torah": ["שִׂמְחַת תּוֹרָה"], "Sukkot": ["סֻכּוֹת"], "Sukkot I": ["סֻכּוֹת א׳"], "Sukkot II": ["סֻכּוֹת ב׳"], "Sukkot II (CH''M)": ["סֻכּוֹת ב׳ (חוה״מ)"], "Sukkot III (CH''M)": ["סֻכּוֹת ג׳ (חוה״מ)"], "Sukkot IV (CH''M)": ["סֻכּוֹת ד׳ (חוה״מ)"], "Sukkot V (CH''M)": ["סֻכּוֹת ה׳ (חוה״מ)"], "Sukkot VI (CH''M)": ["סֻכּוֹת ו׳ (חוה״מ)"], "Sukkot VII (Hoshana Raba)": ["סֻכּוֹת ז׳ (הוֹשַׁעְנָא רַבָּה)"], "Sukkot Shabbat Chol ha-Moed": ["סֻכּוֹת שַׁבָּת חֹל הַמּוֹעֵד"], "Ta'anit Bechorot": ["תַּעֲנִית בְּכוֹרוֹת"], "Ta'anit BeHaB": ["תַּעֲנִית בה״ב"], "Ta'anit Esther": ["תַּעֲנִית אֶסְתֵּר"], "Tish'a B'Av": ["תִּשְׁעָה בְּאָב"], "Tu B'Av": ["ט״וּ בְּאָב"], "Tu BiShvat": ["ט״וּ בִּשְׁבָט"], "Tu B'Shvat": ["ט״וּ בִּשְׁבָט"], "Tzom Gedaliah": ["צוֹם גְּדַלְיָה"], "Tzom Tammuz": ["צוֹם י״ז בְּתַמּוּז"], "Yom HaAtzma'ut": ["יוֹם הָעַצְמָאוּת"], "Yom HaShoah": ["יוֹם הַשּׁוֹאָה"], "Yom HaZikaron": ["יוֹם הַזִּכָּרוֹן"], "Yom Kippur": ["יוֹם כִּפּוּר"], "Yom Yerushalayim": ["יוֹם יְרוּשָׁלַיִם"], "Yom HaAliyah": ["יוֹם הַעֲלִיָּה"], "Yom HaAliyah School Observance": ["שְׁמִירָת בֵּית הַסֵפֶר לְיוֹם הַעֲלִיָּה"], "Rosh Chodesh Adar": ["רֹאשׁ חוֹדֶשׁ אֲדָר"], "Rosh Chodesh Adar I": ["רֹאשׁ חוֹדֶשׁ אֲדָר א׳"], "Rosh Chodesh Adar II": ["רֹאשׁ חוֹדֶשׁ אֲדָר ב׳"], "Rosh Chodesh Av": ["רֹאשׁ חוֹדֶשׁ אָב"], "Rosh Chodesh Cheshvan": ["רֹאשׁ חוֹדֶשׁ חֶשְׁוָן"], "Rosh Chodesh Elul": ["רֹאשׁ חוֹדֶשׁ אֱלוּל"], "Rosh Chodesh Iyyar": ["רֹאשׁ חוֹדֶשׁ אִיָּיר"], "Rosh Chodesh Kislev": ["רֹאשׁ חוֹדֶשׁ כִּסְלֵו"], "Rosh Chodesh Nisan": ["רֹאשׁ חוֹדֶשׁ נִיסָן"], "Rosh Chodesh Sh'vat": ["רֹאשׁ חוֹדֶשׁ שְׁבָט"], "Rosh Chodesh Sivan": ["רֹאשׁ חוֹדֶשׁ סִיוָן"], "Rosh Chodesh Tamuz": ["רֹאשׁ חוֹדֶשׁ תַּמּוּז"], "Rosh Chodesh Tammuz": ["רֹאשׁ חוֹדֶשׁ תַּמּוּז"], "Rosh Chodesh Tevet": ["רֹאשׁ חוֹדֶשׁ טֵבֵת"], "min": ["דַּקּוֹת"], "Fast begins": ["תְּחִילַּת הַצוֹם"], "Fast ends": ["סִיּוּם הַצוֹם"], "Rosh Hashana LaBehemot": ["רֹאשׁ הַשָּׁנָה לְמַעְשַׂר בְּהֵמָה"], "Tish'a B'Av (observed)": ["(תִּשְׁעָה בְּאָב (נִדְחָה"], "Shabbat Mevarchim Chodesh": ["שַׁבַּת מְבָרְכִים חוֹדֶשׁ"], "Shabbat Shirah": ["שַׁבַּת שִׁירָה"], "Lovingkindness": ["חֶסֶד"], "Might": ["גְּבוּרָה"], "Beauty": ["תִּפְאֶרֶת"], "Eternity": ["נֶּצַח"], "Splendor": ["הוֹד"], "Foundation": ["יְּסוֹד"], "Majesty": ["מַּלְכוּת"], "day": ["יוֹם"], "Yom Kippur Katan": ["יוֹם כִּפּוּר קָטָן"], "Yizkor": ["יִזְכּוֹר"], "Family Day": ["יוֹם הַמִּשׁפָּחָה"], "Yitzhak Rabin Memorial Day": ["יוֹם הַזִּכָּרוֹן לְיִצְחָק רַבִּין"], "Jabotinsky Day": ["יוֹם זַ׳בּוֹטִינְסְקִי"], "Herzl Day": ["יוֹם הֶרְצְל"], "Ben-Gurion Day": ["יוֹם בֶּן־גּוּרִיּוֹן"], "Hebrew Language Day": ["יוֹם הַשָׂפָה הַעִברִית"], "Birkat Hachamah": ["בִּרְכַּת הַחַמָּה"], "Birkat HaChamah": ["בִּרְכַּת הַחַמָּה"], "Shushan Purim Katan": ["שׁוּשָׁן פּוּרִים קָטָן"], "Purim Meshulash": ["פּוּרִים מְשׁוּלָּשׁ"], "Chag HaBanot": ["חַג הַבָּנוֹת"], "Molad": ["מוֹלָד הָלְּבָנָה"], "chalakim": ["חֲלָקִים"], "Alot HaShachar": ["עֲלוֹת הַשַּׁחַר"], "Misheyakir": ["מִשֶּׁיַּכִּיר"], "Misheyakir Machmir": ["מִשֶּׁיַּכִּיר מַחְמִיר"], "Sunrise": ["נֵץ הַחַמָּה"], "Kriat Shema, sof zeman": ["סוֹף זְמַן קְרִיאַת שְׁמַע"], "Tefilah, sof zeman": ["סוֹף זְמַן תְּפִלָּה"], "Kriat Shema, sof zeman (MGA)": ["סוֹף זְמַן קְרִיאַת שְׁמַע (מג״א)"], "Kriat Shema, sof zeman (GRA)": ["סוֹף זְמַן קְרִיאַת שְׁמַע (גְּרָ״א)"], "Tefilah, sof zeman (MGA)": ["סוֹף זְמַן תְּפִלָּה (מג״א)"], "Tefilah, sof zeman (GRA)": ["סוֹף זְמַן תְּפִלָּה (גְּרָ״א)"], "Chatzot HaLailah": ["חֲצוֹת הַלַּיְלָה"], "Chatzot HaYom": ["חֲצוֹת הַיּוֹם"], "Chatzot hayom": ["חֲצוֹת הַיּוֹם"], "Mincha Gedolah": ["מִנְחָה גְּדוֹלָה"], "Mincha Ketanah": ["מִנְחָה קְטַנָּה"], "Plag HaMincha": ["פְּלַג הַמִּנְחָה"], "Sunset": ["שְׁקִיעַת הַחַמָּה"], "Bein HaShemashot": ["בֵּין הַשְּׁמָשׁוֹת"], "Tzeit HaKochavim": ["צֵאת הַכּוֹכָבִים"], "Biur Chametz": ["בִּעוּר חָמֵץ"], "Finish eating chametz": ["סוֹף זְמַן אֲכִילַת חָמֵץ"] } } };
2025
2040
 
@@ -2145,7 +2160,7 @@ class Event {
2145
2160
  if (!HDate.isHDate(date)) {
2146
2161
  throw new TypeError(`Invalid Event date: ${date}`);
2147
2162
  }
2148
- else if (typeof desc !== 'string') {
2163
+ if (typeof desc !== 'string') {
2149
2164
  throw new TypeError(`Invalid Event description: ${desc}`);
2150
2165
  }
2151
2166
  this.date = date;
@@ -8561,6 +8576,9 @@ class Location extends GeoLocation {
8561
8576
  super(cityName || null, lat, long, elev, tzid);
8562
8577
  this.il = Boolean(il);
8563
8578
  this.cc = countryCode;
8579
+ if (countryCode === 'IL') {
8580
+ this.il = true;
8581
+ }
8564
8582
  this.geoid = geoid;
8565
8583
  }
8566
8584
  /**
@@ -8600,7 +8618,7 @@ class Location extends GeoLocation {
8600
8618
  if (name[comma + 3] === 'C') {
8601
8619
  return name.substring(0, comma + 4);
8602
8620
  }
8603
- else if (name[comma + 3] === '.' && name[comma + 4] === 'C') {
8621
+ if (name[comma + 3] === '.' && name[comma + 4] === 'C') {
8604
8622
  return name.substring(0, comma + 6);
8605
8623
  }
8606
8624
  }
@@ -8697,15 +8715,13 @@ class Location extends GeoLocation {
8697
8715
  if (tz === 0) {
8698
8716
  return 'UTC';
8699
8717
  }
8700
- else {
8701
- const plus = tz > 0 ? '+' : '';
8702
- return `Etc/GMT${plus}${tz}`;
8703
- }
8718
+ const plus = tz > 0 ? '+' : '';
8719
+ return `Etc/GMT${plus}${tz}`;
8704
8720
  }
8705
- else if (tz === 2 && dst === 'israel') {
8721
+ if (tz === 2 && dst === 'israel') {
8706
8722
  return 'Asia/Jerusalem';
8707
8723
  }
8708
- else if (dst === 'eu') {
8724
+ if (dst === 'eu') {
8709
8725
  switch (tz) {
8710
8726
  case -2:
8711
8727
  return 'Atlantic/Cape_Verde';
@@ -8719,7 +8735,7 @@ class Location extends GeoLocation {
8719
8735
  return 'Europe/Athens';
8720
8736
  }
8721
8737
  }
8722
- else if (dst === 'usa') {
8738
+ if (dst === 'usa') {
8723
8739
  return ZIPCODES_TZ_MAP[String(tz * -1)];
8724
8740
  }
8725
8741
  return undefined;
@@ -8737,12 +8753,10 @@ class Location extends GeoLocation {
8737
8753
  if (tz === 10 && state === 'AK') {
8738
8754
  return 'America/Adak';
8739
8755
  }
8740
- else if (tz === 7 && state === 'AZ') {
8756
+ if (tz === 7 && state === 'AZ') {
8741
8757
  return dst === 'Y' ? 'America/Denver' : 'America/Phoenix';
8742
8758
  }
8743
- else {
8744
- return ZIPCODES_TZ_MAP[tz];
8745
- }
8759
+ return ZIPCODES_TZ_MAP[tz];
8746
8760
  }
8747
8761
  /**
8748
8762
  * Registers a new named location with the built-in `Location.lookup()`
@@ -8990,7 +9004,7 @@ function getDayNames(locale) {
8990
9004
  if (Locale.isHebrewLocale(locale)) {
8991
9005
  return heDayNames;
8992
9006
  }
8993
- else if (locale === 'fr') {
9007
+ if (locale === 'fr') {
8994
9008
  return frDoW;
8995
9009
  }
8996
9010
  return enDoW;
@@ -8998,11 +9012,11 @@ function getDayNames(locale) {
8998
9012
  function getHebrewTimeOfDay(hour) {
8999
9013
  if (hour < 5)
9000
9014
  return night;
9001
- else if (hour < 12)
9015
+ if (hour < 12)
9002
9016
  return 'בַּבֹּקֶר';
9003
- else if (hour < 17)
9017
+ if (hour < 17)
9004
9018
  return 'בַּצׇּהֳרַיִים';
9005
- else if (hour < 21)
9019
+ if (hour < 21)
9006
9020
  return 'בָּעֶרֶב';
9007
9021
  return night;
9008
9022
  }
@@ -10155,8 +10169,7 @@ class Zmanim {
10155
10169
  if (isNaN(date.getTime())) {
10156
10170
  return '0000-00-00T00:00:00Z';
10157
10171
  }
10158
- return (getPseudoISO(tzid, date).substring(0, 19) +
10159
- Zmanim.timeZoneOffset(tzid, date));
10172
+ return (getPseudoISO(tzid, date).substring(0, 19) + Zmanim.timeZoneOffset(tzid, date));
10160
10173
  }
10161
10174
  /**
10162
10175
  * Returns sunrise + `offset` minutes (either positive or negative).
@@ -10337,12 +10350,10 @@ function yearType(hyear) {
10337
10350
  if (longC && !shortK) {
10338
10351
  return COMPLETE;
10339
10352
  }
10340
- else if (!longC && shortK) {
10353
+ if (!longC && shortK) {
10341
10354
  return INCOMPLETE;
10342
10355
  }
10343
- else {
10344
- return REGULAR;
10345
- }
10356
+ return REGULAR;
10346
10357
  }
10347
10358
  /**
10348
10359
  * Represents the weekly Torah-reading (Parashat HaShavua) schedule for an
@@ -10425,23 +10436,21 @@ class Sedra {
10425
10436
  }
10426
10437
  return this.findInternal(parsha);
10427
10438
  }
10428
- else if (typeof parsha === 'string') {
10439
+ if (typeof parsha === 'string') {
10429
10440
  const num = parsha2id.get(parsha);
10430
10441
  if (typeof num === 'number') {
10431
10442
  return this.find(num);
10432
10443
  }
10433
- else if (parsha.includes('-')) {
10444
+ if (parsha.includes('-')) {
10434
10445
  if (parsha === CHMPESACH || parsha === CHMSUKOT) {
10435
10446
  return this.findInternal(parsha);
10436
10447
  }
10437
10448
  return this.find(parsha.split('-'));
10438
10449
  }
10439
- else {
10440
- // try to find Saturday holiday like 'Yom Kippur'
10441
- return this.findInternal(parsha);
10442
- }
10450
+ // try to find Saturday holiday like 'Yom Kippur'
10451
+ return this.findInternal(parsha);
10443
10452
  }
10444
- else if (Array.isArray(parsha)) {
10453
+ if (Array.isArray(parsha)) {
10445
10454
  const plen = parsha.length;
10446
10455
  if ((plen !== 1 && plen !== 2) || typeof parsha[0] !== 'string') {
10447
10456
  throw new TypeError(`Invalid parsha argument: ${JSON.stringify(parsha)}`);
@@ -10580,7 +10589,7 @@ class Sedra {
10580
10589
  if (isNaN(abs)) {
10581
10590
  throw new TypeError(`Bad date argument: ${hd}`);
10582
10591
  }
10583
- else if (abs < this.rh) {
10592
+ if (abs < this.rh) {
10584
10593
  throw new RangeError(`Date ${hd} before start of Hebrew year ${this.year}`);
10585
10594
  }
10586
10595
  // find the first saturday on or after today's date
@@ -10614,6 +10623,67 @@ class Sedra {
10614
10623
  il: this.il,
10615
10624
  };
10616
10625
  }
10626
+ /**
10627
+ * Returns details about the parsha read on Monday or Thursday for `hd`, or
10628
+ * `undefined` if `hd` is not a Monday or Thursday.
10629
+ *
10630
+ * Weekday Torah readings generally begin the upcoming Shabbat parsha. When
10631
+ * the upcoming Shabbat is a holiday, this method returns the next regular
10632
+ * parsha instead.
10633
+ *
10634
+ * For the Tishrei weekdays before Sukkot or Simchat Torah, the weekday
10635
+ * reading is *Vezot Haberakhah* even though it is not read on Shabbat.
10636
+ * @param hd Hebrew date or R.D. days
10637
+ */
10638
+ lookupWeekday(hd) {
10639
+ const abs = typeof hd === 'number' ? hd : HDate.isHDate(hd) ? hd.abs() : NaN;
10640
+ if (isNaN(abs)) {
10641
+ throw new TypeError(`Bad date argument: ${hd}`);
10642
+ }
10643
+ if (abs < this.rh) {
10644
+ throw new RangeError(`Date ${hd} before start of Hebrew year ${this.year}`);
10645
+ }
10646
+ const hdate = new HDate(abs);
10647
+ const day = hdate.getDay();
10648
+ if (day !== 1 && day !== 4) {
10649
+ return undefined;
10650
+ }
10651
+ const saturday = new HDate(HDate.dayOnOrBefore(6, abs + 6));
10652
+ const parsha = this.lookup(saturday);
10653
+ if (!parsha.chag) {
10654
+ return parsha;
10655
+ }
10656
+ return this.findWeekdayParsha(saturday);
10657
+ }
10658
+ findWeekdayParsha(saturday) {
10659
+ const hyear = saturday.getFullYear();
10660
+ const il = this.il;
10661
+ if (saturday.getMonth() === months.TISHREI) {
10662
+ const dd = saturday.getDate();
10663
+ const simchatTorah = il ? 22 : 23;
10664
+ if (dd > 2 && dd <= simchatTorah) {
10665
+ return {
10666
+ parsha: ['Vezot Haberakhah'],
10667
+ chag: false,
10668
+ num: 54,
10669
+ hdate: saturday,
10670
+ il,
10671
+ };
10672
+ }
10673
+ }
10674
+ const sedra = hyear === this.year ? this : getSedra(hyear, il);
10675
+ const endOfYear = new HDate(1, months.TISHREI, hyear + 1).abs() - 1;
10676
+ const endAbs = endOfYear + 30;
10677
+ for (let sat2 = saturday.abs() + 7; sat2 <= endAbs; sat2 += 7) {
10678
+ const sedra2 = sat2 > endOfYear ? getSedra(hyear + 1, il) : sedra;
10679
+ const parsha2 = sedra2.lookup(sat2);
10680
+ if (!parsha2.chag) {
10681
+ return parsha2;
10682
+ }
10683
+ }
10684
+ /* NOTREACHED */
10685
+ throw new Error(`can't find weekday parsha for ${saturday}/${il}`);
10686
+ }
10617
10687
  }
10618
10688
  /**
10619
10689
  * The 54 parshiyot of the Torah as transilterated strings.
@@ -11559,12 +11629,10 @@ class HolidayEvent extends Event {
11559
11629
  if (this.emoji) {
11560
11630
  return this.emoji;
11561
11631
  }
11562
- else if (this.getFlags() & flags.SPECIAL_SHABBAT) {
11632
+ if (this.getFlags() & flags.SPECIAL_SHABBAT) {
11563
11633
  return '🕍';
11564
11634
  }
11565
- else {
11566
- return '✡️';
11567
- }
11635
+ return '✡️';
11568
11636
  }
11569
11637
  getCategories() {
11570
11638
  if (this.cholHaMoedDay) {
@@ -11830,7 +11898,7 @@ function getHolidaysForYear_(year) {
11830
11898
  if (typeof year !== 'number') {
11831
11899
  throw new TypeError(`bad Hebrew year: ${year}`);
11832
11900
  }
11833
- else if (year < 1 || year > 32658) {
11901
+ if (year < 1 || year > 32658) {
11834
11902
  throw new RangeError(`Hebrew year ${year} out of range 1-32658`);
11835
11903
  }
11836
11904
  const cached = yearCache.get(year);
@@ -11859,11 +11927,12 @@ function getHolidaysForYear_(year) {
11859
11927
  }
11860
11928
  for (const h of staticHolidays) {
11861
11929
  const hd = new HDate(h.dd, h.mm, year);
11862
- const ev = new HolidayEvent(hd, h.desc, h.flags);
11930
+ const attrs = {};
11863
11931
  if (h.emoji)
11864
- ev.emoji = h.emoji;
11932
+ attrs.emoji = h.emoji;
11865
11933
  if (h.chmDay)
11866
- ev.cholHaMoedDay = h.chmDay;
11934
+ attrs.cholHaMoedDay = h.chmDay;
11935
+ const ev = new HolidayEvent(hd, h.desc, h.flags, attrs);
11867
11936
  add(ev);
11868
11937
  }
11869
11938
  // standard holidays that don't shift based on year
@@ -12385,6 +12454,56 @@ function makeCandleEvent(ev, hd, options, isFriday, isSaturday) {
12385
12454
  }
12386
12455
  const FAST_BEGINS = holidayDesc.FAST_BEGINS;
12387
12456
  const FAST_ENDS = holidayDesc.FAST_ENDS;
12457
+ /**
12458
+ * Tzeit HaKochavim as calculated by Rabbi Yechiel Michel Tucazinsky,
12459
+ * 6.45° below geometric zenith. Default end time for Tish'a B'Av.
12460
+ * @private
12461
+ */
12462
+ const TZEIT_TUCAZINSKY = 6.45;
12463
+ /**
12464
+ * Observation of 3 medium-sized stars, 7.0833333° below geometric zenith.
12465
+ * Default end time for minor fasts in the Diaspora.
12466
+ * @private
12467
+ */
12468
+ const TZEIT_3MEDIUM_STARS = 7.0833333;
12469
+ /**
12470
+ * Minutes after sunset that minor fasts (including Yom Kippur Katan) end in
12471
+ * Israel by default, following Rabbi Deblitzky's practice.
12472
+ * @see {https://www.yeshiva.org.il/calendar/timeprinciples}
12473
+ * @private
12474
+ */
12475
+ const MINOR_FAST_END_MINUTES_IL = 15;
12476
+ /**
12477
+ * Computes the "Fast ends" time for a fast day.
12478
+ *
12479
+ * Tish'a B'Av always ends at tzeit 6.45° (Rabbi Yechiel Michel Tucazinsky),
12480
+ * regardless of `options`.
12481
+ *
12482
+ * For minor fasts: when `options.fastEndMins` is a nonzero number, the fast
12483
+ * ends that many minutes after sunset; otherwise, when `options.fastEndDeg` is
12484
+ * a nonzero number, the fast ends at tzeit for that solar depression angle.
12485
+ * When neither is specified, the default depends on `options.il`:
12486
+ * - In Israel, minor fasts end 15 minutes after sunset (Rabbi Deblitzky's practice).
12487
+ * - Elsewhere, minor fasts end at tzeit 7.083° (3 medium-sized stars).
12488
+ * @private
12489
+ */
12490
+ function makeFastEndTime(zmanim, isTishaBav, options) {
12491
+ if (isTishaBav) {
12492
+ return zmanim.tzeit(TZEIT_TUCAZINSKY);
12493
+ }
12494
+ const fastEndMins = options.fastEndMins;
12495
+ if (typeof fastEndMins === 'number' && fastEndMins !== 0) {
12496
+ return zmanim.sunsetOffset(Math.abs(fastEndMins), true);
12497
+ }
12498
+ const fastEndDeg = options.fastEndDeg;
12499
+ if (typeof fastEndDeg === 'number' && fastEndDeg !== 0) {
12500
+ return zmanim.tzeit(Math.abs(fastEndDeg));
12501
+ }
12502
+ if (options.il) {
12503
+ return zmanim.sunsetOffset(MINOR_FAST_END_MINUTES_IL, true);
12504
+ }
12505
+ return zmanim.tzeit(TZEIT_3MEDIUM_STARS);
12506
+ }
12388
12507
  /**
12389
12508
  * A fast day holiday with attached start and end time events.
12390
12509
  *
@@ -12393,9 +12512,14 @@ const FAST_ENDS = holidayDesc.FAST_ENDS;
12393
12512
  * {@link TimedEvent}. Generated by {@link HebrewCalendar.calendar} when
12394
12513
  * `options.candlelighting` is `true` and `options.location` is provided.
12395
12514
  *
12396
- * - Minor fasts begin at *Alot HaShachar* (16.1° below horizon in the morning)
12397
- * and end at tzeit (7.083° by default overridable via `options.fastEndDeg`).
12398
- * - Tish'a B'Av begins at sunset on the previous day and ends at tzeit.
12515
+ * - Minor fasts (including Yom Kippur Katan) begin at *Alot HaShachar*
12516
+ * (16.1° below horizon in the morning). By default they end at tzeit
12517
+ * 7.083° (3 medium-sized stars) in the Diaspora, or 15 minutes after
12518
+ * sunset in Israel (Rabbi Deblitzky's practice). This can be overridden
12519
+ * via `options.fastEndDeg` or `options.fastEndMins`.
12520
+ * - Tish'a B'Av begins at sunset on the previous day and always ends at tzeit
12521
+ * 6.45° below horizon (Rabbi Yechiel Michel Tucazinsky), regardless of
12522
+ * `options.fastEndDeg` / `options.fastEndMins`.
12399
12523
  * - When a minor fast falls on a Friday, the end time is suppressed
12400
12524
  * (Shabbat begins before nightfall).
12401
12525
  */
@@ -12437,7 +12561,6 @@ function makeFastStartEnd(ev, options) {
12437
12561
  const hd = ev.getDate();
12438
12562
  const dt = hd.greg();
12439
12563
  const location = options.location;
12440
- const fastEndDeg = options.fastEndDeg;
12441
12564
  const useElevation = Boolean(options.useElevation);
12442
12565
  const zmanim = new Zmanim(location, dt, useElevation);
12443
12566
  let startEvent;
@@ -12449,9 +12572,9 @@ function makeFastStartEnd(ev, options) {
12449
12572
  }
12450
12573
  }
12451
12574
  else if (desc.startsWith("Tish'a B'Av")) {
12452
- const tzeit = zmanim.tzeit(fastEndDeg);
12453
- if (!isNaN(tzeit.getTime())) {
12454
- endEvent = makeTimedEvent(ev, tzeit, FAST_ENDS, options);
12575
+ const fastEnd = makeFastEndTime(zmanim, true, options);
12576
+ if (!isNaN(fastEnd.getTime())) {
12577
+ endEvent = makeTimedEvent(ev, fastEnd, FAST_ENDS, options);
12455
12578
  }
12456
12579
  }
12457
12580
  else {
@@ -12461,9 +12584,9 @@ function makeFastStartEnd(ev, options) {
12461
12584
  }
12462
12585
  if (dt.getDay() !== 5 &&
12463
12586
  !(hd.getDate() === 14 && hd.getMonth() === months.NISAN)) {
12464
- const tzeit = zmanim.tzeit(fastEndDeg);
12465
- if (!isNaN(tzeit.getTime())) {
12466
- endEvent = makeTimedEvent(ev, tzeit, FAST_ENDS, options);
12587
+ const fastEnd = makeFastEndTime(zmanim, false, options);
12588
+ if (!isNaN(fastEnd.getTime())) {
12589
+ endEvent = makeTimedEvent(ev, fastEnd, FAST_ENDS, options);
12467
12590
  }
12468
12591
  }
12469
12592
  }
@@ -13030,6 +13153,19 @@ function renderParshaName(parsha, locale) {
13030
13153
  */
13031
13154
  class ParshaEvent extends Event {
13032
13155
  constructor(parsha) {
13156
+ // eslint-disable-next-line prefer-rest-params
13157
+ if (arguments.length !== 1) {
13158
+ throw new TypeError(`ParshaEvent constructor takes a single SedraResult argument; ` +
13159
+ `got ${arguments.length} arguments`);
13160
+ }
13161
+ if (typeof parsha !== 'object' ||
13162
+ parsha === null ||
13163
+ !Array.isArray(parsha.parsha) ||
13164
+ parsha.parsha.length === 0 ||
13165
+ parsha.parsha.length > 2 ||
13166
+ !HDate.isHDate(parsha.hdate)) {
13167
+ throw new TypeError(`Invalid SedraResult argument: ${JSON.stringify(parsha)}`);
13168
+ }
13033
13169
  const desc = 'Parashat ' + parsha.parsha.join('-');
13034
13170
  super(parsha.hdate, desc, flags.PARSHA_HASHAVUA);
13035
13171
  this.p = parsha;
@@ -13049,10 +13185,7 @@ class ParshaEvent extends Event {
13049
13185
  return undefined;
13050
13186
  }
13051
13187
  const dt = this.urlDateSuffix();
13052
- const url = 'https://www.hebcal.com/sedrot/' +
13053
- urlFriendly(this.basename()) +
13054
- '-' +
13055
- dt;
13188
+ const url = 'https://www.hebcal.com/sedrot/' + urlFriendly(this.basename()) + '-' + dt;
13056
13189
  return this.p.il ? url + '?i=on' : url;
13057
13190
  }
13058
13191
  urlDateSuffix() {
@@ -13303,10 +13436,12 @@ const MAX_NUM_YEARS = 2000;
13303
13436
  * @private
13304
13437
  */
13305
13438
  function getStartAndEnd(options) {
13306
- if ((options.start && !options.end) || (options.end && !options.start)) {
13307
- throw new TypeError('Both options.start and options.end are required');
13439
+ const hasStart = options.start !== undefined;
13440
+ const hasEnd = options.end !== undefined;
13441
+ if (hasStart !== hasEnd) {
13442
+ throw new TypeError('options.start requires options.end');
13308
13443
  }
13309
- else if (options.start && options.end) {
13444
+ if (hasStart && hasEnd) {
13310
13445
  const start = getAbs(options.start), end = getAbs(options.end);
13311
13446
  if (end - start > 365 * MAX_NUM_YEARS) {
13312
13447
  throw new RangeError(`Date range exceeds ${MAX_NUM_YEARS} years`);
@@ -13318,7 +13453,7 @@ function getStartAndEnd(options) {
13318
13453
  if (isNaN(theYear)) {
13319
13454
  throw new RangeError(`Invalid year ${options.year}`);
13320
13455
  }
13321
- else if (isHebrewYear && theYear < 1) {
13456
+ if (isHebrewYear && theYear < 1) {
13322
13457
  throw new RangeError(`Invalid Hebrew year ${theYear}`);
13323
13458
  }
13324
13459
  const theMonth = getMonth(options);
@@ -13338,7 +13473,7 @@ function getMonth(options) {
13338
13473
  if (options.isHebrewYear) {
13339
13474
  return HDate.monthNum(options.month);
13340
13475
  }
13341
- else if (typeof options.month === 'number') {
13476
+ if (typeof options.month === 'number') {
13342
13477
  return options.month;
13343
13478
  }
13344
13479
  }
@@ -13555,10 +13690,7 @@ function calendar(options = {}) {
13555
13690
  const mm = hd.getMonth();
13556
13691
  const dd = hd.getDate();
13557
13692
  // When Erev Pesach falls on Shabbat, burning chametz is moved to Friday.
13558
- if (isFriday &&
13559
- options.candlelighting &&
13560
- mm === months.NISAN &&
13561
- dd === 13) {
13693
+ if (isFriday && options.candlelighting && mm === months.NISAN && dd === 13) {
13562
13694
  const biurEv = makeBiurChametzEvent(hd, options);
13563
13695
  if (biurEv) {
13564
13696
  evts.push(biurEv);
@@ -13678,6 +13810,7 @@ const RECOGNIZED_OPTIONS = {
13678
13810
  havdalahMins: 1,
13679
13811
  havdalahDeg: 1,
13680
13812
  fastEndDeg: 1,
13813
+ fastEndMins: 1,
13681
13814
  sedrot: 1,
13682
13815
  il: 1,
13683
13816
  noMinorFast: 1,
@@ -13705,8 +13838,7 @@ const RECOGNIZED_OPTIONS = {
13705
13838
  */
13706
13839
  function warnUnrecognizedOptions(options) {
13707
13840
  for (const k of Object.keys(options)) {
13708
- if (RECOGNIZED_OPTIONS[k] === undefined &&
13709
- !unrecognizedAlreadyWarned.has(k)) {
13841
+ if (RECOGNIZED_OPTIONS[k] === undefined && !unrecognizedAlreadyWarned.has(k)) {
13710
13842
  console.warn(`Ignoring unrecognized HebrewCalendar option: ${k}`);
13711
13843
  unrecognizedAlreadyWarned.add(k);
13712
13844
  }
@@ -13744,15 +13876,6 @@ const geoIdCandleOffset = {
13744
13876
  * @see {https://kosherjava.com/zmanim/docs/api/com/kosherjava/zmanim/ZmanimCalendar.html#ZENITH_8_POINT_5}
13745
13877
  */
13746
13878
  const TZEIT_3SMALL_STARS = 8.5;
13747
- /**
13748
- * @private
13749
- * @constant
13750
- * This calculation is based on observation of 3 medium sized stars by Dr. Baruch Cohen
13751
- * in his calendar published in in 1899 in Strasbourg, France.
13752
- * This calculates to 7.0833333° below geometric zenith.
13753
- * @see {https://kosherjava.com/zmanim/docs/api/com/kosherjava/zmanim/ComplexZmanimCalendar.html#ZENITH_7_POINT_083}
13754
- */
13755
- const TZEIT_3MEDIUM_STARS = 7.0833333;
13756
13879
  /**
13757
13880
  * Modifies options in-place
13758
13881
  * @private
@@ -13769,10 +13892,14 @@ function checkCandleOptions(options) {
13769
13892
  typeof options.havdalahDeg === 'number') {
13770
13893
  throw new TypeError('options.havdalahMins and options.havdalahDeg are mutually exclusive');
13771
13894
  }
13895
+ if (typeof options.fastEndDeg === 'number' &&
13896
+ typeof options.fastEndMins === 'number') {
13897
+ throw new TypeError('options.fastEndDeg and options.fastEndMins are mutually exclusive');
13898
+ }
13772
13899
  const min0 = options.candleLightingMins;
13773
13900
  let min = typeof min0 === 'number' && !isNaN(min0) ? Math.trunc(min0) : 18;
13774
13901
  if (location.getIsrael() && Math.abs(min) === 18) {
13775
- min = overrideIsraelCandleMins(location, min);
13902
+ min = overrideIsraelCandleMins(location);
13776
13903
  }
13777
13904
  options.candleLightingMins = -1 * Math.abs(min);
13778
13905
  if (typeof options.havdalahMins === 'number') {
@@ -13784,11 +13911,14 @@ function checkCandleOptions(options) {
13784
13911
  else {
13785
13912
  options.havdalahDeg = TZEIT_3SMALL_STARS;
13786
13913
  }
13787
- if (typeof options.fastEndDeg !== 'number') {
13788
- options.fastEndDeg = TZEIT_3MEDIUM_STARS;
13914
+ if (typeof options.fastEndDeg === 'number') {
13915
+ options.fastEndDeg = Math.abs(options.fastEndDeg);
13916
+ }
13917
+ if (typeof options.fastEndMins === 'number') {
13918
+ options.fastEndMins = Math.trunc(Math.abs(options.fastEndMins));
13789
13919
  }
13790
13920
  }
13791
- function overrideIsraelCandleMins(location, min) {
13921
+ function overrideIsraelCandleMins(location) {
13792
13922
  const geoid = location.getGeoId();
13793
13923
  if (geoid) {
13794
13924
  const offset = geoIdCandleOffset[geoid];
@@ -13803,7 +13933,7 @@ function overrideIsraelCandleMins(location, min) {
13803
13933
  return offset;
13804
13934
  }
13805
13935
  }
13806
- return min;
13936
+ return 20;
13807
13937
  }
13808
13938
  /**
13809
13939
  * Mask to filter Holiday array
@@ -13992,8 +14122,7 @@ function appendHolidayAndRelated(candlesEv, events, ev, options, isFriday, isSat
13992
14122
  events.push(ev); // the original event itself
13993
14123
  }
13994
14124
  }
13995
- if ((isMajorFast || (isMinorFast && !options.noMinorFast)) &&
13996
- fastEv?.endEvent) {
14125
+ if ((isMajorFast || (isMinorFast && !options.noMinorFast)) && fastEv?.endEvent) {
13997
14126
  events.push(fastEv.endEvent);
13998
14127
  }
13999
14128
  return candlesEv;