@hebcal/core 6.14.3 → 6.14.5

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 (64) hide show
  1. package/dist/bundle.js +217 -166
  2. package/dist/bundle.js.map +1 -1
  3. package/dist/bundle.min.js +6 -6
  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/HebrewDateEvent.js.map +1 -1
  8. package/dist/esm/HolidayEvent.d.ts +2 -1
  9. package/dist/esm/HolidayEvent.js +6 -2
  10. package/dist/esm/HolidayEvent.js.map +1 -1
  11. package/dist/esm/KiddushLevanaEvent.js +1 -1
  12. package/dist/esm/KiddushLevanaEvent.js.map +1 -1
  13. package/dist/esm/MevarchimChodeshEvent.js +1 -1
  14. package/dist/esm/MevarchimChodeshEvent.js.map +1 -1
  15. package/dist/esm/ParshaEvent.js +1 -1
  16. package/dist/esm/ParshaEvent.js.map +1 -1
  17. package/dist/esm/TimedEvent.js +1 -1
  18. package/dist/esm/TimedEvent.js.map +1 -1
  19. package/dist/esm/YomKippurKatanEvent.js +1 -1
  20. package/dist/esm/YomKippurKatanEvent.js.map +1 -1
  21. package/dist/esm/ashkenazi.po.js +1 -1
  22. package/dist/esm/calendar.d.ts +10 -0
  23. package/dist/esm/calendar.js +36 -27
  24. package/dist/esm/calendar.js.map +1 -1
  25. package/dist/esm/candles.js +1 -1
  26. package/dist/esm/candles.js.map +1 -1
  27. package/dist/esm/cities.json.js +1 -1
  28. package/dist/esm/event.js +1 -1
  29. package/dist/esm/getStartAndEnd.js +1 -1
  30. package/dist/esm/hallel.js +1 -1
  31. package/dist/esm/he-x-NoNikud.po.js +1 -1
  32. package/dist/esm/he.po.js +1 -1
  33. package/dist/esm/hebcal.js +1 -1
  34. package/dist/esm/holidays.d.ts +26 -8
  35. package/dist/esm/holidays.js +54 -15
  36. package/dist/esm/holidays.js.map +1 -1
  37. package/dist/esm/index.js +1 -1
  38. package/dist/esm/isAssurBemlacha.js +1 -1
  39. package/dist/esm/isAveilut.js +1 -1
  40. package/dist/esm/isFastDay.js +1 -1
  41. package/dist/esm/locale.js +1 -1
  42. package/dist/esm/location.js +1 -1
  43. package/dist/esm/location.js.map +1 -1
  44. package/dist/esm/modern.js +1 -1
  45. package/dist/esm/molad.js +1 -1
  46. package/dist/esm/molad.js.map +1 -1
  47. package/dist/esm/moladBase.js +1 -1
  48. package/dist/esm/moladDate.js +1 -1
  49. package/dist/esm/omer.js +1 -1
  50. package/dist/esm/omer.js.map +1 -1
  51. package/dist/esm/parshaName.js +1 -1
  52. package/dist/esm/parshaYear.js +1 -1
  53. package/dist/esm/pkgVersion.d.ts +1 -1
  54. package/dist/esm/pkgVersion.js +2 -2
  55. package/dist/esm/pkgVersion.js.map +1 -1
  56. package/dist/esm/reformatTimeStr.js +1 -1
  57. package/dist/esm/sedra.js +1 -1
  58. package/dist/esm/sefira.json.js +1 -1
  59. package/dist/esm/staticHolidays.js +1 -1
  60. package/dist/esm/string.js +1 -1
  61. package/dist/esm/tachanun.js +1 -1
  62. package/dist/esm/zenith.js +1 -1
  63. package/dist/esm/zmanim.js +1 -1
  64. package/package.json +4 -4
@@ -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 {\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
+ {"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_, timeOfDay} 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 * Events are returned in date order. Events on the same date are ordered by\n * approximate time of day: timed events before dawn (Fast begins, an early\n * Latest Kiddush Levana), then the parsha, special Shabbatot and minor fasts,\n * then the Molad and Shabbat Mevarchim, then other holidays, Yizkor and the\n * Omer, then the chametz deadlines on Erev Pesach, then daily learning, then\n * evening holidays (Erev holidays, Chanukah), and finally the remaining timed\n * events (candle-lighting, Havdalah, Fast ends) in order of time. When\n * `options.addHebrewDates` or `options.addHebrewDatesForEvents` adds a Hebrew\n * date event, it comes first.\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 if (options.sedrot && isSaturday) {\n const parsha0 = sedra!.lookup(abs);\n if (!parsha0.chag) {\n evts.push(new ParshaEvent(parsha0));\n }\n }\n if (isSaturday && (options.molad || options.shabbatMevarchim)) {\n evts.push(...makeMoladAndMevarchimChodesh(hd, options));\n }\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.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 evts.push(kiddushLevanaEv);\n }\n }\n sortByTimeOfDay(evts, prevEventsLength);\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\nfunction compareTimeOfDay(a: Event, b: Event): number {\n const diff = timeOfDay(a) - timeOfDay(b);\n if (diff !== 0) {\n return diff;\n }\n if (a instanceof TimedEvent && b instanceof TimedEvent) {\n return a.eventTime.getTime() - b.eventTime.getTime();\n }\n return 0;\n}\n\n/**\n * Sorts today's events (those at index `start` and beyond) in place by\n * {@link timeOfDay}. The sort is stable, so events of equal rank keep the\n * order in which they were added, e.g. Yizkor after its holiday.\n */\nfunction sortByTimeOfDay(events: Event[], start: number) {\n if (events.length - start < 2) {\n return;\n }\n const today = events.splice(start);\n today.sort(compareTimeOfDay);\n events.push(...today);\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.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.5, 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 +1 @@
1
- {"version":3,"file":"candles.js","sources":["../../../src/candles.ts"],"sourcesContent":["import {HDate, months} from '@hebcal/hdate';\nimport {CalOptions} from './CalOptions.js';\nimport {Location} from './location.js';\nimport {Event, flags} from './event.js';\nimport {ChanukahEvent, HolidayEvent} from './HolidayEvent.js';\nimport {Zmanim} from './zmanim.js';\nimport {TimedEvent, CandleLightingEvent, HavdalahEvent} from './TimedEvent.js';\nimport {holidayDesc as hdesc} from './staticHolidays.js';\nimport {DEG_6_POINT_45, DEG_7_POINT_083, DEG_16_POINT_1} from './zenith.js';\n\nconst {LIGHT_CANDLES, LIGHT_CANDLES_TZEIS} = flags;\nconst {FAST_BEGINS, FAST_ENDS} = hdesc;\n\n/** @internal */\nexport function makeCandleEvent(\n ev: Event | undefined,\n hd: HDate,\n options: CalOptions,\n isFriday: boolean,\n isSaturday: boolean\n): TimedEvent | undefined {\n let havdalahTitle = false;\n let useHavdalahOffset = isSaturday;\n let mask = ev ? ev.mask : LIGHT_CANDLES;\n if (ev !== undefined) {\n // if linked event && dow == FRI, use Candle lighting time & title\n if (!isFriday) {\n if (ev.hasAnyFlag('LIGHT_CANDLES_TZEIS', 'CHANUKAH_CANDLES')) {\n useHavdalahOffset = true;\n } else if (ev.hasFlag('YOM_TOV_ENDS')) {\n havdalahTitle = true;\n useHavdalahOffset = true;\n }\n }\n } else if (isSaturday) {\n havdalahTitle = true;\n mask = LIGHT_CANDLES_TZEIS;\n }\n // if Havdalah offset is 0 or undefined, we'll use tzeit time\n const offset = useHavdalahOffset\n ? Number(options.havdalahMins)\n : Number(options.candleLightingMins);\n const location = options.location as Location;\n const useElevation = Boolean(options.useElevation);\n const zmanim = new Zmanim(location, hd, useElevation);\n const time =\n useHavdalahOffset && !offset\n ? zmanim.tzeit(options.havdalahDeg)\n : zmanim.sunsetOffset(offset, true);\n if (isNaN(time.getTime())) {\n return undefined; // no sunset\n }\n if (havdalahTitle) {\n return new HavdalahEvent(\n hd,\n mask,\n time,\n location,\n options.havdalahMins,\n ev,\n options\n );\n } else {\n mask |= LIGHT_CANDLES;\n return new CandleLightingEvent(hd, mask, time, location, ev, options);\n }\n}\n\n/**\n * Minutes after sunset that minor fasts (including Yom Kippur Katan) end in\n * Israel by default, following Rabbi Deblitzky's practice.\n * @see {https://www.yeshiva.org.il/calendar/timeprinciples}\n */\nconst MINOR_FAST_END_MINUTES_IL = 15;\n\n/**\n * Returns `val` when it is a finite nonzero number, otherwise `undefined`\n */\nfunction nonzero(val: number | undefined): number | undefined {\n return typeof val === 'number' && isFinite(val) && val !== 0 ? val : undefined;\n}\n\n/**\n * Computes the \"Fast begins\" time for a minor fast (one that begins at dawn).\n *\n * When `options.fastStartMins` is a nonzero number, the fast begins that many\n * minutes before sunrise; otherwise, when `options.fastStartDeg` is a nonzero\n * number, the fast begins when the sun is that many degrees below the horizon\n * in the morning. By default, minor fasts begin at Alot HaShachar (16.1°).\n */\nfunction makeFastStartTime(zmanim: Zmanim, options: CalOptions): Date {\n const fastStartMins = nonzero(options.fastStartMins);\n if (fastStartMins !== undefined) {\n return zmanim.sunriseOffset(-Math.abs(fastStartMins), true);\n }\n const fastStartDeg = nonzero(options.fastStartDeg);\n return zmanim.timeAtAngle(\n fastStartDeg === undefined ? DEG_16_POINT_1 : Math.abs(fastStartDeg),\n true\n );\n}\n\n/**\n * Computes the \"Fast ends\" time for a fast day.\n *\n * Tish'a B'Av ends `options.tishaBavEndMins` minutes after sunset or at tzeit\n * `options.tishaBavEndDeg` when either is a nonzero number, and otherwise at\n * tzeit 6.45° (Rabbi Yechiel Michel Tucazinsky). It is not affected by\n * `options.fastEndDeg`, `options.fastEndMins` or `options.il`.\n *\n * For minor fasts: when `options.fastEndMins` is a nonzero number, the fast\n * ends that many minutes after sunset; otherwise, when `options.fastEndDeg` is\n * a nonzero number, the fast ends at tzeit for that solar depression angle.\n * When neither is specified, the default depends on `options.il`:\n * - In Israel, minor fasts end 15 minutes after sunset (Rabbi Deblitzky's practice).\n * - Elsewhere, minor fasts end at tzeit 7.083° (3 medium-sized stars).\n */\nfunction makeFastEndTime(\n zmanim: Zmanim,\n isTishaBav: boolean,\n options: CalOptions\n): Date {\n if (isTishaBav) {\n const tishaBavEndMins = nonzero(options.tishaBavEndMins);\n if (tishaBavEndMins !== undefined) {\n return zmanim.sunsetOffset(Math.abs(tishaBavEndMins), true);\n }\n const tishaBavEndDeg = nonzero(options.tishaBavEndDeg);\n return zmanim.tzeit(\n tishaBavEndDeg === undefined ? DEG_6_POINT_45 : Math.abs(tishaBavEndDeg)\n );\n }\n const fastEndMins = options.fastEndMins;\n if (typeof fastEndMins === 'number' && fastEndMins !== 0) {\n return zmanim.sunsetOffset(Math.abs(fastEndMins), true);\n }\n const fastEndDeg = options.fastEndDeg;\n if (typeof fastEndDeg === 'number' && fastEndDeg !== 0) {\n return zmanim.tzeit(Math.abs(fastEndDeg));\n }\n if (options.il) {\n return zmanim.sunsetOffset(MINOR_FAST_END_MINUTES_IL, true);\n }\n return zmanim.tzeit(DEG_7_POINT_083);\n}\n\n/**\n * A fast day holiday with attached start and end time events.\n *\n * Wraps an underlying fast-day {@link HolidayEvent} and (when computable\n * for the given location) exposes a \"Fast begins\" and \"Fast ends\"\n * {@link TimedEvent}. Generated by {@link calendar} when\n * `options.candlelighting` is `true` and `options.location` is provided.\n *\n * - Minor fasts (including Yom Kippur Katan) begin at *Alot HaShachar*\n * (16.1° below horizon in the morning), which can be overridden via\n * `options.fastStartDeg` or `options.fastStartMins`. By default they end at\n * tzeit 7.083° (3 medium-sized stars) in the Diaspora, or 15 minutes after\n * sunset in Israel (Rabbi Deblitzky's practice). This can be overridden\n * via `options.fastEndDeg` or `options.fastEndMins`.\n * - Tish'a B'Av begins at sunset on the previous day, regardless of\n * `options.fastStartDeg` / `options.fastStartMins`. By default it ends at\n * tzeit 6.45° below horizon (Rabbi Yechiel Michel Tucazinsky), which can be\n * overridden via `options.tishaBavEndDeg` or `options.tishaBavEndMins`\n * (but not by `options.fastEndDeg` / `options.fastEndMins`).\n * - When a minor fast falls on a Friday, the end time is suppressed\n * (Shabbat begins before nightfall).\n */\nexport class FastDayEvent extends HolidayEvent {\n /** original event */\n readonly linkedEvent: HolidayEvent;\n /** this will be a \"Fast begins\" event */\n readonly startEvent?: TimedEvent;\n /** this will be a \"Fast ends\" event */\n readonly endEvent?: TimedEvent;\n constructor(\n linkedEvent: HolidayEvent,\n startEvent?: TimedEvent,\n endEvent?: TimedEvent\n ) {\n super(linkedEvent.getDate(), linkedEvent.getDesc(), linkedEvent.mask);\n this.linkedEvent = linkedEvent;\n this.startEvent = startEvent;\n this.endEvent = endEvent;\n }\n render(locale?: string): string {\n return this.linkedEvent.render(locale);\n }\n renderBrief(locale?: string): string {\n return this.linkedEvent.renderBrief(locale);\n }\n urlDateSuffix(): string {\n return this.linkedEvent.urlDateSuffix();\n }\n url(): string | undefined {\n return this.linkedEvent.url();\n }\n getEmoji(): string {\n return this.linkedEvent.getEmoji();\n }\n getCategories(): string[] {\n return this.linkedEvent.getCategories();\n }\n}\n\n/**\n * Makes a pair of events representing fast start and end times\n * @internal\n */\nexport function makeFastStartEnd(\n ev: HolidayEvent,\n options: CalOptions\n): FastDayEvent {\n const desc = ev.getDesc();\n if (desc === 'Yom Kippur') {\n throw new RangeError('YK does not require this function');\n }\n const hd = ev.getDate();\n const dt = hd.greg();\n const location = options.location as Location;\n const useElevation = Boolean(options.useElevation);\n const zmanim = new Zmanim(location, dt, useElevation);\n let startEvent: TimedEvent | undefined;\n let endEvent: TimedEvent | undefined;\n if (desc === \"Erev Tish'a B'Av\") {\n const sunset = zmanim.sunset();\n if (!isNaN(sunset.getTime())) {\n startEvent = makeTimedEvent(ev, sunset, FAST_BEGINS, options);\n }\n } else if (desc.startsWith(\"Tish'a B'Av\")) {\n const fastEnd = makeFastEndTime(zmanim, true, options);\n if (!isNaN(fastEnd.getTime())) {\n endEvent = makeTimedEvent(ev, fastEnd, FAST_ENDS, options);\n }\n } else {\n const fastStart = makeFastStartTime(zmanim, options);\n if (!isNaN(fastStart.getTime())) {\n startEvent = makeTimedEvent(ev, fastStart, FAST_BEGINS, options);\n }\n if (\n dt.getDay() !== 5 &&\n !(hd.getDate() === 14 && hd.getMonth() === months.NISAN)\n ) {\n const fastEnd = makeFastEndTime(zmanim, false, options);\n if (!isNaN(fastEnd.getTime())) {\n endEvent = makeTimedEvent(ev, fastEnd, FAST_ENDS, options);\n }\n }\n }\n const ev2 = new FastDayEvent(ev, startEvent, endEvent);\n // copy properties such as memo or emoji\n Object.assign(ev2, ev);\n return ev2;\n}\n\nfunction makeTimedEvent(\n ev: Event,\n time: Date,\n desc: string,\n options: CalOptions\n): TimedEvent {\n const location = options.location as Location;\n const hd = ev.getDate();\n return new TimedEvent(hd, desc, ev.mask, time, location, ev, options);\n}\n\n/**\n * A Chanukah candle-lighting event that carries a specific time of day.\n *\n * Generated by {@link calendar} when both `options.candlelighting`\n * and `options.location` are set. On weekdays the time is Bein HaShmashos\n * (13.5 minutes before the sun is 7.083° below the horizon in the evening);\n * on Friday it is regular candle-lighting time, and on Saturday night it is\n * regular Havdalah time.\n */\nexport class TimedChanukahEvent extends ChanukahEvent {\n /** Time at which candles are lit, rounded to the nearest minute */\n eventTime: Date;\n /** {@link eventTime} formatted for the event's location, e.g. `'4:31pm'` */\n eventTimeStr: string;\n /** Location used to calculate {@link eventTime} */\n readonly location: Location;\n /**\n * Normally created by {@link calendar} rather than directly.\n * @param ev the untimed Chanukah event this is derived from\n * @param eventTime time at which candles are lit\n * @param location location used to format the time\n */\n constructor(ev: ChanukahEvent, eventTime: Date, location: Location) {\n super(ev.getDate(), ev.getDesc(), ev.mask, ev.chanukahDay);\n this.eventTime = Zmanim.roundTime(eventTime);\n const timeFormat = location.getTimeFormatter();\n this.eventTimeStr = Zmanim.formatTime(this.eventTime, timeFormat);\n this.location = location;\n this.emoji = ev.emoji;\n }\n}\n\n/**\n * Makes a candle-lighting event for Chankah (not on Friday/Saturday).\n * At one point this used civil dusk (6 degrees below horizon).\n * Another source suggests 4.6667 degrees below horizon.\n * @internal\n */\nexport function makeWeekdayChanukahCandleLighting(\n ev: ChanukahEvent,\n options: CalOptions\n): TimedChanukahEvent | null {\n const hd = ev.getDate();\n const location = options.location as Location;\n const useElevation = Boolean(options.useElevation);\n const zmanim = new Zmanim(location, hd.greg(), useElevation);\n const candleLightingTime = zmanim.beinHaShmashos();\n if (isNaN(candleLightingTime.getTime())) {\n return null;\n }\n return new TimedChanukahEvent(ev, candleLightingTime, location);\n}\n"],"names":["hdesc"],"mappings":"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"}
1
+ {"version":3,"file":"candles.js","sources":["../../../src/candles.ts"],"sourcesContent":["import {HDate, months} from '@hebcal/hdate';\nimport {CalOptions} from './CalOptions.js';\nimport {Location} from './location.js';\nimport {Event, flags} from './event.js';\nimport {ChanukahEvent, HolidayEvent} from './HolidayEvent.js';\nimport {Zmanim} from './zmanim.js';\nimport {TimedEvent, CandleLightingEvent, HavdalahEvent} from './TimedEvent.js';\nimport {holidayDesc as hdesc} from './staticHolidays.js';\nimport {DEG_6_POINT_45, DEG_7_POINT_083, DEG_16_POINT_1} from './zenith.js';\n\nconst {LIGHT_CANDLES, LIGHT_CANDLES_TZEIS} = flags;\nconst {FAST_BEGINS, FAST_ENDS} = hdesc;\n\n/** @internal */\nexport function makeCandleEvent(\n ev: Event | undefined,\n hd: HDate,\n options: CalOptions,\n isFriday: boolean,\n isSaturday: boolean\n): TimedEvent | undefined {\n let havdalahTitle = false;\n let useHavdalahOffset = isSaturday;\n let mask = ev ? ev.mask : LIGHT_CANDLES;\n if (ev !== undefined) {\n // if linked event && dow == FRI, use Candle lighting time & title\n if (!isFriday) {\n if (ev.hasAnyFlag('LIGHT_CANDLES_TZEIS', 'CHANUKAH_CANDLES')) {\n useHavdalahOffset = true;\n } else if (ev.hasFlag('YOM_TOV_ENDS')) {\n havdalahTitle = true;\n useHavdalahOffset = true;\n }\n }\n } else if (isSaturday) {\n havdalahTitle = true;\n mask = LIGHT_CANDLES_TZEIS;\n }\n // if Havdalah offset is 0 or undefined, we'll use tzeit time\n const offset = useHavdalahOffset\n ? Number(options.havdalahMins)\n : Number(options.candleLightingMins);\n const location = options.location as Location;\n const useElevation = Boolean(options.useElevation);\n const zmanim = new Zmanim(location, hd, useElevation);\n const time =\n useHavdalahOffset && !offset\n ? zmanim.tzeit(options.havdalahDeg)\n : zmanim.sunsetOffset(offset, true);\n if (isNaN(time.getTime())) {\n return undefined; // no sunset\n }\n if (havdalahTitle) {\n return new HavdalahEvent(\n hd,\n mask,\n time,\n location,\n options.havdalahMins,\n ev,\n options\n );\n } else {\n mask |= LIGHT_CANDLES;\n return new CandleLightingEvent(hd, mask, time, location, ev, options);\n }\n}\n\n/**\n * Minutes after sunset that minor fasts (including Yom Kippur Katan) end in\n * Israel by default, following Rabbi Deblitzky's practice.\n * @see {https://www.yeshiva.org.il/calendar/timeprinciples}\n */\nconst MINOR_FAST_END_MINUTES_IL = 15;\n\n/**\n * Returns `val` when it is a finite nonzero number, otherwise `undefined`\n */\nfunction nonzero(val: number | undefined): number | undefined {\n return typeof val === 'number' && isFinite(val) && val !== 0 ? val : undefined;\n}\n\n/**\n * Computes the \"Fast begins\" time for a minor fast (one that begins at dawn).\n *\n * When `options.fastStartMins` is a nonzero number, the fast begins that many\n * minutes before sunrise; otherwise, when `options.fastStartDeg` is a nonzero\n * number, the fast begins when the sun is that many degrees below the horizon\n * in the morning. By default, minor fasts begin at Alot HaShachar (16.1°).\n */\nfunction makeFastStartTime(zmanim: Zmanim, options: CalOptions): Date {\n const fastStartMins = nonzero(options.fastStartMins);\n if (fastStartMins !== undefined) {\n return zmanim.sunriseOffset(-Math.abs(fastStartMins), true);\n }\n const fastStartDeg = nonzero(options.fastStartDeg);\n return zmanim.timeAtAngle(\n fastStartDeg === undefined ? DEG_16_POINT_1 : Math.abs(fastStartDeg),\n true\n );\n}\n\n/**\n * Computes the \"Fast ends\" time for a fast day.\n *\n * Tish'a B'Av ends `options.tishaBavEndMins` minutes after sunset or at tzeit\n * `options.tishaBavEndDeg` when either is a nonzero number, and otherwise at\n * tzeit 6.45° (Rabbi Yechiel Michel Tucazinsky). It is not affected by\n * `options.fastEndDeg`, `options.fastEndMins` or `options.il`.\n *\n * For minor fasts: when `options.fastEndMins` is a nonzero number, the fast\n * ends that many minutes after sunset; otherwise, when `options.fastEndDeg` is\n * a nonzero number, the fast ends at tzeit for that solar depression angle.\n * When neither is specified, the default depends on `options.il`:\n * - In Israel, minor fasts end 15 minutes after sunset (Rabbi Deblitzky's practice).\n * - Elsewhere, minor fasts end at tzeit 7.083° (3 medium-sized stars).\n */\nfunction makeFastEndTime(\n zmanim: Zmanim,\n isTishaBav: boolean,\n options: CalOptions\n): Date {\n if (isTishaBav) {\n const tishaBavEndMins = nonzero(options.tishaBavEndMins);\n if (tishaBavEndMins !== undefined) {\n return zmanim.sunsetOffset(Math.abs(tishaBavEndMins), true);\n }\n const tishaBavEndDeg = nonzero(options.tishaBavEndDeg);\n return zmanim.tzeit(\n tishaBavEndDeg === undefined ? DEG_6_POINT_45 : Math.abs(tishaBavEndDeg)\n );\n }\n const fastEndMins = options.fastEndMins;\n if (typeof fastEndMins === 'number' && fastEndMins !== 0) {\n return zmanim.sunsetOffset(Math.abs(fastEndMins), true);\n }\n const fastEndDeg = options.fastEndDeg;\n if (typeof fastEndDeg === 'number' && fastEndDeg !== 0) {\n return zmanim.tzeit(Math.abs(fastEndDeg));\n }\n if (options.il) {\n return zmanim.sunsetOffset(MINOR_FAST_END_MINUTES_IL, true);\n }\n return zmanim.tzeit(DEG_7_POINT_083);\n}\n\n/**\n * A fast day holiday with attached start and end time events.\n *\n * Wraps an underlying fast-day {@link HolidayEvent} and (when computable\n * for the given location) exposes a \"Fast begins\" and \"Fast ends\"\n * {@link TimedEvent}. Generated by {@link calendar} when\n * `options.candlelighting` is `true` and `options.location` is provided.\n *\n * - Minor fasts (including Yom Kippur Katan) begin at *Alot HaShachar*\n * (16.1° below horizon in the morning), which can be overridden via\n * `options.fastStartDeg` or `options.fastStartMins`. By default they end at\n * tzeit 7.083° (3 medium-sized stars) in the Diaspora, or 15 minutes after\n * sunset in Israel (Rabbi Deblitzky's practice). This can be overridden\n * via `options.fastEndDeg` or `options.fastEndMins`.\n * - Tish'a B'Av begins at sunset on the previous day, regardless of\n * `options.fastStartDeg` / `options.fastStartMins`. By default it ends at\n * tzeit 6.45° below horizon (Rabbi Yechiel Michel Tucazinsky), which can be\n * overridden via `options.tishaBavEndDeg` or `options.tishaBavEndMins`\n * (but not by `options.fastEndDeg` / `options.fastEndMins`).\n * - When a minor fast falls on a Friday, the end time is suppressed\n * (Shabbat begins before nightfall).\n */\nexport class FastDayEvent extends HolidayEvent {\n /** original event */\n readonly linkedEvent: HolidayEvent;\n /** this will be a \"Fast begins\" event */\n readonly startEvent?: TimedEvent;\n /** this will be a \"Fast ends\" event */\n readonly endEvent?: TimedEvent;\n constructor(\n linkedEvent: HolidayEvent,\n startEvent?: TimedEvent,\n endEvent?: TimedEvent\n ) {\n super(linkedEvent.getDate(), linkedEvent.getDesc(), linkedEvent.mask);\n this.linkedEvent = linkedEvent;\n this.startEvent = startEvent;\n this.endEvent = endEvent;\n }\n override render(locale?: string): string {\n return this.linkedEvent.render(locale);\n }\n override renderBrief(locale?: string): string {\n return this.linkedEvent.renderBrief(locale);\n }\n override urlDateSuffix(): string {\n return this.linkedEvent.urlDateSuffix();\n }\n override url(): string | undefined {\n return this.linkedEvent.url();\n }\n override getEmoji(): string {\n return this.linkedEvent.getEmoji();\n }\n override getCategories(): string[] {\n return this.linkedEvent.getCategories();\n }\n}\n\n/**\n * Makes a pair of events representing fast start and end times\n * @internal\n */\nexport function makeFastStartEnd(\n ev: HolidayEvent,\n options: CalOptions\n): FastDayEvent {\n const desc = ev.getDesc();\n if (desc === 'Yom Kippur') {\n throw new RangeError('YK does not require this function');\n }\n const hd = ev.getDate();\n const dt = hd.greg();\n const location = options.location as Location;\n const useElevation = Boolean(options.useElevation);\n const zmanim = new Zmanim(location, dt, useElevation);\n let startEvent: TimedEvent | undefined;\n let endEvent: TimedEvent | undefined;\n if (desc === \"Erev Tish'a B'Av\") {\n const sunset = zmanim.sunset();\n if (!isNaN(sunset.getTime())) {\n startEvent = makeTimedEvent(ev, sunset, FAST_BEGINS, options);\n }\n } else if (desc.startsWith(\"Tish'a B'Av\")) {\n const fastEnd = makeFastEndTime(zmanim, true, options);\n if (!isNaN(fastEnd.getTime())) {\n endEvent = makeTimedEvent(ev, fastEnd, FAST_ENDS, options);\n }\n } else {\n const fastStart = makeFastStartTime(zmanim, options);\n if (!isNaN(fastStart.getTime())) {\n startEvent = makeTimedEvent(ev, fastStart, FAST_BEGINS, options);\n }\n if (\n dt.getDay() !== 5 &&\n !(hd.getDate() === 14 && hd.getMonth() === months.NISAN)\n ) {\n const fastEnd = makeFastEndTime(zmanim, false, options);\n if (!isNaN(fastEnd.getTime())) {\n endEvent = makeTimedEvent(ev, fastEnd, FAST_ENDS, options);\n }\n }\n }\n const ev2 = new FastDayEvent(ev, startEvent, endEvent);\n // copy properties such as memo or emoji\n Object.assign(ev2, ev);\n return ev2;\n}\n\nfunction makeTimedEvent(\n ev: Event,\n time: Date,\n desc: string,\n options: CalOptions\n): TimedEvent {\n const location = options.location as Location;\n const hd = ev.getDate();\n return new TimedEvent(hd, desc, ev.mask, time, location, ev, options);\n}\n\n/**\n * A Chanukah candle-lighting event that carries a specific time of day.\n *\n * Generated by {@link calendar} when both `options.candlelighting`\n * and `options.location` are set. On weekdays the time is Bein HaShmashos\n * (13.5 minutes before the sun is 7.083° below the horizon in the evening);\n * on Friday it is regular candle-lighting time, and on Saturday night it is\n * regular Havdalah time.\n */\nexport class TimedChanukahEvent extends ChanukahEvent {\n /** Time at which candles are lit, rounded to the nearest minute */\n eventTime: Date;\n /** {@link eventTime} formatted for the event's location, e.g. `'4:31pm'` */\n eventTimeStr: string;\n /** Location used to calculate {@link eventTime} */\n readonly location: Location;\n /**\n * Normally created by {@link calendar} rather than directly.\n * @param ev the untimed Chanukah event this is derived from\n * @param eventTime time at which candles are lit\n * @param location location used to format the time\n */\n constructor(ev: ChanukahEvent, eventTime: Date, location: Location) {\n super(ev.getDate(), ev.getDesc(), ev.mask, ev.chanukahDay);\n this.eventTime = Zmanim.roundTime(eventTime);\n const timeFormat = location.getTimeFormatter();\n this.eventTimeStr = Zmanim.formatTime(this.eventTime, timeFormat);\n this.location = location;\n this.emoji = ev.emoji;\n }\n}\n\n/**\n * Makes a candle-lighting event for Chankah (not on Friday/Saturday).\n * At one point this used civil dusk (6 degrees below horizon).\n * Another source suggests 4.6667 degrees below horizon.\n * @internal\n */\nexport function makeWeekdayChanukahCandleLighting(\n ev: ChanukahEvent,\n options: CalOptions\n): TimedChanukahEvent | null {\n const hd = ev.getDate();\n const location = options.location as Location;\n const useElevation = Boolean(options.useElevation);\n const zmanim = new Zmanim(location, hd.greg(), useElevation);\n const candleLightingTime = zmanim.beinHaShmashos();\n if (isNaN(candleLightingTime.getTime())) {\n return null;\n }\n return new TimedChanukahEvent(ev, candleLightingTime, location);\n}\n"],"names":["hdesc"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.5, 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.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.5, 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.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.5, 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.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.5, 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.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.5, 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.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.5, 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.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.5, 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';
@@ -26,20 +26,38 @@ export declare function getHolidaysOnDate(date: HDate | Date | number, il?: bool
26
26
  */
27
27
  export type HolidayYearMap = Map<string, HolidayEvent[]>;
28
28
  /** @internal */
29
- export declare const TIME_OF_DAY_MORNING = 0;
29
+ export declare const TIME_OF_DAY_DAWN = 0;
30
30
  /** @internal */
31
- export declare const TIME_OF_DAY_MEVARCHIM = 1;
31
+ export declare const TIME_OF_DAY_MORNING = 1;
32
32
  /** @internal */
33
- export declare const TIME_OF_DAY_DAY = 2;
33
+ export declare const TIME_OF_DAY_MEVARCHIM = 2;
34
34
  /** @internal */
35
- export declare const TIME_OF_DAY_EVENING = 3;
35
+ export declare const TIME_OF_DAY_DAY = 3;
36
+ /** @internal */
37
+ export declare const TIME_OF_DAY_MIDDAY = 4;
38
+ /** @internal */
39
+ export declare const TIME_OF_DAY_LEARNING = 5;
40
+ /** @internal */
41
+ export declare const TIME_OF_DAY_EVENING = 6;
42
+ /** @internal */
43
+ export declare const TIME_OF_DAY_NIGHT = 7;
36
44
  /**
37
45
  * 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
46
+ * Events of equal rank keep the order in which they were created, and timed
47
+ * events of equal rank are ordered by their time.
48
+ * - Dawn: Fast begins for a minor fast, and a Latest Kiddush Levana before
49
+ * noon (which is never later than _alot hashachar_)
50
+ * - Morning: the parsha, special Shabbatot (tied to the Torah or Haftarah
51
+ * reading), minor fasts (which begin at dawn) and Birkat Hachamah
52
+ * (recited at sunrise)
53
+ * - Molad and Shabbat Mevarchim, announced in synagogue after the Torah
54
+ * reading
55
+ * - Day: everything else, including Yizkor and the Omer count
56
+ * - Midday: the deadlines for eating and burning chametz
57
+ * - Daily learning
42
58
  * - Evening: Erev holidays, Chanukah candle-lighting and Leil Selichot
59
+ * - Night: other timed events such as candle-lighting, Havdalah,
60
+ * Fast ends, and a Latest Kiddush Levana after noon
43
61
  * @internal
44
62
  */
45
63
  export declare function timeOfDay(ev: Event): number;
@@ -1,10 +1,11 @@
1
- /*! @hebcal/core v6.14.3, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.14.5, distributed under GPLv2 or later https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { months, HDate } from '@hebcal/hdate';
3
3
  import QuickLRU from 'quick-lru';
4
4
  import { flags } from './event.js';
5
5
  import { modernHolidaysForYear } from './modern.js';
6
6
  import { getSedra } from './sedra.js';
7
7
  import { holidayDesc, staticHolidays } from './staticHolidays.js';
8
+ import { TimedEvent } from './TimedEvent.js';
8
9
  import { YomKippurKatanEvent } from './YomKippurKatanEvent.js';
9
10
  import { HolidayEvent, RoshHashanaEvent, ChanukahEvent, AsaraBTevetEvent, RoshChodeshEvent } from './HolidayEvent.js';
10
11
 
@@ -54,7 +55,7 @@ function getHolidaysOnDate(date, il) {
54
55
  }
55
56
  return events.filter(ev => ev.observedIn(il));
56
57
  }
57
- const { CHAG, LIGHT_CANDLES_TZEIS, CHANUKAH_CANDLES, BEHAB, MINOR_FAST, SPECIAL_SHABBAT, MAJOR_FAST, MINOR_HOLIDAY, EREV, SHABBAT_MEVARCHIM, } = flags;
58
+ const { CHAG, LIGHT_CANDLES_TZEIS, CHANUKAH_CANDLES, BEHAB, MINOR_FAST, SPECIAL_SHABBAT, MAJOR_FAST, MINOR_HOLIDAY, EREV, } = flags;
58
59
  const SUN = 0;
59
60
  const TUE = 2;
60
61
  const THU = 4;
@@ -75,36 +76,74 @@ function addToMap(map, ...events) {
75
76
  }
76
77
  }
77
78
  /** @internal */
78
- const TIME_OF_DAY_MORNING = 0;
79
+ const TIME_OF_DAY_DAWN = 0;
79
80
  /** @internal */
80
- const TIME_OF_DAY_MEVARCHIM = 1;
81
+ const TIME_OF_DAY_MORNING = 1;
81
82
  /** @internal */
82
- const TIME_OF_DAY_DAY = 2;
83
+ const TIME_OF_DAY_MEVARCHIM = 2;
83
84
  /** @internal */
84
- const TIME_OF_DAY_EVENING = 3;
85
+ const TIME_OF_DAY_DAY = 3;
86
+ /** @internal */
87
+ const TIME_OF_DAY_MIDDAY = 4;
88
+ /** @internal */
89
+ const TIME_OF_DAY_LEARNING = 5;
90
+ /** @internal */
91
+ const TIME_OF_DAY_EVENING = 6;
92
+ /** @internal */
93
+ const TIME_OF_DAY_NIGHT = 7;
85
94
  /**
86
95
  * Approximate time of day of an event, used to order events on the same date.
87
- * - Morning: special Shabbatot (tied to the Torah or Haftarah reading), minor
88
- * fasts (which begin at dawn) and Birkat Hachamah (recited at sunrise)
89
- * - Shabbat Mevarchim, announced in synagogue after the Torah reading
90
- * - Day: everything else
96
+ * Events of equal rank keep the order in which they were created, and timed
97
+ * events of equal rank are ordered by their time.
98
+ * - Dawn: Fast begins for a minor fast, and a Latest Kiddush Levana before
99
+ * noon (which is never later than _alot hashachar_)
100
+ * - Morning: the parsha, special Shabbatot (tied to the Torah or Haftarah
101
+ * reading), minor fasts (which begin at dawn) and Birkat Hachamah
102
+ * (recited at sunrise)
103
+ * - Molad and Shabbat Mevarchim, announced in synagogue after the Torah
104
+ * reading
105
+ * - Day: everything else, including Yizkor and the Omer count
106
+ * - Midday: the deadlines for eating and burning chametz
107
+ * - Daily learning
91
108
  * - Evening: Erev holidays, Chanukah candle-lighting and Leil Selichot
109
+ * - Night: other timed events such as candle-lighting, Havdalah,
110
+ * Fast ends, and a Latest Kiddush Levana after noon
92
111
  * @internal
93
112
  */
94
113
  function timeOfDay(ev) {
95
- const mask = ev.getFlags();
114
+ if (ev instanceof TimedEvent) {
115
+ return timedEventTimeOfDay(ev);
116
+ }
96
117
  const desc = ev.getDesc();
97
- if (mask & (EREV | CHANUKAH_CANDLES) || desc === holidayDesc.LEIL_SELICHOT) {
118
+ if (ev.hasAnyFlag('EREV', 'CHANUKAH_CANDLES') || desc === holidayDesc.LEIL_SELICHOT) {
98
119
  return TIME_OF_DAY_EVENING;
99
120
  }
100
- if (mask & (SPECIAL_SHABBAT | MINOR_FAST) || desc === holidayDesc.BIRKAT_HACHAMAH) {
121
+ if (ev.hasAnyFlag('PARSHA_HASHAVUA', 'SPECIAL_SHABBAT', 'MINOR_FAST') ||
122
+ desc === holidayDesc.BIRKAT_HACHAMAH) {
101
123
  return TIME_OF_DAY_MORNING;
102
124
  }
103
- if (mask & SHABBAT_MEVARCHIM) {
125
+ if (ev.hasAnyFlag('SHABBAT_MEVARCHIM', 'MOLAD')) {
104
126
  return TIME_OF_DAY_MEVARCHIM;
105
127
  }
128
+ if (ev.hasAnyFlag('DAILY_LEARNING', 'DAF_YOMI', 'MISHNA_YOMI', 'NACH_YOMI', 'YERUSHALMI_YOMI')) {
129
+ return TIME_OF_DAY_LEARNING;
130
+ }
106
131
  return TIME_OF_DAY_DAY;
107
132
  }
133
+ function timedEventTimeOfDay(ev) {
134
+ const desc = ev.getDesc();
135
+ if (desc === holidayDesc.SOF_ZMAN_ACHILAT_CHAMETZ || desc === holidayDesc.BIUR_CHAMETZ) {
136
+ return TIME_OF_DAY_MIDDAY;
137
+ }
138
+ // A minor fast begins at dawn, but Tish'a B'Av at sunset the day before.
139
+ // Latest Kiddush Levana is either before dawn or after nightfall.
140
+ if (desc === holidayDesc.FAST_BEGINS || ev.hasFlag('KIDDUSH_LEVANA')) {
141
+ // `eventTimeStr` is 24-hour local time; some engines format midnight as 24:00
142
+ const hour = Number.parseInt(ev.eventTimeStr, 10) % 24;
143
+ return hour < 12 ? TIME_OF_DAY_DAWN : TIME_OF_DAY_NIGHT;
144
+ }
145
+ return TIME_OF_DAY_NIGHT;
146
+ }
108
147
  function addStaticHolidays(map, year) {
109
148
  for (const h of staticHolidays) {
110
149
  const hd = new HDate(h.dd, h.mm, year);
@@ -335,5 +374,5 @@ function getHolidaysForYearArray(year, il) {
335
374
  return events;
336
375
  }
337
376
 
338
- export { TIME_OF_DAY_DAY, TIME_OF_DAY_EVENING, TIME_OF_DAY_MEVARCHIM, TIME_OF_DAY_MORNING, getHolidaysForYearArray, getHolidaysForYear_, getHolidaysOnDate, timeOfDay };
377
+ export { TIME_OF_DAY_DAWN, TIME_OF_DAY_DAY, TIME_OF_DAY_EVENING, TIME_OF_DAY_LEARNING, TIME_OF_DAY_MEVARCHIM, TIME_OF_DAY_MIDDAY, TIME_OF_DAY_MORNING, TIME_OF_DAY_NIGHT, getHolidaysForYearArray, getHolidaysForYear_, getHolidaysOnDate, timeOfDay };
339
378
  //# sourceMappingURL=holidays.js.map