@hebcal/core 6.1.0 → 6.3.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 (105) hide show
  1. package/dist/bundle.js +298 -18
  2. package/dist/bundle.js.map +1 -1
  3. package/dist/bundle.min.js +7 -7
  4. package/dist/bundle.min.js.map +1 -1
  5. package/dist/esm/DailyLearning.js +1 -1
  6. package/dist/esm/HebrewDateEvent.js +1 -1
  7. package/dist/esm/HolidayEvent.js +1 -1
  8. package/dist/esm/MevarchimChodeshEvent.js +1 -1
  9. package/dist/esm/ParshaEvent.js +1 -1
  10. package/dist/esm/TimedEvent.js +3 -1
  11. package/dist/esm/TimedEvent.js.map +1 -1
  12. package/dist/esm/YomKippurKatanEvent.js +1 -1
  13. package/dist/esm/ashkenazi.po.js +1 -1
  14. package/dist/esm/calendar.js +21 -2
  15. package/dist/esm/calendar.js.map +1 -1
  16. package/dist/esm/candles.js +1 -1
  17. package/dist/esm/event.js +1 -1
  18. package/dist/esm/getStartAndEnd.js +1 -1
  19. package/dist/esm/hallel.js +1 -1
  20. package/dist/esm/he-x-NoNikud.po.d.ts +12 -0
  21. package/dist/esm/he-x-NoNikud.po.js +2 -2
  22. package/dist/esm/he-x-NoNikud.po.js.map +1 -1
  23. package/dist/esm/he.po.js +2 -2
  24. package/dist/esm/he.po.js.map +1 -1
  25. package/dist/esm/hebcal.js +1 -1
  26. package/dist/esm/holidays.js +1 -1
  27. package/dist/esm/index.js +1 -1
  28. package/dist/esm/isAssurBemlacha.js +1 -1
  29. package/dist/esm/locale.js +1 -1
  30. package/dist/esm/location.js +1 -1
  31. package/dist/esm/modern.js +1 -1
  32. package/dist/esm/molad.js +1 -1
  33. package/dist/esm/moladBase.js +1 -1
  34. package/dist/esm/moladDate.js +1 -1
  35. package/dist/esm/omer.d.ts +48 -0
  36. package/dist/esm/omer.js +60 -1
  37. package/dist/esm/omer.js.map +1 -1
  38. package/dist/esm/parshaName.js +1 -1
  39. package/dist/esm/parshaYear.js +1 -1
  40. package/dist/esm/pkgVersion.d.ts +1 -1
  41. package/dist/esm/pkgVersion.js +2 -2
  42. package/dist/esm/pkgVersion.js.map +1 -1
  43. package/dist/esm/reformatTimeStr.js +1 -1
  44. package/dist/esm/sedra.js +1 -1
  45. package/dist/esm/sefira.json.js +5 -0
  46. package/dist/esm/sefira.json.js.map +1 -0
  47. package/dist/esm/staticHolidays.js +1 -1
  48. package/dist/esm/tachanun.js +1 -1
  49. package/dist/esm/zmanim.d.ts +171 -11
  50. package/dist/esm/zmanim.js +214 -15
  51. package/dist/esm/zmanim.js.map +1 -1
  52. package/dist/src/TimedEvent.js +2 -0
  53. package/dist/src/calendar.js +20 -1
  54. package/dist/src/he-x-NoNikud.po.d.ts +12 -0
  55. package/dist/src/he-x-NoNikud.po.js +1 -1
  56. package/dist/src/he.po.js +1 -1
  57. package/dist/src/omer.d.ts +48 -0
  58. package/dist/src/omer.js +59 -0
  59. package/dist/src/pkgVersion.d.ts +1 -1
  60. package/dist/src/pkgVersion.js +1 -1
  61. package/dist/src/sefira.json +71 -0
  62. package/dist/src/zmanim.d.ts +171 -11
  63. package/dist/src/zmanim.js +213 -14
  64. package/package.json +3 -2
  65. package/dist/CalOptions.d.ts +0 -168
  66. package/dist/DailyLearning.d.ts +0 -32
  67. package/dist/HebrewDateEvent.d.ts +0 -37
  68. package/dist/HolidayEvent.d.ts +0 -84
  69. package/dist/MevarchimChodeshEvent.d.ts +0 -26
  70. package/dist/ParshaEvent.d.ts +0 -19
  71. package/dist/TimedEvent.d.ts +0 -47
  72. package/dist/YomKippurKatanEvent.d.ts +0 -23
  73. package/dist/ashkenazi.po.d.ts +0 -82
  74. package/dist/calendar.d.ts +0 -111
  75. package/dist/candles.d.ts +0 -44
  76. package/dist/coverage/block-navigation.d.ts +0 -1
  77. package/dist/coverage/block-navigation.js +0 -70
  78. package/dist/coverage/prettify.d.ts +0 -0
  79. package/dist/coverage/prettify.js +0 -477
  80. package/dist/coverage/sorter.d.ts +0 -1
  81. package/dist/coverage/sorter.js +0 -176
  82. package/dist/event.d.ts +0 -188
  83. package/dist/getStartAndEnd.d.ts +0 -6
  84. package/dist/hallel.d.ts +0 -6
  85. package/dist/he-x-NoNikud.po.d.ts +0 -16
  86. package/dist/he.po.d.ts +0 -215
  87. package/dist/hebcal.d.ts +0 -260
  88. package/dist/holidays.d.ts +0 -22
  89. package/dist/index.d.ts +0 -28
  90. package/dist/isAssurBemlacha.d.ts +0 -9
  91. package/dist/locale.d.ts +0 -1
  92. package/dist/location.d.ts +0 -73
  93. package/dist/modern.d.ts +0 -18
  94. package/dist/molad.d.ts +0 -132
  95. package/dist/moladBase.d.ts +0 -15
  96. package/dist/moladDate.d.ts +0 -12
  97. package/dist/omer.d.ts +0 -52
  98. package/dist/parshaName.d.ts +0 -2
  99. package/dist/parshaYear.d.ts +0 -9
  100. package/dist/pkgVersion.d.ts +0 -2
  101. package/dist/reformatTimeStr.d.ts +0 -8
  102. package/dist/sedra.d.ts +0 -95
  103. package/dist/staticHolidays.d.ts +0 -176
  104. package/dist/tachanun.d.ts +0 -29
  105. package/dist/zmanim.d.ts +0 -460
@@ -20,6 +20,19 @@ function getDate(date) {
20
20
  return date.greg();
21
21
  throw new TypeError(`invalid date: ${date}`);
22
22
  }
23
+ /**
24
+ * The zenith of astronomical sunrise and sunset. The sun is 90° from the vertical 0°
25
+ */
26
+ const GEOMETRIC_ZENITH = 90;
27
+ /**
28
+ * The zenith of 1.583° below {@link GEOMETRIC_ZENITH geometric zenith} (90°). This calculation is used for
29
+ * calculating _netz amiti_ (sunrise) and _shkiah amiti_ (sunset) based on the opinion of the
30
+ * <a href="https://en.wikipedia.org/wiki/Shneur_Zalman_of_Liadi">Baal Hatanya</a>.
31
+ *
32
+ * @see Zmanim.sunriseBaalHatanya()
33
+ * @see Zmanim.sunsetBaalHatanya()
34
+ */
35
+ const ZENITH_1_POINT_583 = GEOMETRIC_ZENITH + 1.583;
23
36
  /**
24
37
  * Calculate halachic times (zmanim / זְמַנִּים) for a given day and location.
25
38
  * Calculations are available for tzeit / tzais (nightfall),
@@ -95,7 +108,7 @@ export class Zmanim {
95
108
  * @param rising
96
109
  */
97
110
  timeAtAngle(angle, rising) {
98
- const offsetZenith = 90 + angle;
111
+ const offsetZenith = GEOMETRIC_ZENITH + angle;
99
112
  const zdt = rising
100
113
  ? this.noaa.getSunriseOffsetByDegrees(offsetZenith)
101
114
  : this.noaa.getSunsetOffsetByDegrees(offsetZenith);
@@ -227,6 +240,12 @@ export class Zmanim {
227
240
  misheyakirMachmir() {
228
241
  return this.timeAtAngle(10.2, true);
229
242
  }
243
+ getShaahZmanisBasedZmanZdt(startOfDay, endOfDay, hours) {
244
+ const temporalHour = this.noaa.getTemporalHour(startOfDay, endOfDay);
245
+ const offset = Math.trunc(temporalHour * hours);
246
+ const zdt = NOAACalculator.getTimeOffset(startOfDay, offset);
247
+ return zdt;
248
+ }
230
249
  /**
231
250
  * Utility method for using elevation-aware sunrise/sunset
232
251
  * @private
@@ -239,9 +258,7 @@ export class Zmanim {
239
258
  const endOfDay = this.useElevation
240
259
  ? this.noaa.getSunset()
241
260
  : this.noaa.getSeaLevelSunset();
242
- const temporalHour = this.noaa.getTemporalHour(startOfDay, endOfDay);
243
- const offset = Math.round(temporalHour * hours);
244
- const zdt = NOAACalculator.getTimeOffset(startOfDay, offset);
261
+ const zdt = this.getShaahZmanisBasedZmanZdt(startOfDay, endOfDay, hours);
245
262
  return zdtToDate(zdt);
246
263
  }
247
264
  /**
@@ -266,6 +283,20 @@ export class Zmanim {
266
283
  // Gra
267
284
  return this.getShaahZmanisBasedZman(4);
268
285
  }
286
+ /**
287
+ * This method returns the latest time for burning _chametz_ on _Erev Pesach_ according to the opinion
288
+ * of the <a href="https://en.wikipedia.org/wiki/Vilna_Gaon">GRA</a>. This time is 5 hours into the day based on the
289
+ * opinion of the <a href="https://en.wikipedia.org/wiki/Vilna_Gaon">GRA</a> that the day is calculated from
290
+ * sunrise to sunset. This returns the time 5 * {@link #getShaahZmanisGra()} after {@link #getSeaLevelSunrise() sea
291
+ * level sunrise}.
292
+ * @return the <code>Date</code> of the latest time for burning _chametz_ on _Erev Pesach_. If it is not
293
+ * _erev Pesach_ or the calculation can't be computed such as in the Arctic Circle where there is at least
294
+ * one day a year where the sun does not rise, and one where it does not set, a <code>null</code> will be
295
+ * returned.
296
+ */
297
+ sofZmanBiurChametzGRA() {
298
+ return this.getShaahZmanisBasedZman(5);
299
+ }
269
300
  /**
270
301
  * Returns an array with alot (Date) and ms in hour (number)
271
302
  * @private
@@ -498,7 +529,7 @@ export class Zmanim {
498
529
  * is it the start of _Kiddush Levana_ time or the end? If it is start roll it to the next _tzais_,
499
530
  * and if it is the end, return the end of the previous night (_alos_ passed in). Ignored if either
500
531
  * _alos_ or _tzais_ are null.
501
- * @return the _molad_ based time. If the _zman_ does not occur during the current date, <code>null</code> will be
532
+ * @return the _molad_ based time. If the _zman_ does not occur during the current date, `null` will be
502
533
  * returned.
503
534
  */
504
535
  getMoladBasedTime(moladBasedTime, alos, tzais, techila) {
@@ -530,7 +561,7 @@ export class Zmanim {
530
561
  * halfway between _molad_ and _molad_. This adds half the 29 days, 12 hours and 793 chalakim time between
531
562
  * _molad_ and _molad_ (14 days, 18 hours, 22 minutes and 666 milliseconds) to the month's _molad_.
532
563
  * The _sof zman Kiddush Levana_ will be returned even if it occurs during the day. To limit the time to between
533
- * _tzais_ and _alos_, see {@link #getSofZmanKidushLevanaBetweenMoldos(Date, Date)}.
564
+ * _tzais_ and _alos_, see {@link getSofZmanKidushLevanaBetweenMoldos}.
534
565
  *
535
566
  * @param alos
536
567
  * the beginning of the Jewish day. If _Kidush Levana_ occurs during the day (starting at _alos_ and
@@ -542,7 +573,7 @@ export class Zmanim {
542
573
  * adjustment will be made.
543
574
  * @return the Date representing the moment halfway between molad and molad. If the time occurs between
544
575
  * _alos_ and _tzais_, _alos_ will be returned. If the _zman_ will not occur on this
545
- * day, a <code>null</code> will be returned.
576
+ * day, a `null` will be returned.
546
577
  */
547
578
  getSofZmanKidushLevanaBetweenMoldos(alos = null, tzais = null) {
548
579
  const hd = this.getHDate();
@@ -561,15 +592,15 @@ export class Zmanim {
561
592
  * the Shulchan Aruch (Orach Chaim 426). It should be noted that some opinions hold that the
562
593
  * <a href="https://en.wikipedia.org/wiki/Moses_Isserles">Rema</a> who brings down the opinion of the <a
563
594
  * href="https://en.wikipedia.org/wiki/Yaakov_ben_Moshe_Levi_Moelin">Maharil's</a> of calculating
564
- * {@link #getSofZmanKidushLevanaBetweenMoldos(Date, Date) half way between _molad_ and _molad_} is of
595
+ * {@link getSofZmanKidushLevanaBetweenMoldos half way between _molad_ and _molad_} is of
565
596
  * the opinion that the Mechaber agrees to his opinion. Also see the Aruch Hashulchan. For additional details on the subject,
566
597
  * See Rabbi Dovid Heber's very detailed write-up in Siman Daled (chapter 4) of <a href="https://hebrewbooks.org/53000">Shaarei
567
598
  * Zmanim</a>. The _sof zman Kiddush Levana_ will be returned even if it occurs during the day. To limit the time to
568
- * between _tzais_ and _alos_, see {@link #getSofZmanKidushLevana15Days(Date, Date)}.
599
+ * between _tzais_ and _alos_, see {@link getSofZmanKidushLevana15Days}.
569
600
  *
570
601
  * @return the Date representing the moment 15 days after the _molad_. If the time occurs between
571
602
  * _alos_ and _tzais_, _alos_ will be returned. If the _zman_ will not occur on this day, a
572
- * <code>null</code> will be returned.
603
+ * `null` will be returned.
573
604
  *
574
605
  *
575
606
  */
@@ -603,7 +634,7 @@ export class Zmanim {
603
634
  *
604
635
  * @return the Date representing the moment 3 days after the molad. If the time occurs between _alos_ and
605
636
  * _tzais_, _tzais_ will be returned. If the _zman_ will not occur on this day, a
606
- * <code>null</code> will be returned.
637
+ * `null` will be returned.
607
638
  */
608
639
  getTchilasZmanKidushLevana3Days(alos = null, tzais = null) {
609
640
  const hd = this.getHDate();
@@ -632,7 +663,7 @@ export class Zmanim {
632
663
  * {@link HebrewDateFormatter} that will have formatting for this.
633
664
  *
634
665
  * @return the Date representing the moment of the molad. If the _molad_ does not occur on this day, a
635
- * <code>null</code> will be returned.
666
+ * `null` will be returned.
636
667
  *
637
668
  */
638
669
  getZmanMolad() {
@@ -656,10 +687,10 @@ export class Zmanim {
656
687
  /**
657
688
  * Returns the earliest time of _Kiddush Levana_ according to the opinions that it should not be said until 7
658
689
  * days after the _molad_. The time will be returned even if it occurs during the day when _Kiddush Levana_
659
- * can't be recited. Use {@link #getTchilasZmanKidushLevana7Days(Date, Date)} if you want to limit the time to night hours.
690
+ * can't be recited. Use {@link getTchilasZmanKidushLevana7Days} if you want to limit the time to night hours.
660
691
  *
661
692
  * @return the Date representing the moment 7 days after the molad regardless of it is day or night. If the _zman_
662
- * will not occur on this day, a <code>null</code> will be returned.
693
+ * will not occur on this day, a `null` will be returned.
663
694
  */
664
695
  getTchilasZmanKidushLevana7Days(alos = null, tzais = null) {
665
696
  const hd = this.getHDate();
@@ -674,6 +705,174 @@ export class Zmanim {
674
705
  const molad = new Molad(hd.getFullYear(), hd.getMonth());
675
706
  return this.getMoladBasedTime(molad.getTchilasZmanKidushLevana7Days(), alos, tzais, true);
676
707
  }
708
+ /**
709
+ * A method that returns the <a href="https://en.wikipedia.org/wiki/Shneur_Zalman_of_Liadi">Baal Hatanya</a>'s
710
+ * _netz amiti_ (sunrise) without
711
+ * elevation adjustment. This forms the base for the Baal Hatanya's dawn-based calculations that are
712
+ * calculated as a dip below the horizon before sunrise.
713
+ *
714
+ * According to the Baal Hatanya, _netz amiti_, or true (halachic) sunrise, is when the top of the sun's
715
+ * disk is visible at an elevation similar to the mountains of Eretz Yisrael. The time is calculated as the point at which
716
+ * the center of the sun's disk is 1.583&deg; below the horizon. This degree-based calculation can be found in Rabbi Shalom
717
+ * DovBer Levine's commentary on The <a href="https://www.chabadlibrary.org/books/pdf/Seder-Hachnosas-Shabbos.pdf">Baal
718
+ * Hatanya's Seder Hachnasas Shabbos</a>. From an elevation of 546 meters, the top of <a href=
719
+ * "https://en.wikipedia.org/wiki/Mount_Carmel">Har Hacarmel</a>, the sun disappears when it is 1&deg; 35' or 1.583&deg;
720
+ * below the sea level horizon. This in turn is based on the Gemara <a href=
721
+ * "https://hebrewbooks.org/shas.aspx?mesechta=2&daf=35">Shabbos 35a</a>. There are other opinions brought down by
722
+ * Rabbi Levine, including Rabbi Yosef Yitzchok Feigelstock who calculates it as the degrees below the horizon 4 minutes after
723
+ * sunset in Yerushalayim (on the equinox). That is brought down as 1.583&deg;. This is identical to the 1&deg; 35' _zman_
724
+ * and is probably a typo and should be 1.683&deg;. These calculations are used by most <a href=
725
+ * "https://en.wikipedia.org/wiki/Chabad">Chabad</a> calendars that use the Baal Hatanya's _zmanim_. See
726
+ * <a href="https://www.chabad.org/library/article_cdo/aid/3209349/jewish/About-Our-Zmanim-Calculations.htm">About Our
727
+ * _Zmanim_ Calculations @ Chabad.org</a>.
728
+ *
729
+ * Note: _netz amiti_ is used only for calculating certain _zmanim_, and is intentionally unpublished. For
730
+ * practical purposes, daytime _mitzvos_ like _shofar_ and _lulav_ should not be done until after the
731
+ * published time for _netz_ / sunrise.
732
+ *
733
+ * @return the <code>Date</code> representing the exact sea level _netz amiti_ (sunrise) time. If the calculation can't be
734
+ * computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one
735
+ * where it does not set, a `null` will be returned. See detailed explanation on top of the page.
736
+ *
737
+ * @see ZENITH_1_POINT_583
738
+ */
739
+ getSunriseBaalHatanya() {
740
+ return this.noaa.getSunriseOffsetByDegrees(ZENITH_1_POINT_583);
741
+ }
742
+ /**
743
+ * A method that returns the <a href="https://en.wikipedia.org/wiki/Shneur_Zalman_of_Liadi">Baal Hatanya</a>'s
744
+ * _shkiah amiti_ (sunset) without
745
+ * elevation adjustment. This forms the base for the Baal Hatanya's dusk-based calculations that are calculated
746
+ * as a dip below the horizon after sunset.
747
+ *
748
+ * According to the Baal Hatanya, _shkiah amiti_, true (_halachic_) sunset, is when the top of the
749
+ * sun's disk disappears from view at an elevation similar to the mountains of _Eretz Yisrael_.
750
+ * This time is calculated as the point at which the center of the sun's disk is 1.583 degrees below the horizon.
751
+ *
752
+ * Note: _shkiah amiti_ is used only for calculating certain _zmanim_, and is intentionally unpublished. For
753
+ * practical purposes, all daytime mitzvos should be completed before the published time for _shkiah_ / sunset.
754
+ *
755
+ * For further explanation of the calculations used for the Baal Hatanya's _zmanim_ in this library, see
756
+ * <a href="https://www.chabad.org/library/article_cdo/aid/3209349/jewish/About-Our-Zmanim-Calculations.htm">About Our
757
+ * _Zmanim_ Calculations @ Chabad.org</a>.
758
+ *
759
+ * @return the <code>Date</code> representing the exact sea level _shkiah amiti_ (sunset) time. If the calculation
760
+ * can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not
761
+ * rise, and one where it does not set, a `null` will be returned.
762
+ *
763
+ * @see ZENITH_1_POINT_583
764
+ */
765
+ getSunsetBaalHatanya() {
766
+ return this.noaa.getSunsetOffsetByDegrees(ZENITH_1_POINT_583);
767
+ }
768
+ /**
769
+ * Returns the <a href="https://en.wikipedia.org/wiki/Shneur_Zalman_of_Liadi">Baal Hatanya</a>'s _alos_
770
+ * (dawn) calculated as the time when the sun is 16.9&deg; below the eastern {@link GEOMETRIC_ZENITH geometric horizon}
771
+ * before {@link getSunrise() sunrise}.
772
+ *
773
+ * The zenith of 16.9&deg; below is based on the calculation that the time between dawn
774
+ * and _netz amiti_ (sunrise) is 72 minutes, the time that is takes to walk 4 mil at 18 minutes
775
+ * a mil (<a href="https://en.wikipedia.org/wiki/Maimonides">Rambam</a> and others). The sun's position at 72
776
+ * minutes before {@link getSunriseBaalHatanya _netz amiti_ (sunrise)} in Jerusalem <a href=
777
+ * "https://kosherjava.com/2022/01/12/equinox-vs-equilux-zmanim-calculations/">around the equinox / equilux</a> is
778
+ * 16.9&deg; below {@link GEOMETRIC_ZENITH geometric zenith}.
779
+ *
780
+ * @return The <code>Date</code> of dawn. If the calculation can't be computed such as northern and southern
781
+ * locations even south of the Arctic Circle and north of the Antarctic Circle where the sun may not reach
782
+ * low enough below the horizon for this calculation, a `null` will be returned. */
783
+ alosBaalHatanya() {
784
+ return this.timeAtAngle(16.9, true);
785
+ }
786
+ getShaahZmanisBaalHatanya(hours) {
787
+ const zdt = this.getShaahZmanisBasedZmanZdt(this.getSunriseBaalHatanya(), this.getSunsetBaalHatanya(), hours);
788
+ return zdtToDate(zdt);
789
+ }
790
+ /**
791
+ * This method returns the latest _zman krias shema_ (time to recite Shema in the morning). This time is 3
792
+ * {@link shaahZmanisBaalHatanya() _shaos zmaniyos_} (solar hours) after {@link getSunriseBaalHatanya()
793
+ * _netz amiti_ (sunrise)} based on the opinion of the Baal Hatanya that the day is calculated from
794
+ * sunrise to sunset. This returns the time 3 * {@link getShaahZmanisBaalHatanya()} after {@link getSunriseBaalHatanya()
795
+ * _netz amiti_ (sunrise)}.
796
+ *
797
+ * @return the <code>Date</code> of the latest _zman shema_ according to the Baal Hatanya. If the calculation
798
+ * can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does
799
+ * not rise, and one where it does not set, a `null` will be returned.
800
+ */
801
+ sofZmanShmaBaalHatanya() {
802
+ return this.getShaahZmanisBaalHatanya(3);
803
+ }
804
+ /**
805
+ * This method returns the latest _zman tfilah_ (time to recite the morning prayers). This time is 4
806
+ * hours into the day based on the opinion of the Baal Hatanya that the day is
807
+ * calculated from sunrise to sunset. This returns the time 4 * {@link getShaahZmanisBaalHatanya()} after
808
+ * {@link getSunriseBaalHatanya() _netz amiti_ (sunrise)}.
809
+ *
810
+ * @return the <code>Date</code> of the latest _zman tfilah_. If the calculation can't be computed such as in
811
+ * the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does
812
+ * not set, a `null` will be returned.
813
+ */
814
+ sofZmanTfilaBaalHatanya() {
815
+ return this.getShaahZmanisBaalHatanya(4);
816
+ }
817
+ /**
818
+ * This method returns the time of _mincha gedola_. _Mincha gedola_ is the earliest time one can pray
819
+ * _mincha_. The <a href="https://en.wikipedia.org/wiki/Maimonides">Rambam</a> is of the opinion that it is
820
+ * better to delay _mincha_ until {@link minchaKetanaBaalHatanya() _mincha ketana_} while the
821
+ * <a href="https://en.wikipedia.org/wiki/Asher_ben_Jehiel">Ra"sh</a>,
822
+ * <a href="https://en.wikipedia.org/wiki/Jacob_ben_Asher">Tur</a>, <a href=
823
+ * "https://en.wikipedia.org/wiki/Vilna_Gaon">GRA</a> and others are of the opinion that _mincha_ can be prayed
824
+ * _lechatchila_ starting at _mincha gedola_. This is calculated as 6.5 {@link getShaahZmanisBaalHatanya()
825
+ * sea level solar hours} after {@link getSunriseBaalHatanya() _netz amiti_ (sunrise)}. This calculation is based
826
+ * on the opinion of the Baal Hatanya that the day is calculated from sunrise to sunset. This returns the time 6.5
827
+ * * {@link getShaahZmanisBaalHatanya()} after {@link getSunriseBaalHatanya() _netz amiti_ ("real" sunrise)}.
828
+ * @return the <code>Date</code> of the time of _mincha gedola_ according to the Baal Hatanya. If the calculation
829
+ * can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise,
830
+ * and one where it does not set, a `null` will be returned.
831
+ */
832
+ minchaGedolaBaalHatanya() {
833
+ return this.getShaahZmanisBaalHatanya(6.5);
834
+ }
835
+ /**
836
+ * This method returns the time of _mincha ketana_. This is the preferred earliest time to pray
837
+ * _mincha_ in the opinion of the <a href="https://en.wikipedia.org/wiki/Maimonides">Rambam</a> and others.
838
+ * For more information on this see the documentation on {@link minchaGedolaBaalHatanya() _mincha gedola_}.
839
+ * This is calculated as 9.5 sea level solar hours after {@link getSunriseBaalHatanya
840
+ * _netz amiti_ (sunrise)}. This calculation is calculated based on the opinion of the Baal Hatanya that the
841
+ * day is calculated from sunrise to sunset. This returns the time 9.5 * after
842
+ * _netz amiti_ (sunrise).
843
+ *
844
+ * @return the <code>Date</code> of the time of _mincha ketana_. If the calculation can't be computed such as
845
+ * in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it
846
+ * does not set, a `null` will be returned.
847
+ */
848
+ minchaKetanaBaalHatanya() {
849
+ return this.getShaahZmanisBaalHatanya(9.5);
850
+ }
851
+ /**
852
+ * This method returns the time of _plag hamincha_. This is calculated as 10.75 hours after sunrise. This
853
+ * calculation is based on the opinion of the Baal Hatanya that the day is calculated
854
+ * from sunrise to sunset. This returns the time 10.75 * {@link getShaahZmanisBaalHatanya()} after
855
+ * {@link getSunriseBaalHatanya() _netz amiti_ (sunrise)}.
856
+ *
857
+ * @return the <code>Date</code> of the time of _plag hamincha_. If the calculation can't be computed such as
858
+ * in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it
859
+ * does not set, a `null` will be returned.
860
+ */
861
+ plagHaminchaBaalHatanya() {
862
+ return this.getShaahZmanisBaalHatanya(10.75);
863
+ }
864
+ /**
865
+ * A method that returns _tzais_ (nightfall) when the sun is 6&deg; below the western geometric horizon
866
+ * (90&deg;) after {@link getSunset() sunset}. For information on the source of this calculation see
867
+ * {@link ZENITH_6_DEGREES}.
868
+ *
869
+ * @return The <code>Date</code> of nightfall. If the calculation can't be computed such as northern and southern
870
+ * locations even south of the Arctic Circle and north of the Antarctic Circle where the sun may not reach
871
+ * low enough below the horizon for this calculation, a `null` will be returned. * @see ZENITH_6_DEGREES
872
+ */
873
+ tzaisBaalHatanya() {
874
+ return this.timeAtAngle(6, false);
875
+ }
677
876
  /**
678
877
  * Uses timeFormat to return a date like '20:34'.
679
878
  * Returns `XX:XX` if the date is invalid.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hebcal/core",
3
- "version": "6.1.0",
3
+ "version": "6.3.0",
4
4
  "author": "Michael J. Radwin (https://github.com/mjradwin)",
5
5
  "contributors": [
6
6
  "Eyal Schachter (https://github.com/Scimonster)",
@@ -68,6 +68,7 @@
68
68
  },
69
69
  "license": "GPL-2.0",
70
70
  "devDependencies": {
71
+ "@rollup/plugin-json": "^6.1.0",
71
72
  "@rollup/plugin-node-resolve": "^16.0.3",
72
73
  "@rollup/plugin-terser": "^1.0.0",
73
74
  "@rollup/plugin-typescript": "^12.3.0",
@@ -79,7 +80,7 @@
79
80
  "rollup": "^4.60.1",
80
81
  "rollup-plugin-bundle-size": "^1.0.3",
81
82
  "rollup-plugin-visualizer": "^7.0.1",
82
- "typedoc": "^0.28.18",
83
+ "typedoc": "^0.28.19",
83
84
  "typescript": "^6.0.2",
84
85
  "vitest": "^4.1.4"
85
86
  },
@@ -1,168 +0,0 @@
1
- import { HDate } from '@hebcal/hdate';
2
- import type { Location } from './location';
3
- export type DailyLearningValue = boolean | number | string;
4
- /**
5
- * Options to configure which events are returned
6
- */
7
- export type CalOptions = {
8
- /**
9
- * latitude/longitude/tzid used for candle-lighting
10
- */
11
- location?: Location;
12
- /**
13
- * Gregorian or Hebrew year
14
- */
15
- year?: number;
16
- /**
17
- * to interpret year as Hebrew year
18
- */
19
- isHebrewYear?: boolean;
20
- /**
21
- * Gregorian or Hebrew month (to filter results to a single month)
22
- */
23
- month?: number | string;
24
- /**
25
- * generate calendar for multiple years (default 1)
26
- */
27
- numYears?: number;
28
- /**
29
- * use specific start date (requires end date)
30
- */
31
- start?: number | HDate | Date;
32
- /**
33
- * use specific end date (requires start date)
34
- */
35
- end?: number | HDate | Date;
36
- /**
37
- * calculate candle-lighting and havdalah times
38
- */
39
- candlelighting?: boolean;
40
- /**
41
- * minutes before sundown to light candles (default 18)
42
- */
43
- candleLightingMins?: number;
44
- /**
45
- * minutes after sundown for Havdalah (typical values are 42, 50, or 72).
46
- * If `undefined` (the default), calculate Havdalah according to Tzeit Hakochavim -
47
- * Nightfall (the point when 3 small stars are observable in the night time sky with
48
- * the naked eye). If `0`, Havdalah times are suppressed.
49
- */
50
- havdalahMins?: number;
51
- /**
52
- * degrees for solar depression for Havdalah.
53
- * Default is 8.5 degrees for 3 small stars. use 7.083 degrees for 3 medium-sized stars
54
- * (observed by Dr. Baruch (Berthold) Cohn in his luach published in France in 1899).
55
- * If `0`, Havdalah times are suppressed.
56
- */
57
- havdalahDeg?: number;
58
- /**
59
- * degrees for solar depression for end of fast days.
60
- * Default is 7.083 degrees for 3 medium-sized stars. Other commonly-used values include
61
- * 6.45 degrees, as calculated by Rabbi Yechiel Michel Tucazinsky.
62
- */
63
- fastEndDeg?: number;
64
- /**
65
- * use elevation for calculations (default `false`).
66
- * If `true`, use elevation to affect the calculation of all sunrise/sunset based zmanim.
67
- * Note: there are some zmanim such as degree-based zmanim that are driven by the amount
68
- * of light in the sky and are not impacted by elevation.
69
- * These zmanim intentionally do not support elevation adjustment.
70
- */
71
- useElevation?: boolean;
72
- /**
73
- * calculate parashah hashavua on Saturdays
74
- */
75
- sedrot?: boolean;
76
- /**
77
- * Israeli holiday and sedra schedule
78
- */
79
- il?: boolean;
80
- /**
81
- * suppress minor fasts
82
- */
83
- noMinorFast?: boolean;
84
- /**
85
- * suppress modern holidays
86
- */
87
- noModern?: boolean;
88
- /**
89
- * suppress Rosh Chodesh
90
- */
91
- noRoshChodesh?: boolean;
92
- /**
93
- * add Shabbat Mevarchim
94
- */
95
- shabbatMevarchim?: boolean;
96
- /**
97
- * suppress Special Shabbat
98
- */
99
- noSpecialShabbat?: boolean;
100
- /**
101
- * suppress regular holidays
102
- */
103
- noHolidays?: boolean;
104
- /**
105
- * include Days of the Omer
106
- */
107
- omer?: boolean;
108
- /**
109
- * include event announcing the molad
110
- */
111
- molad?: boolean;
112
- /**
113
- * use Ashkenazi transliterations for event titles (default Sephardi transliterations)
114
- * @deprecated use `event.render('ashkenazi')` instead
115
- */
116
- ashkenazi?: boolean;
117
- /**
118
- * translate event titles according to a locale
119
- * Default value is `en`, also built-in are `he` and `ashkenazi`.
120
- * Additional locales (such as `ru` or `fr`) are provided by the
121
- * {@link https://github.com/hebcal/hebcal-locales @hebcal/locales} package
122
- */
123
- locale?: string;
124
- /**
125
- * print the Hebrew date for the entire date range
126
- */
127
- addHebrewDates?: boolean;
128
- /**
129
- * print the Hebrew date for dates with some events
130
- */
131
- addHebrewDatesForEvents?: boolean;
132
- /**
133
- * use bitmask from `flags` to filter events
134
- */
135
- mask?: number;
136
- /**
137
- * include Yom Kippur Katan (default `false`).
138
- * יוֹם כִּפּוּר קָטָן is a minor day of atonement occurring monthly on the day preceeding each Rosh Chodesh.
139
- * Yom Kippur Katan is omitted in Elul (on the day before Rosh Hashanah),
140
- * Tishrei (Yom Kippur has just passed), Kislev (due to Chanukah)
141
- * and Nisan (fasting not permitted during Nisan).
142
- * When Rosh Chodesh occurs on Shabbat or Sunday, Yom Kippur Katan is observed on the preceding Thursday.
143
- * See {@link https://en.wikipedia.org/wiki/Yom_Kippur_Katan#Practices Wikipedia Yom Kippur Katan practices}
144
- */
145
- yomKippurKatan?: boolean;
146
- /**
147
- * Whether to use 12-hour time (as opposed to 24-hour time).
148
- * Possible values are `true` and `false`; the default is locale dependent.
149
- */
150
- hour12?: boolean;
151
- /**
152
- * map of options to enable daily study calendars
153
- * such as `dafYomi`, `mishnaYomi`, `nachYomi` with value `true`. For `yerushalmi`
154
- * the value should be a `number` for edition (`1` for Vilna, `2` for Schottenstein).
155
- */
156
- dailyLearning?: Record<string, DailyLearningValue>;
157
- /**
158
- * Yizkor (Hebrew: יִזְכּוֹר) is an Ashkenazi Jewish memorial prayer service
159
- * for the dead. Yizkor is recited in synagogue as part of the service
160
- * during four holidays each year:
161
- * 1. Yom Kippur
162
- * 2. Shmini Atzeret
163
- * 3. The final day of Passover (8th day Pesach in Diaspora, 7th day
164
- * Pesach in Israel)
165
- * 4. Shavuot (2nd day Shavuot in Diaspora)
166
- */
167
- yizkor?: boolean;
168
- };
@@ -1,32 +0,0 @@
1
- import { HDate } from '@hebcal/hdate';
2
- import { Event } from './event';
3
- /**
4
- * Plug-ins for daily learning calendars such as Daf Yomi, Mishna Yomi, Nach Yomi, etc.
5
- *
6
- * Learning schedules are provided by the `@hebcal/learning` package.
7
- */
8
- export declare class DailyLearning {
9
- /**
10
- * Register a new learning calendar.
11
- * @param name case insensitive
12
- * @param calendar a function that returns an `Event` or `null`
13
- * @param startDate the first date for which this calendar is valid
14
- */
15
- static addCalendar(name: string, calendar: (hd: HDate, il: boolean) => Event | null, startDate?: HDate): void;
16
- /**
17
- * Returns an event from daily calendar for a given date. Returns `null` if there
18
- * is no learning from this calendar on this date.
19
- * @param name case insensitive
20
- * @param hd Hebrew Date
21
- * @param il true for Israel, false for Diaspora
22
- */
23
- static lookup(name: string, hd: HDate, il: boolean): Event | null;
24
- static getStartDate(name: string): HDate | undefined;
25
- /**
26
- * Tests to see if learning calendar has been registered
27
- * @param name case insensitive
28
- */
29
- static has(name: string): boolean;
30
- /** Returns the names of all calendars registered */
31
- static getCalendars(): string[];
32
- }
@@ -1,37 +0,0 @@
1
- import { HDate } from '@hebcal/hdate';
2
- import { Event } from './event';
3
- import './locale';
4
- /** Daily Hebrew date ("11th of Sivan, 5780") */
5
- export declare class HebrewDateEvent extends Event {
6
- /**
7
- * @param date
8
- */
9
- constructor(date: HDate);
10
- /**
11
- * @param [locale] Optional locale name (defaults to empty locale)
12
- * @example
13
- * import {HDate, HebrewDateEvent, months} from '@hebcal/core';
14
- *
15
- * const hd = new HDate(15, months.CHESHVAN, 5769);
16
- * const ev = new HebrewDateEvent(hd);
17
- * console.log(ev.render('en')); // '15th of Cheshvan, 5769'
18
- * console.log(ev.render('he')); // 'ט״ו חֶשְׁוָן תשס״ט'
19
- */
20
- render(locale?: string): string;
21
- /**
22
- * @private
23
- * @param locale
24
- */
25
- private renderBriefHebrew;
26
- /**
27
- * @param [locale] Optional locale name (defaults to empty locale)
28
- * @example
29
- * import {HDate, HebrewDateEvent, months} from '@hebcal/core';
30
- *
31
- * const hd = new HDate(15, months.CHESHVAN, 5769);
32
- * const ev = new HebrewDateEvent(hd);
33
- * console.log(ev.renderBrief()); // '15th of Cheshvan'
34
- * console.log(ev.renderBrief('he')); // 'ט״ו חֶשְׁוָן'
35
- */
36
- renderBrief(locale?: string): string;
37
- }
@@ -1,84 +0,0 @@
1
- import { HDate } from '@hebcal/hdate';
2
- import { Event } from './event';
3
- import './locale';
4
- /** Represents a built-in holiday like Pesach, Purim or Tu BiShvat */
5
- export declare class HolidayEvent extends Event {
6
- /** During Sukkot or Pesach */
7
- cholHaMoedDay?: number;
8
- /**
9
- * `true` if the fast day was postponed a day to avoid Shabbat.
10
- * - Tish'a B'Av postponed from the 9th to the 10th
11
- * - Tzom Tammuz postponed from the 17th to the 18th
12
- */
13
- observed?: boolean;
14
- constructor(date: HDate, desc: string, mask?: number, attrs?: object);
15
- basename(): string;
16
- url(): string | undefined;
17
- urlDateSuffix(): string;
18
- getEmoji(): string;
19
- getCategories(): string[];
20
- /**
21
- * Returns (translated) description of this event
22
- * @param [locale] Optional locale name (defaults to empty locale)
23
- */
24
- render(locale?: string): string;
25
- /**
26
- * Returns a brief (translated) description of this event.
27
- * For most events, this is the same as render(). For some events, it procudes
28
- * a shorter text (e.g. without a time or added description).
29
- * @param [locale] Optional locale name (defaults to empty locale)
30
- */
31
- renderBrief(locale?: string): string;
32
- }
33
- /**
34
- * Because Asara B'Tevet often occurs twice in the same Gregorian year,
35
- * we subclass HolidayEvent to generate the correct URL.
36
- */
37
- export declare class AsaraBTevetEvent extends HolidayEvent {
38
- urlDateSuffix(): string;
39
- }
40
- /**
41
- * Because Chanukah sometimes starts in December and ends in January,
42
- * we subclass HolidayEvent to generate the correct URL.
43
- */
44
- export declare class ChanukahEvent extends HolidayEvent {
45
- readonly chanukahDay?: number;
46
- /**
47
- * @param chanukahDay should be undefined for 1st night of Chanukah
48
- */
49
- constructor(date: HDate, desc: string, mask: number, chanukahDay?: number);
50
- urlDateSuffix(): string;
51
- }
52
- /** Represents Rosh Hashana, the Jewish New Year */
53
- export declare class RoshHashanaEvent extends HolidayEvent {
54
- private readonly hyear;
55
- /**
56
- * @private
57
- * @param date Hebrew date event occurs
58
- * @param hyear Hebrew year
59
- * @param mask optional holiday flags
60
- */
61
- constructor(date: HDate, hyear: number, mask: number);
62
- /**
63
- * Returns (translated) description of this event
64
- * @param [locale] Optional locale name (defaults to empty locale)
65
- */
66
- render(locale?: string): string;
67
- getEmoji(): string;
68
- }
69
- /** Represents Rosh Chodesh, the beginning of a new month */
70
- export declare class RoshChodeshEvent extends HolidayEvent {
71
- /**
72
- * Constructs Rosh Chodesh event
73
- * @param date Hebrew date event occurs
74
- * @param monthName Hebrew month name (not translated)
75
- */
76
- constructor(date: HDate, monthName: string);
77
- /**
78
- * Returns (translated) description of this event
79
- * @param [locale] Optional locale name (defaults to empty locale)
80
- */
81
- render(locale?: string): string;
82
- basename(): string;
83
- getEmoji(): string;
84
- }