@hebcal/core 3.37.0 → 3.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,25 +1,10 @@
1
- /*! @hebcal/core v3.37.0 */
2
- /*
3
- Hebcal - A Jewish Calendar Generator
4
- Copyright (c) 1994-2020 Danny Sadinoff
5
- Portions copyright Eyal Schachter and Michael J. Radwin
6
-
7
- https://github.com/hebcal/hebcal-es6
8
-
9
- This program is free software; you can redistribute it and/or
10
- modify it under the terms of the GNU General Public License
11
- as published by the Free Software Foundation; either version 2
12
- of the License, or (at your option) any later version.
13
-
14
- This program is distributed in the hope that it will be useful,
15
- but WITHOUT ANY WARRANTY; without even the implied warranty of
16
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
- GNU General Public License for more details.
18
-
19
- You should have received a copy of the GNU General Public License
20
- along with this program. If not, see <http://www.gnu.org/licenses/>.
1
+ /*! @hebcal/core v3.38.0 */
2
+ /**
3
+ * More minimal greg routines
21
4
  */
22
- const monthLengths = [[0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]];
5
+ const lengths = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
6
+ const monthLengths = [lengths, lengths.slice()];
7
+ monthLengths[1][2] = 29;
23
8
  /**
24
9
  * @private
25
10
  * @param {number} x
@@ -41,10 +26,169 @@ function quotient(x, y) {
41
26
  return Math.floor(x / y);
42
27
  }
43
28
  /**
44
- * Gregorian date helper functions.
29
+ * Returns true if the Gregorian year is a leap year
30
+ * @private
31
+ * @param {number} year Gregorian year
32
+ * @return {boolean}
45
33
  */
46
34
 
47
35
 
36
+ function isLeapYear$1(year) {
37
+ return !(year % 4) && (!!(year % 100) || !(year % 400));
38
+ }
39
+ /**
40
+ * Number of days in the Gregorian month for given year
41
+ * @private
42
+ * @param {number} month Gregorian month (1=January, 12=December)
43
+ * @param {number} year Gregorian year
44
+ * @return {number}
45
+ */
46
+
47
+ function daysInMonth$1(month, year) {
48
+ // 1 based months
49
+ return monthLengths[+isLeapYear$1(year)][month];
50
+ }
51
+ /**
52
+ * Returns true if the object is a Javascript Date
53
+ * @private
54
+ * @param {Object} obj
55
+ * @return {boolean}
56
+ */
57
+
58
+ function isDate(obj) {
59
+ return typeof obj === 'object' && Date.prototype === obj.__proto__;
60
+ }
61
+ /**
62
+ * Returns number of days since January 1 of that year
63
+ * @private
64
+ * @param {Date} date Gregorian date
65
+ * @return {number}
66
+ */
67
+
68
+ function dayOfYear(date) {
69
+ if (!isDate(date)) {
70
+ throw new TypeError('Argument to greg.dayOfYear not a Date');
71
+ }
72
+
73
+ let doy = date.getDate() + 31 * date.getMonth();
74
+
75
+ if (date.getMonth() > 1) {
76
+ // FEB
77
+ doy -= Math.floor((4 * (date.getMonth() + 1) + 23) / 10);
78
+
79
+ if (isLeapYear$1(date.getFullYear())) {
80
+ doy++;
81
+ }
82
+ }
83
+
84
+ return doy;
85
+ }
86
+ /**
87
+ * Converts Gregorian date to absolute R.D. (Rata Die) days
88
+ * @private
89
+ * @param {Date} date Gregorian date
90
+ * @return {number}
91
+ */
92
+
93
+ function greg2abs(date) {
94
+ if (!isDate(date)) {
95
+ throw new TypeError('Argument to greg.greg2abs not a Date');
96
+ }
97
+
98
+ const year = date.getFullYear() - 1;
99
+ return dayOfYear(date) + // days this year
100
+ 365 * year + ( // + days in prior years
101
+ Math.floor(year / 4) - // + Julian Leap years
102
+ Math.floor(year / 100) + // - century years
103
+ Math.floor(year / 400)); // + Gregorian leap years
104
+ }
105
+ /**
106
+ * @private
107
+ * @param {number} abs - R.D. number of days
108
+ * @return {number}
109
+ */
110
+
111
+ function yearFromFixed(abs) {
112
+ const l0 = abs - 1;
113
+ const n400 = quotient(l0, 146097);
114
+ const d1 = mod(l0, 146097);
115
+ const n100 = quotient(d1, 36524);
116
+ const d2 = mod(d1, 36524);
117
+ const n4 = quotient(d2, 1461);
118
+ const d3 = mod(d2, 1461);
119
+ const n1 = quotient(d3, 365);
120
+ const year = 400 * n400 + 100 * n100 + 4 * n4 + n1;
121
+ return n100 != 4 && n1 != 4 ? year + 1 : year;
122
+ }
123
+ /**
124
+ * @private
125
+ * @param {number} year
126
+ * @param {number} month
127
+ * @param {number} day
128
+ * @return {number}
129
+ */
130
+
131
+
132
+ function toFixed(year, month, day) {
133
+ const py = year - 1;
134
+ return 0 + 365 * py + quotient(py, 4) - quotient(py, 100) + quotient(py, 400) + quotient(367 * month - 362, 12) + Math.floor(month <= 2 ? 0 : isLeapYear$1(year) ? -1 : -2) + day;
135
+ }
136
+ /**
137
+ * Converts from Rata Die (R.D. number) to Gregorian date.
138
+ * See the footnote on page 384 of ``Calendrical Calculations, Part II:
139
+ * Three Historical Calendars'' by E. M. Reingold, N. Dershowitz, and S. M.
140
+ * Clamen, Software--Practice and Experience, Volume 23, Number 4
141
+ * (April, 1993), pages 383-404 for an explanation.
142
+ * @private
143
+ * @param {number} abs - R.D. number of days
144
+ * @return {Date}
145
+ */
146
+
147
+
148
+ function abs2greg(abs) {
149
+ if (typeof abs !== 'number') {
150
+ throw new TypeError('Argument to greg.abs2greg not a Number');
151
+ }
152
+
153
+ abs = Math.trunc(abs);
154
+ const year = yearFromFixed(abs);
155
+ const priorDays = abs - toFixed(year, 1, 1);
156
+ const correction = abs < toFixed(year, 3, 1) ? 0 : isLeapYear$1(year) ? 1 : 2;
157
+ const month = quotient(12 * (priorDays + correction) + 373, 367);
158
+ const day = abs - toFixed(year, month, 1) + 1;
159
+ const dt = new Date(year, month - 1, day);
160
+
161
+ if (year < 100 && year >= 0) {
162
+ dt.setFullYear(year);
163
+ }
164
+
165
+ return dt;
166
+ }
167
+
168
+ /*
169
+ Hebcal - A Jewish Calendar Generator
170
+ Copyright (c) 1994-2020 Danny Sadinoff
171
+ Portions copyright Eyal Schachter and Michael J. Radwin
172
+
173
+ https://github.com/hebcal/hebcal-es6
174
+
175
+ This program is free software; you can redistribute it and/or
176
+ modify it under the terms of the GNU General Public License
177
+ as published by the Free Software Foundation; either version 2
178
+ of the License, or (at your option) any later version.
179
+
180
+ This program is distributed in the hope that it will be useful,
181
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
182
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
183
+ GNU General Public License for more details.
184
+
185
+ You should have received a copy of the GNU General Public License
186
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
187
+ */
188
+ /**
189
+ * Gregorian date helper functions.
190
+ */
191
+
48
192
  class greg {
49
193
  /**
50
194
  * Long names of the Gregorian months (1='January', 12='December')
@@ -59,7 +203,7 @@ class greg {
59
203
  */
60
204
 
61
205
  static isLeapYear(year) {
62
- return !(year % 4) && (!!(year % 100) || !(year % 400));
206
+ return isLeapYear$1(year);
63
207
  }
64
208
  /**
65
209
  * Number of days in the Gregorian month for given year
@@ -70,8 +214,7 @@ class greg {
70
214
 
71
215
 
72
216
  static daysInMonth(month, year) {
73
- // 1 based months
74
- return monthLengths[+this.isLeapYear(year)][month];
217
+ return daysInMonth$1(month, year);
75
218
  }
76
219
  /**
77
220
  * Returns true if the object is a Javascript Date
@@ -81,7 +224,7 @@ class greg {
81
224
 
82
225
 
83
226
  static isDate(obj) {
84
- return typeof obj === 'object' && Date.prototype === obj.__proto__;
227
+ return isDate(obj);
85
228
  }
86
229
  /**
87
230
  * Returns number of days since January 1 of that year
@@ -91,22 +234,7 @@ class greg {
91
234
 
92
235
 
93
236
  static dayOfYear(date) {
94
- if (!this.isDate(date)) {
95
- throw new TypeError('Argument to greg.dayOfYear not a Date');
96
- }
97
-
98
- let doy = date.getDate() + 31 * date.getMonth();
99
-
100
- if (date.getMonth() > 1) {
101
- // FEB
102
- doy -= Math.floor((4 * (date.getMonth() + 1) + 23) / 10);
103
-
104
- if (this.isLeapYear(date.getFullYear())) {
105
- doy++;
106
- }
107
- }
108
-
109
- return doy;
237
+ return dayOfYear(date);
110
238
  }
111
239
  /**
112
240
  * Converts Gregorian date to absolute R.D. (Rata Die) days
@@ -116,48 +244,7 @@ class greg {
116
244
 
117
245
 
118
246
  static greg2abs(date) {
119
- if (!this.isDate(date)) {
120
- throw new TypeError('Argument to greg.greg2abs not a Date');
121
- }
122
-
123
- const year = date.getFullYear() - 1;
124
- return this.dayOfYear(date) + // days this year
125
- 365 * year + ( // + days in prior years
126
- Math.floor(year / 4) - // + Julian Leap years
127
- Math.floor(year / 100) + // - century years
128
- Math.floor(year / 400)); // + Gregorian leap years
129
- }
130
- /**
131
- * @private
132
- * @param {number} theDate - R.D. number of days
133
- * @return {number}
134
- */
135
-
136
-
137
- static yearFromFixed(theDate) {
138
- const l0 = theDate - 1;
139
- const n400 = quotient(l0, 146097);
140
- const d1 = mod(l0, 146097);
141
- const n100 = quotient(d1, 36524);
142
- const d2 = mod(d1, 36524);
143
- const n4 = quotient(d2, 1461);
144
- const d3 = mod(d2, 1461);
145
- const n1 = quotient(d3, 365);
146
- const year = 400 * n400 + 100 * n100 + 4 * n4 + n1;
147
- return n100 != 4 && n1 != 4 ? year + 1 : year;
148
- }
149
- /**
150
- * @private
151
- * @param {number} year
152
- * @param {number} month
153
- * @param {number} day
154
- * @return {number}
155
- */
156
-
157
-
158
- static toFixed(year, month, day) {
159
- const py = year - 1;
160
- return 0 + 365 * py + quotient(py, 4) - quotient(py, 100) + quotient(py, 400) + quotient(367 * month - 362, 12) + Math.floor(month <= 2 ? 0 : this.isLeapYear(year) ? -1 : -2) + day;
247
+ return greg2abs(date);
161
248
  }
162
249
  /**
163
250
  * Converts from Rata Die (R.D. number) to Gregorian date.
@@ -171,23 +258,7 @@ class greg {
171
258
 
172
259
 
173
260
  static abs2greg(theDate) {
174
- if (typeof theDate !== 'number') {
175
- throw new TypeError('Argument to greg.abs2greg not a Number');
176
- }
177
-
178
- theDate = Math.trunc(theDate);
179
- const year = this.yearFromFixed(theDate);
180
- const priorDays = theDate - this.toFixed(year, 1, 1);
181
- const correction = theDate < this.toFixed(year, 3, 1) ? 0 : this.isLeapYear(year) ? 1 : 2;
182
- const month = quotient(12 * (priorDays + correction) + 373, 367);
183
- const day = theDate - this.toFixed(year, month, 1) + 1;
184
- const dt = new Date(year, month - 1, day);
185
-
186
- if (year < 100 && year >= 0) {
187
- dt.setFullYear(year);
188
- }
189
-
190
- return dt;
261
+ return abs2greg(theDate);
191
262
  }
192
263
 
193
264
  }
@@ -544,37 +615,20 @@ Locale.addLocale('s', noopLocale);
544
615
  Locale.addLocale('', noopLocale);
545
616
  Locale.useLocale('en');
546
617
 
547
- /*
548
- Hebcal - A Jewish Calendar Generator
549
- Copyright (c) 1994-2020 Danny Sadinoff
550
- Portions copyright Eyal Schachter and Michael J. Radwin
551
-
552
- https://github.com/hebcal/hebcal-es6
553
-
554
- This program is free software; you can redistribute it and/or
555
- modify it under the terms of the GNU General Public License
556
- as published by the Free Software Foundation; either version 2
557
- of the License, or (at your option) any later version.
558
-
559
- This program is distributed in the hope that it will be useful,
560
- but WITHOUT ANY WARRANTY; without even the implied warranty of
561
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
562
- GNU General Public License for more details.
563
-
564
- You should have received a copy of the GNU General Public License
565
- along with this program. If not, see <http://www.gnu.org/licenses/>.
618
+ /**
619
+ * More minimal HDate
566
620
  */
567
621
  const NISAN$3 = 1;
568
- const IYYAR$1 = 2;
569
- const SIVAN$2 = 3;
570
- const TAMUZ$1 = 4;
571
- const AV$1 = 5;
622
+ const IYYAR$1 = 2; // const SIVAN = 3;
623
+
624
+ const TAMUZ$1 = 4; // const AV = 5;
625
+
572
626
  const ELUL$2 = 6;
573
627
  const TISHREI$2 = 7;
574
628
  const CHESHVAN$2 = 8;
575
629
  const KISLEV$2 = 9;
576
- const TEVET$2 = 10;
577
- const SHVAT$2 = 11;
630
+ const TEVET$2 = 10; // const SHVAT = 11;
631
+
578
632
  const ADAR_I$2 = 12;
579
633
  const ADAR_II$2 = 13;
580
634
  /**
@@ -630,16 +684,244 @@ const monthNames0 = ['', 'Nisan', 'Iyyar', 'Sivan', 'Tamuz', 'Av', 'Elul', 'Tish
630
684
  * @private
631
685
  */
632
686
 
633
- const monthNames = [monthNames0.concat(['Adar', 'Nisan']), monthNames0.concat(['Adar I', 'Adar II', 'Nisan'])]; // eslint-disable-next-line require-jsdoc
687
+ const monthNames = [monthNames0.concat(['Adar', 'Nisan']), monthNames0.concat(['Adar I', 'Adar II', 'Nisan'])];
688
+ const edCache = Object.create(null);
689
+ const EPOCH = -1373428; // Avg year length in the cycle (19 solar years with 235 lunar months)
690
+
691
+ const AVG_HEBYEAR_DAYS = 365.24682220597794;
692
+ /**
693
+ * Converts Hebrew date to R.D. (Rata Die) fixed days.
694
+ * R.D. 1 is the imaginary date Monday, January 1, 1 on the Gregorian
695
+ * Calendar.
696
+ * @param {number} year Hebrew year
697
+ * @param {number} month Hebrew month
698
+ * @param {number} day Hebrew date (1-30)
699
+ * @return {number}
700
+ */
701
+
702
+ function hebrew2abs(year, month, day) {
703
+ let tempabs = day;
704
+
705
+ if (month < TISHREI$2) {
706
+ for (let m = TISHREI$2; m <= monthsInYear(year); m++) {
707
+ tempabs += daysInMonth(m, year);
708
+ }
709
+
710
+ for (let m = NISAN$3; m < month; m++) {
711
+ tempabs += daysInMonth(m, year);
712
+ }
713
+ } else {
714
+ for (let m = TISHREI$2; m < month; m++) {
715
+ tempabs += daysInMonth(m, year);
716
+ }
717
+ }
718
+
719
+ return EPOCH + elapsedDays(year) + tempabs - 1;
720
+ }
721
+ /**
722
+ * @private
723
+ * @param {number} year
724
+ * @return {number}
725
+ */
726
+
727
+ function newYear(year) {
728
+ return EPOCH + elapsedDays(year) + newYearDelay(year);
729
+ }
730
+ /**
731
+ * @private
732
+ * @param {number} year
733
+ * @return {number}
734
+ */
735
+
736
+
737
+ function newYearDelay(year) {
738
+ const ny1 = elapsedDays(year);
739
+ const ny2 = elapsedDays(year + 1);
740
+
741
+ if (ny2 - ny1 === 356) {
742
+ return 2;
743
+ } else {
744
+ const ny0 = elapsedDays(year - 1);
745
+ return ny1 - ny0 === 382 ? 1 : 0;
746
+ }
747
+ }
748
+ /**
749
+ * Converts absolute R.D. days to Hebrew date
750
+ * @private
751
+ * @param {number} abs absolute R.D. days
752
+ * @return {SimpleHebrewDate}
753
+ */
754
+
755
+
756
+ function abs2hebrew(abs) {
757
+ if (typeof abs !== 'number' || isNaN(abs)) {
758
+ throw new TypeError(`invalid parameter to abs2hebrew ${abs}`);
759
+ }
760
+
761
+ abs = Math.trunc(abs); // first, quickly approximate year
762
+
763
+ let year = Math.floor((abs - EPOCH) / AVG_HEBYEAR_DAYS);
764
+
765
+ while (newYear(year) <= abs) {
766
+ ++year;
767
+ }
768
+
769
+ --year;
770
+ let month = abs < hebrew2abs(year, 1, 1) ? 7 : 1;
771
+
772
+ while (abs > hebrew2abs(year, month, daysInMonth(month, year))) {
773
+ ++month;
774
+ }
775
+
776
+ const day = 1 + abs - hebrew2abs(year, month, 1);
777
+ return {
778
+ yy: year,
779
+ mm: month,
780
+ dd: day
781
+ };
782
+ }
783
+ /**
784
+ * Returns true if Hebrew year is a leap year
785
+ * @param {number} year Hebrew year
786
+ * @return {boolean}
787
+ */
788
+
789
+ function isLeapYear(year) {
790
+ return (1 + year * 7) % 19 < 7;
791
+ }
792
+ /**
793
+ * Number of months in this Hebrew year (either 12 or 13 depending on leap year)
794
+ * @param {number} year Hebrew year
795
+ * @return {number}
796
+ */
797
+
798
+ function monthsInYear(year) {
799
+ return 12 + isLeapYear(year); // boolean is cast to 1 or 0
800
+ }
801
+ /**
802
+ * Number of days in Hebrew month in a given year (29 or 30)
803
+ * @param {number} month Hebrew month (e.g. months.TISHREI)
804
+ * @param {number} year Hebrew year
805
+ * @return {number}
806
+ */
807
+
808
+ function daysInMonth(month, year) {
809
+ switch (month) {
810
+ case IYYAR$1:
811
+ case TAMUZ$1:
812
+ case ELUL$2:
813
+ case TEVET$2:
814
+ case ADAR_II$2:
815
+ return 29;
816
+ }
817
+
818
+ if (month === ADAR_I$2 && !isLeapYear(year) || month === CHESHVAN$2 && !longCheshvan(year) || month === KISLEV$2 && shortKislev(year)) {
819
+ return 29;
820
+ } else {
821
+ return 30;
822
+ }
823
+ }
824
+ /**
825
+ * Returns a transliterated string name of Hebrew month in year,
826
+ * for example 'Elul' or 'Cheshvan'.
827
+ * @param {number} month Hebrew month (e.g. months.TISHREI)
828
+ * @param {number} year Hebrew year
829
+ * @return {string}
830
+ */
831
+
832
+ function getMonthName(month, year) {
833
+ if (typeof month !== 'number' || month < 1 || month > 14) {
834
+ throw new TypeError(`bad month argument ${month}`);
835
+ }
836
+
837
+ return monthNames[+isLeapYear(year)][month];
838
+ }
839
+ /**
840
+ * Days from sunday prior to start of Hebrew calendar to mean
841
+ * conjunction of Tishrei in Hebrew YEAR
842
+ * @param {number} year Hebrew year
843
+ * @return {number}
844
+ */
845
+
846
+ function elapsedDays(year) {
847
+ const elapsed = edCache[year] = edCache[year] || elapsedDays0(year);
848
+ return elapsed;
849
+ }
850
+ /**
851
+ * Days from sunday prior to start of Hebrew calendar to mean
852
+ * conjunction of Tishrei in Hebrew YEAR
853
+ * @private
854
+ * @param {number} year Hebrew year
855
+ * @return {number}
856
+ */
857
+
858
+ function elapsedDays0(year) {
859
+ const prevYear = year - 1;
860
+ const mElapsed = 235 * Math.floor(prevYear / 19) + // Months in complete 19 year lunar (Metonic) cycles so far
861
+ 12 * (prevYear % 19) + // Regular months in this cycle
862
+ Math.floor((prevYear % 19 * 7 + 1) / 19); // Leap months this cycle
863
+
864
+ const pElapsed = 204 + 793 * (mElapsed % 1080);
865
+ const hElapsed = 5 + 12 * mElapsed + 793 * Math.floor(mElapsed / 1080) + Math.floor(pElapsed / 1080);
866
+ const parts = pElapsed % 1080 + 1080 * (hElapsed % 24);
867
+ const day = 1 + 29 * mElapsed + Math.floor(hElapsed / 24);
868
+ const altDay = day + (parts >= 19440 || 2 === day % 7 && parts >= 9924 && !isLeapYear(year) || 1 === day % 7 && parts >= 16789 && isLeapYear(prevYear));
869
+ return altDay + (altDay % 7 === 0 || altDay % 7 === 3 || altDay % 7 === 5);
870
+ }
871
+ /**
872
+ * Number of days in the hebrew YEAR
873
+ * @param {number} year Hebrew year
874
+ * @return {number}
875
+ */
876
+
877
+
878
+ function daysInYear(year) {
879
+ return elapsedDays(year + 1) - elapsedDays(year);
880
+ }
881
+ /**
882
+ * true if Cheshvan is long in Hebrew year
883
+ * @param {number} year Hebrew year
884
+ * @return {boolean}
885
+ */
886
+
887
+ function longCheshvan(year) {
888
+ return daysInYear(year) % 10 === 5;
889
+ }
890
+ /**
891
+ * true if Kislev is short in Hebrew year
892
+ * @param {number} year Hebrew year
893
+ * @return {boolean}
894
+ */
895
+
896
+ function shortKislev(year) {
897
+ return daysInYear(year) % 10 === 3;
898
+ }
899
+
900
+ /*
901
+ Hebcal - A Jewish Calendar Generator
902
+ Copyright (c) 1994-2020 Danny Sadinoff
903
+ Portions copyright Eyal Schachter and Michael J. Radwin
904
+
905
+ https://github.com/hebcal/hebcal-es6
906
+
907
+ This program is free software; you can redistribute it and/or
908
+ modify it under the terms of the GNU General Public License
909
+ as published by the Free Software Foundation; either version 2
910
+ of the License, or (at your option) any later version.
911
+
912
+ This program is distributed in the hope that it will be useful,
913
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
914
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
915
+ GNU General Public License for more details.
916
+
917
+ You should have received a copy of the GNU General Public License
918
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
919
+ */
634
920
 
635
921
  function throwTypeError$3(msg) {
636
922
  throw new TypeError(msg);
637
923
  }
638
924
 
639
- const edCache = Object.create(null);
640
- const EPOCH = -1373428; // Avg year length in the cycle (19 solar years with 235 lunar months)
641
-
642
- const AVG_HEBYEAR_DAYS = 365.24682220597794;
643
925
  const UNITS_DAY = 'day';
644
926
  const UNITS_WEEK = 'week';
645
927
  const UNITS_MONTH = 'month';
@@ -742,7 +1024,7 @@ class HDate {
742
1024
  yy: day.year
743
1025
  } : throwTypeError$3(`HDate called with bad argument: ${day}`);
744
1026
  const isNumber = typeof abs0 === 'number';
745
- const d = isNumber ? HDate.abs2hebrew(abs0) : abs0;
1027
+ const d = isNumber ? abs2hebrew(abs0) : abs0;
746
1028
  /**
747
1029
  * @private
748
1030
  * @type {number}
@@ -787,7 +1069,7 @@ class HDate {
787
1069
 
788
1070
 
789
1071
  isLeapYear() {
790
- return HDate.isLeapYear(this.year);
1072
+ return isLeapYear(this.year);
791
1073
  }
792
1074
  /**
793
1075
  * Gets the Hebrew month (1=NISAN, 7=TISHREI) of this Hebrew date
@@ -805,7 +1087,7 @@ class HDate {
805
1087
 
806
1088
 
807
1089
  getTishreiMonth() {
808
- const nummonths = HDate.monthsInYear(this.getFullYear());
1090
+ const nummonths = monthsInYear(this.getFullYear());
809
1091
  return (this.getMonth() + nummonths - 6) % nummonths || nummonths;
810
1092
  }
811
1093
  /**
@@ -815,7 +1097,7 @@ class HDate {
815
1097
 
816
1098
 
817
1099
  daysInMonth() {
818
- return HDate.daysInMonth(this.getMonth(), this.getFullYear());
1100
+ return daysInMonth(this.getMonth(), this.getFullYear());
819
1101
  }
820
1102
  /**
821
1103
  * Gets the day within the month (1-30)
@@ -894,7 +1176,7 @@ class HDate {
894
1176
 
895
1177
  abs() {
896
1178
  if (typeof this.abs0 !== 'number') {
897
- this.abs0 = HDate.hebrew2abs(this.year, this.month, this.day);
1179
+ this.abs0 = hebrew2abs(this.year, this.month, this.day);
898
1180
  }
899
1181
 
900
1182
  return this.abs0;
@@ -911,51 +1193,7 @@ class HDate {
911
1193
 
912
1194
 
913
1195
  static hebrew2abs(year, month, day) {
914
- let tempabs = day;
915
-
916
- if (month < TISHREI$2) {
917
- for (let m = TISHREI$2; m <= HDate.monthsInYear(year); m++) {
918
- tempabs += HDate.daysInMonth(m, year);
919
- }
920
-
921
- for (let m = NISAN$3; m < month; m++) {
922
- tempabs += HDate.daysInMonth(m, year);
923
- }
924
- } else {
925
- for (let m = TISHREI$2; m < month; m++) {
926
- tempabs += HDate.daysInMonth(m, year);
927
- }
928
- }
929
-
930
- return EPOCH + HDate.elapsedDays(year) + tempabs - 1;
931
- }
932
- /**
933
- * @private
934
- * @param {number} year
935
- * @return {number}
936
- */
937
-
938
-
939
- static newYear(year) {
940
- return EPOCH + HDate.elapsedDays(year) + HDate.newYearDelay(year);
941
- }
942
- /**
943
- * @private
944
- * @param {number} year
945
- * @return {number}
946
- */
947
-
948
-
949
- static newYearDelay(year) {
950
- const ny1 = HDate.elapsedDays(year);
951
- const ny2 = HDate.elapsedDays(year + 1);
952
-
953
- if (ny2 - ny1 === 356) {
954
- return 2;
955
- } else {
956
- const ny0 = HDate.elapsedDays(year - 1);
957
- return ny1 - ny0 === 382 ? 1 : 0;
958
- }
1196
+ return hebrew2abs(year, month, day);
959
1197
  }
960
1198
  /**
961
1199
  * Converts absolute R.D. days to Hebrew date
@@ -966,31 +1204,7 @@ class HDate {
966
1204
 
967
1205
 
968
1206
  static abs2hebrew(abs) {
969
- if (typeof abs !== 'number' || isNaN(abs)) {
970
- throw new TypeError(`invalid parameter to abs2hebrew ${abs}`);
971
- }
972
-
973
- abs = Math.trunc(abs); // first, quickly approximate year
974
-
975
- let year = Math.floor((abs - EPOCH) / AVG_HEBYEAR_DAYS);
976
-
977
- while (HDate.newYear(year) <= abs) {
978
- ++year;
979
- }
980
-
981
- --year;
982
- let month = abs < HDate.hebrew2abs(year, 1, 1) ? 7 : 1;
983
-
984
- while (abs > HDate.hebrew2abs(year, month, HDate.daysInMonth(month, year))) {
985
- ++month;
986
- }
987
-
988
- const day = 1 + abs - HDate.hebrew2abs(year, month, 1);
989
- return {
990
- yy: year,
991
- mm: month,
992
- dd: day
993
- };
1207
+ return abs2hebrew(abs);
994
1208
  }
995
1209
  /**
996
1210
  * Returns a transliterated Hebrew month name, e.g. `'Elul'` or `'Cheshvan'`.
@@ -999,7 +1213,7 @@ class HDate {
999
1213
 
1000
1214
 
1001
1215
  getMonthName() {
1002
- return HDate.getMonthName(this.getMonth(), this.getFullYear());
1216
+ return getMonthName(this.getMonth(), this.getFullYear());
1003
1217
  }
1004
1218
  /**
1005
1219
  * Renders this Hebrew date as a translated or transliterated string,
@@ -1305,7 +1519,7 @@ class HDate {
1305
1519
 
1306
1520
 
1307
1521
  static isLeapYear(year) {
1308
- return (1 + year * 7) % 19 < 7;
1522
+ return isLeapYear(year);
1309
1523
  }
1310
1524
  /**
1311
1525
  * Number of months in this Hebrew year (either 12 or 13 depending on leap year)
@@ -1315,7 +1529,7 @@ class HDate {
1315
1529
 
1316
1530
 
1317
1531
  static monthsInYear(year) {
1318
- return 12 + HDate.isLeapYear(year); // boolean is cast to 1 or 0
1532
+ return monthsInYear(year);
1319
1533
  }
1320
1534
  /**
1321
1535
  * Number of days in Hebrew month in a given year (29 or 30)
@@ -1326,11 +1540,7 @@ class HDate {
1326
1540
 
1327
1541
 
1328
1542
  static daysInMonth(month, year) {
1329
- if (month == IYYAR$1 || month == TAMUZ$1 || month == ELUL$2 || month == TEVET$2 || month == ADAR_II$2 || month == ADAR_I$2 && !HDate.isLeapYear(year) || month == CHESHVAN$2 && !HDate.longCheshvan(year) || month == KISLEV$2 && HDate.shortKislev(year)) {
1330
- return 29;
1331
- } else {
1332
- return 30;
1333
- }
1543
+ return daysInMonth(month, year);
1334
1544
  }
1335
1545
  /**
1336
1546
  * Returns a transliterated string name of Hebrew month in year,
@@ -1342,11 +1552,7 @@ class HDate {
1342
1552
 
1343
1553
 
1344
1554
  static getMonthName(month, year) {
1345
- if (typeof month !== 'number' || month < 1 || month > 14) {
1346
- throw new TypeError(`bad month argument ${month}`);
1347
- }
1348
-
1349
- return monthNames[+HDate.isLeapYear(year)][month];
1555
+ return getMonthName(month, year);
1350
1556
  }
1351
1557
  /**
1352
1558
  * Returns the Hebrew month number (NISAN=1, TISHREI=7)
@@ -1360,40 +1566,6 @@ class HDate {
1360
1566
  /* number */
1361
1567
  parseInt(month, 10) : HDate.monthFromName(month);
1362
1568
  }
1363
- /**
1364
- * Days from sunday prior to start of Hebrew calendar to mean
1365
- * conjunction of Tishrei in Hebrew YEAR
1366
- * @param {number} year Hebrew year
1367
- * @return {number}
1368
- */
1369
-
1370
-
1371
- static elapsedDays(year) {
1372
- const elapsed = edCache[year] = edCache[year] || HDate.elapsedDays0(year);
1373
- return elapsed;
1374
- }
1375
- /**
1376
- * Days from sunday prior to start of Hebrew calendar to mean
1377
- * conjunction of Tishrei in Hebrew YEAR
1378
- * @private
1379
- * @param {number} year Hebrew year
1380
- * @return {number}
1381
- */
1382
-
1383
-
1384
- static elapsedDays0(year) {
1385
- const prevYear = year - 1;
1386
- const mElapsed = 235 * Math.floor(prevYear / 19) + // Months in complete 19 year lunar (Metonic) cycles so far
1387
- 12 * (prevYear % 19) + // Regular months in this cycle
1388
- Math.floor((prevYear % 19 * 7 + 1) / 19); // Leap months this cycle
1389
-
1390
- const pElapsed = 204 + 793 * (mElapsed % 1080);
1391
- const hElapsed = 5 + 12 * mElapsed + 793 * Math.floor(mElapsed / 1080) + Math.floor(pElapsed / 1080);
1392
- const parts = pElapsed % 1080 + 1080 * (hElapsed % 24);
1393
- const day = 1 + 29 * mElapsed + Math.floor(hElapsed / 24);
1394
- const altDay = day + (parts >= 19440 || 2 == day % 7 && parts >= 9924 && !HDate.isLeapYear(year) || 1 == day % 7 && parts >= 16789 && HDate.isLeapYear(prevYear));
1395
- return altDay + (altDay % 7 === 0 || altDay % 7 == 3 || altDay % 7 == 5);
1396
- }
1397
1569
  /**
1398
1570
  * Number of days in the hebrew YEAR
1399
1571
  * @param {number} year Hebrew year
@@ -1402,7 +1574,7 @@ class HDate {
1402
1574
 
1403
1575
 
1404
1576
  static daysInYear(year) {
1405
- return HDate.elapsedDays(year + 1) - HDate.elapsedDays(year);
1577
+ return daysInYear(year);
1406
1578
  }
1407
1579
  /**
1408
1580
  * true if Cheshvan is long in Hebrew year
@@ -1412,7 +1584,7 @@ class HDate {
1412
1584
 
1413
1585
 
1414
1586
  static longCheshvan(year) {
1415
- return HDate.daysInYear(year) % 10 == 5;
1587
+ return longCheshvan(year);
1416
1588
  }
1417
1589
  /**
1418
1590
  * true if Kislev is short in Hebrew year
@@ -1422,7 +1594,7 @@ class HDate {
1422
1594
 
1423
1595
 
1424
1596
  static shortKislev(year) {
1425
- return HDate.daysInYear(year) % 10 == 3;
1597
+ return shortKislev(year);
1426
1598
  }
1427
1599
  /**
1428
1600
  * Converts Hebrew month string name to numeric
@@ -1464,41 +1636,41 @@ class HDate {
1464
1636
  /* this catches "november" */
1465
1637
  }
1466
1638
 
1467
- return NISAN$3;
1639
+ return months.NISAN;
1468
1640
 
1469
1641
  case 'i':
1470
- return IYYAR$1;
1642
+ return months.IYYAR;
1471
1643
 
1472
1644
  case 'e':
1473
- return ELUL$2;
1645
+ return months.ELUL;
1474
1646
 
1475
1647
  case 'c':
1476
1648
  case 'ח':
1477
- return CHESHVAN$2;
1649
+ return months.CHESHVAN;
1478
1650
 
1479
1651
  case 'k':
1480
1652
  case 'כ':
1481
- return KISLEV$2;
1653
+ return months.KISLEV;
1482
1654
 
1483
1655
  case 's':
1484
1656
  switch (c[1]) {
1485
1657
  case 'i':
1486
- return SIVAN$2;
1658
+ return months.SIVAN;
1487
1659
 
1488
1660
  case 'h':
1489
- return SHVAT$2;
1661
+ return months.SHVAT;
1490
1662
  }
1491
1663
 
1492
1664
  case 't':
1493
1665
  switch (c[1]) {
1494
1666
  case 'a':
1495
- return TAMUZ$1;
1667
+ return months.TAMUZ;
1496
1668
 
1497
1669
  case 'i':
1498
- return TISHREI$2;
1670
+ return months.TISHREI;
1499
1671
 
1500
1672
  case 'e':
1501
- return TEVET$2;
1673
+ return months.TEVET;
1502
1674
  }
1503
1675
 
1504
1676
  break;
@@ -1506,46 +1678,46 @@ class HDate {
1506
1678
  case 'a':
1507
1679
  switch (c[1]) {
1508
1680
  case 'v':
1509
- return AV$1;
1681
+ return months.AV;
1510
1682
 
1511
1683
  case 'd':
1512
1684
  if (/(1|[^i]i|a|א)$/i.test(monthName)) {
1513
- return ADAR_I$2;
1685
+ return months.ADAR_I;
1514
1686
  }
1515
1687
 
1516
- return ADAR_II$2;
1688
+ return months.ADAR_II;
1517
1689
  // else assume sheini
1518
1690
  }
1519
1691
 
1520
1692
  break;
1521
1693
 
1522
1694
  case 'ס':
1523
- return SIVAN$2;
1695
+ return months.SIVAN;
1524
1696
 
1525
1697
  case 'ט':
1526
- return TEVET$2;
1698
+ return months.TEVET;
1527
1699
 
1528
1700
  case 'ש':
1529
- return SHVAT$2;
1701
+ return months.SHVAT;
1530
1702
 
1531
1703
  case 'א':
1532
1704
  switch (c[1]) {
1533
1705
  case 'ב':
1534
- return AV$1;
1706
+ return months.AV;
1535
1707
 
1536
1708
  case 'ד':
1537
1709
  if (/(1|[^i]i|a|א)$/i.test(monthName)) {
1538
- return ADAR_I$2;
1710
+ return months.ADAR_I;
1539
1711
  }
1540
1712
 
1541
- return ADAR_II$2;
1713
+ return months.ADAR_II;
1542
1714
  // else assume sheini
1543
1715
 
1544
1716
  case 'י':
1545
- return IYYAR$1;
1717
+ return months.IYYAR;
1546
1718
 
1547
1719
  case 'ל':
1548
- return ELUL$2;
1720
+ return months.ELUL;
1549
1721
  }
1550
1722
 
1551
1723
  break;
@@ -1553,10 +1725,10 @@ class HDate {
1553
1725
  case 'ת':
1554
1726
  switch (c[1]) {
1555
1727
  case 'מ':
1556
- return TAMUZ$1;
1728
+ return months.TAMUZ;
1557
1729
 
1558
1730
  case 'ש':
1559
- return TISHREI$2;
1731
+ return months.TISHREI;
1560
1732
  }
1561
1733
 
1562
1734
  break;
@@ -1607,21 +1779,21 @@ function fix(date) {
1607
1779
 
1608
1780
  function fixDate(date) {
1609
1781
  if (date.day < 1) {
1610
- if (date.month == TISHREI$2) {
1782
+ if (date.month == months.TISHREI) {
1611
1783
  date.year -= 1;
1612
1784
  }
1613
1785
 
1614
- date.day += HDate.daysInMonth(date.month, date.year);
1786
+ date.day += daysInMonth(date.month, date.year);
1615
1787
  date.month -= 1;
1616
1788
  fix(date);
1617
1789
  }
1618
1790
 
1619
- if (date.day > HDate.daysInMonth(date.month, date.year)) {
1620
- if (date.month == ELUL$2) {
1791
+ if (date.day > daysInMonth(date.month, date.year)) {
1792
+ if (date.month === months.ELUL) {
1621
1793
  date.year += 1;
1622
1794
  }
1623
1795
 
1624
- date.day -= HDate.daysInMonth(date.month, date.year);
1796
+ date.day -= daysInMonth(date.month, date.year);
1625
1797
  date.month += 1;
1626
1798
  fix(date);
1627
1799
  }
@@ -1635,16 +1807,16 @@ function fixDate(date) {
1635
1807
 
1636
1808
 
1637
1809
  function fixMonth(date) {
1638
- if (date.month == ADAR_II$2 && !date.isLeapYear()) {
1810
+ if (date.month === months.ADAR_II && !date.isLeapYear()) {
1639
1811
  date.month -= 1; // to Adar I
1640
1812
 
1641
1813
  fix(date);
1642
1814
  } else if (date.month < 1) {
1643
- date.month += HDate.monthsInYear(date.year);
1815
+ date.month += monthsInYear(date.year);
1644
1816
  date.year -= 1;
1645
1817
  fix(date);
1646
- } else if (date.month > HDate.monthsInYear(date.year)) {
1647
- date.month -= HDate.monthsInYear(date.year);
1818
+ } else if (date.month > monthsInYear(date.year)) {
1819
+ date.month -= monthsInYear(date.year);
1648
1820
  date.year += 1;
1649
1821
  fix(date);
1650
1822
  }
@@ -3610,7 +3782,6 @@ class OmerEvent extends Event {
3610
3782
 
3611
3783
  this.weekNumber = Math.floor((omerDay - 1) / 7) + 1;
3612
3784
  this.daysWithinWeeks = omerDay % 7 || 7;
3613
- this.memo = [this.sefira('en'), this.sefira('he'), this.sefira('translit')].join('\n');
3614
3785
  }
3615
3786
  /**
3616
3787
  * @param {string} lang
@@ -3626,7 +3797,7 @@ class OmerEvent extends Event {
3626
3797
  case 'he':
3627
3798
  const heWeek = Locale.gettext(week, 'he');
3628
3799
  const heDayWithinWeek = Locale.gettext(dayWithinWeek, 'he');
3629
- const hePrefix = this.weekNumber === 2 || this.weekNumber === 6 ? 'שֶׁבִּ' : 'שֶׁבְּ';
3800
+ const hePrefix = this.weekNumber === 2 || this.weekNumber === 6 ? 'שֶׁבִּ' : 'שֶׁבְּ';
3630
3801
  return `${heDayWithinWeek} ${hePrefix}${heWeek}`.normalize();
3631
3802
 
3632
3803
  case 'translit':
@@ -3731,7 +3902,7 @@ class OmerEvent extends Event {
3731
3902
  // https://github.com/py-libhdate/py-libhdate/blob/master/hdate/date.py
3732
3903
 
3733
3904
  const tens = ['', 'עֲשָׂרָה', 'עֶשְׂרִים', 'שְׁלוֹשִׁים', 'אַרְבָּעִים'];
3734
- const ones = ['', 'אֶחָד', 'שְׁנַיִם', 'שְׁלוֹשָׁה', 'אַרְבָּעָה', 'חֲמִשָׁה', 'שִׁשָׁה', 'שִׁבְעָה', 'שְׁמוֹנָה', 'תִּשְׁעָה'];
3905
+ const ones = ['', 'אֶחָד', 'שְׁנַיִם', 'שְׁלוֹשָׁה', 'אַרְבָּעָה', 'חֲמִשָׁה', 'שִׁשָׁה', 'שִׁבְעָה', 'שְׁמוֹנָה', 'תִּשְׁעָה'];
3735
3906
  const shnei = 'שְׁנֵי';
3736
3907
  const yamim = 'יָמִים';
3737
3908
  const shneiYamim = shnei + ' ' + yamim;
@@ -3779,7 +3950,7 @@ function getTodayIsHe(omer) {
3779
3950
  if (omer > 6) {
3780
3951
  str = str.trim(); // remove trailing space before comma
3781
3952
 
3782
- str += ', שְׁהֵם ';
3953
+ str += ', שְׁהֵם ';
3783
3954
  const weeks = Math.floor(omer / 7);
3784
3955
  const days = omer % 7;
3785
3956
 
@@ -3807,7 +3978,7 @@ function getTodayIsHe(omer) {
3807
3978
  }
3808
3979
 
3809
3980
  str += 'לָעוֹמֶר';
3810
- return str;
3981
+ return str.normalize();
3811
3982
  }
3812
3983
 
3813
3984
  /* eslint-disable no-multi-spaces */
@@ -5273,18 +5444,18 @@ function getYahrzeit_(hyear, gdate) {
5273
5444
  return undefined;
5274
5445
  }
5275
5446
 
5276
- if (hDeath.mm == CHESHVAN && hDeath.dd == 30 && !HDate.longCheshvan(hDeath.yy + 1)) {
5447
+ if (hDeath.mm == CHESHVAN && hDeath.dd == 30 && !longCheshvan(hDeath.yy + 1)) {
5277
5448
  // If it's Heshvan 30 it depends on the first anniversary;
5278
5449
  // if that was not Heshvan 30, use the day before Kislev 1.
5279
- hDeath = HDate.abs2hebrew(HDate.hebrew2abs(hyear, KISLEV, 1) - 1);
5280
- } else if (hDeath.mm == KISLEV && hDeath.dd == 30 && HDate.shortKislev(hDeath.yy + 1)) {
5450
+ hDeath = abs2hebrew(hebrew2abs(hyear, KISLEV, 1) - 1);
5451
+ } else if (hDeath.mm == KISLEV && hDeath.dd == 30 && shortKislev(hDeath.yy + 1)) {
5281
5452
  // If it's Kislev 30 it depends on the first anniversary;
5282
5453
  // if that was not Kislev 30, use the day before Teveth 1.
5283
- hDeath = HDate.abs2hebrew(HDate.hebrew2abs(hyear, TEVET, 1) - 1);
5454
+ hDeath = abs2hebrew(hebrew2abs(hyear, TEVET, 1) - 1);
5284
5455
  } else if (hDeath.mm == ADAR_II) {
5285
5456
  // If it's Adar II, use the same day in last month of year (Adar or Adar II).
5286
- hDeath.mm = HDate.monthsInYear(hyear);
5287
- } else if (hDeath.mm == ADAR_I && hDeath.dd == 30 && !HDate.isLeapYear(hyear)) {
5457
+ hDeath.mm = monthsInYear(hyear);
5458
+ } else if (hDeath.mm == ADAR_I && hDeath.dd == 30 && !isLeapYear(hyear)) {
5288
5459
  // If it's the 30th in Adar I and year is not a leap year
5289
5460
  // (so Adar has only 29 days), use the last day in Shevat.
5290
5461
  hDeath.dd = 30;
@@ -5293,10 +5464,10 @@ function getYahrzeit_(hyear, gdate) {
5293
5464
  // advance day to rosh chodesh if needed
5294
5465
 
5295
5466
 
5296
- if (hDeath.mm == CHESHVAN && hDeath.dd == 30 && !HDate.longCheshvan(hyear)) {
5467
+ if (hDeath.mm == CHESHVAN && hDeath.dd == 30 && !longCheshvan(hyear)) {
5297
5468
  hDeath.mm = KISLEV;
5298
5469
  hDeath.dd = 1;
5299
- } else if (hDeath.mm == KISLEV && hDeath.dd == 30 && HDate.shortKislev(hyear)) {
5470
+ } else if (hDeath.mm == KISLEV && hDeath.dd == 30 && shortKislev(hyear)) {
5300
5471
  hDeath.mm = TEVET;
5301
5472
  hDeath.dd = 1;
5302
5473
  }
@@ -5319,19 +5490,19 @@ function getBirthdayOrAnniversary_(hyear, gdate) {
5319
5490
  return undefined;
5320
5491
  }
5321
5492
 
5322
- const isOrigLeap = HDate.isLeapYear(origYear);
5493
+ const isOrigLeap = isLeapYear(origYear);
5323
5494
  let month = orig.getMonth();
5324
5495
  let day = orig.getDate();
5325
5496
 
5326
5497
  if (month == ADAR_I && !isOrigLeap || month == ADAR_II && isOrigLeap) {
5327
- month = HDate.monthsInYear(hyear);
5328
- } else if (month == CHESHVAN && day == 30 && !HDate.longCheshvan(hyear)) {
5498
+ month = monthsInYear(hyear);
5499
+ } else if (month == CHESHVAN && day == 30 && !longCheshvan(hyear)) {
5329
5500
  month = KISLEV;
5330
5501
  day = 1;
5331
- } else if (month == KISLEV && day == 30 && HDate.shortKislev(hyear)) {
5502
+ } else if (month == KISLEV && day == 30 && shortKislev(hyear)) {
5332
5503
  month = TEVET;
5333
5504
  day = 1;
5334
- } else if (month == ADAR_I && day == 30 && isOrigLeap && !HDate.isLeapYear(hyear)) {
5505
+ } else if (month == ADAR_I && day == 30 && isOrigLeap && !isLeapYear(hyear)) {
5335
5506
  month = NISAN$1;
5336
5507
  day = 1;
5337
5508
  }
@@ -5339,7 +5510,7 @@ function getBirthdayOrAnniversary_(hyear, gdate) {
5339
5510
  return new HDate(day, month, hyear);
5340
5511
  }
5341
5512
 
5342
- const version="3.37.0";
5513
+ const version="3.38.0";
5343
5514
 
5344
5515
  const headers$1={"plural-forms":"nplurals=2; plural=(n > 1);",language:"en_CA@ashkenazi"};const contexts$1={"":{Berachot:["Berachos"],Shabbat:["Shabbos"],Taanit:["Taanis"],Yevamot:["Yevamos"],Ketubot:["Kesubos"],"Baba Batra":["Baba Basra"],Makkot:["Makkos"],Shevuot:["Shevuos"],Horayot:["Horayos"],Menachot:["Menachos"],Bechorot:["Bechoros"],Keritot:["Kerisos"],Midot:["Midos"],"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"],Tazria:["Sazria"],"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"],Berakhot:["Berakhos"],Sheviit:["Sheviis"],Terumot:["Terumos"],Maasrot:["Maasros"],Eduyot:["Eduyos"],Avot:["Avos"],Bekhorot:["Bekhoros"],Middot:["Middos"],Oholot:["Oholos"],Tahorot:["Tahoros"],Mikvaot:["Mikvaos"]}};var poAshkenazi = {headers:headers$1,contexts:contexts$1};
5345
5516