@hebcal/core 5.4.4 → 5.4.5

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.cjs CHANGED
@@ -1,4 +1,4 @@
1
- /*! @hebcal/core v5.4.4 */
1
+ /*! @hebcal/core v5.4.5 */
2
2
  'use strict';
3
3
 
4
4
  /* eslint-disable @typescript-eslint/no-namespace, no-inner-declarations */
@@ -8684,13 +8684,6 @@ class OmerEvent extends Event {
8684
8684
  }
8685
8685
 
8686
8686
  class QuickLRU extends Map {
8687
- #size = 0;
8688
- #cache = new Map();
8689
- #oldCache = new Map();
8690
- #maxSize;
8691
- #maxAge;
8692
- #onEviction;
8693
-
8694
8687
  constructor(options = {}) {
8695
8688
  super();
8696
8689
 
@@ -8702,30 +8695,30 @@ class QuickLRU extends Map {
8702
8695
  throw new TypeError('`maxAge` must be a number greater than 0');
8703
8696
  }
8704
8697
 
8705
- this.#maxSize = options.maxSize;
8706
- this.#maxAge = options.maxAge || Number.POSITIVE_INFINITY;
8707
- this.#onEviction = options.onEviction;
8708
- }
8709
-
8710
- // For tests.
8711
- get __oldCache() {
8712
- return this.#oldCache;
8698
+ // TODO: Use private class fields when ESLint supports them.
8699
+ this.maxSize = options.maxSize;
8700
+ this.maxAge = options.maxAge || Number.POSITIVE_INFINITY;
8701
+ this.onEviction = options.onEviction;
8702
+ this.cache = new Map();
8703
+ this.oldCache = new Map();
8704
+ this._size = 0;
8713
8705
  }
8714
8706
 
8715
- #emitEvictions(cache) {
8716
- if (typeof this.#onEviction !== 'function') {
8707
+ // TODO: Use private class methods when targeting Node.js 16.
8708
+ _emitEvictions(cache) {
8709
+ if (typeof this.onEviction !== 'function') {
8717
8710
  return;
8718
8711
  }
8719
8712
 
8720
8713
  for (const [key, item] of cache) {
8721
- this.#onEviction(key, item.value);
8714
+ this.onEviction(key, item.value);
8722
8715
  }
8723
8716
  }
8724
8717
 
8725
- #deleteIfExpired(key, item) {
8718
+ _deleteIfExpired(key, item) {
8726
8719
  if (typeof item.expiry === 'number' && item.expiry <= Date.now()) {
8727
- if (typeof this.#onEviction === 'function') {
8728
- this.#onEviction(key, item.value);
8720
+ if (typeof this.onEviction === 'function') {
8721
+ this.onEviction(key, item.value);
8729
8722
  }
8730
8723
 
8731
8724
  return this.delete(key);
@@ -8734,54 +8727,54 @@ class QuickLRU extends Map {
8734
8727
  return false;
8735
8728
  }
8736
8729
 
8737
- #getOrDeleteIfExpired(key, item) {
8738
- const deleted = this.#deleteIfExpired(key, item);
8730
+ _getOrDeleteIfExpired(key, item) {
8731
+ const deleted = this._deleteIfExpired(key, item);
8739
8732
  if (deleted === false) {
8740
8733
  return item.value;
8741
8734
  }
8742
8735
  }
8743
8736
 
8744
- #getItemValue(key, item) {
8745
- return item.expiry ? this.#getOrDeleteIfExpired(key, item) : item.value;
8737
+ _getItemValue(key, item) {
8738
+ return item.expiry ? this._getOrDeleteIfExpired(key, item) : item.value;
8746
8739
  }
8747
8740
 
8748
- #peek(key, cache) {
8741
+ _peek(key, cache) {
8749
8742
  const item = cache.get(key);
8750
8743
 
8751
- return this.#getItemValue(key, item);
8744
+ return this._getItemValue(key, item);
8752
8745
  }
8753
8746
 
8754
- #set(key, value) {
8755
- this.#cache.set(key, value);
8756
- this.#size++;
8747
+ _set(key, value) {
8748
+ this.cache.set(key, value);
8749
+ this._size++;
8757
8750
 
8758
- if (this.#size >= this.#maxSize) {
8759
- this.#size = 0;
8760
- this.#emitEvictions(this.#oldCache);
8761
- this.#oldCache = this.#cache;
8762
- this.#cache = new Map();
8751
+ if (this._size >= this.maxSize) {
8752
+ this._size = 0;
8753
+ this._emitEvictions(this.oldCache);
8754
+ this.oldCache = this.cache;
8755
+ this.cache = new Map();
8763
8756
  }
8764
8757
  }
8765
8758
 
8766
- #moveToRecent(key, item) {
8767
- this.#oldCache.delete(key);
8768
- this.#set(key, item);
8759
+ _moveToRecent(key, item) {
8760
+ this.oldCache.delete(key);
8761
+ this._set(key, item);
8769
8762
  }
8770
8763
 
8771
- * #entriesAscending() {
8772
- for (const item of this.#oldCache) {
8764
+ * _entriesAscending() {
8765
+ for (const item of this.oldCache) {
8773
8766
  const [key, value] = item;
8774
- if (!this.#cache.has(key)) {
8775
- const deleted = this.#deleteIfExpired(key, value);
8767
+ if (!this.cache.has(key)) {
8768
+ const deleted = this._deleteIfExpired(key, value);
8776
8769
  if (deleted === false) {
8777
8770
  yield item;
8778
8771
  }
8779
8772
  }
8780
8773
  }
8781
8774
 
8782
- for (const item of this.#cache) {
8775
+ for (const item of this.cache) {
8783
8776
  const [key, value] = item;
8784
- const deleted = this.#deleteIfExpired(key, value);
8777
+ const deleted = this._deleteIfExpired(key, value);
8785
8778
  if (deleted === false) {
8786
8779
  yield item;
8787
8780
  }
@@ -8789,72 +8782,73 @@ class QuickLRU extends Map {
8789
8782
  }
8790
8783
 
8791
8784
  get(key) {
8792
- if (this.#cache.has(key)) {
8793
- const item = this.#cache.get(key);
8794
- return this.#getItemValue(key, item);
8785
+ if (this.cache.has(key)) {
8786
+ const item = this.cache.get(key);
8787
+
8788
+ return this._getItemValue(key, item);
8795
8789
  }
8796
8790
 
8797
- if (this.#oldCache.has(key)) {
8798
- const item = this.#oldCache.get(key);
8799
- if (this.#deleteIfExpired(key, item) === false) {
8800
- this.#moveToRecent(key, item);
8791
+ if (this.oldCache.has(key)) {
8792
+ const item = this.oldCache.get(key);
8793
+ if (this._deleteIfExpired(key, item) === false) {
8794
+ this._moveToRecent(key, item);
8801
8795
  return item.value;
8802
8796
  }
8803
8797
  }
8804
8798
  }
8805
8799
 
8806
- set(key, value, {maxAge = this.#maxAge} = {}) {
8807
- const expiry = typeof maxAge === 'number' && maxAge !== Number.POSITIVE_INFINITY
8808
- ? (Date.now() + maxAge)
8809
- : undefined;
8810
-
8811
- if (this.#cache.has(key)) {
8812
- this.#cache.set(key, {
8800
+ set(key, value, {maxAge = this.maxAge} = {}) {
8801
+ const expiry =
8802
+ typeof maxAge === 'number' && maxAge !== Number.POSITIVE_INFINITY ?
8803
+ Date.now() + maxAge :
8804
+ undefined;
8805
+ if (this.cache.has(key)) {
8806
+ this.cache.set(key, {
8813
8807
  value,
8814
- expiry,
8808
+ expiry
8815
8809
  });
8816
8810
  } else {
8817
- this.#set(key, {value, expiry});
8811
+ this._set(key, {value, expiry});
8818
8812
  }
8819
8813
 
8820
8814
  return this;
8821
8815
  }
8822
8816
 
8823
8817
  has(key) {
8824
- if (this.#cache.has(key)) {
8825
- return !this.#deleteIfExpired(key, this.#cache.get(key));
8818
+ if (this.cache.has(key)) {
8819
+ return !this._deleteIfExpired(key, this.cache.get(key));
8826
8820
  }
8827
8821
 
8828
- if (this.#oldCache.has(key)) {
8829
- return !this.#deleteIfExpired(key, this.#oldCache.get(key));
8822
+ if (this.oldCache.has(key)) {
8823
+ return !this._deleteIfExpired(key, this.oldCache.get(key));
8830
8824
  }
8831
8825
 
8832
8826
  return false;
8833
8827
  }
8834
8828
 
8835
8829
  peek(key) {
8836
- if (this.#cache.has(key)) {
8837
- return this.#peek(key, this.#cache);
8830
+ if (this.cache.has(key)) {
8831
+ return this._peek(key, this.cache);
8838
8832
  }
8839
8833
 
8840
- if (this.#oldCache.has(key)) {
8841
- return this.#peek(key, this.#oldCache);
8834
+ if (this.oldCache.has(key)) {
8835
+ return this._peek(key, this.oldCache);
8842
8836
  }
8843
8837
  }
8844
8838
 
8845
8839
  delete(key) {
8846
- const deleted = this.#cache.delete(key);
8840
+ const deleted = this.cache.delete(key);
8847
8841
  if (deleted) {
8848
- this.#size--;
8842
+ this._size--;
8849
8843
  }
8850
8844
 
8851
- return this.#oldCache.delete(key) || deleted;
8845
+ return this.oldCache.delete(key) || deleted;
8852
8846
  }
8853
8847
 
8854
8848
  clear() {
8855
- this.#cache.clear();
8856
- this.#oldCache.clear();
8857
- this.#size = 0;
8849
+ this.cache.clear();
8850
+ this.oldCache.clear();
8851
+ this._size = 0;
8858
8852
  }
8859
8853
 
8860
8854
  resize(newSize) {
@@ -8862,23 +8856,23 @@ class QuickLRU extends Map {
8862
8856
  throw new TypeError('`maxSize` must be a number greater than 0');
8863
8857
  }
8864
8858
 
8865
- const items = [...this.#entriesAscending()];
8859
+ const items = [...this._entriesAscending()];
8866
8860
  const removeCount = items.length - newSize;
8867
8861
  if (removeCount < 0) {
8868
- this.#cache = new Map(items);
8869
- this.#oldCache = new Map();
8870
- this.#size = items.length;
8862
+ this.cache = new Map(items);
8863
+ this.oldCache = new Map();
8864
+ this._size = items.length;
8871
8865
  } else {
8872
8866
  if (removeCount > 0) {
8873
- this.#emitEvictions(items.slice(0, removeCount));
8867
+ this._emitEvictions(items.slice(0, removeCount));
8874
8868
  }
8875
8869
 
8876
- this.#oldCache = new Map(items.slice(removeCount));
8877
- this.#cache = new Map();
8878
- this.#size = 0;
8870
+ this.oldCache = new Map(items.slice(removeCount));
8871
+ this.cache = new Map();
8872
+ this._size = 0;
8879
8873
  }
8880
8874
 
8881
- this.#maxSize = newSize;
8875
+ this.maxSize = newSize;
8882
8876
  }
8883
8877
 
8884
8878
  * keys() {
@@ -8894,18 +8888,18 @@ class QuickLRU extends Map {
8894
8888
  }
8895
8889
 
8896
8890
  * [Symbol.iterator]() {
8897
- for (const item of this.#cache) {
8891
+ for (const item of this.cache) {
8898
8892
  const [key, value] = item;
8899
- const deleted = this.#deleteIfExpired(key, value);
8893
+ const deleted = this._deleteIfExpired(key, value);
8900
8894
  if (deleted === false) {
8901
8895
  yield [key, value.value];
8902
8896
  }
8903
8897
  }
8904
8898
 
8905
- for (const item of this.#oldCache) {
8899
+ for (const item of this.oldCache) {
8906
8900
  const [key, value] = item;
8907
- if (!this.#cache.has(key)) {
8908
- const deleted = this.#deleteIfExpired(key, value);
8901
+ if (!this.cache.has(key)) {
8902
+ const deleted = this._deleteIfExpired(key, value);
8909
8903
  if (deleted === false) {
8910
8904
  yield [key, value.value];
8911
8905
  }
@@ -8914,22 +8908,22 @@ class QuickLRU extends Map {
8914
8908
  }
8915
8909
 
8916
8910
  * entriesDescending() {
8917
- let items = [...this.#cache];
8911
+ let items = [...this.cache];
8918
8912
  for (let i = items.length - 1; i >= 0; --i) {
8919
8913
  const item = items[i];
8920
8914
  const [key, value] = item;
8921
- const deleted = this.#deleteIfExpired(key, value);
8915
+ const deleted = this._deleteIfExpired(key, value);
8922
8916
  if (deleted === false) {
8923
8917
  yield [key, value.value];
8924
8918
  }
8925
8919
  }
8926
8920
 
8927
- items = [...this.#oldCache];
8921
+ items = [...this.oldCache];
8928
8922
  for (let i = items.length - 1; i >= 0; --i) {
8929
8923
  const item = items[i];
8930
8924
  const [key, value] = item;
8931
- if (!this.#cache.has(key)) {
8932
- const deleted = this.#deleteIfExpired(key, value);
8925
+ if (!this.cache.has(key)) {
8926
+ const deleted = this._deleteIfExpired(key, value);
8933
8927
  if (deleted === false) {
8934
8928
  yield [key, value.value];
8935
8929
  }
@@ -8938,28 +8932,24 @@ class QuickLRU extends Map {
8938
8932
  }
8939
8933
 
8940
8934
  * entriesAscending() {
8941
- for (const [key, value] of this.#entriesAscending()) {
8935
+ for (const [key, value] of this._entriesAscending()) {
8942
8936
  yield [key, value.value];
8943
8937
  }
8944
8938
  }
8945
8939
 
8946
8940
  get size() {
8947
- if (!this.#size) {
8948
- return this.#oldCache.size;
8941
+ if (!this._size) {
8942
+ return this.oldCache.size;
8949
8943
  }
8950
8944
 
8951
8945
  let oldCacheSize = 0;
8952
- for (const key of this.#oldCache.keys()) {
8953
- if (!this.#cache.has(key)) {
8946
+ for (const key of this.oldCache.keys()) {
8947
+ if (!this.cache.has(key)) {
8954
8948
  oldCacheSize++;
8955
8949
  }
8956
8950
  }
8957
8951
 
8958
- return Math.min(this.#size + oldCacheSize, this.#maxSize);
8959
- }
8960
-
8961
- get maxSize() {
8962
- return this.#maxSize;
8952
+ return Math.min(this._size + oldCacheSize, this.maxSize);
8963
8953
  }
8964
8954
 
8965
8955
  entries() {
@@ -9011,6 +9001,19 @@ class QuickLRU extends Map {
9011
9001
  const INCOMPLETE = 0;
9012
9002
  const REGULAR = 1;
9013
9003
  const COMPLETE = 2;
9004
+ function yearType(hyear) {
9005
+ const longC = HDate.longCheshvan(hyear);
9006
+ const shortK = HDate.shortKislev(hyear);
9007
+ if (longC && !shortK) {
9008
+ return COMPLETE;
9009
+ }
9010
+ else if (!longC && shortK) {
9011
+ return INCOMPLETE;
9012
+ }
9013
+ else {
9014
+ return REGULAR;
9015
+ }
9016
+ }
9014
9017
  /**
9015
9018
  * Represents Parashah HaShavua for an entire Hebrew year
9016
9019
  */
@@ -9022,11 +9025,6 @@ class Sedra {
9022
9025
  */
9023
9026
  constructor(hyear, il) {
9024
9027
  hyear = +hyear;
9025
- const longC = HDate.longCheshvan(hyear);
9026
- const shortK = HDate.shortKislev(hyear);
9027
- const type = (longC && !shortK) ? COMPLETE :
9028
- (!longC && shortK) ? INCOMPLETE :
9029
- REGULAR;
9030
9028
  this.year = hyear;
9031
9029
  const rh0 = new HDate(1, months.TISHREI, hyear);
9032
9030
  const rh = rh0.abs();
@@ -9035,6 +9033,7 @@ class Sedra {
9035
9033
  this.firstSaturday = HDate.dayOnOrBefore(6, rh + 6);
9036
9034
  const leap = +HDate.isLeapYear(hyear);
9037
9035
  this.il = Boolean(il);
9036
+ const type = yearType(hyear);
9038
9037
  let key = `${leap}${rhDay}${type}`;
9039
9038
  if (types[key]) {
9040
9039
  this.theSedraArray = types[key];
@@ -9287,7 +9286,6 @@ const YK = 'Yom Kippur'; // 1
9287
9286
  const SUKKOT = 'Sukkot'; // 0
9288
9287
  const CHMSUKOT = 'Sukkot Shabbat Chol ha-Moed'; // 0
9289
9288
  const SHMINI = 'Shmini Atzeret'; // 0
9290
- const EOY = CHMSUKOT; // always Sukkot day 3, 5 or 6
9291
9289
  const PESACH = 'Pesach'; // 25
9292
9290
  const PESACH1 = 'Pesach I';
9293
9291
  const CHMPESACH = 'Pesach Shabbat Chol ha-Moed'; // 25
@@ -9304,75 +9302,81 @@ const SHAVUOT$1 = 'Shavuot'; // 33
9304
9302
  function range$1(start, stop) {
9305
9303
  return Array.from({ length: stop - start + 1 }, (v, k) => k + start);
9306
9304
  }
9307
- const empty = [];
9305
+ const yearStartVayeilech = [51, 52, CHMSUKOT];
9306
+ const yearStartHaazinu = [52, YK, CHMSUKOT];
9307
+ const yearStartRH = [RH, 52, SUKKOT, SHMINI];
9308
+ const r020 = range$1(0, 20);
9309
+ const r027 = range$1(0, 27);
9310
+ const r3340 = range$1(33, 40);
9311
+ const r4349 = range$1(43, 49);
9312
+ const r4350 = range$1(43, 50);
9308
9313
  /**
9309
9314
  * The ordinary year types (keviot)
9310
9315
  * names are leap/nonleap - day - incomplete/regular/complete - diaspora/Israel
9311
9316
  * @private
9312
9317
  * @readonly
9313
- * @type {Object.<string, NumberOrString[]>}
9314
9318
  */
9315
9319
  const types = {
9316
9320
  /* Hebrew year that starts on Monday, is `incomplete' (Heshvan and
9317
9321
  * Kislev each have 29 days), and has Passover start on Tuesday. */
9318
9322
  // e.g. 5753
9319
- '020': empty.concat(51, 52, EOY, range$1(0, 20), D(21), 23, 24, PESACH, 25, D(26), D(28), 30, D(31), range$1(33, 40), D(41), range$1(43, 49), D(50)),
9323
+ '020': yearStartVayeilech.concat(r020, D(21), 23, 24, PESACH, 25, D(26), D(28), 30, D(31), r3340, D(41), r4349, D(50)),
9320
9324
  /* Hebrew year that starts on Monday, is `complete' (Heshvan and
9321
9325
  * Kislev each have 30 days), and has Passover start on Thursday. */
9322
9326
  // e.g. 5756
9323
- '0220': empty.concat(51, 52, EOY, range$1(0, 20), D(21), 23, 24, PESACH, 25, D(26), D(28), 30, D(31), 33, SHAVUOT$1, range$1(34, 37), D(38), 40, D(41), range$1(43, 49), D(50)),
9327
+ '0220': yearStartVayeilech.concat(r020, D(21), 23, 24, PESACH, 25, D(26), D(28), 30, D(31), 33, SHAVUOT$1, range$1(34, 37), D(38), 40, D(41), r4349, D(50)),
9324
9328
  /* Hebrew year that starts on Thursday, is `regular' (Heshvan has 29
9325
9329
  * days and Kislev has 30 days), and has Passover start on Saturday. */
9326
9330
  // e.g. 5701
9327
- '0510': empty.concat(52, YK, EOY, range$1(0, 20), D(21), 23, 24, PESACH1, PESACH8, 25, D(26), D(28), 30, D(31), range$1(33, 40), D(41), range$1(43, 50)),
9331
+ '0510': yearStartHaazinu.concat(r020, D(21), 23, 24, PESACH1, PESACH8, 25, D(26), D(28), 30, D(31), r3340, D(41), r4350),
9328
9332
  /* Hebrew year that starts on Thursday, is `regular' (Heshvan has 29
9329
9333
  * days and Kislev has 30 days), and has Passover start on Saturday. */
9330
9334
  // e.g. 5745
9331
- '0511': empty.concat(52, YK, EOY, range$1(0, 20), D(21), 23, 24, PESACH, 25, D(26), D(28), range$1(30, 40), D(41), range$1(43, 50)),
9335
+ '0511': yearStartHaazinu.concat(r020, D(21), 23, 24, PESACH, 25, D(26), D(28), range$1(30, 40), D(41), r4350),
9332
9336
  /* Hebrew year that starts on Thursday, is `complete' (Heshvan and
9333
9337
  * Kislev each have 30 days), and has Passover start on Sunday. */
9334
9338
  // e.g. 5754
9335
- '052': empty.concat(52, YK, CHMSUKOT, range$1(0, 24), PESACH7, 25, D(26), D(28), 30, D(31), range$1(33, 40), D(41), range$1(43, 50)),
9339
+ '052': yearStartHaazinu.concat(range$1(0, 24), PESACH7, 25, D(26), D(28), 30, D(31), r3340, D(41), r4350),
9336
9340
  /* Hebrew year that starts on Saturday, is `incomplete' (Heshvan and Kislev
9337
9341
  * each have 29 days), and has Passover start on Sunday. */
9338
9342
  // e.g. 5761
9339
- '070': empty.concat(RH, 52, SUKKOT, SHMINI, range$1(0, 20), D(21), 23, 24, PESACH7, 25, D(26), D(28), 30, D(31), range$1(33, 40), D(41), range$1(43, 50)),
9343
+ '070': yearStartRH.concat(r020, D(21), 23, 24, PESACH7, 25, D(26), D(28), 30, D(31), r3340, D(41), r4350),
9340
9344
  /* Hebrew year that starts on Saturday, is `complete' (Heshvan and
9341
9345
  * Kislev each have 30 days), and has Passover start on Tuesday. */
9342
9346
  // e.g. 5716
9343
- '072': empty.concat(RH, 52, SUKKOT, SHMINI, range$1(0, 20), D(21), 23, 24, CHMPESACH, 25, D(26), D(28), 30, D(31), range$1(33, 40), D(41), range$1(43, 49), D(50)),
9347
+ '072': yearStartRH.concat(r020, D(21), 23, 24, CHMPESACH, 25, D(26), D(28), 30, D(31), r3340, D(41), r4349, D(50)),
9344
9348
  /* -- The leap year types (keviot) -- */
9345
9349
  /* Hebrew year that starts on Monday, is `incomplete' (Heshvan and
9346
9350
  * Kislev each have 29 days), and has Passover start on Thursday. */
9347
9351
  // e.g. 5746
9348
- '1200': empty.concat(51, 52, CHMSUKOT, range$1(0, 27), CHMPESACH, range$1(28, 33), SHAVUOT$1, range$1(34, 37), D(38), 40, D(41), range$1(43, 49), D(50)),
9352
+ '1200': yearStartVayeilech.concat(r027, CHMPESACH, range$1(28, 33), SHAVUOT$1, range$1(34, 37), D(38), 40, D(41), r4349, D(50)),
9349
9353
  /* Hebrew year that starts on Monday, is `incomplete' (Heshvan and
9350
9354
  * Kislev each have 29 days), and has Passover start on Thursday. */
9351
9355
  // e.g. 5746
9352
- '1201': empty.concat(51, 52, CHMSUKOT, range$1(0, 27), CHMPESACH, range$1(28, 40), D(41), range$1(43, 49), D(50)),
9356
+ '1201': yearStartVayeilech.concat(r027, CHMPESACH, range$1(28, 40), D(41), r4349, D(50)),
9353
9357
  /* Hebrew year that starts on Monday, is `complete' (Heshvan and
9354
9358
  * Kislev each have 30 days), and has Passover start on Saturday. */
9355
9359
  // e.g.5752
9356
- '1220': empty.concat(51, 52, CHMSUKOT, range$1(0, 27), PESACH1, PESACH8, range$1(28, 40), D(41), range$1(43, 50)),
9360
+ '1220': yearStartVayeilech.concat(r027, PESACH1, PESACH8, range$1(28, 40), D(41), r4350),
9357
9361
  /* Hebrew year that starts on Monday, is `complete' (Heshvan and
9358
9362
  * Kislev each have 30 days), and has Passover start on Saturday. */
9359
9363
  // e.g.5752
9360
- '1221': empty.concat(51, 52, CHMSUKOT, range$1(0, 27), PESACH, range$1(28, 50)),
9364
+ '1221': yearStartVayeilech.concat(r027, PESACH, range$1(28, 50)),
9361
9365
  /* Hebrew year that starts on Thursday, is `incomplete' (Heshvan and
9362
9366
  * Kislev both have 29 days), and has Passover start on Sunday. */
9363
9367
  // e.g. 5768
9364
- '150': empty.concat(52, YK, CHMSUKOT, range$1(0, 28), PESACH7, range$1(29, 50)),
9368
+ '150': yearStartHaazinu.concat(range$1(0, 28), PESACH7, range$1(29, 50)),
9365
9369
  /* Hebrew year that starts on Thursday, is `complete' (Heshvan and
9366
9370
  * Kislev both have 30 days), and has Passover start on Tuesday. */
9367
9371
  // eg. 5771
9368
- '152': empty.concat(52, YK, CHMSUKOT, range$1(0, 28), CHMPESACH, range$1(29, 49), D(50)),
9372
+ '152': yearStartHaazinu.concat(range$1(0, 28), CHMPESACH, range$1(29, 49), D(50)),
9369
9373
  /* Hebrew year that starts on Saturday, is `incomplete' (Heshvan and
9370
9374
  * Kislev each have 29 days), and has Passover start on Tuesday. */
9371
9375
  // e.g.5757
9372
- '170': empty.concat(RH, 52, SUKKOT, SHMINI, range$1(0, 27), CHMPESACH, range$1(28, 40), D(41), range$1(43, 49), D(50)),
9376
+ '170': yearStartRH.concat(r027, CHMPESACH, range$1(28, 40), D(41), r4349, D(50)),
9373
9377
  /* Hebrew year that starts on Saturday, is `complete' (Heshvan and
9374
9378
  * Kislev each have 30 days), and has Passover start on Thursday. */
9375
- '1720': empty.concat(RH, 52, SUKKOT, SHMINI, range$1(0, 27), CHMPESACH, range$1(28, 33), SHAVUOT$1, range$1(34, 37), D(38), 40, D(41), range$1(43, 49), D(50)),
9379
+ '1720': yearStartRH.concat(r027, CHMPESACH, range$1(28, 33), SHAVUOT$1, range$1(34, 37), D(38), 40, D(41), r4349, D(50)),
9376
9380
  };
9377
9381
  /* Hebrew year that starts on Monday, is `complete' (Heshvan and
9378
9382
  * Kislev each have 30 days), and has Passover start on Thursday. */
@@ -9396,6 +9400,8 @@ types['1311'] = types['1221'];
9396
9400
  types['1721'] = types['170'];
9397
9401
  const sedraCache = new QuickLRU({ maxSize: 400 });
9398
9402
  /**
9403
+ * Convenience function to create an instance of `Sedra` or reuse a previously
9404
+ * created and cached instance.
9399
9405
  * @private
9400
9406
  * @param {number} hyear
9401
9407
  * @param {boolean} il
@@ -10060,7 +10066,7 @@ class DailyLearning {
10060
10066
  }
10061
10067
 
10062
10068
  /** DO NOT EDIT THIS AUTO-GENERATED FILE! */
10063
- const version = '5.4.4';
10069
+ const version = '5.4.5';
10064
10070
 
10065
10071
  /* eslint-disable max-len */
10066
10072
  /**