@hebcal/core 5.0.1 → 5.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,346 +1,4 @@
1
- /*! @hebcal/core v5.0.1 */
2
- const GERESH = '׳';
3
- const GERSHAYIM = '״';
4
- const heb2num = {
5
- 'א': 1,
6
- 'ב': 2,
7
- 'ג': 3,
8
- 'ד': 4,
9
- 'ה': 5,
10
- 'ו': 6,
11
- 'ז': 7,
12
- 'ח': 8,
13
- 'ט': 9,
14
- 'י': 10,
15
- 'כ': 20,
16
- 'ל': 30,
17
- 'מ': 40,
18
- 'נ': 50,
19
- 'ס': 60,
20
- 'ע': 70,
21
- 'פ': 80,
22
- 'צ': 90,
23
- 'ק': 100,
24
- 'ר': 200,
25
- 'ש': 300,
26
- 'ת': 400
27
- };
28
- const num2heb = new Map();
29
- for (const [key, val] of Object.entries(heb2num)) {
30
- num2heb.set(val, key);
31
- }
32
-
33
- /**
34
- * @private
35
- * @param {number} num
36
- * @return {number[]}
37
- */
38
- function num2digits(num) {
39
- const digits = [];
40
- while (num > 0) {
41
- if (num === 15 || num === 16) {
42
- digits.push(9);
43
- digits.push(num - 9);
44
- break;
45
- }
46
- let incr = 100;
47
- let i;
48
- for (i = 400; i > num; i -= incr) {
49
- if (i === incr) {
50
- incr = incr / 10;
51
- }
52
- }
53
- digits.push(i);
54
- num -= i;
55
- }
56
- return digits;
57
- }
58
-
59
- /**
60
- * Converts a numerical value to a string of Hebrew letters.
61
- *
62
- * When specifying years of the Hebrew calendar in the present millennium,
63
- * we omit the thousands (which is presently 5 [ה]).
64
- * @example
65
- * gematriya(5774) // 'תשע״ד' - cropped to 774
66
- * gematriya(25) // 'כ״ה'
67
- * gematriya(60) // 'ס׳'
68
- * gematriya(3761) // 'ג׳תשס״א'
69
- * gematriya(1123) // 'א׳קכ״ג'
70
- * @param {number} number
71
- * @return {string}
72
- */
73
- function gematriya(number) {
74
- const num = parseInt(number, 10);
75
- if (!num) {
76
- throw new TypeError(`invalid parameter to gematriya ${number}`);
77
- }
78
- let str = '';
79
- const thousands = Math.floor(num / 1000);
80
- if (thousands > 0 && thousands !== 5) {
81
- const tdigits = num2digits(thousands);
82
- for (const tdig of tdigits) {
83
- str += num2heb.get(tdig);
84
- }
85
- str += GERESH;
86
- }
87
- const digits = num2digits(num % 1000);
88
- if (digits.length == 1) {
89
- return str + num2heb.get(digits[0]) + GERESH;
90
- }
91
- for (let i = 0; i < digits.length; i++) {
92
- if (i + 1 === digits.length) {
93
- str += GERSHAYIM;
94
- }
95
- str += num2heb.get(digits[i]);
96
- }
97
- return str;
98
- }
99
-
100
- /**
101
- * Converts a string of Hebrew letters to a numerical value.
102
- *
103
- * Only considers the value of Hebrew letters `א` through `ת`.
104
- * Ignores final Hebrew letters such as `ך` (kaf sofit) or `ם` (mem sofit)
105
- * and vowels (nekudot).
106
- *
107
- * @param {string} str
108
- * @return {number}
109
- */
110
- function gematriyaStrToNum(str) {
111
- let num = 0;
112
- const gereshIdx = str.indexOf(GERESH);
113
- if (gereshIdx !== -1 && gereshIdx !== str.length - 1) {
114
- const thousands = str.substring(0, gereshIdx);
115
- num += gematriyaStrToNum(thousands) * 1000;
116
- str = str.substring(gereshIdx);
117
- }
118
- for (const ch of str) {
119
- const n = heb2num[ch];
120
- if (typeof n === 'number') {
121
- num += n;
122
- }
123
- }
124
- return num;
125
- }
126
-
127
- const noopLocale = {
128
- headers: {
129
- 'plural-forms': 'nplurals=2; plural=(n!=1);'
130
- },
131
- contexts: {
132
- '': {}
133
- }
134
- };
135
- const alias = {
136
- 'h': 'he',
137
- 'a': 'ashkenazi',
138
- 's': 'en',
139
- '': 'en'
140
- };
141
-
142
- /** @private */
143
- const locales = new Map();
144
- /** @private */
145
- let activeLocale = null;
146
- /** @private */
147
- let activeName = null;
148
-
149
- /**
150
- * A locale in Hebcal is used for translations/transliterations of
151
- * holidays. `@hebcal/core` supports four locales by default
152
- * * `en` - default, Sephardic transliterations (e.g. "Shabbat")
153
- * * `ashkenazi` - Ashkenazi transliterations (e.g. "Shabbos")
154
- * * `he` - Hebrew (e.g. "שַׁבָּת")
155
- * * `he-x-NoNikud` - Hebrew without nikud (e.g. "שבת")
156
- */
157
- class Locale {
158
- /**
159
- * Returns translation only if `locale` offers a non-empty translation for `id`.
160
- * Otherwise, returns `undefined`.
161
- * @param {string} id Message ID to translate
162
- * @param {string} [locale] Optional locale name (i.e: `'he'`, `'fr'`). Defaults to active locale.
163
- * @return {string}
164
- */
165
- static lookupTranslation(id, locale) {
166
- const locale0 = locale === null || locale === void 0 ? void 0 : locale.toLowerCase();
167
- const loc = typeof locale == 'string' && locales.get(locale0) || activeLocale;
168
- const array = loc[id];
169
- if (array && array.length && array[0].length) {
170
- return array[0];
171
- }
172
- return undefined;
173
- }
174
-
175
- /**
176
- * By default, if no translation was found, returns `id`.
177
- * @param {string} id Message ID to translate
178
- * @param {string} [locale] Optional locale name (i.e: `'he'`, `'fr'`). Defaults to active locale.
179
- * @return {string}
180
- */
181
- static gettext(id, locale) {
182
- const text = this.lookupTranslation(id, locale);
183
- if (typeof text == 'undefined') {
184
- return id;
185
- }
186
- return text;
187
- }
188
-
189
- /**
190
- * Register locale translations.
191
- * @param {string} locale Locale name (i.e.: `'he'`, `'fr'`)
192
- * @param {LocaleData} data parsed data from a `.po` file.
193
- */
194
- static addLocale(locale, data) {
195
- if (typeof locale !== 'string') {
196
- throw new TypeError(`Invalid locale name: ${locale}`);
197
- }
198
- if (typeof data.contexts !== 'object' || typeof data.contexts[''] !== 'object') {
199
- throw new TypeError(`Locale '${locale}' invalid compact format`);
200
- }
201
- locales.set(locale.toLowerCase(), data.contexts['']);
202
- }
203
-
204
- /**
205
- * Adds a translation to `locale`, replacing any previous translation.
206
- * @param {string} locale Locale name (i.e: `'he'`, `'fr'`).
207
- * @param {string} id Message ID to translate
208
- * @param {string} translation Translation text
209
- */
210
- static addTranslation(locale, id, translation) {
211
- if (typeof locale !== 'string') {
212
- throw new TypeError(`Invalid locale name: ${locale}`);
213
- }
214
- const locale0 = locale.toLowerCase();
215
- const loc = locales.get(locale0);
216
- if (!loc) {
217
- throw new TypeError(`Unknown locale: ${locale}`);
218
- }
219
- if (typeof id !== 'string' || id.length === 0) {
220
- throw new TypeError(`Invalid id: ${id}`);
221
- }
222
- const isArray = Array.isArray(translation);
223
- if (isArray) {
224
- const t0 = translation[0];
225
- if (typeof t0 !== 'string' || t0.length === 0) {
226
- throw new TypeError(`Invalid translation array: ${translation}`);
227
- }
228
- } else if (typeof translation !== 'string') {
229
- throw new TypeError(`Invalid translation: ${translation}`);
230
- }
231
- loc[id] = isArray ? translation : [translation];
232
- }
233
- /**
234
- * Adds multiple translations to `locale`, replacing any previous translations.
235
- * @param {string} locale Locale name (i.e: `'he'`, `'fr'`).
236
- * @param {LocaleData} data parsed data from a `.po` file.
237
- */
238
- static addTranslations(locale, data) {
239
- if (typeof locale !== 'string') {
240
- throw new TypeError(`Invalid locale name: ${locale}`);
241
- }
242
- const locale0 = locale.toLowerCase();
243
- const loc = locales.get(locale0);
244
- if (!loc) {
245
- throw new TypeError(`Unknown locale: ${locale}`);
246
- }
247
- if (typeof data.contexts !== 'object' || typeof data.contexts[''] !== 'object') {
248
- throw new TypeError(`Locale '${locale}' invalid compact format`);
249
- }
250
- const ctx = data.contexts[''];
251
- Object.assign(loc, ctx);
252
- }
253
- /**
254
- * Activates a locale. Throws an error if the locale has not been previously added.
255
- * After setting the locale to be used, all strings marked for translations
256
- * will be represented by the corresponding translation in the specified locale.
257
- * @param {string} locale Locale name (i.e: `'he'`, `'fr'`)
258
- * @return {LocaleData}
259
- */
260
- static useLocale(locale) {
261
- const locale0 = locale.toLowerCase();
262
- const obj = locales.get(locale0);
263
- if (!obj) {
264
- throw new RangeError(`Locale '${locale}' not found`);
265
- }
266
- activeName = alias[locale0] || locale0;
267
- activeLocale = obj;
268
- return activeLocale;
269
- }
270
-
271
- /**
272
- * Returns the name of the active locale (i.e. 'he', 'ashkenazi', 'fr')
273
- * @return {string}
274
- */
275
- static getLocaleName() {
276
- return activeName;
277
- }
278
-
279
- /**
280
- * Returns the names of registered locales
281
- * @return {string[]}
282
- */
283
- static getLocaleNames() {
284
- const keys = Array.from(locales.keys());
285
- return keys.sort((a, b) => a.localeCompare(b));
286
- }
287
-
288
- /**
289
- * @param {number} n
290
- * @param {string} [locale] Optional locale name (i.e: `'he'`, `'fr'`). Defaults to active locale.
291
- * @return {string}
292
- */
293
- static ordinal(n, locale) {
294
- const locale1 = locale === null || locale === void 0 ? void 0 : locale.toLowerCase();
295
- const locale0 = locale1 || activeName;
296
- if (!locale0) {
297
- return this.getEnOrdinal(n);
298
- }
299
- switch (locale0) {
300
- case 'en':
301
- case 's':
302
- case 'a':
303
- case 'ashkenazi':
304
- case 'ashkenazi_litvish':
305
- case 'ashkenazi_poylish':
306
- case 'ashkenazi_standard':
307
- return this.getEnOrdinal(n);
308
- case 'es':
309
- return n + 'º';
310
- case 'h':
311
- case 'he':
312
- case 'he-x-nonikud':
313
- return String(n);
314
- default:
315
- return n + '.';
316
- }
317
- }
318
-
319
- /**
320
- * @private
321
- * @param {number} n
322
- * @return {string}
323
- */
324
- static getEnOrdinal(n) {
325
- const s = ['th', 'st', 'nd', 'rd'];
326
- const v = n % 100;
327
- return n + (s[(v - 20) % 10] || s[v] || s[0]);
328
- }
329
-
330
- /**
331
- * Removes nekudot from Hebrew string
332
- * @param {string} str
333
- * @return {string}
334
- */
335
- static hebrewStripNikkud(str) {
336
- return str.replace(/[\u0590-\u05bd]/g, '').replace(/[\u05bf-\u05c7]/g, '');
337
- }
338
- }
339
- Locale.addLocale('en', noopLocale);
340
- Locale.addLocale('s', noopLocale);
341
- Locale.addLocale('', noopLocale);
342
- Locale.useLocale('en');
343
-
1
+ /*! @hebcal/core v5.0.3 */
344
2
  /** @private */
345
3
  const lengths = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
346
4
  /** @private */
@@ -517,7 +175,7 @@ const KISLEV$2 = 9;
517
175
  const TEVET$2 = 10;
518
176
  // const SHVAT = 11;
519
177
  const ADAR_I$2 = 12;
520
- const ADAR_II$1 = 13;
178
+ const ADAR_II$2 = 13;
521
179
  /**
522
180
  * Hebrew months of the year (NISAN=1, TISHREI=7)
523
181
  * @readonly
@@ -683,7 +341,7 @@ function daysInMonth(month, year) {
683
341
  case TAMUZ$1:
684
342
  case ELUL$2:
685
343
  case TEVET$2:
686
- case ADAR_II$1:
344
+ case ADAR_II$2:
687
345
  return 29;
688
346
  }
689
347
  if ((month === ADAR_I$2 && !isLeapYear(year)) ||
@@ -905,7 +563,7 @@ const KISLEV$1 = months.KISLEV;
905
563
  const TEVET$1 = months.TEVET;
906
564
  const SHVAT = months.SHVAT;
907
565
  const ADAR_I$1 = months.ADAR_I;
908
- const ADAR_II = months.ADAR_II;
566
+ const ADAR_II$1 = months.ADAR_II;
909
567
  /**
910
568
  * Returns true if the object is a Javascript Date
911
569
  * @private
@@ -951,59 +609,396 @@ function getYahrzeitHD(hyear, date) {
951
609
  // if that was not Kislev 30, use the day before Teveth 1.
952
610
  hDeath = abs2hebrew(hebrew2abs(hyear, TEVET$1, 1) - 1);
953
611
  }
954
- else if (hDeath.mm == ADAR_II) {
612
+ else if (hDeath.mm == ADAR_II$1) {
955
613
  // If it's Adar II, use the same day in last month of year (Adar or Adar II).
956
614
  hDeath.mm = monthsInYear(hyear);
957
615
  }
958
- else if (hDeath.mm == ADAR_I$1 && hDeath.dd == 30 && !isLeapYear(hyear)) {
959
- // If it's the 30th in Adar I and year is not a leap year
960
- // (so Adar has only 29 days), use the last day in Shevat.
961
- hDeath.dd = 30;
962
- hDeath.mm = SHVAT;
616
+ else if (hDeath.mm == ADAR_I$1 && hDeath.dd == 30 && !isLeapYear(hyear)) {
617
+ // If it's the 30th in Adar I and year is not a leap year
618
+ // (so Adar has only 29 days), use the last day in Shevat.
619
+ hDeath.dd = 30;
620
+ hDeath.mm = SHVAT;
621
+ }
622
+ // In all other cases, use the normal anniversary of the date of death.
623
+ // advance day to rosh chodesh if needed
624
+ if (hDeath.mm == CHESHVAN && hDeath.dd == 30 && !longCheshvan(hyear)) {
625
+ hDeath.mm = KISLEV$1;
626
+ hDeath.dd = 1;
627
+ }
628
+ else if (hDeath.mm == KISLEV$1 && hDeath.dd == 30 && shortKislev(hyear)) {
629
+ hDeath.mm = TEVET$1;
630
+ hDeath.dd = 1;
631
+ }
632
+ hDeath.yy = hyear;
633
+ return hDeath;
634
+ }
635
+ function getBirthdayHD(hyear, date) {
636
+ const orig = toSimpleHebrewDate(date);
637
+ const origYear = orig.yy;
638
+ if (hyear === origYear) {
639
+ return orig;
640
+ }
641
+ else if (hyear < origYear) {
642
+ // Hebrew year ${hyear} occurs on or before original date in ${origYear}
643
+ return undefined;
644
+ }
645
+ const isOrigLeap = isLeapYear(origYear);
646
+ let month = orig.mm;
647
+ let day = orig.dd;
648
+ if ((month == ADAR_I$1 && !isOrigLeap) || (month == ADAR_II$1 && isOrigLeap)) {
649
+ month = monthsInYear(hyear);
650
+ }
651
+ else if (month == CHESHVAN && day == 30 && !longCheshvan(hyear)) {
652
+ month = KISLEV$1;
653
+ day = 1;
654
+ }
655
+ else if (month == KISLEV$1 && day == 30 && shortKislev(hyear)) {
656
+ month = TEVET$1;
657
+ day = 1;
658
+ }
659
+ else if (month == ADAR_I$1 && day == 30 && isOrigLeap && !isLeapYear(hyear)) {
660
+ month = NISAN$3;
661
+ day = 1;
662
+ }
663
+ return { yy: hyear, mm: month, dd: day };
664
+ }
665
+
666
+ const GERESH = '׳';
667
+ const GERSHAYIM = '״';
668
+ const alefbet = {
669
+ 'א': 1,
670
+ 'ב': 2,
671
+ 'ג': 3,
672
+ 'ד': 4,
673
+ 'ה': 5,
674
+ 'ו': 6,
675
+ 'ז': 7,
676
+ 'ח': 8,
677
+ 'ט': 9,
678
+ 'י': 10,
679
+ 'כ': 20,
680
+ 'ל': 30,
681
+ 'מ': 40,
682
+ 'נ': 50,
683
+ 'ס': 60,
684
+ 'ע': 70,
685
+ 'פ': 80,
686
+ 'צ': 90,
687
+ 'ק': 100,
688
+ 'ר': 200,
689
+ 'ש': 300,
690
+ 'ת': 400,
691
+ };
692
+ const heb2num = new Map();
693
+ const num2heb = new Map();
694
+ for (const [key, val] of Object.entries(alefbet)) {
695
+ heb2num.set(key, val);
696
+ num2heb.set(val, key);
697
+ }
698
+ function num2digits(num) {
699
+ const digits = [];
700
+ while (num > 0) {
701
+ if (num === 15 || num === 16) {
702
+ digits.push(9);
703
+ digits.push(num - 9);
704
+ break;
705
+ }
706
+ let incr = 100;
707
+ let i;
708
+ for (i = 400; i > num; i -= incr) {
709
+ if (i === incr) {
710
+ incr = incr / 10;
711
+ }
712
+ }
713
+ digits.push(i);
714
+ num -= i;
715
+ }
716
+ return digits;
717
+ }
718
+ /**
719
+ * Converts a numerical value to a string of Hebrew letters.
720
+ *
721
+ * When specifying years of the Hebrew calendar in the present millennium,
722
+ * we omit the thousands (which is presently 5 [ה]).
723
+ * @example
724
+ * gematriya(5774) // 'תשע״ד' - cropped to 774
725
+ * gematriya(25) // 'כ״ה'
726
+ * gematriya(60) // 'ס׳'
727
+ * gematriya(3761) // 'ג׳תשס״א'
728
+ * gematriya(1123) // 'א׳קכ״ג'
729
+ * @param {number} num
730
+ * @return {string}
731
+ */
732
+ function gematriya(num) {
733
+ const num0 = num;
734
+ const num1 = parseInt(num0, 10);
735
+ if (!num1) {
736
+ throw new TypeError(`invalid parameter to gematriya ${num}`);
737
+ }
738
+ let str = '';
739
+ const thousands = Math.floor(num1 / 1000);
740
+ if (thousands > 0 && thousands !== 5) {
741
+ const tdigits = num2digits(thousands);
742
+ for (const tdig of tdigits) {
743
+ str += num2heb.get(tdig);
744
+ }
745
+ str += GERESH;
746
+ }
747
+ const digits = num2digits(num1 % 1000);
748
+ if (digits.length == 1) {
749
+ return str + num2heb.get(digits[0]) + GERESH;
750
+ }
751
+ for (let i = 0; i < digits.length; i++) {
752
+ if (i + 1 === digits.length) {
753
+ str += GERSHAYIM;
754
+ }
755
+ str += num2heb.get(digits[i]);
756
+ }
757
+ return str;
758
+ }
759
+ /**
760
+ * Converts a string of Hebrew letters to a numerical value.
761
+ *
762
+ * Only considers the value of Hebrew letters `א` through `ת`.
763
+ * Ignores final Hebrew letters such as `ך` (kaf sofit) or `ם` (mem sofit)
764
+ * and vowels (nekudot).
765
+ *
766
+ * @param {string} str
767
+ * @return {number}
768
+ */
769
+ function gematriyaStrToNum(str) {
770
+ let num = 0;
771
+ const gereshIdx = str.indexOf(GERESH);
772
+ if (gereshIdx !== -1 && gereshIdx !== str.length - 1) {
773
+ const thousands = str.substring(0, gereshIdx);
774
+ num += gematriyaStrToNum(thousands) * 1000;
775
+ str = str.substring(gereshIdx);
776
+ }
777
+ for (const ch of str) {
778
+ const n = heb2num.get(ch);
779
+ if (typeof n === 'number') {
780
+ num += n;
781
+ }
782
+ }
783
+ return num;
784
+ }
785
+
786
+ const noopLocale = {
787
+ headers: {
788
+ 'plural-forms': 'nplurals=2; plural=(n!=1);'
789
+ },
790
+ contexts: {
791
+ '': {}
792
+ }
793
+ };
794
+ const alias = {
795
+ 'h': 'he',
796
+ 'a': 'ashkenazi',
797
+ 's': 'en',
798
+ '': 'en'
799
+ };
800
+
801
+ /** @private */
802
+ const locales = new Map();
803
+ /** @private */
804
+ let activeLocale = null;
805
+ /** @private */
806
+ let activeName = null;
807
+
808
+ /**
809
+ * A locale in Hebcal is used for translations/transliterations of
810
+ * holidays. `@hebcal/core` supports four locales by default
811
+ * * `en` - default, Sephardic transliterations (e.g. "Shabbat")
812
+ * * `ashkenazi` - Ashkenazi transliterations (e.g. "Shabbos")
813
+ * * `he` - Hebrew (e.g. "שַׁבָּת")
814
+ * * `he-x-NoNikud` - Hebrew without nikud (e.g. "שבת")
815
+ */
816
+ class Locale {
817
+ /**
818
+ * Returns translation only if `locale` offers a non-empty translation for `id`.
819
+ * Otherwise, returns `undefined`.
820
+ * @param {string} id Message ID to translate
821
+ * @param {string} [locale] Optional locale name (i.e: `'he'`, `'fr'`). Defaults to active locale.
822
+ * @return {string}
823
+ */
824
+ static lookupTranslation(id, locale) {
825
+ const locale0 = locale === null || locale === void 0 ? void 0 : locale.toLowerCase();
826
+ const loc = typeof locale == 'string' && locales.get(locale0) || activeLocale;
827
+ const array = loc[id];
828
+ if (array !== null && array !== void 0 && array.length && array[0].length) {
829
+ return array[0];
830
+ }
831
+ return undefined;
832
+ }
833
+
834
+ /**
835
+ * By default, if no translation was found, returns `id`.
836
+ * @param {string} id Message ID to translate
837
+ * @param {string} [locale] Optional locale name (i.e: `'he'`, `'fr'`). Defaults to active locale.
838
+ * @return {string}
839
+ */
840
+ static gettext(id, locale) {
841
+ const text = this.lookupTranslation(id, locale);
842
+ if (typeof text == 'undefined') {
843
+ return id;
844
+ }
845
+ return text;
846
+ }
847
+
848
+ /**
849
+ * Register locale translations.
850
+ * @param {string} locale Locale name (i.e.: `'he'`, `'fr'`)
851
+ * @param {LocaleData} data parsed data from a `.po` file.
852
+ */
853
+ static addLocale(locale, data) {
854
+ if (typeof locale !== 'string') {
855
+ throw new TypeError(`Invalid locale name: ${locale}`);
856
+ }
857
+ if (typeof data.contexts !== 'object' || typeof data.contexts[''] !== 'object') {
858
+ throw new TypeError(`Locale '${locale}' invalid compact format`);
859
+ }
860
+ locales.set(locale.toLowerCase(), data.contexts['']);
861
+ }
862
+
863
+ /**
864
+ * Adds a translation to `locale`, replacing any previous translation.
865
+ * @param {string} locale Locale name (i.e: `'he'`, `'fr'`).
866
+ * @param {string} id Message ID to translate
867
+ * @param {string} translation Translation text
868
+ */
869
+ static addTranslation(locale, id, translation) {
870
+ if (typeof locale !== 'string') {
871
+ throw new TypeError(`Invalid locale name: ${locale}`);
872
+ }
873
+ const locale0 = locale.toLowerCase();
874
+ const loc = locales.get(locale0);
875
+ if (!loc) {
876
+ throw new TypeError(`Unknown locale: ${locale}`);
963
877
  }
964
- // In all other cases, use the normal anniversary of the date of death.
965
- // advance day to rosh chodesh if needed
966
- if (hDeath.mm == CHESHVAN && hDeath.dd == 30 && !longCheshvan(hyear)) {
967
- hDeath.mm = KISLEV$1;
968
- hDeath.dd = 1;
878
+ if (typeof id !== 'string' || id.length === 0) {
879
+ throw new TypeError(`Invalid id: ${id}`);
969
880
  }
970
- else if (hDeath.mm == KISLEV$1 && hDeath.dd == 30 && shortKislev(hyear)) {
971
- hDeath.mm = TEVET$1;
972
- hDeath.dd = 1;
881
+ const isArray = Array.isArray(translation);
882
+ if (isArray) {
883
+ const t0 = translation[0];
884
+ if (typeof t0 !== 'string' || t0.length === 0) {
885
+ throw new TypeError(`Invalid translation array: ${translation}`);
886
+ }
887
+ } else if (typeof translation !== 'string') {
888
+ throw new TypeError(`Invalid translation: ${translation}`);
973
889
  }
974
- hDeath.yy = hyear;
975
- return hDeath;
976
- }
977
- function getBirthdayHD(hyear, date) {
978
- const orig = toSimpleHebrewDate(date);
979
- const origYear = orig.yy;
980
- if (hyear === origYear) {
981
- return orig;
890
+ loc[id] = isArray ? translation : [translation];
891
+ }
892
+ /**
893
+ * Adds multiple translations to `locale`, replacing any previous translations.
894
+ * @param {string} locale Locale name (i.e: `'he'`, `'fr'`).
895
+ * @param {LocaleData} data parsed data from a `.po` file.
896
+ */
897
+ static addTranslations(locale, data) {
898
+ if (typeof locale !== 'string') {
899
+ throw new TypeError(`Invalid locale name: ${locale}`);
982
900
  }
983
- else if (hyear < origYear) {
984
- // Hebrew year ${hyear} occurs on or before original date in ${origYear}
985
- return undefined;
901
+ const locale0 = locale.toLowerCase();
902
+ const loc = locales.get(locale0);
903
+ if (!loc) {
904
+ throw new TypeError(`Unknown locale: ${locale}`);
986
905
  }
987
- const isOrigLeap = isLeapYear(origYear);
988
- let month = orig.mm;
989
- let day = orig.dd;
990
- if ((month == ADAR_I$1 && !isOrigLeap) || (month == ADAR_II && isOrigLeap)) {
991
- month = monthsInYear(hyear);
906
+ if (typeof data.contexts !== 'object' || typeof data.contexts[''] !== 'object') {
907
+ throw new TypeError(`Locale '${locale}' invalid compact format`);
992
908
  }
993
- else if (month == CHESHVAN && day == 30 && !longCheshvan(hyear)) {
994
- month = KISLEV$1;
995
- day = 1;
909
+ const ctx = data.contexts[''];
910
+ Object.assign(loc, ctx);
911
+ }
912
+ /**
913
+ * Activates a locale. Throws an error if the locale has not been previously added.
914
+ * After setting the locale to be used, all strings marked for translations
915
+ * will be represented by the corresponding translation in the specified locale.
916
+ * @param {string} locale Locale name (i.e: `'he'`, `'fr'`)
917
+ * @return {LocaleData}
918
+ */
919
+ static useLocale(locale) {
920
+ const locale0 = locale.toLowerCase();
921
+ const obj = locales.get(locale0);
922
+ if (!obj) {
923
+ throw new RangeError(`Locale '${locale}' not found`);
996
924
  }
997
- else if (month == KISLEV$1 && day == 30 && shortKislev(hyear)) {
998
- month = TEVET$1;
999
- day = 1;
925
+ activeName = alias[locale0] || locale0;
926
+ activeLocale = obj;
927
+ return activeLocale;
928
+ }
929
+
930
+ /**
931
+ * Returns the name of the active locale (i.e. 'he', 'ashkenazi', 'fr')
932
+ * @return {string}
933
+ */
934
+ static getLocaleName() {
935
+ return activeName;
936
+ }
937
+
938
+ /**
939
+ * Returns the names of registered locales
940
+ * @return {string[]}
941
+ */
942
+ static getLocaleNames() {
943
+ const keys = Array.from(locales.keys());
944
+ return keys.sort((a, b) => a.localeCompare(b));
945
+ }
946
+
947
+ /**
948
+ * @param {number} n
949
+ * @param {string} [locale] Optional locale name (i.e: `'he'`, `'fr'`). Defaults to active locale.
950
+ * @return {string}
951
+ */
952
+ static ordinal(n, locale) {
953
+ const locale1 = locale === null || locale === void 0 ? void 0 : locale.toLowerCase();
954
+ const locale0 = locale1 || activeName;
955
+ if (!locale0) {
956
+ return this.getEnOrdinal(n);
1000
957
  }
1001
- else if (month == ADAR_I$1 && day == 30 && isOrigLeap && !isLeapYear(hyear)) {
1002
- month = NISAN$3;
1003
- day = 1;
958
+ switch (locale0) {
959
+ case 'en':
960
+ case 's':
961
+ case 'a':
962
+ case 'ashkenazi':
963
+ case 'ashkenazi_litvish':
964
+ case 'ashkenazi_poylish':
965
+ case 'ashkenazi_standard':
966
+ return this.getEnOrdinal(n);
967
+ case 'es':
968
+ return n + 'º';
969
+ case 'h':
970
+ case 'he':
971
+ case 'he-x-nonikud':
972
+ return String(n);
973
+ default:
974
+ return n + '.';
1004
975
  }
1005
- return { yy: hyear, mm: month, dd: day };
976
+ }
977
+
978
+ /**
979
+ * @private
980
+ * @param {number} n
981
+ * @return {string}
982
+ */
983
+ static getEnOrdinal(n) {
984
+ const s = ['th', 'st', 'nd', 'rd'];
985
+ const v = n % 100;
986
+ return n + (s[(v - 20) % 10] || s[v] || s[0]);
987
+ }
988
+
989
+ /**
990
+ * Removes nekudot from Hebrew string
991
+ * @param {string} str
992
+ * @return {string}
993
+ */
994
+ static hebrewStripNikkud(str) {
995
+ return str.replace(/[\u0590-\u05bd]/g, '').replace(/[\u05bf-\u05c7]/g, '');
996
+ }
1006
997
  }
998
+ Locale.addLocale('en', noopLocale);
999
+ Locale.addLocale('s', noopLocale);
1000
+ Locale.addLocale('', noopLocale);
1001
+ Locale.useLocale('en');
1007
1002
 
1008
1003
  /**
1009
1004
  * @private
@@ -1997,15 +1992,24 @@ class HebrewDateEvent extends Event {
1997
1992
  switch (locale0) {
1998
1993
  case 'h':
1999
1994
  case 'he':
1995
+ return hd.renderGematriya(false);
2000
1996
  case 'he-x-nonikud':
2001
- const dd = hd.getDate();
2002
- const mm = Locale.gettext(hd.getMonthName(), locale0);
2003
- const yy = hd.getFullYear();
2004
- return gematriya(dd) + ' ' + mm + ' ' + gematriya(yy);
1997
+ return hd.renderGematriya(true);
2005
1998
  default:
2006
1999
  return hd.render(locale0, true);
2007
2000
  }
2008
2001
  }
2002
+ /**
2003
+ * @private
2004
+ * @param {string} locale
2005
+ * @return {string}
2006
+ */
2007
+ renderBriefHebrew(locale) {
2008
+ const hd = this.getDate();
2009
+ const dd = hd.getDate();
2010
+ const mm = Locale.gettext(hd.getMonthName(), locale);
2011
+ return gematriya(dd) + ' ' + mm;
2012
+ }
2009
2013
  /**
2010
2014
  * @param {string} [locale] Optional locale name (defaults to active locale).
2011
2015
  * @example
@@ -2028,9 +2032,7 @@ class HebrewDateEvent extends Event {
2028
2032
  case 'h':
2029
2033
  case 'he':
2030
2034
  case 'he-x-nonikud':
2031
- const dd = hd.getDate();
2032
- const mm = Locale.gettext(hd.getMonthName(), locale0);
2033
- return gematriya(dd) + ' ' + mm;
2035
+ return this.renderBriefHebrew(locale0);
2034
2036
  default:
2035
2037
  return hd.render(locale0, false);
2036
2038
  }
@@ -3896,10 +3898,8 @@ class Zmanim {
3896
3898
  }
3897
3899
 
3898
3900
  /* eslint-disable max-len */
3899
- const days = {
3900
- FRI: 5,
3901
- SAT: 6
3902
- };
3901
+ const FRI$3 = 5;
3902
+ const SAT$3 = 6;
3903
3903
 
3904
3904
  /**
3905
3905
  * @private
@@ -3912,11 +3912,11 @@ const days = {
3912
3912
  */
3913
3913
  function makeCandleEvent(e, hd, dow, location, options) {
3914
3914
  let havdalahTitle = false;
3915
- let useHavdalahOffset = dow == days.SAT;
3915
+ let useHavdalahOffset = dow === SAT$3;
3916
3916
  let mask = e ? e.getFlags() : flags.LIGHT_CANDLES;
3917
3917
  if (typeof e !== 'undefined') {
3918
3918
  // if linked event && dow == FRI, use Candle lighting time & title
3919
- if (dow != days.FRI) {
3919
+ if (dow !== FRI$3) {
3920
3920
  if (mask & (flags.LIGHT_CANDLES_TZEIS | flags.CHANUKAH_CANDLES)) {
3921
3921
  useHavdalahOffset = true;
3922
3922
  } else if (mask & flags.YOM_TOV_ENDS) {
@@ -3924,7 +3924,7 @@ function makeCandleEvent(e, hd, dow, location, options) {
3924
3924
  useHavdalahOffset = true;
3925
3925
  }
3926
3926
  }
3927
- } else if (dow == days.SAT) {
3927
+ } else if (dow === SAT$3) {
3928
3928
  havdalahTitle = true;
3929
3929
  mask = flags.LIGHT_CANDLES_TZEIS;
3930
3930
  }
@@ -4271,24 +4271,40 @@ class OmerEvent extends Event {
4271
4271
  * @return {string}
4272
4272
  */
4273
4273
  sefira(lang = 'en') {
4274
- const week = sefirot[this.weekNumber];
4275
- const dayWithinWeek = sefirot[this.daysWithinWeeks];
4276
- switch (lang) {
4277
- case 'he':
4278
- const heWeek = Locale.gettext(week, 'he');
4279
- const heDayWithinWeek = Locale.gettext(dayWithinWeek, 'he');
4280
- const hePrefix = this.weekNumber === 2 || this.weekNumber === 6 ? 'שֶׁבִּ' : 'שֶׁבְּ';
4281
- return `${heDayWithinWeek} ${hePrefix}${heWeek}`.normalize();
4282
- case 'translit':
4283
- const translitWeek = sefirotTranslit[this.weekNumber];
4284
- const translitDayWithinWeek = sefirotTranslit[this.daysWithinWeeks];
4285
- const translitPrefix = this.weekNumber === 2 || this.weekNumber === 6 ? 'shebi' : `sheb'`;
4286
- return `${translitDayWithinWeek} ${translitPrefix}${translitWeek}`;
4287
- case 'en':
4288
- default:
4289
- return `${dayWithinWeek} within ${week}`;
4274
+ if (lang === 'he') {
4275
+ return this.sefiraHe();
4276
+ } else if (lang === 'translit') {
4277
+ return this.sefiraTranslit();
4278
+ } else {
4279
+ const week = sefirot[this.weekNumber];
4280
+ const dayWithinWeek = sefirot[this.daysWithinWeeks];
4281
+ return `${dayWithinWeek} within ${week}`;
4290
4282
  }
4291
4283
  }
4284
+ /**
4285
+ * @private
4286
+ * @return {string}
4287
+ */
4288
+ sefiraTranslit() {
4289
+ const weekNum = this.weekNumber;
4290
+ const translitWeek = sefirotTranslit[weekNum];
4291
+ const translitDayWithinWeek = sefirotTranslit[this.daysWithinWeeks];
4292
+ const translitPrefix = weekNum === 2 || weekNum === 6 ? 'shebi' : `sheb'`;
4293
+ return `${translitDayWithinWeek} ${translitPrefix}${translitWeek}`;
4294
+ }
4295
+ /**
4296
+ * @private
4297
+ * @return {string}
4298
+ */
4299
+ sefiraHe() {
4300
+ const weekNum = this.weekNumber;
4301
+ const week = sefirot[weekNum];
4302
+ const dayWithinWeek = sefirot[this.daysWithinWeeks];
4303
+ const heWeek = Locale.gettext(week, 'he');
4304
+ const heDayWithinWeek = Locale.gettext(dayWithinWeek, 'he');
4305
+ const hePrefix = weekNum === 2 || weekNum === 6 ? 'שֶׁבִּ' : 'שֶׁבְּ';
4306
+ return `${heDayWithinWeek} ${hePrefix}${heWeek}`.normalize();
4307
+ }
4292
4308
  /**
4293
4309
  * @todo use gettext()
4294
4310
  * @param {string} [locale] Optional locale name (defaults to active locale).
@@ -4952,18 +4968,15 @@ const Elul = months.ELUL;
4952
4968
  const Tishrei = months.TISHREI;
4953
4969
  const Cheshvan = months.CHESHVAN;
4954
4970
  const Kislev = months.KISLEV;
4955
- // const Tevet = months.TEVET;
4956
4971
  const Shvat = months.SHVAT;
4957
- // const Adar1 = months.ADAR_I;
4958
4972
  const Adar2 = months.ADAR_II;
4959
4973
  const CHAG$1 = flags.CHAG;
4960
4974
  const LIGHT_CANDLES$1 = flags.LIGHT_CANDLES;
4961
4975
  const YOM_TOV_ENDS$1 = flags.YOM_TOV_ENDS;
4962
4976
  const CHUL_ONLY$1 = flags.CHUL_ONLY;
4963
- const IL_ONLY$1 = flags.IL_ONLY;
4977
+ const IL_ONLY$2 = flags.IL_ONLY;
4964
4978
  const LIGHT_CANDLES_TZEIS$2 = flags.LIGHT_CANDLES_TZEIS;
4965
4979
  const CHANUKAH_CANDLES$2 = flags.CHANUKAH_CANDLES;
4966
- // const MINOR_FAST = flags.MINOR_FAST;
4967
4980
  const MAJOR_FAST$2 = flags.MAJOR_FAST;
4968
4981
  const MINOR_HOLIDAY$2 = flags.MINOR_HOLIDAY;
4969
4982
  const EREV$2 = flags.EREV;
@@ -5046,54 +5059,54 @@ const staticHolidays = [{
5046
5059
  mm: Tishrei,
5047
5060
  dd: 14,
5048
5061
  desc: 'Erev Sukkot',
5049
- flags: IL_ONLY$1 | EREV$2 | LIGHT_CANDLES$1,
5062
+ flags: IL_ONLY$2 | EREV$2 | LIGHT_CANDLES$1,
5050
5063
  emoji: emojiSukkot
5051
5064
  }, {
5052
5065
  mm: Tishrei,
5053
5066
  dd: 15,
5054
5067
  desc: 'Sukkot I',
5055
- flags: IL_ONLY$1 | CHAG$1 | YOM_TOV_ENDS$1,
5068
+ flags: IL_ONLY$2 | CHAG$1 | YOM_TOV_ENDS$1,
5056
5069
  emoji: emojiSukkot
5057
5070
  }, {
5058
5071
  mm: Tishrei,
5059
5072
  dd: 16,
5060
5073
  desc: 'Sukkot II (CH\'\'M)',
5061
- flags: IL_ONLY$1 | CHOL_HAMOED$1,
5074
+ flags: IL_ONLY$2 | CHOL_HAMOED$1,
5062
5075
  chmDay: 1,
5063
5076
  emoji: emojiSukkot
5064
5077
  }, {
5065
5078
  mm: Tishrei,
5066
5079
  dd: 17,
5067
5080
  desc: 'Sukkot III (CH\'\'M)',
5068
- flags: IL_ONLY$1 | CHOL_HAMOED$1,
5081
+ flags: IL_ONLY$2 | CHOL_HAMOED$1,
5069
5082
  chmDay: 2,
5070
5083
  emoji: emojiSukkot
5071
5084
  }, {
5072
5085
  mm: Tishrei,
5073
5086
  dd: 18,
5074
5087
  desc: 'Sukkot IV (CH\'\'M)',
5075
- flags: IL_ONLY$1 | CHOL_HAMOED$1,
5088
+ flags: IL_ONLY$2 | CHOL_HAMOED$1,
5076
5089
  chmDay: 3,
5077
5090
  emoji: emojiSukkot
5078
5091
  }, {
5079
5092
  mm: Tishrei,
5080
5093
  dd: 19,
5081
5094
  desc: 'Sukkot V (CH\'\'M)',
5082
- flags: IL_ONLY$1 | CHOL_HAMOED$1,
5095
+ flags: IL_ONLY$2 | CHOL_HAMOED$1,
5083
5096
  chmDay: 4,
5084
5097
  emoji: emojiSukkot
5085
5098
  }, {
5086
5099
  mm: Tishrei,
5087
5100
  dd: 20,
5088
5101
  desc: 'Sukkot VI (CH\'\'M)',
5089
- flags: IL_ONLY$1 | CHOL_HAMOED$1,
5102
+ flags: IL_ONLY$2 | CHOL_HAMOED$1,
5090
5103
  chmDay: 5,
5091
5104
  emoji: emojiSukkot
5092
5105
  }, {
5093
5106
  mm: Tishrei,
5094
5107
  dd: 22,
5095
5108
  desc: 'Shmini Atzeret',
5096
- flags: IL_ONLY$1 | CHAG$1 | YOM_TOV_ENDS$1
5109
+ flags: IL_ONLY$2 | CHAG$1 | YOM_TOV_ENDS$1
5097
5110
  }, {
5098
5111
  mm: Tishrei,
5099
5112
  dd: 21,
@@ -5137,54 +5150,54 @@ const staticHolidays = [{
5137
5150
  mm: Nisan,
5138
5151
  dd: 14,
5139
5152
  desc: 'Erev Pesach',
5140
- flags: IL_ONLY$1 | EREV$2 | LIGHT_CANDLES$1,
5153
+ flags: IL_ONLY$2 | EREV$2 | LIGHT_CANDLES$1,
5141
5154
  emoji: '🫓🍷'
5142
5155
  }, {
5143
5156
  mm: Nisan,
5144
5157
  dd: 15,
5145
5158
  desc: 'Pesach I',
5146
- flags: IL_ONLY$1 | CHAG$1 | YOM_TOV_ENDS$1,
5159
+ flags: IL_ONLY$2 | CHAG$1 | YOM_TOV_ENDS$1,
5147
5160
  emoji: emojiPesach
5148
5161
  }, {
5149
5162
  mm: Nisan,
5150
5163
  dd: 16,
5151
5164
  desc: 'Pesach II (CH\'\'M)',
5152
- flags: IL_ONLY$1 | CHOL_HAMOED$1,
5165
+ flags: IL_ONLY$2 | CHOL_HAMOED$1,
5153
5166
  chmDay: 1,
5154
5167
  emoji: emojiPesach
5155
5168
  }, {
5156
5169
  mm: Nisan,
5157
5170
  dd: 17,
5158
5171
  desc: 'Pesach III (CH\'\'M)',
5159
- flags: IL_ONLY$1 | CHOL_HAMOED$1,
5172
+ flags: IL_ONLY$2 | CHOL_HAMOED$1,
5160
5173
  chmDay: 2,
5161
5174
  emoji: emojiPesach
5162
5175
  }, {
5163
5176
  mm: Nisan,
5164
5177
  dd: 18,
5165
5178
  desc: 'Pesach IV (CH\'\'M)',
5166
- flags: IL_ONLY$1 | CHOL_HAMOED$1,
5179
+ flags: IL_ONLY$2 | CHOL_HAMOED$1,
5167
5180
  chmDay: 3,
5168
5181
  emoji: emojiPesach
5169
5182
  }, {
5170
5183
  mm: Nisan,
5171
5184
  dd: 19,
5172
5185
  desc: 'Pesach V (CH\'\'M)',
5173
- flags: IL_ONLY$1 | CHOL_HAMOED$1,
5186
+ flags: IL_ONLY$2 | CHOL_HAMOED$1,
5174
5187
  chmDay: 4,
5175
5188
  emoji: emojiPesach
5176
5189
  }, {
5177
5190
  mm: Nisan,
5178
5191
  dd: 20,
5179
5192
  desc: 'Pesach VI (CH\'\'M)',
5180
- flags: IL_ONLY$1 | CHOL_HAMOED$1 | LIGHT_CANDLES$1,
5193
+ flags: IL_ONLY$2 | CHOL_HAMOED$1 | LIGHT_CANDLES$1,
5181
5194
  chmDay: 5,
5182
5195
  emoji: emojiPesach
5183
5196
  }, {
5184
5197
  mm: Nisan,
5185
5198
  dd: 21,
5186
5199
  desc: 'Pesach VII',
5187
- flags: IL_ONLY$1 | CHAG$1 | YOM_TOV_ENDS$1,
5200
+ flags: IL_ONLY$2 | CHAG$1 | YOM_TOV_ENDS$1,
5188
5201
  emoji: emojiPesach
5189
5202
  },
5190
5203
  // Pesach chutz l'aretz
@@ -5267,7 +5280,7 @@ const staticHolidays = [{
5267
5280
  mm: Sivan,
5268
5281
  dd: 6,
5269
5282
  desc: 'Shavuot',
5270
- flags: IL_ONLY$1 | CHAG$1 | YOM_TOV_ENDS$1,
5283
+ flags: IL_ONLY$2 | CHAG$1 | YOM_TOV_ENDS$1,
5271
5284
  emoji: '⛰️🌸'
5272
5285
  }, {
5273
5286
  mm: Sivan,
@@ -5376,6 +5389,16 @@ const staticModernHolidays = [{
5376
5389
  You should have received a copy of the GNU General Public License
5377
5390
  along with this program. If not, see <http://www.gnu.org/licenses/>.
5378
5391
  */
5392
+ const CHAG = flags.CHAG;
5393
+ const IL_ONLY$1 = flags.IL_ONLY;
5394
+ const LIGHT_CANDLES_TZEIS$1 = flags.LIGHT_CANDLES_TZEIS;
5395
+ const CHANUKAH_CANDLES$1 = flags.CHANUKAH_CANDLES;
5396
+ const MINOR_FAST$1 = flags.MINOR_FAST;
5397
+ const SPECIAL_SHABBAT$1 = flags.SPECIAL_SHABBAT;
5398
+ const MODERN_HOLIDAY$1 = flags.MODERN_HOLIDAY;
5399
+ const MAJOR_FAST$1 = flags.MAJOR_FAST;
5400
+ const MINOR_HOLIDAY$1 = flags.MINOR_HOLIDAY;
5401
+ const EREV$1 = flags.EREV;
5379
5402
 
5380
5403
  /** Represents a built-in holiday like Pesach, Purim or Tu BiShvat */
5381
5404
  class HolidayEvent extends Event {
@@ -5390,7 +5413,7 @@ class HolidayEvent extends Event {
5390
5413
  return undefined;
5391
5414
  }
5392
5415
  const url = 'https://www.hebcal.com/holidays/' + this.basename().toLowerCase().replace(/'/g, '').replace(/ /g, '-') + '-' + this.urlDateSuffix();
5393
- return this.getFlags() & flags.IL_ONLY ? url + '?i=on' : url;
5416
+ return this.getFlags() & IL_ONLY$1 ? url + '?i=on' : url;
5394
5417
  }
5395
5418
  /** @return {string} */
5396
5419
  urlDateSuffix() {
@@ -5401,7 +5424,7 @@ class HolidayEvent extends Event {
5401
5424
  getEmoji() {
5402
5425
  if (this.emoji) {
5403
5426
  return this.emoji;
5404
- } else if (this.getFlags() & flags.SPECIAL_SHABBAT) {
5427
+ } else if (this.getFlags() & SPECIAL_SHABBAT$1) {
5405
5428
  return '🕍';
5406
5429
  } else {
5407
5430
  return '✡️';
@@ -5491,7 +5514,7 @@ class MevarchimChodeshEvent extends Event {
5491
5514
  this.monthName = monthName;
5492
5515
  const hyear = date.getFullYear();
5493
5516
  const hmonth = date.getMonth();
5494
- const monNext = hmonth == HDate.monthsInYear(hyear) ? months.NISAN : hmonth + 1;
5517
+ const monNext = hmonth == HDate.monthsInYear(hyear) ? NISAN$1 : hmonth + 1;
5495
5518
  const molad = new MoladEvent(date, hyear, monNext);
5496
5519
  this.memo = molad.render('en');
5497
5520
  }
@@ -5572,41 +5595,19 @@ class YomKippurKatanEvent extends HolidayEvent {
5572
5595
  }
5573
5596
  }
5574
5597
  const SUN = 0;
5575
- // const MON = 1;
5576
5598
  const TUE = 2;
5577
- // const WED = 3;
5578
5599
  const THU = 4;
5579
5600
  const FRI$1 = 5;
5580
5601
  const SAT$1 = 6;
5581
5602
  const NISAN$1 = months.NISAN;
5582
- // const IYYAR = months.IYYAR;
5583
- // const SIVAN = months.SIVAN;
5584
5603
  const TAMUZ = months.TAMUZ;
5585
5604
  const AV = months.AV;
5586
5605
  const ELUL$1 = months.ELUL;
5587
5606
  const TISHREI$1 = months.TISHREI;
5588
- // const CHESHVAN = months.CHESHVAN;
5589
5607
  const KISLEV = months.KISLEV;
5590
5608
  const TEVET = months.TEVET;
5591
- // const SHVAT = months.SHVAT;
5592
5609
  const ADAR_I = months.ADAR_I;
5593
- // const ADAR_II = months.ADAR_II;
5594
-
5595
- const CHAG = flags.CHAG;
5596
- // const LIGHT_CANDLES = flags.LIGHT_CANDLES;
5597
- // const YOM_TOV_ENDS = flags.YOM_TOV_ENDS;
5598
- // const CHUL_ONLY = flags.CHUL_ONLY;
5599
- // const IL_ONLY = flags.IL_ONLY;
5600
- const LIGHT_CANDLES_TZEIS$1 = flags.LIGHT_CANDLES_TZEIS;
5601
- const CHANUKAH_CANDLES$1 = flags.CHANUKAH_CANDLES;
5602
- const MINOR_FAST$1 = flags.MINOR_FAST;
5603
- const SPECIAL_SHABBAT$1 = flags.SPECIAL_SHABBAT;
5604
- const MODERN_HOLIDAY$1 = flags.MODERN_HOLIDAY;
5605
- const MAJOR_FAST$1 = flags.MAJOR_FAST;
5606
- const MINOR_HOLIDAY$1 = flags.MINOR_HOLIDAY;
5607
- const EREV$1 = flags.EREV;
5608
- // const CHOL_HAMOED = flags.CHOL_HAMOED;
5609
-
5610
+ const ADAR_II = months.ADAR_II;
5610
5611
  const sedraCache = new Map();
5611
5612
 
5612
5613
  /**
@@ -5658,7 +5659,7 @@ function getHolidaysForYear_(year) {
5658
5659
  const key = ev.date.toString();
5659
5660
  const arr = map.get(key);
5660
5661
  if (typeof arr === 'object') {
5661
- if (arr[0].getFlags() & flags.EREV) {
5662
+ if (arr[0].getFlags() & EREV$1) {
5662
5663
  arr.unshift(ev);
5663
5664
  } else {
5664
5665
  arr.push(ev);
@@ -5708,7 +5709,7 @@ function getHolidaysForYear_(year) {
5708
5709
  emoji: '🕍'
5709
5710
  }));
5710
5711
  if (pesach.getDay() == SUN) {
5711
- add(new HolidayEvent(new HDate(16, months.ADAR_II, year), 'Purim Meshulash', MINOR_HOLIDAY$1));
5712
+ add(new HolidayEvent(new HDate(16, ADAR_II, year), 'Purim Meshulash', MINOR_HOLIDAY$1));
5712
5713
  }
5713
5714
  if (HDate.isLeapYear(year)) {
5714
5715
  add(new HolidayEvent(new HDate(14, ADAR_I, year), 'Purim Katan', MINOR_HOLIDAY$1, {
@@ -5737,7 +5738,7 @@ function getHolidaysForYear_(year) {
5737
5738
  } else if (h.satPostponeToSun && dow === SAT$1) {
5738
5739
  hd = hd.next();
5739
5740
  }
5740
- const mask = h.chul ? MODERN_HOLIDAY$1 : MODERN_HOLIDAY$1 | flags.IL_ONLY;
5741
+ const mask = h.chul ? MODERN_HOLIDAY$1 : MODERN_HOLIDAY$1 | IL_ONLY$1;
5741
5742
  const ev = new HolidayEvent(hd, h.desc, mask);
5742
5743
  if (!h.suppressEmoji) {
5743
5744
  ev.emoji = '🇮🇱';
@@ -5791,7 +5792,7 @@ function getHolidaysForYear_(year) {
5791
5792
  // Yom Kippur Katan is not observed on the day before Rosh Hashanah.
5792
5793
  // Not observed prior to Rosh Chodesh Cheshvan because Yom Kippur has just passed.
5793
5794
  // Not observed before Rosh Chodesh Tevet, because that day is Hanukkah.
5794
- if (nextMonth === months.TISHREI || nextMonth === months.CHESHVAN || nextMonth === months.TEVET) {
5795
+ if (nextMonth === TISHREI$1 || nextMonth === months.CHESHVAN || nextMonth === TEVET) {
5795
5796
  continue;
5796
5797
  }
5797
5798
  let ykk = new HDate(29, month, year);
@@ -5833,7 +5834,7 @@ function getHolidaysForYear_(year) {
5833
5834
  */
5834
5835
  function getBirkatHaChama(year) {
5835
5836
  const leap = HDate.isLeapYear(year);
5836
- const startMonth = leap ? months.ADAR_II : NISAN$1;
5837
+ const startMonth = leap ? ADAR_II : NISAN$1;
5837
5838
  const startDay = leap ? 20 : 1;
5838
5839
  const baseRd = HDate.hebrew2abs(year, startMonth, startDay);
5839
5840
  for (let day = 0; day <= 40; day++) {
@@ -5883,29 +5884,8 @@ class DailyLearning {
5883
5884
  }
5884
5885
  }
5885
5886
 
5886
- const version="5.0.1";
5887
-
5888
- const headers$1={"plural-forms":"nplurals=2; plural=(n > 1);"};const contexts$1={"":{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"],"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)"],"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"],Tevet:["Teves"],"Asara B'Tevet":["Asara B'Teves"],"Alot HaShachar":["Alos HaShachar"],"Kriat Shema, sof zeman":["Krias Shema, sof zman"],"Tefilah, sof zeman":["Tefilah, sof zman"],"Kriat Shema, sof zeman (MGA)":["Krias Shema, sof zman (MGA)"],"Tefilah, sof zeman (MGA)":["Tefilah, sof zman (MGA)"],"Chatzot HaLailah":["Chatzos HaLailah"],"Chatzot hayom":["Chatzos"],"Tzeit HaKochavim":["Tzeis HaKochavim"],"Birkat Hachamah":["Birkas Hachamah"],"Shushan Purim Katan":["Shushan Purim Koton"]}};var poAshkenazi = {headers:headers$1,contexts:contexts$1};
5889
-
5890
- Locale.addLocale('ashkenazi', poAshkenazi);
5891
- Locale.addLocale('a', poAshkenazi);
5892
-
5893
- const headers={"plural-forms":"nplurals=2; plural=(n > 1);"};const contexts={"":{Shabbat:["שַׁבָּת"],"Daf Yomi":["דַף יוֹמִי"],Parashat:["פָּרָשַׁת"],"Achrei Mot":["אַחֲרֵי מוֹת"],Balak:["בָּלָק"],Bamidbar:["בְּמִדְבַּר"],Bechukotai:["בְּחֻקֹּתַי"],"Beha'alotcha":["בְּהַעֲלֹתְךָ"],Behar:["בְּהַר"],Bereshit:["בְּרֵאשִׁית"],Beshalach:["בְּשַׁלַּח"],Bo:["בֹּא"],"Chayei Sara":["חַיֵּי שָֹרָה"],Chukat:["חֻקַּת"],Devarim:["דְּבָרִים"],Eikev:["עֵקֶב"],Emor:["אֱמוֹר"],"Ha'azinu":["הַאֲזִינוּ"],Kedoshim:["קְדשִׁים"],"Ki Tavo":["כִּי־תָבוֹא"],"Ki Teitzei":["כִּי־תֵצֵא"],"Ki Tisa":["כִּי תִשָּׂא"],Korach:["קוֹרַח"],"Lech-Lecha":["לֶךְ־לְךָ"],Masei:["מַסְעֵי"],Matot:["מַּטּוֹת"],Metzora:["מְּצֹרָע"],Miketz:["מִקֵּץ"],Mishpatim:["מִּשְׁפָּטִים"],Nasso:["נָשׂא"],Nitzavim:["נִצָּבִים"],Noach:["נֹחַ"],Pekudei:["פְקוּדֵי"],Pinchas:["פִּינְחָס"],"Re'eh":["רְאֵה"],"Sh'lach":["שְׁלַח־לְךָ"],Shemot:["שְׁמוֹת"],Shmini:["שְּׁמִינִי"],Shoftim:["שׁוֹפְטִים"],Tazria:["תַזְרִיעַ"],Terumah:["תְּרוּמָה"],Tetzaveh:["תְּצַוֶּה"],Toldot:["תּוֹלְדוֹת"],Tzav:["צַו"],Vaera:["וָאֵרָא"],Vaetchanan:["וָאֶתְחַנַּן"],Vayakhel:["וַיַּקְהֵל"],Vayechi:["וַיְחִי"],Vayeilech:["וַיֵּלֶךְ"],Vayera:["וַיֵּרָא"],Vayeshev:["וַיֵּשֶׁב"],Vayetzei:["וַיֵּצֵא"],Vayigash:["וַיִּגַּשׁ"],Vayikra:["וַיִּקְרָא"],Vayishlach:["וַיִּשְׁלַח"],"Vezot Haberakhah":["וְזֹאת הַבְּרָכָה"],Yitro:["יִתְרוֹ"],"Asara B'Tevet":["עֲשָׂרָה בְּטֵבֵת"],"Candle lighting":["הַדְלָקַת נֵרוֹת"],Chanukah:["חֲנוּכָּה"],"Chanukah: 1 Candle":["חֲנוּכָּה: א׳ נֵר"],"Chanukah: 2 Candles":["חֲנוּכָּה: ב׳ נֵרוֹת"],"Chanukah: 3 Candles":["חֲנוּכָּה: ג׳ נֵרוֹת"],"Chanukah: 4 Candles":["חֲנוּכָּה: ד׳ נֵרוֹת"],"Chanukah: 5 Candles":["חֲנוּכָּה: ה׳ נֵרוֹת"],"Chanukah: 6 Candles":["חֲנוּכָּה: ו׳ נֵרוֹת"],"Chanukah: 7 Candles":["חֲנוּכָּה: ז׳ נֵרוֹת"],"Chanukah: 8 Candles":["חֲנוּכָּה: ח׳ נֵרוֹת"],"Chanukah: 8th Day":["חֲנוּכָּה: יוֹם ח׳"],"Days of the Omer":["סְפִירַת הָעוֹמֶר"],Omer:["עוֹמֶר"],"day of the Omer":["בָּעוֹמֶר"],"Erev Pesach":["עֶרֶב פֶּסַח"],"Erev Purim":["עֶרֶב פּוּרִים"],"Erev Rosh Hashana":["עֶרֶב רֹאשׁ הַשָּׁנָה"],"Erev Shavuot":["עֶרֶב שָׁבוּעוֹת"],"Erev Simchat Torah":["עֶרֶב שִׂמְחַת תּוֹרָה"],"Erev Sukkot":["עֶרֶב סוּכּוֹת"],"Erev Tish'a B'Av":["עֶרֶב תִּשְׁעָה בְּאָב"],"Erev Yom Kippur":["עֶרֶב יוֹם כִּפּוּר"],Havdalah:["הַבְדָּלָה"],"Lag BaOmer":["ל״ג בָּעוֹמֶר"],"Leil Selichot":["סליחות"],Pesach:["פֶּסַח"],"Pesach I":["פֶּסַח א׳"],"Pesach II":["פֶּסַח ב׳"],"Pesach II (CH''M)":["פֶּסַח ב׳ (חוה״מ)"],"Pesach III (CH''M)":["פֶּסַח ג׳ (חוה״מ)"],"Pesach IV (CH''M)":["פֶּסַח ד׳ (חוה״מ)"],"Pesach Sheni":["פֶּסַח שני"],"Pesach V (CH''M)":["פֶּסַח ה׳ (חוה״מ)"],"Pesach VI (CH''M)":["פֶּסַח ו׳ (חוה״מ)"],"Pesach VII":["פֶּסַח ז׳"],"Pesach VIII":["פֶּסַח ח׳"],Purim:["פּוּרִים"],"Purim Katan":["פּוּרִים קָטָן"],"Rosh Chodesh %s":["רֹאשׁ חוֹדֶשׁ %s"],"Rosh Chodesh":["רֹאשׁ חוֹדֶשׁ"],Adar:["אַדָר"],"Adar I":["אַדָר א׳"],"Adar II":["אַדָר ב׳"],Av:["אָב"],Cheshvan:["חֶשְׁוָן"],Elul:["אֱלוּל"],Iyyar:["אִיָיר"],Kislev:["כִּסְלֵו"],Nisan:["נִיסָן"],"Sh'vat":["שְׁבָט"],Sivan:["סִיוָן"],Tamuz:["תַּמּוּז"],Tevet:["טֵבֵת"],Tishrei:["תִּשְׁרֵי"],"Rosh Hashana":["רֹאשׁ הַשָּׁנָה"],"Rosh Hashana I":["רֹאשׁ הַשָּׁנָה א׳"],"Rosh Hashana II":["רֹאשׁ הַשָּׁנָה ב׳"],"Shabbat Chazon":["שַׁבָּת חֲזוֹן"],"Shabbat HaChodesh":["שַׁבָּת הַחֹדֶשׁ"],"Shabbat HaGadol":["שַׁבָּת הַגָּדוֹל"],"Shabbat Machar Chodesh":["שַׁבָּת מָחָר חוֹדֶשׁ"],"Shabbat Nachamu":["שַׁבָּת נַחֲמוּ"],"Shabbat Parah":["שַׁבָּת פּרה"],"Shabbat Rosh Chodesh":["שַׁבָּת רֹאשׁ חוֹדֶשׁ"],"Shabbat Shekalim":["שַׁבָּת שְׁקָלִים"],"Shabbat Shuva":["שַׁבָּת שׁוּבָה"],"Shabbat Zachor":["שַׁבָּת זָכוֹר"],Shavuot:["שָׁבוּעוֹת"],"Shavuot I":["שָׁבוּעוֹת א׳"],"Shavuot II":["שָׁבוּעוֹת ב׳"],"Shmini Atzeret":["שְׁמִינִי עֲצֶרֶת"],"Shushan Purim":["שׁוּשָׁן פּוּרִים"],Sigd:["סיגד"],"Simchat Torah":["שִׂמְחַת תּוֹרָה"],Sukkot:["סוּכּוֹת"],"Sukkot I":["סוּכּוֹת א׳"],"Sukkot II":["סוּכּוֹת ב׳"],"Sukkot II (CH''M)":["סוּכּוֹת ב׳ (חוה״מ)"],"Sukkot III (CH''M)":["סוּכּוֹת ג׳ (חוה״מ)"],"Sukkot IV (CH''M)":["סוּכּוֹת ד׳ (חוה״מ)"],"Sukkot V (CH''M)":["סוּכּוֹת ה׳ (חוה״מ)"],"Sukkot VI (CH''M)":["סוּכּוֹת ו׳ (חוה״מ)"],"Sukkot VII (Hoshana Raba)":["סוּכּוֹת ז׳ (הוֹשַׁעְנָא רַבָּה)"],"Ta'anit Bechorot":["תַּעֲנִית בְּכוֹרוֹת"],"Ta'anit Esther":["תַּעֲנִית אֶסְתֵּר"],"Tish'a B'Av":["תִּשְׁעָה בְּאָב"],"Tu B'Av":["טוּ בְּאָב"],"Tu BiShvat":["טוּ בִּשְׁבָט"],"Tu B'Shvat":["טוּ בִּשְׁבָט"],"Tzom Gedaliah":["צוֹם גְּדַלְיָה"],"Tzom Tammuz":["צוֹם תָּמוּז"],"Yom HaAtzma'ut":["יוֹם הָעַצְמָאוּת"],"Yom HaShoah":["יוֹם הַשּׁוֹאָה"],"Yom HaZikaron":["יוֹם הַזִּכָּרוֹן"],"Yom Kippur":["יוֹם כִּפּוּר"],"Yom Yerushalayim":["יוֹם יְרוּשָׁלַיִם"],"Yom HaAliyah":["יוֹם הַעֲלִיָּה"],"Yom HaAliyah School Observance":["שְׁמִירָת בֵּית הַסֵפֶר לְיוֹם הַעֲלִיָּה"],"Pesach I (on Shabbat)":["פֶּסַח יוֹם א׳ (בְּשַׁבָּת)"],"Pesach Chol ha-Moed Day 1":["פֶּסַח חוֹל הַמּוֹעֵד יוֹם א׳"],"Pesach Chol ha-Moed Day 2":["פֶּסַח חוֹל הַמּוֹעֵד יוֹם ב׳"],"Pesach Chol ha-Moed Day 3":["פֶּסַח חוֹל הַמּוֹעֵד יוֹם ג׳"],"Pesach Chol ha-Moed Day 4":["פֶּסַח חוֹל הַמּוֹעֵד יוֹם ד׳"],"Pesach Chol ha-Moed Day 5":["פֶּסַח חוֹל הַמּוֹעֵד יוֹם ה׳"],"Pesach Shabbat Chol ha-Moed":["פֶּסַח שַׁבָּת חוֹל הַמּוֹעֵד"],"Shavuot II (on Shabbat)":["שָׁבוּעוֹת יוֹם ב׳ (בְּשַׁבָּת)"],"Rosh Hashana I (on Shabbat)":["רֹאשׁ הַשָּׁנָה יוֹם א׳ (בְּשַׁבָּת)"],"Yom Kippur (on Shabbat)":["יוֹם כִּפּוּר (בְּשַׁבָּת)"],"Yom Kippur (Mincha, Traditional)":["יוֹם כִּפּוּר מִנחָה"],"Yom Kippur (Mincha, Alternate)":["יוֹם כִּפּוּר מִנחָה"],"Sukkot I (on Shabbat)":["סוּכּוֹת יוֹם א׳ (בְּשַׁבָּת)"],"Sukkot Chol ha-Moed Day 1":["סוּכּוֹת חוֹל הַמּוֹעֵד יוֹם א׳"],"Sukkot Chol ha-Moed Day 2":["סוּכּוֹת חוֹל הַמּוֹעֵד יוֹם ב׳"],"Sukkot Chol ha-Moed Day 3":["סוּכּוֹת חוֹל הַמּוֹעֵד יוֹם ג׳"],"Sukkot Chol ha-Moed Day 4":["סוּכּוֹת חוֹל הַמּוֹעֵד יוֹם ד׳"],"Sukkot Chol ha-Moed Day 5":["סוּכּוֹת חוֹל הַמּוֹעֵד יוֹם ה׳"],"Sukkot Shabbat Chol ha-Moed":["סוּכּוֹת שַׁבָּת חוֹל הַמּוֹעֵד"],"Sukkot Final Day (Hoshana Raba)":["סוּכּוֹת ז׳ (הוֹשַׁעְנָא רַבָּה)"],"Rosh Chodesh Adar":["רֹאשׁ חוֹדֶשׁ אַדָר"],"Rosh Chodesh Adar I":["רֹאשׁ חוֹדֶשׁ אַדָר א׳"],"Rosh Chodesh Adar II":["רֹאשׁ חוֹדֶשׁ אַדָר ב׳"],"Rosh Chodesh Av":["רֹאשׁ חוֹדֶשׁ אָב"],"Rosh Chodesh Cheshvan":["רֹאשׁ חוֹדֶשׁ חֶשְׁוָן"],"Rosh Chodesh Elul":["רֹאשׁ חוֹדֶשׁ אֱלוּל"],"Rosh Chodesh Iyyar":["רֹאשׁ חוֹדֶשׁ אִיָיר"],"Rosh Chodesh Kislev":["רֹאשׁ חוֹדֶשׁ כִּסְלֵו"],"Rosh Chodesh Nisan":["רֹאשׁ חוֹדֶשׁ נִיסָן"],"Rosh Chodesh Sh'vat":["רֹאשׁ חוֹדֶשׁ שְׁבָט"],"Rosh Chodesh Sivan":["רֹאשׁ חוֹדֶשׁ סִיוָן"],"Rosh Chodesh Tamuz":["רֹאשׁ חוֹדֶשׁ תָּמוּז"],"Rosh Chodesh Tevet":["רֹאשׁ חוֹדֶשׁ טֵבֵת"],min:["דַּקּוֹת"],"Fast begins":["תחילת הַצוֹם"],"Fast ends":["סִיּוּם הַצוֹם"],"Rosh Hashana LaBehemot":["רֹאשׁ הַשָּׁנָה לְמַעְשַׂר בְּהֵמָה"],"Tish'a B'Av (observed)":["תִּשְׁעָה בְּאָב נִדחֶה"],"Shabbat Mevarchim Chodesh":["שַׁבָּת מְבָרְכִים חוֹדֶשׁ"],"Shabbat Shirah":["שַׁבָּת שִׁירָה"],"Chatzot HaLailah":["חֲצוֹת הַלַיְלָה"],"Alot haShachar":["עֲלוֹת הַשַּׁחַר"],Misheyakir:["מִשֶּׁיַּכִּיר"],"Misheyakir Machmir":["מִשֶּׁיַּכִּיר מַחמִיר"],Dawn:["דִּימְדּוּמֵי בּוֹקֵר"],Sunrise:["הַנֵץ הַחַמָּה"],"Kriat Shema, sof zeman":["סוֹף זְמַן קְרִיאַת שְׁמַע גר״א"],"Tefilah, sof zeman":["סוֹף זְמַן תְּפִלָּה גר״א"],"Kriat Shema, sof zeman (MGA)":["סוֹף זְמַן קְרִיאַת שְׁמַע מג״א"],"Tefilah, sof zeman (MGA)":["סוֹף זְמַן תְּפִלָּה מג״א"],"Chatzot hayom":["חֲצוֹת הַיּוֹם"],"Mincha Gedolah":["מִנְחָה גְּדוֹלָה"],"Mincha Ketanah":["מִנְחָה קְטַנָּה"],"Plag HaMincha":["פְּלַג הַמִּנְחָה"],Dusk:["דִּימְדּוּמֵי עֶרֶב"],Sunset:["שְׁקִיעָה"],"Nightfall - End of ordained fasts":["לַיְלָה - גמר תעניות דרבנן"],"Tzeit HaKochavim":["צֵאת הַכּוֹכָבִים"],Lovingkindness:["חֶֽסֶד"],Might:["גְבוּרָה"],Beauty:["תִּפאֶרֶת"],Eternity:["נֶּֽצַח"],Splendor:["הוֹד"],Foundation:["יְּסוֹד"],Majesty:["מַּלְכוּת"],day:["יוֹם"],"Chanukah Day 1":["חֲנוּכָּה יוֹם א׳"],"Chanukah Day 2":["חֲנוּכָּה יוֹם ב׳"],"Chanukah Day 3":["חֲנוּכָּה יוֹם ג׳"],"Chanukah Day 4":["חֲנוּכָּה יוֹם ד׳"],"Chanukah Day 5":["חֲנוּכָּה יוֹם ה׳"],"Chanukah Day 6":["חֲנוּכָּה יוֹם ו׳"],"Chanukah Day 7":["חֲנוּכָּה יוֹם ז׳"],"Chanukah Day 7 (on Rosh Chodesh)":["חֲנוּכָּה יוֹם ז׳ (רֹאשׁ חוֹדֶשׁ)"],"Chanukah Day 8":["חֲנוּכָּה יוֹם ח׳"],"Chanukah Day 1 (on Shabbat)":["חֲנוּכָּה יוֹם א׳ (בְּשַׁבָּת)"],"Chanukah Day 2 (on Shabbat)":["חֲנוּכָּה יוֹם ב׳ (בְּשַׁבָּת)"],"Chanukah Day 3 (on Shabbat)":["חֲנוּכָּה יוֹם ג׳ (בְּשַׁבָּת)"],"Chanukah Day 4 (on Shabbat)":["חֲנוּכָּה יוֹם ד׳ (בְּשַׁבָּת)"],"Chanukah Day 5 (on Shabbat)":["חֲנוּכָּה יוֹם ה׳ (בְּשַׁבָּת)"],"Chanukah Day 7 (on Shabbat)":["חֲנוּכָּה יוֹם ז׳ (בְּשַׁבָּת)"],"Chanukah Day 8 (on Shabbat)":["חֲנוּכָּה יוֹם ח׳ (בְּשַׁבָּת)"],"Shabbat Rosh Chodesh Chanukah":["שַׁבָּת רֹאשׁ חוֹדֶשׁ חֲנוּכָּה"],"Yom Kippur Katan":["יוֹם כִּפּוּר קָטָן"],"Family Day":["יוֹם הַמִּשׁפָּחָה"],"Yitzhak Rabin Memorial Day":["יוֹם הַזִּכָּרוֹן ליצחק רבין"],"Jabotinsky Day":["יוֹם ז׳בוטינסקי"],"Herzl Day":["יוֹם הרצל"],"Ben-Gurion Day":["יוֹם בן־גוריון"],"Birkat Hachamah":["בִרְכַּת הַחַמָּה"],"Shushan Purim Katan":["שׁוּשָׁן פּוּרִים קָטָן"],"Purim Meshulash":["פּוּרִים מְשׁוּלָּשׁ"],"after sunset":["אחרי השקיעה"],Yerushalmi:["יְרוּשַׁלְמִי"],"Chag HaBanot":["חַג הַבָּנוֹת"],Joshua:["יְהוֹשׁוּעַ"],Judges:["שׁוֹפְטִים"],"I Samuel":["שְׁמוּאֵל רִאשׁוֹן"],"II Samuel":["שְׁמוּאֵל שֵׁנִי"],"I Kings":["מְלָכִים רִאשׁוֹן"],"II Kings":["מְלָכִים שֵׁנִי"],Isaiah:["יְשַׁעְיָהוּ"],Jeremiah:["יִרְמְיָהוּ"],Ezekiel:["יְחֶזְקֵאל"],Hosea:["הוֹשֵׁעַ"],Joel:["יוֹאֵל"],Amos:["עָמוּס"],Obadiah:["עוֹבַדְיָה"],Jonah:["יוֹנָה"],Micah:["מִיכָה"],Nachum:["נַחוּם"],Habakkuk:["חֲבַקּוּק"],Zephaniah:["צְפַנְיָה"],Haggai:["חַגַּי"],Zechariah:["זְכַרְיָה"],Malachi:["מַלְאָכִי"],Psalms:["תְּהִלִּים"],Proverbs:["מִשְׁלֵי"],Job:["אִיּוֹב"],"Song of Songs":["שִׁיר הַשִּׁירִים"],Ruth:["רוּת"],Lamentations:["אֵיכָה"],Ecclesiastes:["קֹהֶלֶת"],Esther:["אֶסְתֵּר"],Daniel:["דָּנִיֵּאל"],Ezra:["עֶזְרָא"],Nehemiah:["נְחֶמְיָה"],"I Chronicles":["דִברֵי הַיָמִים רִאשׁוֹן"],"II Chronicles":["דִברֵי הַיָמִים שֵׁנִי"],"Yom Kippur (Mincha)":["יוֹם כִּפּוּר מִנחָה"],"Tish'a B'Av (Mincha)":["תִּשְׁעָה בְּאָב מִנחָה"],"Asara B'Tevet (Mincha)":["עֲשָׂרָה בְּטֵבֵת מִנחָה"],"Ta'anit Bechorot (Mincha)":["תַּעֲנִית בְּכוֹרוֹת מִנחָה"],"Ta'anit Esther (Mincha)":["תַּעֲנִית אֶסְתֵּר מִנחָה"],"Tzom Gedaliah (Mincha)":["צוֹם גְּדַלְיָה מִנחָה"],"Tzom Tammuz (Mincha)":["צוֹם תָּמוּז מִנחָה"],Molad:["מוֹלָד הָלְּבָנָה"],chalakim:["חֲלָקִים"]}};var poHe = {headers:headers,contexts:contexts};
5894
-
5895
- Locale.addLocale('he', poHe);
5896
- Locale.addLocale('h', poHe);
5897
- const heStrs = poHe.contexts[''];
5898
- const heNoNikud = {};
5899
- for (const [key, val] of Object.entries(heStrs)) {
5900
- heNoNikud[key] = [Locale.hebrewStripNikkud(val[0])];
5901
- }
5902
- const poHeNoNikud = {
5903
- headers: poHe.headers,
5904
- contexts: {
5905
- '': heNoNikud
5906
- }
5907
- };
5908
- Locale.addLocale('he-x-NoNikud', poHeNoNikud);
5887
+ // DO NOT EDIT THIS AUTO-GENERATED FILE!
5888
+ const version = '5.0.3';
5909
5889
 
5910
5890
  const NONE$1 = 0;
5911
5891
  const HALF = 1;
@@ -5947,6 +5927,396 @@ function hallel_(events, hdate) {
5947
5927
  return NONE$1;
5948
5928
  }
5949
5929
 
5930
+ var poAshkenazi = {
5931
+ "headers": {
5932
+ "plural-forms": "nplurals=2; plural=(n > 1);"
5933
+ },
5934
+ "contexts": {
5935
+ "": {
5936
+ "Shabbat": ["Shabbos"],
5937
+ "Achrei Mot": ["Achrei Mos"],
5938
+ "Bechukotai": ["Bechukosai"],
5939
+ "Beha'alotcha": ["Beha'aloscha"],
5940
+ "Bereshit": ["Bereshis"],
5941
+ "Chukat": ["Chukas"],
5942
+ "Erev Shavuot": ["Erev Shavuos"],
5943
+ "Erev Sukkot": ["Erev Sukkos"],
5944
+ "Ki Tavo": ["Ki Savo"],
5945
+ "Ki Teitzei": ["Ki Seitzei"],
5946
+ "Ki Tisa": ["Ki Sisa"],
5947
+ "Matot": ["Matos"],
5948
+ "Purim Katan": ["Purim Koton"],
5949
+ "Shabbat Chazon": ["Shabbos Chazon"],
5950
+ "Shabbat HaChodesh": ["Shabbos HaChodesh"],
5951
+ "Shabbat HaGadol": ["Shabbos HaGadol"],
5952
+ "Shabbat Nachamu": ["Shabbos Nachamu"],
5953
+ "Shabbat Parah": ["Shabbos Parah"],
5954
+ "Shabbat Shekalim": ["Shabbos Shekalim"],
5955
+ "Shabbat Shuva": ["Shabbos Shuvah"],
5956
+ "Shabbat Zachor": ["Shabbos Zachor"],
5957
+ "Shavuot": ["Shavuos"],
5958
+ "Shavuot I": ["Shavuos I"],
5959
+ "Shavuot II": ["Shavuos II"],
5960
+ "Shemot": ["Shemos"],
5961
+ "Shmini Atzeret": ["Shmini Atzeres"],
5962
+ "Simchat Torah": ["Simchas Torah"],
5963
+ "Sukkot": ["Sukkos"],
5964
+ "Sukkot I": ["Sukkos I"],
5965
+ "Sukkot II": ["Sukkos II"],
5966
+ "Sukkot II (CH''M)": ["Sukkos II (CH''M)"],
5967
+ "Sukkot III (CH''M)": ["Sukkos III (CH''M)"],
5968
+ "Sukkot IV (CH''M)": ["Sukkos IV (CH''M)"],
5969
+ "Sukkot V (CH''M)": ["Sukkos V (CH''M)"],
5970
+ "Sukkot VI (CH''M)": ["Sukkos VI (CH''M)"],
5971
+ "Sukkot VII (Hoshana Raba)": ["Sukkos VII (Hoshana Raba)"],
5972
+ "Ta'anit Bechorot": ["Ta'anis Bechoros"],
5973
+ "Ta'anit Esther": ["Ta'anis Esther"],
5974
+ "Toldot": ["Toldos"],
5975
+ "Vaetchanan": ["Vaeschanan"],
5976
+ "Yitro": ["Yisro"],
5977
+ "Vezot Haberakhah": ["Vezos Haberakhah"],
5978
+ "Parashat": ["Parshas"],
5979
+ "Leil Selichot": ["Leil Selichos"],
5980
+ "Shabbat Mevarchim Chodesh": ["Shabbos Mevorchim Chodesh"],
5981
+ "Shabbat Shirah": ["Shabbos Shirah"],
5982
+ "Tevet": ["Teves"],
5983
+ "Asara B'Tevet": ["Asara B'Teves"],
5984
+ "Alot HaShachar": ["Alos HaShachar"],
5985
+ "Kriat Shema, sof zeman": ["Krias Shema, sof zman"],
5986
+ "Tefilah, sof zeman": ["Tefilah, sof zman"],
5987
+ "Kriat Shema, sof zeman (MGA)": ["Krias Shema, sof zman (MGA)"],
5988
+ "Tefilah, sof zeman (MGA)": ["Tefilah, sof zman (MGA)"],
5989
+ "Chatzot HaLailah": ["Chatzos HaLailah"],
5990
+ "Chatzot hayom": ["Chatzos"],
5991
+ "Tzeit HaKochavim": ["Tzeis HaKochavim"],
5992
+ "Birkat Hachamah": ["Birkas Hachamah"],
5993
+ "Shushan Purim Katan": ["Shushan Purim Koton"]
5994
+ }
5995
+ }
5996
+ };
5997
+
5998
+ Locale.addLocale('ashkenazi', poAshkenazi);
5999
+ Locale.addLocale('a', poAshkenazi);
6000
+
6001
+ var poHe = {
6002
+ "headers": {
6003
+ "plural-forms": "nplurals=2; plural=(n > 1);"
6004
+ },
6005
+ "contexts": {
6006
+ "": {
6007
+ "Shabbat": ["שַׁבָּת"],
6008
+ "Daf Yomi": ["דַף יוֹמִי"],
6009
+ "Parashat": ["פָּרָשַׁת"],
6010
+ "Achrei Mot": ["אַחֲרֵי מוֹת"],
6011
+ "Balak": ["בָּלָק"],
6012
+ "Bamidbar": ["בְּמִדְבַּר"],
6013
+ "Bechukotai": ["בְּחֻקֹּתַי"],
6014
+ "Beha'alotcha": ["בְּהַעֲלֹתְךָ"],
6015
+ "Behar": ["בְּהַר"],
6016
+ "Bereshit": ["בְּרֵאשִׁית"],
6017
+ "Beshalach": ["בְּשַׁלַּח"],
6018
+ "Bo": ["בֹּא"],
6019
+ "Chayei Sara": ["חַיֵּי שָֹרָה"],
6020
+ "Chukat": ["חֻקַּת"],
6021
+ "Devarim": ["דְּבָרִים"],
6022
+ "Eikev": ["עֵקֶב"],
6023
+ "Emor": ["אֱמוֹר"],
6024
+ "Ha'azinu": ["הַאֲזִינוּ"],
6025
+ "Kedoshim": ["קְדשִׁים"],
6026
+ "Ki Tavo": ["כִּי־תָבוֹא"],
6027
+ "Ki Teitzei": ["כִּי־תֵצֵא"],
6028
+ "Ki Tisa": ["כִּי תִשָּׂא"],
6029
+ "Korach": ["קוֹרַח"],
6030
+ "Lech-Lecha": ["לֶךְ־לְךָ"],
6031
+ "Masei": ["מַסְעֵי"],
6032
+ "Matot": ["מַּטּוֹת"],
6033
+ "Metzora": ["מְּצֹרָע"],
6034
+ "Miketz": ["מִקֵּץ"],
6035
+ "Mishpatim": ["מִּשְׁפָּטִים"],
6036
+ "Nasso": ["נָשׂא"],
6037
+ "Nitzavim": ["נִצָּבִים"],
6038
+ "Noach": ["נֹחַ"],
6039
+ "Pekudei": ["פְקוּדֵי"],
6040
+ "Pinchas": ["פִּינְחָס"],
6041
+ "Re'eh": ["רְאֵה"],
6042
+ "Sh'lach": ["שְׁלַח־לְךָ"],
6043
+ "Shemot": ["שְׁמוֹת"],
6044
+ "Shmini": ["שְּׁמִינִי"],
6045
+ "Shoftim": ["שׁוֹפְטִים"],
6046
+ "Tazria": ["תַזְרִיעַ"],
6047
+ "Terumah": ["תְּרוּמָה"],
6048
+ "Tetzaveh": ["תְּצַוֶּה"],
6049
+ "Toldot": ["תּוֹלְדוֹת"],
6050
+ "Tzav": ["צַו"],
6051
+ "Vaera": ["וָאֵרָא"],
6052
+ "Vaetchanan": ["וָאֶתְחַנַּן"],
6053
+ "Vayakhel": ["וַיַּקְהֵל"],
6054
+ "Vayechi": ["וַיְחִי"],
6055
+ "Vayeilech": ["וַיֵּלֶךְ"],
6056
+ "Vayera": ["וַיֵּרָא"],
6057
+ "Vayeshev": ["וַיֵּשֶׁב"],
6058
+ "Vayetzei": ["וַיֵּצֵא"],
6059
+ "Vayigash": ["וַיִּגַּשׁ"],
6060
+ "Vayikra": ["וַיִּקְרָא"],
6061
+ "Vayishlach": ["וַיִּשְׁלַח"],
6062
+ "Vezot Haberakhah": ["וְזֹאת הַבְּרָכָה"],
6063
+ "Yitro": ["יִתְרוֹ"],
6064
+ "Asara B'Tevet": ["עֲשָׂרָה בְּטֵבֵת"],
6065
+ "Candle lighting": ["הַדְלָקַת נֵרוֹת"],
6066
+ "Chanukah": ["חֲנוּכָּה"],
6067
+ "Chanukah: 1 Candle": ["חֲנוּכָּה: א׳ נֵר"],
6068
+ "Chanukah: 2 Candles": ["חֲנוּכָּה: ב׳ נֵרוֹת"],
6069
+ "Chanukah: 3 Candles": ["חֲנוּכָּה: ג׳ נֵרוֹת"],
6070
+ "Chanukah: 4 Candles": ["חֲנוּכָּה: ד׳ נֵרוֹת"],
6071
+ "Chanukah: 5 Candles": ["חֲנוּכָּה: ה׳ נֵרוֹת"],
6072
+ "Chanukah: 6 Candles": ["חֲנוּכָּה: ו׳ נֵרוֹת"],
6073
+ "Chanukah: 7 Candles": ["חֲנוּכָּה: ז׳ נֵרוֹת"],
6074
+ "Chanukah: 8 Candles": ["חֲנוּכָּה: ח׳ נֵרוֹת"],
6075
+ "Chanukah: 8th Day": ["חֲנוּכָּה: יוֹם ח׳"],
6076
+ "Days of the Omer": ["סְפִירַת הָעוֹמֶר"],
6077
+ "Omer": ["עוֹמֶר"],
6078
+ "day of the Omer": ["בָּעוֹמֶר"],
6079
+ "Erev Pesach": ["עֶרֶב פֶּסַח"],
6080
+ "Erev Purim": ["עֶרֶב פּוּרִים"],
6081
+ "Erev Rosh Hashana": ["עֶרֶב רֹאשׁ הַשָּׁנָה"],
6082
+ "Erev Shavuot": ["עֶרֶב שָׁבוּעוֹת"],
6083
+ "Erev Simchat Torah": ["עֶרֶב שִׂמְחַת תּוֹרָה"],
6084
+ "Erev Sukkot": ["עֶרֶב סוּכּוֹת"],
6085
+ "Erev Tish'a B'Av": ["עֶרֶב תִּשְׁעָה בְּאָב"],
6086
+ "Erev Yom Kippur": ["עֶרֶב יוֹם כִּפּוּר"],
6087
+ "Havdalah": ["הַבְדָּלָה"],
6088
+ "Lag BaOmer": ["ל״ג בָּעוֹמֶר"],
6089
+ "Leil Selichot": ["סליחות"],
6090
+ "Pesach": ["פֶּסַח"],
6091
+ "Pesach I": ["פֶּסַח א׳"],
6092
+ "Pesach II": ["פֶּסַח ב׳"],
6093
+ "Pesach II (CH''M)": ["פֶּסַח ב׳ (חוה״מ)"],
6094
+ "Pesach III (CH''M)": ["פֶּסַח ג׳ (חוה״מ)"],
6095
+ "Pesach IV (CH''M)": ["פֶּסַח ד׳ (חוה״מ)"],
6096
+ "Pesach Sheni": ["פֶּסַח שני"],
6097
+ "Pesach V (CH''M)": ["פֶּסַח ה׳ (חוה״מ)"],
6098
+ "Pesach VI (CH''M)": ["פֶּסַח ו׳ (חוה״מ)"],
6099
+ "Pesach VII": ["פֶּסַח ז׳"],
6100
+ "Pesach VIII": ["פֶּסַח ח׳"],
6101
+ "Purim": ["פּוּרִים"],
6102
+ "Purim Katan": ["פּוּרִים קָטָן"],
6103
+ "Rosh Chodesh %s": ["רֹאשׁ חוֹדֶשׁ %s"],
6104
+ "Rosh Chodesh": ["רֹאשׁ חוֹדֶשׁ"],
6105
+ "Adar": ["אַדָר"],
6106
+ "Adar I": ["אַדָר א׳"],
6107
+ "Adar II": ["אַדָר ב׳"],
6108
+ "Av": ["אָב"],
6109
+ "Cheshvan": ["חֶשְׁוָן"],
6110
+ "Elul": ["אֱלוּל"],
6111
+ "Iyyar": ["אִיָיר"],
6112
+ "Kislev": ["כִּסְלֵו"],
6113
+ "Nisan": ["נִיסָן"],
6114
+ "Sh'vat": ["שְׁבָט"],
6115
+ "Sivan": ["סִיוָן"],
6116
+ "Tamuz": ["תַּמּוּז"],
6117
+ "Tevet": ["טֵבֵת"],
6118
+ "Tishrei": ["תִּשְׁרֵי"],
6119
+ "Rosh Hashana": ["רֹאשׁ הַשָּׁנָה"],
6120
+ "Rosh Hashana I": ["רֹאשׁ הַשָּׁנָה א׳"],
6121
+ "Rosh Hashana II": ["רֹאשׁ הַשָּׁנָה ב׳"],
6122
+ "Shabbat Chazon": ["שַׁבָּת חֲזוֹן"],
6123
+ "Shabbat HaChodesh": ["שַׁבָּת הַחֹדֶשׁ"],
6124
+ "Shabbat HaGadol": ["שַׁבָּת הַגָּדוֹל"],
6125
+ "Shabbat Machar Chodesh": ["שַׁבָּת מָחָר חוֹדֶשׁ"],
6126
+ "Shabbat Nachamu": ["שַׁבָּת נַחֲמוּ"],
6127
+ "Shabbat Parah": ["שַׁבָּת פּרה"],
6128
+ "Shabbat Rosh Chodesh": ["שַׁבָּת רֹאשׁ חוֹדֶשׁ"],
6129
+ "Shabbat Shekalim": ["שַׁבָּת שְׁקָלִים"],
6130
+ "Shabbat Shuva": ["שַׁבָּת שׁוּבָה"],
6131
+ "Shabbat Zachor": ["שַׁבָּת זָכוֹר"],
6132
+ "Shavuot": ["שָׁבוּעוֹת"],
6133
+ "Shavuot I": ["שָׁבוּעוֹת א׳"],
6134
+ "Shavuot II": ["שָׁבוּעוֹת ב׳"],
6135
+ "Shmini Atzeret": ["שְׁמִינִי עֲצֶרֶת"],
6136
+ "Shushan Purim": ["שׁוּשָׁן פּוּרִים"],
6137
+ "Sigd": ["סיגד"],
6138
+ "Simchat Torah": ["שִׂמְחַת תּוֹרָה"],
6139
+ "Sukkot": ["סוּכּוֹת"],
6140
+ "Sukkot I": ["סוּכּוֹת א׳"],
6141
+ "Sukkot II": ["סוּכּוֹת ב׳"],
6142
+ "Sukkot II (CH''M)": ["סוּכּוֹת ב׳ (חוה״מ)"],
6143
+ "Sukkot III (CH''M)": ["סוּכּוֹת ג׳ (חוה״מ)"],
6144
+ "Sukkot IV (CH''M)": ["סוּכּוֹת ד׳ (חוה״מ)"],
6145
+ "Sukkot V (CH''M)": ["סוּכּוֹת ה׳ (חוה״מ)"],
6146
+ "Sukkot VI (CH''M)": ["סוּכּוֹת ו׳ (חוה״מ)"],
6147
+ "Sukkot VII (Hoshana Raba)": ["סוּכּוֹת ז׳ (הוֹשַׁעְנָא רַבָּה)"],
6148
+ "Ta'anit Bechorot": ["תַּעֲנִית בְּכוֹרוֹת"],
6149
+ "Ta'anit Esther": ["תַּעֲנִית אֶסְתֵּר"],
6150
+ "Tish'a B'Av": ["תִּשְׁעָה בְּאָב"],
6151
+ "Tu B'Av": ["טוּ בְּאָב"],
6152
+ "Tu BiShvat": ["טוּ בִּשְׁבָט"],
6153
+ "Tu B'Shvat": ["טוּ בִּשְׁבָט"],
6154
+ "Tzom Gedaliah": ["צוֹם גְּדַלְיָה"],
6155
+ "Tzom Tammuz": ["צוֹם תָּמוּז"],
6156
+ "Yom HaAtzma'ut": ["יוֹם הָעַצְמָאוּת"],
6157
+ "Yom HaShoah": ["יוֹם הַשּׁוֹאָה"],
6158
+ "Yom HaZikaron": ["יוֹם הַזִּכָּרוֹן"],
6159
+ "Yom Kippur": ["יוֹם כִּפּוּר"],
6160
+ "Yom Yerushalayim": ["יוֹם יְרוּשָׁלַיִם"],
6161
+ "Yom HaAliyah": ["יוֹם הַעֲלִיָּה"],
6162
+ "Yom HaAliyah School Observance": ["שְׁמִירָת בֵּית הַסֵפֶר לְיוֹם הַעֲלִיָּה"],
6163
+ "Pesach I (on Shabbat)": ["פֶּסַח יוֹם א׳ (בְּשַׁבָּת)"],
6164
+ "Pesach Chol ha-Moed Day 1": ["פֶּסַח חוֹל הַמּוֹעֵד יוֹם א׳"],
6165
+ "Pesach Chol ha-Moed Day 2": ["פֶּסַח חוֹל הַמּוֹעֵד יוֹם ב׳"],
6166
+ "Pesach Chol ha-Moed Day 3": ["פֶּסַח חוֹל הַמּוֹעֵד יוֹם ג׳"],
6167
+ "Pesach Chol ha-Moed Day 4": ["פֶּסַח חוֹל הַמּוֹעֵד יוֹם ד׳"],
6168
+ "Pesach Chol ha-Moed Day 5": ["פֶּסַח חוֹל הַמּוֹעֵד יוֹם ה׳"],
6169
+ "Pesach Shabbat Chol ha-Moed": ["פֶּסַח שַׁבָּת חוֹל הַמּוֹעֵד"],
6170
+ "Shavuot II (on Shabbat)": ["שָׁבוּעוֹת יוֹם ב׳ (בְּשַׁבָּת)"],
6171
+ "Rosh Hashana I (on Shabbat)": ["רֹאשׁ הַשָּׁנָה יוֹם א׳ (בְּשַׁבָּת)"],
6172
+ "Yom Kippur (on Shabbat)": ["יוֹם כִּפּוּר (בְּשַׁבָּת)"],
6173
+ "Yom Kippur (Mincha, Traditional)": ["יוֹם כִּפּוּר מִנחָה"],
6174
+ "Yom Kippur (Mincha, Alternate)": ["יוֹם כִּפּוּר מִנחָה"],
6175
+ "Sukkot I (on Shabbat)": ["סוּכּוֹת יוֹם א׳ (בְּשַׁבָּת)"],
6176
+ "Sukkot Chol ha-Moed Day 1": ["סוּכּוֹת חוֹל הַמּוֹעֵד יוֹם א׳"],
6177
+ "Sukkot Chol ha-Moed Day 2": ["סוּכּוֹת חוֹל הַמּוֹעֵד יוֹם ב׳"],
6178
+ "Sukkot Chol ha-Moed Day 3": ["סוּכּוֹת חוֹל הַמּוֹעֵד יוֹם ג׳"],
6179
+ "Sukkot Chol ha-Moed Day 4": ["סוּכּוֹת חוֹל הַמּוֹעֵד יוֹם ד׳"],
6180
+ "Sukkot Chol ha-Moed Day 5": ["סוּכּוֹת חוֹל הַמּוֹעֵד יוֹם ה׳"],
6181
+ "Sukkot Shabbat Chol ha-Moed": ["סוּכּוֹת שַׁבָּת חוֹל הַמּוֹעֵד"],
6182
+ "Sukkot Final Day (Hoshana Raba)": ["סוּכּוֹת ז׳ (הוֹשַׁעְנָא רַבָּה)"],
6183
+ "Rosh Chodesh Adar": ["רֹאשׁ חוֹדֶשׁ אַדָר"],
6184
+ "Rosh Chodesh Adar I": ["רֹאשׁ חוֹדֶשׁ אַדָר א׳"],
6185
+ "Rosh Chodesh Adar II": ["רֹאשׁ חוֹדֶשׁ אַדָר ב׳"],
6186
+ "Rosh Chodesh Av": ["רֹאשׁ חוֹדֶשׁ אָב"],
6187
+ "Rosh Chodesh Cheshvan": ["רֹאשׁ חוֹדֶשׁ חֶשְׁוָן"],
6188
+ "Rosh Chodesh Elul": ["רֹאשׁ חוֹדֶשׁ אֱלוּל"],
6189
+ "Rosh Chodesh Iyyar": ["רֹאשׁ חוֹדֶשׁ אִיָיר"],
6190
+ "Rosh Chodesh Kislev": ["רֹאשׁ חוֹדֶשׁ כִּסְלֵו"],
6191
+ "Rosh Chodesh Nisan": ["רֹאשׁ חוֹדֶשׁ נִיסָן"],
6192
+ "Rosh Chodesh Sh'vat": ["רֹאשׁ חוֹדֶשׁ שְׁבָט"],
6193
+ "Rosh Chodesh Sivan": ["רֹאשׁ חוֹדֶשׁ סִיוָן"],
6194
+ "Rosh Chodesh Tamuz": ["רֹאשׁ חוֹדֶשׁ תָּמוּז"],
6195
+ "Rosh Chodesh Tevet": ["רֹאשׁ חוֹדֶשׁ טֵבֵת"],
6196
+ "min": ["דַּקּוֹת"],
6197
+ "Fast begins": ["תחילת הַצוֹם"],
6198
+ "Fast ends": ["סִיּוּם הַצוֹם"],
6199
+ "Rosh Hashana LaBehemot": ["רֹאשׁ הַשָּׁנָה לְמַעְשַׂר בְּהֵמָה"],
6200
+ "Tish'a B'Av (observed)": ["תִּשְׁעָה בְּאָב נִדחֶה"],
6201
+ "Shabbat Mevarchim Chodesh": ["שַׁבָּת מְבָרְכִים חוֹדֶשׁ"],
6202
+ "Shabbat Shirah": ["שַׁבָּת שִׁירָה"],
6203
+ "Chatzot HaLailah": ["חֲצוֹת הַלַיְלָה"],
6204
+ "Alot haShachar": ["עֲלוֹת הַשַּׁחַר"],
6205
+ "Misheyakir": ["מִשֶּׁיַּכִּיר"],
6206
+ "Misheyakir Machmir": ["מִשֶּׁיַּכִּיר מַחמִיר"],
6207
+ "Dawn": ["דִּימְדּוּמֵי בּוֹקֵר"],
6208
+ "Sunrise": ["הַנֵץ הַחַמָּה"],
6209
+ "Kriat Shema, sof zeman": ["סוֹף זְמַן קְרִיאַת שְׁמַע גר״א"],
6210
+ "Tefilah, sof zeman": ["סוֹף זְמַן תְּפִלָּה גר״א"],
6211
+ "Kriat Shema, sof zeman (MGA)": ["סוֹף זְמַן קְרִיאַת שְׁמַע מג״א"],
6212
+ "Tefilah, sof zeman (MGA)": ["סוֹף זְמַן תְּפִלָּה מג״א"],
6213
+ "Chatzot hayom": ["חֲצוֹת הַיּוֹם"],
6214
+ "Mincha Gedolah": ["מִנְחָה גְּדוֹלָה"],
6215
+ "Mincha Ketanah": ["מִנְחָה קְטַנָּה"],
6216
+ "Plag HaMincha": ["פְּלַג הַמִּנְחָה"],
6217
+ "Dusk": ["דִּימְדּוּמֵי עֶרֶב"],
6218
+ "Sunset": ["שְׁקִיעָה"],
6219
+ "Nightfall - End of ordained fasts": ["לַיְלָה - גמר תעניות דרבנן"],
6220
+ "Tzeit HaKochavim": ["צֵאת הַכּוֹכָבִים"],
6221
+ "Lovingkindness": ["חֶֽסֶד"],
6222
+ "Might": ["גְבוּרָה"],
6223
+ "Beauty": ["תִּפאֶרֶת"],
6224
+ "Eternity": ["נֶּֽצַח"],
6225
+ "Splendor": ["הוֹד"],
6226
+ "Foundation": ["יְּסוֹד"],
6227
+ "Majesty": ["מַּלְכוּת"],
6228
+ "day": ["יוֹם"],
6229
+ "Chanukah Day 1": ["חֲנוּכָּה יוֹם א׳"],
6230
+ "Chanukah Day 2": ["חֲנוּכָּה יוֹם ב׳"],
6231
+ "Chanukah Day 3": ["חֲנוּכָּה יוֹם ג׳"],
6232
+ "Chanukah Day 4": ["חֲנוּכָּה יוֹם ד׳"],
6233
+ "Chanukah Day 5": ["חֲנוּכָּה יוֹם ה׳"],
6234
+ "Chanukah Day 6": ["חֲנוּכָּה יוֹם ו׳"],
6235
+ "Chanukah Day 7": ["חֲנוּכָּה יוֹם ז׳"],
6236
+ "Chanukah Day 7 (on Rosh Chodesh)": ["חֲנוּכָּה יוֹם ז׳ (רֹאשׁ חוֹדֶשׁ)"],
6237
+ "Chanukah Day 8": ["חֲנוּכָּה יוֹם ח׳"],
6238
+ "Chanukah Day 1 (on Shabbat)": ["חֲנוּכָּה יוֹם א׳ (בְּשַׁבָּת)"],
6239
+ "Chanukah Day 2 (on Shabbat)": ["חֲנוּכָּה יוֹם ב׳ (בְּשַׁבָּת)"],
6240
+ "Chanukah Day 3 (on Shabbat)": ["חֲנוּכָּה יוֹם ג׳ (בְּשַׁבָּת)"],
6241
+ "Chanukah Day 4 (on Shabbat)": ["חֲנוּכָּה יוֹם ד׳ (בְּשַׁבָּת)"],
6242
+ "Chanukah Day 5 (on Shabbat)": ["חֲנוּכָּה יוֹם ה׳ (בְּשַׁבָּת)"],
6243
+ "Chanukah Day 7 (on Shabbat)": ["חֲנוּכָּה יוֹם ז׳ (בְּשַׁבָּת)"],
6244
+ "Chanukah Day 8 (on Shabbat)": ["חֲנוּכָּה יוֹם ח׳ (בְּשַׁבָּת)"],
6245
+ "Shabbat Rosh Chodesh Chanukah": ["שַׁבָּת רֹאשׁ חוֹדֶשׁ חֲנוּכָּה"],
6246
+ "Yom Kippur Katan": ["יוֹם כִּפּוּר קָטָן"],
6247
+ "Family Day": ["יוֹם הַמִּשׁפָּחָה"],
6248
+ "Yitzhak Rabin Memorial Day": ["יוֹם הַזִּכָּרוֹן ליצחק רבין"],
6249
+ "Jabotinsky Day": ["יוֹם ז׳בוטינסקי"],
6250
+ "Herzl Day": ["יוֹם הרצל"],
6251
+ "Ben-Gurion Day": ["יוֹם בן־גוריון"],
6252
+ "Birkat Hachamah": ["בִרְכַּת הַחַמָּה"],
6253
+ "Shushan Purim Katan": ["שׁוּשָׁן פּוּרִים קָטָן"],
6254
+ "Purim Meshulash": ["פּוּרִים מְשׁוּלָּשׁ"],
6255
+ "after sunset": ["אחרי השקיעה"],
6256
+ "Yerushalmi": ["יְרוּשַׁלְמִי"],
6257
+ "Chag HaBanot": ["חַג הַבָּנוֹת"],
6258
+ "Joshua": ["יְהוֹשׁוּעַ"],
6259
+ "Judges": ["שׁוֹפְטִים"],
6260
+ "I Samuel": ["שְׁמוּאֵל רִאשׁוֹן"],
6261
+ "II Samuel": ["שְׁמוּאֵל שֵׁנִי"],
6262
+ "I Kings": ["מְלָכִים רִאשׁוֹן"],
6263
+ "II Kings": ["מְלָכִים שֵׁנִי"],
6264
+ "Isaiah": ["יְשַׁעְיָהוּ"],
6265
+ "Jeremiah": ["יִרְמְיָהוּ"],
6266
+ "Ezekiel": ["יְחֶזְקֵאל"],
6267
+ "Hosea": ["הוֹשֵׁעַ"],
6268
+ "Joel": ["יוֹאֵל"],
6269
+ "Amos": ["עָמוּס"],
6270
+ "Obadiah": ["עוֹבַדְיָה"],
6271
+ "Jonah": ["יוֹנָה"],
6272
+ "Micah": ["מִיכָה"],
6273
+ "Nachum": ["נַחוּם"],
6274
+ "Habakkuk": ["חֲבַקּוּק"],
6275
+ "Zephaniah": ["צְפַנְיָה"],
6276
+ "Haggai": ["חַגַּי"],
6277
+ "Zechariah": ["זְכַרְיָה"],
6278
+ "Malachi": ["מַלְאָכִי"],
6279
+ "Psalms": ["תְּהִלִּים"],
6280
+ "Proverbs": ["מִשְׁלֵי"],
6281
+ "Job": ["אִיּוֹב"],
6282
+ "Song of Songs": ["שִׁיר הַשִּׁירִים"],
6283
+ "Ruth": ["רוּת"],
6284
+ "Lamentations": ["אֵיכָה"],
6285
+ "Ecclesiastes": ["קֹהֶלֶת"],
6286
+ "Esther": ["אֶסְתֵּר"],
6287
+ "Daniel": ["דָּנִיֵּאל"],
6288
+ "Ezra": ["עֶזְרָא"],
6289
+ "Nehemiah": ["נְחֶמְיָה"],
6290
+ "I Chronicles": ["דִברֵי הַיָמִים רִאשׁוֹן"],
6291
+ "II Chronicles": ["דִברֵי הַיָמִים שֵׁנִי"],
6292
+ "Yom Kippur (Mincha)": ["יוֹם כִּפּוּר מִנחָה"],
6293
+ "Tish'a B'Av (Mincha)": ["תִּשְׁעָה בְּאָב מִנחָה"],
6294
+ "Asara B'Tevet (Mincha)": ["עֲשָׂרָה בְּטֵבֵת מִנחָה"],
6295
+ "Ta'anit Bechorot (Mincha)": ["תַּעֲנִית בְּכוֹרוֹת מִנחָה"],
6296
+ "Ta'anit Esther (Mincha)": ["תַּעֲנִית אֶסְתֵּר מִנחָה"],
6297
+ "Tzom Gedaliah (Mincha)": ["צוֹם גְּדַלְיָה מִנחָה"],
6298
+ "Tzom Tammuz (Mincha)": ["צוֹם תָּמוּז מִנחָה"],
6299
+ "Molad": ["מוֹלָד הָלְּבָנָה"],
6300
+ "chalakim": ["חֲלָקִים"]
6301
+ }
6302
+ }
6303
+ };
6304
+
6305
+ Locale.addLocale('he', poHe);
6306
+ Locale.addLocale('h', poHe);
6307
+ const heStrs = poHe.contexts[''];
6308
+ const heNoNikud = {};
6309
+ for (const [key, val] of Object.entries(heStrs)) {
6310
+ heNoNikud[key] = [Locale.hebrewStripNikkud(val[0])];
6311
+ }
6312
+ const poHeNoNikud = {
6313
+ headers: poHe.headers,
6314
+ contexts: {
6315
+ '': heNoNikud
6316
+ }
6317
+ };
6318
+ Locale.addLocale('he-x-NoNikud', poHeNoNikud);
6319
+
5950
6320
  /**
5951
6321
  * @private
5952
6322
  * @param {number} start
@@ -6109,10 +6479,7 @@ function tachanunYear(year, il) {
6109
6479
  const FRI = 5;
6110
6480
  const SAT = 6;
6111
6481
  const NISAN = months.NISAN;
6112
- // const IYYAR = months.IYYAR;
6113
6482
  const SIVAN = months.SIVAN;
6114
- // const TAMUZ = months.TAMUZ;
6115
- // const AV = months.AV;
6116
6483
  const ELUL = months.ELUL;
6117
6484
  const TISHREI = months.TISHREI;
6118
6485
  const LIGHT_CANDLES = flags.LIGHT_CANDLES;
@@ -6545,6 +6912,7 @@ function observedInDiaspora(ev) {
6545
6912
  return ev.observedInDiaspora();
6546
6913
  }
6547
6914
  const yearArrayCache = new Map();
6915
+ const holidaysOnDate = new Map();
6548
6916
 
6549
6917
  /**
6550
6918
  * HebrewCalendar is the main interface to the `@hebcal/core` library.
@@ -6892,20 +7260,29 @@ class HebrewCalendar {
6892
7260
  }
6893
7261
 
6894
7262
  /**
6895
- * Returns an array of Events on this date (or undefined if no events)
7263
+ * Returns an array of Events on this date (or `undefined` if no events)
6896
7264
  * @param {HDate|Date|number} date Hebrew Date, Gregorian date, or absolute R.D. day number
6897
7265
  * @param {boolean} [il] use the Israeli schedule for holidays
6898
7266
  * @return {Event[]}
6899
7267
  */
6900
7268
  static getHolidaysOnDate(date, il) {
6901
7269
  const hd = HDate.isHDate(date) ? date : new HDate(date);
7270
+ const hdStr = hd.toString();
7271
+ const cacheKey = hdStr + '/' + (typeof il === 'undefined' ? 2 : il ? 1 : 0);
7272
+ if (holidaysOnDate.has(cacheKey)) {
7273
+ return holidaysOnDate.get(cacheKey);
7274
+ }
6902
7275
  const yearMap = getHolidaysForYear_(hd.getFullYear());
6903
- const events = yearMap.get(hd.toString());
7276
+ const events = yearMap.get(hdStr);
7277
+ // if il isn't a boolean return both diaspora + IL for day
6904
7278
  if (typeof il === 'undefined' || typeof events === 'undefined') {
7279
+ holidaysOnDate.set(cacheKey, events);
6905
7280
  return events;
6906
7281
  }
6907
7282
  const myFilter = il ? observedInIsrael : observedInDiaspora;
6908
- return events.filter(myFilter);
7283
+ const filtered = events.filter(myFilter);
7284
+ holidaysOnDate.set(cacheKey, filtered);
7285
+ return filtered;
6909
7286
  }
6910
7287
 
6911
7288
  /**