@hebcal/core 6.6.0 → 6.7.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 (147) hide show
  1. package/README.md +4 -4
  2. package/dist/bundle.js +183 -50
  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.js +1 -1
  10. package/dist/esm/MevarchimChodeshEvent.js +1 -1
  11. package/dist/esm/ParshaEvent.js +16 -6
  12. package/dist/esm/ParshaEvent.js.map +1 -1
  13. package/dist/esm/TimedEvent.js +1 -1
  14. package/dist/esm/TimedEvent.js.map +1 -1
  15. package/dist/esm/YomKippurKatanEvent.js +1 -1
  16. package/dist/esm/ashkenazi.po.js +2 -2
  17. package/dist/esm/ashkenazi.po.js.map +1 -1
  18. package/dist/esm/calendar.js +14 -20
  19. package/dist/esm/calendar.js.map +1 -1
  20. package/dist/esm/candles.d.ts +8 -3
  21. package/dist/esm/candles.js +65 -11
  22. package/dist/esm/candles.js.map +1 -1
  23. package/dist/esm/cities.json.js +1 -1
  24. package/dist/esm/event.js +1 -1
  25. package/dist/esm/getStartAndEnd.js +1 -1
  26. package/dist/esm/hallel.js +1 -1
  27. package/dist/esm/he-x-NoNikud.po.js +1 -1
  28. package/dist/esm/he.po.js +1 -1
  29. package/dist/esm/hebcal.js +1 -1
  30. package/dist/esm/holidays.js +1 -1
  31. package/dist/esm/holidays.js.map +1 -1
  32. package/dist/esm/index.js +1 -1
  33. package/dist/esm/isAssurBemlacha.js +1 -1
  34. package/dist/esm/isAveilut.js +1 -1
  35. package/dist/esm/isFastDay.js +1 -1
  36. package/dist/esm/locale.js +1 -1
  37. package/dist/esm/location.js +1 -1
  38. package/dist/esm/location.js.map +1 -1
  39. package/dist/esm/modern.js +1 -1
  40. package/dist/esm/molad.js +1 -1
  41. package/dist/esm/moladBase.js +1 -1
  42. package/dist/esm/moladDate.js +1 -1
  43. package/dist/esm/moladDate.js.map +1 -1
  44. package/dist/esm/omer.js +1 -1
  45. package/dist/esm/parshaName.js +1 -1
  46. package/dist/esm/parshaYear.js +1 -1
  47. package/dist/esm/pkgVersion.d.ts +1 -1
  48. package/dist/esm/pkgVersion.js +2 -2
  49. package/dist/esm/pkgVersion.js.map +1 -1
  50. package/dist/esm/reformatTimeStr.js +1 -1
  51. package/dist/esm/reformatTimeStr.js.map +1 -1
  52. package/dist/esm/sedra.d.ts +14 -0
  53. package/dist/esm/sedra.js +62 -1
  54. package/dist/esm/sedra.js.map +1 -1
  55. package/dist/esm/sefira.json.js +1 -1
  56. package/dist/esm/staticHolidays.js +1 -1
  57. package/dist/esm/string.js +1 -1
  58. package/dist/esm/tachanun.js +1 -1
  59. package/dist/esm/tachanun.js.map +1 -1
  60. package/dist/esm/zmanim.js +2 -3
  61. package/dist/esm/zmanim.js.map +1 -1
  62. package/package.json +14 -17
  63. package/po/ashkenazi.po +1 -12
  64. package/dist/eslint.config.d.mts +0 -83
  65. package/dist/eslint.config.mjs +0 -29
  66. package/dist/po2json.d.ts +0 -1
  67. package/dist/po2json.js +0 -40
  68. package/dist/src/CalOptions.d.ts +0 -171
  69. package/dist/src/CalOptions.js +0 -1
  70. package/dist/src/DailyLearning.d.ts +0 -69
  71. package/dist/src/DailyLearning.js +0 -92
  72. package/dist/src/HebrewDateEvent.d.ts +0 -37
  73. package/dist/src/HebrewDateEvent.js +0 -72
  74. package/dist/src/HolidayEvent.d.ts +0 -117
  75. package/dist/src/HolidayEvent.js +0 -236
  76. package/dist/src/MevarchimChodeshEvent.d.ts +0 -26
  77. package/dist/src/MevarchimChodeshEvent.js +0 -52
  78. package/dist/src/ParshaEvent.d.ts +0 -24
  79. package/dist/src/ParshaEvent.js +0 -50
  80. package/dist/src/TimedEvent.d.ts +0 -76
  81. package/dist/src/TimedEvent.js +0 -134
  82. package/dist/src/YomKippurKatanEvent.d.ts +0 -23
  83. package/dist/src/YomKippurKatanEvent.js +0 -40
  84. package/dist/src/ashkenazi.po.d.ts +0 -84
  85. package/dist/src/ashkenazi.po.js +0 -1
  86. package/dist/src/calendar.d.ts +0 -112
  87. package/dist/src/calendar.js +0 -721
  88. package/dist/src/candles.d.ts +0 -57
  89. package/dist/src/candles.js +0 -185
  90. package/dist/src/cities.json +0 -67
  91. package/dist/src/event.d.ts +0 -233
  92. package/dist/src/event.js +0 -295
  93. package/dist/src/getStartAndEnd.d.ts +0 -6
  94. package/dist/src/getStartAndEnd.js +0 -105
  95. package/dist/src/hallel.d.ts +0 -6
  96. package/dist/src/hallel.js +0 -39
  97. package/dist/src/he-x-NoNikud.po.d.ts +0 -28
  98. package/dist/src/he-x-NoNikud.po.js +0 -1
  99. package/dist/src/he.po.d.ts +0 -217
  100. package/dist/src/he.po.js +0 -1
  101. package/dist/src/hebcal.d.ts +0 -338
  102. package/dist/src/hebcal.js +0 -413
  103. package/dist/src/holidays.d.ts +0 -41
  104. package/dist/src/holidays.js +0 -324
  105. package/dist/src/index.d.ts +0 -30
  106. package/dist/src/index.js +0 -29
  107. package/dist/src/isAssurBemlacha.d.ts +0 -29
  108. package/dist/src/isAssurBemlacha.js +0 -82
  109. package/dist/src/isAveilut.d.ts +0 -22
  110. package/dist/src/isAveilut.js +0 -48
  111. package/dist/src/isFastDay.d.ts +0 -21
  112. package/dist/src/isFastDay.js +0 -31
  113. package/dist/src/locale.d.ts +0 -1
  114. package/dist/src/locale.js +0 -11
  115. package/dist/src/location.d.ts +0 -167
  116. package/dist/src/location.js +0 -342
  117. package/dist/src/modern.d.ts +0 -18
  118. package/dist/src/modern.js +0 -59
  119. package/dist/src/molad.d.ts +0 -164
  120. package/dist/src/molad.js +0 -298
  121. package/dist/src/moladBase.d.ts +0 -15
  122. package/dist/src/moladBase.js +0 -78
  123. package/dist/src/moladDate.d.ts +0 -12
  124. package/dist/src/moladDate.js +0 -58
  125. package/dist/src/omer.d.ts +0 -128
  126. package/dist/src/omer.js +0 -385
  127. package/dist/src/parshaName.d.ts +0 -2
  128. package/dist/src/parshaName.js +0 -13
  129. package/dist/src/parshaYear.d.ts +0 -20
  130. package/dist/src/parshaYear.js +0 -35
  131. package/dist/src/pkgVersion.d.ts +0 -2
  132. package/dist/src/pkgVersion.js +0 -2
  133. package/dist/src/reformatTimeStr.d.ts +0 -8
  134. package/dist/src/reformatTimeStr.js +0 -47
  135. package/dist/src/sedra.d.ts +0 -175
  136. package/dist/src/sedra.js +0 -563
  137. package/dist/src/sefira.json +0 -63
  138. package/dist/src/staticHolidays.d.ts +0 -192
  139. package/dist/src/staticHolidays.js +0 -637
  140. package/dist/src/string.d.ts +0 -2
  141. package/dist/src/string.js +0 -6
  142. package/dist/src/tachanun.d.ts +0 -29
  143. package/dist/src/tachanun.js +0 -120
  144. package/dist/src/zmanim.d.ts +0 -620
  145. package/dist/src/zmanim.js +0 -1003
  146. package/dist/version.d.ts +0 -1
  147. package/dist/version.js +0 -8
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Hebcal is a perpetual Jewish Calendar. This library converts between
4
4
  Hebrew and Gregorian dates, and generates lists of Jewish holidays for
5
- any year (past, present or future). Shabbat and holiday candle
5
+ any year (past, present or future). Shabbat and holiday candle
6
6
  lighting and havdalah times are approximated based on location. Torah
7
7
  readings (Parashat HaShavua), Daf Yomi, and counting of the Omer can
8
8
  also be specified. Hebcal also includes algorithms to calculate
@@ -79,10 +79,10 @@ console.log(reading.summary);
79
79
 
80
80
  This package exports two categories of output:
81
81
 
82
- - `dist/bundle.min.js`: This includes all dependencies in a single JS file. It's quite large (174KB minified), and should only be used if you aren't using a bundler.
83
- - `dist/esm/`: This directory contains ES modules for each source file in the package. If you're using Rollup, Vite, or another bundler, you should import from here to reduce output sizes.
82
+ - `dist/bundle.min.js`: This includes all dependencies in a single JS file. It's quite large (174KB minified), and should only be used if you aren't using a bundler.
83
+ - `dist/esm/`: This directory contains ES modules for each source file in the package. If you're using Rollup, Vite, or another bundler, you should import from here to reduce output sizes.
84
84
  - These files do not include polyfills; if you want to support older browsers, use <https://github.com/rollup/plugins/tree/master/packages/babel#babelhelpers>
85
- - To make tree-shaking work better, import from the most specific file possible; avoid importing from `index` or `hebcal`. Some APIs may still need to be moved to specific files. For example:
85
+ - To make tree-shaking work better, import from the most specific file possible; avoid importing from `index` or `hebcal`. Some APIs may still need to be moved to specific files. For example:
86
86
 
87
87
  ```ts
88
88
  import {getHolidaysOnDate} from '@hebcal/core/dist/esm/holidays';
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.7.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.7.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
 
@@ -10155,8 +10170,7 @@ class Zmanim {
10155
10170
  if (isNaN(date.getTime())) {
10156
10171
  return '0000-00-00T00:00:00Z';
10157
10172
  }
10158
- return (getPseudoISO(tzid, date).substring(0, 19) +
10159
- Zmanim.timeZoneOffset(tzid, date));
10173
+ return (getPseudoISO(tzid, date).substring(0, 19) + Zmanim.timeZoneOffset(tzid, date));
10160
10174
  }
10161
10175
  /**
10162
10176
  * Returns sunrise + `offset` minutes (either positive or negative).
@@ -10614,6 +10628,67 @@ class Sedra {
10614
10628
  il: this.il,
10615
10629
  };
10616
10630
  }
10631
+ /**
10632
+ * Returns details about the parsha read on Monday or Thursday for `hd`, or
10633
+ * `undefined` if `hd` is not a Monday or Thursday.
10634
+ *
10635
+ * Weekday Torah readings generally begin the upcoming Shabbat parsha. When
10636
+ * the upcoming Shabbat is a holiday, this method returns the next regular
10637
+ * parsha instead.
10638
+ *
10639
+ * For the Tishrei weekdays before Sukkot or Simchat Torah, the weekday
10640
+ * reading is *Vezot Haberakhah* even though it is not read on Shabbat.
10641
+ * @param hd Hebrew date or R.D. days
10642
+ */
10643
+ lookupWeekday(hd) {
10644
+ const abs = typeof hd === 'number' ? hd : HDate.isHDate(hd) ? hd.abs() : NaN;
10645
+ if (isNaN(abs)) {
10646
+ throw new TypeError(`Bad date argument: ${hd}`);
10647
+ }
10648
+ else if (abs < this.rh) {
10649
+ throw new RangeError(`Date ${hd} before start of Hebrew year ${this.year}`);
10650
+ }
10651
+ const hdate = new HDate(abs);
10652
+ const day = hdate.getDay();
10653
+ if (day !== 1 && day !== 4) {
10654
+ return undefined;
10655
+ }
10656
+ const saturday = new HDate(HDate.dayOnOrBefore(6, abs + 6));
10657
+ const parsha = this.lookup(saturday);
10658
+ if (!parsha.chag) {
10659
+ return parsha;
10660
+ }
10661
+ return this.findWeekdayParsha(saturday);
10662
+ }
10663
+ findWeekdayParsha(saturday) {
10664
+ const hyear = saturday.getFullYear();
10665
+ const il = this.il;
10666
+ if (saturday.getMonth() === months.TISHREI) {
10667
+ const dd = saturday.getDate();
10668
+ const simchatTorah = il ? 22 : 23;
10669
+ if (dd > 2 && dd <= simchatTorah) {
10670
+ return {
10671
+ parsha: ['Vezot Haberakhah'],
10672
+ chag: false,
10673
+ num: 54,
10674
+ hdate: saturday,
10675
+ il,
10676
+ };
10677
+ }
10678
+ }
10679
+ const sedra = hyear === this.year ? this : getSedra(hyear, il);
10680
+ const endOfYear = new HDate(1, months.TISHREI, hyear + 1).abs() - 1;
10681
+ const endAbs = endOfYear + 30;
10682
+ for (let sat2 = saturday.abs() + 7; sat2 <= endAbs; sat2 += 7) {
10683
+ const sedra2 = sat2 > endOfYear ? getSedra(hyear + 1, il) : sedra;
10684
+ const parsha2 = sedra2.lookup(sat2);
10685
+ if (!parsha2.chag) {
10686
+ return parsha2;
10687
+ }
10688
+ }
10689
+ /* NOTREACHED */
10690
+ throw new Error(`can't find weekday parsha for ${saturday}/${il}`);
10691
+ }
10617
10692
  }
10618
10693
  /**
10619
10694
  * The 54 parshiyot of the Torah as transilterated strings.
@@ -12385,6 +12460,56 @@ function makeCandleEvent(ev, hd, options, isFriday, isSaturday) {
12385
12460
  }
12386
12461
  const FAST_BEGINS = holidayDesc.FAST_BEGINS;
12387
12462
  const FAST_ENDS = holidayDesc.FAST_ENDS;
12463
+ /**
12464
+ * Tzeit HaKochavim as calculated by Rabbi Yechiel Michel Tucazinsky,
12465
+ * 6.45° below geometric zenith. Default end time for Tish'a B'Av.
12466
+ * @private
12467
+ */
12468
+ const TZEIT_TUCAZINSKY = 6.45;
12469
+ /**
12470
+ * Observation of 3 medium-sized stars, 7.0833333° below geometric zenith.
12471
+ * Default end time for minor fasts in the Diaspora.
12472
+ * @private
12473
+ */
12474
+ const TZEIT_3MEDIUM_STARS = 7.0833333;
12475
+ /**
12476
+ * Minutes after sunset that minor fasts (including Yom Kippur Katan) end in
12477
+ * Israel by default, following Rabbi Deblitzky's practice.
12478
+ * @see {https://www.yeshiva.org.il/calendar/timeprinciples}
12479
+ * @private
12480
+ */
12481
+ const MINOR_FAST_END_MINUTES_IL = 15;
12482
+ /**
12483
+ * Computes the "Fast ends" time for a fast day.
12484
+ *
12485
+ * Tish'a B'Av always ends at tzeit 6.45° (Rabbi Yechiel Michel Tucazinsky),
12486
+ * regardless of `options`.
12487
+ *
12488
+ * For minor fasts: when `options.fastEndMins` is a nonzero number, the fast
12489
+ * ends that many minutes after sunset; otherwise, when `options.fastEndDeg` is
12490
+ * a nonzero number, the fast ends at tzeit for that solar depression angle.
12491
+ * When neither is specified, the default depends on `options.il`:
12492
+ * - In Israel, minor fasts end 15 minutes after sunset (Rabbi Deblitzky's practice).
12493
+ * - Elsewhere, minor fasts end at tzeit 7.083° (3 medium-sized stars).
12494
+ * @private
12495
+ */
12496
+ function makeFastEndTime(zmanim, isTishaBav, options) {
12497
+ if (isTishaBav) {
12498
+ return zmanim.tzeit(TZEIT_TUCAZINSKY);
12499
+ }
12500
+ const fastEndMins = options.fastEndMins;
12501
+ if (typeof fastEndMins === 'number' && fastEndMins !== 0) {
12502
+ return zmanim.sunsetOffset(Math.abs(fastEndMins), true);
12503
+ }
12504
+ const fastEndDeg = options.fastEndDeg;
12505
+ if (typeof fastEndDeg === 'number' && fastEndDeg !== 0) {
12506
+ return zmanim.tzeit(Math.abs(fastEndDeg));
12507
+ }
12508
+ if (options.il) {
12509
+ return zmanim.sunsetOffset(MINOR_FAST_END_MINUTES_IL, true);
12510
+ }
12511
+ return zmanim.tzeit(TZEIT_3MEDIUM_STARS);
12512
+ }
12388
12513
  /**
12389
12514
  * A fast day holiday with attached start and end time events.
12390
12515
  *
@@ -12393,9 +12518,14 @@ const FAST_ENDS = holidayDesc.FAST_ENDS;
12393
12518
  * {@link TimedEvent}. Generated by {@link HebrewCalendar.calendar} when
12394
12519
  * `options.candlelighting` is `true` and `options.location` is provided.
12395
12520
  *
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.
12521
+ * - Minor fasts (including Yom Kippur Katan) begin at *Alot HaShachar*
12522
+ * (16.1° below horizon in the morning). By default they end at tzeit
12523
+ * 7.083° (3 medium-sized stars) in the Diaspora, or 15 minutes after
12524
+ * sunset in Israel (Rabbi Deblitzky's practice). This can be overridden
12525
+ * via `options.fastEndDeg` or `options.fastEndMins`.
12526
+ * - Tish'a B'Av begins at sunset on the previous day and always ends at tzeit
12527
+ * 6.45° below horizon (Rabbi Yechiel Michel Tucazinsky), regardless of
12528
+ * `options.fastEndDeg` / `options.fastEndMins`.
12399
12529
  * - When a minor fast falls on a Friday, the end time is suppressed
12400
12530
  * (Shabbat begins before nightfall).
12401
12531
  */
@@ -12437,7 +12567,6 @@ function makeFastStartEnd(ev, options) {
12437
12567
  const hd = ev.getDate();
12438
12568
  const dt = hd.greg();
12439
12569
  const location = options.location;
12440
- const fastEndDeg = options.fastEndDeg;
12441
12570
  const useElevation = Boolean(options.useElevation);
12442
12571
  const zmanim = new Zmanim(location, dt, useElevation);
12443
12572
  let startEvent;
@@ -12449,9 +12578,9 @@ function makeFastStartEnd(ev, options) {
12449
12578
  }
12450
12579
  }
12451
12580
  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);
12581
+ const fastEnd = makeFastEndTime(zmanim, true, options);
12582
+ if (!isNaN(fastEnd.getTime())) {
12583
+ endEvent = makeTimedEvent(ev, fastEnd, FAST_ENDS, options);
12455
12584
  }
12456
12585
  }
12457
12586
  else {
@@ -12461,9 +12590,9 @@ function makeFastStartEnd(ev, options) {
12461
12590
  }
12462
12591
  if (dt.getDay() !== 5 &&
12463
12592
  !(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);
12593
+ const fastEnd = makeFastEndTime(zmanim, false, options);
12594
+ if (!isNaN(fastEnd.getTime())) {
12595
+ endEvent = makeTimedEvent(ev, fastEnd, FAST_ENDS, options);
12467
12596
  }
12468
12597
  }
12469
12598
  }
@@ -13030,6 +13159,19 @@ function renderParshaName(parsha, locale) {
13030
13159
  */
13031
13160
  class ParshaEvent extends Event {
13032
13161
  constructor(parsha) {
13162
+ // eslint-disable-next-line prefer-rest-params
13163
+ if (arguments.length !== 1) {
13164
+ throw new TypeError(`ParshaEvent constructor takes a single SedraResult argument; ` +
13165
+ `got ${arguments.length} arguments`);
13166
+ }
13167
+ if (typeof parsha !== 'object' ||
13168
+ parsha === null ||
13169
+ !Array.isArray(parsha.parsha) ||
13170
+ parsha.parsha.length === 0 ||
13171
+ parsha.parsha.length > 2 ||
13172
+ !HDate.isHDate(parsha.hdate)) {
13173
+ throw new TypeError(`Invalid SedraResult argument: ${JSON.stringify(parsha)}`);
13174
+ }
13033
13175
  const desc = 'Parashat ' + parsha.parsha.join('-');
13034
13176
  super(parsha.hdate, desc, flags.PARSHA_HASHAVUA);
13035
13177
  this.p = parsha;
@@ -13049,10 +13191,7 @@ class ParshaEvent extends Event {
13049
13191
  return undefined;
13050
13192
  }
13051
13193
  const dt = this.urlDateSuffix();
13052
- const url = 'https://www.hebcal.com/sedrot/' +
13053
- urlFriendly(this.basename()) +
13054
- '-' +
13055
- dt;
13194
+ const url = 'https://www.hebcal.com/sedrot/' + urlFriendly(this.basename()) + '-' + dt;
13056
13195
  return this.p.il ? url + '?i=on' : url;
13057
13196
  }
13058
13197
  urlDateSuffix() {
@@ -13555,10 +13694,7 @@ function calendar(options = {}) {
13555
13694
  const mm = hd.getMonth();
13556
13695
  const dd = hd.getDate();
13557
13696
  // 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) {
13697
+ if (isFriday && options.candlelighting && mm === months.NISAN && dd === 13) {
13562
13698
  const biurEv = makeBiurChametzEvent(hd, options);
13563
13699
  if (biurEv) {
13564
13700
  evts.push(biurEv);
@@ -13678,6 +13814,7 @@ const RECOGNIZED_OPTIONS = {
13678
13814
  havdalahMins: 1,
13679
13815
  havdalahDeg: 1,
13680
13816
  fastEndDeg: 1,
13817
+ fastEndMins: 1,
13681
13818
  sedrot: 1,
13682
13819
  il: 1,
13683
13820
  noMinorFast: 1,
@@ -13705,8 +13842,7 @@ const RECOGNIZED_OPTIONS = {
13705
13842
  */
13706
13843
  function warnUnrecognizedOptions(options) {
13707
13844
  for (const k of Object.keys(options)) {
13708
- if (RECOGNIZED_OPTIONS[k] === undefined &&
13709
- !unrecognizedAlreadyWarned.has(k)) {
13845
+ if (RECOGNIZED_OPTIONS[k] === undefined && !unrecognizedAlreadyWarned.has(k)) {
13710
13846
  console.warn(`Ignoring unrecognized HebrewCalendar option: ${k}`);
13711
13847
  unrecognizedAlreadyWarned.add(k);
13712
13848
  }
@@ -13744,15 +13880,6 @@ const geoIdCandleOffset = {
13744
13880
  * @see {https://kosherjava.com/zmanim/docs/api/com/kosherjava/zmanim/ZmanimCalendar.html#ZENITH_8_POINT_5}
13745
13881
  */
13746
13882
  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
13883
  /**
13757
13884
  * Modifies options in-place
13758
13885
  * @private
@@ -13769,6 +13896,10 @@ function checkCandleOptions(options) {
13769
13896
  typeof options.havdalahDeg === 'number') {
13770
13897
  throw new TypeError('options.havdalahMins and options.havdalahDeg are mutually exclusive');
13771
13898
  }
13899
+ if (typeof options.fastEndDeg === 'number' &&
13900
+ typeof options.fastEndMins === 'number') {
13901
+ throw new TypeError('options.fastEndDeg and options.fastEndMins are mutually exclusive');
13902
+ }
13772
13903
  const min0 = options.candleLightingMins;
13773
13904
  let min = typeof min0 === 'number' && !isNaN(min0) ? Math.trunc(min0) : 18;
13774
13905
  if (location.getIsrael() && Math.abs(min) === 18) {
@@ -13784,8 +13915,11 @@ function checkCandleOptions(options) {
13784
13915
  else {
13785
13916
  options.havdalahDeg = TZEIT_3SMALL_STARS;
13786
13917
  }
13787
- if (typeof options.fastEndDeg !== 'number') {
13788
- options.fastEndDeg = TZEIT_3MEDIUM_STARS;
13918
+ if (typeof options.fastEndDeg === 'number') {
13919
+ options.fastEndDeg = Math.abs(options.fastEndDeg);
13920
+ }
13921
+ if (typeof options.fastEndMins === 'number') {
13922
+ options.fastEndMins = Math.trunc(Math.abs(options.fastEndMins));
13789
13923
  }
13790
13924
  }
13791
13925
  function overrideIsraelCandleMins(location, min) {
@@ -13992,8 +14126,7 @@ function appendHolidayAndRelated(candlesEv, events, ev, options, isFriday, isSat
13992
14126
  events.push(ev); // the original event itself
13993
14127
  }
13994
14128
  }
13995
- if ((isMajorFast || (isMinorFast && !options.noMinorFast)) &&
13996
- fastEv?.endEvent) {
14129
+ if ((isMajorFast || (isMinorFast && !options.noMinorFast)) && fastEv?.endEvent) {
13997
14130
  events.push(fastEv.endEvent);
13998
14131
  }
13999
14132
  return candlesEv;