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.
- package/CHANGELOG.md +10 -1
- package/README.md +410 -272
- package/bundle/javascript-time-ago.js +1 -1
- package/bundle/javascript-time-ago.js.map +1 -1
- package/bundle/javascript-time-ago.min.js +1 -1
- package/bundle/javascript-time-ago.min.js.map +1 -1
- package/commonjs/FullDateFormatter.js +72 -0
- package/commonjs/FullDateFormatter.js.map +1 -0
- package/commonjs/FullDateFormatter.test.js +26 -0
- package/commonjs/FullDateFormatter.test.js.map +1 -0
- package/commonjs/TimeAgo.js +208 -106
- package/commonjs/TimeAgo.js.map +1 -1
- package/commonjs/TimeAgo.test.js +95 -10
- package/commonjs/TimeAgo.test.js.map +1 -1
- package/commonjs/steps/getStepMinTime.js +26 -19
- package/commonjs/steps/getStepMinTime.js.map +1 -1
- package/commonjs/steps/getTimeToNextUpdate.js +10 -2
- package/commonjs/steps/getTimeToNextUpdate.js.map +1 -1
- package/commonjs/style/twitter.js +2 -3
- package/commonjs/style/twitter.js.map +1 -1
- package/commonjs/style/twitter.test.js +5 -2
- package/commonjs/style/twitter.test.js.map +1 -1
- package/full-date-formatter/index.cjs +4 -0
- package/full-date-formatter/index.cjs.js +9 -0
- package/full-date-formatter/index.d.ts +6 -0
- package/full-date-formatter/index.js +1 -0
- package/full-date-formatter/package.json +15 -0
- package/index.cjs +1 -1
- package/index.cjs.js +2 -2
- package/index.d.ts +14 -4
- package/index.js +3 -1
- package/modules/FullDateFormatter.js +67 -0
- package/modules/FullDateFormatter.js.map +1 -0
- package/modules/FullDateFormatter.test.js +22 -0
- package/modules/FullDateFormatter.test.js.map +1 -0
- package/modules/TimeAgo.js +208 -107
- package/modules/TimeAgo.js.map +1 -1
- package/modules/TimeAgo.test.js +95 -8
- package/modules/TimeAgo.test.js.map +1 -1
- package/modules/steps/getStepMinTime.js +26 -19
- package/modules/steps/getStepMinTime.js.map +1 -1
- package/modules/steps/getTimeToNextUpdate.js +10 -2
- package/modules/steps/getTimeToNextUpdate.js.map +1 -1
- package/modules/style/twitter.js +3 -3
- package/modules/style/twitter.js.map +1 -1
- package/modules/style/twitter.test.js +5 -2
- package/modules/style/twitter.test.js.map +1 -1
- package/package.json +16 -11
package/modules/TimeAgo.test.js
CHANGED
|
@@ -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,
|
|
574
|
-
var 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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
|
|
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
|
-
|
|
32
|
-
//
|
|
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
|
-
|
|
51
|
-
//
|
|
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
|
-
|
|
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
|
-
|
|
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\"
|
|
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
|
-
*
|
|
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,
|