@hebcal/rest-api 3.19.3 → 4.0.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/README.md CHANGED
@@ -44,15 +44,9 @@ Converts to lowercase and replaces non-word characters with hyphen ('-')
44
44
  <dd></dd>
45
45
  <dt><a href="#pad4">pad4(number)</a> ⇒ <code>string</code></dt>
46
46
  <dd></dd>
47
- <dt><del><a href="#timeZoneOffsetStr">timeZoneOffsetStr(tzid, date)</a> ⇒ <code>string</code></del></dt>
48
- <dd><p>Get offset string (like &quot;+05:00&quot; or &quot;-08:00&quot;) from tzid (like &quot;Europe/Moscow&quot;)</p>
49
- </dd>
50
47
  <dt><a href="#toISOString">toISOString(d)</a> ⇒ <code>string</code></dt>
51
48
  <dd><p>Returns just the date portion as YYYY-MM-DD</p>
52
49
  </dd>
53
- <dt><del><a href="#toISOStringWithTimezone">toISOStringWithTimezone(date, timeStr, tzid)</a> ⇒ <code>string</code></del></dt>
54
- <dd><p>Returns a string like &quot;2018-09-01T12:30:00-05:00&quot;</p>
55
- </dd>
56
50
  <dt><a href="#getEventCategories">getEventCategories(ev)</a> ⇒ <code>Array.&lt;string&gt;</code></dt>
57
51
  <dd><p>Returns a category and subcategory name</p>
58
52
  </dd>
@@ -86,14 +80,10 @@ Converts to lowercase and replaces non-word characters with hyphen (&#39;-&#39;)
86
80
  <dd></dd>
87
81
  <dt><a href="#formatLeyningResult">formatLeyningResult(reading)</a> ⇒ <code>Object</code></dt>
88
82
  <dd></dd>
89
- <dt><a href="#eventsToRss">eventsToRss(events, location, mainUrl, selfUrl, [lang], [evPubDate])</a> ⇒ <code>string</code></dt>
90
- <dd></dd>
91
83
  <dt><a href="#eventsToRss2">eventsToRss2(events, options)</a> ⇒ <code>string</code></dt>
92
84
  <dd></dd>
93
85
  <dt><a href="#eventToRssItem2">eventToRssItem2(ev, options)</a> ⇒ <code>string</code></dt>
94
86
  <dd></dd>
95
- <dt><a href="#eventToRssItem">eventToRssItem(ev, evPubDate, lastBuildDate, dayFormat, location, mainUrl, [options])</a> ⇒ <code>string</code></dt>
96
- <dd></dd>
97
87
  <dt><a href="#eventToFullCalendar">eventToFullCalendar(ev, tzid, il)</a> ⇒ <code>Object</code></dt>
98
88
  <dd><p>Converts a Hebcal event to a FullCalendar.io object</p>
99
89
  </dd>
@@ -151,20 +141,6 @@ makeAnchor('Rosh Chodesh Adar II') // 'rosh-chodesh-adar-ii'
151
141
  | --- | --- |
152
142
  | number | <code>number</code> |
153
143
 
154
- <a name="timeZoneOffsetStr"></a>
155
-
156
- ## ~~timeZoneOffsetStr(tzid, date) ⇒ <code>string</code>~~
157
- ***Deprecated***
158
-
159
- Get offset string (like "+05:00" or "-08:00") from tzid (like "Europe/Moscow")
160
-
161
- **Kind**: global function
162
-
163
- | Param | Type |
164
- | --- | --- |
165
- | tzid | <code>string</code> |
166
- | date | <code>Date</code> |
167
-
168
144
  <a name="toISOString"></a>
169
145
 
170
146
  ## toISOString(d) ⇒ <code>string</code>
@@ -176,21 +152,6 @@ Returns just the date portion as YYYY-MM-DD
176
152
  | --- | --- |
177
153
  | d | <code>Date</code> |
178
154
 
179
- <a name="toISOStringWithTimezone"></a>
180
-
181
- ## ~~toISOStringWithTimezone(date, timeStr, tzid) ⇒ <code>string</code>~~
182
- ***Deprecated***
183
-
184
- Returns a string like "2018-09-01T12:30:00-05:00"
185
-
186
- **Kind**: global function
187
-
188
- | Param | Type | Description |
189
- | --- | --- | --- |
190
- | date | <code>Date</code> | |
191
- | timeStr | <code>string</code> | must be formatted with only hours and minutes, like "17:12" |
192
- | tzid | <code>string</code> | like "America/New_York" |
193
-
194
155
  <a name="getEventCategories"></a>
195
156
 
196
157
  ## getEventCategories(ev) ⇒ <code>Array.&lt;string&gt;</code>
@@ -329,21 +290,7 @@ Converts a Hebcal event to a classic Hebcal.com JSON API object
329
290
 
330
291
  | Param | Type |
331
292
  | --- | --- |
332
- | reading | <code>leyn.Leyning</code> |
333
-
334
- <a name="eventsToRss"></a>
335
-
336
- ## eventsToRss(events, location, mainUrl, selfUrl, [lang], [evPubDate]) ⇒ <code>string</code>
337
- **Kind**: global function
338
-
339
- | Param | Type | Default | Description |
340
- | --- | --- | --- | --- |
341
- | events | <code>Array.&lt;Event&gt;</code> | | |
342
- | location | <code>Location</code> | | |
343
- | mainUrl | <code>string</code> | | |
344
- | selfUrl | <code>string</code> | | |
345
- | [lang] | <code>string</code> | <code>&quot;en-US&quot;</code> | language such as 'he' (default 'en-US') |
346
- | [evPubDate] | <code>boolean</code> | <code>true</code> | if true, use event time as pubDate (false uses lastBuildDate) |
293
+ | reading | <code>Leyning</code> |
347
294
 
348
295
  <a name="eventsToRss2"></a>
349
296
 
@@ -365,21 +312,6 @@ Converts a Hebcal event to a classic Hebcal.com JSON API object
365
312
  | ev | <code>Event</code> |
366
313
  | options | <code>CalOptions</code> |
367
314
 
368
- <a name="eventToRssItem"></a>
369
-
370
- ## eventToRssItem(ev, evPubDate, lastBuildDate, dayFormat, location, mainUrl, [options]) ⇒ <code>string</code>
371
- **Kind**: global function
372
-
373
- | Param | Type |
374
- | --- | --- |
375
- | ev | <code>Event</code> |
376
- | evPubDate | <code>boolean</code> |
377
- | lastBuildDate | <code>string</code> |
378
- | dayFormat | <code>Intl.DateTimeFormat</code> |
379
- | location | <code>Location</code> |
380
- | mainUrl | <code>string</code> |
381
- | [options] | <code>CalOptions</code> |
382
-
383
315
  <a name="eventToFullCalendar"></a>
384
316
 
385
317
  ## eventToFullCalendar(ev, tzid, il) ⇒ <code>Object</code>
package/dist/bundle.js CHANGED
@@ -1,27 +1,7 @@
1
- /*! @hebcal/rest-api v3.19.3 */
2
- var hebcal__rest_api = (function (exports, core, leyn) {
1
+ /*! @hebcal/rest-api v4.0.0 */
2
+ var hebcal__rest_api = (function (exports, core, leyning) {
3
3
  'use strict';
4
4
 
5
- function _interopNamespace(e) {
6
- if (e && e.__esModule) return e;
7
- var n = Object.create(null);
8
- if (e) {
9
- Object.keys(e).forEach(function (k) {
10
- if (k !== 'default') {
11
- var d = Object.getOwnPropertyDescriptor(e, k);
12
- Object.defineProperty(n, k, d.get ? d : {
13
- enumerable: true,
14
- get: function () { return e[k]; }
15
- });
16
- }
17
- });
18
- }
19
- n["default"] = e;
20
- return Object.freeze(n);
21
- }
22
-
23
- var leyn__namespace = /*#__PURE__*/_interopNamespace(leyn);
24
-
25
5
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
26
6
 
27
7
  var check = function (it) {
@@ -4006,17 +3986,32 @@ function makeAnchor(s) {
4006
3986
  */
4007
3987
 
4008
3988
  function getDownloadFilename(options) {
4009
- let fileName = 'hebcal_' + options.year;
3989
+ let fileName = 'hebcal';
4010
3990
 
4011
- if (options.isHebrewYear) {
4012
- fileName += 'h';
4013
- }
3991
+ if (options.year) {
3992
+ fileName += '_' + options.year;
3993
+
3994
+ if (options.isHebrewYear) {
3995
+ fileName += 'h';
3996
+ }
4014
3997
 
4015
- if (options.month) {
4016
- fileName += '_' + options.month;
3998
+ if (options.month) {
3999
+ fileName += '_' + options.month;
4000
+ }
4001
+ } else if (typeof options.start === 'object' && typeof options.end === 'object') {
4002
+ const start = new core.HDate(options.start);
4003
+ const end = new core.HDate(options.end);
4004
+ const y1 = start.greg().getFullYear();
4005
+ const y2 = end.greg().getFullYear();
4006
+
4007
+ if (y1 === y2) {
4008
+ fileName += '_' + y1;
4009
+ } else {
4010
+ fileName += '_' + y1 + '_' + y2;
4011
+ }
4017
4012
  }
4018
4013
 
4019
- if (options.location) {
4014
+ if (typeof options.location === 'object') {
4020
4015
  const loc = options.location;
4021
4016
  const name = loc.zip || loc.asciiname || loc.getShortName();
4022
4017
 
@@ -4037,7 +4032,7 @@ function pad2(number) {
4037
4032
  return '0' + number;
4038
4033
  }
4039
4034
 
4040
- return String(number);
4035
+ return '' + number;
4041
4036
  }
4042
4037
  /**
4043
4038
  * @param {number} number
@@ -4055,18 +4050,7 @@ function pad4(number) {
4055
4050
  return '0' + number;
4056
4051
  }
4057
4052
 
4058
- return String(number);
4059
- }
4060
- /**
4061
- * Get offset string (like "+05:00" or "-08:00") from tzid (like "Europe/Moscow")
4062
- * @deprecated
4063
- * @param {string} tzid
4064
- * @param {Date} date
4065
- * @return {string}
4066
- */
4067
-
4068
- function timeZoneOffsetStr(tzid, date) {
4069
- return core.Zmanim.timeZoneOffset(tzid, date);
4053
+ return '' + number;
4070
4054
  }
4071
4055
  /**
4072
4056
  * Returns just the date portion as YYYY-MM-DD
@@ -4077,20 +4061,6 @@ function timeZoneOffsetStr(tzid, date) {
4077
4061
  function toISOString(d) {
4078
4062
  return pad4(d.getFullYear()) + '-' + pad2(d.getMonth() + 1) + '-' + pad2(d.getDate());
4079
4063
  }
4080
- /**
4081
- * Returns a string like "2018-09-01T12:30:00-05:00"
4082
- * @deprecated
4083
- * @param {Date} date
4084
- * @param {string} timeStr must be formatted with only hours and minutes, like "17:12"
4085
- * @param {string} tzid like "America/New_York"
4086
- * @return {string}
4087
- */
4088
-
4089
- function toISOStringWithTimezone(date, timeStr, tzid) {
4090
- const str = toISOString(date);
4091
- if (!timeStr) return str;
4092
- return str + 'T' + timeStr + ':00' + core.Zmanim.timeZoneOffset(tzid, date);
4093
- }
4094
4064
  /**
4095
4065
  * Returns a category and subcategory name
4096
4066
  * @param {Event} ev
@@ -4272,7 +4242,7 @@ function makeTorahMemoText(ev, il) {
4272
4242
  return '';
4273
4243
  }
4274
4244
 
4275
- const reading = mask & core.flags.PARSHA_HASHAVUA ? leyn__namespace.getLeyningForParshaHaShavua(ev, il) : leyn__namespace.getLeyningForHoliday(ev, il);
4245
+ const reading = mask & core.flags.PARSHA_HASHAVUA ? leyning.getLeyningForParshaHaShavua(ev, il) : leyning.getLeyningForHoliday(ev, il);
4276
4246
  let memo = '';
4277
4247
 
4278
4248
  if (reading && (reading.summary || reading.haftara)) {
@@ -4529,7 +4499,7 @@ function eventsToClassicApi(events, options) {
4529
4499
  */
4530
4500
 
4531
4501
  function eventToClassicApiObject(ev, options) {
4532
- let leyning = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
4502
+ let leyning$1 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
4533
4503
  const timed = Boolean(ev.eventTime);
4534
4504
  const hd = ev.getDate();
4535
4505
  const dt = hd.greg();
@@ -4576,20 +4546,20 @@ function eventToClassicApiObject(ev, options) {
4576
4546
  }
4577
4547
 
4578
4548
  if (!candles) {
4579
- if (leyning) {
4549
+ if (leyning$1) {
4580
4550
  const il = options.il;
4581
4551
  const isParsha = mask === core.flags.PARSHA_HASHAVUA;
4582
- const reading = isParsha ? leyn__namespace.getLeyningForParshaHaShavua(ev, il) : leyn__namespace.getLeyningForHoliday(ev, il);
4552
+ const reading = isParsha ? leyning.getLeyningForParshaHaShavua(ev, il) : leyning.getLeyningForHoliday(ev, il);
4583
4553
 
4584
4554
  if (reading) {
4585
4555
  result.leyning = formatLeyningResult(reading);
4586
4556
  const hyear = hd.getFullYear();
4587
4557
 
4588
- if (isParsha && !il && hyear >= 5745 && hyear <= 5830) {
4589
- const triReading = leyn__namespace.getTriennialForParshaHaShavua(ev);
4558
+ if (isParsha && !il && hyear >= 5745) {
4559
+ const triReading = leyning.getTriennialForParshaHaShavua(ev);
4590
4560
 
4591
4561
  if (triReading) {
4592
- result.leyning.triennial = formatAliyot({}, triReading);
4562
+ result.leyning.triennial = formatAliyot({}, triReading.aliyot);
4593
4563
  }
4594
4564
  }
4595
4565
  }
@@ -4619,6 +4589,17 @@ function eventToClassicApiObject(ev, options) {
4619
4589
  };
4620
4590
  }
4621
4591
 
4592
+ if (mask & core.flags.HEBREW_DATE) {
4593
+ const yy = hd.getFullYear();
4594
+ const mm = hd.getMonthName();
4595
+ const dd = hd.getDate();
4596
+ result.heDateParts = {
4597
+ y: core.gematriya(yy),
4598
+ m: core.Locale.gettext(mm, 'he-x-NoNikud'),
4599
+ d: core.gematriya(dd)
4600
+ };
4601
+ }
4602
+
4622
4603
  const memo = ev.memo || holidayDescription[ev.basename()];
4623
4604
 
4624
4605
  if (memo) {
@@ -4645,13 +4626,13 @@ function formatAliyot(result, aliyot) {
4645
4626
 
4646
4627
  if (typeof aliyah !== 'undefined') {
4647
4628
  const k = num == 'M' ? 'maftir' : num;
4648
- result[k] = leyn__namespace.formatAliyahWithBook(aliyah);
4629
+ result[k] = leyning.formatAliyahWithBook(aliyah);
4649
4630
  }
4650
4631
  });
4651
4632
  return result;
4652
4633
  }
4653
4634
  /**
4654
- * @param {leyn.Leyning} reading
4635
+ * @param {Leyning} reading
4655
4636
  * @return {Object}
4656
4637
  */
4657
4638
 
@@ -4725,34 +4706,7 @@ function getLinkAndGuid(ev, il, tzid, mainUrl, utmSource, utmMedium) {
4725
4706
 
4726
4707
  return [link, guid];
4727
4708
  }
4728
- /**
4729
- * @param {Event[]} events
4730
- * @param {Location} location
4731
- * @param {string} mainUrl
4732
- * @param {string} selfUrl
4733
- * @param {string} [lang] language such as 'he' (default 'en-US')
4734
- * @param {boolean} [evPubDate] if true, use event time as pubDate (false uses lastBuildDate)
4735
- * @return {string}
4736
- */
4737
-
4738
4709
 
4739
- function eventsToRss(events, location, mainUrl, selfUrl) {
4740
- let lang = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'en-US';
4741
- let evPubDate = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;
4742
- const cityDescr = location.getName();
4743
- const options = {
4744
- location,
4745
- mainUrl,
4746
- selfUrl,
4747
- lang,
4748
- evPubDate,
4749
- title: core.Locale.gettext('Shabbat') + " Times for ".concat(cityDescr),
4750
- description: "Weekly Shabbat candle lighting times for ".concat(cityDescr),
4751
- utmSource: 'shabbat1c',
4752
- utmMedium: 'rss'
4753
- };
4754
- return eventsToRss2(events, options);
4755
- }
4756
4710
  const localeToLg = {
4757
4711
  's': 'en',
4758
4712
  'a': 'en',
@@ -4823,28 +4777,15 @@ function getPubDate(ev, evPubDate, evDate, lastBuildDate) {
4823
4777
 
4824
4778
 
4825
4779
  function eventToRssItem2(ev, options) {
4826
- return eventToRssItem(ev, options.evPubDate, options.lastBuildDate, options.dayFormat, options.location, options.mainUrl, options);
4827
- }
4828
- /**
4829
- * @param {Event} ev
4830
- * @param {boolean} evPubDate
4831
- * @param {string} lastBuildDate
4832
- * @param {Intl.DateTimeFormat} dayFormat
4833
- * @param {Location} location
4834
- * @param {string} mainUrl
4835
- * @param {CalOptions} [options]
4836
- * @return {string}
4837
- */
4838
-
4839
- function eventToRssItem(ev, evPubDate, lastBuildDate, dayFormat, location, mainUrl, options) {
4840
4780
  let subj = ev.render();
4841
4781
  const evDate = ev.getDate().greg();
4842
- const pubDate = getPubDate(ev, evPubDate, evDate, lastBuildDate);
4782
+ const pubDate = getPubDate(ev, options.evPubDate, evDate, options.lastBuildDate);
4783
+ const location = options.location;
4843
4784
  const il = location ? location.getIsrael() : false;
4844
4785
  const tzid = location ? location.getTzid() : 'UTC';
4845
4786
  const utmSource = options && options.utmSource || 'shabbat1c';
4846
4787
  const utmMedium = options && options.utmMedium || 'rss';
4847
- const linkGuid = getLinkAndGuid(ev, il, tzid, mainUrl, utmSource, utmMedium);
4788
+ const linkGuid = getLinkAndGuid(ev, il, tzid, options.mainUrl, utmSource, utmMedium);
4848
4789
  const link = linkGuid[0];
4849
4790
  const guid = linkGuid[1];
4850
4791
  const categories = getEventCategories(ev);
@@ -4869,6 +4810,7 @@ function eventToRssItem(ev, evPubDate, lastBuildDate, dayFormat, location, mainU
4869
4810
  memo = ev.getFlags() & core.flags.PARSHA_HASHAVUA ? makeTorahMemoText(ev, il) : ev.memo || holidayDescription[ev.basename()];
4870
4811
  }
4871
4812
 
4813
+ const dayFormat = options.dayFormat;
4872
4814
  const description = memo || dayFormat.format(evDate);
4873
4815
  const geoTags = cat0 == 'candles' ? "<geo:lat>".concat(location.getLatitude(), "</geo:lat>\n<geo:long>").concat(location.getLongitude(), "</geo:long>\n") : '';
4874
4816
  return "<item>\n<title>".concat(subj, "</title>\n<link>").concat(link, "</link>\n<guid isPermaLink=\"false\">").concat(guid, "</guid>\n<description>").concat(description, "</description>\n<category>").concat(cat0, "</category>\n<pubDate>").concat(pubDate, "</pubDate>\n").concat(geoTags, "</item>\n");
@@ -4932,11 +4874,9 @@ exports.countryNames = countryNames;
4932
4874
  exports.eventToClassicApiObject = eventToClassicApiObject;
4933
4875
  exports.eventToCsv = eventToCsv;
4934
4876
  exports.eventToFullCalendar = eventToFullCalendar;
4935
- exports.eventToRssItem = eventToRssItem;
4936
4877
  exports.eventToRssItem2 = eventToRssItem2;
4937
4878
  exports.eventsToClassicApi = eventsToClassicApi;
4938
4879
  exports.eventsToCsv = eventsToCsv;
4939
- exports.eventsToRss = eventsToRss;
4940
4880
  exports.eventsToRss2 = eventsToRss2;
4941
4881
  exports.getCalendarTitle = getCalendarTitle;
4942
4882
  exports.getDownloadFilename = getDownloadFilename;
@@ -4950,9 +4890,7 @@ exports.pad2 = pad2;
4950
4890
  exports.pad4 = pad4;
4951
4891
  exports.renderTitleWithoutTime = renderTitleWithoutTime;
4952
4892
  exports.shouldRenderBrief = shouldRenderBrief;
4953
- exports.timeZoneOffsetStr = timeZoneOffsetStr;
4954
4893
  exports.toISOString = toISOString;
4955
- exports.toISOStringWithTimezone = toISOStringWithTimezone;
4956
4894
 
4957
4895
  Object.defineProperty(exports, '__esModule', { value: true });
4958
4896