@hebcal/core 6.14.1 → 6.14.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/bundle.js +458 -381
  2. package/dist/bundle.js.map +1 -1
  3. package/dist/bundle.min.js +3 -3
  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/KiddushLevanaEvent.js +1 -1
  9. package/dist/esm/MevarchimChodeshEvent.js +1 -1
  10. package/dist/esm/ParshaEvent.js +1 -1
  11. package/dist/esm/TimedEvent.js +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 +48 -24
  15. package/dist/esm/calendar.js.map +1 -1
  16. package/dist/esm/candles.js +1 -1
  17. package/dist/esm/cities.json.js +1 -1
  18. package/dist/esm/event.js +1 -1
  19. package/dist/esm/getStartAndEnd.js +1 -1
  20. package/dist/esm/hallel.js +1 -1
  21. package/dist/esm/he-x-NoNikud.po.js +1 -1
  22. package/dist/esm/he.po.js +1 -1
  23. package/dist/esm/hebcal.js +1 -1
  24. package/dist/esm/holidays.d.ts +19 -0
  25. package/dist/esm/holidays.js +38 -9
  26. package/dist/esm/holidays.js.map +1 -1
  27. package/dist/esm/index.js +1 -1
  28. package/dist/esm/isAssurBemlacha.js +1 -1
  29. package/dist/esm/isAveilut.js +1 -1
  30. package/dist/esm/isFastDay.js +1 -1
  31. package/dist/esm/locale.js +1 -1
  32. package/dist/esm/location.js +1 -1
  33. package/dist/esm/modern.js +1 -1
  34. package/dist/esm/molad.js +1 -1
  35. package/dist/esm/moladBase.js +1 -1
  36. package/dist/esm/moladDate.js +1 -1
  37. package/dist/esm/omer.js +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 +1 -1
  46. package/dist/esm/staticHolidays.js +1 -1
  47. package/dist/esm/string.js +1 -1
  48. package/dist/esm/tachanun.js +1 -1
  49. package/dist/esm/zenith.js +1 -1
  50. package/dist/esm/zmanim.js +1 -1
  51. package/package.json +9 -9
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.14.1, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  const cals = new Map();
3
3
  /**
4
4
  * Plug-in registry for daily learning calendars such as Daf Yomi (Bavli),
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.14.1, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { Locale, gematriya, months } from '@hebcal/hdate';
3
3
  import { Event, flags } from './event.js';
4
4
  import './locale.js';
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.14.1, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { isoDateString, Locale } from '@hebcal/hdate';
3
3
  import { Event, flags } from './event.js';
4
4
  import { holidayDesc } from './staticHolidays.js';
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.14.1, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import 'temporal-polyfill/global';
3
3
  import { Locale, HDate } from '@hebcal/hdate';
4
4
  import { flags } from './event.js';
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.14.1, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { Locale, HDate, months } from '@hebcal/hdate';
3
3
  import { Event, flags } from './event.js';
4
4
  import { Molad } from './molad.js';
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.14.1, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { Event, flags } from './event.js';
3
3
  import { HDate, isoDateString } from '@hebcal/hdate';
4
4
  import { renderParshaName } from './parshaName.js';
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.14.1, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { Locale } from '@hebcal/hdate';
3
3
  import { Event } from './event.js';
4
4
  import { reformatTimeStr } from './reformatTimeStr.js';
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.14.1, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { Locale } from '@hebcal/hdate';
3
3
  import { flags } from './event.js';
4
4
  import { HolidayEvent } from './HolidayEvent.js';
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.14.1, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  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"], "Latest Kiddush Levana": ["Latest Kiddush Levanah"], "Earliest Kiddush Levana (3 days)": ["Earliest Kiddush Levanah (3 days)"], "Earliest Kiddush Levana (7 days)": ["Earliest Kiddush Levanah (7 days)"], "Latest Kiddush Levana (Maharil)": ["Latest Kiddush Levanah (Maharil)"], "Latest Kiddush Levana (15 days)": ["Latest Kiddush Levanah (15 days)"] } } };
3
3
 
4
4
  export { poAshkenazi as default };
@@ -1,11 +1,11 @@
1
- /*! @hebcal/core v6.14.1, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import './locale.js';
3
3
  import { months, Locale, abs2greg, HDate } from '@hebcal/hdate';
4
4
  import { makeCandleEvent, makeFastStartEnd, makeWeekdayChanukahCandleLighting } from './candles.js';
5
5
  import { Event, flags } from './event.js';
6
6
  import { getStartAndEnd } from './getStartAndEnd.js';
7
7
  import { HebrewDateEvent } from './HebrewDateEvent.js';
8
- import { getHolidaysForYear_ } from './holidays.js';
8
+ import { getHolidaysForYear_, timeOfDay, TIME_OF_DAY_MEVARCHIM } from './holidays.js';
9
9
  import { ParshaEvent } from './ParshaEvent.js';
10
10
  import { getSedra } from './sedra.js';
11
11
  import { HavdalahEvent, TimedEvent } from './TimedEvent.js';
@@ -212,9 +212,26 @@ function calendar(options = {}) {
212
212
  let candlesEv;
213
213
  const holidays0 = holidaysYear.get(hd.toString()) || [];
214
214
  const holidays = holidays0.filter(ev => ev.observedIn(il));
215
+ // On Shabbat, events tied to the morning Torah reading and announcements
216
+ // in synagogue come first: the parsha, special Shabbatot such as
217
+ // Shabbat Shekalim, then the Molad and Shabbat Mevarchim
218
+ if (options.sedrot && isSaturday) {
219
+ const parsha0 = sedra.lookup(abs);
220
+ if (!parsha0.chag) {
221
+ evts.push(new ParshaEvent(parsha0));
222
+ }
223
+ }
224
+ let mevarchim = isSaturday && (options.molad || options.shabbatMevarchim)
225
+ ? makeMoladAndMevarchimChodesh(hd, options)
226
+ : [];
215
227
  for (const ev of holidays) {
228
+ if (mevarchim.length && timeOfDay(ev) > TIME_OF_DAY_MEVARCHIM) {
229
+ evts.push(...mevarchim);
230
+ mevarchim = [];
231
+ }
216
232
  candlesEv = appendHolidayAndRelated(candlesEv, evts, ev, options, isFriday, isSaturday, hasUserMask);
217
233
  }
234
+ evts.push(...mevarchim);
218
235
  const mm = hd.getMonth();
219
236
  const dd = hd.getDate();
220
237
  // When Erev Pesach falls on Shabbat, burning chametz is moved to Friday.
@@ -224,12 +241,6 @@ function calendar(options = {}) {
224
241
  evts.push(biurEv);
225
242
  }
226
243
  }
227
- if (options.sedrot && isSaturday) {
228
- const parsha0 = sedra.lookup(abs);
229
- if (!parsha0.chag) {
230
- evts.push(new ParshaEvent(parsha0));
231
- }
232
- }
233
244
  if (options.yizkor) {
234
245
  if ((mm === months.TISHREI && (dd === 10 || dd === 22)) ||
235
246
  (mm === NISAN && dd === (il ? 21 : 22)) ||
@@ -256,22 +267,6 @@ function calendar(options = {}) {
256
267
  const omerEv = makeOmerEvent(hd, omer, options);
257
268
  evts.push(omerEv);
258
269
  }
259
- if (isSaturday && (options.molad || options.shabbatMevarchim)) {
260
- const events = makeMoladAndMevarchimChodesh(hd, options);
261
- evts.push(...events);
262
- }
263
- if (options.kiddushLevanaMaharil && dd >= 9 && dd <= 17) {
264
- // The event usually falls between the 11th and the 16th, but may be
265
- // moved back to candle-lighting before a Shabbat or Yom Tov
266
- const monthKey = hyear * 100 + mm;
267
- if (monthKey !== kiddushLevanaMonth) {
268
- kiddushLevanaMonth = monthKey;
269
- kiddushLevanaEv = makeKiddushLevanaEvent(hyear, mm, options);
270
- }
271
- if (kiddushLevanaEv?.getDate().abs() === abs) {
272
- evts.push(kiddushLevanaEv);
273
- }
274
- }
275
270
  if (!candlesEv && options.candlelighting && (isFriday || isSaturday)) {
276
271
  candlesEv = makeCandleEvent(undefined, hd, options, isFriday, isSaturday);
277
272
  if (isFriday && candlesEv && sedra) {
@@ -293,6 +288,18 @@ function calendar(options = {}) {
293
288
  if (candlesEv) {
294
289
  evts.push(candlesEv);
295
290
  }
291
+ if (options.kiddushLevanaMaharil && dd >= 9 && dd <= 17) {
292
+ // The event usually falls between the 11th and the 16th, but may be
293
+ // moved back to candle-lighting before a Shabbat or Yom Tov
294
+ const monthKey = hyear * 100 + mm;
295
+ if (monthKey !== kiddushLevanaMonth) {
296
+ kiddushLevanaMonth = monthKey;
297
+ kiddushLevanaEv = makeKiddushLevanaEvent(hyear, mm, options);
298
+ }
299
+ if (kiddushLevanaEv?.getDate().abs() === abs) {
300
+ insertTimedEvent(evts, prevEventsLength, kiddushLevanaEv);
301
+ }
302
+ }
296
303
  if (options.addHebrewDates ||
297
304
  (options.addHebrewDatesForEvents &&
298
305
  prevEventsLength !== evts.length - numDailyLearning)) {
@@ -598,6 +605,23 @@ function setOptionsFromMask(options) {
598
605
  options.kiddushLevanaMaharil = true;
599
606
  return m;
600
607
  }
608
+ /**
609
+ * Inserts `ev` into today's events (those at index `start` and beyond)
610
+ * just before the first `TimedEvent` that occurs later, or appends it.
611
+ * Unlike other timed events, Latest Kiddush Levana may fall at dawn,
612
+ * at candle-lighting or late at night, so its position can't be fixed.
613
+ */
614
+ function insertTimedEvent(events, start, ev) {
615
+ const time = ev.eventTime.getTime();
616
+ for (let i = start; i < events.length; i++) {
617
+ const other = events[i];
618
+ if (other instanceof TimedEvent && other.eventTime.getTime() > time) {
619
+ events.splice(i, 0, ev);
620
+ return;
621
+ }
622
+ }
623
+ events.push(ev);
624
+ }
601
625
  /**
602
626
  * Appends the Event `ev` to the `events` array. Also may add related
603
627
  * timed events like candle-lighting or fast start/end
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.js","sources":["../../../src/calendar.ts"],"sourcesContent":["import {Locale} from './locale.js';\nimport {abs2greg, HDate, months} from '@hebcal/hdate';\nimport {CalOptions, DailyLearningValue} from './CalOptions.js';\nimport {\n makeCandleEvent,\n makeFastStartEnd,\n makeWeekdayChanukahCandleLighting,\n} from './candles.js';\nimport {Event, flags} from './event.js';\nimport {getStartAndEnd} from './getStartAndEnd.js';\nimport {HebrewDateEvent} from './HebrewDateEvent.js';\nimport {HolidayYearMap, getHolidaysForYear_} from './holidays.js';\nimport {ParshaEvent} from './ParshaEvent.js';\nimport {Sedra, getSedra} from './sedra.js';\nimport {TimedEvent, HavdalahEvent} from './TimedEvent.js';\nimport {DailyLearning} from './DailyLearning.js';\nimport {KiddushLevanaEvent, makeKiddushLevanaEvent} from './KiddushLevanaEvent.js';\nimport {ChanukahEvent, HolidayEvent} from './HolidayEvent.js';\nimport {MevarchimChodeshEvent} from './MevarchimChodeshEvent.js';\nimport {MoladEvent, Molad} from './molad.js';\nimport {OmerEvent} from './omer.js';\nimport {Zmanim} from './zmanim.js';\nimport {Location} from './location.js';\nimport {holidayDesc as hdesc} from './staticHolidays.js';\nimport {DEG_7_POINT_083, DEG_8_POINT_5} from './zenith.js';\n\n/**\n * Calculates holidays and other Hebrew calendar events based on {@link CalOptions}.\n *\n * Each holiday is represented by an {@link Event} object which includes a date,\n * a description, flags and optional attributes.\n * If given no options, returns holidays for the Diaspora for the current Gregorian year.\n *\n * The date range returned by this function can be controlled by:\n * * `options.year` - Gregorian (e.g. 1993) or Hebrew year (e.g. 5749)\n * * `options.isHebrewYear` - to interpret `year` as Hebrew year\n * * `options.numYears` - generate calendar for multiple years (default 1, maximum 2000)\n * * `options.month` - Gregorian or Hebrew month (to filter results to a single month)\n *\n * Alternatively, specify start and end days with `Date` or {@link HDate} instances:\n * * `options.start` - use specific start date (requires `end` date)\n * * `options.end` - use specific end date (requires `start` date)\n *\n * Unless `options.noHolidays == true`, default holidays include:\n * * Major holidays - Rosh Hashana, Yom Kippur, Pesach, Sukkot, etc.\n * * Minor holidays - Purim, Chanukah, Tu BiShvat, Lag BaOmer, etc.\n * * Minor fasts - Ta'anit Esther, Tzom Gedaliah, etc. (unless `options.noMinorFast`)\n * * Special Shabbatot - Shabbat Shekalim, Zachor, etc. (unless `options.noSpecialShabbat`)\n * * Modern Holidays - Yom HaShoah, Yom HaAtzma'ut, etc. (unless `options.noModern`)\n * * Rosh Chodesh (unless `options.noRoshChodesh`)\n *\n * Holiday and Torah reading schedules differ between Israel and the Disapora.\n * Set `options.il=true` to use the Israeli schedule.\n *\n * Additional non-default event types can be specified:\n * * Parashat HaShavua - weekly Torah Reading on Saturdays (`options.sedrot`)\n * * Counting of the Omer (`options.omer`)\n * * Shabbat Mevarchim HaChodesh on Saturday before Rosh Chodesh (`options.shabbatMevarchim`)\n * * Molad announcement on Saturday before Rosh Chodesh (`options.molad`)\n * * Yom Kippur Katan (`options.yomKippurKatan`)\n * * BeHaB fast days after Pesach and Sukkot (`options.behab`)\n * * Yizkor (`options.yizkor`)\n * * Latest time for Kiddush Levana, according to the Maharil\n * (`options.kiddushLevanaMaharil`, requires `options.location`;\n * see {@link KiddushLevanaEvent})\n *\n * Daily Study of texts are supported by the\n * {@link https://github.com/hebcal/hebcal-learning @hebcal/learning} package,\n * for example:\n * * Babylonian Talmud Daf Yomi (`options.dailyLearning.dafYomi`)\n * * Jerusalem Talmud (Yerushalmi) Yomi (`options.dailyLearning.yerushalmi`)\n * * Mishna Yomi (`options.dailyLearning.mishnaYomi`)\n * * Nach Yomi (`options.dailyLearning.nachYomi`)\n *\n * Candle-lighting and Havdalah times are approximated using latitude and longitude\n * specified by the {@link Location} class. The `Location` class contains a small\n * database of cities with their associated geographic information and time-zone information.\n * If you ever have any doubts about Hebcal's times, consult your local halachic authority.\n * If you enter geographic coordinates above the arctic circle or antarctic circle,\n * the times are guaranteed to be wrong.\n *\n * To add candle-lighting options, set `options.candlelighting=true` and set\n * `options.location` to an instance of `Location`. By default, candle lighting\n * time is 18 minutes before sundown in the Diaspora and 20 minutes before\n * sundown in Israel (40 minutes for Jerusalem,\n * 30 minutes for Haifa and Zikhron Ya'akov) and Havdalah is\n * calculated according to Tzeit Hakochavim - Nightfall (the point when 3 small stars\n * are observable in the night time sky with the naked eye). The default Havdalah\n * option (Tzeit Hakochavim) is calculated when the sun is 8.5° below the horizon.\n * These defaults can be changed using these options:\n * * `options.candleLightingMins` - minutes before sundown to light candles\n * * `options.havdalahMins` - minutes after sundown for Havdalah (typical values are 42, 50, or 72).\n * Havdalah times are suppressed when `options.havdalahMins=0`.\n * * `options.havdalahDeg` - degrees for solar depression for Havdalah.\n * Default is 8.5 degrees for 3 small stars. Use 7.083 degrees for 3 medium-sized stars.\n * Havdalah times are suppressed when `options.havdalahDeg=0`.\n *\n * If both `options.candlelighting=true` and `options.location` is specified,\n * Chanukah candle-lighting times and minor fast start/end times will also be generated.\n * Chanukah candle-lighting is at Bein HaShmashos (13.5 minutes before\n * the sun is 7.083° below the horizon in the evening)\n * on weekdays, at regular candle-lighting time on Fridays, and at regular Havdalah time on\n * Saturday night (see above).\n *\n * Minor fasts begin at Alot HaShachar (sun is 16.1° below the horizon in the morning).\n * They end when 3 medium-sized stars are observable in the night sky (sun is 7.083°\n * below the horizon in the evening) in the Diaspora, or 15 minutes after sunset in\n * Israel (Rabbi Deblitzky's practice). Override with:\n * * `options.fastStartDeg` - degrees of solar depression for the start of a minor fast\n * * `options.fastStartMins` - minutes before sunrise for the start of a minor fast\n * (mutually exclusive with `options.fastStartDeg`)\n * * `options.fastEndDeg` - degrees of solar depression for the end of a minor fast\n * * `options.fastEndMins` - minutes after sunset for the end of a minor fast\n * (mutually exclusive with `options.fastEndDeg`)\n *\n * Tish'a B'Av is different: it always begins at sunset on the previous day, and\n * by default ends at tzeit 6.45° (Rabbi Yechiel Michel Tucazinsky), ignoring the\n * minor fast options above. Override its end with:\n * * `options.tishaBavEndDeg` - degrees of solar depression for the end of Tish'a B'Av\n * * `options.tishaBavEndMins` - minutes after sunset for the end of Tish'a B'Av\n * (mutually exclusive with `options.tishaBavEndDeg`)\n *\n * When a minor fast falls on a Friday the end time is\n * suppressed, because Shabbat begins before nightfall.\n *\n * Two options also exist for generating an Event with the Hebrew date:\n * * `options.addHebrewDates` - print the Hebrew date for the entire date range\n * * `options.addHebrewDatesForEvents` - print the Hebrew date for dates with some events\n *\n * Lastly, translation and transliteration of event titles is controlled by\n * `options.locale` and the {@link Locale} API.\n * `@hebcal/core` supports three locales by default:\n * * `en` - default, Sephardic transliterations (e.g. \"Shabbat\")\n * * `ashkenazi` - Ashkenazi transliterations (e.g. \"Shabbos\")\n * * `he` - Hebrew (e.g. \"שַׁבָּת\")\n *\n * Additional locales (such as `ru` or `fr`) are supported by the\n * {@link https://github.com/hebcal/hebcal-locales @hebcal/locales} package\n *\n * @example\n * import {calendar, Location} from '@hebcal/core';\n * const options: CalOptions = {\n * year: 1981,\n * isHebrewYear: false,\n * candlelighting: true,\n * location: Location.lookup('San Francisco'),\n * sedrot: true,\n * omer: true,\n * };\n * const events = calendar(options);\n * for (const ev of events) {\n * const hd = ev.getDate();\n * const date = hd.greg();\n * console.log(date.toLocaleDateString(), ev.render('en'), hd.toString());\n * }\n */\nexport function calendar(options: CalOptions = {}): Event[] {\n options = {...options}; // so we can modify freely\n const hasUserMask = typeof options.mask === 'number';\n // before checkCandleOptions(), because the mask can enable options\n options.mask = getMaskFromOptions(options);\n checkCandleOptions(options);\n const location = (options.location = options.location || defaultLocation);\n const il = (options.il = options.il || location.getIsrael() || false);\n if (options.locale) {\n const locale = options.locale;\n if (locale && typeof locale !== 'string') {\n throw new TypeError(`Invalid options.locale: ${locale}`);\n }\n if (!Locale.hasLocale(locale)) {\n throw new TypeError(\n `Locale '${locale}' not found; did you forget to import @hebcal/locales?`\n );\n }\n } else if (options.ashkenazi) {\n options.locale = 'ashkenazi';\n } else {\n options.locale = 'en';\n }\n\n const evts: Event[] = [];\n let sedra: Sedra | undefined;\n let holidaysYear: HolidayYearMap | undefined;\n let beginOmer = -1;\n let endOmer = -1;\n let currentYear = -1;\n let kiddushLevanaMonth = -1;\n let kiddushLevanaEv: KiddushLevanaEvent | undefined;\n const startAndEnd = getStartAndEnd(options);\n warnUnrecognizedOptions(options);\n const startAbs = startAndEnd[0];\n const endAbs = startAndEnd[1];\n const startGreg = abs2greg(startAbs);\n const startGregYear = startGreg.getFullYear();\n if (startGregYear < 100 || startGregYear > 9999) {\n options.candlelighting = false;\n options.sedrot = false;\n options.dailyLearning = {};\n }\n for (let abs = startAbs; abs <= endAbs; abs++) {\n const hd = new HDate(abs);\n const hyear = hd.getFullYear();\n if (hyear !== currentYear) {\n currentYear = hyear;\n holidaysYear = getHolidaysForYear_(currentYear);\n if (options.sedrot) {\n sedra = getSedra(currentYear, il);\n }\n if (options.omer) {\n beginOmer = HDate.hebrew2abs(currentYear, NISAN, 16);\n endOmer = HDate.hebrew2abs(currentYear, SIVAN, 5);\n }\n }\n const prevEventsLength = evts.length;\n const dow = hd.getDay();\n const isFriday = dow === FRI;\n const isSaturday = dow === SAT;\n let candlesEv: TimedEvent | undefined;\n const holidays0 = holidaysYear!.get(hd.toString()) || [];\n const holidays = holidays0.filter(ev => ev.observedIn(il));\n for (const ev of holidays) {\n candlesEv = appendHolidayAndRelated(\n candlesEv,\n evts,\n ev,\n options,\n isFriday,\n isSaturday,\n hasUserMask\n );\n }\n const mm = hd.getMonth();\n const dd = hd.getDate();\n // When Erev Pesach falls on Shabbat, burning chametz is moved to Friday.\n if (isFriday && options.candlelighting && mm === months.NISAN && dd === 13) {\n const biurEv = makeBiurChametzEvent(hd, options);\n if (biurEv) {\n evts.push(biurEv);\n }\n }\n if (options.sedrot && isSaturday) {\n const parsha0 = sedra!.lookup(abs);\n if (!parsha0.chag) {\n evts.push(new ParshaEvent(parsha0));\n }\n }\n if (options.yizkor) {\n if (\n (mm === months.TISHREI && (dd === 10 || dd === 22)) ||\n (mm === NISAN && dd === (il ? 21 : 22)) ||\n (mm === SIVAN && dd === (il ? 6 : 7))\n ) {\n const linkedEvent = holidays[0];\n const ev = new Event(hd, hdesc.YIZKOR, flags.YIZKOR, {\n emoji: '🕯️',\n linkedEvent,\n });\n evts.push(ev);\n }\n }\n const dailyLearning = options.dailyLearning;\n let numDailyLearning = 0;\n if (typeof dailyLearning === 'object' && dailyLearning !== null) {\n const events = makeDailyLearning(hd, dailyLearning, il);\n numDailyLearning = events.length;\n if (numDailyLearning) {\n evts.push(...events);\n }\n }\n if (options.omer && abs >= beginOmer && abs <= endOmer) {\n const omer = abs - beginOmer + 1;\n const omerEv = makeOmerEvent(hd, omer, options);\n evts.push(omerEv);\n }\n if (isSaturday && (options.molad || options.shabbatMevarchim)) {\n const events = makeMoladAndMevarchimChodesh(hd, options);\n evts.push(...events);\n }\n if (options.kiddushLevanaMaharil && dd >= 9 && dd <= 17) {\n // The event usually falls between the 11th and the 16th, but may be\n // moved back to candle-lighting before a Shabbat or Yom Tov\n const monthKey = hyear * 100 + mm;\n if (monthKey !== kiddushLevanaMonth) {\n kiddushLevanaMonth = monthKey;\n kiddushLevanaEv = makeKiddushLevanaEvent(hyear, mm, options);\n }\n if (kiddushLevanaEv?.getDate().abs() === abs) {\n evts.push(kiddushLevanaEv);\n }\n }\n if (!candlesEv && options.candlelighting && (isFriday || isSaturday)) {\n candlesEv = makeCandleEvent(undefined, hd, options, isFriday, isSaturday);\n if (isFriday && candlesEv && sedra) {\n const parsha = sedra.lookup(abs);\n if (!parsha.chag) {\n const pe = new ParshaEvent(parsha);\n candlesEv.memo = pe.render(options.locale);\n } else {\n candlesEv.memo = Locale.gettext(parsha.parsha[0], options.locale);\n }\n }\n }\n // suppress Havdalah when options.havdalahMins=0 or options.havdalahDeg=0\n if (\n candlesEv instanceof HavdalahEvent &&\n (options.havdalahMins === 0 || options.havdalahDeg === 0)\n ) {\n candlesEv = undefined;\n }\n if (candlesEv) {\n evts.push(candlesEv);\n }\n if (\n options.addHebrewDates ||\n (options.addHebrewDatesForEvents &&\n prevEventsLength !== evts.length - numDailyLearning)\n ) {\n const e2 = new HebrewDateEvent(hd);\n if (prevEventsLength === evts.length) {\n evts.push(e2);\n } else {\n evts.splice(prevEventsLength, 0, e2);\n }\n }\n }\n return evts;\n}\n\nconst FRI = 5;\nconst SAT = 6;\n\nconst {NISAN, SIVAN, ELUL} = months;\n\nconst {\n LIGHT_CANDLES,\n YOM_TOV_ENDS,\n CHUL_ONLY,\n IL_ONLY,\n LIGHT_CANDLES_TZEIS,\n CHANUKAH_CANDLES,\n MINOR_FAST,\n SPECIAL_SHABBAT,\n MODERN_HOLIDAY,\n MAJOR_FAST,\n ROSH_CHODESH,\n PARSHA_HASHAVUA,\n DAF_YOMI,\n MISHNA_YOMI,\n NACH_YOMI,\n YERUSHALMI_YOMI,\n OMER_COUNT,\n SHABBAT_MEVARCHIM,\n MINOR_HOLIDAY,\n EREV,\n CHOL_HAMOED,\n YOM_KIPPUR_KATAN,\n YIZKOR,\n BEHAB,\n KIDDUSH_LEVANA,\n} = flags;\n\nconst unrecognizedAlreadyWarned = new Set<string>();\n// The \"as const satisfies Record<keyof CalOptions, 1>\" line lets\n// compiler flag any CalOptions field missing from the list\nconst RECOGNIZED_OPTIONS = {\n location: 1,\n year: 1,\n isHebrewYear: 1,\n month: 1,\n numYears: 1,\n start: 1,\n end: 1,\n candlelighting: 1,\n candleLightingMins: 1,\n havdalahMins: 1,\n havdalahDeg: 1,\n fastEndDeg: 1,\n fastEndMins: 1,\n fastStartDeg: 1,\n fastStartMins: 1,\n tishaBavEndDeg: 1,\n tishaBavEndMins: 1,\n sedrot: 1,\n il: 1,\n noMinorFast: 1,\n noModern: 1,\n shabbatMevarchim: 1,\n noRoshChodesh: 1,\n noSpecialShabbat: 1,\n noHolidays: 1,\n omer: 1,\n molad: 1,\n ashkenazi: 1,\n locale: 1,\n addHebrewDates: 1,\n addHebrewDatesForEvents: 1,\n mask: 1,\n yomKippurKatan: 1,\n behab: 1,\n hour12: 1,\n dailyLearning: 1,\n useElevation: 1,\n yizkor: 1,\n kiddushLevanaMaharil: 1,\n} as const satisfies Record<keyof CalOptions, 1>;\nconst recognizedKeys: ReadonlySet<string> = new Set(\n Object.keys(RECOGNIZED_OPTIONS)\n);\n\nfunction warnUnrecognizedOptions(options: CalOptions) {\n for (const k of Object.keys(options)) {\n if (!recognizedKeys.has(k) && !unrecognizedAlreadyWarned.has(k)) {\n console.warn(`Ignoring unrecognized HebrewCalendar option: ${k}`);\n unrecognizedAlreadyWarned.add(k);\n }\n }\n if (options.dailyLearning) {\n for (const [k, val] of Object.entries(options.dailyLearning)) {\n // Resolve aliases (e.g. `yerushalmi` -> `yerushalmi-vilna`) the same way\n // makeDailyLearning() does, so a valid option doesn't warn spuriously.\n const name = dailyLearningName(k, val);\n if (!unrecognizedAlreadyWarned.has(k) && !DailyLearning.has(name)) {\n console.warn(`Ignoring unrecognized DailyLearning calendar: ${k}`);\n unrecognizedAlreadyWarned.add(k);\n }\n }\n }\n}\n\nconst israelCityOffset: Readonly<Record<string, number>> = {\n Jerusalem: 40,\n Haifa: 30,\n \"Zikhron Ya'aqov\": 30,\n \"Zikhron Ya'akov\": 30,\n 'Zikhron Yaakov': 30,\n \"Zichron Ya'akov\": 30,\n 'Zichron Yaakov': 30,\n};\n\nconst geoIdCandleOffset: Readonly<Record<string, number>> = {\n '281184': 40, // Jerusalem\n '294801': 30, // Haifa\n '293067': 30, // Zikhron Yaakov\n};\n\n/**\n * Modifies options in-place\n */\nfunction checkCandleOptions(options: CalOptions) {\n if (!options.candlelighting && !options.kiddushLevanaMaharil) {\n return;\n }\n const location = options.location;\n if (location === undefined || !(location instanceof Location)) {\n const name = options.candlelighting ? 'candlelighting' : 'kiddushLevanaMaharil';\n throw new TypeError(`options.${name} requires valid options.location`);\n }\n // Kiddush Levana needs candle-lighting time for Shabbat and Yom Tov\n const min0 = options.candleLightingMins;\n let min = typeof min0 === 'number' && !isNaN(min0) ? Math.trunc(min0) : 18;\n if (location.getIsrael() && Math.abs(min) === 18) {\n min = overrideIsraelCandleMins(location);\n }\n options.candleLightingMins = -1 * Math.abs(min);\n\n if (!options.candlelighting) {\n // Havdalah and fast options only affect candle-lighting events\n return;\n }\n assertMutuallyExclusive(options, 'havdalahMins', 'havdalahDeg');\n assertMutuallyExclusive(options, 'fastEndDeg', 'fastEndMins');\n assertMutuallyExclusive(options, 'fastStartDeg', 'fastStartMins');\n assertMutuallyExclusive(options, 'tishaBavEndDeg', 'tishaBavEndMins');\n\n if (typeof options.havdalahMins === 'number') {\n options.havdalahMins = Math.trunc(Math.abs(options.havdalahMins));\n } else if (typeof options.havdalahDeg === 'number') {\n options.havdalahDeg = Math.abs(options.havdalahDeg);\n } else {\n options.havdalahDeg = DEG_8_POINT_5;\n }\n if (typeof options.fastEndDeg === 'number') {\n options.fastEndDeg = Math.abs(options.fastEndDeg);\n }\n if (typeof options.fastEndMins === 'number') {\n options.fastEndMins = Math.trunc(Math.abs(options.fastEndMins));\n }\n if (typeof options.fastStartDeg === 'number') {\n options.fastStartDeg = Math.abs(options.fastStartDeg);\n }\n if (typeof options.fastStartMins === 'number') {\n options.fastStartMins = Math.trunc(Math.abs(options.fastStartMins));\n }\n if (typeof options.tishaBavEndDeg === 'number') {\n options.tishaBavEndDeg = Math.abs(options.tishaBavEndDeg);\n }\n if (typeof options.tishaBavEndMins === 'number') {\n options.tishaBavEndMins = Math.trunc(Math.abs(options.tishaBavEndMins));\n }\n}\n\n/**\n * Throws if both numeric options `a` and `b` are set\n */\nfunction assertMutuallyExclusive(\n options: CalOptions,\n a: keyof CalOptions,\n b: keyof CalOptions\n) {\n if (typeof options[a] === 'number' && typeof options[b] === 'number') {\n throw new TypeError(`options.${a} and options.${b} are mutually exclusive`);\n }\n}\n\nfunction overrideIsraelCandleMins(location: Location) {\n const geoid = location.getGeoId();\n if (geoid) {\n const offset = geoIdCandleOffset[geoid];\n if (typeof offset === 'number') {\n return offset;\n }\n }\n const shortName = location.getShortName();\n if (shortName) {\n const offset = israelCityOffset[shortName];\n if (typeof offset === 'number') {\n return offset;\n }\n }\n return 20;\n}\n\n/**\n * Mask to filter Holiday array\n */\nfunction getMaskFromOptions(options: CalOptions): number {\n if (typeof options.mask === 'number') {\n return setOptionsFromMask(options);\n }\n const il = options.il || options.location?.getIsrael() || false;\n let mask = 0;\n\n // default options\n if (!options.noHolidays) {\n mask |=\n ROSH_CHODESH |\n YOM_TOV_ENDS |\n MINOR_FAST |\n SPECIAL_SHABBAT |\n MODERN_HOLIDAY |\n MAJOR_FAST |\n MINOR_HOLIDAY |\n EREV |\n CHOL_HAMOED |\n LIGHT_CANDLES |\n LIGHT_CANDLES_TZEIS |\n CHANUKAH_CANDLES;\n }\n if (options.candlelighting) {\n mask |= LIGHT_CANDLES | LIGHT_CANDLES_TZEIS | YOM_TOV_ENDS;\n }\n // suppression of defaults\n if (options.noRoshChodesh) {\n mask &= ~ROSH_CHODESH;\n }\n if (options.noModern) {\n mask &= ~MODERN_HOLIDAY;\n }\n if (options.noMinorFast) {\n mask &= ~MINOR_FAST;\n }\n if (options.noSpecialShabbat) {\n mask &= ~SPECIAL_SHABBAT;\n mask &= ~SHABBAT_MEVARCHIM;\n }\n if (il) {\n mask |= IL_ONLY;\n } else {\n mask |= CHUL_ONLY;\n }\n // non-default options\n if (options.sedrot) {\n mask |= PARSHA_HASHAVUA;\n }\n if (options.omer) {\n mask |= OMER_COUNT;\n }\n if (options.shabbatMevarchim) {\n mask |= SHABBAT_MEVARCHIM;\n }\n if (options.yomKippurKatan) {\n mask |= YOM_KIPPUR_KATAN;\n }\n if (options.behab) {\n mask |= BEHAB;\n }\n if (options.yizkor) {\n mask |= YIZKOR;\n }\n if (options.kiddushLevanaMaharil) {\n mask |= KIDDUSH_LEVANA;\n }\n const dailyLearning = options.dailyLearning;\n if (typeof dailyLearning === 'object' && dailyLearning !== null) {\n if (dailyLearning.dafYomi) {\n mask |= DAF_YOMI;\n }\n if (dailyLearning.mishnaYomi) {\n mask |= MISHNA_YOMI;\n }\n if (dailyLearning.nachYomi) {\n mask |= NACH_YOMI;\n }\n if (dailyLearning.yerushalmi) {\n mask |= YERUSHALMI_YOMI;\n }\n }\n\n return mask;\n}\n\nconst defaultLocation = new Location(0, 0, false, 'UTC');\n\nfunction setOptionsFromMask(options: CalOptions): number {\n const m = options.mask || 0;\n if (m & ROSH_CHODESH) delete options.noRoshChodesh;\n if (m & MODERN_HOLIDAY) delete options.noModern;\n if (m & MINOR_FAST) delete options.noMinorFast;\n if (m & SPECIAL_SHABBAT) delete options.noSpecialShabbat;\n if (m & PARSHA_HASHAVUA) options.sedrot = true;\n if (m & (DAF_YOMI | MISHNA_YOMI | NACH_YOMI | YERUSHALMI_YOMI)) {\n options.dailyLearning = options.dailyLearning || {};\n if (m & DAF_YOMI) {\n options.dailyLearning.dafYomi = true;\n }\n if (m & MISHNA_YOMI) {\n options.dailyLearning.mishnaYomi = true;\n }\n if (m & NACH_YOMI) {\n options.dailyLearning.nachYomi = true;\n }\n if (m & YERUSHALMI_YOMI) {\n options.dailyLearning.yerushalmi = 1;\n }\n }\n if (m & OMER_COUNT) options.omer = true;\n if (m & SHABBAT_MEVARCHIM) options.shabbatMevarchim = true;\n if (m & YOM_KIPPUR_KATAN) options.yomKippurKatan = true;\n if (m & BEHAB) options.behab = true;\n if (m & YIZKOR) options.yizkor = true;\n if (m & KIDDUSH_LEVANA) options.kiddushLevanaMaharil = true;\n return m;\n}\n\n/**\n * Appends the Event `ev` to the `events` array. Also may add related\n * timed events like candle-lighting or fast start/end\n */\nfunction appendHolidayAndRelated(\n candlesEv: TimedEvent | undefined,\n events: Event[],\n ev: HolidayEvent,\n options: CalOptions,\n isFriday: boolean,\n isSaturday: boolean,\n hasUserMask: boolean\n): TimedEvent | undefined {\n const il = options.il || false;\n if (!ev.observedIn(il)) {\n return candlesEv; // holiday isn't observed here; bail out early\n }\n const eFlags = ev.mask;\n const isYomKippurKatan = ev.hasFlag('YOM_KIPPUR_KATAN');\n const isBehab = ev.hasFlag('BEHAB');\n if (\n (!options.yomKippurKatan && isYomKippurKatan) ||\n (!options.behab && isBehab) ||\n (options.noModern && ev.hasFlag('MODERN_HOLIDAY'))\n ) {\n return candlesEv; // bail out early\n }\n if (options.candlelighting && ev.getDesc() === hdesc.EREV_PESACH) {\n const evts = makeErevPesachChametzEvents(ev, options);\n if (evts.length) {\n events.push(...evts);\n }\n }\n const isMajorFast = ev.hasFlag('MAJOR_FAST');\n const isMinorFast = ev.hasFlag('MINOR_FAST');\n const isChanukah = ev.hasFlag('CHANUKAH_CANDLES');\n const hasCandles = ev.hasAnyFlag(\n 'LIGHT_CANDLES',\n 'LIGHT_CANDLES_TZEIS',\n 'CHANUKAH_CANDLES',\n 'YOM_TOV_ENDS'\n );\n let fastEv;\n if (\n options.candlelighting &&\n (isMajorFast || isMinorFast) &&\n ev.getDesc() !== hdesc.YOM_KIPPUR\n ) {\n ev = fastEv = makeFastStartEnd(ev, options);\n if (\n fastEv.startEvent &&\n (isMajorFast || (isMinorFast && !options.noMinorFast))\n ) {\n events.push(fastEv.startEvent);\n }\n }\n if (eFlags & Number(options.mask) || (!eFlags && !hasUserMask)) {\n if (options.candlelighting && hasCandles) {\n const hd = ev.getDate();\n candlesEv = makeCandleEvent(ev, hd, options, isFriday, isSaturday);\n if (isChanukah && candlesEv && !options.noHolidays) {\n // Replace Chanukah event with a clone that includes candle lighting time.\n // For clarity, allow a \"duplicate\" candle lighting event to remain for Shabbat\n const chanukahEv = makeWeekdayChanukahCandleLighting(\n ev as ChanukahEvent,\n options\n );\n if (chanukahEv) {\n if (isFriday || isSaturday) {\n chanukahEv.eventTime = candlesEv.eventTime;\n chanukahEv.eventTimeStr = candlesEv.eventTimeStr;\n }\n ev = chanukahEv;\n }\n candlesEv = undefined;\n }\n }\n if (\n !options.noHolidays ||\n (options.yomKippurKatan && isYomKippurKatan) ||\n (options.behab && isBehab)\n ) {\n events.push(ev); // the original event itself\n }\n }\n if ((isMajorFast || (isMinorFast && !options.noMinorFast)) && fastEv?.endEvent) {\n events.push(fastEv.endEvent);\n }\n return candlesEv;\n}\n\nfunction makeMoladAndMevarchimChodesh(hd: HDate, options: CalOptions): Event[] {\n const evts: Event[] = [];\n const hmonth = hd.getMonth();\n const hdate = hd.getDate();\n if (hmonth !== ELUL && hdate >= 23 && hdate <= 29) {\n const hyear = hd.getFullYear();\n const monNext = hmonth === HDate.monthsInYear(hyear) ? NISAN : hmonth + 1;\n if (options.molad) {\n evts.push(new MoladEvent(hd, hyear, monNext, options));\n }\n if (options.shabbatMevarchim) {\n const nextMonthName = HDate.getMonthName(monNext, hyear);\n const molad = new Molad(hyear, monNext);\n const memo = molad.render(options.locale, options);\n evts.push(new MevarchimChodeshEvent(hd, nextMonthName, memo, options.locale));\n }\n }\n return evts;\n}\n\nfunction dailyLearningName(key: string, val: DailyLearningValue): string {\n if (key === 'yerushalmi') {\n return val === 2 ? 'yerushalmi-schottenstein' : 'yerushalmi-vilna';\n }\n return key;\n}\n\nfunction makeDailyLearning(\n hd: HDate,\n dailyLearning: Record<string, DailyLearningValue>,\n il: boolean\n): Event[] {\n const evts: Event[] = [];\n for (const [key, val] of Object.entries(dailyLearning)) {\n if (val) {\n const name = dailyLearningName(key, val);\n const learningEv = DailyLearning.lookup(name, hd, il);\n if (learningEv) {\n evts.push(learningEv);\n }\n }\n }\n return evts;\n}\n\nfunction makeOmerEvent(hd: HDate, omerDay: number, options: CalOptions) {\n const omerEv = new OmerEvent(hd, omerDay);\n if (options.candlelighting) {\n const location = options.location!;\n const zmanim = new Zmanim(location, hd.prev(), false);\n const tzeit = zmanim.tzeit(DEG_7_POINT_083);\n if (!isNaN(tzeit.getTime())) {\n omerEv.alarm = tzeit;\n }\n }\n return omerEv;\n}\n\nfunction makeErevPesachChametzEvents(\n erevPesachEv: Event,\n options: CalOptions\n): TimedEvent[] {\n const evts: TimedEvent[] = [];\n const location = options.location!;\n const useElevation = Boolean(options.useElevation);\n const hd = erevPesachEv.getDate();\n const zmanim = new Zmanim(location, hd, useElevation);\n const zmanAchilas = zmanim.sofZmanTfilla(); // Gra\n if (isNaN(zmanAchilas.getTime())) {\n return [];\n }\n const zmanAchilasEv = new TimedEvent(\n hd,\n hdesc.SOF_ZMAN_ACHILAT_CHAMETZ,\n 0,\n zmanAchilas,\n location,\n undefined,\n options\n );\n zmanAchilasEv.emoji = '🍞';\n evts.push(zmanAchilasEv);\n // When Erev Pesach falls on Shabbat, chametz cannot be burned on Shabbat,\n // so Biur Chametz is emitted on the Friday before (see makeBiurChametzEvent\n // called from the main calendar loop). Skip it here in that case.\n if (hd.getDay() !== SAT) {\n const biurEv = makeBiurChametzEvent(hd, options);\n if (biurEv) {\n evts.push(biurEv);\n }\n }\n return evts;\n}\n\nfunction makeBiurChametzEvent(\n hd: HDate,\n options: CalOptions\n): TimedEvent | undefined {\n const location = options.location!;\n const useElevation = Boolean(options.useElevation);\n const zmanim = new Zmanim(location, hd, useElevation);\n const time = zmanim.sofZmanBiurChametzGRA();\n if (isNaN(time.getTime())) {\n return undefined;\n }\n const biurChametzEv = new TimedEvent(\n hd,\n hdesc.BIUR_CHAMETZ,\n 0,\n time,\n location,\n undefined,\n options\n );\n biurChametzEv.emoji = '🔥';\n return biurChametzEv;\n}\n"],"names":["hdesc"],"mappings":"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"}
1
+ {"version":3,"file":"calendar.js","sources":["../../../src/calendar.ts"],"sourcesContent":["import {Locale} from './locale.js';\nimport {abs2greg, HDate, months} from '@hebcal/hdate';\nimport {CalOptions, DailyLearningValue} from './CalOptions.js';\nimport {\n makeCandleEvent,\n makeFastStartEnd,\n makeWeekdayChanukahCandleLighting,\n} from './candles.js';\nimport {Event, flags} from './event.js';\nimport {getStartAndEnd} from './getStartAndEnd.js';\nimport {HebrewDateEvent} from './HebrewDateEvent.js';\nimport {\n HolidayYearMap,\n TIME_OF_DAY_MEVARCHIM,\n getHolidaysForYear_,\n timeOfDay,\n} from './holidays.js';\nimport {ParshaEvent} from './ParshaEvent.js';\nimport {Sedra, getSedra} from './sedra.js';\nimport {TimedEvent, HavdalahEvent} from './TimedEvent.js';\nimport {DailyLearning} from './DailyLearning.js';\nimport {KiddushLevanaEvent, makeKiddushLevanaEvent} from './KiddushLevanaEvent.js';\nimport {ChanukahEvent, HolidayEvent} from './HolidayEvent.js';\nimport {MevarchimChodeshEvent} from './MevarchimChodeshEvent.js';\nimport {MoladEvent, Molad} from './molad.js';\nimport {OmerEvent} from './omer.js';\nimport {Zmanim} from './zmanim.js';\nimport {Location} from './location.js';\nimport {holidayDesc as hdesc} from './staticHolidays.js';\nimport {DEG_7_POINT_083, DEG_8_POINT_5} from './zenith.js';\n\n/**\n * Calculates holidays and other Hebrew calendar events based on {@link CalOptions}.\n *\n * Each holiday is represented by an {@link Event} object which includes a date,\n * a description, flags and optional attributes.\n * If given no options, returns holidays for the Diaspora for the current Gregorian year.\n *\n * The date range returned by this function can be controlled by:\n * * `options.year` - Gregorian (e.g. 1993) or Hebrew year (e.g. 5749)\n * * `options.isHebrewYear` - to interpret `year` as Hebrew year\n * * `options.numYears` - generate calendar for multiple years (default 1, maximum 2000)\n * * `options.month` - Gregorian or Hebrew month (to filter results to a single month)\n *\n * Alternatively, specify start and end days with `Date` or {@link HDate} instances:\n * * `options.start` - use specific start date (requires `end` date)\n * * `options.end` - use specific end date (requires `start` date)\n *\n * Unless `options.noHolidays == true`, default holidays include:\n * * Major holidays - Rosh Hashana, Yom Kippur, Pesach, Sukkot, etc.\n * * Minor holidays - Purim, Chanukah, Tu BiShvat, Lag BaOmer, etc.\n * * Minor fasts - Ta'anit Esther, Tzom Gedaliah, etc. (unless `options.noMinorFast`)\n * * Special Shabbatot - Shabbat Shekalim, Zachor, etc. (unless `options.noSpecialShabbat`)\n * * Modern Holidays - Yom HaShoah, Yom HaAtzma'ut, etc. (unless `options.noModern`)\n * * Rosh Chodesh (unless `options.noRoshChodesh`)\n *\n * Holiday and Torah reading schedules differ between Israel and the Disapora.\n * Set `options.il=true` to use the Israeli schedule.\n *\n * Additional non-default event types can be specified:\n * * Parashat HaShavua - weekly Torah Reading on Saturdays (`options.sedrot`)\n * * Counting of the Omer (`options.omer`)\n * * Shabbat Mevarchim HaChodesh on Saturday before Rosh Chodesh (`options.shabbatMevarchim`)\n * * Molad announcement on Saturday before Rosh Chodesh (`options.molad`)\n * * Yom Kippur Katan (`options.yomKippurKatan`)\n * * BeHaB fast days after Pesach and Sukkot (`options.behab`)\n * * Yizkor (`options.yizkor`)\n * * Latest time for Kiddush Levana, according to the Maharil\n * (`options.kiddushLevanaMaharil`, requires `options.location`;\n * see {@link KiddushLevanaEvent})\n *\n * Daily Study of texts are supported by the\n * {@link https://github.com/hebcal/hebcal-learning @hebcal/learning} package,\n * for example:\n * * Babylonian Talmud Daf Yomi (`options.dailyLearning.dafYomi`)\n * * Jerusalem Talmud (Yerushalmi) Yomi (`options.dailyLearning.yerushalmi`)\n * * Mishna Yomi (`options.dailyLearning.mishnaYomi`)\n * * Nach Yomi (`options.dailyLearning.nachYomi`)\n *\n * Candle-lighting and Havdalah times are approximated using latitude and longitude\n * specified by the {@link Location} class. The `Location` class contains a small\n * database of cities with their associated geographic information and time-zone information.\n * If you ever have any doubts about Hebcal's times, consult your local halachic authority.\n * If you enter geographic coordinates above the arctic circle or antarctic circle,\n * the times are guaranteed to be wrong.\n *\n * To add candle-lighting options, set `options.candlelighting=true` and set\n * `options.location` to an instance of `Location`. By default, candle lighting\n * time is 18 minutes before sundown in the Diaspora and 20 minutes before\n * sundown in Israel (40 minutes for Jerusalem,\n * 30 minutes for Haifa and Zikhron Ya'akov) and Havdalah is\n * calculated according to Tzeit Hakochavim - Nightfall (the point when 3 small stars\n * are observable in the night time sky with the naked eye). The default Havdalah\n * option (Tzeit Hakochavim) is calculated when the sun is 8.5° below the horizon.\n * These defaults can be changed using these options:\n * * `options.candleLightingMins` - minutes before sundown to light candles\n * * `options.havdalahMins` - minutes after sundown for Havdalah (typical values are 42, 50, or 72).\n * Havdalah times are suppressed when `options.havdalahMins=0`.\n * * `options.havdalahDeg` - degrees for solar depression for Havdalah.\n * Default is 8.5 degrees for 3 small stars. Use 7.083 degrees for 3 medium-sized stars.\n * Havdalah times are suppressed when `options.havdalahDeg=0`.\n *\n * If both `options.candlelighting=true` and `options.location` is specified,\n * Chanukah candle-lighting times and minor fast start/end times will also be generated.\n * Chanukah candle-lighting is at Bein HaShmashos (13.5 minutes before\n * the sun is 7.083° below the horizon in the evening)\n * on weekdays, at regular candle-lighting time on Fridays, and at regular Havdalah time on\n * Saturday night (see above).\n *\n * Minor fasts begin at Alot HaShachar (sun is 16.1° below the horizon in the morning).\n * They end when 3 medium-sized stars are observable in the night sky (sun is 7.083°\n * below the horizon in the evening) in the Diaspora, or 15 minutes after sunset in\n * Israel (Rabbi Deblitzky's practice). Override with:\n * * `options.fastStartDeg` - degrees of solar depression for the start of a minor fast\n * * `options.fastStartMins` - minutes before sunrise for the start of a minor fast\n * (mutually exclusive with `options.fastStartDeg`)\n * * `options.fastEndDeg` - degrees of solar depression for the end of a minor fast\n * * `options.fastEndMins` - minutes after sunset for the end of a minor fast\n * (mutually exclusive with `options.fastEndDeg`)\n *\n * Tish'a B'Av is different: it always begins at sunset on the previous day, and\n * by default ends at tzeit 6.45° (Rabbi Yechiel Michel Tucazinsky), ignoring the\n * minor fast options above. Override its end with:\n * * `options.tishaBavEndDeg` - degrees of solar depression for the end of Tish'a B'Av\n * * `options.tishaBavEndMins` - minutes after sunset for the end of Tish'a B'Av\n * (mutually exclusive with `options.tishaBavEndDeg`)\n *\n * When a minor fast falls on a Friday the end time is\n * suppressed, because Shabbat begins before nightfall.\n *\n * Two options also exist for generating an Event with the Hebrew date:\n * * `options.addHebrewDates` - print the Hebrew date for the entire date range\n * * `options.addHebrewDatesForEvents` - print the Hebrew date for dates with some events\n *\n * Lastly, translation and transliteration of event titles is controlled by\n * `options.locale` and the {@link Locale} API.\n * `@hebcal/core` supports three locales by default:\n * * `en` - default, Sephardic transliterations (e.g. \"Shabbat\")\n * * `ashkenazi` - Ashkenazi transliterations (e.g. \"Shabbos\")\n * * `he` - Hebrew (e.g. \"שַׁבָּת\")\n *\n * Additional locales (such as `ru` or `fr`) are supported by the\n * {@link https://github.com/hebcal/hebcal-locales @hebcal/locales} package\n *\n * @example\n * import {calendar, Location} from '@hebcal/core';\n * const options: CalOptions = {\n * year: 1981,\n * isHebrewYear: false,\n * candlelighting: true,\n * location: Location.lookup('San Francisco'),\n * sedrot: true,\n * omer: true,\n * };\n * const events = calendar(options);\n * for (const ev of events) {\n * const hd = ev.getDate();\n * const date = hd.greg();\n * console.log(date.toLocaleDateString(), ev.render('en'), hd.toString());\n * }\n */\nexport function calendar(options: CalOptions = {}): Event[] {\n options = {...options}; // so we can modify freely\n const hasUserMask = typeof options.mask === 'number';\n // before checkCandleOptions(), because the mask can enable options\n options.mask = getMaskFromOptions(options);\n checkCandleOptions(options);\n const location = (options.location = options.location || defaultLocation);\n const il = (options.il = options.il || location.getIsrael() || false);\n if (options.locale) {\n const locale = options.locale;\n if (locale && typeof locale !== 'string') {\n throw new TypeError(`Invalid options.locale: ${locale}`);\n }\n if (!Locale.hasLocale(locale)) {\n throw new TypeError(\n `Locale '${locale}' not found; did you forget to import @hebcal/locales?`\n );\n }\n } else if (options.ashkenazi) {\n options.locale = 'ashkenazi';\n } else {\n options.locale = 'en';\n }\n\n const evts: Event[] = [];\n let sedra: Sedra | undefined;\n let holidaysYear: HolidayYearMap | undefined;\n let beginOmer = -1;\n let endOmer = -1;\n let currentYear = -1;\n let kiddushLevanaMonth = -1;\n let kiddushLevanaEv: KiddushLevanaEvent | undefined;\n const startAndEnd = getStartAndEnd(options);\n warnUnrecognizedOptions(options);\n const startAbs = startAndEnd[0];\n const endAbs = startAndEnd[1];\n const startGreg = abs2greg(startAbs);\n const startGregYear = startGreg.getFullYear();\n if (startGregYear < 100 || startGregYear > 9999) {\n options.candlelighting = false;\n options.sedrot = false;\n options.dailyLearning = {};\n }\n for (let abs = startAbs; abs <= endAbs; abs++) {\n const hd = new HDate(abs);\n const hyear = hd.getFullYear();\n if (hyear !== currentYear) {\n currentYear = hyear;\n holidaysYear = getHolidaysForYear_(currentYear);\n if (options.sedrot) {\n sedra = getSedra(currentYear, il);\n }\n if (options.omer) {\n beginOmer = HDate.hebrew2abs(currentYear, NISAN, 16);\n endOmer = HDate.hebrew2abs(currentYear, SIVAN, 5);\n }\n }\n const prevEventsLength = evts.length;\n const dow = hd.getDay();\n const isFriday = dow === FRI;\n const isSaturday = dow === SAT;\n let candlesEv: TimedEvent | undefined;\n const holidays0 = holidaysYear!.get(hd.toString()) || [];\n const holidays = holidays0.filter(ev => ev.observedIn(il));\n // On Shabbat, events tied to the morning Torah reading and announcements\n // in synagogue come first: the parsha, special Shabbatot such as\n // Shabbat Shekalim, then the Molad and Shabbat Mevarchim\n if (options.sedrot && isSaturday) {\n const parsha0 = sedra!.lookup(abs);\n if (!parsha0.chag) {\n evts.push(new ParshaEvent(parsha0));\n }\n }\n let mevarchim =\n isSaturday && (options.molad || options.shabbatMevarchim)\n ? makeMoladAndMevarchimChodesh(hd, options)\n : [];\n for (const ev of holidays) {\n if (mevarchim.length && timeOfDay(ev) > TIME_OF_DAY_MEVARCHIM) {\n evts.push(...mevarchim);\n mevarchim = [];\n }\n candlesEv = appendHolidayAndRelated(\n candlesEv,\n evts,\n ev,\n options,\n isFriday,\n isSaturday,\n hasUserMask\n );\n }\n evts.push(...mevarchim);\n const mm = hd.getMonth();\n const dd = hd.getDate();\n // When Erev Pesach falls on Shabbat, burning chametz is moved to Friday.\n if (isFriday && options.candlelighting && mm === months.NISAN && dd === 13) {\n const biurEv = makeBiurChametzEvent(hd, options);\n if (biurEv) {\n evts.push(biurEv);\n }\n }\n if (options.yizkor) {\n if (\n (mm === months.TISHREI && (dd === 10 || dd === 22)) ||\n (mm === NISAN && dd === (il ? 21 : 22)) ||\n (mm === SIVAN && dd === (il ? 6 : 7))\n ) {\n const linkedEvent = holidays[0];\n const ev = new Event(hd, hdesc.YIZKOR, flags.YIZKOR, {\n emoji: '🕯️',\n linkedEvent,\n });\n evts.push(ev);\n }\n }\n const dailyLearning = options.dailyLearning;\n let numDailyLearning = 0;\n if (typeof dailyLearning === 'object' && dailyLearning !== null) {\n const events = makeDailyLearning(hd, dailyLearning, il);\n numDailyLearning = events.length;\n if (numDailyLearning) {\n evts.push(...events);\n }\n }\n if (options.omer && abs >= beginOmer && abs <= endOmer) {\n const omer = abs - beginOmer + 1;\n const omerEv = makeOmerEvent(hd, omer, options);\n evts.push(omerEv);\n }\n if (!candlesEv && options.candlelighting && (isFriday || isSaturday)) {\n candlesEv = makeCandleEvent(undefined, hd, options, isFriday, isSaturday);\n if (isFriday && candlesEv && sedra) {\n const parsha = sedra.lookup(abs);\n if (!parsha.chag) {\n const pe = new ParshaEvent(parsha);\n candlesEv.memo = pe.render(options.locale);\n } else {\n candlesEv.memo = Locale.gettext(parsha.parsha[0], options.locale);\n }\n }\n }\n // suppress Havdalah when options.havdalahMins=0 or options.havdalahDeg=0\n if (\n candlesEv instanceof HavdalahEvent &&\n (options.havdalahMins === 0 || options.havdalahDeg === 0)\n ) {\n candlesEv = undefined;\n }\n if (candlesEv) {\n evts.push(candlesEv);\n }\n if (options.kiddushLevanaMaharil && dd >= 9 && dd <= 17) {\n // The event usually falls between the 11th and the 16th, but may be\n // moved back to candle-lighting before a Shabbat or Yom Tov\n const monthKey = hyear * 100 + mm;\n if (monthKey !== kiddushLevanaMonth) {\n kiddushLevanaMonth = monthKey;\n kiddushLevanaEv = makeKiddushLevanaEvent(hyear, mm, options);\n }\n if (kiddushLevanaEv?.getDate().abs() === abs) {\n insertTimedEvent(evts, prevEventsLength, kiddushLevanaEv);\n }\n }\n if (\n options.addHebrewDates ||\n (options.addHebrewDatesForEvents &&\n prevEventsLength !== evts.length - numDailyLearning)\n ) {\n const e2 = new HebrewDateEvent(hd);\n if (prevEventsLength === evts.length) {\n evts.push(e2);\n } else {\n evts.splice(prevEventsLength, 0, e2);\n }\n }\n }\n return evts;\n}\n\nconst FRI = 5;\nconst SAT = 6;\n\nconst {NISAN, SIVAN, ELUL} = months;\n\nconst {\n LIGHT_CANDLES,\n YOM_TOV_ENDS,\n CHUL_ONLY,\n IL_ONLY,\n LIGHT_CANDLES_TZEIS,\n CHANUKAH_CANDLES,\n MINOR_FAST,\n SPECIAL_SHABBAT,\n MODERN_HOLIDAY,\n MAJOR_FAST,\n ROSH_CHODESH,\n PARSHA_HASHAVUA,\n DAF_YOMI,\n MISHNA_YOMI,\n NACH_YOMI,\n YERUSHALMI_YOMI,\n OMER_COUNT,\n SHABBAT_MEVARCHIM,\n MINOR_HOLIDAY,\n EREV,\n CHOL_HAMOED,\n YOM_KIPPUR_KATAN,\n YIZKOR,\n BEHAB,\n KIDDUSH_LEVANA,\n} = flags;\n\nconst unrecognizedAlreadyWarned = new Set<string>();\n// The \"as const satisfies Record<keyof CalOptions, 1>\" line lets\n// compiler flag any CalOptions field missing from the list\nconst RECOGNIZED_OPTIONS = {\n location: 1,\n year: 1,\n isHebrewYear: 1,\n month: 1,\n numYears: 1,\n start: 1,\n end: 1,\n candlelighting: 1,\n candleLightingMins: 1,\n havdalahMins: 1,\n havdalahDeg: 1,\n fastEndDeg: 1,\n fastEndMins: 1,\n fastStartDeg: 1,\n fastStartMins: 1,\n tishaBavEndDeg: 1,\n tishaBavEndMins: 1,\n sedrot: 1,\n il: 1,\n noMinorFast: 1,\n noModern: 1,\n shabbatMevarchim: 1,\n noRoshChodesh: 1,\n noSpecialShabbat: 1,\n noHolidays: 1,\n omer: 1,\n molad: 1,\n ashkenazi: 1,\n locale: 1,\n addHebrewDates: 1,\n addHebrewDatesForEvents: 1,\n mask: 1,\n yomKippurKatan: 1,\n behab: 1,\n hour12: 1,\n dailyLearning: 1,\n useElevation: 1,\n yizkor: 1,\n kiddushLevanaMaharil: 1,\n} as const satisfies Record<keyof CalOptions, 1>;\nconst recognizedKeys: ReadonlySet<string> = new Set(\n Object.keys(RECOGNIZED_OPTIONS)\n);\n\nfunction warnUnrecognizedOptions(options: CalOptions) {\n for (const k of Object.keys(options)) {\n if (!recognizedKeys.has(k) && !unrecognizedAlreadyWarned.has(k)) {\n console.warn(`Ignoring unrecognized HebrewCalendar option: ${k}`);\n unrecognizedAlreadyWarned.add(k);\n }\n }\n if (options.dailyLearning) {\n for (const [k, val] of Object.entries(options.dailyLearning)) {\n // Resolve aliases (e.g. `yerushalmi` -> `yerushalmi-vilna`) the same way\n // makeDailyLearning() does, so a valid option doesn't warn spuriously.\n const name = dailyLearningName(k, val);\n if (!unrecognizedAlreadyWarned.has(k) && !DailyLearning.has(name)) {\n console.warn(`Ignoring unrecognized DailyLearning calendar: ${k}`);\n unrecognizedAlreadyWarned.add(k);\n }\n }\n }\n}\n\nconst israelCityOffset: Readonly<Record<string, number>> = {\n Jerusalem: 40,\n Haifa: 30,\n \"Zikhron Ya'aqov\": 30,\n \"Zikhron Ya'akov\": 30,\n 'Zikhron Yaakov': 30,\n \"Zichron Ya'akov\": 30,\n 'Zichron Yaakov': 30,\n};\n\nconst geoIdCandleOffset: Readonly<Record<string, number>> = {\n '281184': 40, // Jerusalem\n '294801': 30, // Haifa\n '293067': 30, // Zikhron Yaakov\n};\n\n/**\n * Modifies options in-place\n */\nfunction checkCandleOptions(options: CalOptions) {\n if (!options.candlelighting && !options.kiddushLevanaMaharil) {\n return;\n }\n const location = options.location;\n if (location === undefined || !(location instanceof Location)) {\n const name = options.candlelighting ? 'candlelighting' : 'kiddushLevanaMaharil';\n throw new TypeError(`options.${name} requires valid options.location`);\n }\n // Kiddush Levana needs candle-lighting time for Shabbat and Yom Tov\n const min0 = options.candleLightingMins;\n let min = typeof min0 === 'number' && !isNaN(min0) ? Math.trunc(min0) : 18;\n if (location.getIsrael() && Math.abs(min) === 18) {\n min = overrideIsraelCandleMins(location);\n }\n options.candleLightingMins = -1 * Math.abs(min);\n\n if (!options.candlelighting) {\n // Havdalah and fast options only affect candle-lighting events\n return;\n }\n assertMutuallyExclusive(options, 'havdalahMins', 'havdalahDeg');\n assertMutuallyExclusive(options, 'fastEndDeg', 'fastEndMins');\n assertMutuallyExclusive(options, 'fastStartDeg', 'fastStartMins');\n assertMutuallyExclusive(options, 'tishaBavEndDeg', 'tishaBavEndMins');\n\n if (typeof options.havdalahMins === 'number') {\n options.havdalahMins = Math.trunc(Math.abs(options.havdalahMins));\n } else if (typeof options.havdalahDeg === 'number') {\n options.havdalahDeg = Math.abs(options.havdalahDeg);\n } else {\n options.havdalahDeg = DEG_8_POINT_5;\n }\n if (typeof options.fastEndDeg === 'number') {\n options.fastEndDeg = Math.abs(options.fastEndDeg);\n }\n if (typeof options.fastEndMins === 'number') {\n options.fastEndMins = Math.trunc(Math.abs(options.fastEndMins));\n }\n if (typeof options.fastStartDeg === 'number') {\n options.fastStartDeg = Math.abs(options.fastStartDeg);\n }\n if (typeof options.fastStartMins === 'number') {\n options.fastStartMins = Math.trunc(Math.abs(options.fastStartMins));\n }\n if (typeof options.tishaBavEndDeg === 'number') {\n options.tishaBavEndDeg = Math.abs(options.tishaBavEndDeg);\n }\n if (typeof options.tishaBavEndMins === 'number') {\n options.tishaBavEndMins = Math.trunc(Math.abs(options.tishaBavEndMins));\n }\n}\n\n/**\n * Throws if both numeric options `a` and `b` are set\n */\nfunction assertMutuallyExclusive(\n options: CalOptions,\n a: keyof CalOptions,\n b: keyof CalOptions\n) {\n if (typeof options[a] === 'number' && typeof options[b] === 'number') {\n throw new TypeError(`options.${a} and options.${b} are mutually exclusive`);\n }\n}\n\nfunction overrideIsraelCandleMins(location: Location) {\n const geoid = location.getGeoId();\n if (geoid) {\n const offset = geoIdCandleOffset[geoid];\n if (typeof offset === 'number') {\n return offset;\n }\n }\n const shortName = location.getShortName();\n if (shortName) {\n const offset = israelCityOffset[shortName];\n if (typeof offset === 'number') {\n return offset;\n }\n }\n return 20;\n}\n\n/**\n * Mask to filter Holiday array\n */\nfunction getMaskFromOptions(options: CalOptions): number {\n if (typeof options.mask === 'number') {\n return setOptionsFromMask(options);\n }\n const il = options.il || options.location?.getIsrael() || false;\n let mask = 0;\n\n // default options\n if (!options.noHolidays) {\n mask |=\n ROSH_CHODESH |\n YOM_TOV_ENDS |\n MINOR_FAST |\n SPECIAL_SHABBAT |\n MODERN_HOLIDAY |\n MAJOR_FAST |\n MINOR_HOLIDAY |\n EREV |\n CHOL_HAMOED |\n LIGHT_CANDLES |\n LIGHT_CANDLES_TZEIS |\n CHANUKAH_CANDLES;\n }\n if (options.candlelighting) {\n mask |= LIGHT_CANDLES | LIGHT_CANDLES_TZEIS | YOM_TOV_ENDS;\n }\n // suppression of defaults\n if (options.noRoshChodesh) {\n mask &= ~ROSH_CHODESH;\n }\n if (options.noModern) {\n mask &= ~MODERN_HOLIDAY;\n }\n if (options.noMinorFast) {\n mask &= ~MINOR_FAST;\n }\n if (options.noSpecialShabbat) {\n mask &= ~SPECIAL_SHABBAT;\n mask &= ~SHABBAT_MEVARCHIM;\n }\n if (il) {\n mask |= IL_ONLY;\n } else {\n mask |= CHUL_ONLY;\n }\n // non-default options\n if (options.sedrot) {\n mask |= PARSHA_HASHAVUA;\n }\n if (options.omer) {\n mask |= OMER_COUNT;\n }\n if (options.shabbatMevarchim) {\n mask |= SHABBAT_MEVARCHIM;\n }\n if (options.yomKippurKatan) {\n mask |= YOM_KIPPUR_KATAN;\n }\n if (options.behab) {\n mask |= BEHAB;\n }\n if (options.yizkor) {\n mask |= YIZKOR;\n }\n if (options.kiddushLevanaMaharil) {\n mask |= KIDDUSH_LEVANA;\n }\n const dailyLearning = options.dailyLearning;\n if (typeof dailyLearning === 'object' && dailyLearning !== null) {\n if (dailyLearning.dafYomi) {\n mask |= DAF_YOMI;\n }\n if (dailyLearning.mishnaYomi) {\n mask |= MISHNA_YOMI;\n }\n if (dailyLearning.nachYomi) {\n mask |= NACH_YOMI;\n }\n if (dailyLearning.yerushalmi) {\n mask |= YERUSHALMI_YOMI;\n }\n }\n\n return mask;\n}\n\nconst defaultLocation = new Location(0, 0, false, 'UTC');\n\nfunction setOptionsFromMask(options: CalOptions): number {\n const m = options.mask || 0;\n if (m & ROSH_CHODESH) delete options.noRoshChodesh;\n if (m & MODERN_HOLIDAY) delete options.noModern;\n if (m & MINOR_FAST) delete options.noMinorFast;\n if (m & SPECIAL_SHABBAT) delete options.noSpecialShabbat;\n if (m & PARSHA_HASHAVUA) options.sedrot = true;\n if (m & (DAF_YOMI | MISHNA_YOMI | NACH_YOMI | YERUSHALMI_YOMI)) {\n options.dailyLearning = options.dailyLearning || {};\n if (m & DAF_YOMI) {\n options.dailyLearning.dafYomi = true;\n }\n if (m & MISHNA_YOMI) {\n options.dailyLearning.mishnaYomi = true;\n }\n if (m & NACH_YOMI) {\n options.dailyLearning.nachYomi = true;\n }\n if (m & YERUSHALMI_YOMI) {\n options.dailyLearning.yerushalmi = 1;\n }\n }\n if (m & OMER_COUNT) options.omer = true;\n if (m & SHABBAT_MEVARCHIM) options.shabbatMevarchim = true;\n if (m & YOM_KIPPUR_KATAN) options.yomKippurKatan = true;\n if (m & BEHAB) options.behab = true;\n if (m & YIZKOR) options.yizkor = true;\n if (m & KIDDUSH_LEVANA) options.kiddushLevanaMaharil = true;\n return m;\n}\n\n/**\n * Inserts `ev` into today's events (those at index `start` and beyond)\n * just before the first `TimedEvent` that occurs later, or appends it.\n * Unlike other timed events, Latest Kiddush Levana may fall at dawn,\n * at candle-lighting or late at night, so its position can't be fixed.\n */\nfunction insertTimedEvent(events: Event[], start: number, ev: TimedEvent) {\n const time = ev.eventTime.getTime();\n for (let i = start; i < events.length; i++) {\n const other = events[i];\n if (other instanceof TimedEvent && other.eventTime.getTime() > time) {\n events.splice(i, 0, ev);\n return;\n }\n }\n events.push(ev);\n}\n\n/**\n * Appends the Event `ev` to the `events` array. Also may add related\n * timed events like candle-lighting or fast start/end\n */\nfunction appendHolidayAndRelated(\n candlesEv: TimedEvent | undefined,\n events: Event[],\n ev: HolidayEvent,\n options: CalOptions,\n isFriday: boolean,\n isSaturday: boolean,\n hasUserMask: boolean\n): TimedEvent | undefined {\n const il = options.il || false;\n if (!ev.observedIn(il)) {\n return candlesEv; // holiday isn't observed here; bail out early\n }\n const eFlags = ev.mask;\n const isYomKippurKatan = ev.hasFlag('YOM_KIPPUR_KATAN');\n const isBehab = ev.hasFlag('BEHAB');\n if (\n (!options.yomKippurKatan && isYomKippurKatan) ||\n (!options.behab && isBehab) ||\n (options.noModern && ev.hasFlag('MODERN_HOLIDAY'))\n ) {\n return candlesEv; // bail out early\n }\n if (options.candlelighting && ev.getDesc() === hdesc.EREV_PESACH) {\n const evts = makeErevPesachChametzEvents(ev, options);\n if (evts.length) {\n events.push(...evts);\n }\n }\n const isMajorFast = ev.hasFlag('MAJOR_FAST');\n const isMinorFast = ev.hasFlag('MINOR_FAST');\n const isChanukah = ev.hasFlag('CHANUKAH_CANDLES');\n const hasCandles = ev.hasAnyFlag(\n 'LIGHT_CANDLES',\n 'LIGHT_CANDLES_TZEIS',\n 'CHANUKAH_CANDLES',\n 'YOM_TOV_ENDS'\n );\n let fastEv;\n if (\n options.candlelighting &&\n (isMajorFast || isMinorFast) &&\n ev.getDesc() !== hdesc.YOM_KIPPUR\n ) {\n ev = fastEv = makeFastStartEnd(ev, options);\n if (\n fastEv.startEvent &&\n (isMajorFast || (isMinorFast && !options.noMinorFast))\n ) {\n events.push(fastEv.startEvent);\n }\n }\n if (eFlags & Number(options.mask) || (!eFlags && !hasUserMask)) {\n if (options.candlelighting && hasCandles) {\n const hd = ev.getDate();\n candlesEv = makeCandleEvent(ev, hd, options, isFriday, isSaturday);\n if (isChanukah && candlesEv && !options.noHolidays) {\n // Replace Chanukah event with a clone that includes candle lighting time.\n // For clarity, allow a \"duplicate\" candle lighting event to remain for Shabbat\n const chanukahEv = makeWeekdayChanukahCandleLighting(\n ev as ChanukahEvent,\n options\n );\n if (chanukahEv) {\n if (isFriday || isSaturday) {\n chanukahEv.eventTime = candlesEv.eventTime;\n chanukahEv.eventTimeStr = candlesEv.eventTimeStr;\n }\n ev = chanukahEv;\n }\n candlesEv = undefined;\n }\n }\n if (\n !options.noHolidays ||\n (options.yomKippurKatan && isYomKippurKatan) ||\n (options.behab && isBehab)\n ) {\n events.push(ev); // the original event itself\n }\n }\n if ((isMajorFast || (isMinorFast && !options.noMinorFast)) && fastEv?.endEvent) {\n events.push(fastEv.endEvent);\n }\n return candlesEv;\n}\n\nfunction makeMoladAndMevarchimChodesh(hd: HDate, options: CalOptions): Event[] {\n const evts: Event[] = [];\n const hmonth = hd.getMonth();\n const hdate = hd.getDate();\n if (hmonth !== ELUL && hdate >= 23 && hdate <= 29) {\n const hyear = hd.getFullYear();\n const monNext = hmonth === HDate.monthsInYear(hyear) ? NISAN : hmonth + 1;\n if (options.molad) {\n evts.push(new MoladEvent(hd, hyear, monNext, options));\n }\n if (options.shabbatMevarchim) {\n const nextMonthName = HDate.getMonthName(monNext, hyear);\n const molad = new Molad(hyear, monNext);\n const memo = molad.render(options.locale, options);\n evts.push(new MevarchimChodeshEvent(hd, nextMonthName, memo, options.locale));\n }\n }\n return evts;\n}\n\nfunction dailyLearningName(key: string, val: DailyLearningValue): string {\n if (key === 'yerushalmi') {\n return val === 2 ? 'yerushalmi-schottenstein' : 'yerushalmi-vilna';\n }\n return key;\n}\n\nfunction makeDailyLearning(\n hd: HDate,\n dailyLearning: Record<string, DailyLearningValue>,\n il: boolean\n): Event[] {\n const evts: Event[] = [];\n for (const [key, val] of Object.entries(dailyLearning)) {\n if (val) {\n const name = dailyLearningName(key, val);\n const learningEv = DailyLearning.lookup(name, hd, il);\n if (learningEv) {\n evts.push(learningEv);\n }\n }\n }\n return evts;\n}\n\nfunction makeOmerEvent(hd: HDate, omerDay: number, options: CalOptions) {\n const omerEv = new OmerEvent(hd, omerDay);\n if (options.candlelighting) {\n const location = options.location!;\n const zmanim = new Zmanim(location, hd.prev(), false);\n const tzeit = zmanim.tzeit(DEG_7_POINT_083);\n if (!isNaN(tzeit.getTime())) {\n omerEv.alarm = tzeit;\n }\n }\n return omerEv;\n}\n\nfunction makeErevPesachChametzEvents(\n erevPesachEv: Event,\n options: CalOptions\n): TimedEvent[] {\n const evts: TimedEvent[] = [];\n const location = options.location!;\n const useElevation = Boolean(options.useElevation);\n const hd = erevPesachEv.getDate();\n const zmanim = new Zmanim(location, hd, useElevation);\n const zmanAchilas = zmanim.sofZmanTfilla(); // Gra\n if (isNaN(zmanAchilas.getTime())) {\n return [];\n }\n const zmanAchilasEv = new TimedEvent(\n hd,\n hdesc.SOF_ZMAN_ACHILAT_CHAMETZ,\n 0,\n zmanAchilas,\n location,\n undefined,\n options\n );\n zmanAchilasEv.emoji = '🍞';\n evts.push(zmanAchilasEv);\n // When Erev Pesach falls on Shabbat, chametz cannot be burned on Shabbat,\n // so Biur Chametz is emitted on the Friday before (see makeBiurChametzEvent\n // called from the main calendar loop). Skip it here in that case.\n if (hd.getDay() !== SAT) {\n const biurEv = makeBiurChametzEvent(hd, options);\n if (biurEv) {\n evts.push(biurEv);\n }\n }\n return evts;\n}\n\nfunction makeBiurChametzEvent(\n hd: HDate,\n options: CalOptions\n): TimedEvent | undefined {\n const location = options.location!;\n const useElevation = Boolean(options.useElevation);\n const zmanim = new Zmanim(location, hd, useElevation);\n const time = zmanim.sofZmanBiurChametzGRA();\n if (isNaN(time.getTime())) {\n return undefined;\n }\n const biurChametzEv = new TimedEvent(\n hd,\n hdesc.BIUR_CHAMETZ,\n 0,\n time,\n location,\n undefined,\n options\n );\n biurChametzEv.emoji = '🔥';\n return biurChametzEv;\n}\n"],"names":["hdesc"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.14.1, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { months } from '@hebcal/hdate';
3
3
  import { flags } from './event.js';
4
4
  import { HolidayEvent, ChanukahEvent } from './HolidayEvent.js';
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.14.1, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  var citiesJson = [
3
3
  "Ashdod|IL|31.79213|34.64966|Asia/Jerusalem|27",
4
4
  "Atlanta|US|33.749|-84.38798|America/New_York|336",
package/dist/esm/event.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.14.1, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { HDate, Locale } from '@hebcal/hdate';
3
3
  import './locale.js';
4
4
 
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.14.1, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { months, isDate, greg2abs, HDate, daysInGregMonth } from '@hebcal/hdate';
3
3
 
4
4
  const { TISHREI } = months;
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.14.1, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { months } from '@hebcal/hdate';
3
3
  import { holidayDesc } from './staticHolidays.js';
4
4
 
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.14.1, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  var noNikudOverride = { "headers": { "plural-forms": "nplurals=2; plural=(n != 1);", "language": "he-x-NoNikud" }, "contexts": { "": { "Korach": ["קורח"], "Chukat": ["חוקת"], "Erev Yom Kippur": ["ערב יום כיפור"], "Yom Kippur": ["יום כיפור"], "Yom Kippur Katan": ["יום כיפור קטן"], "Pesach Shabbat Chol ha-Moed": ["שבת חול המועד פסח"], "Sukkot Shabbat Chol ha-Moed": ["שבת חול המועד סוכות"], "Erev Sukkot": ["ערב סוכות"], "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)": ["סוכות ז׳ (הושענא רבה)"], "Swords of Iron War Memorial Day": ["יום הזיכרון לחללי מלחמת חרבות ברזל"], "Latest Kiddush Levana": ["סוף זמן קידוש לבנה"], "Earliest Kiddush Levana (3 days)": ["תחילת זמן קידוש לבנה (3 ימים)"], "Earliest Kiddush Levana (7 days)": ["תחילת זמן קידוש לבנה (7 ימים)"], "Latest Kiddush Levana (Maharil)": ["סוף זמן קידוש לבנה (מהרי״ל)"], "Latest Kiddush Levana (15 days)": ["סוף זמן קידוש לבנה (15 ימים)"] } } };
3
3
 
4
4
  export { noNikudOverride as default };
package/dist/esm/he.po.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.14.1, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  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": ["סוֹף זְמַן אֲכִילַת חָמֵץ"], "Swords of Iron War Memorial Day": ["יוֹם הַזִּכָּרוֹן לְחַלְלֵי מִלְחֶמֶת חַרְבוֹת בַּרְזֶל"], "Latest Kiddush Levana": ["סוֹף זְמַן קִדּוּשׁ לְבָנָה"], "Earliest Kiddush Levana (3 days)": ["תְּחִלַּת זְמַן קִדּוּשׁ לְבָנָה (3 יָמִים)"], "Earliest Kiddush Levana (7 days)": ["תְּחִלַּת זְמַן קִדּוּשׁ לְבָנָה (7 יָמִים)"], "Latest Kiddush Levana (Maharil)": ["סוֹף זְמַן קִדּוּשׁ לְבָנָה (מהרי״ל)"], "Latest Kiddush Levana (15 days)": ["סוֹף זְמַן קִדּוּשׁ לְבָנָה (15 יָמִים)"] } } };
3
3
 
4
4
  export { poHe as default };
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.14.1, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { birthdayOrAnniversary, yahrzeit, HDate } from '@hebcal/hdate';
3
3
  import './locale.js';
4
4
  import { version } from './pkgVersion.js';
@@ -1,4 +1,5 @@
1
1
  import { HDate } from '@hebcal/hdate';
2
+ import { Event } from './event.js';
2
3
  import { HolidayEvent } from './HolidayEvent.js';
3
4
  /**
4
5
  * Returns an array of holiday Events that occur on the given date, or
@@ -24,6 +25,24 @@ export declare function getHolidaysOnDate(date: HDate | Date | number, il?: bool
24
25
  * by Israel vs. Diaspora — inspect `flags.IL_ONLY` / `flags.CHUL_ONLY`.
25
26
  */
26
27
  export type HolidayYearMap = Map<string, HolidayEvent[]>;
28
+ /** @internal */
29
+ export declare const TIME_OF_DAY_MORNING = 0;
30
+ /** @internal */
31
+ export declare const TIME_OF_DAY_MEVARCHIM = 1;
32
+ /** @internal */
33
+ export declare const TIME_OF_DAY_DAY = 2;
34
+ /** @internal */
35
+ export declare const TIME_OF_DAY_EVENING = 3;
36
+ /**
37
+ * Approximate time of day of an event, used to order events on the same date.
38
+ * - Morning: special Shabbatot (tied to the Torah or Haftarah reading), minor
39
+ * fasts (which begin at dawn) and Birkat Hachamah (recited at sunrise)
40
+ * - Shabbat Mevarchim, announced in synagogue after the Torah reading
41
+ * - Day: everything else
42
+ * - Evening: Erev holidays, Chanukah candle-lighting and Leil Selichot
43
+ * @internal
44
+ */
45
+ export declare function timeOfDay(ev: Event): number;
27
46
  /**
28
47
  * Lower-level holidays interface, which returns a `Map` of `Event`s indexed by
29
48
  * `HDate.toString()`. These events must filtered especially for `flags.IL_ONLY`