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 +1 @@
1
- {"version":3,"file":"TimeAgo.test.js","names":["_TimeAgo","_interopRequireDefault","require","_LocaleDataStore","_en","e","__esModule","TimeAgo","setDefaultLocale","describe","it","timeAgo","format","Date","now","should","equal","future","labels","steps","formatAs","flavour","gradation","englishNow","english","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","_interopRequireDefault","require","_LocaleDataStore","_en","e","__esModule","_slicedToArray","r","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","a","_arrayLikeToArray","t","toString","call","slice","constructor","name","Array","from","test","length","n","l","Symbol","iterator","i","u","f","o","next","Object","done","push","value","isArray","TimeAgo","setDefaultLocale","describe","it","timeAgo","format","Date","now","should","equal","future","labels","steps","formatAs","flavour","gradation","englishNow","english","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","cancelRefresh","be","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":[]}
@@ -14,14 +14,20 @@ function getStepMinTime(step, _ref) {
14
14
  future = _ref.future,
15
15
  round = _ref.round;
16
16
  var minTime;
17
- // "threshold_for_xxx" is a legacy property.
17
+
18
+ // (deprecated)
19
+ // Get `minTime` from "threshold_for_xxx" property of the `step`.
20
+ // "threshold_for_xxx" property of a `step` is deprecated.
18
21
  if (prevStep) {
19
22
  if (prevStep.id || prevStep.unit) {
20
23
  minTime = step["threshold_for_".concat(prevStep.id || prevStep.unit)];
21
24
  }
22
25
  }
26
+
27
+ // (deprecated)
28
+ // Get `minTime` from "threshold" property of the `step`.
29
+ // "threshold" property of a `step` is deprecated.
23
30
  if (minTime === undefined) {
24
- // "threshold" is a legacy property.
25
31
  if (step.threshold !== undefined) {
26
32
  // "threshold" is a legacy name for "minTime".
27
33
  minTime = step.threshold;
@@ -31,11 +37,15 @@ function getStepMinTime(step, _ref) {
31
37
  }
32
38
  }
33
39
  }
40
+
41
+ // Get `minTime` from `minTime` property of the `step`.
42
+ // This is the only non-deprecated source for the `minTime` property.
34
43
  if (minTime === undefined) {
35
44
  minTime = step.minTime;
36
45
  }
37
- // A deprecated way of specifying a different threshold
38
- // depending on the previous step's unit.
46
+
47
+ // (deprecated)
48
+ // If `minTime` is an object, calculate `minTime` from the previous step's `unit`.
39
49
  if (_typeof(minTime) === 'object') {
40
50
  if (prevStep && prevStep.id && minTime[prevStep.id] !== undefined) {
41
51
  minTime = minTime[prevStep.id];
@@ -43,6 +53,8 @@ function getStepMinTime(step, _ref) {
43
53
  minTime = minTime["default"];
44
54
  }
45
55
  }
56
+
57
+ // If `minTime` is a function, call it with certain arguments.
46
58
  if (typeof minTime === 'function') {
47
59
  minTime = minTime(timestamp, {
48
60
  future: future,
@@ -53,8 +65,10 @@ function getStepMinTime(step, _ref) {
53
65
  }
54
66
  });
55
67
  }
56
- // Evaluate the `test()` function.
57
- // `test()` function is deprecated.
68
+
69
+ // (deprecated)
70
+ // Get `minTime` from `step.test()` function property.
71
+ // `step.test` property is deprecated.
58
72
  if (minTime === undefined) {
59
73
  if (step.test) {
60
74
  if (step.test(timestamp, {
@@ -69,6 +83,9 @@ function getStepMinTime(step, _ref) {
69
83
  }
70
84
  }
71
85
  }
86
+
87
+ // If `minTime` is `undefined`, calculate it from the previous `step`.
88
+ // If it's the first step and there's no previous one, the `minTime` is assumed `0`.
72
89
  if (minTime === undefined) {
73
90
  if (prevStep) {
74
91
  if (step.formatAs && prevStep.formatAs) {
@@ -81,7 +98,8 @@ function getStepMinTime(step, _ref) {
81
98
  minTime = 0;
82
99
  }
83
100
  }
84
- // Warn if no `minTime` was defined or could be deduced.
101
+
102
+ // Warn if no `minTime` is defined for this step.
85
103
  if (minTime === undefined) {
86
104
  console.warn('[javascript-time-ago] A step should specify `minTime`:\n' + JSON.stringify(step, null, 2));
87
105
  }
@@ -90,18 +108,7 @@ function getStepMinTime(step, _ref) {
90
108
  function _getMinTimeForUnit(toUnit, fromUnit, _ref2) {
91
109
  var round = _ref2.round;
92
110
  var toUnitAmount = (0, _units.getSecondsInUnit)(toUnit);
93
- // if (!fromUnit) {
94
- // return toUnitAmount;
95
- // }
96
- // if (!fromUnit) {
97
- // fromUnit = getPreviousUnitFor(toUnit)
98
- // }
99
- var fromUnitAmount;
100
- if (fromUnit === 'now') {
101
- fromUnitAmount = (0, _units.getSecondsInUnit)(toUnit);
102
- } else {
103
- fromUnitAmount = (0, _units.getSecondsInUnit)(fromUnit);
104
- }
111
+ var fromUnitAmount = fromUnit === 'now' ? (0, _units.getSecondsInUnit)(toUnit) : (0, _units.getSecondsInUnit)(fromUnit);
105
112
  if (toUnitAmount !== undefined && fromUnitAmount !== undefined) {
106
113
  return toUnitAmount - fromUnitAmount * (1 - (0, _round.getDiffRatioToNextRoundedNumber)(round));
107
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getStepMinTime.js","names":["_units","require","_round","_typeof","o","Symbol","iterator","constructor","prototype","getStepMinTime","step","_ref","prevStep","timestamp","now","future","round","minTime","id","unit","concat","undefined","threshold","getMinTimeForUnit","toUnit","fromUnit","formatAs","test","console","warn","JSON","stringify","_ref2","toUnitAmount","getSecondsInUnit","fromUnitAmount","getDiffRatioToNextRoundedNumber"],"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":["_units","require","_round","_typeof","o","Symbol","iterator","constructor","prototype","getStepMinTime","step","_ref","prevStep","timestamp","now","future","round","minTime","id","unit","concat","undefined","threshold","getMinTimeForUnit","toUnit","fromUnit","formatAs","test","console","warn","JSON","stringify","_ref2","toUnitAmount","getSecondsInUnit","fromUnitAmount","getDiffRatioToNextRoundedNumber"],"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":[]}
@@ -13,10 +13,12 @@ var _round = require("../round.js");
13
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
14
14
  // A thousand years is practically a metaphor for "infinity".
15
15
  var YEAR = 365 * 24 * 60 * 60 * 1000;
16
+ // It can't really return `Infinity` in order to not screw any potential calculations performed with it.
17
+ // Hence, it emulates `Infinity` with a really large number that is "practically infinite".
16
18
  var INFINITY = exports.INFINITY = 1000 * YEAR;
17
19
 
18
20
  /**
19
- * Gets the time to next update for a date and a step.
21
+ * Returns the time (in milliseconds) after which the formatted date label should be refreshed.
20
22
  * @param {number} date — The date passed to `.format()`, converted to a timestamp.
21
23
  * @param {object} step
22
24
  * @param {object} [options.previousStep]
@@ -24,7 +26,7 @@ var INFINITY = exports.INFINITY = 1000 * YEAR;
24
26
  * @param {number} options.now
25
27
  * @param {boolean} options.future
26
28
  * @param {string} [options.round] - (undocumented) Rounding mechanism.
27
- * @return {number} [timeToNextUpdate]
29
+ * @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).
28
30
  */
29
31
  function getTimeToNextUpdate(date, step, _ref) {
30
32
  var prevStep = _ref.prevStep,
@@ -61,6 +63,9 @@ function getTimeToNextUpdate(date, step, _ref) {
61
63
  prevStep: future ? prevStep : step
62
64
  // isFirstStep: future && isFirstStep
63
65
  });
66
+
67
+ // If the "style" doesn't meet the minimum requirements for `getTimeToNextUpdate: true` feature (see README)
68
+ // then `timeToStepChange` will be `undefined`. In that case, just return `undefined`.
64
69
  if (timeToStepChange === undefined) {
65
70
  // Can't reliably determine "time to next update"
66
71
  // if not all of the steps provide `minTime`.
@@ -94,6 +99,9 @@ function getTimeToNextUpdate(date, step, _ref) {
94
99
  }
95
100
  return Math.min(timeToNextUpdate, timeToStepChange);
96
101
  }
102
+
103
+ // Returns the timestamp at which it'll move to the next step.
104
+ // 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).
97
105
  function getStepChangesAt(currentOrNextStep, timestamp, _ref2) {
98
106
  var now = _ref2.now,
99
107
  future = _ref2.future,
@@ -1 +1 @@
1
- {"version":3,"file":"getTimeToNextUpdate.js","names":["_getTimeToNextUpdateForUnit2","_interopRequireDefault","require","_getStepMinTime","_round","e","__esModule","YEAR","INFINITY","exports","getTimeToNextUpdate","date","step","_ref","prevStep","nextStep","now","future","round","timestamp","getTime","getTimeToNextUpdateForUnit","unit","_getTimeToNextUpdateForUnit","timeToStepChange","getTimeToStepChange","undefined","timeToNextUpdate","getRoundFunction","formatAs","Math","min","getStepChangesAt","currentOrNextStep","_ref2","minTime","getStepMinTime","_ref3","stepChangesAt"],"sources":["../../source/steps/getTimeToNextUpdate.js"],"sourcesContent":["import _getTimeToNextUpdateForUnit from './getTimeToNextUpdateForUnit.js'\r\nimport getStepMinTime from './getStepMinTime.js'\r\nimport { getRoundFunction } from '../round.js'\r\n\r\n// A thousand years is practically a metaphor for \"infinity\".\r\nconst YEAR = 365 * 24 * 60 * 60 * 1000\r\nexport const INFINITY = 1000 * YEAR\r\n\r\n/**\r\n * Gets the time to next update for a date and a step.\r\n * @param {number} date — The date passed to `.format()`, converted to a timestamp.\r\n * @param {object} step\r\n * @param {object} [options.previousStep]\r\n * @param {object} [options.nextStep]\r\n * @param {number} options.now\r\n * @param {boolean} options.future\r\n * @param {string} [options.round] - (undocumented) Rounding mechanism.\r\n * @return {number} [timeToNextUpdate]\r\n */\r\nexport default function getTimeToNextUpdate(date, step, { prevStep, nextStep, now, future, round }) {\r\n\tconst timestamp = date.getTime ? date.getTime() : date\r\n\r\n\tconst getTimeToNextUpdateForUnit = (unit) => _getTimeToNextUpdateForUnit(unit, timestamp, { now, round })\r\n\r\n\t// For future dates, steps move from the last one to the first one,\r\n\t// while for past dates, steps move from the first one to the last one,\r\n\t// due to the fact that time flows in one direction,\r\n\t// and future dates' interval naturally becomes smaller\r\n\t// while past dates' interval naturally grows larger.\r\n\t//\r\n\t// For future dates, it's the transition\r\n\t// from the current step to the previous step,\r\n\t// therefore check the `minTime` of the current step.\r\n\t//\r\n\t// For past dates, it's the transition\r\n\t// from the current step to the next step,\r\n\t// therefore check the `minTime` of the next step.\r\n\t//\r\n\tconst timeToStepChange = getTimeToStepChange(future ? step : nextStep, timestamp, {\r\n\t\tfuture,\r\n\t\tnow,\r\n\t\tround,\r\n\t\tprevStep: future ? prevStep : step,\r\n\t\t// isFirstStep: future && isFirstStep\r\n\t})\r\n\r\n\tif (timeToStepChange === undefined) {\r\n\t\t// Can't reliably determine \"time to next update\"\r\n\t\t// if not all of the steps provide `minTime`.\r\n\t\treturn\r\n\t}\r\n\r\n\tlet timeToNextUpdate\r\n\r\n\tif (step) {\r\n\t\tif (step.getTimeToNextUpdate) {\r\n\t\t\ttimeToNextUpdate = step.getTimeToNextUpdate(timestamp, {\r\n\t\t\t\tgetTimeToNextUpdateForUnit,\r\n\t\t\t\tgetRoundFunction,\r\n\t\t\t\tnow,\r\n\t\t\t\tfuture,\r\n\t\t\t\tround\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tif (timeToNextUpdate === undefined) {\r\n\t\t\t// \"unit\" is now called \"formatAs\".\r\n\t\t\tconst unit = step.unit || step.formatAs\r\n\t\t\tif (unit) {\r\n\t\t\t\t// For some units, like \"now\", there's no defined amount of seconds in them.\r\n\t\t\t\t// In such cases, `getTimeToNextUpdateForUnit()` returns `undefined`,\r\n\t\t\t\t// and the next step's `minTime` could be used to calculate the update interval:\r\n\t\t\t\t// it will just assume that the label never changes for this step.\r\n\t\t\t\ttimeToNextUpdate = getTimeToNextUpdateForUnit(unit)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (timeToNextUpdate === undefined) {\r\n\t\treturn timeToStepChange\r\n\t}\r\n\r\n\treturn Math.min(timeToNextUpdate, timeToStepChange)\r\n}\r\n\r\nexport function getStepChangesAt(currentOrNextStep, timestamp, { now, future, round, prevStep }) {\r\n\t// The first step's `minTime` is `0` by default.\r\n\t// It doesn't \"change\" steps at zero point\r\n\t// but it does change the wording when switching\r\n\t// from \"future\" to \"past\": \"in ...\" -> \"... ago\".\r\n\t// Therefore, the label should be updated at zero-point too.\r\n\tconst minTime = getStepMinTime(currentOrNextStep, { timestamp, now, future, round, prevStep })\r\n\tif (minTime === undefined) {\r\n\t\treturn\r\n\t}\r\n\tif (future) {\r\n\t\t// The step changes to the previous step\r\n\t\t// as soon as `timestamp - now` becomes\r\n\t\t// less than the `minTime` of the current step:\r\n\t\t// `timestamp - now === minTime - 1`\r\n\t\t// => `now === timestamp - minTime + 1`.\r\n\t\treturn timestamp - minTime * 1000 + 1\r\n\t} else {\r\n\t\t// The step changes to the next step\r\n\t\t// as soon as `now - timestamp` becomes\r\n\t\t// equal to `minTime` of the next step:\r\n\t\t// `now - timestamp === minTime`\r\n\t\t// => `now === timestamp + minTime`.\r\n\r\n\t\t// This is a special case when double-update could be skipped.\r\n\t\tif (minTime === 0 && timestamp === now) {\r\n\t\t\treturn INFINITY\r\n\t\t}\r\n\r\n\t\treturn timestamp + minTime * 1000\r\n\t}\r\n}\r\n\r\nexport function getTimeToStepChange(step, timestamp, {\r\n\tnow,\r\n\tfuture,\r\n\tround,\r\n\tprevStep\r\n}) {\r\n\tif (step) {\r\n\t\tconst stepChangesAt = getStepChangesAt(step, timestamp, {\r\n\t\t\tnow,\r\n\t\t\tfuture,\r\n\t\t\tround,\r\n\t\t\tprevStep\r\n\t\t})\r\n\t\tif (stepChangesAt === undefined) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\treturn stepChangesAt - now\r\n\t} else {\r\n\t\tif (future) {\r\n\t\t\t// No step.\r\n\t\t\t// Update right after zero point, when it changes from \"future\" to \"past\".\r\n\t\t\treturn timestamp - now + 1\r\n\t\t} else {\r\n\t\t\t// The last step doesn't ever change when `date` is in the past.\r\n\t\t\treturn INFINITY\r\n\t\t}\r\n\t}\r\n}"],"mappings":";;;;;;;;;AAAA,IAAAA,4BAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,eAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAA8C,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,gBAAAA,CAAA;AAE9C;AACA,IAAME,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;AAC/B,IAAMC,QAAQ,GAAAC,OAAA,CAAAD,QAAA,GAAG,IAAI,GAAGD,IAAI;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASG,mBAAmBA,CAACC,IAAI,EAAEC,IAAI,EAAAC,IAAA,EAA8C;EAAA,IAA1CC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAEC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IAAEC,GAAG,GAAAH,IAAA,CAAHG,GAAG;IAAEC,MAAM,GAAAJ,IAAA,CAANI,MAAM;IAAEC,KAAK,GAAAL,IAAA,CAALK,KAAK;EAC/F,IAAMC,SAAS,GAAGR,IAAI,CAACS,OAAO,GAAGT,IAAI,CAACS,OAAO,CAAC,CAAC,GAAGT,IAAI;EAEtD,IAAMU,0BAA0B,GAAG,SAA7BA,0BAA0BA,CAAIC,IAAI;IAAA,OAAK,IAAAC,uCAA2B,EAACD,IAAI,EAAEH,SAAS,EAAE;MAAEH,GAAG,EAAHA,GAAG;MAAEE,KAAK,EAALA;IAAM,CAAC,CAAC;EAAA;;EAEzG;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAMM,gBAAgB,GAAGC,mBAAmB,CAACR,MAAM,GAAGL,IAAI,GAAGG,QAAQ,EAAEI,SAAS,EAAE;IACjFF,MAAM,EAANA,MAAM;IACND,GAAG,EAAHA,GAAG;IACHE,KAAK,EAALA,KAAK;IACLJ,QAAQ,EAAEG,MAAM,GAAGH,QAAQ,GAAGF;IAC9B;EACD,CAAC,CAAC;EAEF,IAAIY,gBAAgB,KAAKE,SAAS,EAAE;IACnC;IACA;IACA;EACD;EAEA,IAAIC,gBAAgB;EAEpB,IAAIf,IAAI,EAAE;IACT,IAAIA,IAAI,CAACF,mBAAmB,EAAE;MAC7BiB,gBAAgB,GAAGf,IAAI,CAACF,mBAAmB,CAACS,SAAS,EAAE;QACtDE,0BAA0B,EAA1BA,0BAA0B;QAC1BO,gBAAgB,EAAhBA,uBAAgB;QAChBZ,GAAG,EAAHA,GAAG;QACHC,MAAM,EAANA,MAAM;QACNC,KAAK,EAALA;MACD,CAAC,CAAC;IACH;IAEA,IAAIS,gBAAgB,KAAKD,SAAS,EAAE;MACnC;MACA,IAAMJ,IAAI,GAAGV,IAAI,CAACU,IAAI,IAAIV,IAAI,CAACiB,QAAQ;MACvC,IAAIP,IAAI,EAAE;QACT;QACA;QACA;QACA;QACAK,gBAAgB,GAAGN,0BAA0B,CAACC,IAAI,CAAC;MACpD;IACD;EACD;EAEA,IAAIK,gBAAgB,KAAKD,SAAS,EAAE;IACnC,OAAOF,gBAAgB;EACxB;EAEA,OAAOM,IAAI,CAACC,GAAG,CAACJ,gBAAgB,EAAEH,gBAAgB,CAAC;AACpD;AAEO,SAASQ,gBAAgBA,CAACC,iBAAiB,EAAEd,SAAS,EAAAe,KAAA,EAAoC;EAAA,IAAhClB,GAAG,GAAAkB,KAAA,CAAHlB,GAAG;IAAEC,MAAM,GAAAiB,KAAA,CAANjB,MAAM;IAAEC,KAAK,GAAAgB,KAAA,CAALhB,KAAK;IAAEJ,QAAQ,GAAAoB,KAAA,CAARpB,QAAQ;EAC5F;EACA;EACA;EACA;EACA;EACA,IAAMqB,OAAO,GAAG,IAAAC,0BAAc,EAACH,iBAAiB,EAAE;IAAEd,SAAS,EAATA,SAAS;IAAEH,GAAG,EAAHA,GAAG;IAAEC,MAAM,EAANA,MAAM;IAAEC,KAAK,EAALA,KAAK;IAAEJ,QAAQ,EAARA;EAAS,CAAC,CAAC;EAC9F,IAAIqB,OAAO,KAAKT,SAAS,EAAE;IAC1B;EACD;EACA,IAAIT,MAAM,EAAE;IACX;IACA;IACA;IACA;IACA;IACA,OAAOE,SAAS,GAAGgB,OAAO,GAAG,IAAI,GAAG,CAAC;EACtC,CAAC,MAAM;IACN;IACA;IACA;IACA;IACA;;IAEA;IACA,IAAIA,OAAO,KAAK,CAAC,IAAIhB,SAAS,KAAKH,GAAG,EAAE;MACvC,OAAOR,QAAQ;IAChB;IAEA,OAAOW,SAAS,GAAGgB,OAAO,GAAG,IAAI;EAClC;AACD;AAEO,SAASV,mBAAmBA,CAACb,IAAI,EAAEO,SAAS,EAAAkB,KAAA,EAKhD;EAAA,IAJFrB,GAAG,GAAAqB,KAAA,CAAHrB,GAAG;IACHC,MAAM,GAAAoB,KAAA,CAANpB,MAAM;IACNC,KAAK,GAAAmB,KAAA,CAALnB,KAAK;IACLJ,QAAQ,GAAAuB,KAAA,CAARvB,QAAQ;EAER,IAAIF,IAAI,EAAE;IACT,IAAM0B,aAAa,GAAGN,gBAAgB,CAACpB,IAAI,EAAEO,SAAS,EAAE;MACvDH,GAAG,EAAHA,GAAG;MACHC,MAAM,EAANA,MAAM;MACNC,KAAK,EAALA,KAAK;MACLJ,QAAQ,EAARA;IACD,CAAC,CAAC;IACF,IAAIwB,aAAa,KAAKZ,SAAS,EAAE;MAChC;IACD;IACA,OAAOY,aAAa,GAAGtB,GAAG;EAC3B,CAAC,MAAM;IACN,IAAIC,MAAM,EAAE;MACX;MACA;MACA,OAAOE,SAAS,GAAGH,GAAG,GAAG,CAAC;IAC3B,CAAC,MAAM;MACN;MACA,OAAOR,QAAQ;IAChB;EACD;AACD","ignoreList":[]}
1
+ {"version":3,"file":"getTimeToNextUpdate.js","names":["_getTimeToNextUpdateForUnit2","_interopRequireDefault","require","_getStepMinTime","_round","e","__esModule","YEAR","INFINITY","exports","getTimeToNextUpdate","date","step","_ref","prevStep","nextStep","now","future","round","timestamp","getTime","getTimeToNextUpdateForUnit","unit","_getTimeToNextUpdateForUnit","timeToStepChange","getTimeToStepChange","undefined","timeToNextUpdate","getRoundFunction","formatAs","Math","min","getStepChangesAt","currentOrNextStep","_ref2","minTime","getStepMinTime","_ref3","stepChangesAt"],"sources":["../../source/steps/getTimeToNextUpdate.js"],"sourcesContent":["import _getTimeToNextUpdateForUnit from './getTimeToNextUpdateForUnit.js'\r\nimport getStepMinTime from './getStepMinTime.js'\r\nimport { getRoundFunction } from '../round.js'\r\n\r\n// A thousand years is practically a metaphor for \"infinity\".\r\nconst YEAR = 365 * 24 * 60 * 60 * 1000\r\n// It can't really return `Infinity` in order to not screw any potential calculations performed with it.\r\n// Hence, it emulates `Infinity` with a really large number that is \"practically infinite\".\r\nexport const INFINITY = 1000 * YEAR\r\n\r\n/**\r\n * Returns the time (in milliseconds) after which the formatted date label should be refreshed.\r\n * @param {number} date — The date passed to `.format()`, converted to a timestamp.\r\n * @param {object} step\r\n * @param {object} [options.previousStep]\r\n * @param {object} [options.nextStep]\r\n * @param {number} options.now\r\n * @param {boolean} options.future\r\n * @param {string} [options.round] - (undocumented) Rounding mechanism.\r\n * @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).\r\n */\r\nexport default function getTimeToNextUpdate(date, step, { prevStep, nextStep, now, future, round }) {\r\n\tconst timestamp = date.getTime ? date.getTime() : date\r\n\r\n\tconst getTimeToNextUpdateForUnit = (unit) => _getTimeToNextUpdateForUnit(unit, timestamp, { now, round })\r\n\r\n\t// For future dates, steps move from the last one to the first one,\r\n\t// while for past dates, steps move from the first one to the last one,\r\n\t// due to the fact that time flows in one direction,\r\n\t// and future dates' interval naturally becomes smaller\r\n\t// while past dates' interval naturally grows larger.\r\n\t//\r\n\t// For future dates, it's the transition\r\n\t// from the current step to the previous step,\r\n\t// therefore check the `minTime` of the current step.\r\n\t//\r\n\t// For past dates, it's the transition\r\n\t// from the current step to the next step,\r\n\t// therefore check the `minTime` of the next step.\r\n\t//\r\n\tconst timeToStepChange = getTimeToStepChange(future ? step : nextStep, timestamp, {\r\n\t\tfuture,\r\n\t\tnow,\r\n\t\tround,\r\n\t\tprevStep: future ? prevStep : step,\r\n\t\t// isFirstStep: future && isFirstStep\r\n\t})\r\n\r\n\t// If the \"style\" doesn't meet the minimum requirements for `getTimeToNextUpdate: true` feature (see README)\r\n\t// then `timeToStepChange` will be `undefined`. In that case, just return `undefined`.\r\n\tif (timeToStepChange === undefined) {\r\n\t\t// Can't reliably determine \"time to next update\"\r\n\t\t// if not all of the steps provide `minTime`.\r\n\t\treturn\r\n\t}\r\n\r\n\tlet timeToNextUpdate\r\n\r\n\tif (step) {\r\n\t\tif (step.getTimeToNextUpdate) {\r\n\t\t\ttimeToNextUpdate = step.getTimeToNextUpdate(timestamp, {\r\n\t\t\t\tgetTimeToNextUpdateForUnit,\r\n\t\t\t\tgetRoundFunction,\r\n\t\t\t\tnow,\r\n\t\t\t\tfuture,\r\n\t\t\t\tround\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tif (timeToNextUpdate === undefined) {\r\n\t\t\t// \"unit\" is now called \"formatAs\".\r\n\t\t\tconst unit = step.unit || step.formatAs\r\n\t\t\tif (unit) {\r\n\t\t\t\t// For some units, like \"now\", there's no defined amount of seconds in them.\r\n\t\t\t\t// In such cases, `getTimeToNextUpdateForUnit()` returns `undefined`,\r\n\t\t\t\t// and the next step's `minTime` could be used to calculate the update interval:\r\n\t\t\t\t// it will just assume that the label never changes for this step.\r\n\t\t\t\ttimeToNextUpdate = getTimeToNextUpdateForUnit(unit)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (timeToNextUpdate === undefined) {\r\n\t\treturn timeToStepChange\r\n\t}\r\n\r\n\treturn Math.min(timeToNextUpdate, timeToStepChange)\r\n}\r\n\r\n// Returns the timestamp at which it'll move to the next step.\r\n// 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).\r\nexport function getStepChangesAt(currentOrNextStep, timestamp, { now, future, round, prevStep }) {\r\n\t// The first step's `minTime` is `0` by default.\r\n\t// It doesn't \"change\" steps at zero point\r\n\t// but it does change the wording when switching\r\n\t// from \"future\" to \"past\": \"in ...\" -> \"... ago\".\r\n\t// Therefore, the label should be updated at zero-point too.\r\n\tconst minTime = getStepMinTime(currentOrNextStep, { timestamp, now, future, round, prevStep })\r\n\tif (minTime === undefined) {\r\n\t\treturn\r\n\t}\r\n\tif (future) {\r\n\t\t// The step changes to the previous step\r\n\t\t// as soon as `timestamp - now` becomes\r\n\t\t// less than the `minTime` of the current step:\r\n\t\t// `timestamp - now === minTime - 1`\r\n\t\t// => `now === timestamp - minTime + 1`.\r\n\t\treturn timestamp - minTime * 1000 + 1\r\n\t} else {\r\n\t\t// The step changes to the next step\r\n\t\t// as soon as `now - timestamp` becomes\r\n\t\t// equal to `minTime` of the next step:\r\n\t\t// `now - timestamp === minTime`\r\n\t\t// => `now === timestamp + minTime`.\r\n\r\n\t\t// This is a special case when double-update could be skipped.\r\n\t\tif (minTime === 0 && timestamp === now) {\r\n\t\t\treturn INFINITY\r\n\t\t}\r\n\r\n\t\treturn timestamp + minTime * 1000\r\n\t}\r\n}\r\n\r\nexport function getTimeToStepChange(step, timestamp, {\r\n\tnow,\r\n\tfuture,\r\n\tround,\r\n\tprevStep\r\n}) {\r\n\tif (step) {\r\n\t\tconst stepChangesAt = getStepChangesAt(step, timestamp, {\r\n\t\t\tnow,\r\n\t\t\tfuture,\r\n\t\t\tround,\r\n\t\t\tprevStep\r\n\t\t})\r\n\t\tif (stepChangesAt === undefined) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\treturn stepChangesAt - now\r\n\t} else {\r\n\t\tif (future) {\r\n\t\t\t// No step.\r\n\t\t\t// Update right after zero point, when it changes from \"future\" to \"past\".\r\n\t\t\treturn timestamp - now + 1\r\n\t\t} else {\r\n\t\t\t// The last step doesn't ever change when `date` is in the past.\r\n\t\t\treturn INFINITY\r\n\t\t}\r\n\t}\r\n}"],"mappings":"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","ignoreList":[]}
@@ -6,9 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports["default"] = void 0;
7
7
  var _index = require("../steps/index.js");
8
8
  var _locale = require("../locale.js");
9
- var _renameLegacyProperties = _interopRequireDefault(require("./renameLegacyProperties.js"));
10
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
- // For compatibility with the old versions of this library.
9
+ // // For compatibility with the old versions of this library.
10
+ // import renameLegacyProperties from './renameLegacyProperties.js'
12
11
 
13
12
  // Twitter-style relative date/time formatting.
14
13
  // ("1m", "2h", "Mar 3", "Apr 4, 2012").
@@ -1 +1 @@
1
- {"version":3,"file":"twitter.js","names":["_index","require","_locale","_renameLegacyProperties","_interopRequireDefault","e","__esModule","steps","formatAs","formatters","monthAndDay","minTime","timestamp","_ref","future","getMinTimeForUnit","format","value","locale","dayMonth","Intl","DateTimeFormat","month","day","getDate","yearMonthAndDay","_ref2","maxFittingNow","Date","getFullYear","getTime","minFittingNow","dayMonthYear","year","intlDateTimeFormatSupported","push","_default","exports","labels"],"sources":["../../source/style/twitter.js"],"sourcesContent":["import { day, getDate } from '../steps/index.js'\r\nimport { intlDateTimeFormatSupported } from '../locale.js'\r\n\r\n// For compatibility with the old versions of this library.\r\nimport renameLegacyProperties from './renameLegacyProperties.js'\r\n\r\n// Twitter-style relative date/time formatting.\r\n// (\"1m\", \"2h\", \"Mar 3\", \"Apr 4, 2012\").\r\n//\r\n// Seconds, minutes or hours are shown for shorter intervals,\r\n// and longer intervals are formatted using full date format.\r\n\r\nconst steps = [\r\n\t{\r\n\t\tformatAs: 'second'\r\n\t},\r\n\t{\r\n\t\tformatAs: 'minute'\r\n\t},\r\n\t{\r\n\t\tformatAs: 'hour'\r\n\t}\r\n]\r\n\r\n// A cache for `Intl.DateTimeFormat` formatters\r\n// for various locales (is a global variable).\r\nconst formatters = {}\r\n\r\n// Starting from day intervals, output month and day.\r\nconst monthAndDay = {\r\n\tminTime(timestamp, { future, getMinTimeForUnit }) {\r\n\t\t// Returns `23.5 * 60 * 60` when `round` is \"round\",\r\n\t\t// and `24 * 60 * 60` when `round` is \"floor\".\r\n\t\treturn getMinTimeForUnit('day')\r\n\t},\r\n\tformat(value, locale) {\r\n\t\t/* istanbul ignore else */\r\n\t\tif (!formatters[locale]) {\r\n\t\t\tformatters[locale] = {}\r\n\t\t}\r\n\t\t/* istanbul ignore else */\r\n\t\tif (!formatters[locale].dayMonth) {\r\n\t\t\t// \"Apr 11\" (MMMd)\r\n\t\t\tformatters[locale].dayMonth = new Intl.DateTimeFormat(locale, {\r\n\t\t\t\tmonth: 'short',\r\n\t\t\t\tday: 'numeric'\r\n\t\t\t})\r\n\t\t}\r\n\t\t// Output month and day.\r\n\t\treturn formatters[locale].dayMonth.format(getDate(value))\r\n\t}\r\n}\r\n\r\n// If the `date` happened/happens outside of current year,\r\n// then output day, month and year.\r\n// The interval should be such that the `date` lies outside of the current year.\r\nconst yearMonthAndDay = {\r\n\tminTime(timestamp, { future }) {\r\n\t\tif (future) {\r\n\t\t\t// January 1, 00:00, of the `date`'s year is right after\r\n\t\t\t// the maximum `now` for formatting a future date:\r\n\t\t\t// When `now` is before that date, the `date` is formatted as \"day/month/year\" (this step),\r\n\t\t\t// When `now` is equal to or after that date, the `date` is formatted as \"day/month\" (another step).\r\n\t\t\t// After that, it's hours, minutes, seconds, and after that it's no longer `future`.\r\n\t\t\t// The date is right after the maximum `now` for formatting a future date,\r\n\t\t\t// so subtract 1 millisecond from it.\r\n\t\t\tconst maxFittingNow = new Date(new Date(timestamp).getFullYear(), 0).getTime() - 1\r\n\t\t\t// Return `minTime` (in seconds).\r\n\t\t\treturn (timestamp - maxFittingNow) / 1000\r\n\t\t} else {\r\n\t\t\t// January 1, 00:00, of the year following the `date`'s year\r\n\t\t\t// is the minimum `now` for formatting a past date:\r\n\t\t\t// When `now` is before that date, the `date` is formatted as \"day/month\" (another step),\r\n\t\t\t// When `now` is equal to or after that date, the `date` is formatted as \"day/month/year\" (this step).\r\n\t\t\t// After that, it's hours, minutes, seconds, and after that it's no longer `future`.\r\n\t\t\tconst minFittingNow = new Date(new Date(timestamp).getFullYear() + 1, 0).getTime()\r\n\t\t\t// Return `minTime` (in seconds).\r\n\t\t\treturn (minFittingNow - timestamp) / 1000\r\n\t\t}\r\n\t},\r\n\tformat(value, locale) {\r\n\t\t/* istanbul ignore if */\r\n\t\tif (!formatters[locale]) {\r\n\t\t\tformatters[locale] = {}\r\n\t\t}\r\n\t\t/* istanbul ignore else */\r\n\t\tif (!formatters[locale].dayMonthYear) {\r\n\t\t\t// \"Apr 11, 2017\" (yMMMd)\r\n\t\t\tformatters[locale].dayMonthYear = new Intl.DateTimeFormat(locale, {\r\n\t\t\t\tyear: 'numeric',\r\n\t\t\t\tmonth: 'short',\r\n\t\t\t\tday: 'numeric'\r\n\t\t\t})\r\n\t\t}\r\n\t\t// Output day, month and year.\r\n\t\treturn formatters[locale].dayMonthYear.format(getDate(value))\r\n\t}\r\n}\r\n\r\n// If `Intl.DateTimeFormat` is supported,\r\n// then longer time intervals will be formatted as dates.\r\n/* istanbul ignore else */\r\nif (intlDateTimeFormatSupported()) {\r\n\tsteps.push(monthAndDay, yearMonthAndDay)\r\n}\r\n// Otherwise, if `Intl.DateTimeFormat` is not supported,\r\n// which could be the case when using Internet Explorer,\r\n// then simply mimick \"round\" steps.\r\nelse {\r\n\tsteps.push(\r\n\t\t{\r\n\t\t\tformatAs: 'day'\r\n\t\t},\r\n\t\t{\r\n\t\t\tformatAs: 'week'\r\n\t\t},\r\n\t\t{\r\n\t\t\tformatAs: 'month'\r\n\t\t},\r\n\t\t{\r\n\t\t\tformatAs: 'year'\r\n\t\t}\r\n\t)\r\n}\r\n\r\nexport default {\r\n\tsteps,\r\n\tlabels: [\r\n\t\t// \"mini\" labels are only defined for a few languages.\r\n\t\t'mini',\r\n\t\t// \"short-time\" labels are only defined for a few languages.\r\n\t\t'short-time',\r\n\t\t// \"narrow\" and \"short\" labels are defined for all languages.\r\n\t\t// \"narrow\" labels can sometimes be weird (like \"+5d.\"),\r\n\t\t// but \"short\" labels have the \" ago\" part, so \"narrow\" seem\r\n\t\t// more appropriate.\r\n\t\t// \"short\" labels would have been more appropriate if they\r\n\t\t// didn't have the \" ago\" part, hence the \"short-time\" above.\r\n\t\t'narrow',\r\n\t\t// Since \"narrow\" labels are always present, \"short\" element\r\n\t\t// of this array can be removed.\r\n\t\t'short'\r\n\t]\r\n}"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"twitter.js","names":["_index","require","_locale","steps","formatAs","formatters","monthAndDay","minTime","timestamp","_ref","future","getMinTimeForUnit","format","value","locale","dayMonth","Intl","DateTimeFormat","month","day","getDate","yearMonthAndDay","_ref2","maxFittingNow","Date","getFullYear","getTime","minFittingNow","dayMonthYear","year","intlDateTimeFormatSupported","push","_default","exports","labels"],"sources":["../../source/style/twitter.js"],"sourcesContent":["import { getDate } from '../steps/index.js'\r\nimport { intlDateTimeFormatSupported } from '../locale.js'\r\n\r\n// // For compatibility with the old versions of this library.\r\n// import renameLegacyProperties from './renameLegacyProperties.js'\r\n\r\n// Twitter-style relative date/time formatting.\r\n// (\"1m\", \"2h\", \"Mar 3\", \"Apr 4, 2012\").\r\n//\r\n// Seconds, minutes or hours are shown for shorter intervals,\r\n// and longer intervals are formatted using full date format.\r\n\r\nconst steps = [\r\n\t{\r\n\t\tformatAs: 'second'\r\n\t},\r\n\t{\r\n\t\tformatAs: 'minute'\r\n\t},\r\n\t{\r\n\t\tformatAs: 'hour'\r\n\t}\r\n]\r\n\r\n// A cache for `Intl.DateTimeFormat` formatters\r\n// for various locales (is a global variable).\r\nconst formatters = {}\r\n\r\n// Starting from day intervals, output month and day.\r\nconst monthAndDay = {\r\n\tminTime(timestamp, { future, getMinTimeForUnit }) {\r\n\t\t// Returns `23.5 * 60 * 60` when `round` is \"round\",\r\n\t\t// and `24 * 60 * 60` when `round` is \"floor\".\r\n\t\treturn getMinTimeForUnit('day')\r\n\t},\r\n\tformat(value, locale) {\r\n\t\t/* istanbul ignore else */\r\n\t\tif (!formatters[locale]) {\r\n\t\t\tformatters[locale] = {}\r\n\t\t}\r\n\t\t/* istanbul ignore else */\r\n\t\tif (!formatters[locale].dayMonth) {\r\n\t\t\t// \"Apr 11\" (MMMd)\r\n\t\t\tformatters[locale].dayMonth = new Intl.DateTimeFormat(locale, {\r\n\t\t\t\tmonth: 'short',\r\n\t\t\t\tday: 'numeric'\r\n\t\t\t})\r\n\t\t}\r\n\t\t// Output month and day.\r\n\t\treturn formatters[locale].dayMonth.format(getDate(value))\r\n\t}\r\n}\r\n\r\n// If the `date` happened/happens outside of current year,\r\n// then output day, month and year.\r\n// The interval should be such that the `date` lies outside of the current year.\r\nconst yearMonthAndDay = {\r\n\tminTime(timestamp, { future }) {\r\n\t\tif (future) {\r\n\t\t\t// January 1, 00:00, of the `date`'s year is right after\r\n\t\t\t// the maximum `now` for formatting a future date:\r\n\t\t\t// When `now` is before that date, the `date` is formatted as \"day/month/year\" (this step),\r\n\t\t\t// When `now` is equal to or after that date, the `date` is formatted as \"day/month\" (another step).\r\n\t\t\t// After that, it's hours, minutes, seconds, and after that it's no longer `future`.\r\n\t\t\t// The date is right after the maximum `now` for formatting a future date,\r\n\t\t\t// so subtract 1 millisecond from it.\r\n\t\t\tconst maxFittingNow = new Date(new Date(timestamp).getFullYear(), 0).getTime() - 1\r\n\t\t\t// Return `minTime` (in seconds).\r\n\t\t\treturn (timestamp - maxFittingNow) / 1000\r\n\t\t} else {\r\n\t\t\t// January 1, 00:00, of the year following the `date`'s year\r\n\t\t\t// is the minimum `now` for formatting a past date:\r\n\t\t\t// When `now` is before that date, the `date` is formatted as \"day/month\" (another step),\r\n\t\t\t// When `now` is equal to or after that date, the `date` is formatted as \"day/month/year\" (this step).\r\n\t\t\t// After that, it's hours, minutes, seconds, and after that it's no longer `future`.\r\n\t\t\tconst minFittingNow = new Date(new Date(timestamp).getFullYear() + 1, 0).getTime()\r\n\t\t\t// Return `minTime` (in seconds).\r\n\t\t\treturn (minFittingNow - timestamp) / 1000\r\n\t\t}\r\n\t},\r\n\tformat(value, locale) {\r\n\t\t/* istanbul ignore if */\r\n\t\tif (!formatters[locale]) {\r\n\t\t\tformatters[locale] = {}\r\n\t\t}\r\n\t\t/* istanbul ignore else */\r\n\t\tif (!formatters[locale].dayMonthYear) {\r\n\t\t\t// \"Apr 11, 2017\" (yMMMd)\r\n\t\t\tformatters[locale].dayMonthYear = new Intl.DateTimeFormat(locale, {\r\n\t\t\t\tyear: 'numeric',\r\n\t\t\t\tmonth: 'short',\r\n\t\t\t\tday: 'numeric'\r\n\t\t\t})\r\n\t\t}\r\n\t\t// Output day, month and year.\r\n\t\treturn formatters[locale].dayMonthYear.format(getDate(value))\r\n\t}\r\n}\r\n\r\n// If `Intl.DateTimeFormat` is supported,\r\n// then longer time intervals will be formatted as dates.\r\n/* istanbul ignore else */\r\nif (intlDateTimeFormatSupported()) {\r\n\tsteps.push(monthAndDay, yearMonthAndDay)\r\n}\r\n// Otherwise, if `Intl.DateTimeFormat` is not supported,\r\n// which could be the case when using Internet Explorer,\r\n// then simply mimick \"round\" steps.\r\nelse {\r\n\tsteps.push(\r\n\t\t{\r\n\t\t\tformatAs: 'day'\r\n\t\t},\r\n\t\t{\r\n\t\t\tformatAs: 'week'\r\n\t\t},\r\n\t\t{\r\n\t\t\tformatAs: 'month'\r\n\t\t},\r\n\t\t{\r\n\t\t\tformatAs: 'year'\r\n\t\t}\r\n\t)\r\n}\r\n\r\nexport default {\r\n\tsteps,\r\n\tlabels: [\r\n\t\t// \"mini\" labels are only defined for a few languages.\r\n\t\t'mini',\r\n\t\t// \"short-time\" labels are only defined for a few languages.\r\n\t\t'short-time',\r\n\t\t// \"narrow\" and \"short\" labels are defined for all languages.\r\n\t\t// \"narrow\" labels can sometimes be weird (like \"+5d.\"),\r\n\t\t// but \"short\" labels have the \" ago\" part, so \"narrow\" seem\r\n\t\t// more appropriate.\r\n\t\t// \"short\" labels would have been more appropriate if they\r\n\t\t// didn't have the \" ago\" part, hence the \"short-time\" above.\r\n\t\t'narrow',\r\n\t\t// Since \"narrow\" labels are always present, \"short\" element\r\n\t\t// of this array can be removed.\r\n\t\t'short'\r\n\t]\r\n}"],"mappings":"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","ignoreList":[]}
@@ -202,7 +202,8 @@ describe('style/twitter', function () {
202
202
  var now = new Date(2016, 3, 10, 12, 0).getTime();
203
203
  timeAgo.format(date, 'twitter', {
204
204
  now: now,
205
- getTimeToNextUpdate: true
205
+ getTimeToNextUpdate: true,
206
+ getTimeToNextUpdateUncapped: true
206
207
  }).should.deep.equal(['Apr 10, 2018',
207
208
  // Updates on Jan 1st, 2018, 00:00.
208
209
  new Date(2018, 0, 1).getTime() - now]);
@@ -212,6 +213,7 @@ describe('style/twitter', function () {
212
213
  timeAgo.format(date, 'twitter', {
213
214
  now: now,
214
215
  getTimeToNextUpdate: true,
216
+ getTimeToNextUpdateUncapped: true,
215
217
  round: 'floor'
216
218
  }).should.deep.equal(['Apr 10',
217
219
  // Updates after April 9th, 2018, 12:00.
@@ -238,7 +240,8 @@ describe('style/twitter', function () {
238
240
  now = new Date(2018, 0, 1).getTime();
239
241
  timeAgo.format(date, 'twitter', {
240
242
  now: now,
241
- getTimeToNextUpdate: true
243
+ getTimeToNextUpdate: true,
244
+ getTimeToNextUpdateUncapped: true
242
245
  }).should.deep.equal(['Apr 10',
243
246
  // Updates after April 9th, 2018, 11:30.
244
247
  new Date(2018, 3, 9, 12, 0).getTime() + 30 * 60 * 1000 + 1 - now]);