@hebcal/core 6.5.1 → 6.5.2

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 (118) hide show
  1. package/dist/bundle.js +5929 -5384
  2. package/dist/bundle.js.map +1 -1
  3. package/dist/bundle.min.js +17 -17
  4. package/dist/bundle.min.js.map +1 -1
  5. package/dist/esm/CalOptions.d.ts +3 -4
  6. package/dist/esm/DailyLearning.d.ts +44 -7
  7. package/dist/esm/DailyLearning.js +45 -8
  8. package/dist/esm/DailyLearning.js.map +1 -1
  9. package/dist/esm/HebrewDateEvent.js +1 -1
  10. package/dist/esm/HolidayEvent.d.ts +34 -1
  11. package/dist/esm/HolidayEvent.js +35 -2
  12. package/dist/esm/HolidayEvent.js.map +1 -1
  13. package/dist/esm/MevarchimChodeshEvent.js +1 -1
  14. package/dist/esm/ParshaEvent.js +1 -1
  15. package/dist/esm/TimedEvent.d.ts +32 -3
  16. package/dist/esm/TimedEvent.js +33 -4
  17. package/dist/esm/TimedEvent.js.map +1 -1
  18. package/dist/esm/YomKippurKatanEvent.js +1 -1
  19. package/dist/esm/ashkenazi.po.js +1 -1
  20. package/dist/esm/calendar.js +1 -1
  21. package/dist/esm/candles.d.ts +14 -1
  22. package/dist/esm/candles.js +15 -2
  23. package/dist/esm/candles.js.map +1 -1
  24. package/dist/esm/cities.json.js +1 -1
  25. package/dist/esm/event.d.ts +56 -13
  26. package/dist/esm/event.js +57 -14
  27. package/dist/esm/event.js.map +1 -1
  28. package/dist/esm/getStartAndEnd.js +10 -2
  29. package/dist/esm/getStartAndEnd.js.map +1 -1
  30. package/dist/esm/hallel.js +20 -28
  31. package/dist/esm/hallel.js.map +1 -1
  32. package/dist/esm/he-x-NoNikud.po.js +1 -1
  33. package/dist/esm/he.po.js +1 -1
  34. package/dist/esm/hebcal.d.ts +97 -19
  35. package/dist/esm/hebcal.js +102 -21
  36. package/dist/esm/hebcal.js.map +1 -1
  37. package/dist/esm/holidays.d.ts +21 -2
  38. package/dist/esm/holidays.js +22 -3
  39. package/dist/esm/holidays.js.map +1 -1
  40. package/dist/esm/index.d.ts +1 -1
  41. package/dist/esm/index.js +2 -1
  42. package/dist/esm/index.js.map +1 -1
  43. package/dist/esm/isAssurBemlacha.d.ts +24 -4
  44. package/dist/esm/isAssurBemlacha.js +25 -5
  45. package/dist/esm/isAssurBemlacha.js.map +1 -1
  46. package/dist/esm/isAveilut.d.ts +14 -3
  47. package/dist/esm/isAveilut.js +15 -4
  48. package/dist/esm/isAveilut.js.map +1 -1
  49. package/dist/esm/isFastDay.d.ts +13 -1
  50. package/dist/esm/isFastDay.js +14 -2
  51. package/dist/esm/isFastDay.js.map +1 -1
  52. package/dist/esm/locale.js +1 -1
  53. package/dist/esm/location.d.ts +96 -8
  54. package/dist/esm/location.js +101 -10
  55. package/dist/esm/location.js.map +1 -1
  56. package/dist/esm/modern.js +1 -1
  57. package/dist/esm/molad.d.ts +39 -7
  58. package/dist/esm/molad.js +40 -8
  59. package/dist/esm/molad.js.map +1 -1
  60. package/dist/esm/moladBase.js +1 -1
  61. package/dist/esm/moladDate.js +1 -1
  62. package/dist/esm/omer.d.ts +32 -4
  63. package/dist/esm/omer.js +33 -5
  64. package/dist/esm/omer.js.map +1 -1
  65. package/dist/esm/parshaName.js +1 -1
  66. package/dist/esm/parshaYear.d.ts +12 -1
  67. package/dist/esm/parshaYear.js +13 -2
  68. package/dist/esm/parshaYear.js.map +1 -1
  69. package/dist/esm/pkgVersion.d.ts +1 -1
  70. package/dist/esm/pkgVersion.js +2 -2
  71. package/dist/esm/pkgVersion.js.map +1 -1
  72. package/dist/esm/reformatTimeStr.js +1 -1
  73. package/dist/esm/sedra.d.ts +94 -14
  74. package/dist/esm/sedra.js +95 -15
  75. package/dist/esm/sedra.js.map +1 -1
  76. package/dist/esm/sefira.json.js +1 -1
  77. package/dist/esm/staticHolidays.js +1 -1
  78. package/dist/esm/tachanun.js +1 -1
  79. package/dist/esm/temporal-shim.js +1 -1
  80. package/dist/esm/zmanim.js +1 -1
  81. package/dist/src/CalOptions.d.ts +3 -4
  82. package/dist/src/DailyLearning.d.ts +44 -7
  83. package/dist/src/DailyLearning.js +44 -7
  84. package/dist/src/HolidayEvent.d.ts +34 -1
  85. package/dist/src/HolidayEvent.js +34 -1
  86. package/dist/src/TimedEvent.d.ts +32 -3
  87. package/dist/src/TimedEvent.js +32 -3
  88. package/dist/src/candles.d.ts +14 -1
  89. package/dist/src/candles.js +14 -1
  90. package/dist/src/event.d.ts +56 -13
  91. package/dist/src/event.js +56 -13
  92. package/dist/src/getStartAndEnd.js +9 -1
  93. package/dist/src/hallel.js +19 -27
  94. package/dist/src/hebcal.d.ts +97 -19
  95. package/dist/src/hebcal.js +101 -20
  96. package/dist/src/holidays.d.ts +21 -2
  97. package/dist/src/holidays.js +21 -2
  98. package/dist/src/index.d.ts +1 -1
  99. package/dist/src/index.js +1 -0
  100. package/dist/src/isAssurBemlacha.d.ts +24 -4
  101. package/dist/src/isAssurBemlacha.js +24 -4
  102. package/dist/src/isAveilut.d.ts +14 -3
  103. package/dist/src/isAveilut.js +14 -3
  104. package/dist/src/isFastDay.d.ts +13 -1
  105. package/dist/src/isFastDay.js +13 -1
  106. package/dist/src/location.d.ts +96 -8
  107. package/dist/src/location.js +100 -9
  108. package/dist/src/molad.d.ts +39 -7
  109. package/dist/src/molad.js +39 -7
  110. package/dist/src/omer.d.ts +32 -4
  111. package/dist/src/omer.js +32 -4
  112. package/dist/src/parshaYear.d.ts +12 -1
  113. package/dist/src/parshaYear.js +12 -1
  114. package/dist/src/pkgVersion.d.ts +1 -1
  115. package/dist/src/pkgVersion.js +1 -1
  116. package/dist/src/sedra.d.ts +94 -14
  117. package/dist/src/sedra.js +94 -14
  118. package/package.json +5 -5
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.5.1, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.5.2, distributed under GPLv2 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';
@@ -54,7 +54,20 @@ function makeCandleEvent(ev, hd, options, isFriday, isSaturday) {
54
54
  }
55
55
  const FAST_BEGINS = holidayDesc.FAST_BEGINS;
56
56
  const FAST_ENDS = holidayDesc.FAST_ENDS;
57
- /** A fast day also contains a start and end time */
57
+ /**
58
+ * A fast day holiday with attached start and end time events.
59
+ *
60
+ * Wraps an underlying fast-day {@link HolidayEvent} and (when computable
61
+ * for the given location) exposes a "Fast begins" and "Fast ends"
62
+ * {@link TimedEvent}. Generated by {@link HebrewCalendar.calendar} when
63
+ * `options.candlelighting` is `true` and `options.location` is provided.
64
+ *
65
+ * - Minor fasts begin at *Alot HaShachar* (16.1° below horizon in the morning)
66
+ * and end at tzeit (7.083° by default — overridable via `options.fastEndDeg`).
67
+ * - Tish'a B'Av begins at sunset on the previous day and ends at tzeit.
68
+ * - When a minor fast falls on a Friday, the end time is suppressed
69
+ * (Shabbat begins before nightfall).
70
+ */
58
71
  class FastDayEvent extends HolidayEvent {
59
72
  /** original event */
60
73
  linkedEvent;
@@ -1 +1 @@
1
- {"version":3,"file":"candles.js","sources":["../../../src/candles.ts"],"sourcesContent":["import {HDate, months} from '@hebcal/hdate';\nimport {CalOptions} from './CalOptions';\nimport {Location} from './location';\nimport {Event, flags} from './event';\nimport {ChanukahEvent, HolidayEvent} from './HolidayEvent';\nimport {Zmanim} from './zmanim';\nimport {TimedEvent, CandleLightingEvent, HavdalahEvent} from './TimedEvent';\nimport {holidayDesc as hdesc} from './staticHolidays';\n\nconst LIGHT_CANDLES = flags.LIGHT_CANDLES;\nconst LIGHT_CANDLES_TZEIS = flags.LIGHT_CANDLES_TZEIS;\n\n/**\n * @private\n */\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.getFlags() : LIGHT_CANDLES;\n if (ev !== undefined) {\n // if linked event && dow == FRI, use Candle lighting time & title\n if (!isFriday) {\n if (mask & (LIGHT_CANDLES_TZEIS | flags.CHANUKAH_CANDLES)) {\n useHavdalahOffset = true;\n } else if (mask & flags.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\nconst FAST_BEGINS = hdesc.FAST_BEGINS;\nconst FAST_ENDS = hdesc.FAST_ENDS;\n\n/** A fast day also contains a start and end time */\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.getFlags());\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 * @private\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 fastEndDeg = options.fastEndDeg;\n const useElevation = Boolean(options.useElevation);\n const zmanim = new Zmanim(location, dt, useElevation);\n let startEvent;\n let endEvent;\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 tzeit = zmanim.tzeit(fastEndDeg);\n if (!isNaN(tzeit.getTime())) {\n endEvent = makeTimedEvent(ev, tzeit, FAST_ENDS, options);\n }\n } else {\n const dawn = zmanim.alotHaShachar();\n if (!isNaN(dawn.getTime())) {\n startEvent = makeTimedEvent(ev, dawn, FAST_BEGINS, options);\n }\n if (\n dt.getDay() !== 5 &&\n !(hd.getDate() === 14 && hd.getMonth() === months.NISAN)\n ) {\n const tzeit = zmanim.tzeit(fastEndDeg);\n if (!isNaN(tzeit.getTime())) {\n endEvent = makeTimedEvent(ev, tzeit, 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\n/**\n * @private\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.getFlags(), time, location, ev, options);\n}\n\nexport class TimedChanukahEvent extends ChanukahEvent {\n eventTime: Date;\n eventTimeStr: string;\n readonly location: Location;\n constructor(ev: ChanukahEvent, eventTime: Date, location: Location) {\n super(ev.getDate(), ev.getDesc(), ev.getFlags(), 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 * @private\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';\nimport {Location} from './location';\nimport {Event, flags} from './event';\nimport {ChanukahEvent, HolidayEvent} from './HolidayEvent';\nimport {Zmanim} from './zmanim';\nimport {TimedEvent, CandleLightingEvent, HavdalahEvent} from './TimedEvent';\nimport {holidayDesc as hdesc} from './staticHolidays';\n\nconst LIGHT_CANDLES = flags.LIGHT_CANDLES;\nconst LIGHT_CANDLES_TZEIS = flags.LIGHT_CANDLES_TZEIS;\n\n/**\n * @private\n */\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.getFlags() : LIGHT_CANDLES;\n if (ev !== undefined) {\n // if linked event && dow == FRI, use Candle lighting time & title\n if (!isFriday) {\n if (mask & (LIGHT_CANDLES_TZEIS | flags.CHANUKAH_CANDLES)) {\n useHavdalahOffset = true;\n } else if (mask & flags.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\nconst FAST_BEGINS = hdesc.FAST_BEGINS;\nconst FAST_ENDS = hdesc.FAST_ENDS;\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 HebrewCalendar.calendar} when\n * `options.candlelighting` is `true` and `options.location` is provided.\n *\n * - Minor fasts begin at *Alot HaShachar* (16.1° below horizon in the morning)\n * and end at tzeit (7.083° by default — overridable via `options.fastEndDeg`).\n * - Tish'a B'Av begins at sunset on the previous day and ends at tzeit.\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.getFlags());\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 * @private\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 fastEndDeg = options.fastEndDeg;\n const useElevation = Boolean(options.useElevation);\n const zmanim = new Zmanim(location, dt, useElevation);\n let startEvent;\n let endEvent;\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 tzeit = zmanim.tzeit(fastEndDeg);\n if (!isNaN(tzeit.getTime())) {\n endEvent = makeTimedEvent(ev, tzeit, FAST_ENDS, options);\n }\n } else {\n const dawn = zmanim.alotHaShachar();\n if (!isNaN(dawn.getTime())) {\n startEvent = makeTimedEvent(ev, dawn, FAST_BEGINS, options);\n }\n if (\n dt.getDay() !== 5 &&\n !(hd.getDate() === 14 && hd.getMonth() === months.NISAN)\n ) {\n const tzeit = zmanim.tzeit(fastEndDeg);\n if (!isNaN(tzeit.getTime())) {\n endEvent = makeTimedEvent(ev, tzeit, 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\n/**\n * @private\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.getFlags(), time, location, ev, options);\n}\n\nexport class TimedChanukahEvent extends ChanukahEvent {\n eventTime: Date;\n eventTimeStr: string;\n readonly location: Location;\n constructor(ev: ChanukahEvent, eventTime: Date, location: Location) {\n super(ev.getDate(), ev.getDesc(), ev.getFlags(), 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 * @private\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.5.1, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.5.2, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  var citiesJson = ["Ashdod|IL|31.79213|34.64966|Asia/Jerusalem|27","Atlanta|US|33.749|-84.38798|America/New_York|336","Austin|US|30.26715|-97.74306|America/Chicago|165","Baghdad|IQ|33.34058|44.40088|Asia/Baghdad|41","Beer Sheva|IL|31.25181|34.7913|Asia/Jerusalem|285","Berlin|DE|52.52437|13.41053|Europe/Berlin|43","Baltimore|US|39.29038|-76.61219|America/New_York|35","Bogota|CO|4.60971|-74.08175|America/Bogota|2582","Boston|US|42.35843|-71.05977|America/New_York|38","Budapest|HU|47.49801|19.03991|Europe/Budapest|104","Buenos Aires|AR|-34.61315|-58.37723|America/Argentina/Buenos_Aires|31","Buffalo|US|42.88645|-78.87837|America/New_York|191","Chicago|US|41.85003|-87.65005|America/Chicago|180","Cincinnati|US|39.162|-84.45689|America/New_York|267","Cleveland|US|41.4995|-81.69541|America/New_York|204","Dallas|US|32.78306|-96.80667|America/Chicago|139","Denver|US|39.73915|-104.9847|America/Denver|1636","Detroit|US|42.33143|-83.04575|America/Detroit|192","Eilat|IL|29.55805|34.94821|Asia/Jerusalem|63","Gibraltar|GI|36.14474|-5.35257|Europe/Gibraltar|11","Haifa|IL|32.81841|34.9885|Asia/Jerusalem|40","Hawaii|US|21.30694|-157.85833|Pacific/Honolulu|18","Helsinki|FI|60.16952|24.93545|Europe/Helsinki|26","Houston|US|29.76328|-95.36327|America/Chicago|30","Jerusalem|IL|31.76904|35.21633|Asia/Jerusalem|786","Johannesburg|ZA|-26.20227|28.04363|Africa/Johannesburg|1767","Kiev|UA|50.45466|30.5238|Europe/Kiev|187","La Paz|BO|-16.5|-68.15|America/La_Paz|3782","Livingston|US|40.79593|-74.31487|America/New_York|98","Las Vegas|US|36.17497|-115.13722|America/Los_Angeles|613","London|GB|51.50853|-0.12574|Europe/London|25","Los Angeles|US|34.05223|-118.24368|America/Los_Angeles|96","Marseilles|FR|43.29695|5.38107|Europe/Paris|28","Miami|US|25.77427|-80.19366|America/New_York|25","Minneapolis|US|44.97997|-93.26384|America/Chicago|262","Melbourne|AU|-37.814|144.96332|Australia/Melbourne|25","Mexico City|MX|19.42847|-99.12766|America/Mexico_City|2240","Montreal|CA|45.50884|-73.58781|America/Toronto|216","Moscow|RU|55.75222|37.61556|Europe/Moscow|144","New York|US|40.71427|-74.00597|America/New_York|57","Omaha|US|41.25861|-95.93779|America/Chicago|315","Ottawa|CA|45.41117|-75.69812|America/Toronto|71","Panama City|PA|8.9936|-79.51973|America/Panama|17","Paris|FR|48.85341|2.3488|Europe/Paris|42","Pawtucket|US|41.87871|-71.38256|America/New_York|0","Petach Tikvah|IL|32.08707|34.88747|Asia/Jerusalem|54","Philadelphia|US|39.95233|-75.16379|America/New_York|8","Phoenix|US|33.44838|-112.07404|America/Phoenix|366","Pittsburgh|US|40.44062|-79.99589|America/New_York|239","Providence|US|41.82399|-71.41283|America/New_York|0","Portland|US|45.52345|-122.67621|America/Los_Angeles|15","Saint Louis|US|38.62727|-90.19789|America/Chicago|149","Saint Petersburg|RU|59.93863|30.31413|Europe/Moscow|11","San Diego|US|32.71533|-117.15726|America/Los_Angeles|20","San Francisco|US|37.77493|-122.41942|America/Los_Angeles|28","Sao Paulo|BR|-23.5475|-46.63611|America/Sao_Paulo|769","Seattle|US|47.60621|-122.33207|America/Los_Angeles|56","Sydney|AU|-33.86785|151.20732|Australia/Sydney|58","Tel Aviv|IL|32.08088|34.78057|Asia/Jerusalem|15","Tiberias|IL|32.79221|35.53124|Asia/Jerusalem|0","Toronto|CA|43.70011|-79.4163|America/Toronto|175","Vancouver|CA|49.24966|-123.11934|America/Vancouver|70","White Plains|US|41.03399|-73.76291|America/New_York|82","Washington DC|US|38.89511|-77.03637|America/New_York|6","Worcester|US|42.26259|-71.80229|America/New_York|164"];
3
3
 
4
4
  export { citiesJson as default };
@@ -70,10 +70,20 @@ export declare const flags: {
70
70
  * Represents an Event with a title, date, and flags.
71
71
  *
72
72
  * Events are used to represent holidays, candle-lighting times,
73
- * Torah readings, and more.
73
+ * Torah readings, Omer days, Hebrew dates, and more. Most concrete event
74
+ * types are subclasses (e.g. {@link HolidayEvent}, {@link TimedEvent},
75
+ * {@link ParshaEvent}, {@link OmerEvent}) and are produced by
76
+ * {@link HebrewCalendar.calendar}.
74
77
  *
75
- * To get the title of the event a language other than English
76
- * with Sephardic transliterations, use the `render()` method.
78
+ * To get the title of the event in a language other than English with
79
+ * Sephardic transliterations, use the {@link Event.render} method.
80
+ *
81
+ * @example
82
+ * import {Event, HDate, flags} from '@hebcal/core';
83
+ * const ev = new Event(new HDate(6, 'Sivan', 5749), 'Shavuot', flags.CHAG);
84
+ * ev.getDate().toString(); // '6 Sivan 5749'
85
+ * ev.getDesc(); // 'Shavuot'
86
+ * ev.render('he'); // 'שָׁבוּעוֹת'
77
87
  */
78
88
  export declare class Event {
79
89
  /** Hebrew date of this event */
@@ -132,25 +142,47 @@ export declare class Event {
132
142
  render(locale?: string): string;
133
143
  /**
134
144
  * Returns a brief (translated) description of this event.
135
- * For most events, this is the same as render(). For some events, it procudes
136
- * a shorter text (e.g. without a time or added description).
145
+ *
146
+ * For most events this is the same as {@link render}. Some subclasses
147
+ * (e.g. {@link CandleLightingEvent}, {@link HavdalahEvent},
148
+ * {@link OmerEvent}) produce shorter text without an attached time or
149
+ * extra qualifier — useful for compact UI display.
150
+ * @example
151
+ * import {CandleLightingEvent} from '@hebcal/core';
152
+ * // For a regular Event, renderBrief() == render():
153
+ * const ev = new Event(new HDate(6, 'Sivan', 5749), 'Shavuot', flags.CHAG);
154
+ * ev.renderBrief('en'); // 'Shavuot'
137
155
  * @param [locale] Optional locale name (defaults to empty locale)
138
156
  */
139
157
  renderBrief(locale?: string): string;
140
158
  /**
141
- * Optional holiday-specific Emoji or `null`.
159
+ * Returns the event's emoji character (e.g. `🕯️`, `🕎`, `🇮🇱`, `🍏🍯`),
160
+ * or `null` if no emoji is associated with this event.
161
+ * Subclasses override this to provide holiday-specific emoji.
142
162
  */
143
163
  getEmoji(): string | null;
144
164
  /**
145
- * Returns a simplified (untranslated) description for this event. For example,
146
- * the `HolidayEvent` class supports
147
- * "Erev Pesach" => "Pesach", and "Sukkot III (CH''M)" => "Sukkot".
148
- * For many holidays the basename and the event description are the same.
165
+ * Returns a simplified (untranslated) description for this event, suitable
166
+ * for grouping related events under a single name.
167
+ *
168
+ * For example, {@link HolidayEvent} strips qualifiers so that
169
+ * `"Erev Pesach"` → `"Pesach"` and `"Sukkot III (CH''M)"` → `"Sukkot"`.
170
+ * For many events the basename and the event description are identical.
171
+ * @example
172
+ * import {HolidayEvent, HDate, months, flags} from '@hebcal/core';
173
+ * const ev = new HolidayEvent(
174
+ * new HDate(14, months.NISAN, 5784), 'Erev Pesach', flags.EREV);
175
+ * ev.getDesc(); // 'Erev Pesach'
176
+ * ev.basename(); // 'Pesach'
149
177
  */
150
178
  basename(): string;
151
179
  /**
152
- * Returns a URL to hebcal.com or sefaria.org for more detail on the event.
153
- * Returns `undefined` for events with no detail page.
180
+ * Returns a URL to hebcal.com or sefaria.org for more detail on the event,
181
+ * or `undefined` for events with no detail page.
182
+ *
183
+ * Subclasses such as {@link HolidayEvent}, {@link ChanukahEvent},
184
+ * {@link AsaraBTevetEvent}, {@link ParshaEvent}, and {@link OmerEvent}
185
+ * override this with their own URL patterns.
154
186
  */
155
187
  url(): string | undefined;
156
188
  /**
@@ -184,7 +216,18 @@ export declare class Event {
184
216
  */
185
217
  observedIn(il: boolean): boolean;
186
218
  /**
187
- * Returns a list of event categories
219
+ * Returns an array of category strings classifying this event, derived
220
+ * from its {@link flags} bitmask. The first element is the broad category
221
+ * (e.g. `'holiday'`, `'roshchodesh'`, `'parashat'`, `'omer'`), followed
222
+ * by zero or more refinements (e.g. `'major'`, `'minor'`, `'fast'`).
223
+ *
224
+ * Returns `['unknown']` if no flag maps to a known category.
225
+ * @example
226
+ * import {Event, HDate, flags} from '@hebcal/core';
227
+ * new Event(new HDate(10, 'Tishrei', 5784), 'Yom Kippur', flags.MAJOR_FAST)
228
+ * .getCategories(); // ['holiday', 'major', 'fast']
229
+ * new Event(new HDate(1, 'Shvat', 5784), 'Rosh Chodesh Sh\'vat', flags.ROSH_CHODESH)
230
+ * .getCategories(); // ['roshchodesh']
188
231
  */
189
232
  getCategories(): string[];
190
233
  }
package/dist/esm/event.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.5.1, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.5.2, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { HDate, Locale } from '@hebcal/hdate';
3
3
  import './locale.js';
4
4
 
@@ -88,10 +88,20 @@ const flagToCategory = [
88
88
  * Represents an Event with a title, date, and flags.
89
89
  *
90
90
  * Events are used to represent holidays, candle-lighting times,
91
- * Torah readings, and more.
91
+ * Torah readings, Omer days, Hebrew dates, and more. Most concrete event
92
+ * types are subclasses (e.g. {@link HolidayEvent}, {@link TimedEvent},
93
+ * {@link ParshaEvent}, {@link OmerEvent}) and are produced by
94
+ * {@link HebrewCalendar.calendar}.
92
95
  *
93
- * To get the title of the event a language other than English
94
- * with Sephardic transliterations, use the `render()` method.
96
+ * To get the title of the event in a language other than English with
97
+ * Sephardic transliterations, use the {@link Event.render} method.
98
+ *
99
+ * @example
100
+ * import {Event, HDate, flags} from '@hebcal/core';
101
+ * const ev = new Event(new HDate(6, 'Sivan', 5749), 'Shavuot', flags.CHAG);
102
+ * ev.getDate().toString(); // '6 Sivan 5749'
103
+ * ev.getDesc(); // 'Shavuot'
104
+ * ev.render('he'); // 'שָׁבוּעוֹת'
95
105
  */
96
106
  class Event {
97
107
  /** Hebrew date of this event */
@@ -173,31 +183,53 @@ class Event {
173
183
  }
174
184
  /**
175
185
  * Returns a brief (translated) description of this event.
176
- * For most events, this is the same as render(). For some events, it procudes
177
- * a shorter text (e.g. without a time or added description).
186
+ *
187
+ * For most events this is the same as {@link render}. Some subclasses
188
+ * (e.g. {@link CandleLightingEvent}, {@link HavdalahEvent},
189
+ * {@link OmerEvent}) produce shorter text without an attached time or
190
+ * extra qualifier — useful for compact UI display.
191
+ * @example
192
+ * import {CandleLightingEvent} from '@hebcal/core';
193
+ * // For a regular Event, renderBrief() == render():
194
+ * const ev = new Event(new HDate(6, 'Sivan', 5749), 'Shavuot', flags.CHAG);
195
+ * ev.renderBrief('en'); // 'Shavuot'
178
196
  * @param [locale] Optional locale name (defaults to empty locale)
179
197
  */
180
198
  renderBrief(locale) {
181
199
  return this.render(locale);
182
200
  }
183
201
  /**
184
- * Optional holiday-specific Emoji or `null`.
202
+ * Returns the event's emoji character (e.g. `🕯️`, `🕎`, `🇮🇱`, `🍏🍯`),
203
+ * or `null` if no emoji is associated with this event.
204
+ * Subclasses override this to provide holiday-specific emoji.
185
205
  */
186
206
  getEmoji() {
187
207
  return this.emoji || null;
188
208
  }
189
209
  /**
190
- * Returns a simplified (untranslated) description for this event. For example,
191
- * the `HolidayEvent` class supports
192
- * "Erev Pesach" => "Pesach", and "Sukkot III (CH''M)" => "Sukkot".
193
- * For many holidays the basename and the event description are the same.
210
+ * Returns a simplified (untranslated) description for this event, suitable
211
+ * for grouping related events under a single name.
212
+ *
213
+ * For example, {@link HolidayEvent} strips qualifiers so that
214
+ * `"Erev Pesach"` → `"Pesach"` and `"Sukkot III (CH''M)"` → `"Sukkot"`.
215
+ * For many events the basename and the event description are identical.
216
+ * @example
217
+ * import {HolidayEvent, HDate, months, flags} from '@hebcal/core';
218
+ * const ev = new HolidayEvent(
219
+ * new HDate(14, months.NISAN, 5784), 'Erev Pesach', flags.EREV);
220
+ * ev.getDesc(); // 'Erev Pesach'
221
+ * ev.basename(); // 'Pesach'
194
222
  */
195
223
  basename() {
196
224
  return this.getDesc();
197
225
  }
198
226
  /**
199
- * Returns a URL to hebcal.com or sefaria.org for more detail on the event.
200
- * Returns `undefined` for events with no detail page.
227
+ * Returns a URL to hebcal.com or sefaria.org for more detail on the event,
228
+ * or `undefined` for events with no detail page.
229
+ *
230
+ * Subclasses such as {@link HolidayEvent}, {@link ChanukahEvent},
231
+ * {@link AsaraBTevetEvent}, {@link ParshaEvent}, and {@link OmerEvent}
232
+ * override this with their own URL patterns.
201
233
  */
202
234
  url() {
203
235
  return undefined;
@@ -239,7 +271,18 @@ class Event {
239
271
  return il ? this.observedInIsrael() : this.observedInDiaspora();
240
272
  }
241
273
  /**
242
- * Returns a list of event categories
274
+ * Returns an array of category strings classifying this event, derived
275
+ * from its {@link flags} bitmask. The first element is the broad category
276
+ * (e.g. `'holiday'`, `'roshchodesh'`, `'parashat'`, `'omer'`), followed
277
+ * by zero or more refinements (e.g. `'major'`, `'minor'`, `'fast'`).
278
+ *
279
+ * Returns `['unknown']` if no flag maps to a known category.
280
+ * @example
281
+ * import {Event, HDate, flags} from '@hebcal/core';
282
+ * new Event(new HDate(10, 'Tishrei', 5784), 'Yom Kippur', flags.MAJOR_FAST)
283
+ * .getCategories(); // ['holiday', 'major', 'fast']
284
+ * new Event(new HDate(1, 'Shvat', 5784), 'Rosh Chodesh Sh\'vat', flags.ROSH_CHODESH)
285
+ * .getCategories(); // ['roshchodesh']
243
286
  */
244
287
  getCategories() {
245
288
  const mask = this.getFlags();
@@ -1 +1 @@
1
- {"version":3,"file":"event.js","sources":["../../../src/event.ts"],"sourcesContent":["import {HDate, Locale} from '@hebcal/hdate';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/**\n * Holiday flags for Event. These flags are typically\n * combined using bitwise arithmetic to form a mask.\n * @readonly\n * @enum {number}\n */\nexport const flags = {\n /** Chag, yontiff, yom tov */\n CHAG: 0x000001,\n /** Light candles 18 minutes before sundown */\n LIGHT_CANDLES: 0x000002,\n /** End of holiday (end of Yom Tov) */\n YOM_TOV_ENDS: 0x000004,\n /** Observed only in the Diaspora (chutz l'aretz) */\n CHUL_ONLY: 0x000008,\n /** Observed only in Israel */\n IL_ONLY: 0x000010,\n /** Light candles in the evening at Tzeit time (3 small stars) */\n LIGHT_CANDLES_TZEIS: 0x000020,\n /** Candle-lighting for Chanukah */\n CHANUKAH_CANDLES: 0x000040,\n /** Rosh Chodesh, beginning of a new Hebrew month */\n ROSH_CHODESH: 0x000080,\n /** Minor fasts like Tzom Tammuz, Ta'anit Esther, ... */\n MINOR_FAST: 0x000100,\n /** Shabbat Shekalim, Zachor, ... */\n SPECIAL_SHABBAT: 0x000200,\n /** Weekly sedrot on Saturdays */\n PARSHA_HASHAVUA: 0x000400,\n /** Daily page of Talmud (Bavli) */\n DAF_YOMI: 0x000800,\n /** Days of the Omer */\n OMER_COUNT: 0x001000,\n /** Yom HaShoah, Yom HaAtzma'ut, ... */\n MODERN_HOLIDAY: 0x002000,\n /** Yom Kippur and Tish'a B'Av */\n MAJOR_FAST: 0x004000,\n /** On the Saturday before Rosh Chodesh */\n SHABBAT_MEVARCHIM: 0x008000,\n /** Molad */\n MOLAD: 0x010000,\n /** Yahrzeit or Hebrew Anniversary */\n USER_EVENT: 0x020000,\n /** Daily Hebrew date (\"11th of Sivan, 5780\") */\n HEBREW_DATE: 0x040000,\n /** A holiday that's not major, modern, rosh chodesh, or a fast day */\n MINOR_HOLIDAY: 0x080000,\n /** Evening before a major or minor holiday */\n EREV: 0x100000,\n /** Chol haMoed, intermediate days of Pesach or Sukkot */\n CHOL_HAMOED: 0x200000,\n /** Mishna Yomi */\n MISHNA_YOMI: 0x400000,\n /** Yom Kippur Katan, minor day of atonement on the day preceeding each Rosh Chodesh */\n YOM_KIPPUR_KATAN: 0x800000,\n /** Daily page of Jerusalem Talmud (Yerushalmi) */\n YERUSHALMI_YOMI: 0x1000000,\n /** Nach Yomi */\n NACH_YOMI: 0x2000000,\n /** Daily Learning */\n DAILY_LEARNING: 0x4000000,\n /** Yizkor */\n YIZKOR: 0x8000000,\n /** BeHaB fast days on Monday, Thursday and Monday after Pesach and Sukkot */\n BEHAB: 0x10000000,\n} as const;\n\nconst flagToCategory = [\n [flags.MAJOR_FAST, 'holiday', 'major', 'fast'],\n [flags.CHANUKAH_CANDLES, 'holiday', 'minor'],\n [flags.HEBREW_DATE, 'hebdate'],\n [flags.MINOR_FAST, 'holiday', 'fast'],\n [flags.MINOR_HOLIDAY, 'holiday', 'minor'],\n [flags.MODERN_HOLIDAY, 'holiday', 'modern'],\n [flags.MOLAD, 'molad'],\n [flags.OMER_COUNT, 'omer'],\n [flags.PARSHA_HASHAVUA, 'parashat'], // backwards-compat\n [flags.ROSH_CHODESH, 'roshchodesh'],\n [flags.SHABBAT_MEVARCHIM, 'mevarchim'],\n [flags.SPECIAL_SHABBAT, 'holiday', 'shabbat'],\n [flags.USER_EVENT, 'user'],\n [flags.YIZKOR, 'yizkor'],\n] as const;\n\n/**\n * Represents an Event with a title, date, and flags.\n *\n * Events are used to represent holidays, candle-lighting times,\n * Torah readings, and more.\n *\n * To get the title of the event a language other than English\n * with Sephardic transliterations, use the `render()` method.\n */\nexport class Event {\n /** Hebrew date of this event */\n readonly date: HDate;\n /**\n * Untranslated title of this event. Note that these description\n * strings are always in English and will remain stable across releases.\n * To get the title of the event in another language, use the\n * `render()` method.\n */\n readonly desc: string;\n /** Bitmask of optional event flags. See {@link flags} */\n readonly mask: number;\n /** Optional emoji character such as ✡️, 🕯️, 🕎, 🕍, 🌒 */\n emoji?: string;\n /** Optional longer description or memo text */\n memo?: string;\n /** Alarms are used by iCalendar feeds */\n alarm?: Date | string | boolean;\n /**\n * Constructs Event\n * @param date Hebrew date event occurs\n * @param desc Description (not translated)\n * @param [mask=0] optional bitmask of holiday flags (see {@link flags})\n * @param [attrs={}] optional additional attributes (e.g. `eventTimeStr`, `cholHaMoedDay`)\n */\n constructor(date: HDate, desc: string, mask = 0, attrs?: object) {\n if (!HDate.isHDate(date)) {\n throw new TypeError(`Invalid Event date: ${date}`);\n } else if (typeof desc !== 'string') {\n throw new TypeError(`Invalid Event description: ${desc}`);\n }\n this.date = date;\n this.desc = desc;\n this.mask = +mask;\n if (typeof attrs === 'object' && attrs !== null) {\n Object.assign(this, attrs);\n }\n }\n /**\n * Hebrew date of this event\n */\n getDate(): HDate {\n return this.date;\n }\n /**\n * Gregorian date of this event\n */\n greg(): Date {\n return this.date.greg();\n }\n /**\n * Untranslated title of this event. Note that these description\n * strings are always in English and will remain stable across releases.\n * To get the title of the event in another language, use the\n * `render()` method.\n */\n getDesc(): string {\n return this.desc;\n }\n /**\n * Bitmask of optional event flags. See {@link flags}\n */\n getFlags(): number {\n return this.mask;\n }\n /**\n * Returns (translated) description of this event\n * @example\n * const ev = new Event(new HDate(6, 'Sivan', 5749), 'Shavuot', flags.CHAG);\n * ev.render('en'); // 'Shavuot'\n * ev.render('he'); // 'שָׁבוּעוֹת'\n * ev.render('ashkenazi'); // 'Shavuos'\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n return Locale.gettext(this.desc, locale);\n }\n /**\n * Returns a brief (translated) description of this event.\n * For most events, this is the same as render(). For some events, it procudes\n * a shorter text (e.g. without a time or added description).\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n renderBrief(locale?: string): string {\n return this.render(locale);\n }\n /**\n * Optional holiday-specific Emoji or `null`.\n */\n getEmoji(): string | null {\n return this.emoji || null;\n }\n /**\n * Returns a simplified (untranslated) description for this event. For example,\n * the `HolidayEvent` class supports\n * \"Erev Pesach\" => \"Pesach\", and \"Sukkot III (CH''M)\" => \"Sukkot\".\n * For many holidays the basename and the event description are the same.\n */\n basename(): string {\n return this.getDesc();\n }\n /**\n * Returns a URL to hebcal.com or sefaria.org for more detail on the event.\n * Returns `undefined` for events with no detail page.\n */\n url(): string | undefined {\n return undefined;\n }\n /**\n * Is this event observed in Israel?\n * @example\n * const ev1 = new Event(new HDate(7, 'Sivan', 5749), 'Shavuot II', flags.CHAG | flags.CHUL_ONLY);\n * ev1.observedInIsrael(); // false\n * const ev2 = new Event(new HDate(26, 'Kislev', 5749), 'Chanukah: 3 Candles', 0);\n * ev2.observedInIsrael(); // true\n */\n observedInIsrael(): boolean {\n return !(this.mask & flags.CHUL_ONLY);\n }\n /**\n * Is this event observed in the Diaspora?\n * @example\n * const ev1 = new Event(new HDate(7, 'Sivan', 5749), 'Shavuot II', flags.CHAG | flags.CHUL_ONLY);\n * ev1.observedInDiaspora(); // true\n * const ev2 = new Event(new HDate(26, 'Kislev', 5749), 'Chanukah: 3 Candles', 0);\n * ev2.observedInDiaspora(); // true\n */\n observedInDiaspora(): boolean {\n return !(this.mask & flags.IL_ONLY);\n }\n /**\n * Is this event observed in Israel/Diaspora?\n * @example\n * const ev1 = new Event(new HDate(7, 'Sivan', 5749), 'Shavuot II', flags.CHAG | flags.CHUL_ONLY);\n * ev1.observedIn(false); // true\n * ev1.observedIn(true); // false\n * const ev2 = new Event(new HDate(26, 'Kislev', 5749), 'Chanukah: 3 Candles', 0);\n * ev2.observedIn(false); // true\n * ev2.observedIn(true); // true\n * @param il\n */\n observedIn(il: boolean): boolean {\n return il ? this.observedInIsrael() : this.observedInDiaspora();\n }\n /**\n * Returns a list of event categories\n */\n getCategories(): string[] {\n const mask = this.getFlags();\n for (const attrs of flagToCategory) {\n const attr0 = attrs[0] as number;\n if (mask & attr0) {\n return attrs.slice(1) as string[];\n }\n }\n return ['unknown'];\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event.js","sources":["../../../src/event.ts"],"sourcesContent":["import {HDate, Locale} from '@hebcal/hdate';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/**\n * Holiday flags for Event. These flags are typically\n * combined using bitwise arithmetic to form a mask.\n * @readonly\n * @enum {number}\n */\nexport const flags = {\n /** Chag, yontiff, yom tov */\n CHAG: 0x000001,\n /** Light candles 18 minutes before sundown */\n LIGHT_CANDLES: 0x000002,\n /** End of holiday (end of Yom Tov) */\n YOM_TOV_ENDS: 0x000004,\n /** Observed only in the Diaspora (chutz l'aretz) */\n CHUL_ONLY: 0x000008,\n /** Observed only in Israel */\n IL_ONLY: 0x000010,\n /** Light candles in the evening at Tzeit time (3 small stars) */\n LIGHT_CANDLES_TZEIS: 0x000020,\n /** Candle-lighting for Chanukah */\n CHANUKAH_CANDLES: 0x000040,\n /** Rosh Chodesh, beginning of a new Hebrew month */\n ROSH_CHODESH: 0x000080,\n /** Minor fasts like Tzom Tammuz, Ta'anit Esther, ... */\n MINOR_FAST: 0x000100,\n /** Shabbat Shekalim, Zachor, ... */\n SPECIAL_SHABBAT: 0x000200,\n /** Weekly sedrot on Saturdays */\n PARSHA_HASHAVUA: 0x000400,\n /** Daily page of Talmud (Bavli) */\n DAF_YOMI: 0x000800,\n /** Days of the Omer */\n OMER_COUNT: 0x001000,\n /** Yom HaShoah, Yom HaAtzma'ut, ... */\n MODERN_HOLIDAY: 0x002000,\n /** Yom Kippur and Tish'a B'Av */\n MAJOR_FAST: 0x004000,\n /** On the Saturday before Rosh Chodesh */\n SHABBAT_MEVARCHIM: 0x008000,\n /** Molad */\n MOLAD: 0x010000,\n /** Yahrzeit or Hebrew Anniversary */\n USER_EVENT: 0x020000,\n /** Daily Hebrew date (\"11th of Sivan, 5780\") */\n HEBREW_DATE: 0x040000,\n /** A holiday that's not major, modern, rosh chodesh, or a fast day */\n MINOR_HOLIDAY: 0x080000,\n /** Evening before a major or minor holiday */\n EREV: 0x100000,\n /** Chol haMoed, intermediate days of Pesach or Sukkot */\n CHOL_HAMOED: 0x200000,\n /** Mishna Yomi */\n MISHNA_YOMI: 0x400000,\n /** Yom Kippur Katan, minor day of atonement on the day preceeding each Rosh Chodesh */\n YOM_KIPPUR_KATAN: 0x800000,\n /** Daily page of Jerusalem Talmud (Yerushalmi) */\n YERUSHALMI_YOMI: 0x1000000,\n /** Nach Yomi */\n NACH_YOMI: 0x2000000,\n /** Daily Learning */\n DAILY_LEARNING: 0x4000000,\n /** Yizkor */\n YIZKOR: 0x8000000,\n /** BeHaB fast days on Monday, Thursday and Monday after Pesach and Sukkot */\n BEHAB: 0x10000000,\n} as const;\n\nconst flagToCategory = [\n [flags.MAJOR_FAST, 'holiday', 'major', 'fast'],\n [flags.CHANUKAH_CANDLES, 'holiday', 'minor'],\n [flags.HEBREW_DATE, 'hebdate'],\n [flags.MINOR_FAST, 'holiday', 'fast'],\n [flags.MINOR_HOLIDAY, 'holiday', 'minor'],\n [flags.MODERN_HOLIDAY, 'holiday', 'modern'],\n [flags.MOLAD, 'molad'],\n [flags.OMER_COUNT, 'omer'],\n [flags.PARSHA_HASHAVUA, 'parashat'], // backwards-compat\n [flags.ROSH_CHODESH, 'roshchodesh'],\n [flags.SHABBAT_MEVARCHIM, 'mevarchim'],\n [flags.SPECIAL_SHABBAT, 'holiday', 'shabbat'],\n [flags.USER_EVENT, 'user'],\n [flags.YIZKOR, 'yizkor'],\n] as const;\n\n/**\n * Represents an Event with a title, date, and flags.\n *\n * Events are used to represent holidays, candle-lighting times,\n * Torah readings, Omer days, Hebrew dates, and more. Most concrete event\n * types are subclasses (e.g. {@link HolidayEvent}, {@link TimedEvent},\n * {@link ParshaEvent}, {@link OmerEvent}) and are produced by\n * {@link HebrewCalendar.calendar}.\n *\n * To get the title of the event in a language other than English with\n * Sephardic transliterations, use the {@link Event.render} method.\n *\n * @example\n * import {Event, HDate, flags} from '@hebcal/core';\n * const ev = new Event(new HDate(6, 'Sivan', 5749), 'Shavuot', flags.CHAG);\n * ev.getDate().toString(); // '6 Sivan 5749'\n * ev.getDesc(); // 'Shavuot'\n * ev.render('he'); // 'שָׁבוּעוֹת'\n */\nexport class Event {\n /** Hebrew date of this event */\n readonly date: HDate;\n /**\n * Untranslated title of this event. Note that these description\n * strings are always in English and will remain stable across releases.\n * To get the title of the event in another language, use the\n * `render()` method.\n */\n readonly desc: string;\n /** Bitmask of optional event flags. See {@link flags} */\n readonly mask: number;\n /** Optional emoji character such as ✡️, 🕯️, 🕎, 🕍, 🌒 */\n emoji?: string;\n /** Optional longer description or memo text */\n memo?: string;\n /** Alarms are used by iCalendar feeds */\n alarm?: Date | string | boolean;\n /**\n * Constructs Event\n * @param date Hebrew date event occurs\n * @param desc Description (not translated)\n * @param [mask=0] optional bitmask of holiday flags (see {@link flags})\n * @param [attrs={}] optional additional attributes (e.g. `eventTimeStr`, `cholHaMoedDay`)\n */\n constructor(date: HDate, desc: string, mask = 0, attrs?: object) {\n if (!HDate.isHDate(date)) {\n throw new TypeError(`Invalid Event date: ${date}`);\n } else if (typeof desc !== 'string') {\n throw new TypeError(`Invalid Event description: ${desc}`);\n }\n this.date = date;\n this.desc = desc;\n this.mask = +mask;\n if (typeof attrs === 'object' && attrs !== null) {\n Object.assign(this, attrs);\n }\n }\n /**\n * Hebrew date of this event\n */\n getDate(): HDate {\n return this.date;\n }\n /**\n * Gregorian date of this event\n */\n greg(): Date {\n return this.date.greg();\n }\n /**\n * Untranslated title of this event. Note that these description\n * strings are always in English and will remain stable across releases.\n * To get the title of the event in another language, use the\n * `render()` method.\n */\n getDesc(): string {\n return this.desc;\n }\n /**\n * Bitmask of optional event flags. See {@link flags}\n */\n getFlags(): number {\n return this.mask;\n }\n /**\n * Returns (translated) description of this event\n * @example\n * const ev = new Event(new HDate(6, 'Sivan', 5749), 'Shavuot', flags.CHAG);\n * ev.render('en'); // 'Shavuot'\n * ev.render('he'); // 'שָׁבוּעוֹת'\n * ev.render('ashkenazi'); // 'Shavuos'\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n return Locale.gettext(this.desc, locale);\n }\n /**\n * Returns a brief (translated) description of this event.\n *\n * For most events this is the same as {@link render}. Some subclasses\n * (e.g. {@link CandleLightingEvent}, {@link HavdalahEvent},\n * {@link OmerEvent}) produce shorter text without an attached time or\n * extra qualifier — useful for compact UI display.\n * @example\n * import {CandleLightingEvent} from '@hebcal/core';\n * // For a regular Event, renderBrief() == render():\n * const ev = new Event(new HDate(6, 'Sivan', 5749), 'Shavuot', flags.CHAG);\n * ev.renderBrief('en'); // 'Shavuot'\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n renderBrief(locale?: string): string {\n return this.render(locale);\n }\n /**\n * Returns the event's emoji character (e.g. `🕯️`, `🕎`, `🇮🇱`, `🍏🍯`),\n * or `null` if no emoji is associated with this event.\n * Subclasses override this to provide holiday-specific emoji.\n */\n getEmoji(): string | null {\n return this.emoji || null;\n }\n /**\n * Returns a simplified (untranslated) description for this event, suitable\n * for grouping related events under a single name.\n *\n * For example, {@link HolidayEvent} strips qualifiers so that\n * `\"Erev Pesach\"` → `\"Pesach\"` and `\"Sukkot III (CH''M)\"` → `\"Sukkot\"`.\n * For many events the basename and the event description are identical.\n * @example\n * import {HolidayEvent, HDate, months, flags} from '@hebcal/core';\n * const ev = new HolidayEvent(\n * new HDate(14, months.NISAN, 5784), 'Erev Pesach', flags.EREV);\n * ev.getDesc(); // 'Erev Pesach'\n * ev.basename(); // 'Pesach'\n */\n basename(): string {\n return this.getDesc();\n }\n /**\n * Returns a URL to hebcal.com or sefaria.org for more detail on the event,\n * or `undefined` for events with no detail page.\n *\n * Subclasses such as {@link HolidayEvent}, {@link ChanukahEvent},\n * {@link AsaraBTevetEvent}, {@link ParshaEvent}, and {@link OmerEvent}\n * override this with their own URL patterns.\n */\n url(): string | undefined {\n return undefined;\n }\n /**\n * Is this event observed in Israel?\n * @example\n * const ev1 = new Event(new HDate(7, 'Sivan', 5749), 'Shavuot II', flags.CHAG | flags.CHUL_ONLY);\n * ev1.observedInIsrael(); // false\n * const ev2 = new Event(new HDate(26, 'Kislev', 5749), 'Chanukah: 3 Candles', 0);\n * ev2.observedInIsrael(); // true\n */\n observedInIsrael(): boolean {\n return !(this.mask & flags.CHUL_ONLY);\n }\n /**\n * Is this event observed in the Diaspora?\n * @example\n * const ev1 = new Event(new HDate(7, 'Sivan', 5749), 'Shavuot II', flags.CHAG | flags.CHUL_ONLY);\n * ev1.observedInDiaspora(); // true\n * const ev2 = new Event(new HDate(26, 'Kislev', 5749), 'Chanukah: 3 Candles', 0);\n * ev2.observedInDiaspora(); // true\n */\n observedInDiaspora(): boolean {\n return !(this.mask & flags.IL_ONLY);\n }\n /**\n * Is this event observed in Israel/Diaspora?\n * @example\n * const ev1 = new Event(new HDate(7, 'Sivan', 5749), 'Shavuot II', flags.CHAG | flags.CHUL_ONLY);\n * ev1.observedIn(false); // true\n * ev1.observedIn(true); // false\n * const ev2 = new Event(new HDate(26, 'Kislev', 5749), 'Chanukah: 3 Candles', 0);\n * ev2.observedIn(false); // true\n * ev2.observedIn(true); // true\n * @param il\n */\n observedIn(il: boolean): boolean {\n return il ? this.observedInIsrael() : this.observedInDiaspora();\n }\n /**\n * Returns an array of category strings classifying this event, derived\n * from its {@link flags} bitmask. The first element is the broad category\n * (e.g. `'holiday'`, `'roshchodesh'`, `'parashat'`, `'omer'`), followed\n * by zero or more refinements (e.g. `'major'`, `'minor'`, `'fast'`).\n *\n * Returns `['unknown']` if no flag maps to a known category.\n * @example\n * import {Event, HDate, flags} from '@hebcal/core';\n * new Event(new HDate(10, 'Tishrei', 5784), 'Yom Kippur', flags.MAJOR_FAST)\n * .getCategories(); // ['holiday', 'major', 'fast']\n * new Event(new HDate(1, 'Shvat', 5784), 'Rosh Chodesh Sh\\'vat', flags.ROSH_CHODESH)\n * .getCategories(); // ['roshchodesh']\n */\n getCategories(): string[] {\n const mask = this.getFlags();\n for (const attrs of flagToCategory) {\n const attr0 = attrs[0] as number;\n if (mask & attr0) {\n return attrs.slice(1) as string[];\n }\n }\n return ['unknown'];\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.5.1, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.5.2, distributed under GPLv2 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.TISHREI;
@@ -23,6 +23,7 @@ function getYear(options) {
23
23
  ? new HDate().getFullYear()
24
24
  : new Date().getFullYear();
25
25
  }
26
+ const MAX_NUM_YEARS = 2000;
26
27
  /**
27
28
  * Parse options object to determine start & end days
28
29
  * @private
@@ -32,7 +33,11 @@ function getStartAndEnd(options) {
32
33
  throw new TypeError('Both options.start and options.end are required');
33
34
  }
34
35
  else if (options.start && options.end) {
35
- return [getAbs(options.start), getAbs(options.end)];
36
+ const start = getAbs(options.start), end = getAbs(options.end);
37
+ if (end - start > 365 * MAX_NUM_YEARS) {
38
+ throw new RangeError(`Date range exceeds ${MAX_NUM_YEARS} years`);
39
+ }
40
+ return [start, end];
36
41
  }
37
42
  const isHebrewYear = Boolean(options.isHebrewYear);
38
43
  const theYear = getYear(options);
@@ -44,6 +49,9 @@ function getStartAndEnd(options) {
44
49
  }
45
50
  const theMonth = getMonth(options);
46
51
  const numYears = Number(options.numYears) || 1;
52
+ if (numYears > MAX_NUM_YEARS) {
53
+ throw new RangeError(`options.numYears exceeds ${MAX_NUM_YEARS}`);
54
+ }
47
55
  if (isHebrewYear) {
48
56
  return startEndHebrew(theMonth, theYear, numYears);
49
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getStartAndEnd.js","sources":["../../../src/getStartAndEnd.ts"],"sourcesContent":["import {greg2abs, isDate, daysInGregMonth, HDate, months} from '@hebcal/hdate';\nimport {CalOptions} from './CalOptions';\n\nconst TISHREI = months.TISHREI;\n\n/**\n * Gets the R.D. days for a number, Date, or HDate\n * @private\n */\nfunction getAbs(d: Date | HDate | number): number {\n if (typeof d === 'number') return d;\n if (isDate(d)) return greg2abs(d as Date);\n if (HDate.isHDate(d)) return (d as HDate).abs();\n throw new TypeError(`Invalid date type: ${d}`);\n}\n\nfunction getYear(options: CalOptions): number {\n if (options.year !== undefined) {\n return Number(options.year);\n }\n return options.isHebrewYear\n ? new HDate().getFullYear()\n : new Date().getFullYear();\n}\n\n/**\n * Parse options object to determine start & end days\n * @private\n */\nexport function getStartAndEnd(options: CalOptions): number[] {\n if ((options.start && !options.end) || (options.end && !options.start)) {\n throw new TypeError('Both options.start and options.end are required');\n } else if (options.start && options.end) {\n return [getAbs(options.start), getAbs(options.end)];\n }\n const isHebrewYear = Boolean(options.isHebrewYear);\n const theYear = getYear(options);\n if (isNaN(theYear)) {\n throw new RangeError(`Invalid year ${options.year}`);\n } else if (isHebrewYear && theYear < 1) {\n throw new RangeError(`Invalid Hebrew year ${theYear}`);\n }\n const theMonth = getMonth(options);\n const numYears = Number(options.numYears) || 1;\n if (isHebrewYear) {\n return startEndHebrew(theMonth, theYear, numYears);\n } else {\n return startEndGregorian(theMonth, theYear, numYears);\n }\n}\n\nfunction getMonth(options: CalOptions): number {\n if (options.month) {\n if (options.isHebrewYear) {\n return HDate.monthNum(options.month);\n } else if (typeof options.month === 'number') {\n return options.month;\n }\n }\n return NaN;\n}\n\nfunction startEndGregorian(\n theMonth: number,\n theYear: number,\n numYears: number\n): number[] {\n const gregMonth = theMonth ? theMonth - 1 : 0;\n const startGreg = new Date(theYear, gregMonth, 1);\n if (theYear < 100) {\n startGreg.setFullYear(theYear);\n }\n const startAbs = greg2abs(startGreg);\n let endAbs;\n if (theMonth) {\n endAbs = startAbs + daysInGregMonth(theMonth, theYear) - 1;\n } else {\n const endYear = theYear + numYears;\n const endGreg = new Date(endYear, 0, 1);\n if (endYear < 100) {\n endGreg.setFullYear(endYear);\n }\n endAbs = greg2abs(endGreg) - 1;\n }\n return [startAbs, endAbs];\n}\n\nfunction startEndHebrew(\n theMonth: number,\n theYear: number,\n numYears: number\n): number[] {\n const startDate = new HDate(1, theMonth || TISHREI, theYear);\n let startAbs = startDate.abs();\n const endAbs = theMonth\n ? startAbs + startDate.daysInMonth()\n : new HDate(1, TISHREI, theYear + numYears).abs() - 1;\n // for full Hebrew year, start on Erev Rosh Hashana which\n // is technically in the previous Hebrew year\n // (but conveniently lets us get candle-lighting time for Erev)\n if (!theMonth && theYear > 1) {\n startAbs--;\n }\n return [startAbs, endAbs];\n}\n"],"names":[],"mappings":";;;AAGA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;AAE9B;;;AAGG;AACH,SAAS,MAAM,CAAC,CAAwB,EAAA;IACtC,IAAI,OAAO,CAAC,KAAK,QAAQ;AAAE,QAAA,OAAO,CAAC;IACnC,IAAI,MAAM,CAAC,CAAC,CAAC;AAAE,QAAA,OAAO,QAAQ,CAAC,CAAS,CAAC;AACzC,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAAE,QAAA,OAAQ,CAAW,CAAC,GAAG,EAAE;AAC/C,IAAA,MAAM,IAAI,SAAS,CAAC,sBAAsB,CAAC,CAAA,CAAE,CAAC;AAChD;AAEA,SAAS,OAAO,CAAC,OAAmB,EAAA;AAClC,IAAA,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;AAC9B,QAAA,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7B;IACA,OAAO,OAAO,CAAC;AACb,UAAE,IAAI,KAAK,EAAE,CAAC,WAAW;AACzB,UAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC9B;AAEA;;;AAGG;AACG,SAAU,cAAc,CAAC,OAAmB,EAAA;IAChD,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACtE,QAAA,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC;IACxE;SAAO,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,EAAE;AACvC,QAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrD;IACA,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;AAClD,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAChC,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;QAClB,MAAM,IAAI,UAAU,CAAC,CAAA,aAAA,EAAgB,OAAO,CAAC,IAAI,CAAA,CAAE,CAAC;IACtD;AAAO,SAAA,IAAI,YAAY,IAAI,OAAO,GAAG,CAAC,EAAE;AACtC,QAAA,MAAM,IAAI,UAAU,CAAC,uBAAuB,OAAO,CAAA,CAAE,CAAC;IACxD;AACA,IAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC;IAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC9C,IAAI,YAAY,EAAE;QAChB,OAAO,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;IACpD;SAAO;QACL,OAAO,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;IACvD;AACF;AAEA,SAAS,QAAQ,CAAC,OAAmB,EAAA;AACnC,IAAA,IAAI,OAAO,CAAC,KAAK,EAAE;AACjB,QAAA,IAAI,OAAO,CAAC,YAAY,EAAE;YACxB,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;QACtC;AAAO,aAAA,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;YAC5C,OAAO,OAAO,CAAC,KAAK;QACtB;IACF;AACA,IAAA,OAAO,GAAG;AACZ;AAEA,SAAS,iBAAiB,CACxB,QAAgB,EAChB,OAAe,EACf,QAAgB,EAAA;AAEhB,IAAA,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AACjD,IAAA,IAAI,OAAO,GAAG,GAAG,EAAE;AACjB,QAAA,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC;IAChC;AACA,IAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;AACpC,IAAA,IAAI,MAAM;IACV,IAAI,QAAQ,EAAE;QACZ,MAAM,GAAG,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC;IAC5D;SAAO;AACL,QAAA,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ;QAClC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACvC,QAAA,IAAI,OAAO,GAAG,GAAG,EAAE;AACjB,YAAA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;QAC9B;AACA,QAAA,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;IAChC;AACA,IAAA,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC3B;AAEA,SAAS,cAAc,CACrB,QAAgB,EAChB,OAAe,EACf,QAAgB,EAAA;AAEhB,IAAA,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,QAAQ,IAAI,OAAO,EAAE,OAAO,CAAC;AAC5D,IAAA,IAAI,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAE;IAC9B,MAAM,MAAM,GAAG;AACb,UAAE,QAAQ,GAAG,SAAS,CAAC,WAAW;AAClC,UAAE,IAAI,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;;;;AAIvD,IAAA,IAAI,CAAC,QAAQ,IAAI,OAAO,GAAG,CAAC,EAAE;AAC5B,QAAA,QAAQ,EAAE;IACZ;AACA,IAAA,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC3B;;;;"}
1
+ {"version":3,"file":"getStartAndEnd.js","sources":["../../../src/getStartAndEnd.ts"],"sourcesContent":["import {greg2abs, isDate, daysInGregMonth, HDate, months} from '@hebcal/hdate';\nimport {CalOptions} from './CalOptions';\n\nconst TISHREI = months.TISHREI;\n\n/**\n * Gets the R.D. days for a number, Date, or HDate\n * @private\n */\nfunction getAbs(d: Date | HDate | number): number {\n if (typeof d === 'number') return d;\n if (isDate(d)) return greg2abs(d as Date);\n if (HDate.isHDate(d)) return (d as HDate).abs();\n throw new TypeError(`Invalid date type: ${d}`);\n}\n\nfunction getYear(options: CalOptions): number {\n if (options.year !== undefined) {\n return Number(options.year);\n }\n return options.isHebrewYear\n ? new HDate().getFullYear()\n : new Date().getFullYear();\n}\n\nconst MAX_NUM_YEARS = 2000;\n\n/**\n * Parse options object to determine start & end days\n * @private\n */\nexport function getStartAndEnd(options: CalOptions): number[] {\n if ((options.start && !options.end) || (options.end && !options.start)) {\n throw new TypeError('Both options.start and options.end are required');\n } else if (options.start && options.end) {\n const start = getAbs(options.start),\n end = getAbs(options.end);\n if (end - start > 365 * MAX_NUM_YEARS) {\n throw new RangeError(`Date range exceeds ${MAX_NUM_YEARS} years`);\n }\n return [start, end];\n }\n const isHebrewYear = Boolean(options.isHebrewYear);\n const theYear = getYear(options);\n if (isNaN(theYear)) {\n throw new RangeError(`Invalid year ${options.year}`);\n } else if (isHebrewYear && theYear < 1) {\n throw new RangeError(`Invalid Hebrew year ${theYear}`);\n }\n const theMonth = getMonth(options);\n const numYears = Number(options.numYears) || 1;\n if (numYears > MAX_NUM_YEARS) {\n throw new RangeError(`options.numYears exceeds ${MAX_NUM_YEARS}`);\n }\n if (isHebrewYear) {\n return startEndHebrew(theMonth, theYear, numYears);\n } else {\n return startEndGregorian(theMonth, theYear, numYears);\n }\n}\n\nfunction getMonth(options: CalOptions): number {\n if (options.month) {\n if (options.isHebrewYear) {\n return HDate.monthNum(options.month);\n } else if (typeof options.month === 'number') {\n return options.month;\n }\n }\n return NaN;\n}\n\nfunction startEndGregorian(\n theMonth: number,\n theYear: number,\n numYears: number\n): number[] {\n const gregMonth = theMonth ? theMonth - 1 : 0;\n const startGreg = new Date(theYear, gregMonth, 1);\n if (theYear < 100) {\n startGreg.setFullYear(theYear);\n }\n const startAbs = greg2abs(startGreg);\n let endAbs;\n if (theMonth) {\n endAbs = startAbs + daysInGregMonth(theMonth, theYear) - 1;\n } else {\n const endYear = theYear + numYears;\n const endGreg = new Date(endYear, 0, 1);\n if (endYear < 100) {\n endGreg.setFullYear(endYear);\n }\n endAbs = greg2abs(endGreg) - 1;\n }\n return [startAbs, endAbs];\n}\n\nfunction startEndHebrew(\n theMonth: number,\n theYear: number,\n numYears: number\n): number[] {\n const startDate = new HDate(1, theMonth || TISHREI, theYear);\n let startAbs = startDate.abs();\n const endAbs = theMonth\n ? startAbs + startDate.daysInMonth()\n : new HDate(1, TISHREI, theYear + numYears).abs() - 1;\n // for full Hebrew year, start on Erev Rosh Hashana which\n // is technically in the previous Hebrew year\n // (but conveniently lets us get candle-lighting time for Erev)\n if (!theMonth && theYear > 1) {\n startAbs--;\n }\n return [startAbs, endAbs];\n}\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- /*! @hebcal/core v6.5.1, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.5.2, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { months } from '@hebcal/hdate';
3
3
  import { flags } from './event.js';
4
+ import { holidayDesc } from './staticHolidays.js';
4
5
 
5
6
  const NONE = 0;
6
7
  const HALF = 1;
@@ -9,41 +10,32 @@ const WHOLE = 2;
9
10
  * @private
10
11
  */
11
12
  function hallel_(events, hdate) {
12
- const whole = events
13
- .filter(ev => {
14
- const desc = ev.getDesc();
13
+ const abs = hdate.abs();
14
+ for (const ev of events) {
15
15
  const hd = ev.getDate();
16
+ if (hd.abs() !== abs) {
17
+ continue;
18
+ }
19
+ const desc = ev.getDesc();
16
20
  const month = hd.getMonth();
17
21
  const mday = hd.getDate();
18
- return (desc.startsWith('Chanukah') ||
22
+ const mask = ev.getFlags();
23
+ if (desc.startsWith('Chanukah') ||
19
24
  desc.startsWith('Shavuot') ||
20
25
  desc.startsWith('Sukkot') ||
21
26
  (month === months.NISAN &&
22
27
  (mday === 15 || mday === 16) &&
23
- ev.getFlags() & flags.CHAG) || // Pesach
24
- desc === "Yom HaAtzma'ut" ||
25
- desc === 'Yom Yerushalayim');
26
- })
27
- .map(ev => {
28
- return ev.getDate().abs();
29
- });
30
- const abs = hdate.abs();
31
- if (whole.includes(abs)) {
32
- return WHOLE;
33
- }
34
- const half = events
35
- .filter(ev => {
36
- const desc = ev.getDesc();
37
- return (ev.getFlags() & flags.ROSH_CHODESH ||
28
+ mask & flags.CHAG) || // Pesach
29
+ desc === holidayDesc.YOM_HAATZMA_UT ||
30
+ desc === holidayDesc.YOM_YERUSHALAYIM) {
31
+ return WHOLE;
32
+ }
33
+ if (mask & flags.ROSH_CHODESH ||
38
34
  (desc.startsWith('Pesach') &&
39
- desc !== 'Pesach I' &&
40
- desc !== 'Pesach II'));
41
- })
42
- .map(ev => {
43
- return ev.getDate().abs();
44
- });
45
- if (half.includes(abs)) {
46
- return HALF;
35
+ desc !== holidayDesc.PESACH_I &&
36
+ desc !== holidayDesc.PESACH_II)) {
37
+ return HALF;
38
+ }
47
39
  }
48
40
  return NONE;
49
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hallel.js","sources":["../../../src/hallel.ts"],"sourcesContent":["import {HDate, months} from '@hebcal/hdate';\nimport {Event, flags} from './event';\n\nconst NONE = 0;\nconst HALF = 1;\nconst WHOLE = 2;\n\n/**\n * @private\n */\nexport function hallel_(events: Event[], hdate: HDate): number {\n const whole = events\n .filter(ev => {\n const desc: string = ev.getDesc();\n const hd: HDate = ev.getDate();\n const month = hd.getMonth();\n const mday = hd.getDate();\n return (\n desc.startsWith('Chanukah') ||\n desc.startsWith('Shavuot') ||\n desc.startsWith('Sukkot') ||\n (month === months.NISAN &&\n (mday === 15 || mday === 16) &&\n ev.getFlags() & flags.CHAG) || // Pesach\n desc === \"Yom HaAtzma'ut\" ||\n desc === 'Yom Yerushalayim'\n );\n })\n .map(ev => {\n return ev.getDate().abs();\n });\n\n const abs = hdate.abs();\n if (whole.includes(abs)) {\n return WHOLE;\n }\n\n const half = events\n .filter(ev => {\n const desc = ev.getDesc();\n return (\n ev.getFlags() & flags.ROSH_CHODESH ||\n (desc.startsWith('Pesach') &&\n desc !== 'Pesach I' &&\n desc !== 'Pesach II')\n );\n })\n .map(ev => {\n return ev.getDate().abs();\n });\n\n if (half.includes(abs)) {\n return HALF;\n }\n\n return NONE;\n}\n"],"names":[],"mappings":";;;;AAGA,MAAM,IAAI,GAAG,CAAC;AACd,MAAM,IAAI,GAAG,CAAC;AACd,MAAM,KAAK,GAAG,CAAC;AAEf;;AAEG;AACG,SAAU,OAAO,CAAC,MAAe,EAAE,KAAY,EAAA;IACnD,MAAM,KAAK,GAAG;SACX,MAAM,CAAC,EAAE,IAAG;AACX,QAAA,MAAM,IAAI,GAAW,EAAE,CAAC,OAAO,EAAE;AACjC,QAAA,MAAM,EAAE,GAAU,EAAE,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE;AAC3B,QAAA,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE;AACzB,QAAA,QACE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACzB,aAAC,KAAK,KAAK,MAAM,CAAC,KAAK;AACrB,iBAAC,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC5B,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;AAC7B,YAAA,IAAI,KAAK,gBAAgB;YACzB,IAAI,KAAK,kBAAkB;AAE/B,IAAA,CAAC;SACA,GAAG,CAAC,EAAE,IAAG;AACR,QAAA,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE;AAC3B,IAAA,CAAC,CAAC;AAEJ,IAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE;AACvB,IAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACvB,QAAA,OAAO,KAAK;IACd;IAEA,MAAM,IAAI,GAAG;SACV,MAAM,CAAC,EAAE,IAAG;AACX,QAAA,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE;QACzB,QACE,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,YAAY;AAClC,aAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACxB,gBAAA,IAAI,KAAK,UAAU;AACnB,gBAAA,IAAI,KAAK,WAAW,CAAC;AAE3B,IAAA,CAAC;SACA,GAAG,CAAC,EAAE,IAAG;AACR,QAAA,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE;AAC3B,IAAA,CAAC,CAAC;AAEJ,IAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACtB,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,IAAI;AACb;;;;"}
1
+ {"version":3,"file":"hallel.js","sources":["../../../src/hallel.ts"],"sourcesContent":["import {HDate, months} from '@hebcal/hdate';\nimport {Event, flags} from './event';\nimport {holidayDesc as hdesc} from './staticHolidays';\n\nconst NONE = 0;\nconst HALF = 1;\nconst WHOLE = 2;\n\n/**\n * @private\n */\nexport function hallel_(events: Event[], hdate: HDate): number {\n const abs = hdate.abs();\n for (const ev of events) {\n const hd: HDate = ev.getDate();\n if (hd.abs() !== abs) {\n continue;\n }\n const desc = ev.getDesc();\n const month = hd.getMonth();\n const mday = hd.getDate();\n const mask = ev.getFlags();\n if (\n desc.startsWith('Chanukah') ||\n desc.startsWith('Shavuot') ||\n desc.startsWith('Sukkot') ||\n (month === months.NISAN &&\n (mday === 15 || mday === 16) &&\n mask & flags.CHAG) || // Pesach\n desc === hdesc.YOM_HAATZMA_UT ||\n desc === hdesc.YOM_YERUSHALAYIM\n ) {\n return WHOLE;\n }\n\n if (\n mask & flags.ROSH_CHODESH ||\n (desc.startsWith('Pesach') &&\n desc !== hdesc.PESACH_I &&\n desc !== hdesc.PESACH_II)\n ) {\n return HALF;\n }\n }\n\n return NONE;\n}\n"],"names":["hdesc"],"mappings":";;;;;AAIA,MAAM,IAAI,GAAG,CAAC;AACd,MAAM,IAAI,GAAG,CAAC;AACd,MAAM,KAAK,GAAG,CAAC;AAEf;;AAEG;AACG,SAAU,OAAO,CAAC,MAAe,EAAE,KAAY,EAAA;AACnD,IAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE;AACvB,IAAA,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE;AACvB,QAAA,MAAM,EAAE,GAAU,EAAE,CAAC,OAAO,EAAE;AAC9B,QAAA,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,EAAE;YACpB;QACF;AACA,QAAA,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE;AACzB,QAAA,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE;AAC3B,QAAA,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE;AACzB,QAAA,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,EAAE;AAC1B,QAAA,IACE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACzB,aAAC,KAAK,KAAK,MAAM,CAAC,KAAK;AACrB,iBAAC,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC;AAC5B,gBAAA,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACpB,IAAI,KAAKA,WAAK,CAAC,cAAc;AAC7B,YAAA,IAAI,KAAKA,WAAK,CAAC,gBAAgB,EAC/B;AACA,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IACE,IAAI,GAAG,KAAK,CAAC,YAAY;AACzB,aAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACxB,IAAI,KAAKA,WAAK,CAAC,QAAQ;AACvB,gBAAA,IAAI,KAAKA,WAAK,CAAC,SAAS,CAAC,EAC3B;AACA,YAAA,OAAO,IAAI;QACb;IACF;AAEA,IAAA,OAAO,IAAI;AACb;;;;"}
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.5.1, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.5.2, distributed under GPLv2 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)": ["סוכות ז׳ (הושענא רבה)"] } } };
3
3
 
4
4
  export { noNikudOverride as default };
package/dist/esm/he.po.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.5.1, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.5.2, distributed under GPLv2 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 %s": ["רֹאשׁ חוֹדֶשׁ %s"], "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": ["סוֹף זְמַן אֲכִילַת חָמֵץ"] } } };
3
3
 
4
4
  export { poHe as default };