@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
@@ -136,12 +136,13 @@ export declare class Zmanim {
136
136
  * the result is not impacted by elevation.
137
137
  */
138
138
  misheyakirMachmir(): Date;
139
+ private getShaahZmanisBasedZmanZdt;
139
140
  /**
140
141
  * Utility method for using elevation-aware sunrise/sunset
141
142
  * @private
142
143
  * @param hours
143
144
  */
144
- getShaahZmanisBasedZman(hours: number): Date;
145
+ private getShaahZmanisBasedZman;
145
146
  /**
146
147
  * Latest Shema (Gra); Sunrise plus 3 halachic hours, according to the Gra.
147
148
  * If elevation is enabled, this function will include elevation in the calculation.
@@ -158,6 +159,18 @@ export declare class Zmanim {
158
159
  * If elevation is enabled, this function will include elevation in the calculation.
159
160
  */
160
161
  sofZmanTfilla(): Date;
162
+ /**
163
+ * This method returns the latest time for burning _chametz_ on _Erev Pesach_ according to the opinion
164
+ * of the <a href="https://en.wikipedia.org/wiki/Vilna_Gaon">GRA</a>. This time is 5 hours into the day based on the
165
+ * opinion of the <a href="https://en.wikipedia.org/wiki/Vilna_Gaon">GRA</a> that the day is calculated from
166
+ * sunrise to sunset. This returns the time 5 * {@link #getShaahZmanisGra()} after {@link #getSeaLevelSunrise() sea
167
+ * level sunrise}.
168
+ * @return the <code>Date</code> of the latest time for burning _chametz_ on _Erev Pesach_. If it is not
169
+ * _erev Pesach_ or the calculation can't be computed such as in the Arctic Circle where there is at least
170
+ * one day a year where the sun does not rise, and one where it does not set, a <code>null</code> will be
171
+ * returned.
172
+ */
173
+ sofZmanBiurChametzGRA(): Date;
161
174
  /**
162
175
  * Returns an array with alot (Date) and ms in hour (number)
163
176
  * @private
@@ -311,7 +324,7 @@ export declare class Zmanim {
311
324
  * is it the start of _Kiddush Levana_ time or the end? If it is start roll it to the next _tzais_,
312
325
  * and if it is the end, return the end of the previous night (_alos_ passed in). Ignored if either
313
326
  * _alos_ or _tzais_ are null.
314
- * @return the _molad_ based time. If the _zman_ does not occur during the current date, <code>null</code> will be
327
+ * @return the _molad_ based time. If the _zman_ does not occur during the current date, `null` will be
315
328
  * returned.
316
329
  */
317
330
  private getMoladBasedTime;
@@ -322,7 +335,7 @@ export declare class Zmanim {
322
335
  * halfway between _molad_ and _molad_. This adds half the 29 days, 12 hours and 793 chalakim time between
323
336
  * _molad_ and _molad_ (14 days, 18 hours, 22 minutes and 666 milliseconds) to the month's _molad_.
324
337
  * The _sof zman Kiddush Levana_ will be returned even if it occurs during the day. To limit the time to between
325
- * _tzais_ and _alos_, see {@link #getSofZmanKidushLevanaBetweenMoldos(Date, Date)}.
338
+ * _tzais_ and _alos_, see {@link getSofZmanKidushLevanaBetweenMoldos}.
326
339
  *
327
340
  * @param alos
328
341
  * the beginning of the Jewish day. If _Kidush Levana_ occurs during the day (starting at _alos_ and
@@ -334,7 +347,7 @@ export declare class Zmanim {
334
347
  * adjustment will be made.
335
348
  * @return the Date representing the moment halfway between molad and molad. If the time occurs between
336
349
  * _alos_ and _tzais_, _alos_ will be returned. If the _zman_ will not occur on this
337
- * day, a <code>null</code> will be returned.
350
+ * day, a `null` will be returned.
338
351
  */
339
352
  getSofZmanKidushLevanaBetweenMoldos(alos?: Temporal.ZonedDateTime | null, tzais?: Temporal.ZonedDateTime | null): Temporal.ZonedDateTime | null;
340
353
  /**
@@ -342,15 +355,15 @@ export declare class Zmanim {
342
355
  * the Shulchan Aruch (Orach Chaim 426). It should be noted that some opinions hold that the
343
356
  * <a href="https://en.wikipedia.org/wiki/Moses_Isserles">Rema</a> who brings down the opinion of the <a
344
357
  * href="https://en.wikipedia.org/wiki/Yaakov_ben_Moshe_Levi_Moelin">Maharil's</a> of calculating
345
- * {@link #getSofZmanKidushLevanaBetweenMoldos(Date, Date) half way between _molad_ and _molad_} is of
358
+ * {@link getSofZmanKidushLevanaBetweenMoldos half way between _molad_ and _molad_} is of
346
359
  * the opinion that the Mechaber agrees to his opinion. Also see the Aruch Hashulchan. For additional details on the subject,
347
360
  * See Rabbi Dovid Heber's very detailed write-up in Siman Daled (chapter 4) of <a href="https://hebrewbooks.org/53000">Shaarei
348
361
  * Zmanim</a>. The _sof zman Kiddush Levana_ will be returned even if it occurs during the day. To limit the time to
349
- * between _tzais_ and _alos_, see {@link #getSofZmanKidushLevana15Days(Date, Date)}.
362
+ * between _tzais_ and _alos_, see {@link getSofZmanKidushLevana15Days}.
350
363
  *
351
364
  * @return the Date representing the moment 15 days after the _molad_. If the time occurs between
352
365
  * _alos_ and _tzais_, _alos_ will be returned. If the _zman_ will not occur on this day, a
353
- * <code>null</code> will be returned.
366
+ * `null` will be returned.
354
367
  *
355
368
  *
356
369
  */
@@ -373,7 +386,7 @@ export declare class Zmanim {
373
386
  *
374
387
  * @return the Date representing the moment 3 days after the molad. If the time occurs between _alos_ and
375
388
  * _tzais_, _tzais_ will be returned. If the _zman_ will not occur on this day, a
376
- * <code>null</code> will be returned.
389
+ * `null` will be returned.
377
390
  */
378
391
  getTchilasZmanKidushLevana3Days(alos?: Temporal.ZonedDateTime | null, tzais?: Temporal.ZonedDateTime | null): Temporal.ZonedDateTime | null;
379
392
  /**
@@ -382,19 +395,166 @@ export declare class Zmanim {
382
395
  * {@link HebrewDateFormatter} that will have formatting for this.
383
396
  *
384
397
  * @return the Date representing the moment of the molad. If the _molad_ does not occur on this day, a
385
- * <code>null</code> will be returned.
398
+ * `null` will be returned.
386
399
  *
387
400
  */
388
401
  getZmanMolad(): Temporal.ZonedDateTime | null;
389
402
  /**
390
403
  * Returns the earliest time of _Kiddush Levana_ according to the opinions that it should not be said until 7
391
404
  * days after the _molad_. The time will be returned even if it occurs during the day when _Kiddush Levana_
392
- * can't be recited. Use {@link #getTchilasZmanKidushLevana7Days(Date, Date)} if you want to limit the time to night hours.
405
+ * can't be recited. Use {@link getTchilasZmanKidushLevana7Days} if you want to limit the time to night hours.
393
406
  *
394
407
  * @return the Date representing the moment 7 days after the molad regardless of it is day or night. If the _zman_
395
- * will not occur on this day, a <code>null</code> will be returned.
408
+ * will not occur on this day, a `null` will be returned.
396
409
  */
397
410
  getTchilasZmanKidushLevana7Days(alos?: Temporal.ZonedDateTime | null, tzais?: Temporal.ZonedDateTime | null): Temporal.ZonedDateTime | null;
411
+ /**
412
+ * A method that returns the <a href="https://en.wikipedia.org/wiki/Shneur_Zalman_of_Liadi">Baal Hatanya</a>'s
413
+ * _netz amiti_ (sunrise) without
414
+ * elevation adjustment. This forms the base for the Baal Hatanya's dawn-based calculations that are
415
+ * calculated as a dip below the horizon before sunrise.
416
+ *
417
+ * According to the Baal Hatanya, _netz amiti_, or true (halachic) sunrise, is when the top of the sun's
418
+ * disk is visible at an elevation similar to the mountains of Eretz Yisrael. The time is calculated as the point at which
419
+ * the center of the sun's disk is 1.583&deg; below the horizon. This degree-based calculation can be found in Rabbi Shalom
420
+ * DovBer Levine's commentary on The <a href="https://www.chabadlibrary.org/books/pdf/Seder-Hachnosas-Shabbos.pdf">Baal
421
+ * Hatanya's Seder Hachnasas Shabbos</a>. From an elevation of 546 meters, the top of <a href=
422
+ * "https://en.wikipedia.org/wiki/Mount_Carmel">Har Hacarmel</a>, the sun disappears when it is 1&deg; 35' or 1.583&deg;
423
+ * below the sea level horizon. This in turn is based on the Gemara <a href=
424
+ * "https://hebrewbooks.org/shas.aspx?mesechta=2&daf=35">Shabbos 35a</a>. There are other opinions brought down by
425
+ * Rabbi Levine, including Rabbi Yosef Yitzchok Feigelstock who calculates it as the degrees below the horizon 4 minutes after
426
+ * sunset in Yerushalayim (on the equinox). That is brought down as 1.583&deg;. This is identical to the 1&deg; 35' _zman_
427
+ * and is probably a typo and should be 1.683&deg;. These calculations are used by most <a href=
428
+ * "https://en.wikipedia.org/wiki/Chabad">Chabad</a> calendars that use the Baal Hatanya's _zmanim_. See
429
+ * <a href="https://www.chabad.org/library/article_cdo/aid/3209349/jewish/About-Our-Zmanim-Calculations.htm">About Our
430
+ * _Zmanim_ Calculations @ Chabad.org</a>.
431
+ *
432
+ * Note: _netz amiti_ is used only for calculating certain _zmanim_, and is intentionally unpublished. For
433
+ * practical purposes, daytime _mitzvos_ like _shofar_ and _lulav_ should not be done until after the
434
+ * published time for _netz_ / sunrise.
435
+ *
436
+ * @return the <code>Date</code> representing the exact sea level _netz amiti_ (sunrise) time. If the calculation can't be
437
+ * computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one
438
+ * where it does not set, a `null` will be returned. See detailed explanation on top of the page.
439
+ *
440
+ * @see ZENITH_1_POINT_583
441
+ */
442
+ private getSunriseBaalHatanya;
443
+ /**
444
+ * A method that returns the <a href="https://en.wikipedia.org/wiki/Shneur_Zalman_of_Liadi">Baal Hatanya</a>'s
445
+ * _shkiah amiti_ (sunset) without
446
+ * elevation adjustment. This forms the base for the Baal Hatanya's dusk-based calculations that are calculated
447
+ * as a dip below the horizon after sunset.
448
+ *
449
+ * According to the Baal Hatanya, _shkiah amiti_, true (_halachic_) sunset, is when the top of the
450
+ * sun's disk disappears from view at an elevation similar to the mountains of _Eretz Yisrael_.
451
+ * This time is calculated as the point at which the center of the sun's disk is 1.583 degrees below the horizon.
452
+ *
453
+ * Note: _shkiah amiti_ is used only for calculating certain _zmanim_, and is intentionally unpublished. For
454
+ * practical purposes, all daytime mitzvos should be completed before the published time for _shkiah_ / sunset.
455
+ *
456
+ * For further explanation of the calculations used for the Baal Hatanya's _zmanim_ in this library, see
457
+ * <a href="https://www.chabad.org/library/article_cdo/aid/3209349/jewish/About-Our-Zmanim-Calculations.htm">About Our
458
+ * _Zmanim_ Calculations @ Chabad.org</a>.
459
+ *
460
+ * @return the <code>Date</code> representing the exact sea level _shkiah amiti_ (sunset) time. If the calculation
461
+ * can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not
462
+ * rise, and one where it does not set, a `null` will be returned.
463
+ *
464
+ * @see ZENITH_1_POINT_583
465
+ */
466
+ private getSunsetBaalHatanya;
467
+ /**
468
+ * Returns the <a href="https://en.wikipedia.org/wiki/Shneur_Zalman_of_Liadi">Baal Hatanya</a>'s _alos_
469
+ * (dawn) calculated as the time when the sun is 16.9&deg; below the eastern {@link GEOMETRIC_ZENITH geometric horizon}
470
+ * before {@link getSunrise() sunrise}.
471
+ *
472
+ * The zenith of 16.9&deg; below is based on the calculation that the time between dawn
473
+ * and _netz amiti_ (sunrise) is 72 minutes, the time that is takes to walk 4 mil at 18 minutes
474
+ * a mil (<a href="https://en.wikipedia.org/wiki/Maimonides">Rambam</a> and others). The sun's position at 72
475
+ * minutes before {@link getSunriseBaalHatanya _netz amiti_ (sunrise)} in Jerusalem <a href=
476
+ * "https://kosherjava.com/2022/01/12/equinox-vs-equilux-zmanim-calculations/">around the equinox / equilux</a> is
477
+ * 16.9&deg; below {@link GEOMETRIC_ZENITH geometric zenith}.
478
+ *
479
+ * @return The <code>Date</code> of dawn. If the calculation can't be computed such as northern and southern
480
+ * locations even south of the Arctic Circle and north of the Antarctic Circle where the sun may not reach
481
+ * low enough below the horizon for this calculation, a `null` will be returned. */
482
+ alosBaalHatanya(): Date;
483
+ private getShaahZmanisBaalHatanya;
484
+ /**
485
+ * This method returns the latest _zman krias shema_ (time to recite Shema in the morning). This time is 3
486
+ * {@link shaahZmanisBaalHatanya() _shaos zmaniyos_} (solar hours) after {@link getSunriseBaalHatanya()
487
+ * _netz amiti_ (sunrise)} based on the opinion of the Baal Hatanya that the day is calculated from
488
+ * sunrise to sunset. This returns the time 3 * {@link getShaahZmanisBaalHatanya()} after {@link getSunriseBaalHatanya()
489
+ * _netz amiti_ (sunrise)}.
490
+ *
491
+ * @return the <code>Date</code> of the latest _zman shema_ according to the Baal Hatanya. If the calculation
492
+ * can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does
493
+ * not rise, and one where it does not set, a `null` will be returned.
494
+ */
495
+ sofZmanShmaBaalHatanya(): Date;
496
+ /**
497
+ * This method returns the latest _zman tfilah_ (time to recite the morning prayers). This time is 4
498
+ * hours into the day based on the opinion of the Baal Hatanya that the day is
499
+ * calculated from sunrise to sunset. This returns the time 4 * {@link getShaahZmanisBaalHatanya()} after
500
+ * {@link getSunriseBaalHatanya() _netz amiti_ (sunrise)}.
501
+ *
502
+ * @return the <code>Date</code> of the latest _zman tfilah_. If the calculation can't be computed such as in
503
+ * the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does
504
+ * not set, a `null` will be returned.
505
+ */
506
+ sofZmanTfilaBaalHatanya(): Date;
507
+ /**
508
+ * This method returns the time of _mincha gedola_. _Mincha gedola_ is the earliest time one can pray
509
+ * _mincha_. The <a href="https://en.wikipedia.org/wiki/Maimonides">Rambam</a> is of the opinion that it is
510
+ * better to delay _mincha_ until {@link minchaKetanaBaalHatanya() _mincha ketana_} while the
511
+ * <a href="https://en.wikipedia.org/wiki/Asher_ben_Jehiel">Ra"sh</a>,
512
+ * <a href="https://en.wikipedia.org/wiki/Jacob_ben_Asher">Tur</a>, <a href=
513
+ * "https://en.wikipedia.org/wiki/Vilna_Gaon">GRA</a> and others are of the opinion that _mincha_ can be prayed
514
+ * _lechatchila_ starting at _mincha gedola_. This is calculated as 6.5 {@link getShaahZmanisBaalHatanya()
515
+ * sea level solar hours} after {@link getSunriseBaalHatanya() _netz amiti_ (sunrise)}. This calculation is based
516
+ * on the opinion of the Baal Hatanya that the day is calculated from sunrise to sunset. This returns the time 6.5
517
+ * * {@link getShaahZmanisBaalHatanya()} after {@link getSunriseBaalHatanya() _netz amiti_ ("real" sunrise)}.
518
+ * @return the <code>Date</code> of the time of _mincha gedola_ according to the Baal Hatanya. If the calculation
519
+ * 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,
520
+ * and one where it does not set, a `null` will be returned.
521
+ */
522
+ minchaGedolaBaalHatanya(): Date;
523
+ /**
524
+ * This method returns the time of _mincha ketana_. This is the preferred earliest time to pray
525
+ * _mincha_ in the opinion of the <a href="https://en.wikipedia.org/wiki/Maimonides">Rambam</a> and others.
526
+ * For more information on this see the documentation on {@link minchaGedolaBaalHatanya() _mincha gedola_}.
527
+ * This is calculated as 9.5 sea level solar hours after {@link getSunriseBaalHatanya
528
+ * _netz amiti_ (sunrise)}. This calculation is calculated based on the opinion of the Baal Hatanya that the
529
+ * day is calculated from sunrise to sunset. This returns the time 9.5 * after
530
+ * _netz amiti_ (sunrise).
531
+ *
532
+ * @return the <code>Date</code> of the time of _mincha ketana_. If the calculation can't be computed such as
533
+ * in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it
534
+ * does not set, a `null` will be returned.
535
+ */
536
+ minchaKetanaBaalHatanya(): Date;
537
+ /**
538
+ * This method returns the time of _plag hamincha_. This is calculated as 10.75 hours after sunrise. This
539
+ * calculation is based on the opinion of the Baal Hatanya that the day is calculated
540
+ * from sunrise to sunset. This returns the time 10.75 * {@link getShaahZmanisBaalHatanya()} after
541
+ * {@link getSunriseBaalHatanya() _netz amiti_ (sunrise)}.
542
+ *
543
+ * @return the <code>Date</code> of the time of _plag hamincha_. If the calculation can't be computed such as
544
+ * in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it
545
+ * does not set, a `null` will be returned.
546
+ */
547
+ plagHaminchaBaalHatanya(): Date;
548
+ /**
549
+ * A method that returns _tzais_ (nightfall) when the sun is 6&deg; below the western geometric horizon
550
+ * (90&deg;) after {@link getSunset() sunset}. For information on the source of this calculation see
551
+ * {@link ZENITH_6_DEGREES}.
552
+ *
553
+ * @return The <code>Date</code> of nightfall. If the calculation can't be computed such as northern and southern
554
+ * locations even south of the Arctic Circle and north of the Antarctic Circle where the sun may not reach
555
+ * low enough below the horizon for this calculation, a `null` will be returned. * @see ZENITH_6_DEGREES
556
+ */
557
+ tzaisBaalHatanya(): Date;
398
558
  /**
399
559
  * Uses timeFormat to return a date like '20:34'.
400
560
  * Returns `XX:XX` if the date is invalid.
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.1.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.3.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import 'temporal-polyfill/global';
3
3
  import { NOAACalculator } from '@hebcal/noaa';
4
4
  import { HDate, getTimezoneOffset, pad2, getPseudoISO, isDate } from '@hebcal/hdate';
@@ -22,6 +22,19 @@ function getDate(date) {
22
22
  return date.greg();
23
23
  throw new TypeError(`invalid date: ${date}`);
24
24
  }
25
+ /**
26
+ * The zenith of astronomical sunrise and sunset. The sun is 90&deg; from the vertical 0&deg;
27
+ */
28
+ const GEOMETRIC_ZENITH = 90;
29
+ /**
30
+ * The zenith of 1.583&deg; below {@link GEOMETRIC_ZENITH geometric zenith} (90&deg;). This calculation is used for
31
+ * calculating _netz amiti_ (sunrise) and _shkiah amiti_ (sunset) based on the opinion of the
32
+ * <a href="https://en.wikipedia.org/wiki/Shneur_Zalman_of_Liadi">Baal Hatanya</a>.
33
+ *
34
+ * @see Zmanim.sunriseBaalHatanya()
35
+ * @see Zmanim.sunsetBaalHatanya()
36
+ */
37
+ const ZENITH_1_POINT_583 = GEOMETRIC_ZENITH + 1.583;
25
38
  /**
26
39
  * Calculate halachic times (zmanim / זְמַנִּים) for a given day and location.
27
40
  * Calculations are available for tzeit / tzais (nightfall),
@@ -97,7 +110,7 @@ class Zmanim {
97
110
  * @param rising
98
111
  */
99
112
  timeAtAngle(angle, rising) {
100
- const offsetZenith = 90 + angle;
113
+ const offsetZenith = GEOMETRIC_ZENITH + angle;
101
114
  const zdt = rising
102
115
  ? this.noaa.getSunriseOffsetByDegrees(offsetZenith)
103
116
  : this.noaa.getSunsetOffsetByDegrees(offsetZenith);
@@ -229,6 +242,12 @@ class Zmanim {
229
242
  misheyakirMachmir() {
230
243
  return this.timeAtAngle(10.2, true);
231
244
  }
245
+ getShaahZmanisBasedZmanZdt(startOfDay, endOfDay, hours) {
246
+ const temporalHour = this.noaa.getTemporalHour(startOfDay, endOfDay);
247
+ const offset = Math.trunc(temporalHour * hours);
248
+ const zdt = NOAACalculator.getTimeOffset(startOfDay, offset);
249
+ return zdt;
250
+ }
232
251
  /**
233
252
  * Utility method for using elevation-aware sunrise/sunset
234
253
  * @private
@@ -241,9 +260,7 @@ class Zmanim {
241
260
  const endOfDay = this.useElevation
242
261
  ? this.noaa.getSunset()
243
262
  : this.noaa.getSeaLevelSunset();
244
- const temporalHour = this.noaa.getTemporalHour(startOfDay, endOfDay);
245
- const offset = Math.round(temporalHour * hours);
246
- const zdt = NOAACalculator.getTimeOffset(startOfDay, offset);
263
+ const zdt = this.getShaahZmanisBasedZmanZdt(startOfDay, endOfDay, hours);
247
264
  return zdtToDate(zdt);
248
265
  }
249
266
  /**
@@ -268,6 +285,20 @@ class Zmanim {
268
285
  // Gra
269
286
  return this.getShaahZmanisBasedZman(4);
270
287
  }
288
+ /**
289
+ * This method returns the latest time for burning _chametz_ on _Erev Pesach_ according to the opinion
290
+ * of the <a href="https://en.wikipedia.org/wiki/Vilna_Gaon">GRA</a>. This time is 5 hours into the day based on the
291
+ * opinion of the <a href="https://en.wikipedia.org/wiki/Vilna_Gaon">GRA</a> that the day is calculated from
292
+ * sunrise to sunset. This returns the time 5 * {@link #getShaahZmanisGra()} after {@link #getSeaLevelSunrise() sea
293
+ * level sunrise}.
294
+ * @return the <code>Date</code> of the latest time for burning _chametz_ on _Erev Pesach_. If it is not
295
+ * _erev Pesach_ or the calculation can't be computed such as in the Arctic Circle where there is at least
296
+ * one day a year where the sun does not rise, and one where it does not set, a <code>null</code> will be
297
+ * returned.
298
+ */
299
+ sofZmanBiurChametzGRA() {
300
+ return this.getShaahZmanisBasedZman(5);
301
+ }
271
302
  /**
272
303
  * Returns an array with alot (Date) and ms in hour (number)
273
304
  * @private
@@ -500,7 +531,7 @@ class Zmanim {
500
531
  * is it the start of _Kiddush Levana_ time or the end? If it is start roll it to the next _tzais_,
501
532
  * and if it is the end, return the end of the previous night (_alos_ passed in). Ignored if either
502
533
  * _alos_ or _tzais_ are null.
503
- * @return the _molad_ based time. If the _zman_ does not occur during the current date, <code>null</code> will be
534
+ * @return the _molad_ based time. If the _zman_ does not occur during the current date, `null` will be
504
535
  * returned.
505
536
  */
506
537
  getMoladBasedTime(moladBasedTime, alos, tzais, techila) {
@@ -532,7 +563,7 @@ class Zmanim {
532
563
  * halfway between _molad_ and _molad_. This adds half the 29 days, 12 hours and 793 chalakim time between
533
564
  * _molad_ and _molad_ (14 days, 18 hours, 22 minutes and 666 milliseconds) to the month's _molad_.
534
565
  * The _sof zman Kiddush Levana_ will be returned even if it occurs during the day. To limit the time to between
535
- * _tzais_ and _alos_, see {@link #getSofZmanKidushLevanaBetweenMoldos(Date, Date)}.
566
+ * _tzais_ and _alos_, see {@link getSofZmanKidushLevanaBetweenMoldos}.
536
567
  *
537
568
  * @param alos
538
569
  * the beginning of the Jewish day. If _Kidush Levana_ occurs during the day (starting at _alos_ and
@@ -544,7 +575,7 @@ class Zmanim {
544
575
  * adjustment will be made.
545
576
  * @return the Date representing the moment halfway between molad and molad. If the time occurs between
546
577
  * _alos_ and _tzais_, _alos_ will be returned. If the _zman_ will not occur on this
547
- * day, a <code>null</code> will be returned.
578
+ * day, a `null` will be returned.
548
579
  */
549
580
  getSofZmanKidushLevanaBetweenMoldos(alos = null, tzais = null) {
550
581
  const hd = this.getHDate();
@@ -563,15 +594,15 @@ class Zmanim {
563
594
  * the Shulchan Aruch (Orach Chaim 426). It should be noted that some opinions hold that the
564
595
  * <a href="https://en.wikipedia.org/wiki/Moses_Isserles">Rema</a> who brings down the opinion of the <a
565
596
  * href="https://en.wikipedia.org/wiki/Yaakov_ben_Moshe_Levi_Moelin">Maharil's</a> of calculating
566
- * {@link #getSofZmanKidushLevanaBetweenMoldos(Date, Date) half way between _molad_ and _molad_} is of
597
+ * {@link getSofZmanKidushLevanaBetweenMoldos half way between _molad_ and _molad_} is of
567
598
  * the opinion that the Mechaber agrees to his opinion. Also see the Aruch Hashulchan. For additional details on the subject,
568
599
  * See Rabbi Dovid Heber's very detailed write-up in Siman Daled (chapter 4) of <a href="https://hebrewbooks.org/53000">Shaarei
569
600
  * Zmanim</a>. The _sof zman Kiddush Levana_ will be returned even if it occurs during the day. To limit the time to
570
- * between _tzais_ and _alos_, see {@link #getSofZmanKidushLevana15Days(Date, Date)}.
601
+ * between _tzais_ and _alos_, see {@link getSofZmanKidushLevana15Days}.
571
602
  *
572
603
  * @return the Date representing the moment 15 days after the _molad_. If the time occurs between
573
604
  * _alos_ and _tzais_, _alos_ will be returned. If the _zman_ will not occur on this day, a
574
- * <code>null</code> will be returned.
605
+ * `null` will be returned.
575
606
  *
576
607
  *
577
608
  */
@@ -605,7 +636,7 @@ class Zmanim {
605
636
  *
606
637
  * @return the Date representing the moment 3 days after the molad. If the time occurs between _alos_ and
607
638
  * _tzais_, _tzais_ will be returned. If the _zman_ will not occur on this day, a
608
- * <code>null</code> will be returned.
639
+ * `null` will be returned.
609
640
  */
610
641
  getTchilasZmanKidushLevana3Days(alos = null, tzais = null) {
611
642
  const hd = this.getHDate();
@@ -634,7 +665,7 @@ class Zmanim {
634
665
  * {@link HebrewDateFormatter} that will have formatting for this.
635
666
  *
636
667
  * @return the Date representing the moment of the molad. If the _molad_ does not occur on this day, a
637
- * <code>null</code> will be returned.
668
+ * `null` will be returned.
638
669
  *
639
670
  */
640
671
  getZmanMolad() {
@@ -658,10 +689,10 @@ class Zmanim {
658
689
  /**
659
690
  * Returns the earliest time of _Kiddush Levana_ according to the opinions that it should not be said until 7
660
691
  * days after the _molad_. The time will be returned even if it occurs during the day when _Kiddush Levana_
661
- * can't be recited. Use {@link #getTchilasZmanKidushLevana7Days(Date, Date)} if you want to limit the time to night hours.
692
+ * can't be recited. Use {@link getTchilasZmanKidushLevana7Days} if you want to limit the time to night hours.
662
693
  *
663
694
  * @return the Date representing the moment 7 days after the molad regardless of it is day or night. If the _zman_
664
- * will not occur on this day, a <code>null</code> will be returned.
695
+ * will not occur on this day, a `null` will be returned.
665
696
  */
666
697
  getTchilasZmanKidushLevana7Days(alos = null, tzais = null) {
667
698
  const hd = this.getHDate();
@@ -676,6 +707,174 @@ class Zmanim {
676
707
  const molad = new Molad(hd.getFullYear(), hd.getMonth());
677
708
  return this.getMoladBasedTime(molad.getTchilasZmanKidushLevana7Days(), alos, tzais, true);
678
709
  }
710
+ /**
711
+ * A method that returns the <a href="https://en.wikipedia.org/wiki/Shneur_Zalman_of_Liadi">Baal Hatanya</a>'s
712
+ * _netz amiti_ (sunrise) without
713
+ * elevation adjustment. This forms the base for the Baal Hatanya's dawn-based calculations that are
714
+ * calculated as a dip below the horizon before sunrise.
715
+ *
716
+ * According to the Baal Hatanya, _netz amiti_, or true (halachic) sunrise, is when the top of the sun's
717
+ * disk is visible at an elevation similar to the mountains of Eretz Yisrael. The time is calculated as the point at which
718
+ * the center of the sun's disk is 1.583&deg; below the horizon. This degree-based calculation can be found in Rabbi Shalom
719
+ * DovBer Levine's commentary on The <a href="https://www.chabadlibrary.org/books/pdf/Seder-Hachnosas-Shabbos.pdf">Baal
720
+ * Hatanya's Seder Hachnasas Shabbos</a>. From an elevation of 546 meters, the top of <a href=
721
+ * "https://en.wikipedia.org/wiki/Mount_Carmel">Har Hacarmel</a>, the sun disappears when it is 1&deg; 35' or 1.583&deg;
722
+ * below the sea level horizon. This in turn is based on the Gemara <a href=
723
+ * "https://hebrewbooks.org/shas.aspx?mesechta=2&daf=35">Shabbos 35a</a>. There are other opinions brought down by
724
+ * Rabbi Levine, including Rabbi Yosef Yitzchok Feigelstock who calculates it as the degrees below the horizon 4 minutes after
725
+ * sunset in Yerushalayim (on the equinox). That is brought down as 1.583&deg;. This is identical to the 1&deg; 35' _zman_
726
+ * and is probably a typo and should be 1.683&deg;. These calculations are used by most <a href=
727
+ * "https://en.wikipedia.org/wiki/Chabad">Chabad</a> calendars that use the Baal Hatanya's _zmanim_. See
728
+ * <a href="https://www.chabad.org/library/article_cdo/aid/3209349/jewish/About-Our-Zmanim-Calculations.htm">About Our
729
+ * _Zmanim_ Calculations @ Chabad.org</a>.
730
+ *
731
+ * Note: _netz amiti_ is used only for calculating certain _zmanim_, and is intentionally unpublished. For
732
+ * practical purposes, daytime _mitzvos_ like _shofar_ and _lulav_ should not be done until after the
733
+ * published time for _netz_ / sunrise.
734
+ *
735
+ * @return the <code>Date</code> representing the exact sea level _netz amiti_ (sunrise) time. If the calculation can't be
736
+ * computed such as in the Arctic Circle where there is at least one day a year where the sun does not rise, and one
737
+ * where it does not set, a `null` will be returned. See detailed explanation on top of the page.
738
+ *
739
+ * @see ZENITH_1_POINT_583
740
+ */
741
+ getSunriseBaalHatanya() {
742
+ return this.noaa.getSunriseOffsetByDegrees(ZENITH_1_POINT_583);
743
+ }
744
+ /**
745
+ * A method that returns the <a href="https://en.wikipedia.org/wiki/Shneur_Zalman_of_Liadi">Baal Hatanya</a>'s
746
+ * _shkiah amiti_ (sunset) without
747
+ * elevation adjustment. This forms the base for the Baal Hatanya's dusk-based calculations that are calculated
748
+ * as a dip below the horizon after sunset.
749
+ *
750
+ * According to the Baal Hatanya, _shkiah amiti_, true (_halachic_) sunset, is when the top of the
751
+ * sun's disk disappears from view at an elevation similar to the mountains of _Eretz Yisrael_.
752
+ * This time is calculated as the point at which the center of the sun's disk is 1.583 degrees below the horizon.
753
+ *
754
+ * Note: _shkiah amiti_ is used only for calculating certain _zmanim_, and is intentionally unpublished. For
755
+ * practical purposes, all daytime mitzvos should be completed before the published time for _shkiah_ / sunset.
756
+ *
757
+ * For further explanation of the calculations used for the Baal Hatanya's _zmanim_ in this library, see
758
+ * <a href="https://www.chabad.org/library/article_cdo/aid/3209349/jewish/About-Our-Zmanim-Calculations.htm">About Our
759
+ * _Zmanim_ Calculations @ Chabad.org</a>.
760
+ *
761
+ * @return the <code>Date</code> representing the exact sea level _shkiah amiti_ (sunset) time. If the calculation
762
+ * can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does not
763
+ * rise, and one where it does not set, a `null` will be returned.
764
+ *
765
+ * @see ZENITH_1_POINT_583
766
+ */
767
+ getSunsetBaalHatanya() {
768
+ return this.noaa.getSunsetOffsetByDegrees(ZENITH_1_POINT_583);
769
+ }
770
+ /**
771
+ * Returns the <a href="https://en.wikipedia.org/wiki/Shneur_Zalman_of_Liadi">Baal Hatanya</a>'s _alos_
772
+ * (dawn) calculated as the time when the sun is 16.9&deg; below the eastern {@link GEOMETRIC_ZENITH geometric horizon}
773
+ * before {@link getSunrise() sunrise}.
774
+ *
775
+ * The zenith of 16.9&deg; below is based on the calculation that the time between dawn
776
+ * and _netz amiti_ (sunrise) is 72 minutes, the time that is takes to walk 4 mil at 18 minutes
777
+ * a mil (<a href="https://en.wikipedia.org/wiki/Maimonides">Rambam</a> and others). The sun's position at 72
778
+ * minutes before {@link getSunriseBaalHatanya _netz amiti_ (sunrise)} in Jerusalem <a href=
779
+ * "https://kosherjava.com/2022/01/12/equinox-vs-equilux-zmanim-calculations/">around the equinox / equilux</a> is
780
+ * 16.9&deg; below {@link GEOMETRIC_ZENITH geometric zenith}.
781
+ *
782
+ * @return The <code>Date</code> of dawn. If the calculation can't be computed such as northern and southern
783
+ * locations even south of the Arctic Circle and north of the Antarctic Circle where the sun may not reach
784
+ * low enough below the horizon for this calculation, a `null` will be returned. */
785
+ alosBaalHatanya() {
786
+ return this.timeAtAngle(16.9, true);
787
+ }
788
+ getShaahZmanisBaalHatanya(hours) {
789
+ const zdt = this.getShaahZmanisBasedZmanZdt(this.getSunriseBaalHatanya(), this.getSunsetBaalHatanya(), hours);
790
+ return zdtToDate(zdt);
791
+ }
792
+ /**
793
+ * This method returns the latest _zman krias shema_ (time to recite Shema in the morning). This time is 3
794
+ * {@link shaahZmanisBaalHatanya() _shaos zmaniyos_} (solar hours) after {@link getSunriseBaalHatanya()
795
+ * _netz amiti_ (sunrise)} based on the opinion of the Baal Hatanya that the day is calculated from
796
+ * sunrise to sunset. This returns the time 3 * {@link getShaahZmanisBaalHatanya()} after {@link getSunriseBaalHatanya()
797
+ * _netz amiti_ (sunrise)}.
798
+ *
799
+ * @return the <code>Date</code> of the latest _zman shema_ according to the Baal Hatanya. If the calculation
800
+ * can't be computed such as in the Arctic Circle where there is at least one day a year where the sun does
801
+ * not rise, and one where it does not set, a `null` will be returned.
802
+ */
803
+ sofZmanShmaBaalHatanya() {
804
+ return this.getShaahZmanisBaalHatanya(3);
805
+ }
806
+ /**
807
+ * This method returns the latest _zman tfilah_ (time to recite the morning prayers). This time is 4
808
+ * hours into the day based on the opinion of the Baal Hatanya that the day is
809
+ * calculated from sunrise to sunset. This returns the time 4 * {@link getShaahZmanisBaalHatanya()} after
810
+ * {@link getSunriseBaalHatanya() _netz amiti_ (sunrise)}.
811
+ *
812
+ * @return the <code>Date</code> of the latest _zman tfilah_. If the calculation can't be computed such as in
813
+ * the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it does
814
+ * not set, a `null` will be returned.
815
+ */
816
+ sofZmanTfilaBaalHatanya() {
817
+ return this.getShaahZmanisBaalHatanya(4);
818
+ }
819
+ /**
820
+ * This method returns the time of _mincha gedola_. _Mincha gedola_ is the earliest time one can pray
821
+ * _mincha_. The <a href="https://en.wikipedia.org/wiki/Maimonides">Rambam</a> is of the opinion that it is
822
+ * better to delay _mincha_ until {@link minchaKetanaBaalHatanya() _mincha ketana_} while the
823
+ * <a href="https://en.wikipedia.org/wiki/Asher_ben_Jehiel">Ra"sh</a>,
824
+ * <a href="https://en.wikipedia.org/wiki/Jacob_ben_Asher">Tur</a>, <a href=
825
+ * "https://en.wikipedia.org/wiki/Vilna_Gaon">GRA</a> and others are of the opinion that _mincha_ can be prayed
826
+ * _lechatchila_ starting at _mincha gedola_. This is calculated as 6.5 {@link getShaahZmanisBaalHatanya()
827
+ * sea level solar hours} after {@link getSunriseBaalHatanya() _netz amiti_ (sunrise)}. This calculation is based
828
+ * on the opinion of the Baal Hatanya that the day is calculated from sunrise to sunset. This returns the time 6.5
829
+ * * {@link getShaahZmanisBaalHatanya()} after {@link getSunriseBaalHatanya() _netz amiti_ ("real" sunrise)}.
830
+ * @return the <code>Date</code> of the time of _mincha gedola_ according to the Baal Hatanya. If the calculation
831
+ * 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,
832
+ * and one where it does not set, a `null` will be returned.
833
+ */
834
+ minchaGedolaBaalHatanya() {
835
+ return this.getShaahZmanisBaalHatanya(6.5);
836
+ }
837
+ /**
838
+ * This method returns the time of _mincha ketana_. This is the preferred earliest time to pray
839
+ * _mincha_ in the opinion of the <a href="https://en.wikipedia.org/wiki/Maimonides">Rambam</a> and others.
840
+ * For more information on this see the documentation on {@link minchaGedolaBaalHatanya() _mincha gedola_}.
841
+ * This is calculated as 9.5 sea level solar hours after {@link getSunriseBaalHatanya
842
+ * _netz amiti_ (sunrise)}. This calculation is calculated based on the opinion of the Baal Hatanya that the
843
+ * day is calculated from sunrise to sunset. This returns the time 9.5 * after
844
+ * _netz amiti_ (sunrise).
845
+ *
846
+ * @return the <code>Date</code> of the time of _mincha ketana_. If the calculation can't be computed such as
847
+ * in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it
848
+ * does not set, a `null` will be returned.
849
+ */
850
+ minchaKetanaBaalHatanya() {
851
+ return this.getShaahZmanisBaalHatanya(9.5);
852
+ }
853
+ /**
854
+ * This method returns the time of _plag hamincha_. This is calculated as 10.75 hours after sunrise. This
855
+ * calculation is based on the opinion of the Baal Hatanya that the day is calculated
856
+ * from sunrise to sunset. This returns the time 10.75 * {@link getShaahZmanisBaalHatanya()} after
857
+ * {@link getSunriseBaalHatanya() _netz amiti_ (sunrise)}.
858
+ *
859
+ * @return the <code>Date</code> of the time of _plag hamincha_. If the calculation can't be computed such as
860
+ * in the Arctic Circle where there is at least one day a year where the sun does not rise, and one where it
861
+ * does not set, a `null` will be returned.
862
+ */
863
+ plagHaminchaBaalHatanya() {
864
+ return this.getShaahZmanisBaalHatanya(10.75);
865
+ }
866
+ /**
867
+ * A method that returns _tzais_ (nightfall) when the sun is 6&deg; below the western geometric horizon
868
+ * (90&deg;) after {@link getSunset() sunset}. For information on the source of this calculation see
869
+ * {@link ZENITH_6_DEGREES}.
870
+ *
871
+ * @return The <code>Date</code> of nightfall. If the calculation can't be computed such as northern and southern
872
+ * locations even south of the Arctic Circle and north of the Antarctic Circle where the sun may not reach
873
+ * low enough below the horizon for this calculation, a `null` will be returned. * @see ZENITH_6_DEGREES
874
+ */
875
+ tzaisBaalHatanya() {
876
+ return this.timeAtAngle(6, false);
877
+ }
679
878
  /**
680
879
  * Uses timeFormat to return a date like '20:34'.
681
880
  * Returns `XX:XX` if the date is invalid.