@hebcal/core 6.6.0 → 6.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/README.md +4 -4
  2. package/dist/bundle.js +224 -95
  3. package/dist/bundle.js.map +1 -1
  4. package/dist/bundle.min.js +18 -18
  5. package/dist/bundle.min.js.map +1 -1
  6. package/dist/esm/CalOptions.d.ts +15 -3
  7. package/dist/esm/DailyLearning.js +1 -1
  8. package/dist/esm/HebrewDateEvent.js +1 -1
  9. package/dist/esm/HolidayEvent.d.ts +2 -2
  10. package/dist/esm/HolidayEvent.js +3 -5
  11. package/dist/esm/HolidayEvent.js.map +1 -1
  12. package/dist/esm/MevarchimChodeshEvent.js +1 -1
  13. package/dist/esm/ParshaEvent.js +16 -6
  14. package/dist/esm/ParshaEvent.js.map +1 -1
  15. package/dist/esm/TimedEvent.js +1 -1
  16. package/dist/esm/TimedEvent.js.map +1 -1
  17. package/dist/esm/YomKippurKatanEvent.js +1 -1
  18. package/dist/esm/ashkenazi.po.js +2 -2
  19. package/dist/esm/ashkenazi.po.js.map +1 -1
  20. package/dist/esm/calendar.js +17 -23
  21. package/dist/esm/calendar.js.map +1 -1
  22. package/dist/esm/candles.d.ts +8 -3
  23. package/dist/esm/candles.js +65 -11
  24. package/dist/esm/candles.js.map +1 -1
  25. package/dist/esm/cities.json.js +1 -1
  26. package/dist/esm/event.js +2 -2
  27. package/dist/esm/event.js.map +1 -1
  28. package/dist/esm/getStartAndEnd.js +8 -6
  29. package/dist/esm/getStartAndEnd.js.map +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.js +6 -5
  35. package/dist/esm/holidays.js.map +1 -1
  36. package/dist/esm/index.js +1 -1
  37. package/dist/esm/isAssurBemlacha.js +1 -1
  38. package/dist/esm/isAveilut.js +1 -1
  39. package/dist/esm/isFastDay.js +1 -1
  40. package/dist/esm/locale.js +1 -1
  41. package/dist/esm/location.js +12 -13
  42. package/dist/esm/location.js.map +1 -1
  43. package/dist/esm/modern.js +1 -1
  44. package/dist/esm/molad.js +5 -5
  45. package/dist/esm/molad.js.map +1 -1
  46. package/dist/esm/moladBase.js +1 -1
  47. package/dist/esm/moladDate.js +1 -1
  48. package/dist/esm/moladDate.js.map +1 -1
  49. package/dist/esm/omer.js +1 -1
  50. package/dist/esm/parshaName.js +1 -1
  51. package/dist/esm/parshaYear.js +1 -1
  52. package/dist/esm/pkgVersion.d.ts +1 -1
  53. package/dist/esm/pkgVersion.js +2 -2
  54. package/dist/esm/pkgVersion.js.map +1 -1
  55. package/dist/esm/reformatTimeStr.js +1 -1
  56. package/dist/esm/reformatTimeStr.js.map +1 -1
  57. package/dist/esm/sedra.d.ts +14 -0
  58. package/dist/esm/sedra.js +70 -13
  59. package/dist/esm/sedra.js.map +1 -1
  60. package/dist/esm/sefira.json.js +1 -1
  61. package/dist/esm/staticHolidays.js +1 -1
  62. package/dist/esm/string.js +1 -1
  63. package/dist/esm/tachanun.js +1 -1
  64. package/dist/esm/tachanun.js.map +1 -1
  65. package/dist/esm/zmanim.js +2 -3
  66. package/dist/esm/zmanim.js.map +1 -1
  67. package/package.json +14 -17
  68. package/po/ashkenazi.po +1 -12
  69. package/dist/eslint.config.d.mts +0 -83
  70. package/dist/eslint.config.mjs +0 -29
  71. package/dist/po2json.d.ts +0 -1
  72. package/dist/po2json.js +0 -40
  73. package/dist/src/CalOptions.d.ts +0 -171
  74. package/dist/src/CalOptions.js +0 -1
  75. package/dist/src/DailyLearning.d.ts +0 -69
  76. package/dist/src/DailyLearning.js +0 -92
  77. package/dist/src/HebrewDateEvent.d.ts +0 -37
  78. package/dist/src/HebrewDateEvent.js +0 -72
  79. package/dist/src/HolidayEvent.d.ts +0 -117
  80. package/dist/src/HolidayEvent.js +0 -236
  81. package/dist/src/MevarchimChodeshEvent.d.ts +0 -26
  82. package/dist/src/MevarchimChodeshEvent.js +0 -52
  83. package/dist/src/ParshaEvent.d.ts +0 -24
  84. package/dist/src/ParshaEvent.js +0 -50
  85. package/dist/src/TimedEvent.d.ts +0 -76
  86. package/dist/src/TimedEvent.js +0 -134
  87. package/dist/src/YomKippurKatanEvent.d.ts +0 -23
  88. package/dist/src/YomKippurKatanEvent.js +0 -40
  89. package/dist/src/ashkenazi.po.d.ts +0 -84
  90. package/dist/src/ashkenazi.po.js +0 -1
  91. package/dist/src/calendar.d.ts +0 -112
  92. package/dist/src/calendar.js +0 -721
  93. package/dist/src/candles.d.ts +0 -57
  94. package/dist/src/candles.js +0 -185
  95. package/dist/src/cities.json +0 -67
  96. package/dist/src/event.d.ts +0 -233
  97. package/dist/src/event.js +0 -295
  98. package/dist/src/getStartAndEnd.d.ts +0 -6
  99. package/dist/src/getStartAndEnd.js +0 -105
  100. package/dist/src/hallel.d.ts +0 -6
  101. package/dist/src/hallel.js +0 -39
  102. package/dist/src/he-x-NoNikud.po.d.ts +0 -28
  103. package/dist/src/he-x-NoNikud.po.js +0 -1
  104. package/dist/src/he.po.d.ts +0 -217
  105. package/dist/src/he.po.js +0 -1
  106. package/dist/src/hebcal.d.ts +0 -338
  107. package/dist/src/hebcal.js +0 -413
  108. package/dist/src/holidays.d.ts +0 -41
  109. package/dist/src/holidays.js +0 -324
  110. package/dist/src/index.d.ts +0 -30
  111. package/dist/src/index.js +0 -29
  112. package/dist/src/isAssurBemlacha.d.ts +0 -29
  113. package/dist/src/isAssurBemlacha.js +0 -82
  114. package/dist/src/isAveilut.d.ts +0 -22
  115. package/dist/src/isAveilut.js +0 -48
  116. package/dist/src/isFastDay.d.ts +0 -21
  117. package/dist/src/isFastDay.js +0 -31
  118. package/dist/src/locale.d.ts +0 -1
  119. package/dist/src/locale.js +0 -11
  120. package/dist/src/location.d.ts +0 -167
  121. package/dist/src/location.js +0 -342
  122. package/dist/src/modern.d.ts +0 -18
  123. package/dist/src/modern.js +0 -59
  124. package/dist/src/molad.d.ts +0 -164
  125. package/dist/src/molad.js +0 -298
  126. package/dist/src/moladBase.d.ts +0 -15
  127. package/dist/src/moladBase.js +0 -78
  128. package/dist/src/moladDate.d.ts +0 -12
  129. package/dist/src/moladDate.js +0 -58
  130. package/dist/src/omer.d.ts +0 -128
  131. package/dist/src/omer.js +0 -385
  132. package/dist/src/parshaName.d.ts +0 -2
  133. package/dist/src/parshaName.js +0 -13
  134. package/dist/src/parshaYear.d.ts +0 -20
  135. package/dist/src/parshaYear.js +0 -35
  136. package/dist/src/pkgVersion.d.ts +0 -2
  137. package/dist/src/pkgVersion.js +0 -2
  138. package/dist/src/reformatTimeStr.d.ts +0 -8
  139. package/dist/src/reformatTimeStr.js +0 -47
  140. package/dist/src/sedra.d.ts +0 -175
  141. package/dist/src/sedra.js +0 -563
  142. package/dist/src/sefira.json +0 -63
  143. package/dist/src/staticHolidays.d.ts +0 -192
  144. package/dist/src/staticHolidays.js +0 -637
  145. package/dist/src/string.d.ts +0 -2
  146. package/dist/src/string.js +0 -6
  147. package/dist/src/tachanun.d.ts +0 -29
  148. package/dist/src/tachanun.js +0 -120
  149. package/dist/src/zmanim.d.ts +0 -620
  150. package/dist/src/zmanim.js +0 -1003
  151. package/dist/version.d.ts +0 -1
  152. package/dist/version.js +0 -8
@@ -55,11 +55,23 @@ export type CalOptions = {
55
55
  */
56
56
  havdalahDeg?: number;
57
57
  /**
58
- * degrees for solar depression for end of fast days.
59
- * Default is 7.083 degrees for 3 medium-sized stars. Other commonly-used values include
60
- * 6.45 degrees, as calculated by Rabbi Yechiel Michel Tucazinsky.
58
+ * degrees for solar depression for the end of minor fasts.
59
+ * When set to a nonzero value, minor fasts (including Yom Kippur Katan) end at
60
+ * this many degrees below the horizon. Commonly-used values include 7.083
61
+ * degrees for 3 medium-sized stars and 6.45 degrees, as calculated by
62
+ * Rabbi Yechiel Michel Tucazinsky. Mutually exclusive with `fastEndMins`.
63
+ * If neither is specified, minor fasts end at 7.083 degrees in the Diaspora,
64
+ * or 15 minutes after sunset in Israel (Rabbi Deblitzky's practice).
65
+ * Note: Tish'a B'Av always ends at 6.45 degrees and is not affected by this option.
61
66
  */
62
67
  fastEndDeg?: number;
68
+ /**
69
+ * minutes after sunset for the end of minor fasts.
70
+ * When set to a nonzero value, minor fasts (including Yom Kippur Katan) end
71
+ * this many minutes after sunset. Mutually exclusive with `fastEndDeg`.
72
+ * Note: Tish'a B'Av always ends at 6.45 degrees and is not affected by this option.
73
+ */
74
+ fastEndMins?: number;
63
75
  /**
64
76
  * use elevation for calculations (default `false`).
65
77
  * If `true`, use elevation to affect the calculation of all sunrise/sunset based zmanim.
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.6.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.8.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  const cals = new Map();
3
3
  /**
4
4
  * Plug-in registry for daily learning calendars such as Daf Yomi (Bavli),
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.6.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.8.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { Locale, gematriya, months } from '@hebcal/hdate';
3
3
  import { Event, flags } from './event.js';
4
4
  import './locale.js';
@@ -19,13 +19,13 @@ import './locale';
19
19
  */
20
20
  export declare class HolidayEvent extends Event {
21
21
  /** During Sukkot or Pesach */
22
- cholHaMoedDay?: number;
22
+ readonly cholHaMoedDay?: number;
23
23
  /**
24
24
  * `true` if the fast day was postponed a day to avoid Shabbat.
25
25
  * - Tish'a B'Av postponed from the 9th to the 10th
26
26
  * - Tzom Tammuz postponed from the 17th to the 18th
27
27
  */
28
- observed?: boolean;
28
+ readonly observed?: boolean;
29
29
  constructor(date: HDate, desc: string, mask?: number, attrs?: object);
30
30
  /**
31
31
  * Returns a simplified (untranslated) name for this holiday, stripping
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.6.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.8.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { isoDateString, Locale } from '@hebcal/hdate';
3
3
  import { Event, flags } from './event.js';
4
4
  import { holidayDesc } from './staticHolidays.js';
@@ -84,12 +84,10 @@ class HolidayEvent extends Event {
84
84
  if (this.emoji) {
85
85
  return this.emoji;
86
86
  }
87
- else if (this.getFlags() & flags.SPECIAL_SHABBAT) {
87
+ if (this.getFlags() & flags.SPECIAL_SHABBAT) {
88
88
  return '🕍';
89
89
  }
90
- else {
91
- return '✡️';
92
- }
90
+ return '✡️';
93
91
  }
94
92
  getCategories() {
95
93
  if (this.cholHaMoedDay) {
@@ -1 +1 @@
1
- {"version":3,"file":"HolidayEvent.js","sources":["../../../src/HolidayEvent.ts"],"sourcesContent":["import {HDate, Locale, isoDateString} from '@hebcal/hdate';\nimport {Event, flags} from './event';\nimport {holidayDesc as hdesc} from './staticHolidays';\nimport {smartApostrophe, urlFriendly} from './string';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/**\n * Represents a built-in holiday like Pesach, Purim or Tu BiShvat.\n *\n * Most holiday-related events emitted by {@link HebrewCalendar.calendar}\n * are instances of `HolidayEvent` or one of its subclasses\n * ({@link ChanukahEvent}, {@link AsaraBTevetEvent},\n * {@link RoshHashanaEvent}, {@link RoshChodeshEvent}).\n *\n * Adds two notable behaviors over the base {@link Event}:\n *\n * - {@link HolidayEvent.basename} strips qualifiers like `Erev `, ` I`/`II`,\n * `(CH''M)`, `(observed)`, candle counts, etc. (e.g. `\"Erev Pesach\"` →\n * `\"Pesach\"`).\n * - {@link HolidayEvent.url} returns a `https://www.hebcal.com/holidays/...`\n * link for the holiday.\n */\nexport class HolidayEvent extends Event {\n /** During Sukkot or Pesach */\n cholHaMoedDay?: number;\n /**\n * `true` if the fast day was postponed a day to avoid Shabbat.\n * - Tish'a B'Av postponed from the 9th to the 10th\n * - Tzom Tammuz postponed from the 17th to the 18th\n */\n observed?: boolean;\n constructor(date: HDate, desc: string, mask = 0, attrs?: object) {\n super(date, desc, mask, attrs);\n if (typeof attrs === 'object' && attrs !== null) {\n Object.assign(this, attrs);\n }\n }\n\n /**\n * Returns a simplified (untranslated) name for this holiday, stripping\n * qualifiers so that related events group under one name.\n *\n * Strips trailing 4-digit years, `(CH''M)`, `(observed)`, `(Hoshana Raba)`,\n * Roman-numeral day numbers (` I`, ` II`, ...), Chanukah candle counts,\n * `: 8th Day`, and a leading `\"Erev \"`.\n * @example\n * // 'Erev Pesach' => 'Pesach'\n * // 'Sukkot III (CH''M)' => 'Sukkot'\n * // 'Chanukah: 5 Candles' => 'Chanukah'\n * // 'Rosh Hashana 5784' => 'Rosh Hashana'\n */\n basename(): string {\n return this.getDesc()\n .replace(/ \\d{4}$/, '')\n .replace(/ \\(CH''M\\)$/, '')\n .replace(/ \\(observed\\)$/, '')\n .replace(/ \\(Hoshana Raba\\)$/, '')\n .replace(/ [IV]+$/, '')\n .replace(/: \\d Candles?$/, '')\n .replace(/: 8th Day$/, '')\n .replace(/^Erev /, '');\n }\n\n /**\n * Returns a `https://www.hebcal.com/holidays/...` URL for more detail on\n * this holiday. Israel-only holidays get an `?i=on` query parameter.\n * Returns `undefined` for years outside `[100, 2999]`.\n */\n url(): string | undefined {\n const year = this.greg().getFullYear();\n if (year < 100 || year > 2999) {\n return undefined;\n }\n const url =\n 'https://www.hebcal.com/holidays/' +\n urlFriendly(this.basename()) +\n '-' +\n this.urlDateSuffix();\n return this.getFlags() & flags.IL_ONLY ? url + '?i=on' : url;\n }\n\n urlDateSuffix(): string {\n const year = this.greg().getFullYear();\n return String(year);\n }\n\n getEmoji(): string {\n if (this.emoji) {\n return this.emoji;\n } else if (this.getFlags() & flags.SPECIAL_SHABBAT) {\n return '🕍';\n } else {\n return '✡️';\n }\n }\n\n getCategories(): string[] {\n if (this.cholHaMoedDay) {\n return ['holiday', 'major', 'cholhamoed'];\n }\n const cats = super.getCategories();\n if (cats[0] !== 'unknown') {\n return cats;\n }\n // Don't depend on flags.MINOR_HOLIDAY always being set. Look for minor holidays.\n const desc = this.getDesc();\n switch (desc) {\n case hdesc.LAG_BAOMER:\n case hdesc.LEIL_SELICHOT:\n case hdesc.PESACH_SHENI:\n case hdesc.EREV_PURIM:\n case hdesc.PURIM_KATAN:\n case hdesc.SHUSHAN_PURIM:\n case hdesc.TU_BAV:\n case hdesc.TU_BISHVAT:\n case hdesc.ROSH_HASHANA_LABEHEMOT:\n return ['holiday', 'minor'];\n }\n\n return ['holiday', 'major'];\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n const str = super.render(locale);\n return smartApostrophe(str);\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 const str = super.renderBrief(locale);\n return smartApostrophe(str);\n }\n}\n\n/**\n * Because Asara B'Tevet often occurs twice in the same Gregorian year,\n * we subclass HolidayEvent to generate the correct URL.\n */\nexport class AsaraBTevetEvent extends HolidayEvent {\n urlDateSuffix(): string {\n const isoDate = isoDateString(this.greg());\n return isoDate.replaceAll('-', '');\n }\n}\n\nconst chanukahEmoji = '🕎';\nconst KEYCAP_DIGITS = [\n '0️⃣',\n '1️⃣',\n '2️⃣',\n '3️⃣',\n '4️⃣',\n '5️⃣',\n '6️⃣',\n '7️⃣',\n '8️⃣',\n '9️⃣',\n] as const;\n\n/**\n * Because Chanukah sometimes starts in December and ends in January,\n * we subclass HolidayEvent to generate the correct URL.\n */\nexport class ChanukahEvent extends HolidayEvent {\n readonly chanukahDay?: number;\n /**\n * @param chanukahDay should be undefined for 1st night of Chanukah\n */\n constructor(date: HDate, desc: string, mask: number, chanukahDay?: number) {\n super(date, desc, mask);\n this.chanukahDay = chanukahDay;\n this.emoji = chanukahEmoji;\n if (chanukahDay !== 8) {\n const candles = chanukahDay ? chanukahDay + 1 : 1;\n this.emoji += KEYCAP_DIGITS[candles];\n }\n }\n urlDateSuffix(): string {\n const dt = this.greg();\n let year = dt.getFullYear();\n if (dt.getMonth() === 0) {\n year--;\n }\n return String(year);\n }\n}\n\n/** Represents Rosh Hashana, the Jewish New Year */\nexport class RoshHashanaEvent extends HolidayEvent {\n private readonly hyear: number;\n /**\n * @private\n * @param date Hebrew date event occurs\n * @param hyear Hebrew year\n * @param mask optional holiday flags\n */\n constructor(date: HDate, hyear: number, mask: number) {\n super(date, `Rosh Hashana ${hyear}`, mask);\n this.hyear = hyear;\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n return Locale.gettext('Rosh Hashana', locale) + ' ' + this.hyear;\n }\n\n getEmoji(): string {\n return '🍏🍯';\n }\n}\n\nconst roshChodeshStr = 'Rosh Chodesh';\n\n/** Represents Rosh Chodesh, the beginning of a new month */\nexport class RoshChodeshEvent extends HolidayEvent {\n /**\n * Constructs Rosh Chodesh event\n * @param date Hebrew date event occurs\n * @param monthName Hebrew month name (not translated)\n */\n constructor(date: HDate, monthName: string) {\n super(date, `${roshChodeshStr} ${monthName}`, flags.ROSH_CHODESH);\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n const monthName = this.getDesc().substring(roshChodeshStr.length + 1);\n const monthName0 = Locale.gettext(monthName, locale);\n const monthName1 = smartApostrophe(monthName0);\n return Locale.gettext(roshChodeshStr, locale) + ' ' + monthName1;\n }\n\n basename(): string {\n return this.getDesc();\n }\n\n getEmoji(): string {\n return this.emoji || '🌒';\n }\n}\n"],"names":["hdesc"],"mappings":"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"}
1
+ {"version":3,"file":"HolidayEvent.js","sources":["../../../src/HolidayEvent.ts"],"sourcesContent":["import {HDate, Locale, isoDateString} from '@hebcal/hdate';\nimport {Event, flags} from './event';\nimport {holidayDesc as hdesc} from './staticHolidays';\nimport {smartApostrophe, urlFriendly} from './string';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/**\n * Represents a built-in holiday like Pesach, Purim or Tu BiShvat.\n *\n * Most holiday-related events emitted by {@link HebrewCalendar.calendar}\n * are instances of `HolidayEvent` or one of its subclasses\n * ({@link ChanukahEvent}, {@link AsaraBTevetEvent},\n * {@link RoshHashanaEvent}, {@link RoshChodeshEvent}).\n *\n * Adds two notable behaviors over the base {@link Event}:\n *\n * - {@link HolidayEvent.basename} strips qualifiers like `Erev `, ` I`/`II`,\n * `(CH''M)`, `(observed)`, candle counts, etc. (e.g. `\"Erev Pesach\"` →\n * `\"Pesach\"`).\n * - {@link HolidayEvent.url} returns a `https://www.hebcal.com/holidays/...`\n * link for the holiday.\n */\nexport class HolidayEvent extends Event {\n /** During Sukkot or Pesach */\n readonly cholHaMoedDay?: number;\n /**\n * `true` if the fast day was postponed a day to avoid Shabbat.\n * - Tish'a B'Av postponed from the 9th to the 10th\n * - Tzom Tammuz postponed from the 17th to the 18th\n */\n readonly observed?: boolean;\n constructor(date: HDate, desc: string, mask = 0, attrs?: object) {\n super(date, desc, mask, attrs);\n if (typeof attrs === 'object' && attrs !== null) {\n Object.assign(this, attrs);\n }\n }\n\n /**\n * Returns a simplified (untranslated) name for this holiday, stripping\n * qualifiers so that related events group under one name.\n *\n * Strips trailing 4-digit years, `(CH''M)`, `(observed)`, `(Hoshana Raba)`,\n * Roman-numeral day numbers (` I`, ` II`, ...), Chanukah candle counts,\n * `: 8th Day`, and a leading `\"Erev \"`.\n * @example\n * // 'Erev Pesach' => 'Pesach'\n * // 'Sukkot III (CH''M)' => 'Sukkot'\n * // 'Chanukah: 5 Candles' => 'Chanukah'\n * // 'Rosh Hashana 5784' => 'Rosh Hashana'\n */\n basename(): string {\n return this.getDesc()\n .replace(/ \\d{4}$/, '')\n .replace(/ \\(CH''M\\)$/, '')\n .replace(/ \\(observed\\)$/, '')\n .replace(/ \\(Hoshana Raba\\)$/, '')\n .replace(/ [IV]+$/, '')\n .replace(/: \\d Candles?$/, '')\n .replace(/: 8th Day$/, '')\n .replace(/^Erev /, '');\n }\n\n /**\n * Returns a `https://www.hebcal.com/holidays/...` URL for more detail on\n * this holiday. Israel-only holidays get an `?i=on` query parameter.\n * Returns `undefined` for years outside `[100, 2999]`.\n */\n url(): string | undefined {\n const year = this.greg().getFullYear();\n if (year < 100 || year > 2999) {\n return undefined;\n }\n const url =\n 'https://www.hebcal.com/holidays/' +\n urlFriendly(this.basename()) +\n '-' +\n this.urlDateSuffix();\n return this.getFlags() & flags.IL_ONLY ? url + '?i=on' : url;\n }\n\n urlDateSuffix(): string {\n const year = this.greg().getFullYear();\n return String(year);\n }\n\n getEmoji(): string {\n if (this.emoji) {\n return this.emoji;\n }\n if (this.getFlags() & flags.SPECIAL_SHABBAT) {\n return '🕍';\n }\n return '✡️';\n }\n\n getCategories(): string[] {\n if (this.cholHaMoedDay) {\n return ['holiday', 'major', 'cholhamoed'];\n }\n const cats = super.getCategories();\n if (cats[0] !== 'unknown') {\n return cats;\n }\n // Don't depend on flags.MINOR_HOLIDAY always being set. Look for minor holidays.\n const desc = this.getDesc();\n switch (desc) {\n case hdesc.LAG_BAOMER:\n case hdesc.LEIL_SELICHOT:\n case hdesc.PESACH_SHENI:\n case hdesc.EREV_PURIM:\n case hdesc.PURIM_KATAN:\n case hdesc.SHUSHAN_PURIM:\n case hdesc.TU_BAV:\n case hdesc.TU_BISHVAT:\n case hdesc.ROSH_HASHANA_LABEHEMOT:\n return ['holiday', 'minor'];\n }\n\n return ['holiday', 'major'];\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n const str = super.render(locale);\n return smartApostrophe(str);\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 const str = super.renderBrief(locale);\n return smartApostrophe(str);\n }\n}\n\n/**\n * Because Asara B'Tevet often occurs twice in the same Gregorian year,\n * we subclass HolidayEvent to generate the correct URL.\n */\nexport class AsaraBTevetEvent extends HolidayEvent {\n urlDateSuffix(): string {\n const isoDate = isoDateString(this.greg());\n return isoDate.replaceAll('-', '');\n }\n}\n\nconst chanukahEmoji = '🕎';\nconst KEYCAP_DIGITS = [\n '0️⃣',\n '1️⃣',\n '2️⃣',\n '3️⃣',\n '4️⃣',\n '5️⃣',\n '6️⃣',\n '7️⃣',\n '8️⃣',\n '9️⃣',\n] as const;\n\n/**\n * Because Chanukah sometimes starts in December and ends in January,\n * we subclass HolidayEvent to generate the correct URL.\n */\nexport class ChanukahEvent extends HolidayEvent {\n readonly chanukahDay?: number;\n /**\n * @param chanukahDay should be undefined for 1st night of Chanukah\n */\n constructor(date: HDate, desc: string, mask: number, chanukahDay?: number) {\n super(date, desc, mask);\n this.chanukahDay = chanukahDay;\n this.emoji = chanukahEmoji;\n if (chanukahDay !== 8) {\n const candles = chanukahDay ? chanukahDay + 1 : 1;\n this.emoji += KEYCAP_DIGITS[candles];\n }\n }\n urlDateSuffix(): string {\n const dt = this.greg();\n let year = dt.getFullYear();\n if (dt.getMonth() === 0) {\n year--;\n }\n return String(year);\n }\n}\n\n/** Represents Rosh Hashana, the Jewish New Year */\nexport class RoshHashanaEvent extends HolidayEvent {\n private readonly hyear: number;\n /**\n * @private\n * @param date Hebrew date event occurs\n * @param hyear Hebrew year\n * @param mask optional holiday flags\n */\n constructor(date: HDate, hyear: number, mask: number) {\n super(date, `Rosh Hashana ${hyear}`, mask);\n this.hyear = hyear;\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n return Locale.gettext('Rosh Hashana', locale) + ' ' + this.hyear;\n }\n\n getEmoji(): string {\n return '🍏🍯';\n }\n}\n\nconst roshChodeshStr = 'Rosh Chodesh';\n\n/** Represents Rosh Chodesh, the beginning of a new month */\nexport class RoshChodeshEvent extends HolidayEvent {\n /**\n * Constructs Rosh Chodesh event\n * @param date Hebrew date event occurs\n * @param monthName Hebrew month name (not translated)\n */\n constructor(date: HDate, monthName: string) {\n super(date, `${roshChodeshStr} ${monthName}`, flags.ROSH_CHODESH);\n }\n /**\n * Returns (translated) description of this event\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n const monthName = this.getDesc().substring(roshChodeshStr.length + 1);\n const monthName0 = Locale.gettext(monthName, locale);\n const monthName1 = smartApostrophe(monthName0);\n return Locale.gettext(roshChodeshStr, locale) + ' ' + monthName1;\n }\n\n basename(): string {\n return this.getDesc();\n }\n\n getEmoji(): string {\n return this.emoji || '🌒';\n }\n}\n"],"names":["hdesc"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.6.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.8.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { Locale, HDate, months } from '@hebcal/hdate';
3
3
  import { Event, flags } from './event.js';
4
4
  import { Molad } from './molad.js';
@@ -1,6 +1,6 @@
1
- /*! @hebcal/core v6.6.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.8.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { Event, flags } from './event.js';
3
- import { isoDateString } from '@hebcal/hdate';
3
+ import { HDate, isoDateString } from '@hebcal/hdate';
4
4
  import { renderParshaName } from './parshaName.js';
5
5
  import { urlFriendly } from './string.js';
6
6
  import './locale.js';
@@ -16,6 +16,19 @@ import './locale.js';
16
16
  class ParshaEvent extends Event {
17
17
  p;
18
18
  constructor(parsha) {
19
+ // eslint-disable-next-line prefer-rest-params
20
+ if (arguments.length !== 1) {
21
+ throw new TypeError(`ParshaEvent constructor takes a single SedraResult argument; ` +
22
+ `got ${arguments.length} arguments`);
23
+ }
24
+ if (typeof parsha !== 'object' ||
25
+ parsha === null ||
26
+ !Array.isArray(parsha.parsha) ||
27
+ parsha.parsha.length === 0 ||
28
+ parsha.parsha.length > 2 ||
29
+ !HDate.isHDate(parsha.hdate)) {
30
+ throw new TypeError(`Invalid SedraResult argument: ${JSON.stringify(parsha)}`);
31
+ }
19
32
  const desc = 'Parashat ' + parsha.parsha.join('-');
20
33
  super(parsha.hdate, desc, flags.PARSHA_HASHAVUA);
21
34
  this.p = parsha;
@@ -35,10 +48,7 @@ class ParshaEvent extends Event {
35
48
  return undefined;
36
49
  }
37
50
  const dt = this.urlDateSuffix();
38
- const url = 'https://www.hebcal.com/sedrot/' +
39
- urlFriendly(this.basename()) +
40
- '-' +
41
- dt;
51
+ const url = 'https://www.hebcal.com/sedrot/' + urlFriendly(this.basename()) + '-' + dt;
42
52
  return this.p.il ? url + '?i=on' : url;
43
53
  }
44
54
  urlDateSuffix() {
@@ -1 +1 @@
1
- {"version":3,"file":"ParshaEvent.js","sources":["../../../src/ParshaEvent.ts"],"sourcesContent":["import {Event, flags} from './event';\nimport {isoDateString} from '@hebcal/hdate';\nimport {renderParshaName} from './parshaName';\nimport {urlFriendly} from './string';\nimport {SedraResult} from './sedra';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/**\n * Represents one of 54 weekly Torah portions, always on a Saturday.\n *\n * `ParshaEvent` is for regular Parashat HaShavua readings. For Shabbatot\n * with holiday readings such as Shabbat Chol ha-Moed, use\n * `getHolidaysOnDate()` from `@hebcal/core`, or `getLeyningOnDate()` from\n * `@hebcal/leyning` when the display title and exact Torah readings are needed.\n */\nexport class ParshaEvent extends Event {\n readonly p: SedraResult;\n constructor(parsha: SedraResult) {\n const desc = 'Parashat ' + parsha.parsha.join('-');\n super(parsha.hdate, desc, flags.PARSHA_HASHAVUA);\n this.p = parsha;\n }\n /**\n * @param [locale] Optional locale name (i.e: `'he'`, `'fr'`). Defaults to empty locale.\n */\n render(locale?: string): string {\n return renderParshaName(this.p.parsha, locale);\n }\n\n basename(): string {\n return this.p.parsha.join('-');\n }\n\n url(): string | undefined {\n const year = this.greg().getFullYear();\n if (year < 100 || year > 2999) {\n return undefined;\n }\n const dt = this.urlDateSuffix();\n const url =\n 'https://www.hebcal.com/sedrot/' +\n urlFriendly(this.basename()) +\n '-' +\n dt;\n return this.p.il ? url + '?i=on' : url;\n }\n\n urlDateSuffix(): string {\n const isoDate = isoDateString(this.greg());\n return isoDate.replaceAll('-', '');\n }\n\n /** convenience function for compatibility with previous implementation */\n get parsha(): string[] {\n return this.p.parsha;\n }\n}\n"],"names":[],"mappings":";;;;;;;AAOA;;;;;;;AAOG;AACG,MAAO,WAAY,SAAQ,KAAK,CAAA;AAC3B,IAAA,CAAC;AACV,IAAA,WAAA,CAAY,MAAmB,EAAA;AAC7B,QAAA,MAAM,IAAI,GAAG,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAClD,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC;AAChD,QAAA,IAAI,CAAC,CAAC,GAAG,MAAM;IACjB;AACA;;AAEG;AACH,IAAA,MAAM,CAAC,MAAe,EAAA;QACpB,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC;IAChD;IAEA,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IAChC;IAEA,GAAG,GAAA;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;QACtC,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE;AAC7B,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;QAC/B,MAAM,GAAG,GACP,gCAAgC;AAChC,YAAA,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,GAAG;AACH,YAAA,EAAE;AACJ,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG;IACxC;IAEA,aAAa,GAAA;QACX,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1C,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;IACpC;;AAGA,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM;IACtB;AACD;;;;"}
1
+ {"version":3,"file":"ParshaEvent.js","sources":["../../../src/ParshaEvent.ts"],"sourcesContent":["import {Event, flags} from './event';\nimport {HDate, isoDateString} from '@hebcal/hdate';\nimport {renderParshaName} from './parshaName';\nimport {urlFriendly} from './string';\nimport {SedraResult} from './sedra';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\n/**\n * Represents one of 54 weekly Torah portions, always on a Saturday.\n *\n * `ParshaEvent` is for regular Parashat HaShavua readings. For Shabbatot\n * with holiday readings such as Shabbat Chol ha-Moed, use\n * `getHolidaysOnDate()` from `@hebcal/core`, or `getLeyningOnDate()` from\n * `@hebcal/leyning` when the display title and exact Torah readings are needed.\n */\nexport class ParshaEvent extends Event {\n readonly p: SedraResult;\n constructor(parsha: SedraResult) {\n // eslint-disable-next-line prefer-rest-params\n if (arguments.length !== 1) {\n throw new TypeError(\n `ParshaEvent constructor takes a single SedraResult argument; ` +\n `got ${arguments.length} arguments`\n );\n }\n if (\n typeof parsha !== 'object' ||\n parsha === null ||\n !Array.isArray(parsha.parsha) ||\n parsha.parsha.length === 0 ||\n parsha.parsha.length > 2 ||\n !HDate.isHDate(parsha.hdate)\n ) {\n throw new TypeError(\n `Invalid SedraResult argument: ${JSON.stringify(parsha)}`\n );\n }\n const desc = 'Parashat ' + parsha.parsha.join('-');\n super(parsha.hdate, desc, flags.PARSHA_HASHAVUA);\n this.p = parsha;\n }\n /**\n * @param [locale] Optional locale name (i.e: `'he'`, `'fr'`). Defaults to empty locale.\n */\n render(locale?: string): string {\n return renderParshaName(this.p.parsha, locale);\n }\n\n basename(): string {\n return this.p.parsha.join('-');\n }\n\n url(): string | undefined {\n const year = this.greg().getFullYear();\n if (year < 100 || year > 2999) {\n return undefined;\n }\n const dt = this.urlDateSuffix();\n const url =\n 'https://www.hebcal.com/sedrot/' + urlFriendly(this.basename()) + '-' + dt;\n return this.p.il ? url + '?i=on' : url;\n }\n\n urlDateSuffix(): string {\n const isoDate = isoDateString(this.greg());\n return isoDate.replaceAll('-', '');\n }\n\n /** convenience function for compatibility with previous implementation */\n get parsha(): string[] {\n return this.p.parsha;\n }\n}\n"],"names":[],"mappings":";;;;;;;AAOA;;;;;;;AAOG;AACG,MAAO,WAAY,SAAQ,KAAK,CAAA;AAC3B,IAAA,CAAC;AACV,IAAA,WAAA,CAAY,MAAmB,EAAA;;AAE7B,QAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,MAAM,IAAI,SAAS,CACjB,CAAA,6DAAA,CAA+D;AAC7D,gBAAA,CAAA,IAAA,EAAO,SAAS,CAAC,MAAM,CAAA,UAAA,CAAY,CACtC;QACH;QACA,IACE,OAAO,MAAM,KAAK,QAAQ;AAC1B,YAAA,MAAM,KAAK,IAAI;AACf,YAAA,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AAC7B,YAAA,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;AAC1B,YAAA,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YACxB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5B;AACA,YAAA,MAAM,IAAI,SAAS,CACjB,CAAA,8BAAA,EAAiC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,CAAE,CAC1D;QACH;AACA,QAAA,MAAM,IAAI,GAAG,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAClD,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC;AAChD,QAAA,IAAI,CAAC,CAAC,GAAG,MAAM;IACjB;AACA;;AAEG;AACH,IAAA,MAAM,CAAC,MAAe,EAAA;QACpB,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC;IAChD;IAEA,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IAChC;IAEA,GAAG,GAAA;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;QACtC,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE;AAC7B,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;AAC/B,QAAA,MAAM,GAAG,GACP,gCAAgC,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE;AAC5E,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG;IACxC;IAEA,aAAa,GAAA;QACX,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1C,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;IACpC;;AAGA,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM;IACtB;AACD;;;;"}
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.6.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.8.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { Locale } from '@hebcal/hdate';
3
3
  import { Event } from './event.js';
4
4
  import { reformatTimeStr } from './reformatTimeStr.js';
@@ -1 +1 @@
1
- {"version":3,"file":"TimedEvent.js","sources":["../../../src/TimedEvent.ts"],"sourcesContent":["import {HDate, Locale} from '@hebcal/hdate';\nimport {CalOptions} from './CalOptions';\nimport {Location} from './location';\nimport {Event} from './event';\nimport {reformatTimeStr} from './reformatTimeStr';\nimport {Zmanim} from './zmanim';\nimport {holidayDesc as hdesc} from './staticHolidays';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\nconst HAVDALAH = hdesc.HAVDALAH;\nconst CANDLE_LIGHTING = hdesc.CANDLE_LIGHTING;\n\n/**\n * Base class for events that have an associated wall-clock time and\n * geographic location — for example, candle lighting, havdalah, and\n * fast begin/end times.\n *\n * Stores both a `Date` (`eventTime`) and pre-formatted 24-hour\n * (`eventTimeStr`) and locale-aware (`fmtTime`) strings. May reference a\n * \"linked\" event such as the holiday whose candle-lighting time this\n * represents.\n */\nexport class TimedEvent extends Event {\n /** The exact moment of the event, rounded to the nearest minute */\n readonly eventTime: Date;\n /** Geographic location used to compute `eventTime` */\n readonly location: Location;\n /** 24-hour formatted time string in the location's timezone (e.g. `\"19:42\"`) */\n readonly eventTimeStr: string;\n /** Locale-aware formatted time string (e.g. `\"7:42pm\"` in US locale) */\n readonly fmtTime: string;\n /** Optional event this time is associated with (e.g. the Yom Tov being lit for) */\n readonly linkedEvent?: Event;\n /**\n * @param desc Description (not translated)\n */\n constructor(\n date: HDate,\n desc: string,\n mask: number,\n eventTime: Date,\n location: Location,\n linkedEvent?: Event,\n options?: CalOptions\n ) {\n super(date, desc, mask);\n this.eventTime = Zmanim.roundTime(eventTime);\n this.location = location;\n const timeFormat = location.getTimeFormatter();\n this.eventTimeStr = Zmanim.formatTime(this.eventTime, timeFormat);\n const opts = {...options, location};\n this.fmtTime = reformatTimeStr(this.eventTimeStr, 'pm', opts);\n if (linkedEvent !== undefined) {\n this.linkedEvent = linkedEvent;\n }\n }\n /**\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n return Locale.gettext(this.getDesc(), locale) + ': ' + this.fmtTime;\n }\n /**\n * Returns translation of \"Candle lighting\" without the time.\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n renderBrief(locale?: string): string {\n return Locale.gettext(this.getDesc(), locale);\n }\n\n getCategories(): string[] {\n const desc = this.getDesc();\n switch (desc) {\n // LIGHT_CANDLES or LIGHT_CANDLES_TZEIS\n case CANDLE_LIGHTING:\n return ['candles'];\n // YOM_TOV_ENDS\n case HAVDALAH:\n return ['havdalah'];\n // flags.MINOR_FAST or flags.MAJOR_FAST\n case hdesc.FAST_BEGINS:\n case hdesc.FAST_ENDS:\n return ['zmanim', 'fast'];\n case hdesc.SOF_ZMAN_ACHILAT_CHAMETZ:\n return ['zmanim', 'achilasChametz'];\n case hdesc.BIUR_CHAMETZ:\n return ['zmanim', 'biurChametz'];\n }\n /* NOTREACHED */\n return ['unknown'];\n }\n}\n\n/**\n * Candle-lighting event for the eve of Shabbat or a Yom Tov.\n *\n * Generated by {@link HebrewCalendar.calendar} when `options.candlelighting`\n * is `true` and `options.location` is provided. By default candle lighting\n * occurs 18 minutes before sundown (40 minutes in Jerusalem; 30 minutes in\n * Haifa and Zikhron Ya'akov), configurable via `options.candleLightingMins`.\n */\nexport class CandleLightingEvent extends TimedEvent {\n constructor(\n date: HDate,\n mask: number,\n eventTime: Date,\n location: Location,\n linkedEvent?: Event,\n options?: CalOptions\n ) {\n super(\n date,\n CANDLE_LIGHTING,\n mask,\n eventTime,\n location,\n linkedEvent,\n options\n );\n }\n\n getEmoji(): string {\n return '🕯️';\n }\n}\n\n/**\n * Havdalah event marking the end of Shabbat or a Yom Tov.\n *\n * Generated by {@link HebrewCalendar.calendar} when `options.candlelighting`\n * is `true` and `options.location` is provided. By default Havdalah is\n * calculated by *tzeit hakochavim* (8.5° solar depression); pass\n * `options.havdalahMins` to use a fixed minute offset instead, or\n * `options.havdalahDeg` to use a different degree.\n */\nexport class HavdalahEvent extends TimedEvent {\n private readonly havdalahMins?: number;\n constructor(\n date: HDate,\n mask: number,\n eventTime: Date,\n location: Location,\n havdalahMins?: number,\n linkedEvent?: Event,\n options?: CalOptions\n ) {\n super(date, HAVDALAH, mask, eventTime, location, linkedEvent, options);\n if (havdalahMins) {\n this.havdalahMins = havdalahMins;\n }\n }\n /**\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n return this.renderBrief(locale) + ': ' + this.fmtTime;\n }\n /**\n * Returns translation of \"Havdalah\" without the time.\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n renderBrief(locale?: string): string {\n let str = Locale.gettext(this.getDesc(), locale);\n if (this.havdalahMins) {\n const min = Locale.gettext('min', locale);\n str += ` (${this.havdalahMins} ${min})`;\n }\n return str;\n }\n\n getEmoji(): string {\n return '✨';\n }\n}\n"],"names":["hdesc"],"mappings":"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"}
1
+ {"version":3,"file":"TimedEvent.js","sources":["../../../src/TimedEvent.ts"],"sourcesContent":["import {HDate, Locale} from '@hebcal/hdate';\nimport {CalOptions} from './CalOptions';\nimport {Location} from './location';\nimport {Event} from './event';\nimport {reformatTimeStr} from './reformatTimeStr';\nimport {Zmanim} from './zmanim';\nimport {holidayDesc as hdesc} from './staticHolidays';\nimport './locale'; // Adds Hebrew and Ashkenazic translations\n\nconst HAVDALAH = hdesc.HAVDALAH;\nconst CANDLE_LIGHTING = hdesc.CANDLE_LIGHTING;\n\n/**\n * Base class for events that have an associated wall-clock time and\n * geographic location — for example, candle lighting, havdalah, and\n * fast begin/end times.\n *\n * Stores both a `Date` (`eventTime`) and pre-formatted 24-hour\n * (`eventTimeStr`) and locale-aware (`fmtTime`) strings. May reference a\n * \"linked\" event such as the holiday whose candle-lighting time this\n * represents.\n */\nexport class TimedEvent extends Event {\n /** The exact moment of the event, rounded to the nearest minute */\n readonly eventTime: Date;\n /** Geographic location used to compute `eventTime` */\n readonly location: Location;\n /** 24-hour formatted time string in the location's timezone (e.g. `\"19:42\"`) */\n readonly eventTimeStr: string;\n /** Locale-aware formatted time string (e.g. `\"7:42pm\"` in US locale) */\n readonly fmtTime: string;\n /** Optional event this time is associated with (e.g. the Yom Tov being lit for) */\n readonly linkedEvent?: Event;\n /**\n * @param desc Description (not translated)\n */\n constructor(\n date: HDate,\n desc: string,\n mask: number,\n eventTime: Date,\n location: Location,\n linkedEvent?: Event,\n options?: CalOptions\n ) {\n super(date, desc, mask);\n this.eventTime = Zmanim.roundTime(eventTime);\n this.location = location;\n const timeFormat = location.getTimeFormatter();\n this.eventTimeStr = Zmanim.formatTime(this.eventTime, timeFormat);\n const opts = {...options, location};\n this.fmtTime = reformatTimeStr(this.eventTimeStr, 'pm', opts);\n if (linkedEvent !== undefined) {\n this.linkedEvent = linkedEvent;\n }\n }\n /**\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n return Locale.gettext(this.getDesc(), locale) + ': ' + this.fmtTime;\n }\n /**\n * Returns translation of \"Candle lighting\" without the time.\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n renderBrief(locale?: string): string {\n return Locale.gettext(this.getDesc(), locale);\n }\n\n getCategories(): string[] {\n const desc = this.getDesc();\n switch (desc) {\n // LIGHT_CANDLES or LIGHT_CANDLES_TZEIS\n case CANDLE_LIGHTING:\n return ['candles'];\n // YOM_TOV_ENDS\n case HAVDALAH:\n return ['havdalah'];\n // flags.MINOR_FAST or flags.MAJOR_FAST\n case hdesc.FAST_BEGINS:\n case hdesc.FAST_ENDS:\n return ['zmanim', 'fast'];\n case hdesc.SOF_ZMAN_ACHILAT_CHAMETZ:\n return ['zmanim', 'achilasChametz'];\n case hdesc.BIUR_CHAMETZ:\n return ['zmanim', 'biurChametz'];\n }\n /* NOTREACHED */\n return ['unknown'];\n }\n}\n\n/**\n * Candle-lighting event for the eve of Shabbat or a Yom Tov.\n *\n * Generated by {@link HebrewCalendar.calendar} when `options.candlelighting`\n * is `true` and `options.location` is provided. By default candle lighting\n * occurs 18 minutes before sundown (40 minutes in Jerusalem; 30 minutes in\n * Haifa and Zikhron Ya'akov), configurable via `options.candleLightingMins`.\n */\nexport class CandleLightingEvent extends TimedEvent {\n constructor(\n date: HDate,\n mask: number,\n eventTime: Date,\n location: Location,\n linkedEvent?: Event,\n options?: CalOptions\n ) {\n super(date, CANDLE_LIGHTING, mask, eventTime, location, linkedEvent, options);\n }\n\n getEmoji(): string {\n return '🕯️';\n }\n}\n\n/**\n * Havdalah event marking the end of Shabbat or a Yom Tov.\n *\n * Generated by {@link HebrewCalendar.calendar} when `options.candlelighting`\n * is `true` and `options.location` is provided. By default Havdalah is\n * calculated by *tzeit hakochavim* (8.5° solar depression); pass\n * `options.havdalahMins` to use a fixed minute offset instead, or\n * `options.havdalahDeg` to use a different degree.\n */\nexport class HavdalahEvent extends TimedEvent {\n private readonly havdalahMins?: number;\n constructor(\n date: HDate,\n mask: number,\n eventTime: Date,\n location: Location,\n havdalahMins?: number,\n linkedEvent?: Event,\n options?: CalOptions\n ) {\n super(date, HAVDALAH, mask, eventTime, location, linkedEvent, options);\n if (havdalahMins) {\n this.havdalahMins = havdalahMins;\n }\n }\n /**\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n render(locale?: string): string {\n return this.renderBrief(locale) + ': ' + this.fmtTime;\n }\n /**\n * Returns translation of \"Havdalah\" without the time.\n * @param [locale] Optional locale name (defaults to empty locale)\n */\n renderBrief(locale?: string): string {\n let str = Locale.gettext(this.getDesc(), locale);\n if (this.havdalahMins) {\n const min = Locale.gettext('min', locale);\n str += ` (${this.havdalahMins} ${min})`;\n }\n return str;\n }\n\n getEmoji(): string {\n return '✨';\n }\n}\n"],"names":["hdesc"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.6.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.8.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import { Locale } from '@hebcal/hdate';
3
3
  import { flags } from './event.js';
4
4
  import { HolidayEvent } from './HolidayEvent.js';
@@ -1,5 +1,5 @@
1
- /*! @hebcal/core v6.6.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
2
- var poAshkenazi = { "headers": { "plural-forms": "nplurals=2; plural=(n > 1);", "language": "en_CA@ashkenazi" }, "contexts": { "": { "Shabbat": ["Shabbos"], "Achrei Mot": ["Achrei Mos"], "Bechukotai": ["Bechukosai"], "Beha'alotcha": ["Beha’aloscha"], "Bereshit": ["Bereshis"], "Chukat": ["Chukas"], "Erev Shavuot": ["Erev Shavuos"], "Erev Sukkot": ["Erev Sukkos"], "Ki Tavo": ["Ki Savo"], "Ki Teitzei": ["Ki Seitzei"], "Ki Tisa": ["Ki Sisa"], "Matot": ["Matos"], "Pesach Shabbat Chol ha-Moed": ["Pesach Shabbos Chol ha-Moed"], "Purim Katan": ["Purim Koton"], "Rosh Hashana LaBehemot": ["Rosh Hashana LaBeheimos"], "Shabbat Chazon": ["Shabbos Chazon"], "Shabbat HaChodesh": ["Shabbos HaChodesh"], "Shabbat HaGadol": ["Shabbos HaGadol"], "Shabbat Nachamu": ["Shabbos Nachamu"], "Shabbat Parah": ["Shabbos Parah"], "Shabbat Shekalim": ["Shabbos Shekalim"], "Shabbat Shuva": ["Shabbos Shuvah"], "Shabbat Zachor": ["Shabbos Zachor"], "Shavuot": ["Shavuos"], "Shavuot I": ["Shavuos I"], "Shavuot II": ["Shavuos II"], "Shemot": ["Shemos"], "Shmini Atzeret": ["Shmini Atzeres"], "Simchat Torah": ["Simchas Torah"], "Sukkot": ["Sukkos"], "Sukkot I": ["Sukkos I"], "Sukkot II": ["Sukkos II"], "Sukkot II (CH''M)": ["Sukkos II (CH’’M)"], "Sukkot III (CH''M)": ["Sukkos III (CH’’M)"], "Sukkot IV (CH''M)": ["Sukkos IV (CH’’M)"], "Sukkot V (CH''M)": ["Sukkos V (CH’’M)"], "Sukkot VI (CH''M)": ["Sukkos VI (CH’’M)"], "Sukkot VII (Hoshana Raba)": ["Sukkos VII (Hoshana Raba)"], "Sukkot Shabbat Chol ha-Moed": ["Sukkos Shabbos Chol ha-Moed"], "Ta'anit Bechorot": ["Ta’anis Bechoros"], "Ta'anit BeHaB": ["Ta’anis BeHaB"], "Ta'anit Esther": ["Ta’anis Esther"], "Toldot": ["Toldos"], "Vaetchanan": ["Vaeschanan"], "Yitro": ["Yisro"], "Vezot Haberakhah": ["Vezos Haberakhah"], "Parashat": ["Parshas"], "Leil Selichot": ["Leil Selichos"], "Shabbat Mevarchim Chodesh": ["Shabbos Mevorchim Chodesh"], "Shabbat Shirah": ["Shabbos Shirah"], "Asara B'Tevet": ["Asara B’Teves"], "Birkat Hachamah": ["Birkas HaChamah"], "Birkat HaChamah": ["Birkas HaChamah"], "Shushan Purim Katan": ["Shushan Purim Koton"], "Alot HaShachar": ["Alos HaShachar"], "Misheyakir": ["Misheyakir"], "Misheyakir Machmir": ["Misheyakir Machmir"], "Sunrise": ["Sunrise"], "Kriat Shema, sof zeman": ["Krias Shema, sof zman"], "Tefilah, sof zeman": ["Tefilah, sof zman"], "Kriat Shema, sof zeman (MGA)": ["Krias Shema, sof zman (MGA)"], "Kriat Shema, sof zeman (GRA)": ["Krias Shema, sof zman (GRA)"], "Tefilah, sof zeman (MGA)": ["Tefilah, sof zman (MGA)"], "Tefilah, sof zeman (GRA)": ["Tefilah, sof zman (GRA)"], "Chatzot HaLailah": ["Chatzos HaLailah"], "Chatzot HaYom": ["Chatzos"], "Chatzot hayom": ["Chatzos"], "Mincha Gedolah": ["Mincha Gedolah"], "Mincha Ketanah": ["Mincha Ketanah"], "Plag HaMincha": ["Plag HaMincha"], "Sunset": ["Sunset"], "Bein HaShemashot": ["Bein HaShemashos"], "Tzeit HaKochavim": ["Tzeis HaKochavim"] } } };
1
+ /*! @hebcal/core v6.8.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
2
+ var poAshkenazi = { "headers": { "plural-forms": "nplurals=2; plural=(n > 1);", "language": "und-x-ashkenaz" }, "contexts": { "": { "Shabbat": ["Shabbos"], "Achrei Mot": ["Achrei Mos"], "Bechukotai": ["Bechukosai"], "Beha'alotcha": ["Beha’aloscha"], "Bereshit": ["Bereshis"], "Chukat": ["Chukas"], "Erev Shavuot": ["Erev Shavuos"], "Erev Sukkot": ["Erev Sukkos"], "Ki Tavo": ["Ki Savo"], "Ki Teitzei": ["Ki Seitzei"], "Ki Tisa": ["Ki Sisa"], "Matot": ["Matos"], "Pesach Shabbat Chol ha-Moed": ["Pesach Shabbos Chol ha-Moed"], "Purim Katan": ["Purim Koton"], "Rosh Hashana LaBehemot": ["Rosh Hashana LaBeheimos"], "Shabbat Chazon": ["Shabbos Chazon"], "Shabbat HaChodesh": ["Shabbos HaChodesh"], "Shabbat HaGadol": ["Shabbos HaGadol"], "Shabbat Nachamu": ["Shabbos Nachamu"], "Shabbat Parah": ["Shabbos Parah"], "Shabbat Shekalim": ["Shabbos Shekalim"], "Shabbat Shuva": ["Shabbos Shuvah"], "Shabbat Zachor": ["Shabbos Zachor"], "Shavuot": ["Shavuos"], "Shavuot I": ["Shavuos I"], "Shavuot II": ["Shavuos II"], "Shemot": ["Shemos"], "Shmini Atzeret": ["Shmini Atzeres"], "Simchat Torah": ["Simchas Torah"], "Sukkot": ["Sukkos"], "Sukkot I": ["Sukkos I"], "Sukkot II": ["Sukkos II"], "Sukkot II (CH''M)": ["Sukkos II (CH’’M)"], "Sukkot III (CH''M)": ["Sukkos III (CH’’M)"], "Sukkot IV (CH''M)": ["Sukkos IV (CH’’M)"], "Sukkot V (CH''M)": ["Sukkos V (CH’’M)"], "Sukkot VI (CH''M)": ["Sukkos VI (CH’’M)"], "Sukkot VII (Hoshana Raba)": ["Sukkos VII (Hoshana Raba)"], "Sukkot Shabbat Chol ha-Moed": ["Sukkos Shabbos Chol ha-Moed"], "Ta'anit Bechorot": ["Ta’anis Bechoros"], "Ta'anit BeHaB": ["Ta’anis BeHaB"], "Ta'anit Esther": ["Ta’anis Esther"], "Toldot": ["Toldos"], "Vaetchanan": ["Vaeschanan"], "Yitro": ["Yisro"], "Vezot Haberakhah": ["Vezos Haberakhah"], "Parashat": ["Parshas"], "Leil Selichot": ["Leil Selichos"], "Shabbat Mevarchim Chodesh": ["Shabbos Mevorchim Chodesh"], "Shabbat Shirah": ["Shabbos Shirah"], "Asara B'Tevet": ["Asara B’Teves"], "Birkat Hachamah": ["Birkas HaChamah"], "Birkat HaChamah": ["Birkas HaChamah"], "Shushan Purim Katan": ["Shushan Purim Koton"], "Alot HaShachar": ["Alos HaShachar"], "Misheyakir": ["Misheyakir"], "Misheyakir Machmir": ["Misheyakir Machmir"], "Sunrise": ["Sunrise"], "Kriat Shema, sof zeman": ["Krias Shema, sof zman"], "Tefilah, sof zeman": ["Tefilah, sof zman"], "Kriat Shema, sof zeman (MGA)": ["Krias Shema, sof zman (MGA)"], "Kriat Shema, sof zeman (GRA)": ["Krias Shema, sof zman (GRA)"], "Tefilah, sof zeman (MGA)": ["Tefilah, sof zman (MGA)"], "Tefilah, sof zeman (GRA)": ["Tefilah, sof zman (GRA)"], "Chatzot HaLailah": ["Chatzos HaLailah"], "Chatzot HaYom": ["Chatzos"], "Chatzot hayom": ["Chatzos"], "Mincha Gedolah": ["Mincha Gedolah"], "Mincha Ketanah": ["Mincha Ketanah"], "Plag HaMincha": ["Plag HaMincha"], "Sunset": ["Sunset"], "Bein HaShemashot": ["Bein HaShemashos"], "Tzeit HaKochavim": ["Tzeis HaKochavim"] } } };
3
3
 
4
4
  export { poAshkenazi as default };
5
5
  //# sourceMappingURL=ashkenazi.po.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ashkenazi.po.js","sources":["../../../src/ashkenazi.po.ts"],"sourcesContent":["export default {\"headers\":{\"plural-forms\":\"nplurals=2; plural=(n > 1);\",\"language\":\"en_CA@ashkenazi\"},\"contexts\":{\"\":{\"Shabbat\":[\"Shabbos\"],\"Achrei Mot\":[\"Achrei Mos\"],\"Bechukotai\":[\"Bechukosai\"],\"Beha'alotcha\":[\"Beha’aloscha\"],\"Bereshit\":[\"Bereshis\"],\"Chukat\":[\"Chukas\"],\"Erev Shavuot\":[\"Erev Shavuos\"],\"Erev Sukkot\":[\"Erev Sukkos\"],\"Ki Tavo\":[\"Ki Savo\"],\"Ki Teitzei\":[\"Ki Seitzei\"],\"Ki Tisa\":[\"Ki Sisa\"],\"Matot\":[\"Matos\"],\"Pesach Shabbat Chol ha-Moed\":[\"Pesach Shabbos Chol ha-Moed\"],\"Purim Katan\":[\"Purim Koton\"],\"Rosh Hashana LaBehemot\":[\"Rosh Hashana LaBeheimos\"],\"Shabbat Chazon\":[\"Shabbos Chazon\"],\"Shabbat HaChodesh\":[\"Shabbos HaChodesh\"],\"Shabbat HaGadol\":[\"Shabbos HaGadol\"],\"Shabbat Nachamu\":[\"Shabbos Nachamu\"],\"Shabbat Parah\":[\"Shabbos Parah\"],\"Shabbat Shekalim\":[\"Shabbos Shekalim\"],\"Shabbat Shuva\":[\"Shabbos Shuvah\"],\"Shabbat Zachor\":[\"Shabbos Zachor\"],\"Shavuot\":[\"Shavuos\"],\"Shavuot I\":[\"Shavuos I\"],\"Shavuot II\":[\"Shavuos II\"],\"Shemot\":[\"Shemos\"],\"Shmini Atzeret\":[\"Shmini Atzeres\"],\"Simchat Torah\":[\"Simchas Torah\"],\"Sukkot\":[\"Sukkos\"],\"Sukkot I\":[\"Sukkos I\"],\"Sukkot II\":[\"Sukkos II\"],\"Sukkot II (CH''M)\":[\"Sukkos II (CH’’M)\"],\"Sukkot III (CH''M)\":[\"Sukkos III (CH’’M)\"],\"Sukkot IV (CH''M)\":[\"Sukkos IV (CH’’M)\"],\"Sukkot V (CH''M)\":[\"Sukkos V (CH’’M)\"],\"Sukkot VI (CH''M)\":[\"Sukkos VI (CH’’M)\"],\"Sukkot VII (Hoshana Raba)\":[\"Sukkos VII (Hoshana Raba)\"],\"Sukkot Shabbat Chol ha-Moed\":[\"Sukkos Shabbos Chol ha-Moed\"],\"Ta'anit Bechorot\":[\"Ta’anis Bechoros\"],\"Ta'anit BeHaB\":[\"Ta’anis BeHaB\"],\"Ta'anit Esther\":[\"Ta’anis Esther\"],\"Toldot\":[\"Toldos\"],\"Vaetchanan\":[\"Vaeschanan\"],\"Yitro\":[\"Yisro\"],\"Vezot Haberakhah\":[\"Vezos Haberakhah\"],\"Parashat\":[\"Parshas\"],\"Leil Selichot\":[\"Leil Selichos\"],\"Shabbat Mevarchim Chodesh\":[\"Shabbos Mevorchim Chodesh\"],\"Shabbat Shirah\":[\"Shabbos Shirah\"],\"Asara B'Tevet\":[\"Asara B’Teves\"],\"Birkat Hachamah\":[\"Birkas HaChamah\"],\"Birkat HaChamah\":[\"Birkas HaChamah\"],\"Shushan Purim Katan\":[\"Shushan Purim Koton\"],\"Alot HaShachar\":[\"Alos HaShachar\"],\"Misheyakir\":[\"Misheyakir\"],\"Misheyakir Machmir\":[\"Misheyakir Machmir\"],\"Sunrise\":[\"Sunrise\"],\"Kriat Shema, sof zeman\":[\"Krias Shema, sof zman\"],\"Tefilah, sof zeman\":[\"Tefilah, sof zman\"],\"Kriat Shema, sof zeman (MGA)\":[\"Krias Shema, sof zman (MGA)\"],\"Kriat Shema, sof zeman (GRA)\":[\"Krias Shema, sof zman (GRA)\"],\"Tefilah, sof zeman (MGA)\":[\"Tefilah, sof zman (MGA)\"],\"Tefilah, sof zeman (GRA)\":[\"Tefilah, sof zman (GRA)\"],\"Chatzot HaLailah\":[\"Chatzos HaLailah\"],\"Chatzot HaYom\":[\"Chatzos\"],\"Chatzot hayom\":[\"Chatzos\"],\"Mincha Gedolah\":[\"Mincha Gedolah\"],\"Mincha Ketanah\":[\"Mincha Ketanah\"],\"Plag HaMincha\":[\"Plag HaMincha\"],\"Sunset\":[\"Sunset\"],\"Bein HaShemashot\":[\"Bein HaShemashos\"],\"Tzeit HaKochavim\":[\"Tzeis HaKochavim\"]}}}"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ashkenazi.po.js","sources":["../../../src/ashkenazi.po.ts"],"sourcesContent":["export default {\"headers\":{\"plural-forms\":\"nplurals=2; plural=(n > 1);\",\"language\":\"und-x-ashkenaz\"},\"contexts\":{\"\":{\"Shabbat\":[\"Shabbos\"],\"Achrei Mot\":[\"Achrei Mos\"],\"Bechukotai\":[\"Bechukosai\"],\"Beha'alotcha\":[\"Beha’aloscha\"],\"Bereshit\":[\"Bereshis\"],\"Chukat\":[\"Chukas\"],\"Erev Shavuot\":[\"Erev Shavuos\"],\"Erev Sukkot\":[\"Erev Sukkos\"],\"Ki Tavo\":[\"Ki Savo\"],\"Ki Teitzei\":[\"Ki Seitzei\"],\"Ki Tisa\":[\"Ki Sisa\"],\"Matot\":[\"Matos\"],\"Pesach Shabbat Chol ha-Moed\":[\"Pesach Shabbos Chol ha-Moed\"],\"Purim Katan\":[\"Purim Koton\"],\"Rosh Hashana LaBehemot\":[\"Rosh Hashana LaBeheimos\"],\"Shabbat Chazon\":[\"Shabbos Chazon\"],\"Shabbat HaChodesh\":[\"Shabbos HaChodesh\"],\"Shabbat HaGadol\":[\"Shabbos HaGadol\"],\"Shabbat Nachamu\":[\"Shabbos Nachamu\"],\"Shabbat Parah\":[\"Shabbos Parah\"],\"Shabbat Shekalim\":[\"Shabbos Shekalim\"],\"Shabbat Shuva\":[\"Shabbos Shuvah\"],\"Shabbat Zachor\":[\"Shabbos Zachor\"],\"Shavuot\":[\"Shavuos\"],\"Shavuot I\":[\"Shavuos I\"],\"Shavuot II\":[\"Shavuos II\"],\"Shemot\":[\"Shemos\"],\"Shmini Atzeret\":[\"Shmini Atzeres\"],\"Simchat Torah\":[\"Simchas Torah\"],\"Sukkot\":[\"Sukkos\"],\"Sukkot I\":[\"Sukkos I\"],\"Sukkot II\":[\"Sukkos II\"],\"Sukkot II (CH''M)\":[\"Sukkos II (CH’’M)\"],\"Sukkot III (CH''M)\":[\"Sukkos III (CH’’M)\"],\"Sukkot IV (CH''M)\":[\"Sukkos IV (CH’’M)\"],\"Sukkot V (CH''M)\":[\"Sukkos V (CH’’M)\"],\"Sukkot VI (CH''M)\":[\"Sukkos VI (CH’’M)\"],\"Sukkot VII (Hoshana Raba)\":[\"Sukkos VII (Hoshana Raba)\"],\"Sukkot Shabbat Chol ha-Moed\":[\"Sukkos Shabbos Chol ha-Moed\"],\"Ta'anit Bechorot\":[\"Ta’anis Bechoros\"],\"Ta'anit BeHaB\":[\"Ta’anis BeHaB\"],\"Ta'anit Esther\":[\"Ta’anis Esther\"],\"Toldot\":[\"Toldos\"],\"Vaetchanan\":[\"Vaeschanan\"],\"Yitro\":[\"Yisro\"],\"Vezot Haberakhah\":[\"Vezos Haberakhah\"],\"Parashat\":[\"Parshas\"],\"Leil Selichot\":[\"Leil Selichos\"],\"Shabbat Mevarchim Chodesh\":[\"Shabbos Mevorchim Chodesh\"],\"Shabbat Shirah\":[\"Shabbos Shirah\"],\"Asara B'Tevet\":[\"Asara B’Teves\"],\"Birkat Hachamah\":[\"Birkas HaChamah\"],\"Birkat HaChamah\":[\"Birkas HaChamah\"],\"Shushan Purim Katan\":[\"Shushan Purim Koton\"],\"Alot HaShachar\":[\"Alos HaShachar\"],\"Misheyakir\":[\"Misheyakir\"],\"Misheyakir Machmir\":[\"Misheyakir Machmir\"],\"Sunrise\":[\"Sunrise\"],\"Kriat Shema, sof zeman\":[\"Krias Shema, sof zman\"],\"Tefilah, sof zeman\":[\"Tefilah, sof zman\"],\"Kriat Shema, sof zeman (MGA)\":[\"Krias Shema, sof zman (MGA)\"],\"Kriat Shema, sof zeman (GRA)\":[\"Krias Shema, sof zman (GRA)\"],\"Tefilah, sof zeman (MGA)\":[\"Tefilah, sof zman (MGA)\"],\"Tefilah, sof zeman (GRA)\":[\"Tefilah, sof zman (GRA)\"],\"Chatzot HaLailah\":[\"Chatzos HaLailah\"],\"Chatzot HaYom\":[\"Chatzos\"],\"Chatzot hayom\":[\"Chatzos\"],\"Mincha Gedolah\":[\"Mincha Gedolah\"],\"Mincha Ketanah\":[\"Mincha Ketanah\"],\"Plag HaMincha\":[\"Plag HaMincha\"],\"Sunset\":[\"Sunset\"],\"Bein HaShemashot\":[\"Bein HaShemashos\"],\"Tzeit HaKochavim\":[\"Tzeis HaKochavim\"]}}}"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.6.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
1
+ /*! @hebcal/core v6.8.0, distributed under GPLv2 https://www.gnu.org/licenses/gpl-2.0.txt */
2
2
  import './locale.js';
3
3
  import { months, Locale, abs2greg, HDate } from '@hebcal/hdate';
4
4
  import { makeCandleEvent, makeFastStartEnd, makeWeekdayChanukahCandleLighting } from './candles.js';
@@ -192,10 +192,7 @@ function calendar(options = {}) {
192
192
  const mm = hd.getMonth();
193
193
  const dd = hd.getDate();
194
194
  // When Erev Pesach falls on Shabbat, burning chametz is moved to Friday.
195
- if (isFriday &&
196
- options.candlelighting &&
197
- mm === months.NISAN &&
198
- dd === 13) {
195
+ if (isFriday && options.candlelighting && mm === months.NISAN && dd === 13) {
199
196
  const biurEv = makeBiurChametzEvent(hd, options);
200
197
  if (biurEv) {
201
198
  evts.push(biurEv);
@@ -315,6 +312,7 @@ const RECOGNIZED_OPTIONS = {
315
312
  havdalahMins: 1,
316
313
  havdalahDeg: 1,
317
314
  fastEndDeg: 1,
315
+ fastEndMins: 1,
318
316
  sedrot: 1,
319
317
  il: 1,
320
318
  noMinorFast: 1,
@@ -342,8 +340,7 @@ const RECOGNIZED_OPTIONS = {
342
340
  */
343
341
  function warnUnrecognizedOptions(options) {
344
342
  for (const k of Object.keys(options)) {
345
- if (RECOGNIZED_OPTIONS[k] === undefined &&
346
- !unrecognizedAlreadyWarned.has(k)) {
343
+ if (RECOGNIZED_OPTIONS[k] === undefined && !unrecognizedAlreadyWarned.has(k)) {
347
344
  console.warn(`Ignoring unrecognized HebrewCalendar option: ${k}`);
348
345
  unrecognizedAlreadyWarned.add(k);
349
346
  }
@@ -381,15 +378,6 @@ const geoIdCandleOffset = {
381
378
  * @see {https://kosherjava.com/zmanim/docs/api/com/kosherjava/zmanim/ZmanimCalendar.html#ZENITH_8_POINT_5}
382
379
  */
383
380
  const TZEIT_3SMALL_STARS = 8.5;
384
- /**
385
- * @private
386
- * @constant
387
- * This calculation is based on observation of 3 medium sized stars by Dr. Baruch Cohen
388
- * in his calendar published in in 1899 in Strasbourg, France.
389
- * This calculates to 7.0833333° below geometric zenith.
390
- * @see {https://kosherjava.com/zmanim/docs/api/com/kosherjava/zmanim/ComplexZmanimCalendar.html#ZENITH_7_POINT_083}
391
- */
392
- const TZEIT_3MEDIUM_STARS = 7.0833333;
393
381
  /**
394
382
  * Modifies options in-place
395
383
  * @private
@@ -406,10 +394,14 @@ function checkCandleOptions(options) {
406
394
  typeof options.havdalahDeg === 'number') {
407
395
  throw new TypeError('options.havdalahMins and options.havdalahDeg are mutually exclusive');
408
396
  }
397
+ if (typeof options.fastEndDeg === 'number' &&
398
+ typeof options.fastEndMins === 'number') {
399
+ throw new TypeError('options.fastEndDeg and options.fastEndMins are mutually exclusive');
400
+ }
409
401
  const min0 = options.candleLightingMins;
410
402
  let min = typeof min0 === 'number' && !isNaN(min0) ? Math.trunc(min0) : 18;
411
403
  if (location.getIsrael() && Math.abs(min) === 18) {
412
- min = overrideIsraelCandleMins(location, min);
404
+ min = overrideIsraelCandleMins(location);
413
405
  }
414
406
  options.candleLightingMins = -1 * Math.abs(min);
415
407
  if (typeof options.havdalahMins === 'number') {
@@ -421,11 +413,14 @@ function checkCandleOptions(options) {
421
413
  else {
422
414
  options.havdalahDeg = TZEIT_3SMALL_STARS;
423
415
  }
424
- if (typeof options.fastEndDeg !== 'number') {
425
- options.fastEndDeg = TZEIT_3MEDIUM_STARS;
416
+ if (typeof options.fastEndDeg === 'number') {
417
+ options.fastEndDeg = Math.abs(options.fastEndDeg);
418
+ }
419
+ if (typeof options.fastEndMins === 'number') {
420
+ options.fastEndMins = Math.trunc(Math.abs(options.fastEndMins));
426
421
  }
427
422
  }
428
- function overrideIsraelCandleMins(location, min) {
423
+ function overrideIsraelCandleMins(location) {
429
424
  const geoid = location.getGeoId();
430
425
  if (geoid) {
431
426
  const offset = geoIdCandleOffset[geoid];
@@ -440,7 +435,7 @@ function overrideIsraelCandleMins(location, min) {
440
435
  return offset;
441
436
  }
442
437
  }
443
- return min;
438
+ return 20;
444
439
  }
445
440
  /**
446
441
  * Mask to filter Holiday array
@@ -629,8 +624,7 @@ function appendHolidayAndRelated(candlesEv, events, ev, options, isFriday, isSat
629
624
  events.push(ev); // the original event itself
630
625
  }
631
626
  }
632
- if ((isMajorFast || (isMinorFast && !options.noMinorFast)) &&
633
- fastEv?.endEvent) {
627
+ if ((isMajorFast || (isMinorFast && !options.noMinorFast)) && fastEv?.endEvent) {
634
628
  events.push(fastEv.endEvent);
635
629
  }
636
630
  return candlesEv;