javascript-time-ago 2.5.12 → 2.6.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.
Files changed (48) hide show
  1. package/CHANGELOG.md +10 -1
  2. package/README.md +410 -272
  3. package/bundle/javascript-time-ago.js +1 -1
  4. package/bundle/javascript-time-ago.js.map +1 -1
  5. package/bundle/javascript-time-ago.min.js +1 -1
  6. package/bundle/javascript-time-ago.min.js.map +1 -1
  7. package/commonjs/FullDateFormatter.js +72 -0
  8. package/commonjs/FullDateFormatter.js.map +1 -0
  9. package/commonjs/FullDateFormatter.test.js +26 -0
  10. package/commonjs/FullDateFormatter.test.js.map +1 -0
  11. package/commonjs/TimeAgo.js +208 -106
  12. package/commonjs/TimeAgo.js.map +1 -1
  13. package/commonjs/TimeAgo.test.js +95 -10
  14. package/commonjs/TimeAgo.test.js.map +1 -1
  15. package/commonjs/steps/getStepMinTime.js +26 -19
  16. package/commonjs/steps/getStepMinTime.js.map +1 -1
  17. package/commonjs/steps/getTimeToNextUpdate.js +10 -2
  18. package/commonjs/steps/getTimeToNextUpdate.js.map +1 -1
  19. package/commonjs/style/twitter.js +2 -3
  20. package/commonjs/style/twitter.js.map +1 -1
  21. package/commonjs/style/twitter.test.js +5 -2
  22. package/commonjs/style/twitter.test.js.map +1 -1
  23. package/full-date-formatter/index.cjs +4 -0
  24. package/full-date-formatter/index.cjs.js +9 -0
  25. package/full-date-formatter/index.d.ts +6 -0
  26. package/full-date-formatter/index.js +1 -0
  27. package/full-date-formatter/package.json +15 -0
  28. package/index.cjs +1 -1
  29. package/index.cjs.js +2 -2
  30. package/index.d.ts +14 -4
  31. package/index.js +3 -1
  32. package/modules/FullDateFormatter.js +67 -0
  33. package/modules/FullDateFormatter.js.map +1 -0
  34. package/modules/FullDateFormatter.test.js +22 -0
  35. package/modules/FullDateFormatter.test.js.map +1 -0
  36. package/modules/TimeAgo.js +208 -107
  37. package/modules/TimeAgo.js.map +1 -1
  38. package/modules/TimeAgo.test.js +95 -8
  39. package/modules/TimeAgo.test.js.map +1 -1
  40. package/modules/steps/getStepMinTime.js +26 -19
  41. package/modules/steps/getStepMinTime.js.map +1 -1
  42. package/modules/steps/getTimeToNextUpdate.js +10 -2
  43. package/modules/steps/getTimeToNextUpdate.js.map +1 -1
  44. package/modules/style/twitter.js +3 -3
  45. package/modules/style/twitter.js.map +1 -1
  46. package/modules/style/twitter.test.js +5 -2
  47. package/modules/style/twitter.test.js.map +1 -1
  48. package/package.json +16 -11
@@ -1,3 +1,9 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) { n[e] = r[e]; } return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0) { ; } } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
7
  import TimeAgo from './TimeAgo.js';
2
8
  import { getLocaleData } from './LocaleDataStore.js';
3
9
 
@@ -228,9 +234,8 @@ describe("javascript-time-ago", function () {
228
234
  });
229
235
  it('should format for a style with "custom" function', function () {
230
236
  var timeAgo = new TimeAgo('en');
231
-
232
- // `custom` returns a string
233
237
  timeAgo.format(Date.now(), {
238
+ // `custom` returns a string
234
239
  custom: function custom(_ref) {
235
240
  var now = _ref.now,
236
241
  time = _ref.time,
@@ -239,9 +244,8 @@ describe("javascript-time-ago", function () {
239
244
  return locale;
240
245
  }
241
246
  }).should.equal('en');
242
-
243
- // `custom` returns `undefined`
244
247
  timeAgo.format(Date.now(), {
248
+ // `custom` returns `undefined`
245
249
  custom: function custom(_ref2) {
246
250
  var now = _ref2.now,
247
251
  time = _ref2.time,
@@ -251,6 +255,23 @@ describe("javascript-time-ago", function () {
251
255
  }
252
256
  }).should.equal('just now');
253
257
  });
258
+ it('should throw an error when formating for a style with "custom" function and `getTimeToNextUpdate: true` parameter is passed', function () {
259
+ var timeAgo = new TimeAgo('en');
260
+ expect(function () {
261
+ timeAgo.format(Date.now(), {
262
+ // `custom` returns a string.
263
+ custom: function custom(_ref3) {
264
+ var now = _ref3.now,
265
+ time = _ref3.time,
266
+ date = _ref3.date,
267
+ locale = _ref3.locale;
268
+ return locale;
269
+ }
270
+ }, {
271
+ getTimeToNextUpdate: true
272
+ });
273
+ }).to["throw"]('not supported');
274
+ });
254
275
  it('should format future dates', function () {
255
276
  new TimeAgo('en').format(Date.now() + 60 * 60 * 1000).should.equal('in 1 hour');
256
277
  new TimeAgo('ru').format(Date.now() + 60 * 1000).should.equal('через 1 минуту');
@@ -332,6 +353,62 @@ describe("javascript-time-ago", function () {
332
353
  }).should.equal('in 0 seconds');
333
354
  english['mini'].second = secondLabels;
334
355
  });
356
+ it('should refresh the label when `refresh` parameter is passed', function () {
357
+ var refreshedTimes = 0;
358
+ var timeAgo = new TimeAgo('en');
359
+ // in 1 second -> in 0 seconds.
360
+ var _timeAgo$format = timeAgo.format(1000, 'twitter', {
361
+ refresh: function refresh(text) {
362
+ if (refreshedTimes === 0) {
363
+ expect(text).to.equal('0s');
364
+ } else {
365
+ throw new Error('Refresh should have been cancelled');
366
+ }
367
+ refreshedTimes++;
368
+ },
369
+ now: 0,
370
+ round: 'floor'
371
+ }),
372
+ _timeAgo$format2 = _slicedToArray(_timeAgo$format, 2),
373
+ text = _timeAgo$format2[0],
374
+ cancelRefresh = _timeAgo$format2[1];
375
+ expect(text).to.equal('1s');
376
+ expect(cancelRefresh).to.be.a('function');
377
+ // Sidenote: `timeToNextUpdate` is `1`.
378
+ var timeToNextUpdate = 1;
379
+ return delay(timeToNextUpdate + 1).then(function () {
380
+ expect(refreshedTimes).to.equal(1);
381
+ cancelRefresh();
382
+ });
383
+ });
384
+ it('should get time to next update (capped)', function () {
385
+ var timeAgo = new TimeAgo('en');
386
+ // in 1 second -> in 0 seconds.
387
+ timeAgo.format(0.5 * 365 * 24 * 60 * 60 * 1000, 'twitter', {
388
+ getTimeToNextUpdate: true,
389
+ now: 0,
390
+ round: 'floor'
391
+ }).should.deep.equal(['Jul 2', 2147483647]);
392
+ });
393
+ it('should get time to next update (capped)', function () {
394
+ var timeAgo = new TimeAgo('en');
395
+ // in 1 second -> in 0 seconds.
396
+ timeAgo.format(0.5 * 365 * 24 * 60 * 60 * 1000, 'twitter', {
397
+ getTimeToNextUpdate: true,
398
+ getTimeToNextUpdateUncapped: true,
399
+ now: 0,
400
+ round: 'floor'
401
+ }).should.deep.equal(['Jul 2', 15681600001]);
402
+ });
403
+ it('should get time to next update (uncapped)', function () {
404
+ var timeAgo = new TimeAgo('en');
405
+ // in 1 second -> in 0 seconds.
406
+ timeAgo.format(1000, 'twitter', {
407
+ getTimeToNextUpdate: true,
408
+ now: 0,
409
+ round: 'floor'
410
+ }).should.deep.equal(['1s', 1]);
411
+ });
335
412
  it('should get time to next update (round: "floor")', function () {
336
413
  var timeAgo = new TimeAgo('en');
337
414
  // in 1 second -> in 0 seconds.
@@ -570,8 +647,8 @@ describe("javascript-time-ago", function () {
570
647
  timeAgo.format(Date.now(), {
571
648
  labels: 'long',
572
649
  steps: [{
573
- format: function format(date, locale, _ref3) {
574
- var formatAs = _ref3.formatAs;
650
+ format: function format(date, locale, _ref4) {
651
+ var formatAs = _ref4.formatAs;
575
652
  return formatAs('second', 1);
576
653
  }
577
654
  }]
@@ -634,11 +711,16 @@ describe("javascript-time-ago", function () {
634
711
  locale: 'el'
635
712
  });
636
713
  TimeAgo.getDefaultLocale().should.equal('el');
637
- // expect(() => {
714
+ // Doesn't throw an error because the same locale is already specified as default.
638
715
  TimeAgo.addDefaultLocale({
639
716
  locale: 'el'
640
717
  });
641
- // }).to.throw('`TimeAgo.addDefaultLocale()` can only be called once')
718
+ // Could throw an error or output an error message because another locale is already specified as default.
719
+ // expect(() => {
720
+ TimeAgo.addDefaultLocale({
721
+ locale: 'es'
722
+ });
723
+ // }).to.throw('but you have already added "el" as the default locale.')
642
724
  TimeAgo.setDefaultLocale('en');
643
725
  });
644
726
  it('should support "floor" rounding', function () {
@@ -669,4 +751,9 @@ describe("javascript-time-ago", function () {
669
751
  }).should.equal('2m');
670
752
  });
671
753
  });
754
+ function delay(delayTime) {
755
+ return new Promise(function (resolve) {
756
+ setTimeout(resolve, delayTime);
757
+ });
758
+ }
672
759
  //# sourceMappingURL=TimeAgo.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TimeAgo.test.js","names":["TimeAgo","getLocaleData","english","type","setDefaultLocale","describe","it","timeAgo","format","Date","now","should","equal","future","labels","steps","formatAs","flavour","gradation","englishNow","addLocale","undefined","NumberFormat","Intl","englishLongTimeMinute","minute","past","mockedDate","getTime","thrower","units","custom","_ref","time","date","locale","_ref2","style2","style","unit","factor","include","secondLabels","second","getTimeToNextUpdate","round","deep","minTime","_ref3","polyfill","global","expect","to","getDefaultLocale","addDefaultLocale"],"sources":["../source/TimeAgo.test.js"],"sourcesContent":["import TimeAgo from './TimeAgo.js'\r\nimport { getLocaleData } from './LocaleDataStore.js'\r\n\r\n// Load locale specific relative date/time messages\r\nimport english from '../locale/en.json' with { type: 'json' }\r\n\r\n// Just so this function code is covered.\r\nTimeAgo.setDefaultLocale('en')\r\n\r\ndescribe(`javascript-time-ago`, () => {\r\n\tit('should default to \"round-minute\" style', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now()).should.equal('just now')\r\n\t\ttimeAgo.format(Date.now() + 20 * 1000).should.equal('in a moment')\r\n\t\ttimeAgo.format(Date.now() + 1 * 60 * 1000).should.equal('in 1 minute')\r\n\t\ttimeAgo.format(Date.now() + 4 * 60 * 1000).should.equal('in 4 minutes')\r\n\t})\r\n\r\n\tit('should tell `options` argument from `style` argument', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now(), 'mini-now').should.equal('now')\r\n\t\ttimeAgo.format(0, { future: true, now: 0 }).should.equal('in a moment')\r\n\t\ttimeAgo.format(0, { labels: 'mini', steps: [{ formatAs: 'now' }, { formatAs: 'second' }] }, { future: true, now: 0 }).should.equal('now')\r\n\t\ttimeAgo.format(0, { labels: ['mini'], steps: [{ formatAs: 'now' }, { formatAs: 'second' }] }, { future: true, now: 0 }).should.equal('now')\r\n\t\t// `flavour` is a legacy name of `labels` property.\r\n\t\ttimeAgo.format(0, { flavour: 'mini' }, { future: true, now: 0 }).should.equal('now')\r\n\t\ttimeAgo.format(0, { flavour: ['mini'] }, { future: true, now: 0 }).should.equal('now')\r\n\t\ttimeAgo.format(0, { steps: [{ formatAs: 'minute' }] }, { future: true, now: 0 }).should.equal('in 0 minutes')\r\n\t\t// `gradation` is a legacy name of `steps` property.\r\n\t\ttimeAgo.format(0, { gradation: [{ formatAs: 'minute' }] }, { future: true, now: 0 }).should.equal('in 0 minutes')\r\n\t})\r\n\r\n\tit('should try various label types until an appropriate one is found', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now(), { labels: ['exotic', 'short'] }).should.equal('just now')\r\n\t})\r\n\r\n\tit('should support the legacy name \"flavour\" of \"labels\"', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now(), { labels: ['exotic', 'short'] }).should.equal('just now')\r\n\t})\r\n\r\n\tit('should fallback to \"second.current\" for \"now\" when \"now\" is not defined', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\tconst englishNow = english.now\r\n\t\tdelete english.now\r\n\t\tTimeAgo.addLocale(english)\r\n\t\tenglish.now = undefined\r\n\t\ttimeAgo.format(Date.now(), { labels: 'long' }).should.equal('now')\r\n\t\tenglish.now = englishNow\r\n\t\ttimeAgo.format(Date.now(), { labels: 'long' }).should.equal('just now')\r\n\t})\r\n\r\n\tit('should not use Intl.NumberFormat if it is not available', () => {\r\n\t\tconst NumberFormat = Intl.NumberFormat\r\n\t\tdelete Intl.NumberFormat\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now() + 60 * 1000, { labels: 'long-time' }).should.equal('1 minute')\r\n\t\tIntl.NumberFormat = NumberFormat\r\n\t})\r\n\r\n\tit('should work when \"past\"/\"future\" messages are same for all quantifiers', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now() + 365 * 24 * 60 * 60 * 1000, { labels: 'short' }).should.equal('in 1 yr.')\r\n\t})\r\n\r\n\tit('should work when \"now\" is a string (does not differentiate between \"past\" and \"future\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\tconst englishNow = english.now\r\n\t\tenglish.now = { now: 'now' }\r\n\t\tTimeAgo.addLocale(english)\r\n\t\ttimeAgo.format(Date.now(), { labels: 'long' }).should.equal('now')\r\n\t\tenglish.now = englishNow\r\n\t\ttimeAgo.format(Date.now(), { labels: 'long' }).should.equal('just now')\r\n\t})\r\n\r\n\tit('should work when a unit has formatting rules for \"past\" and \"future\" which are strings (style: not \"long\", not \"short\", not \"narrow\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\tconst englishLongTimeMinute = english['long-time'].minute\r\n\t\tenglish['long-time'].minute = {\r\n\t\t\tpast: '{0} minute(s) ago',\r\n\t\t\tfuture: 'in {0} minute(s)'\r\n\t\t}\r\n\t\tTimeAgo.addLocale(english)\r\n\t\t// Past.\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, { labels: 'long-time' }).should.equal('1 minute(s) ago')\r\n\t\t// Future (covers an \"else\" branch).\r\n\t\ttimeAgo.format(Date.now() + 60 * 1000, { labels: 'long-time' }).should.equal('in 1 minute(s)')\r\n\t\t// Undo.\r\n\t\tenglish['long-time'].minute = englishLongTimeMinute\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, { labels: 'long-time' }).should.equal('1 minute')\r\n\t})\r\n\r\n\tit(`should format \"now\" for \"past\" time`, () =>\r\n\t{\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now() + 10, { labels: ['long'] }).should.equal('in a moment')\r\n\t})\r\n\r\n\tit('should accept a string style name argument', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\t// \"mini\".\r\n\t\ttimeAgo.format(Date.now() - 0 * 1000, 'mini').should.equal('0s')\r\n\t\ttimeAgo.format(Date.now() - 1 * 1000, 'mini').should.equal('1s')\r\n\t\t// \"mini-now\".\r\n\t\ttimeAgo.format(Date.now() - 0 * 1000, 'mini-now').should.equal('now')\r\n\t\ttimeAgo.format(Date.now() - 1 * 1000, 'mini-now').should.equal('1s')\r\n\t\t// \"mini-minute-now\".\r\n\t\ttimeAgo.format(Date.now() - 29 * 1000, 'mini-minute-now').should.equal('now')\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, 'mini-minute-now').should.equal('1m')\r\n\t\t// \"mini-minute\".\r\n\t\ttimeAgo.format(Date.now() - 29 * 1000, 'mini-minute').should.equal('0m')\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, 'mini-minute').should.equal('1m')\r\n\t\t// \"twitter\".\r\n\t\ttimeAgo.format(Date.now() - 0 * 1000, 'twitter').should.equal('0s')\r\n\t\ttimeAgo.format(Date.now() - 1 * 1000, 'twitter').should.equal('1s')\r\n\t\t// \"twitter-now\".\r\n\t\ttimeAgo.format(Date.now() - 0 * 1000, 'twitter-now').should.equal('now')\r\n\t\ttimeAgo.format(Date.now() - 1 * 1000, 'twitter-now').should.equal('1s')\r\n\t\t// \"twitter-minute-now\".\r\n\t\ttimeAgo.format(Date.now() - 29 * 1000, 'twitter-minute-now').should.equal('now')\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, 'twitter-minute-now').should.equal('1m')\r\n\t\t// \"twitter-minute\".\r\n\t\ttimeAgo.format(Date.now() - 29 * 1000, 'twitter-minute').should.equal('0m')\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, 'twitter-minute').should.equal('1m')\r\n\t\t// \"twitter-first-minute\".\r\n\t\ttimeAgo.format(Date.now() - 29 * 1000, 'twitter-first-minute').should.equal('')\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, 'twitter-first-minute').should.equal('1m')\r\n\t\t// \"approximate\".\r\n\t\ttimeAgo.format(Date.now() - 45 * 1000, 'approximate').should.equal('just now')\r\n\t\t// \"convenient\" style was renamed to \"approximate\".\r\n\t\ttimeAgo.format(Date.now() - 45 * 1000, 'convenient').should.equal('just now')\r\n\t\ttimeAgo.format(Date.now() - 45 * 1000, 'round').should.equal('45 seconds ago')\r\n\t\t// \"default\" style was renamed to \"round\".\r\n\t\ttimeAgo.format(Date.now() - 45 * 1000, 'default').should.equal('45 seconds ago')\r\n\t\ttimeAgo.format(Date.now() - 29 * 1000, 'round-minute').should.equal('just now')\r\n\t\t// \"time\" style was renamed to \"approximate-time\".\r\n\t\ttimeAgo.format(Date.now() - 2 * 60 * 1000, 'time').should.equal('2 minutes')\r\n\t\ttimeAgo.format(Date.now() - 2 * 60 * 1000, 'approximate-time').should.equal('2 minutes')\r\n\t\ttimeAgo.format(Date.now(), 'exotic').should.equal('just now')\r\n\t})\r\n\r\n\tit('should accept empty constructor parameters', () => {\r\n\t\tconst timeAgo = new TimeAgo()\r\n\t\ttimeAgo.format(new Date()).should.equal('just now')\r\n\t})\r\n\r\n\tit('should accept \"mocked\" Dates when testing', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\tconst mockedDate = { getTime: () => Date.now() }\r\n\t\ttimeAgo.format(mockedDate).should.equal('just now')\r\n\t})\r\n\r\n\tit('should not accept anything but Dates and timestamps', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\tconst thrower = () => timeAgo.format('Jan 14, 2017')\r\n\t\tthrower.should.throw('Unsupported relative time formatter input: string, Jan 14, 2017')\r\n\t})\r\n\r\n\tit('should return an empty string if the specified units are not available in locale data', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now(), { units: ['femtosecond'] }).should.equal('')\r\n\t})\r\n\r\n\tit('should format for a style with \"custom\" function', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\r\n\t\t// `custom` returns a string\r\n\t\ttimeAgo.format(Date.now(), {\r\n\t\t\tcustom({ now, time, date, locale }) {\r\n\t\t\t\treturn locale\r\n\t\t\t}\r\n\t\t})\r\n\t\t.should.equal('en')\r\n\r\n\t\t// `custom` returns `undefined`\r\n\t\ttimeAgo.format(Date.now(), {\r\n\t\t\tcustom({ now, time, date, locale }) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t})\r\n\t\t.should.equal('just now')\r\n\t})\r\n\r\n\tit('should format future dates', () => {\r\n\t\tnew TimeAgo('en').format(Date.now() + 60 * 60 * 1000).should.equal('in 1 hour')\r\n\t\tnew TimeAgo('ru').format(Date.now() + 60 * 1000).should.equal('через 1 минуту')\r\n\t})\r\n\r\n\tit('should accept \"future\" option', () => {\r\n\t\t// \"now\" unit.\r\n\t\tnew TimeAgo('en').format(Date.now()).should.equal('just now')\r\n\t\tnew TimeAgo('en').format(Date.now(), 'approximate', { future: true }).should.equal('in a moment')\r\n\r\n\t\t// Non-\"now\" unit, \"long\" style.\r\n\t\t// const style = {\r\n\t\t// \tgradation: [{\r\n\t\t// \t\tfactor: 1,\r\n\t\t// \t\tunit: 'second'\r\n\t\t// \t}],\r\n\t\t// \tlabels: 'long'\r\n\t\t// }\r\n\t\t// new TimeAgo('en').format(Date.now(), style).should.equal('0 seconds ago')\r\n\t\t// new TimeAgo('en').format(Date.now(), style, { future: true }).should.equal('in 0 seconds')\r\n\r\n\t\t// Non-\"now\" unit, \"mini\" style.\r\n\t\tconst style2 = {\r\n\t\t\tstyle: [{\r\n\t\t\t\tunit: 'year'\r\n\t\t\t}],\r\n\t\t\tlabels: 'mini'\r\n\t\t}\r\n\t\tnew TimeAgo('ru').format(Date.now() - 5 * 365 * 24 * 60 * 60 * 1000, style2).should.equal('5 л')\r\n\t\tnew TimeAgo('ru').format(Date.now() - 5 * 365 * 24 * 60 * 60 * 1000, style2, { future: true }).should.equal('5 л')\r\n\t})\r\n\r\n\tit('should support the legacy properties: \"gradation\", \"flavour\", \"factor\", \"unit\", \"\\'tiny\\'\" labels style', () => {\r\n\t\t// Non-\"now\" unit, \"tiny\" style.\r\n\t\tconst style = {\r\n\t\t\tgradation: [{\r\n\t\t\t\tfactor: 5,\r\n\t\t\t\tunit: 'year'\r\n\t\t\t}],\r\n\t\t\tflavour: 'tiny'\r\n\t\t}\r\n\t\tnew TimeAgo('ru').format(Date.now() - 10 * 1000, style).should.equal('2 г')\r\n\t\tnew TimeAgo('ru').format(Date.now() - 10 * 1000, style, { future: true }).should.equal('2 г')\r\n\t})\r\n\r\n\tit('should have generated missing quantifier functions for locales that do not have it in CLDR data', () => {\r\n\t\tnew TimeAgo('ccp').format(Date.now() + 60 * 1000).should.include(' 𑄟𑄨𑄚𑄨𑄘𑄬')\r\n\t})\r\n\r\n\tit('should throw for non-existing locales', () => {\r\n\t\t(() => TimeAgo.addLocale()).should.throw('No locale data passed')\r\n\t})\r\n\r\n\tit('should choose \"future\" variant of a label for `0` if \"future: true\" option is passed', () => {\r\n\t\tTimeAgo.addLocale(english)\r\n\t\tconst secondLabels = english['mini'].second\r\n\t\tenglish['mini'].second = {\r\n\t\t\tpast: '{0} seconds ago',\r\n\t\t\tfuture: 'in {0} seconds'\r\n\t\t}\r\n\r\n\t\tnew TimeAgo('en').format(Date.now(), {\r\n\t\t\tsteps: [{\r\n\t\t\t\tunit: 'second'\r\n\t\t\t}],\r\n\t\t\t// Uses \"mini\" labels so that it doesn't use `Intl.RelativeTimeFormat`.\r\n\t\t\tlabels: 'mini'\r\n\t\t}).should.equal('0 seconds ago')\r\n\r\n\t\tnew TimeAgo('en').format(Date.now(), {\r\n\t\t\tsteps: [{\r\n\t\t\t\tunit: 'second'\r\n\t\t\t}],\r\n\t\t\t// Uses \"mini\" labels so that it doesn't use `Intl.RelativeTimeFormat`.\r\n\t\t\tlabels: 'mini'\r\n\t\t}, {\r\n\t\t\tfuture: true\r\n\t\t}).should.equal('in 0 seconds')\r\n\r\n\t\tenglish['mini'].second = secondLabels\r\n\t})\r\n\r\n\tit('should get time to next update (round: \"floor\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\t// in 1 second -> in 0 seconds.\r\n\t\ttimeAgo.format(1000, 'twitter', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 0,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1\r\n\t\t])\r\n\t})\r\n\r\n\tit('should get time to next update (round: \"round\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\t// in 1 second -> in 0 seconds.\r\n\t\ttimeAgo.format(1000, 'twitter', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 0\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t501\r\n\t\t])\r\n\t})\r\n\r\n\tit('should get time to next update (\"mini-now\" style) (round: \"floor\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\t// In 1 minute.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 0,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1m',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Almost in 1 minute.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 1,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'59s',\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// In 1 second.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 59 * 1000,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Almost in 1 second.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 59 * 1000 + 1,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t// Right after zero point.\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// Zero point (future to past).\r\n\t\t// `future: true`.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000,\r\n\t\t\tfuture: true,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Zero point (future to past).\r\n\t\t// `future: false`.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// Right after zero point (past).\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 1,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1000 - 1\r\n\t\t])\r\n\t\t// 1 second ago.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 1000,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1000\r\n\t\t])\r\n\t})\r\n\r\n\tit('should get time to next update (\"mini-now\" style) (round: \"round\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\t// In 1 minute.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 0\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1m',\r\n\t\t\t500 + 1\r\n\t\t])\r\n\t\t// Almost in 1 minute.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 500 + 1\r\n\t\t}).should.deep.equal([\r\n\t\t\t'59s',\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// In 1 second.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 59.5 * 1000\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Almost in 1 second.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 59.5 * 1000 + 1\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t// Right after zero point.\r\n\t\t\t500\r\n\t\t])\r\n\t\t// Zero point (future to past).\r\n\t\t// `future: true`.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000,\r\n\t\t\tfuture: true\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Zero point (future to past).\r\n\t\t// `future: false`.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t500\r\n\t\t])\r\n\t\t// Right after zero point (past).\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 1\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t500 - 1\r\n\t\t])\r\n\t\t// 1 second ago.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 500\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1000\r\n\t\t])\r\n\t})\r\n\r\n\tit('should get time to next update (first step has non-zero \"minTime\") (round: \"floor\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\r\n\t\t// Future.\r\n\t\t// Inside the first step.\r\n\t\t// Updates soon.\r\n\t\ttimeAgo.format(60 * 1000, {\r\n\t\t\tsteps: [{\r\n\t\t\t\tformatAs: 'minute',\r\n\t\t\t\tminTime: 60\r\n\t\t\t}],\r\n\t\t\tlabels: 'mini',\r\n\t\t\tround: 'floor'\r\n\t\t}, {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: -0.5 * 1000\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1m',\r\n\t\t\t0.5 * 1000 + 1\r\n\t\t])\r\n\r\n\t\t// Future.\r\n\t\t// Outside of the first step.\r\n\t\t// Updates right after zero point.\r\n\t\ttimeAgo.format(60 * 1000, {\r\n\t\t\tsteps: [{\r\n\t\t\t\tformatAs: 'minute',\r\n\t\t\t\tminTime: 60 * 1000\r\n\t\t\t}],\r\n\t\t\tlabels: 'mini',\r\n\t\t\tround: 'floor'\r\n\t\t}, {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 1 * 1000\r\n\t\t}).should.deep.equal([\r\n\t\t\t'',\r\n\t\t\t59 * 1000 + 1\r\n\t\t])\r\n\r\n\t\t// Zero point.\r\n\t\t// Outside of the first step.\r\n\t\t// Updates at the first step's `minTime`.\r\n\t\ttimeAgo.format(60 * 1000, {\r\n\t\t\tsteps: [{\r\n\t\t\t\tformatAs: 'minute',\r\n\t\t\t\tminTime: 60\r\n\t\t\t}],\r\n\t\t\tlabels: 'mini',\r\n\t\t\tround: 'floor'\r\n\t\t}, {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000\r\n\t\t}).should.deep.equal([\r\n\t\t\t'',\r\n\t\t\t60 * 1000\r\n\t\t])\r\n\r\n\t\t// Past.\r\n\t\t// Inside the first step.\r\n\t\t// Updates at the next minute.\r\n\t\ttimeAgo.format(60 * 1000, {\r\n\t\t\tsteps: [{\r\n\t\t\t\tformatAs: 'minute',\r\n\t\t\t\tminTime: 60\r\n\t\t\t}],\r\n\t\t\tlabels: 'mini',\r\n\t\t\tround: 'floor'\r\n\t\t}, {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 60 * 1000\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1m',\r\n\t\t\t60 * 1000\r\n\t\t])\r\n\r\n\t\t// Almost in 1 minute.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 1,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'59s',\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// In 1 second.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 59 * 1000,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Almost in 1 second.\r\n\t\t// Updates right after the zero point.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 59 * 1000 + 1,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// Zero point (future to past).\r\n\t\t// `future: true`.\r\n\t\t// Updates right after zero point.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000,\r\n\t\t\tfuture: true,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Zero point (future to past).\r\n\t\t// `future: false`.\r\n\t\t// Updates at the next second.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// Right after zero point (past).\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 1,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1000 - 1\r\n\t\t])\r\n\t\t// 1 second ago.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 1000,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1000\r\n\t\t])\r\n\t})\r\n\r\n\tit('should pass `formatAs()` in `step.format()`', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now(), {\r\n\t\t\tlabels: 'long',\r\n\t\t\tsteps: [{\r\n\t\t\t\tformat(date, locale, { formatAs }) {\r\n\t\t\t\t\treturn formatAs('second', 1)\r\n\t\t\t\t}\r\n\t\t\t}]\r\n\t\t}).should.equal('in 1 second')\r\n\t})\r\n\r\n\tit('should support `polyfill: false` option', () => {\r\n\t\tconst timeAgo = new TimeAgo('en', { polyfill: false })\r\n\t\t// Still uses \"now\" labels, even when not polyfilled.\r\n\t\ttimeAgo.format(0, 'round', { now: 0 }).should.equal('just now')\r\n\t\ttimeAgo.format(1000, 'round', { now: 0 }).should.equal('in 1 second')\r\n\t})\r\n\r\n\tit('should not use Intl.NumberFormat if it is not available', () => {\r\n\t\tconst Intl = global.Intl\r\n\t\tglobal.Intl = undefined\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(1000, 'round', { now: 0 }).should.equal('in 1 second')\r\n\t\tglobal.Intl = Intl\r\n\t})\r\n\r\n\tit('should format `0` in past mode by default', () => {\r\n\t\tnew TimeAgo('en').format(0, {\r\n\t\t\tlabels: 'long',\r\n\t\t\tsteps: [{\r\n\t\t\t\tformatAs: 'second'\r\n\t\t\t}]\r\n\t\t}, { now: 0 }).should.equal('0 seconds ago')\r\n\t})\r\n\r\n\tit('should format `0` in future mode when `future: true` option was passed', () => {\r\n\t\tnew TimeAgo('en').format(0, {\r\n\t\t\tlabels: 'long',\r\n\t\t\tsteps: [{\r\n\t\t\t\tformatAs: 'second'\r\n\t\t\t}]\r\n\t\t}, { now: 0, future: true }).should.equal('in 0 seconds')\r\n\t})\r\n\r\n\tit('should throw if a step does not define `formatAs` or `format()`', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\texpect(() => timeAgo.format(Date.now() + 1000, {\r\n\t\t\tlabels: 'long',\r\n\t\t\tsteps: [{}]\r\n\t\t})).to.throw('Each step must define either `formatAs` or `format()`.')\r\n\t})\r\n\r\n\tit('should add default locale', () => {\r\n\t\tTimeAgo.getDefaultLocale().should.equal('en')\r\n\t\tTimeAgo.addDefaultLocale({\r\n\t\t\tlocale: 'el'\r\n\t\t})\r\n\t\tTimeAgo.getDefaultLocale().should.equal('el')\r\n\t\t// expect(() => {\r\n\t\t\tTimeAgo.addDefaultLocale({\r\n\t\t\t\tlocale: 'el'\r\n\t\t\t})\r\n\t\t// }).to.throw('`TimeAgo.addDefaultLocale()` can only be called once')\r\n\t\tTimeAgo.setDefaultLocale('en')\r\n\t})\r\n\r\n\tit('should support \"floor\" rounding', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(0.9 * 1000, 'twitter', { now: 0, round: 'floor' }).should.equal('0s')\r\n\t\ttimeAgo.format(1 * 1000, 'twitter', { now: 0, round: 'floor' }).should.equal('1s')\r\n\t\ttimeAgo.format(1.9 * 1000, 'twitter', { now: 0, round: 'floor' }).should.equal('1s')\r\n\t\ttimeAgo.format(2 * 1000, 'twitter', { now: 0, round: 'floor' }).should.equal('2s')\r\n\t\ttimeAgo.format(1.9 * 60 * 1000, 'twitter', { now: 0, round: 'floor' }).should.equal('1m')\r\n\t\ttimeAgo.format(2 * 60 * 1000, 'twitter', { now: 0, round: 'floor' }).should.equal('2m')\r\n\t})\r\n})"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"TimeAgo.test.js","names":["TimeAgo","getLocaleData","english","type","setDefaultLocale","describe","it","timeAgo","format","Date","now","should","equal","future","labels","steps","formatAs","flavour","gradation","englishNow","addLocale","undefined","NumberFormat","Intl","englishLongTimeMinute","minute","past","mockedDate","getTime","thrower","units","custom","_ref","time","date","locale","_ref2","expect","_ref3","getTimeToNextUpdate","to","style2","style","unit","factor","include","secondLabels","second","refreshedTimes","_timeAgo$format","refresh","text","Error","round","_timeAgo$format2","_slicedToArray","cancelRefresh","be","a","timeToNextUpdate","delay","then","deep","getTimeToNextUpdateUncapped","minTime","_ref4","polyfill","global","getDefaultLocale","addDefaultLocale","delayTime","Promise","resolve","setTimeout"],"sources":["../source/TimeAgo.test.js"],"sourcesContent":["import TimeAgo from './TimeAgo.js'\r\nimport { getLocaleData } from './LocaleDataStore.js'\r\n\r\n// Load locale specific relative date/time messages\r\nimport english from '../locale/en.json' with { type: 'json' }\r\n\r\n// Just so this function code is covered.\r\nTimeAgo.setDefaultLocale('en')\r\n\r\ndescribe(`javascript-time-ago`, () => {\r\n\tit('should default to \"round-minute\" style', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now()).should.equal('just now')\r\n\t\ttimeAgo.format(Date.now() + 20 * 1000).should.equal('in a moment')\r\n\t\ttimeAgo.format(Date.now() + 1 * 60 * 1000).should.equal('in 1 minute')\r\n\t\ttimeAgo.format(Date.now() + 4 * 60 * 1000).should.equal('in 4 minutes')\r\n\t})\r\n\r\n\tit('should tell `options` argument from `style` argument', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now(), 'mini-now').should.equal('now')\r\n\t\ttimeAgo.format(0, { future: true, now: 0 }).should.equal('in a moment')\r\n\t\ttimeAgo.format(0, { labels: 'mini', steps: [{ formatAs: 'now' }, { formatAs: 'second' }] }, { future: true, now: 0 }).should.equal('now')\r\n\t\ttimeAgo.format(0, { labels: ['mini'], steps: [{ formatAs: 'now' }, { formatAs: 'second' }] }, { future: true, now: 0 }).should.equal('now')\r\n\t\t// `flavour` is a legacy name of `labels` property.\r\n\t\ttimeAgo.format(0, { flavour: 'mini' }, { future: true, now: 0 }).should.equal('now')\r\n\t\ttimeAgo.format(0, { flavour: ['mini'] }, { future: true, now: 0 }).should.equal('now')\r\n\t\ttimeAgo.format(0, { steps: [{ formatAs: 'minute' }] }, { future: true, now: 0 }).should.equal('in 0 minutes')\r\n\t\t// `gradation` is a legacy name of `steps` property.\r\n\t\ttimeAgo.format(0, { gradation: [{ formatAs: 'minute' }] }, { future: true, now: 0 }).should.equal('in 0 minutes')\r\n\t})\r\n\r\n\tit('should try various label types until an appropriate one is found', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now(), { labels: ['exotic', 'short'] }).should.equal('just now')\r\n\t})\r\n\r\n\tit('should support the legacy name \"flavour\" of \"labels\"', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now(), { labels: ['exotic', 'short'] }).should.equal('just now')\r\n\t})\r\n\r\n\tit('should fallback to \"second.current\" for \"now\" when \"now\" is not defined', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\tconst englishNow = english.now\r\n\t\tdelete english.now\r\n\t\tTimeAgo.addLocale(english)\r\n\t\tenglish.now = undefined\r\n\t\ttimeAgo.format(Date.now(), { labels: 'long' }).should.equal('now')\r\n\t\tenglish.now = englishNow\r\n\t\ttimeAgo.format(Date.now(), { labels: 'long' }).should.equal('just now')\r\n\t})\r\n\r\n\tit('should not use Intl.NumberFormat if it is not available', () => {\r\n\t\tconst NumberFormat = Intl.NumberFormat\r\n\t\tdelete Intl.NumberFormat\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now() + 60 * 1000, { labels: 'long-time' }).should.equal('1 minute')\r\n\t\tIntl.NumberFormat = NumberFormat\r\n\t})\r\n\r\n\tit('should work when \"past\"/\"future\" messages are same for all quantifiers', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now() + 365 * 24 * 60 * 60 * 1000, { labels: 'short' }).should.equal('in 1 yr.')\r\n\t})\r\n\r\n\tit('should work when \"now\" is a string (does not differentiate between \"past\" and \"future\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\tconst englishNow = english.now\r\n\t\tenglish.now = { now: 'now' }\r\n\t\tTimeAgo.addLocale(english)\r\n\t\ttimeAgo.format(Date.now(), { labels: 'long' }).should.equal('now')\r\n\t\tenglish.now = englishNow\r\n\t\ttimeAgo.format(Date.now(), { labels: 'long' }).should.equal('just now')\r\n\t})\r\n\r\n\tit('should work when a unit has formatting rules for \"past\" and \"future\" which are strings (style: not \"long\", not \"short\", not \"narrow\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\tconst englishLongTimeMinute = english['long-time'].minute\r\n\t\tenglish['long-time'].minute = {\r\n\t\t\tpast: '{0} minute(s) ago',\r\n\t\t\tfuture: 'in {0} minute(s)'\r\n\t\t}\r\n\t\tTimeAgo.addLocale(english)\r\n\t\t// Past.\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, { labels: 'long-time' }).should.equal('1 minute(s) ago')\r\n\t\t// Future (covers an \"else\" branch).\r\n\t\ttimeAgo.format(Date.now() + 60 * 1000, { labels: 'long-time' }).should.equal('in 1 minute(s)')\r\n\t\t// Undo.\r\n\t\tenglish['long-time'].minute = englishLongTimeMinute\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, { labels: 'long-time' }).should.equal('1 minute')\r\n\t})\r\n\r\n\tit(`should format \"now\" for \"past\" time`, () =>\r\n\t{\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now() + 10, { labels: ['long'] }).should.equal('in a moment')\r\n\t})\r\n\r\n\tit('should accept a string style name argument', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\t// \"mini\".\r\n\t\ttimeAgo.format(Date.now() - 0 * 1000, 'mini').should.equal('0s')\r\n\t\ttimeAgo.format(Date.now() - 1 * 1000, 'mini').should.equal('1s')\r\n\t\t// \"mini-now\".\r\n\t\ttimeAgo.format(Date.now() - 0 * 1000, 'mini-now').should.equal('now')\r\n\t\ttimeAgo.format(Date.now() - 1 * 1000, 'mini-now').should.equal('1s')\r\n\t\t// \"mini-minute-now\".\r\n\t\ttimeAgo.format(Date.now() - 29 * 1000, 'mini-minute-now').should.equal('now')\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, 'mini-minute-now').should.equal('1m')\r\n\t\t// \"mini-minute\".\r\n\t\ttimeAgo.format(Date.now() - 29 * 1000, 'mini-minute').should.equal('0m')\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, 'mini-minute').should.equal('1m')\r\n\t\t// \"twitter\".\r\n\t\ttimeAgo.format(Date.now() - 0 * 1000, 'twitter').should.equal('0s')\r\n\t\ttimeAgo.format(Date.now() - 1 * 1000, 'twitter').should.equal('1s')\r\n\t\t// \"twitter-now\".\r\n\t\ttimeAgo.format(Date.now() - 0 * 1000, 'twitter-now').should.equal('now')\r\n\t\ttimeAgo.format(Date.now() - 1 * 1000, 'twitter-now').should.equal('1s')\r\n\t\t// \"twitter-minute-now\".\r\n\t\ttimeAgo.format(Date.now() - 29 * 1000, 'twitter-minute-now').should.equal('now')\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, 'twitter-minute-now').should.equal('1m')\r\n\t\t// \"twitter-minute\".\r\n\t\ttimeAgo.format(Date.now() - 29 * 1000, 'twitter-minute').should.equal('0m')\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, 'twitter-minute').should.equal('1m')\r\n\t\t// \"twitter-first-minute\".\r\n\t\ttimeAgo.format(Date.now() - 29 * 1000, 'twitter-first-minute').should.equal('')\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, 'twitter-first-minute').should.equal('1m')\r\n\t\t// \"approximate\".\r\n\t\ttimeAgo.format(Date.now() - 45 * 1000, 'approximate').should.equal('just now')\r\n\t\t// \"convenient\" style was renamed to \"approximate\".\r\n\t\ttimeAgo.format(Date.now() - 45 * 1000, 'convenient').should.equal('just now')\r\n\t\ttimeAgo.format(Date.now() - 45 * 1000, 'round').should.equal('45 seconds ago')\r\n\t\t// \"default\" style was renamed to \"round\".\r\n\t\ttimeAgo.format(Date.now() - 45 * 1000, 'default').should.equal('45 seconds ago')\r\n\t\ttimeAgo.format(Date.now() - 29 * 1000, 'round-minute').should.equal('just now')\r\n\t\t// \"time\" style was renamed to \"approximate-time\".\r\n\t\ttimeAgo.format(Date.now() - 2 * 60 * 1000, 'time').should.equal('2 minutes')\r\n\t\ttimeAgo.format(Date.now() - 2 * 60 * 1000, 'approximate-time').should.equal('2 minutes')\r\n\t\ttimeAgo.format(Date.now(), 'exotic').should.equal('just now')\r\n\t})\r\n\r\n\tit('should accept empty constructor parameters', () => {\r\n\t\tconst timeAgo = new TimeAgo()\r\n\t\ttimeAgo.format(new Date()).should.equal('just now')\r\n\t})\r\n\r\n\tit('should accept \"mocked\" Dates when testing', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\tconst mockedDate = { getTime: () => Date.now() }\r\n\t\ttimeAgo.format(mockedDate).should.equal('just now')\r\n\t})\r\n\r\n\tit('should not accept anything but Dates and timestamps', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\tconst thrower = () => timeAgo.format('Jan 14, 2017')\r\n\t\tthrower.should.throw('Unsupported relative time formatter input: string, Jan 14, 2017')\r\n\t})\r\n\r\n\tit('should return an empty string if the specified units are not available in locale data', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now(), { units: ['femtosecond'] }).should.equal('')\r\n\t})\r\n\r\n\tit('should format for a style with \"custom\" function', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\r\n\t\ttimeAgo.format(Date.now(), {\r\n\t\t\t// `custom` returns a string\r\n\t\t\tcustom({ now, time, date, locale }) {\r\n\t\t\t\treturn locale\r\n\t\t\t}\r\n\t\t})\r\n\t\t.should.equal('en')\r\n\r\n\t\ttimeAgo.format(Date.now(), {\r\n\t\t\t// `custom` returns `undefined`\r\n\t\t\tcustom({ now, time, date, locale }) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t})\r\n\t\t.should.equal('just now')\r\n\t})\r\n\r\n\tit('should throw an error when formating for a style with \"custom\" function and `getTimeToNextUpdate: true` parameter is passed', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\r\n\t\texpect(() => {\r\n\t\t\ttimeAgo.format(Date.now(), {\r\n\t\t\t\t// `custom` returns a string.\r\n\t\t\t\tcustom({ now, time, date, locale }) {\r\n\t\t\t\t\treturn locale\r\n\t\t\t\t}\r\n\t\t\t}, {\r\n\t\t\t\tgetTimeToNextUpdate: true\r\n\t\t\t})\r\n\t\t}).to.throw('not supported')\r\n\t})\r\n\r\n\tit('should format future dates', () => {\r\n\t\tnew TimeAgo('en').format(Date.now() + 60 * 60 * 1000).should.equal('in 1 hour')\r\n\t\tnew TimeAgo('ru').format(Date.now() + 60 * 1000).should.equal('через 1 минуту')\r\n\t})\r\n\r\n\tit('should accept \"future\" option', () => {\r\n\t\t// \"now\" unit.\r\n\t\tnew TimeAgo('en').format(Date.now()).should.equal('just now')\r\n\t\tnew TimeAgo('en').format(Date.now(), 'approximate', { future: true }).should.equal('in a moment')\r\n\r\n\t\t// Non-\"now\" unit, \"long\" style.\r\n\t\t// const style = {\r\n\t\t// \tgradation: [{\r\n\t\t// \t\tfactor: 1,\r\n\t\t// \t\tunit: 'second'\r\n\t\t// \t}],\r\n\t\t// \tlabels: 'long'\r\n\t\t// }\r\n\t\t// new TimeAgo('en').format(Date.now(), style).should.equal('0 seconds ago')\r\n\t\t// new TimeAgo('en').format(Date.now(), style, { future: true }).should.equal('in 0 seconds')\r\n\r\n\t\t// Non-\"now\" unit, \"mini\" style.\r\n\t\tconst style2 = {\r\n\t\t\tstyle: [{\r\n\t\t\t\tunit: 'year'\r\n\t\t\t}],\r\n\t\t\tlabels: 'mini'\r\n\t\t}\r\n\t\tnew TimeAgo('ru').format(Date.now() - 5 * 365 * 24 * 60 * 60 * 1000, style2).should.equal('5 л')\r\n\t\tnew TimeAgo('ru').format(Date.now() - 5 * 365 * 24 * 60 * 60 * 1000, style2, { future: true }).should.equal('5 л')\r\n\t})\r\n\r\n\tit('should support the legacy properties: \"gradation\", \"flavour\", \"factor\", \"unit\", \"\\'tiny\\'\" labels style', () => {\r\n\t\t// Non-\"now\" unit, \"tiny\" style.\r\n\t\tconst style = {\r\n\t\t\tgradation: [{\r\n\t\t\t\tfactor: 5,\r\n\t\t\t\tunit: 'year'\r\n\t\t\t}],\r\n\t\t\tflavour: 'tiny'\r\n\t\t}\r\n\t\tnew TimeAgo('ru').format(Date.now() - 10 * 1000, style).should.equal('2 г')\r\n\t\tnew TimeAgo('ru').format(Date.now() - 10 * 1000, style, { future: true }).should.equal('2 г')\r\n\t})\r\n\r\n\tit('should have generated missing quantifier functions for locales that do not have it in CLDR data', () => {\r\n\t\tnew TimeAgo('ccp').format(Date.now() + 60 * 1000).should.include(' 𑄟𑄨𑄚𑄨𑄘𑄬')\r\n\t})\r\n\r\n\tit('should throw for non-existing locales', () => {\r\n\t\t(() => TimeAgo.addLocale()).should.throw('No locale data passed')\r\n\t})\r\n\r\n\tit('should choose \"future\" variant of a label for `0` if \"future: true\" option is passed', () => {\r\n\t\tTimeAgo.addLocale(english)\r\n\t\tconst secondLabels = english['mini'].second\r\n\t\tenglish['mini'].second = {\r\n\t\t\tpast: '{0} seconds ago',\r\n\t\t\tfuture: 'in {0} seconds'\r\n\t\t}\r\n\r\n\t\tnew TimeAgo('en').format(Date.now(), {\r\n\t\t\tsteps: [{\r\n\t\t\t\tunit: 'second'\r\n\t\t\t}],\r\n\t\t\t// Uses \"mini\" labels so that it doesn't use `Intl.RelativeTimeFormat`.\r\n\t\t\tlabels: 'mini'\r\n\t\t}).should.equal('0 seconds ago')\r\n\r\n\t\tnew TimeAgo('en').format(Date.now(), {\r\n\t\t\tsteps: [{\r\n\t\t\t\tunit: 'second'\r\n\t\t\t}],\r\n\t\t\t// Uses \"mini\" labels so that it doesn't use `Intl.RelativeTimeFormat`.\r\n\t\t\tlabels: 'mini'\r\n\t\t}, {\r\n\t\t\tfuture: true\r\n\t\t}).should.equal('in 0 seconds')\r\n\r\n\t\tenglish['mini'].second = secondLabels\r\n\t})\r\n\r\n\tit('should refresh the label when `refresh` parameter is passed', () => {\r\n\t\tlet refreshedTimes = 0\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\t// in 1 second -> in 0 seconds.\r\n\t\tconst [text, cancelRefresh] = timeAgo.format(1000, 'twitter', {\r\n\t\t\trefresh: (text) => {\r\n\t\t\t\tif (refreshedTimes === 0) {\r\n\t\t\t\t\texpect(text).to.equal('0s')\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow new Error('Refresh should have been cancelled')\r\n\t\t\t\t}\r\n\t\t\t\trefreshedTimes++\r\n\t\t\t},\r\n\t\t\tnow: 0,\r\n\t\t\tround: 'floor'\r\n\t\t})\r\n\t\texpect(text).to.equal('1s')\r\n\t\texpect(cancelRefresh).to.be.a('function')\r\n\t\t// Sidenote: `timeToNextUpdate` is `1`.\r\n\t\tconst timeToNextUpdate = 1\r\n\t\treturn delay(timeToNextUpdate + 1).then(() => {\r\n\t\t\texpect(refreshedTimes).to.equal(1)\r\n\t\t\tcancelRefresh()\r\n\t\t})\r\n\t})\r\n\r\n\tit('should get time to next update (capped)', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\t// in 1 second -> in 0 seconds.\r\n\t\ttimeAgo.format(0.5 * 365 * 24 * 60 * 60 * 1000, 'twitter', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 0,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'Jul 2',\r\n\t\t\t2147483647\r\n\t\t])\r\n\t})\r\n\r\n\tit('should get time to next update (capped)', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\t// in 1 second -> in 0 seconds.\r\n\t\ttimeAgo.format(0.5 * 365 * 24 * 60 * 60 * 1000, 'twitter', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tgetTimeToNextUpdateUncapped: true,\r\n\t\t\tnow: 0,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'Jul 2',\r\n\t\t\t15681600001\r\n\t\t])\r\n\t})\r\n\r\n\tit('should get time to next update (uncapped)', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\t// in 1 second -> in 0 seconds.\r\n\t\ttimeAgo.format(1000, 'twitter', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 0,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1\r\n\t\t])\r\n\t})\r\n\r\n\tit('should get time to next update (round: \"floor\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\t// in 1 second -> in 0 seconds.\r\n\t\ttimeAgo.format(1000, 'twitter', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 0,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1\r\n\t\t])\r\n\t})\r\n\r\n\tit('should get time to next update (round: \"round\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\t// in 1 second -> in 0 seconds.\r\n\t\ttimeAgo.format(1000, 'twitter', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 0\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t501\r\n\t\t])\r\n\t})\r\n\r\n\tit('should get time to next update (\"mini-now\" style) (round: \"floor\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\t// In 1 minute.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 0,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1m',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Almost in 1 minute.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 1,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'59s',\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// In 1 second.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 59 * 1000,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Almost in 1 second.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 59 * 1000 + 1,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t// Right after zero point.\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// Zero point (future to past).\r\n\t\t// `future: true`.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000,\r\n\t\t\tfuture: true,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Zero point (future to past).\r\n\t\t// `future: false`.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// Right after zero point (past).\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 1,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1000 - 1\r\n\t\t])\r\n\t\t// 1 second ago.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 1000,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1000\r\n\t\t])\r\n\t})\r\n\r\n\tit('should get time to next update (\"mini-now\" style) (round: \"round\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\t// In 1 minute.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 0\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1m',\r\n\t\t\t500 + 1\r\n\t\t])\r\n\t\t// Almost in 1 minute.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 500 + 1\r\n\t\t}).should.deep.equal([\r\n\t\t\t'59s',\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// In 1 second.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 59.5 * 1000\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Almost in 1 second.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 59.5 * 1000 + 1\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t// Right after zero point.\r\n\t\t\t500\r\n\t\t])\r\n\t\t// Zero point (future to past).\r\n\t\t// `future: true`.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000,\r\n\t\t\tfuture: true\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Zero point (future to past).\r\n\t\t// `future: false`.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t500\r\n\t\t])\r\n\t\t// Right after zero point (past).\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 1\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t500 - 1\r\n\t\t])\r\n\t\t// 1 second ago.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 500\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1000\r\n\t\t])\r\n\t})\r\n\r\n\tit('should get time to next update (first step has non-zero \"minTime\") (round: \"floor\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\r\n\t\t// Future.\r\n\t\t// Inside the first step.\r\n\t\t// Updates soon.\r\n\t\ttimeAgo.format(60 * 1000, {\r\n\t\t\tsteps: [{\r\n\t\t\t\tformatAs: 'minute',\r\n\t\t\t\tminTime: 60\r\n\t\t\t}],\r\n\t\t\tlabels: 'mini',\r\n\t\t\tround: 'floor'\r\n\t\t}, {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: -0.5 * 1000\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1m',\r\n\t\t\t0.5 * 1000 + 1\r\n\t\t])\r\n\r\n\t\t// Future.\r\n\t\t// Outside of the first step.\r\n\t\t// Updates right after zero point.\r\n\t\ttimeAgo.format(60 * 1000, {\r\n\t\t\tsteps: [{\r\n\t\t\t\tformatAs: 'minute',\r\n\t\t\t\tminTime: 60 * 1000\r\n\t\t\t}],\r\n\t\t\tlabels: 'mini',\r\n\t\t\tround: 'floor'\r\n\t\t}, {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 1 * 1000\r\n\t\t}).should.deep.equal([\r\n\t\t\t'',\r\n\t\t\t59 * 1000 + 1\r\n\t\t])\r\n\r\n\t\t// Zero point.\r\n\t\t// Outside of the first step.\r\n\t\t// Updates at the first step's `minTime`.\r\n\t\ttimeAgo.format(60 * 1000, {\r\n\t\t\tsteps: [{\r\n\t\t\t\tformatAs: 'minute',\r\n\t\t\t\tminTime: 60\r\n\t\t\t}],\r\n\t\t\tlabels: 'mini',\r\n\t\t\tround: 'floor'\r\n\t\t}, {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000\r\n\t\t}).should.deep.equal([\r\n\t\t\t'',\r\n\t\t\t60 * 1000\r\n\t\t])\r\n\r\n\t\t// Past.\r\n\t\t// Inside the first step.\r\n\t\t// Updates at the next minute.\r\n\t\ttimeAgo.format(60 * 1000, {\r\n\t\t\tsteps: [{\r\n\t\t\t\tformatAs: 'minute',\r\n\t\t\t\tminTime: 60\r\n\t\t\t}],\r\n\t\t\tlabels: 'mini',\r\n\t\t\tround: 'floor'\r\n\t\t}, {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 60 * 1000\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1m',\r\n\t\t\t60 * 1000\r\n\t\t])\r\n\r\n\t\t// Almost in 1 minute.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 1,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'59s',\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// In 1 second.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 59 * 1000,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Almost in 1 second.\r\n\t\t// Updates right after the zero point.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 59 * 1000 + 1,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// Zero point (future to past).\r\n\t\t// `future: true`.\r\n\t\t// Updates right after zero point.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000,\r\n\t\t\tfuture: true,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Zero point (future to past).\r\n\t\t// `future: false`.\r\n\t\t// Updates at the next second.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// Right after zero point (past).\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 1,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1000 - 1\r\n\t\t])\r\n\t\t// 1 second ago.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 1000,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1000\r\n\t\t])\r\n\t})\r\n\r\n\tit('should pass `formatAs()` in `step.format()`', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now(), {\r\n\t\t\tlabels: 'long',\r\n\t\t\tsteps: [{\r\n\t\t\t\tformat(date, locale, { formatAs }) {\r\n\t\t\t\t\treturn formatAs('second', 1)\r\n\t\t\t\t}\r\n\t\t\t}]\r\n\t\t}).should.equal('in 1 second')\r\n\t})\r\n\r\n\tit('should support `polyfill: false` option', () => {\r\n\t\tconst timeAgo = new TimeAgo('en', { polyfill: false })\r\n\t\t// Still uses \"now\" labels, even when not polyfilled.\r\n\t\ttimeAgo.format(0, 'round', { now: 0 }).should.equal('just now')\r\n\t\ttimeAgo.format(1000, 'round', { now: 0 }).should.equal('in 1 second')\r\n\t})\r\n\r\n\tit('should not use Intl.NumberFormat if it is not available', () => {\r\n\t\tconst Intl = global.Intl\r\n\t\tglobal.Intl = undefined\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(1000, 'round', { now: 0 }).should.equal('in 1 second')\r\n\t\tglobal.Intl = Intl\r\n\t})\r\n\r\n\tit('should format `0` in past mode by default', () => {\r\n\t\tnew TimeAgo('en').format(0, {\r\n\t\t\tlabels: 'long',\r\n\t\t\tsteps: [{\r\n\t\t\t\tformatAs: 'second'\r\n\t\t\t}]\r\n\t\t}, { now: 0 }).should.equal('0 seconds ago')\r\n\t})\r\n\r\n\tit('should format `0` in future mode when `future: true` option was passed', () => {\r\n\t\tnew TimeAgo('en').format(0, {\r\n\t\t\tlabels: 'long',\r\n\t\t\tsteps: [{\r\n\t\t\t\tformatAs: 'second'\r\n\t\t\t}]\r\n\t\t}, { now: 0, future: true }).should.equal('in 0 seconds')\r\n\t})\r\n\r\n\tit('should throw if a step does not define `formatAs` or `format()`', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\texpect(() => timeAgo.format(Date.now() + 1000, {\r\n\t\t\tlabels: 'long',\r\n\t\t\tsteps: [{}]\r\n\t\t})).to.throw('Each step must define either `formatAs` or `format()`.')\r\n\t})\r\n\r\n\tit('should add default locale', () => {\r\n\t\tTimeAgo.getDefaultLocale().should.equal('en')\r\n\t\tTimeAgo.addDefaultLocale({\r\n\t\t\tlocale: 'el'\r\n\t\t})\r\n\t\tTimeAgo.getDefaultLocale().should.equal('el')\r\n\t\t// Doesn't throw an error because the same locale is already specified as default.\r\n\t\tTimeAgo.addDefaultLocale({\r\n\t\t\tlocale: 'el'\r\n\t\t})\r\n\t\t// Could throw an error or output an error message because another locale is already specified as default.\r\n\t\t// expect(() => {\r\n\t\t\tTimeAgo.addDefaultLocale({\r\n\t\t\t\tlocale: 'es'\r\n\t\t\t})\r\n\t\t// }).to.throw('but you have already added \"el\" as the default locale.')\r\n\t\tTimeAgo.setDefaultLocale('en')\r\n\t})\r\n\r\n\tit('should support \"floor\" rounding', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(0.9 * 1000, 'twitter', { now: 0, round: 'floor' }).should.equal('0s')\r\n\t\ttimeAgo.format(1 * 1000, 'twitter', { now: 0, round: 'floor' }).should.equal('1s')\r\n\t\ttimeAgo.format(1.9 * 1000, 'twitter', { now: 0, round: 'floor' }).should.equal('1s')\r\n\t\ttimeAgo.format(2 * 1000, 'twitter', { now: 0, round: 'floor' }).should.equal('2s')\r\n\t\ttimeAgo.format(1.9 * 60 * 1000, 'twitter', { now: 0, round: 'floor' }).should.equal('1m')\r\n\t\ttimeAgo.format(2 * 60 * 1000, 'twitter', { now: 0, round: 'floor' }).should.equal('2m')\r\n\t})\r\n})\r\n\r\nfunction delay(delayTime) {\r\n\treturn new Promise((resolve) => {\r\n\t\tsetTimeout(resolve, delayTime)\r\n\t})\r\n}"],"mappings":"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","ignoreList":[]}
@@ -8,14 +8,20 @@ export default function getStepMinTime(step, _ref) {
8
8
  future = _ref.future,
9
9
  round = _ref.round;
10
10
  var minTime;
11
- // "threshold_for_xxx" is a legacy property.
11
+
12
+ // (deprecated)
13
+ // Get `minTime` from "threshold_for_xxx" property of the `step`.
14
+ // "threshold_for_xxx" property of a `step` is deprecated.
12
15
  if (prevStep) {
13
16
  if (prevStep.id || prevStep.unit) {
14
17
  minTime = step["threshold_for_".concat(prevStep.id || prevStep.unit)];
15
18
  }
16
19
  }
20
+
21
+ // (deprecated)
22
+ // Get `minTime` from "threshold" property of the `step`.
23
+ // "threshold" property of a `step` is deprecated.
17
24
  if (minTime === undefined) {
18
- // "threshold" is a legacy property.
19
25
  if (step.threshold !== undefined) {
20
26
  // "threshold" is a legacy name for "minTime".
21
27
  minTime = step.threshold;
@@ -25,11 +31,15 @@ export default function getStepMinTime(step, _ref) {
25
31
  }
26
32
  }
27
33
  }
34
+
35
+ // Get `minTime` from `minTime` property of the `step`.
36
+ // This is the only non-deprecated source for the `minTime` property.
28
37
  if (minTime === undefined) {
29
38
  minTime = step.minTime;
30
39
  }
31
- // A deprecated way of specifying a different threshold
32
- // depending on the previous step's unit.
40
+
41
+ // (deprecated)
42
+ // If `minTime` is an object, calculate `minTime` from the previous step's `unit`.
33
43
  if (_typeof(minTime) === 'object') {
34
44
  if (prevStep && prevStep.id && minTime[prevStep.id] !== undefined) {
35
45
  minTime = minTime[prevStep.id];
@@ -37,6 +47,8 @@ export default function getStepMinTime(step, _ref) {
37
47
  minTime = minTime["default"];
38
48
  }
39
49
  }
50
+
51
+ // If `minTime` is a function, call it with certain arguments.
40
52
  if (typeof minTime === 'function') {
41
53
  minTime = minTime(timestamp, {
42
54
  future: future,
@@ -47,8 +59,10 @@ export default function getStepMinTime(step, _ref) {
47
59
  }
48
60
  });
49
61
  }
50
- // Evaluate the `test()` function.
51
- // `test()` function is deprecated.
62
+
63
+ // (deprecated)
64
+ // Get `minTime` from `step.test()` function property.
65
+ // `step.test` property is deprecated.
52
66
  if (minTime === undefined) {
53
67
  if (step.test) {
54
68
  if (step.test(timestamp, {
@@ -63,6 +77,9 @@ export default function getStepMinTime(step, _ref) {
63
77
  }
64
78
  }
65
79
  }
80
+
81
+ // If `minTime` is `undefined`, calculate it from the previous `step`.
82
+ // If it's the first step and there's no previous one, the `minTime` is assumed `0`.
66
83
  if (minTime === undefined) {
67
84
  if (prevStep) {
68
85
  if (step.formatAs && prevStep.formatAs) {
@@ -75,7 +92,8 @@ export default function getStepMinTime(step, _ref) {
75
92
  minTime = 0;
76
93
  }
77
94
  }
78
- // Warn if no `minTime` was defined or could be deduced.
95
+
96
+ // Warn if no `minTime` is defined for this step.
79
97
  if (minTime === undefined) {
80
98
  console.warn('[javascript-time-ago] A step should specify `minTime`:\n' + JSON.stringify(step, null, 2));
81
99
  }
@@ -84,18 +102,7 @@ export default function getStepMinTime(step, _ref) {
84
102
  function _getMinTimeForUnit(toUnit, fromUnit, _ref2) {
85
103
  var round = _ref2.round;
86
104
  var toUnitAmount = getSecondsInUnit(toUnit);
87
- // if (!fromUnit) {
88
- // return toUnitAmount;
89
- // }
90
- // if (!fromUnit) {
91
- // fromUnit = getPreviousUnitFor(toUnit)
92
- // }
93
- var fromUnitAmount;
94
- if (fromUnit === 'now') {
95
- fromUnitAmount = getSecondsInUnit(toUnit);
96
- } else {
97
- fromUnitAmount = getSecondsInUnit(fromUnit);
98
- }
105
+ var fromUnitAmount = fromUnit === 'now' ? getSecondsInUnit(toUnit) : getSecondsInUnit(fromUnit);
99
106
  if (toUnitAmount !== undefined && fromUnitAmount !== undefined) {
100
107
  return toUnitAmount - fromUnitAmount * (1 - getDiffRatioToNextRoundedNumber(round));
101
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getStepMinTime.js","names":["getSecondsInUnit","getDiffRatioToNextRoundedNumber","getStepMinTime","step","_ref","prevStep","timestamp","now","future","round","minTime","id","unit","concat","undefined","threshold","_typeof","getMinTimeForUnit","toUnit","fromUnit","formatAs","test","console","warn","JSON","stringify","_ref2","toUnitAmount","fromUnitAmount"],"sources":["../../source/steps/getStepMinTime.js"],"sourcesContent":["import { getSecondsInUnit } from './units.js'\r\nimport { getDiffRatioToNextRoundedNumber } from '../round.js'\r\n\r\nexport default function getStepMinTime(step, {\r\n\tprevStep,\r\n\ttimestamp,\r\n\t// `now` argument is used in a deprecated `step.test()` function.\r\n\tnow,\r\n\tfuture,\r\n\tround\r\n}) {\r\n\tlet minTime\r\n\t// \"threshold_for_xxx\" is a legacy property.\r\n\tif (prevStep) {\r\n\t\tif (prevStep.id || prevStep.unit) {\r\n\t\t\tminTime = step[`threshold_for_${prevStep.id || prevStep.unit}`]\r\n\t\t}\r\n\t}\r\n\tif (minTime === undefined) {\r\n\t\t// \"threshold\" is a legacy property.\r\n\t\tif (step.threshold !== undefined) {\r\n\t\t\t// \"threshold\" is a legacy name for \"minTime\".\r\n\t\t\tminTime = step.threshold\r\n\t\t\t// \"threshold\" function is deprecated.\r\n\t\t\tif (typeof minTime === 'function') {\r\n\t\t\t\tminTime = minTime(now, future)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (minTime === undefined) {\r\n\t\tminTime = step.minTime\r\n\t}\r\n\t// A deprecated way of specifying a different threshold\r\n\t// depending on the previous step's unit.\r\n\tif (typeof minTime === 'object') {\r\n\t\tif (prevStep && prevStep.id && minTime[prevStep.id] !== undefined) {\r\n\t\t\tminTime = minTime[prevStep.id]\r\n\t\t} else {\r\n\t\t\tminTime = minTime.default\r\n\t\t}\r\n\t}\r\n\tif (typeof minTime === 'function') {\r\n\t\tminTime = minTime(timestamp, {\r\n\t\t\tfuture,\r\n\t\t\tgetMinTimeForUnit(toUnit, fromUnit) {\r\n\t\t\t\treturn getMinTimeForUnit(\r\n\t\t\t\t\ttoUnit,\r\n\t\t\t\t\tfromUnit || prevStep && prevStep.formatAs,\r\n\t\t\t\t\t{ round }\r\n\t\t\t\t)\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\t// Evaluate the `test()` function.\r\n\t// `test()` function is deprecated.\r\n\tif (minTime === undefined) {\r\n\t\tif (step.test) {\r\n\t\t\tif (step.test(timestamp, {\r\n\t\t\t\tnow,\r\n\t\t\t\tfuture\r\n\t\t\t})) {\r\n\t\t\t\t// `0` threshold always passes.\r\n\t\t\t\tminTime = 0\r\n\t\t\t} else {\r\n\t\t\t\t// `MAX_SAFE_INTEGER` threshold won't ever pass in real life.\r\n\t\t\t\tminTime = 9007199254740991 // Number.MAX_SAFE_INTEGER\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (minTime === undefined) {\r\n\t\tif (prevStep) {\r\n\t\t\tif (step.formatAs && prevStep.formatAs) {\r\n\t\t\t\tminTime = getMinTimeForUnit(step.formatAs, prevStep.formatAs, { round })\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// The first step's `minTime` is `0` by default.\r\n\t\t\tminTime = 0\r\n\t\t}\r\n\t}\r\n\t// Warn if no `minTime` was defined or could be deduced.\r\n\tif (minTime === undefined) {\r\n\t\tconsole.warn('[javascript-time-ago] A step should specify `minTime`:\\n' + JSON.stringify(step, null, 2))\r\n\t}\r\n\treturn minTime\r\n}\r\n\r\nfunction getMinTimeForUnit(toUnit, fromUnit, { round }) {\r\n\tconst toUnitAmount = getSecondsInUnit(toUnit)\r\n\t// if (!fromUnit) {\r\n\t// \treturn toUnitAmount;\r\n\t// }\r\n\t// if (!fromUnit) {\r\n\t// \tfromUnit = getPreviousUnitFor(toUnit)\r\n\t// }\r\n\tlet fromUnitAmount\r\n\tif (fromUnit === 'now') {\r\n\t\tfromUnitAmount = getSecondsInUnit(toUnit)\r\n\t} else {\r\n\t\tfromUnitAmount = getSecondsInUnit(fromUnit)\r\n\t}\r\n\tif (toUnitAmount !== undefined && fromUnitAmount !== undefined) {\r\n\t\treturn toUnitAmount - fromUnitAmount * (1 - getDiffRatioToNextRoundedNumber(round))\r\n\t}\r\n}"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"getStepMinTime.js","names":["getSecondsInUnit","getDiffRatioToNextRoundedNumber","getStepMinTime","step","_ref","prevStep","timestamp","now","future","round","minTime","id","unit","concat","undefined","threshold","_typeof","getMinTimeForUnit","toUnit","fromUnit","formatAs","test","console","warn","JSON","stringify","_ref2","toUnitAmount","fromUnitAmount"],"sources":["../../source/steps/getStepMinTime.js"],"sourcesContent":["import { getSecondsInUnit } from './units.js'\r\nimport { getDiffRatioToNextRoundedNumber } from '../round.js'\r\n\r\nexport default function getStepMinTime(step, {\r\n\tprevStep,\r\n\ttimestamp,\r\n\t// `now` argument is used in a deprecated `step.test()` function.\r\n\tnow,\r\n\tfuture,\r\n\tround\r\n}) {\r\n\tlet minTime\r\n\r\n\t// (deprecated)\r\n\t// Get `minTime` from \"threshold_for_xxx\" property of the `step`.\r\n\t// \"threshold_for_xxx\" property of a `step` is deprecated.\r\n\tif (prevStep) {\r\n\t\tif (prevStep.id || prevStep.unit) {\r\n\t\t\tminTime = step[`threshold_for_${prevStep.id || prevStep.unit}`]\r\n\t\t}\r\n\t}\r\n\r\n\t// (deprecated)\r\n\t// Get `minTime` from \"threshold\" property of the `step`.\r\n\t// \"threshold\" property of a `step` is deprecated.\r\n\tif (minTime === undefined) {\r\n\t\tif (step.threshold !== undefined) {\r\n\t\t\t// \"threshold\" is a legacy name for \"minTime\".\r\n\t\t\tminTime = step.threshold\r\n\t\t\t// \"threshold\" function is deprecated.\r\n\t\t\tif (typeof minTime === 'function') {\r\n\t\t\t\tminTime = minTime(now, future)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Get `minTime` from `minTime` property of the `step`.\r\n\t// This is the only non-deprecated source for the `minTime` property.\r\n\tif (minTime === undefined) {\r\n\t\tminTime = step.minTime\r\n\t}\r\n\r\n\t// (deprecated)\r\n\t// If `minTime` is an object, calculate `minTime` from the previous step's `unit`.\r\n\tif (typeof minTime === 'object') {\r\n\t\tif (prevStep && prevStep.id && minTime[prevStep.id] !== undefined) {\r\n\t\t\tminTime = minTime[prevStep.id]\r\n\t\t} else {\r\n\t\t\tminTime = minTime.default\r\n\t\t}\r\n\t}\r\n\r\n\t// If `minTime` is a function, call it with certain arguments.\r\n\tif (typeof minTime === 'function') {\r\n\t\tminTime = minTime(timestamp, {\r\n\t\t\tfuture,\r\n\t\t\tgetMinTimeForUnit(toUnit, fromUnit) {\r\n\t\t\t\treturn getMinTimeForUnit(\r\n\t\t\t\t\ttoUnit,\r\n\t\t\t\t\tfromUnit || prevStep && prevStep.formatAs,\r\n\t\t\t\t\t{ round }\r\n\t\t\t\t)\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\t// (deprecated)\r\n\t// Get `minTime` from `step.test()` function property.\r\n\t// `step.test` property is deprecated.\r\n\tif (minTime === undefined) {\r\n\t\tif (step.test) {\r\n\t\t\tif (step.test(timestamp, {\r\n\t\t\t\tnow,\r\n\t\t\t\tfuture\r\n\t\t\t})) {\r\n\t\t\t\t// `0` threshold always passes.\r\n\t\t\t\tminTime = 0\r\n\t\t\t} else {\r\n\t\t\t\t// `MAX_SAFE_INTEGER` threshold won't ever pass in real life.\r\n\t\t\t\tminTime = 9007199254740991 // Number.MAX_SAFE_INTEGER\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// If `minTime` is `undefined`, calculate it from the previous `step`.\r\n\t// If it's the first step and there's no previous one, the `minTime` is assumed `0`.\r\n\tif (minTime === undefined) {\r\n\t\tif (prevStep) {\r\n\t\t\tif (step.formatAs && prevStep.formatAs) {\r\n\t\t\t\tminTime = getMinTimeForUnit(step.formatAs, prevStep.formatAs, { round })\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// The first step's `minTime` is `0` by default.\r\n\t\t\tminTime = 0\r\n\t\t}\r\n\t}\r\n\r\n\t// Warn if no `minTime` is defined for this step.\r\n\tif (minTime === undefined) {\r\n\t\tconsole.warn('[javascript-time-ago] A step should specify `minTime`:\\n' + JSON.stringify(step, null, 2))\r\n\t}\r\n\r\n\treturn minTime\r\n}\r\n\r\nfunction getMinTimeForUnit(toUnit, fromUnit, { round }) {\r\n\tconst toUnitAmount = getSecondsInUnit(toUnit)\r\n\tconst fromUnitAmount = fromUnit === 'now' ? getSecondsInUnit(toUnit) : getSecondsInUnit(fromUnit)\r\n\tif (toUnitAmount !== undefined && fromUnitAmount !== undefined) {\r\n\t\treturn toUnitAmount - fromUnitAmount * (1 - getDiffRatioToNextRoundedNumber(round))\r\n\t}\r\n}"],"mappings":"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","ignoreList":[]}
@@ -4,10 +4,12 @@ import { getRoundFunction } from '../round.js';
4
4
 
5
5
  // A thousand years is practically a metaphor for "infinity".
6
6
  var YEAR = 365 * 24 * 60 * 60 * 1000;
7
+ // It can't really return `Infinity` in order to not screw any potential calculations performed with it.
8
+ // Hence, it emulates `Infinity` with a really large number that is "practically infinite".
7
9
  export var INFINITY = 1000 * YEAR;
8
10
 
9
11
  /**
10
- * Gets the time to next update for a date and a step.
12
+ * Returns the time (in milliseconds) after which the formatted date label should be refreshed.
11
13
  * @param {number} date — The date passed to `.format()`, converted to a timestamp.
12
14
  * @param {object} step
13
15
  * @param {object} [options.previousStep]
@@ -15,7 +17,7 @@ export var INFINITY = 1000 * YEAR;
15
17
  * @param {number} options.now
16
18
  * @param {boolean} options.future
17
19
  * @param {string} [options.round] - (undocumented) Rounding mechanism.
18
- * @return {number} [timeToNextUpdate]
20
+ * @return {number} [timeToNextUpdate] Returns the time to next update. Returns `undefined` when it can't determine time to next update. That could only happen when the "style" doesn't meet the minimum requirements for `getTimeToNextUpdate: true` feature (see README).
19
21
  */
20
22
  export default function getTimeToNextUpdate(date, step, _ref) {
21
23
  var prevStep = _ref.prevStep,
@@ -52,6 +54,9 @@ export default function getTimeToNextUpdate(date, step, _ref) {
52
54
  prevStep: future ? prevStep : step
53
55
  // isFirstStep: future && isFirstStep
54
56
  });
57
+
58
+ // If the "style" doesn't meet the minimum requirements for `getTimeToNextUpdate: true` feature (see README)
59
+ // then `timeToStepChange` will be `undefined`. In that case, just return `undefined`.
55
60
  if (timeToStepChange === undefined) {
56
61
  // Can't reliably determine "time to next update"
57
62
  // if not all of the steps provide `minTime`.
@@ -85,6 +90,9 @@ export default function getTimeToNextUpdate(date, step, _ref) {
85
90
  }
86
91
  return Math.min(timeToNextUpdate, timeToStepChange);
87
92
  }
93
+
94
+ // Returns the timestamp at which it'll move to the next step.
95
+ // Returns `undefined` when it can't determine when it'll move to the next stemp. That could only happen when the "style" doesn't meet the minimum requirements for `getTimeToNextUpdate: true` feature (see README).
88
96
  export function getStepChangesAt(currentOrNextStep, timestamp, _ref2) {
89
97
  var now = _ref2.now,
90
98
  future = _ref2.future,