@hebcal/core 6.5.0 → 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 (136) hide show
  1. package/dist/bundle.js +5983 -5473
  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 +7 -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.d.ts +1 -0
  20. package/dist/esm/ashkenazi.po.js +2 -2
  21. package/dist/esm/ashkenazi.po.js.map +1 -1
  22. package/dist/esm/calendar.d.ts +1 -0
  23. package/dist/esm/calendar.js +12 -2
  24. package/dist/esm/calendar.js.map +1 -1
  25. package/dist/esm/candles.d.ts +14 -1
  26. package/dist/esm/candles.js +15 -2
  27. package/dist/esm/candles.js.map +1 -1
  28. package/dist/esm/cities.json.js +5 -0
  29. package/dist/esm/cities.json.js.map +1 -0
  30. package/dist/esm/event.d.ts +58 -13
  31. package/dist/esm/event.js +59 -14
  32. package/dist/esm/event.js.map +1 -1
  33. package/dist/esm/getStartAndEnd.js +10 -2
  34. package/dist/esm/getStartAndEnd.js.map +1 -1
  35. package/dist/esm/hallel.js +20 -28
  36. package/dist/esm/hallel.js.map +1 -1
  37. package/dist/esm/he-x-NoNikud.po.js +1 -1
  38. package/dist/esm/he.po.d.ts +1 -0
  39. package/dist/esm/he.po.js +2 -2
  40. package/dist/esm/he.po.js.map +1 -1
  41. package/dist/esm/hebcal.d.ts +97 -19
  42. package/dist/esm/hebcal.js +102 -21
  43. package/dist/esm/hebcal.js.map +1 -1
  44. package/dist/esm/holidays.d.ts +21 -2
  45. package/dist/esm/holidays.js +39 -3
  46. package/dist/esm/holidays.js.map +1 -1
  47. package/dist/esm/index.d.ts +1 -1
  48. package/dist/esm/index.js +2 -1
  49. package/dist/esm/index.js.map +1 -1
  50. package/dist/esm/isAssurBemlacha.d.ts +24 -4
  51. package/dist/esm/isAssurBemlacha.js +25 -5
  52. package/dist/esm/isAssurBemlacha.js.map +1 -1
  53. package/dist/esm/isAveilut.d.ts +14 -3
  54. package/dist/esm/isAveilut.js +15 -4
  55. package/dist/esm/isAveilut.js.map +1 -1
  56. package/dist/esm/isFastDay.d.ts +13 -1
  57. package/dist/esm/isFastDay.js +14 -2
  58. package/dist/esm/isFastDay.js.map +1 -1
  59. package/dist/esm/locale.js +1 -1
  60. package/dist/esm/location.d.ts +96 -8
  61. package/dist/esm/location.js +112 -88
  62. package/dist/esm/location.js.map +1 -1
  63. package/dist/esm/modern.js +1 -1
  64. package/dist/esm/molad.d.ts +39 -7
  65. package/dist/esm/molad.js +40 -8
  66. package/dist/esm/molad.js.map +1 -1
  67. package/dist/esm/moladBase.js +1 -1
  68. package/dist/esm/moladDate.js +1 -1
  69. package/dist/esm/omer.d.ts +32 -4
  70. package/dist/esm/omer.js +33 -5
  71. package/dist/esm/omer.js.map +1 -1
  72. package/dist/esm/parshaName.js +1 -1
  73. package/dist/esm/parshaYear.d.ts +12 -1
  74. package/dist/esm/parshaYear.js +13 -2
  75. package/dist/esm/parshaYear.js.map +1 -1
  76. package/dist/esm/pkgVersion.d.ts +1 -1
  77. package/dist/esm/pkgVersion.js +2 -2
  78. package/dist/esm/pkgVersion.js.map +1 -1
  79. package/dist/esm/reformatTimeStr.js +1 -1
  80. package/dist/esm/sedra.d.ts +94 -14
  81. package/dist/esm/sedra.js +95 -15
  82. package/dist/esm/sedra.js.map +1 -1
  83. package/dist/esm/sefira.json.js +1 -1
  84. package/dist/esm/staticHolidays.d.ts +2 -0
  85. package/dist/esm/staticHolidays.js +3 -1
  86. package/dist/esm/staticHolidays.js.map +1 -1
  87. package/dist/esm/tachanun.js +1 -1
  88. package/dist/esm/temporal-shim.js +1 -1
  89. package/dist/esm/zmanim.js +1 -1
  90. package/dist/src/CalOptions.d.ts +7 -4
  91. package/dist/src/DailyLearning.d.ts +44 -7
  92. package/dist/src/DailyLearning.js +44 -7
  93. package/dist/src/HolidayEvent.d.ts +34 -1
  94. package/dist/src/HolidayEvent.js +34 -1
  95. package/dist/src/TimedEvent.d.ts +32 -3
  96. package/dist/src/TimedEvent.js +32 -3
  97. package/dist/src/ashkenazi.po.d.ts +1 -0
  98. package/dist/src/ashkenazi.po.js +1 -1
  99. package/dist/src/calendar.d.ts +1 -0
  100. package/dist/src/calendar.js +11 -1
  101. package/dist/src/candles.d.ts +14 -1
  102. package/dist/src/candles.js +14 -1
  103. package/dist/src/cities.json +67 -0
  104. package/dist/src/event.d.ts +58 -13
  105. package/dist/src/event.js +58 -13
  106. package/dist/src/getStartAndEnd.js +9 -1
  107. package/dist/src/hallel.js +19 -27
  108. package/dist/src/he.po.d.ts +1 -0
  109. package/dist/src/he.po.js +1 -1
  110. package/dist/src/hebcal.d.ts +97 -19
  111. package/dist/src/hebcal.js +101 -20
  112. package/dist/src/holidays.d.ts +21 -2
  113. package/dist/src/holidays.js +38 -2
  114. package/dist/src/index.d.ts +1 -1
  115. package/dist/src/index.js +1 -0
  116. package/dist/src/isAssurBemlacha.d.ts +24 -4
  117. package/dist/src/isAssurBemlacha.js +24 -4
  118. package/dist/src/isAveilut.d.ts +14 -3
  119. package/dist/src/isAveilut.js +14 -3
  120. package/dist/src/isFastDay.d.ts +13 -1
  121. package/dist/src/isFastDay.js +13 -1
  122. package/dist/src/location.d.ts +96 -8
  123. package/dist/src/location.js +111 -87
  124. package/dist/src/molad.d.ts +39 -7
  125. package/dist/src/molad.js +39 -7
  126. package/dist/src/omer.d.ts +32 -4
  127. package/dist/src/omer.js +32 -4
  128. package/dist/src/parshaYear.d.ts +12 -1
  129. package/dist/src/parshaYear.js +12 -1
  130. package/dist/src/pkgVersion.d.ts +1 -1
  131. package/dist/src/pkgVersion.js +1 -1
  132. package/dist/src/sedra.d.ts +94 -14
  133. package/dist/src/sedra.js +94 -14
  134. package/dist/src/staticHolidays.d.ts +2 -0
  135. package/dist/src/staticHolidays.js +2 -0
  136. package/package.json +6 -6
@@ -22,7 +22,7 @@ export type CalOptions = {
22
22
  */
23
23
  month?: number | string;
24
24
  /**
25
- * generate calendar for multiple years (default 1)
25
+ * generate calendar for multiple years (default 1, maximum 2000)
26
26
  */
27
27
  numYears?: number;
28
28
  /**
@@ -50,8 +50,7 @@ export type CalOptions = {
50
50
  havdalahMins?: number;
51
51
  /**
52
52
  * degrees for solar depression for Havdalah.
53
- * Default is 8.5 degrees for 3 small stars. use 7.083 degrees for 3 medium-sized stars
54
- * (observed by Dr. Baruch (Berthold) Cohn in his luach published in France in 1899).
53
+ * Default is 8.5 degrees for 3 small stars. use 7.083 degrees for 3 medium-sized stars.
55
54
  * If `0`, Havdalah times are suppressed.
56
55
  */
57
56
  havdalahDeg?: number;
@@ -70,7 +69,7 @@ export type CalOptions = {
70
69
  */
71
70
  useElevation?: boolean;
72
71
  /**
73
- * calculate parashah hashavua on Saturdays
72
+ * calculate Parashat HaShavua on Saturdays
74
73
  */
75
74
  sedrot?: boolean;
76
75
  /**
@@ -143,6 +142,10 @@ export type CalOptions = {
143
142
  * See {@link https://en.wikipedia.org/wiki/Yom_Kippur_Katan#Practices Wikipedia Yom Kippur Katan practices}
144
143
  */
145
144
  yomKippurKatan?: boolean;
145
+ /**
146
+ * include BeHaB fast days on Monday, Thursday and Monday after Pesach and Sukkot (default `false`).
147
+ */
148
+ behab?: boolean;
146
149
  /**
147
150
  * Whether to use 12-hour time (as opposed to 24-hour time).
148
151
  * Possible values are `true` and `false`; the default is locale dependent.
@@ -1,32 +1,69 @@
1
1
  import { HDate } from '@hebcal/hdate';
2
2
  import { Event } from './event';
3
3
  /**
4
- * Plug-ins for daily learning calendars such as Daf Yomi, Mishna Yomi, Nach Yomi, etc.
4
+ * Plug-in registry for daily learning calendars such as Daf Yomi (Bavli),
5
+ * Yerushalmi Yomi, Mishna Yomi, Nach Yomi, etc.
5
6
  *
6
- * Learning schedules are provided by the `@hebcal/learning` package.
7
+ * `@hebcal/core` itself contains no learning schedules they are provided
8
+ * by the {@link https://github.com/hebcal/hebcal-learning @hebcal/learning}
9
+ * package, which calls {@link DailyLearning.addCalendar} on import. After
10
+ * `@hebcal/learning` is loaded, `HebrewCalendar.calendar()` will emit
11
+ * learning events when the corresponding `options.dailyLearning` flag is set.
12
+ *
13
+ * @example
14
+ * import '@hebcal/learning';
15
+ * import {DailyLearning, HDate} from '@hebcal/core';
16
+ *
17
+ * const ev = DailyLearning.lookup('dafYomi', new HDate(), false);
18
+ * console.log(ev?.render('en')); // e.g. 'Berakhot 2'
7
19
  */
8
20
  export declare class DailyLearning {
9
21
  /**
10
- * Register a new learning calendar.
22
+ * Registers a new learning calendar.
23
+ *
24
+ * The provided function is called whenever a caller asks for an event
25
+ * from this calendar; if no learning occurs that day (e.g. the date is
26
+ * before the cycle's start) it should return `null`.
27
+ * @example
28
+ * DailyLearning.addCalendar(
29
+ * 'myCalendar',
30
+ * (hd, il) => new Event(hd, 'Today\'s learning', 0),
31
+ * new HDate(1, 'Tishrei', 5780),
32
+ * );
11
33
  * @param name case insensitive
12
34
  * @param calendar a function that returns an `Event` or `null`
13
35
  * @param startDate the first date for which this calendar is valid
14
36
  */
15
37
  static addCalendar(name: string, calendar: (hd: HDate, il: boolean) => Event | null, startDate?: HDate): void;
16
38
  /**
17
- * Returns an event from daily calendar for a given date. Returns `null` if there
18
- * is no learning from this calendar on this date.
39
+ * Returns the learning event for the given date from the named calendar,
40
+ * or `null` if there is no learning that day (or the named calendar is
41
+ * not registered).
42
+ * @example
43
+ * import '@hebcal/learning';
44
+ * import {DailyLearning, HDate} from '@hebcal/core';
45
+ * DailyLearning.lookup('dafYomi', new HDate(2024, 1, 15), false);
19
46
  * @param name case insensitive
20
47
  * @param hd Hebrew Date
21
48
  * @param il true for Israel, false for Diaspora
22
49
  */
23
50
  static lookup(name: string, hd: HDate, il: boolean): Event | null;
51
+ /**
52
+ * Returns the first Hebrew date for which the named learning calendar
53
+ * is valid (as registered by {@link addCalendar}), or `undefined` if the
54
+ * calendar was not registered with a start date or is not registered at all.
55
+ * @param name case insensitive
56
+ */
24
57
  static getStartDate(name: string): HDate | undefined;
25
58
  /**
26
- * Tests to see if learning calendar has been registered
59
+ * Returns `true` if a learning calendar with the given name has been
60
+ * registered via {@link addCalendar}.
27
61
  * @param name case insensitive
28
62
  */
29
63
  static has(name: string): boolean;
30
- /** Returns the names of all calendars registered */
64
+ /**
65
+ * Returns the (lower-cased) names of all currently-registered learning
66
+ * calendars.
67
+ */
31
68
  static getCalendars(): string[];
32
69
  }
@@ -1,13 +1,35 @@
1
- /*! @hebcal/core v6.5.0, 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
  const cals = new Map();
3
3
  /**
4
- * Plug-ins for daily learning calendars such as Daf Yomi, Mishna Yomi, Nach Yomi, etc.
4
+ * Plug-in registry for daily learning calendars such as Daf Yomi (Bavli),
5
+ * Yerushalmi Yomi, Mishna Yomi, Nach Yomi, etc.
5
6
  *
6
- * Learning schedules are provided by the `@hebcal/learning` package.
7
+ * `@hebcal/core` itself contains no learning schedules they are provided
8
+ * by the {@link https://github.com/hebcal/hebcal-learning @hebcal/learning}
9
+ * package, which calls {@link DailyLearning.addCalendar} on import. After
10
+ * `@hebcal/learning` is loaded, `HebrewCalendar.calendar()` will emit
11
+ * learning events when the corresponding `options.dailyLearning` flag is set.
12
+ *
13
+ * @example
14
+ * import '@hebcal/learning';
15
+ * import {DailyLearning, HDate} from '@hebcal/core';
16
+ *
17
+ * const ev = DailyLearning.lookup('dafYomi', new HDate(), false);
18
+ * console.log(ev?.render('en')); // e.g. 'Berakhot 2'
7
19
  */
8
20
  class DailyLearning {
9
21
  /**
10
- * Register a new learning calendar.
22
+ * Registers a new learning calendar.
23
+ *
24
+ * The provided function is called whenever a caller asks for an event
25
+ * from this calendar; if no learning occurs that day (e.g. the date is
26
+ * before the cycle's start) it should return `null`.
27
+ * @example
28
+ * DailyLearning.addCalendar(
29
+ * 'myCalendar',
30
+ * (hd, il) => new Event(hd, 'Today\'s learning', 0),
31
+ * new HDate(1, 'Tishrei', 5780),
32
+ * );
11
33
  * @param name case insensitive
12
34
  * @param calendar a function that returns an `Event` or `null`
13
35
  * @param startDate the first date for which this calendar is valid
@@ -22,8 +44,13 @@ class DailyLearning {
22
44
  });
23
45
  }
24
46
  /**
25
- * Returns an event from daily calendar for a given date. Returns `null` if there
26
- * is no learning from this calendar on this date.
47
+ * Returns the learning event for the given date from the named calendar,
48
+ * or `null` if there is no learning that day (or the named calendar is
49
+ * not registered).
50
+ * @example
51
+ * import '@hebcal/learning';
52
+ * import {DailyLearning, HDate} from '@hebcal/core';
53
+ * DailyLearning.lookup('dafYomi', new HDate(2024, 1, 15), false);
27
54
  * @param name case insensitive
28
55
  * @param hd Hebrew Date
29
56
  * @param il true for Israel, false for Diaspora
@@ -35,6 +62,12 @@ class DailyLearning {
35
62
  }
36
63
  return null;
37
64
  }
65
+ /**
66
+ * Returns the first Hebrew date for which the named learning calendar
67
+ * is valid (as registered by {@link addCalendar}), or `undefined` if the
68
+ * calendar was not registered with a start date or is not registered at all.
69
+ * @param name case insensitive
70
+ */
38
71
  static getStartDate(name) {
39
72
  const cal = cals.get(name.toLowerCase());
40
73
  if (typeof cal === 'object') {
@@ -43,13 +76,17 @@ class DailyLearning {
43
76
  return undefined;
44
77
  }
45
78
  /**
46
- * Tests to see if learning calendar has been registered
79
+ * Returns `true` if a learning calendar with the given name has been
80
+ * registered via {@link addCalendar}.
47
81
  * @param name case insensitive
48
82
  */
49
83
  static has(name) {
50
84
  return cals.has(name.toLowerCase());
51
85
  }
52
- /** Returns the names of all calendars registered */
86
+ /**
87
+ * Returns the (lower-cased) names of all currently-registered learning
88
+ * calendars.
89
+ */
53
90
  static getCalendars() {
54
91
  return Array.from(cals.keys());
55
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DailyLearning.js","sources":["../../../src/DailyLearning.ts"],"sourcesContent":["import {HDate} from '@hebcal/hdate';\nimport {Event} from './event';\n\ntype LearningCalendar = {\n fn: (hd: HDate, il: boolean) => Event | null;\n startDate?: HDate;\n};\nconst cals = new Map<string, LearningCalendar>();\n\n/**\n * Plug-ins for daily learning calendars such as Daf Yomi, Mishna Yomi, Nach Yomi, etc.\n *\n * Learning schedules are provided by the `@hebcal/learning` package.\n */\nexport class DailyLearning {\n /**\n * Register a new learning calendar.\n * @param name case insensitive\n * @param calendar a function that returns an `Event` or `null`\n * @param startDate the first date for which this calendar is valid\n */\n static addCalendar(\n name: string,\n calendar: (hd: HDate, il: boolean) => Event | null,\n startDate?: HDate\n ) {\n if (typeof calendar !== 'function') {\n throw new TypeError(`Invalid calendar function: ${calendar}`);\n }\n cals.set(name.toLowerCase(), {\n fn: calendar,\n startDate: startDate,\n });\n }\n\n /**\n * Returns an event from daily calendar for a given date. Returns `null` if there\n * is no learning from this calendar on this date.\n * @param name case insensitive\n * @param hd Hebrew Date\n * @param il true for Israel, false for Diaspora\n */\n static lookup(name: string, hd: HDate, il: boolean): Event | null {\n const cal = cals.get(name.toLowerCase());\n if (typeof cal === 'object') {\n return cal.fn(hd, il);\n }\n return null;\n }\n\n static getStartDate(name: string): HDate | undefined {\n const cal = cals.get(name.toLowerCase());\n if (typeof cal === 'object') {\n return cal.startDate;\n }\n return undefined;\n }\n\n /**\n * Tests to see if learning calendar has been registered\n * @param name case insensitive\n */\n static has(name: string): boolean {\n return cals.has(name.toLowerCase());\n }\n\n /** Returns the names of all calendars registered */\n static getCalendars(): string[] {\n return Array.from(cals.keys());\n }\n}\n"],"names":[],"mappings":";AAOA,MAAM,IAAI,GAAG,IAAI,GAAG,EAA4B;AAEhD;;;;AAIG;MACU,aAAa,CAAA;AACxB;;;;;AAKG;AACH,IAAA,OAAO,WAAW,CAChB,IAAY,EACZ,QAAkD,EAClD,SAAiB,EAAA;AAEjB,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAClC,YAAA,MAAM,IAAI,SAAS,CAAC,8BAA8B,QAAQ,CAAA,CAAE,CAAC;QAC/D;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AAC3B,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,SAAS,EAAE,SAAS;AACrB,SAAA,CAAC;IACJ;AAEA;;;;;;AAMG;AACH,IAAA,OAAO,MAAM,CAAC,IAAY,EAAE,EAAS,EAAE,EAAW,EAAA;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACxC,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;QACvB;AACA,QAAA,OAAO,IAAI;IACb;IAEA,OAAO,YAAY,CAAC,IAAY,EAAA;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACxC,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,OAAO,GAAG,CAAC,SAAS;QACtB;AACA,QAAA,OAAO,SAAS;IAClB;AAEA;;;AAGG;IACH,OAAO,GAAG,CAAC,IAAY,EAAA;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrC;;AAGA,IAAA,OAAO,YAAY,GAAA;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAChC;AACD;;;;"}
1
+ {"version":3,"file":"DailyLearning.js","sources":["../../../src/DailyLearning.ts"],"sourcesContent":["import {HDate} from '@hebcal/hdate';\nimport {Event} from './event';\n\ntype LearningCalendar = {\n fn: (hd: HDate, il: boolean) => Event | null;\n startDate?: HDate;\n};\nconst cals = new Map<string, LearningCalendar>();\n\n/**\n * Plug-in registry for daily learning calendars such as Daf Yomi (Bavli),\n * Yerushalmi Yomi, Mishna Yomi, Nach Yomi, etc.\n *\n * `@hebcal/core` itself contains no learning schedules — they are provided\n * by the {@link https://github.com/hebcal/hebcal-learning @hebcal/learning}\n * package, which calls {@link DailyLearning.addCalendar} on import. After\n * `@hebcal/learning` is loaded, `HebrewCalendar.calendar()` will emit\n * learning events when the corresponding `options.dailyLearning` flag is set.\n *\n * @example\n * import '@hebcal/learning';\n * import {DailyLearning, HDate} from '@hebcal/core';\n *\n * const ev = DailyLearning.lookup('dafYomi', new HDate(), false);\n * console.log(ev?.render('en')); // e.g. 'Berakhot 2'\n */\nexport class DailyLearning {\n /**\n * Registers a new learning calendar.\n *\n * The provided function is called whenever a caller asks for an event\n * from this calendar; if no learning occurs that day (e.g. the date is\n * before the cycle's start) it should return `null`.\n * @example\n * DailyLearning.addCalendar(\n * 'myCalendar',\n * (hd, il) => new Event(hd, 'Today\\'s learning', 0),\n * new HDate(1, 'Tishrei', 5780),\n * );\n * @param name case insensitive\n * @param calendar a function that returns an `Event` or `null`\n * @param startDate the first date for which this calendar is valid\n */\n static addCalendar(\n name: string,\n calendar: (hd: HDate, il: boolean) => Event | null,\n startDate?: HDate\n ) {\n if (typeof calendar !== 'function') {\n throw new TypeError(`Invalid calendar function: ${calendar}`);\n }\n cals.set(name.toLowerCase(), {\n fn: calendar,\n startDate: startDate,\n });\n }\n\n /**\n * Returns the learning event for the given date from the named calendar,\n * or `null` if there is no learning that day (or the named calendar is\n * not registered).\n * @example\n * import '@hebcal/learning';\n * import {DailyLearning, HDate} from '@hebcal/core';\n * DailyLearning.lookup('dafYomi', new HDate(2024, 1, 15), false);\n * @param name case insensitive\n * @param hd Hebrew Date\n * @param il true for Israel, false for Diaspora\n */\n static lookup(name: string, hd: HDate, il: boolean): Event | null {\n const cal = cals.get(name.toLowerCase());\n if (typeof cal === 'object') {\n return cal.fn(hd, il);\n }\n return null;\n }\n\n /**\n * Returns the first Hebrew date for which the named learning calendar\n * is valid (as registered by {@link addCalendar}), or `undefined` if the\n * calendar was not registered with a start date or is not registered at all.\n * @param name case insensitive\n */\n static getStartDate(name: string): HDate | undefined {\n const cal = cals.get(name.toLowerCase());\n if (typeof cal === 'object') {\n return cal.startDate;\n }\n return undefined;\n }\n\n /**\n * Returns `true` if a learning calendar with the given name has been\n * registered via {@link addCalendar}.\n * @param name case insensitive\n */\n static has(name: string): boolean {\n return cals.has(name.toLowerCase());\n }\n\n /**\n * Returns the (lower-cased) names of all currently-registered learning\n * calendars.\n */\n static getCalendars(): string[] {\n return Array.from(cals.keys());\n }\n}\n"],"names":[],"mappings":";AAOA,MAAM,IAAI,GAAG,IAAI,GAAG,EAA4B;AAEhD;;;;;;;;;;;;;;;;AAgBG;MACU,aAAa,CAAA;AACxB;;;;;;;;;;;;;;;AAeG;AACH,IAAA,OAAO,WAAW,CAChB,IAAY,EACZ,QAAkD,EAClD,SAAiB,EAAA;AAEjB,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAClC,YAAA,MAAM,IAAI,SAAS,CAAC,8BAA8B,QAAQ,CAAA,CAAE,CAAC;QAC/D;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AAC3B,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,SAAS,EAAE,SAAS;AACrB,SAAA,CAAC;IACJ;AAEA;;;;;;;;;;;AAWG;AACH,IAAA,OAAO,MAAM,CAAC,IAAY,EAAE,EAAS,EAAE,EAAW,EAAA;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACxC,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;QACvB;AACA,QAAA,OAAO,IAAI;IACb;AAEA;;;;;AAKG;IACH,OAAO,YAAY,CAAC,IAAY,EAAA;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACxC,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,OAAO,GAAG,CAAC,SAAS;QACtB;AACA,QAAA,OAAO,SAAS;IAClB;AAEA;;;;AAIG;IACH,OAAO,GAAG,CAAC,IAAY,EAAA;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrC;AAEA;;;AAGG;AACH,IAAA,OAAO,YAAY,GAAA;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAChC;AACD;;;;"}
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.5.0, 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 { Locale, gematriya, months } from '@hebcal/hdate';
3
3
  import { Event, flags } from './event.js';
4
4
  import './locale.js';
@@ -1,7 +1,22 @@
1
1
  import { HDate } from '@hebcal/hdate';
2
2
  import { Event } from './event';
3
3
  import './locale';
4
- /** Represents a built-in holiday like Pesach, Purim or Tu BiShvat */
4
+ /**
5
+ * Represents a built-in holiday like Pesach, Purim or Tu BiShvat.
6
+ *
7
+ * Most holiday-related events emitted by {@link HebrewCalendar.calendar}
8
+ * are instances of `HolidayEvent` or one of its subclasses
9
+ * ({@link ChanukahEvent}, {@link AsaraBTevetEvent},
10
+ * {@link RoshHashanaEvent}, {@link RoshChodeshEvent}).
11
+ *
12
+ * Adds two notable behaviors over the base {@link Event}:
13
+ *
14
+ * - {@link HolidayEvent.basename} strips qualifiers like `Erev `, ` I`/`II`,
15
+ * `(CH''M)`, `(observed)`, candle counts, etc. (e.g. `"Erev Pesach"` →
16
+ * `"Pesach"`).
17
+ * - {@link HolidayEvent.url} returns a `https://www.hebcal.com/holidays/...`
18
+ * link for the holiday.
19
+ */
5
20
  export declare class HolidayEvent extends Event {
6
21
  /** During Sukkot or Pesach */
7
22
  cholHaMoedDay?: number;
@@ -12,7 +27,25 @@ export declare class HolidayEvent extends Event {
12
27
  */
13
28
  observed?: boolean;
14
29
  constructor(date: HDate, desc: string, mask?: number, attrs?: object);
30
+ /**
31
+ * Returns a simplified (untranslated) name for this holiday, stripping
32
+ * qualifiers so that related events group under one name.
33
+ *
34
+ * Strips trailing 4-digit years, `(CH''M)`, `(observed)`, `(Hoshana Raba)`,
35
+ * Roman-numeral day numbers (` I`, ` II`, ...), Chanukah candle counts,
36
+ * `: 8th Day`, and a leading `"Erev "`.
37
+ * @example
38
+ * // 'Erev Pesach' => 'Pesach'
39
+ * // 'Sukkot III (CH''M)' => 'Sukkot'
40
+ * // 'Chanukah: 5 Candles' => 'Chanukah'
41
+ * // 'Rosh Hashana 5784' => 'Rosh Hashana'
42
+ */
15
43
  basename(): string;
44
+ /**
45
+ * Returns a `https://www.hebcal.com/holidays/...` URL for more detail on
46
+ * this holiday. Israel-only holidays get an `?i=on` query parameter.
47
+ * Returns `undefined` for years outside `[100, 2999]`.
48
+ */
16
49
  url(): string | undefined;
17
50
  urlDateSuffix(): string;
18
51
  getEmoji(): string;
@@ -1,10 +1,25 @@
1
- /*! @hebcal/core v6.5.0, 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 { isoDateString, Locale } from '@hebcal/hdate';
3
3
  import { Event, flags } from './event.js';
4
4
  import { holidayDesc } from './staticHolidays.js';
5
5
  import './locale.js';
6
6
 
7
- /** Represents a built-in holiday like Pesach, Purim or Tu BiShvat */
7
+ /**
8
+ * Represents a built-in holiday like Pesach, Purim or Tu BiShvat.
9
+ *
10
+ * Most holiday-related events emitted by {@link HebrewCalendar.calendar}
11
+ * are instances of `HolidayEvent` or one of its subclasses
12
+ * ({@link ChanukahEvent}, {@link AsaraBTevetEvent},
13
+ * {@link RoshHashanaEvent}, {@link RoshChodeshEvent}).
14
+ *
15
+ * Adds two notable behaviors over the base {@link Event}:
16
+ *
17
+ * - {@link HolidayEvent.basename} strips qualifiers like `Erev `, ` I`/`II`,
18
+ * `(CH''M)`, `(observed)`, candle counts, etc. (e.g. `"Erev Pesach"` →
19
+ * `"Pesach"`).
20
+ * - {@link HolidayEvent.url} returns a `https://www.hebcal.com/holidays/...`
21
+ * link for the holiday.
22
+ */
8
23
  class HolidayEvent extends Event {
9
24
  /** During Sukkot or Pesach */
10
25
  cholHaMoedDay;
@@ -20,6 +35,19 @@ class HolidayEvent extends Event {
20
35
  Object.assign(this, attrs);
21
36
  }
22
37
  }
38
+ /**
39
+ * Returns a simplified (untranslated) name for this holiday, stripping
40
+ * qualifiers so that related events group under one name.
41
+ *
42
+ * Strips trailing 4-digit years, `(CH''M)`, `(observed)`, `(Hoshana Raba)`,
43
+ * Roman-numeral day numbers (` I`, ` II`, ...), Chanukah candle counts,
44
+ * `: 8th Day`, and a leading `"Erev "`.
45
+ * @example
46
+ * // 'Erev Pesach' => 'Pesach'
47
+ * // 'Sukkot III (CH''M)' => 'Sukkot'
48
+ * // 'Chanukah: 5 Candles' => 'Chanukah'
49
+ * // 'Rosh Hashana 5784' => 'Rosh Hashana'
50
+ */
23
51
  basename() {
24
52
  return this.getDesc()
25
53
  .replace(/ \d{4}$/, '')
@@ -31,6 +59,11 @@ class HolidayEvent extends Event {
31
59
  .replace(/: 8th Day$/, '')
32
60
  .replace(/^Erev /, '');
33
61
  }
62
+ /**
63
+ * Returns a `https://www.hebcal.com/holidays/...` URL for more detail on
64
+ * this holiday. Israel-only holidays get an `?i=on` query parameter.
65
+ * Returns `undefined` for years outside `[100, 2999]`.
66
+ */
34
67
  url() {
35
68
  const year = this.greg().getFullYear();
36
69
  if (year < 100 || year > 2999) {
@@ -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 './locale'; // Adds Hebrew and Ashkenazic translations\n\n/** Represents a built-in holiday like Pesach, Purim or Tu BiShvat */\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 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 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 this.basename().toLowerCase().replace(/'/g, '').replace(/ /g, '-') +\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 str.replace(/'/g, '’');\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 str.replace(/'/g, '’');\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.replace(/-/g, '');\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 = monthName0.replace(/'/g, '’');\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 './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 this.basename().toLowerCase().replace(/'/g, '').replace(/ /g, '-') +\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 str.replace(/'/g, '’');\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 str.replace(/'/g, '’');\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.replace(/-/g, '');\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 = monthName0.replace(/'/g, '’');\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.5.0, 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 { Locale, HDate, months } from '@hebcal/hdate';
3
3
  import { Event, flags } from './event.js';
4
4
  import { Molad } from './molad.js';
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.5.0, 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 { Event, flags } from './event.js';
3
3
  import { isoDateString } from '@hebcal/hdate';
4
4
  import { renderParshaName } from './parshaName.js';
@@ -3,12 +3,26 @@ import { CalOptions } from './CalOptions';
3
3
  import { Location } from './location';
4
4
  import { Event } from './event';
5
5
  import './locale';
6
- /** An event that has an `eventTime` and `eventTimeStr` */
6
+ /**
7
+ * Base class for events that have an associated wall-clock time and
8
+ * geographic location — for example, candle lighting, havdalah, and
9
+ * fast begin/end times.
10
+ *
11
+ * Stores both a `Date` (`eventTime`) and pre-formatted 24-hour
12
+ * (`eventTimeStr`) and locale-aware (`fmtTime`) strings. May reference a
13
+ * "linked" event such as the holiday whose candle-lighting time this
14
+ * represents.
15
+ */
7
16
  export declare class TimedEvent extends Event {
17
+ /** The exact moment of the event, rounded to the nearest minute */
8
18
  readonly eventTime: Date;
19
+ /** Geographic location used to compute `eventTime` */
9
20
  readonly location: Location;
21
+ /** 24-hour formatted time string in the location's timezone (e.g. `"19:42"`) */
10
22
  readonly eventTimeStr: string;
23
+ /** Locale-aware formatted time string (e.g. `"7:42pm"` in US locale) */
11
24
  readonly fmtTime: string;
25
+ /** Optional event this time is associated with (e.g. the Yom Tov being lit for) */
12
26
  readonly linkedEvent?: Event;
13
27
  /**
14
28
  * @param desc Description (not translated)
@@ -25,12 +39,27 @@ export declare class TimedEvent extends Event {
25
39
  renderBrief(locale?: string): string;
26
40
  getCategories(): string[];
27
41
  }
28
- /** Candle lighting before Shabbat or holiday */
42
+ /**
43
+ * Candle-lighting event for the eve of Shabbat or a Yom Tov.
44
+ *
45
+ * Generated by {@link HebrewCalendar.calendar} when `options.candlelighting`
46
+ * is `true` and `options.location` is provided. By default candle lighting
47
+ * occurs 18 minutes before sundown (40 minutes in Jerusalem; 30 minutes in
48
+ * Haifa and Zikhron Ya'akov), configurable via `options.candleLightingMins`.
49
+ */
29
50
  export declare class CandleLightingEvent extends TimedEvent {
30
51
  constructor(date: HDate, mask: number, eventTime: Date, location: Location, linkedEvent?: Event, options?: CalOptions);
31
52
  getEmoji(): string;
32
53
  }
33
- /** Havdalah after Shabbat or holiday */
54
+ /**
55
+ * Havdalah event marking the end of Shabbat or a Yom Tov.
56
+ *
57
+ * Generated by {@link HebrewCalendar.calendar} when `options.candlelighting`
58
+ * is `true` and `options.location` is provided. By default Havdalah is
59
+ * calculated by *tzeit hakochavim* (8.5° solar depression); pass
60
+ * `options.havdalahMins` to use a fixed minute offset instead, or
61
+ * `options.havdalahDeg` to use a different degree.
62
+ */
34
63
  export declare class HavdalahEvent extends TimedEvent {
35
64
  private readonly havdalahMins?;
36
65
  constructor(date: HDate, mask: number, eventTime: Date, location: Location, havdalahMins?: number, linkedEvent?: Event, options?: CalOptions);
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v6.5.0, 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 { Locale } from '@hebcal/hdate';
3
3
  import { Event } from './event.js';
4
4
  import { reformatTimeStr } from './reformatTimeStr.js';
@@ -8,12 +8,26 @@ import './locale.js';
8
8
 
9
9
  const HAVDALAH = holidayDesc.HAVDALAH;
10
10
  const CANDLE_LIGHTING = holidayDesc.CANDLE_LIGHTING;
11
- /** An event that has an `eventTime` and `eventTimeStr` */
11
+ /**
12
+ * Base class for events that have an associated wall-clock time and
13
+ * geographic location — for example, candle lighting, havdalah, and
14
+ * fast begin/end times.
15
+ *
16
+ * Stores both a `Date` (`eventTime`) and pre-formatted 24-hour
17
+ * (`eventTimeStr`) and locale-aware (`fmtTime`) strings. May reference a
18
+ * "linked" event such as the holiday whose candle-lighting time this
19
+ * represents.
20
+ */
12
21
  class TimedEvent extends Event {
22
+ /** The exact moment of the event, rounded to the nearest minute */
13
23
  eventTime;
24
+ /** Geographic location used to compute `eventTime` */
14
25
  location;
26
+ /** 24-hour formatted time string in the location's timezone (e.g. `"19:42"`) */
15
27
  eventTimeStr;
28
+ /** Locale-aware formatted time string (e.g. `"7:42pm"` in US locale) */
16
29
  fmtTime;
30
+ /** Optional event this time is associated with (e.g. the Yom Tov being lit for) */
17
31
  linkedEvent;
18
32
  /**
19
33
  * @param desc Description (not translated)
@@ -65,7 +79,14 @@ class TimedEvent extends Event {
65
79
  return ['unknown'];
66
80
  }
67
81
  }
68
- /** Candle lighting before Shabbat or holiday */
82
+ /**
83
+ * Candle-lighting event for the eve of Shabbat or a Yom Tov.
84
+ *
85
+ * Generated by {@link HebrewCalendar.calendar} when `options.candlelighting`
86
+ * is `true` and `options.location` is provided. By default candle lighting
87
+ * occurs 18 minutes before sundown (40 minutes in Jerusalem; 30 minutes in
88
+ * Haifa and Zikhron Ya'akov), configurable via `options.candleLightingMins`.
89
+ */
69
90
  class CandleLightingEvent extends TimedEvent {
70
91
  constructor(date, mask, eventTime, location, linkedEvent, options) {
71
92
  super(date, CANDLE_LIGHTING, mask, eventTime, location, linkedEvent, options);
@@ -74,7 +95,15 @@ class CandleLightingEvent extends TimedEvent {
74
95
  return '🕯️';
75
96
  }
76
97
  }
77
- /** Havdalah after Shabbat or holiday */
98
+ /**
99
+ * Havdalah event marking the end of Shabbat or a Yom Tov.
100
+ *
101
+ * Generated by {@link HebrewCalendar.calendar} when `options.candlelighting`
102
+ * is `true` and `options.location` is provided. By default Havdalah is
103
+ * calculated by *tzeit hakochavim* (8.5° solar depression); pass
104
+ * `options.havdalahMins` to use a fixed minute offset instead, or
105
+ * `options.havdalahDeg` to use a different degree.
106
+ */
78
107
  class HavdalahEvent extends TimedEvent {
79
108
  havdalahMins;
80
109
  constructor(date, mask, eventTime, location, havdalahMins, linkedEvent, options) {
@@ -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/** An event that has an `eventTime` and `eventTimeStr` */\nexport class TimedEvent extends Event {\n readonly eventTime: Date;\n readonly location: Location;\n readonly eventTimeStr: string;\n readonly fmtTime: string;\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/** Candle lighting before Shabbat or holiday */\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/** Havdalah after Shabbat or holiday */\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(\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,4 +1,4 @@
1
- /*! @hebcal/core v6.5.0, 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 { Locale } from '@hebcal/hdate';
3
3
  import { flags } from './event.js';
4
4
  import { HolidayEvent } from './HolidayEvent.js';
@@ -44,6 +44,7 @@ declare const _default: {
44
44
  "Sukkot VII (Hoshana Raba)": string[];
45
45
  "Sukkot Shabbat Chol ha-Moed": string[];
46
46
  "Ta'anit Bechorot": string[];
47
+ "Ta'anit BeHaB": string[];
47
48
  "Ta'anit Esther": string[];
48
49
  Toldot: string[];
49
50
  Vaetchanan: string[];
@@ -1,5 +1,5 @@
1
- /*! @hebcal/core v6.5.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"], "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 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.5.2, 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"], "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